FEDRA emulsion software from the OPERA Collaboration
emtra.cpp File Reference
#include <string.h>
#include <iostream>
#include <TEnv.h>
#include "EdbLog.h"
#include "EdbScanProc.h"
#include "EdbScanTracking.h"
Include dependency graph for emtra.cpp:

Functions

int main (int argc, char *argv[])
 
void MakeEraseFiles (EdbID id, TEnv &env)
 
void print_help_message ()
 
void set_default (TEnv &cenv)
 

Function Documentation

◆ main()

int main ( int  argc,
char *  argv[] 
)
71{
72 if (argc < 2) { print_help_message(); return 0; }
73
74 TEnv cenv("trackenv");
76 gEDBDEBUGLEVEL = cenv.GetValue("emtra.EdbDebugLevel" , 1);
77 const char *env = cenv.GetValue("emtra.env" , "track.rootrc");
78 const char *outdir = cenv.GetValue("emtra.outdir" , "..");
79
80 bool do_set = false;
81 bool do_new = false;
82 bool do_pred = false;
83 bool do_make_erase_file = false;
84 bool do_VSB = false;
85 Int_t pred_plate = 0, to_plate=0;
86 Int_t brick=0, plate=0, major=0, minor=0;
87
88 for(int i=1; i<argc; i++ ) {
89 char *key = argv[i];
90
91 if(!strncmp(key,"-set=",5))
92 {
93 if(strlen(key)>5) sscanf(key+5,"%d.%d.%d.%d",&brick,&plate,&major,&minor);
94 do_set=true;
95 }
96 else if(!strncmp(key,"-o=",3))
97 {
98 if(strlen(key)>3) outdir=key+3;
99 }
100 else if(!strncmp(key,"-new",4))
101 {
102 do_new=true;;
103 }
104 else if(!strncmp(key,"-pred=",6))
105 {
106 if(strlen(key)>6) {
107 pred_plate = atoi(key+6);
108 do_pred=true;
109 }
110 }
111 else if(!strncmp(key,"-makeerasefile",14))
112 {
113 do_make_erase_file=true;
114 }
115 else if(!strncmp(key,"-VSB=",5))
116 {
117 if(strlen(key)>5) {
118 do_VSB=true;
119 to_plate = atoi(key+5);
120 }
121 }
122 else if(!strncmp(key,"-v=",3))
123 {
124 if(strlen(key)>3) gEDBDEBUGLEVEL = atoi(key+3);
125 }
126 }
127
128 if(!do_set) { print_help_message(); return 0; }
129
130 cenv.SetValue("emtra.env" , env);
131 cenv.ReadFile( cenv.GetValue("emtra.env" , "track.rootrc") ,kEnvLocal);
132 cenv.SetValue("emtra.outdir" , outdir);
133 cenv.WriteFile("track.save.rootrc");
134
135 if(do_set&&(!do_VSB)) {
138 printf("\n----------------------------------------------------------------------------\n");
139 printf("tracking set %d.%d.%d.%d\n", brick,plate, major,minor);
140 printf("----------------------------------------------------------------------------\n\n");
141
142 EdbID id(brick,plate,major,minor);
144 ss->Brick().SetID(brick);
145 if(do_new)
146 {
147 EdbScanTracking est;
148 est.eSproc=&sproc;
149 est.TrackSetBT(id,cenv);
150 }
151 else if(do_make_erase_file){
152 MakeEraseFiles(id, cenv);
153 }
154 else {
155 //ss->MakePIDList();
156 //sproc.AssembleScanSet(*ss);
157
158// TCut c = gEnv->GetValue("emtra.cpcut" ,"s.eW>13&&eCHI2P<2.5&&s1.eFlag>=0&&s2.eFlag>=0&&eN1==1&&eN2==1");
159// EdbScanCond cond;
160// cond.Print();
161// sproc.TrackSetBT(*ss,cond,c);
162
164 }
165 }
166 if(do_VSB) {
169 printf("\n----------------------------------------------------------------------------\n");
170 printf("do virtual scanback in %d.%d.%d.%d for the plate %d\n", brick,plate, major,minor, pred_plate);
171 printf("----------------------------------------------------------------------------\n\n");
172
173 EdbID id(brick,plate,major,minor);
175 //ss->Brick().SetID(brick);
176 //sproc.AssembleScanSet(*ss);
177
178
179 EdbID predid(id);
180 predid.ePlate = pred_plate;
181
182 //sproc.FindPredictionsRaw(predid,predid);
183
184 sproc.FindPredictionsRawSet(predid, *ss, to_plate);
188
189
190 /*
191 TCut c = gEnv->GetValue("emtra.trcut" ,"nseg>2");
192
193
194 EdbLayer *layer = ss->GetPlate(pred_plate);
195
196 EdbPattern pred, fnd;
197 sproc.ReadPred(pred, predid);
198 EdbRunAccess ra;
199 sproc.InitRunAccess(ra, predid);
200
201 EdbScanCond condBT, condMT;
202 sproc.FindPredictionsRaw( pred, fnd, ra, condBT, condMT );
203
204 */
205
206 }
207 cenv.WriteFile("track.save.rootrc");
208
209 return 1;
210}
BRICK brick
Definition: RecDispMC.C:103
Definition: EdbID.h:7
Definition: EdbPVRec.h:148
TObjArray * eTracks
Definition: EdbPVRec.h:161
scanned data processing
Definition: EdbScanProc.h:12
int TrackSetBT(EdbScanSet &sc, TEnv &cenv)
Definition: EdbScanProc.cxx:561
int ReadFoundTracks(EdbScanSet &ss, EdbPVRec &ali, int flag=-1)
Definition: EdbScanProc.cxx:221
int WriteSBTracks(TObjArray &tracks, EdbID id)
Definition: EdbScanProc.cxx:1399
int FindPredictionsRawSet(EdbID idp, EdbScanSet &ss, int npl)
Definition: EdbScanProc.cxx:2032
TString eProcDirClient
directory path for root data
Definition: EdbScanProc.h:14
EdbScanSet * ReadScanSet(EdbID id)
Definition: EdbScanProc.cxx:1482
Definition: EdbScanSet.h:11
Definition: EdbScanTracking.h:81
EdbScanProc * eSproc
Definition: EdbScanTracking.h:86
void TrackSetBT(EdbID id, TEnv &env)
Definition: EdbScanTracking.cxx:455
EdbScanProc * sproc
Definition: comptonmap.cpp:29
TEnv cenv("emrec")
bool do_set
Definition: emrec.cpp:36
const char * outdir
Definition: emrec.cpp:37
void set_default(TEnv &cenv)
Definition: emtra.cpp:31
void print_help_message()
Definition: emtra.cpp:14
void MakeEraseFiles(EdbID id, TEnv &env)
Definition: emtra.cpp:213
gEDBDEBUGLEVEL
Definition: energy.C:7
ss
Definition: energy.C:62
EdbPVRec * ali
Definition: test_oracle.C:9
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1
UInt_t id
Definition: tlg2couples.C:117

