Project

General

Profile

SoftwareHints » History » Version 7

Dobbs, Adam, 02 February 2013 17:16

1 1 Dobbs, Adam
h1. Software Hints and Tips
2
3
h2. Running a tracker simulation
4
5
There is a dedicated directory holding top level scripts for producing tracker data within MAUS at:
6
7
<pre>
8
bin/user/scifi
9
</pre>
10
11 7 Dobbs, Adam
For example to run a MAUS simulation of the tracker in the presence of a magnetic field (helical tracks) do the following from the MAUS root directory:
12 1 Dobbs, Adam
13
<pre>
14
source env.sh
15
cd bin/user/scifi
16
./simulate_scifi.py --configuration_file datacard_mc_helical
17
</pre> 
18
19
The equivalent command for no magnetic field (straight tracks) is:
20
21
<pre>
22
./simulate_scifi.py --configuration_file datacard_mc_straight
23
</pre>
24
25
h2. Datacard variables
26
27
Datacard variables control the various parameters passed to MAUS. The variables assume the default values set in src/common_py/ConfigurationDefaults.py unless overridden in a datacard or elsewhere.  Here are a few common variables: 
28
29
* Number of spills. The number of spills to simulate can be set by editing the relevant datacard file and changing the variable 'spill_generator_number_of_spills'.
30
* The number of particles per spill is controlled by the beam variable. This has a number of sub-variables, two of which can be set to alter the number of particles per spill:
31
** 'binomial_n' is the number of attempts at generating a track
32 2 Dobbs, Adam
** 'binomial_p' is the probability an attempt succeeds
33
* Helical pattern recognition can be turned on or off by setting 'SciFiHelicalPROn' to 1 or 0 respectively
34
* Straight pattern recognition can be turned on or off by setting 'SciFiStraightPROn' to 1 or 0 respectively
35 1 Dobbs, Adam
36
h2. Accessing the output data
37
38 6 Dobbs, Adam
Data is output by MAUS either as "ROOT":http://root.cern.ch/ or JSON documents.  In order for ROOT to understand the classes we have written, a ROOT dictionary, built automatically by MAUS, must first be loaded. In an interactive ROOT session this done with following command:
39 1 Dobbs, Adam
40
<pre>
41
.L $MAUS_ROOT_DIR/build/libMausCpp.so
42
</pre>
43
44
The equivalent command if using "PyROOT":http://root.cern.ch/drupal/content/pyroot is 
45
46
<pre>
47
import libMausCpp
48
</pre>
49
50
An example ROOT session to open a data file would be:
51
52
<pre>
53
> .L $MAUS_ROOT_DIR/build/libMausCpp.so
54
> TFile f1("maus_output.root")
55
> TBrowser b
56
</pre>
57
58
The equivalent PyROOT session would be:
59
60
<pre>
61 5 Dobbs, Adam
>>> from ROOT import *
62
>>> import libMausCpp
63
>>> f1 = TFile("maus_output.root")
64
>>> b = TBrowser()
65 1 Dobbs, Adam
</pre>
66
67 5 Dobbs, Adam
68 2 Dobbs, Adam
The tracker MC data can then be found by browsing to:
69
<pre>
70
Spill:data:_spill:_mc:_sci_fi_hits
71
</pre>
72 1 Dobbs, Adam
73
The reconstructed data is stored under:
74
<pre>
75
Spill:data:_spill:recon:_scifi_event
76 5 Dobbs, Adam
</pre>
77
78
An example PyROOT session to access some data:
79
80
<pre>
81
>>> from ROOT import *
82
>>> import libMausCpp
83
>>> f1 = TFile("maus_output.root")
84
>>> t1 = f1.Get("Spill")
85
>>> t1
86
<ROOT.TTree object ("Spill") at 0x8bfa970>
87
>>> data = MAUS.Data()
88
>>> t1.SetBranchAddress("data", data)
89
>>> t1.GetEntry(1)
90
51435
91
>>> spill = data.GetSpill()
92
>>> spill
93
<ROOT.MAUS::Spill object at 0x92f4a40>
94
>>> spill.GetReconEvents().size()
95
1L
96
>>> revt = spill.GetReconEvents()[0]
97
>>> sfevt = revt.GetSciFiEvent()
98
>>> sfevt
99
<ROOT.MAUS::SciFiEvent object at 0x9310cb0>
100
>>> htrks = sfevt.helicalprtracks()
101
>>> htrks.size()
102
2L
103
>>> seeds = htrks[0].get_spacepoints()
104
>>> seeds.size()
105
5L
106
>>> sp = seeds[0]
107
>>> sp.get_position().x()
108
8.468833333333333
109
>>> 
110 2 Dobbs, Adam
</pre>