◆ MakeEraseFiles()

void MakeEraseFiles ( EdbID  id,
TEnv &  env 
)
214{
216 sproc.eProcDirClient = cenv.GetValue("emtra.outdir" , "..");
218 sproc.ReadTracksTree(id, ali, "1");
219
220 for(int i=0; i<60; i++)
221 if( ali.GetPattern(i) ) {
222 EdbPattern *pat = ali.GetPattern(i);
223 //pat->SetPID( pat->GetSegment(0)->Vid(0));
224 pat->SetPID( pat->GetSegment(0)->Plate() );
225 printf(" %d PID=%d ID=%d nseg=%d\n", i, pat->PID(), pat->ID(), pat->N() );
226
227 EdbID idp(id); idp.ePlate=pat->PID();
228 sproc.MakeEraseFile(idp, *pat);
229 }
230
231}
Definition: EdbPattern.h:273
void SetPID(int pid)
Definition: EdbPattern.h:310
int PID() const
Definition: EdbPattern.h:320
int ID() const
Definition: EdbPattern.h:319
EdbPattern * GetPattern(int id) const
Definition: EdbPattern.cxx:1721
int ReadTracksTree(EdbID id, EdbPVRec &ali, TCut cut="1")
Definition: EdbScanProc.cxx:604
void MakeEraseFile(EdbID id, EdbPattern &pat)
Definition: EdbScanProc.cxx:312
Int_t Plate() const
Definition: EdbSegP.h:159
Int_t N() const
Definition: EdbPattern.h:86
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:66

◆ print_help_message()

void print_help_message ( )
15{
16 cout<< "\nUsage: \n\t emtra -set=ID [ -o=DATA_DIRECTORY -v=DEBUG] \n\n";
17 cout<< "\t\t ID - id of the dataset formed as BRICK.PLATE.MAJOR.MINOR \n";
18 cout<< "\t\t DEBUG - verbosity level: 0-print nothing, 1-errors only, 2-normal, 3-print all messages\n";
19 cout<< "\t\t -m - make the affine files starting from EdbScanSet\n";
20 cout<< "\t\t -new - apply new tracking algorithm\n";
21 cout<< "\t\t -VSB=plate - \n";
22 cout<< "\t\t -makeerasefile - to create files *.er.root with the list of basetracks from the trk.root to be excluded from the next tracking\n";
23 cout<< "\t\t -o - the data directory\n";
24 cout<< "\nExample: \n";
25 cout<< "\t emtra -id=4554.10.1.0 -o=/scratch/BRICKS \n";
26 cout<< "\n If the data location directory if not explicitly defined\n";
27 cout<< " the current directory will be assumed to be the brick directory \n";
28 cout<<endl;
29}

◆ set_default()

void set_default ( TEnv &  cenv)
32{
33 // default parameters for tracking
34 cenv.SetValue("fedra.readCPcut" , "eCHI2P<2.5&&s.eW>13&&eN1==1&&eN2==1&&s1.eFlag>=0&&s2.eFlag>=0");
35 cenv.SetValue("fedra.track.TrZmap", "2400 0 120000 2000 0 100000 30" );
36 cenv.SetValue("fedra.track.npass" , 1 );
37 cenv.SetValue("fedra.track.minPlate" ,-999 );
38 cenv.SetValue("fedra.track.maxPlate" , 999 );
39 cenv.SetValue("fedra.track.refPlate" , 999 );
40 cenv.SetValue("fedra.track.nsegmin" , 2 );
41 cenv.SetValue("fedra.track.ngapmax" , 4 );
42 cenv.SetValue("fedra.track.DZGapMax" , 5000. );
43 cenv.SetValue("fedra.track.DRmax" , 45. );
44 cenv.SetValue("fedra.track.DTmax" , 0.07 );
45
46 cenv.SetValue("fedra.track.Sigma0" , "3 3 0.005 0.005");
47 cenv.SetValue("fedra.track.PulsRamp0" , "15 20");
48 cenv.SetValue("fedra.track.PulsRamp04" , "15 20");
49 cenv.SetValue("fedra.track.Degrad" , 4 );
50
51 cenv.SetValue("fedra.track.probmin" , 0.001 );
52 cenv.SetValue("fedra.track.momentum" , 2 );
53 cenv.SetValue("fedra.track.mass" , 0.14 );
54 cenv.SetValue("fedra.track.do_use_mcs", 0 );
55 cenv.SetValue("fedra.track.RadX0" , 5810.);
56
57 cenv.SetValue("fedra.track.erase" , false );
58 cenv.SetValue("fedra.track.do_realign" , 0 );
59 cenv.SetValue("fedra.track.do_misalign" , false );
60 cenv.SetValue("fedra.track.do_misalign" , false );
61 cenv.SetValue("fedra.track.misalign_offset", 500.);
62 cenv.SetValue("fedra.track.do_local_corr" , 1 );
63 cenv.SetValue("fedra.track.do_comb" , 0 );
64 cenv.SetValue("fedra.track.NsegMin" , 2 );
65 cenv.SetValue("emtra.outdir" , "..");
66 cenv.SetValue("emtra.env" , "track.rootrc");
67 cenv.SetValue("emtra.EdbDebugLevel" , 1);
68}