/[PAMELA software]/DarthVader/TrackerLevel2/src/TrkProcess.cpp
ViewVC logotype

Annotation of /DarthVader/TrackerLevel2/src/TrkProcess.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.17 - (hide annotations) (download)
Wed Jun 4 07:57:04 2014 UTC (10 years, 6 months ago) by pam-ts
Branch: MAIN
Changes since 1.16: +58 -25 lines
New tracking algorythm implementation (extended to up to 2 calorimeter planes and with level1 cleaning for nuclei)

1 mocchiut 1.1 /**
2     * \file TrkProcess.cpp
3     * \author Elena Vannuccini
4     */
5     #include <TrkProcess.h>
6     #include <iostream>
7     using namespace std;
8 pam-fi 1.2 /**
9     * Create TrkProcess object, initializing the tracker processing variables at default values
10     */
11 mocchiut 1.1 TrkProcess::TrkProcess(){
12    
13     idrun = 0;
14 pam-fi 1.11 // dbg_mode.SetNone();
15 pam-fi 1.7 get1 = 0;
16     full1 = 0;
17     geth = 0;
18     get2 = 1;
19 pam-fi 1.16 gete = 1;
20 pam-ts 1.17 getn = 1;
21     extAlgID = 202;
22 mocchiut 1.1 standalone = false;
23     frame2 = "root";
24 pam-fi 1.6 frame1 = "root";
25     frameh = "root";
26 pam-fi 1.16 framee = "root";
27 mocchiut 1.1 outdir = gSystem->WorkingDirectory();
28     pfolder = "/TrackerFolder";
29     if (!frame2.CompareTo("root", TString::kIgnoreCase)) ifroot2 = true;
30 pam-fi 1.2 else if (!frame2.CompareTo("hbook", TString::kIgnoreCase)) ifroot2 = false;
31 mocchiut 1.1
32     if (!frame1.CompareTo("root", TString::kIgnoreCase)) ifroot1 = true;
33 pam-fi 1.2 else if (!frame1.CompareTo("hbook", TString::kIgnoreCase)) ifroot1 = false;
34 mocchiut 1.1
35 pam-fi 1.6 if (!frameh.CompareTo("root", TString::kIgnoreCase)) ifrooth = true;
36     else if (!frameh.CompareTo("hbook", TString::kIgnoreCase)) ifrooth = false;
37    
38 mocchiut 1.1 file1 = "";
39     file2 = "";
40    
41 pam-fi 1.2 ostatus = 0;
42 pam-fi 1.10
43 pam-fi 1.14 npar = 0;
44    
45     nskip = 0;
46 pam-fi 1.11
47 pam-ts 1.17 watch = false;
48    
49 pam-fi 1.13 // TrkParams::SetTrackingMode();
50     // TrkParams::SetPrecisionFactor();
51     // TrkParams::SetStepMin();
52     TrkParams::SetMiniDefault();
53 pam-fi 1.10 TrkParams::SetPFA();
54 mocchiut 1.1 };
55    
56 pam-fi 1.2 /**
57     * Create TrkProcess object, initializing the tracker processing variables according to input parameters.
58     * @param run Run ID
59     * @param f2 Pointer to output level2 file
60     */
61 mocchiut 1.1 TrkProcess::TrkProcess(ULong64_t run, TFile *f2){
62    
63     idrun = run;
64 pam-fi 1.2 // DEBUG = false;
65     // VERBOSE = false;
66 pam-fi 1.11 // dbg_mode.SetWarning();
67 pam-fi 1.7 get1 = 0;
68     full1 = 0;
69 mocchiut 1.1 get2 = 1;
70 pam-fi 1.6 geth = 0;
71 pam-fi 1.16 gete = 1;
72 pam-ts 1.17 getn = 1;
73     extAlgID = 202;
74 mocchiut 1.1 standalone = false;
75     frame2 = "root";
76 pam-fi 1.4 frame1 = "root";
77 pam-fi 1.6 frameh = "root";
78 pam-fi 1.16 framee = "root";
79 pam-fi 1.6 pfolder = "/TrackerFolder";
80     file1 = "";
81 mocchiut 1.1 if(f2->IsOpen()){
82 pam-fi 1.6 file2 = f2->GetPath();
83     outdir = gSystem->DirName(gSystem->DirName(file2));
84 pam-fi 1.4 // check if the indicated output directory exists
85 pam-fi 1.6 FileStat_t t;
86     if( gSystem->GetPathInfo(outdir.Data(),t) )throw -12;
87 mocchiut 1.1 }else{
88 pam-fi 1.6 file2 = "";
89     outdir = gSystem->WorkingDirectory();
90 mocchiut 1.1 };
91    
92     if (!frame2.CompareTo("root", TString::kIgnoreCase)) ifroot2 = true;
93     else if (!frame2.CompareTo("hbook", TString::kIgnoreCase)) ifroot2 =false;
94    
95     if (!frame1.CompareTo("root", TString::kIgnoreCase)) ifroot1 = true;
96     else if (!frame1.CompareTo("hbook", TString::kIgnoreCase)) ifroot1 =false;
97    
98 pam-fi 1.6 if (!frameh.CompareTo("root", TString::kIgnoreCase)) ifrooth = true;
99     else if (!frameh.CompareTo("hbook", TString::kIgnoreCase)) ifrooth =false;
100    
101 pam-fi 1.2 ostatus = 0;
102 pam-fi 1.11
103     npar=0;
104 mocchiut 1.1
105 pam-fi 1.14 nskip = 0;
106    
107 pam-ts 1.17 watch = false;
108    
109 pam-fi 1.13 // TrkParams::SetTrackingMode();
110     // TrkParams::SetPrecisionFactor();
111     // TrkParams::SetStepMin();
112     TrkParams::SetMiniDefault();
113 pam-fi 1.10 TrkParams::SetPFA();
114    
115 mocchiut 1.1 };
116 pam-fi 1.2 /**
117     * Set processing variables according to input custom parameters
118     */
119 pam-fi 1.12 int TrkProcess::HandleCustomPar(int ncustom, char *vcustom[]){
120 mocchiut 1.1
121     for (int i=0; i< ncustom; i++){
122 pam-fi 1.4
123 mocchiut 1.15 cout << "Handling Parameter " << i+1 << " of " << ncustom << ": " << vcustom[i] << endl;
124    
125     // -----------------------------------------------------//
126     if (!strcmp(vcustom[i], "--simu")){
127     cout << "Setting DarthVader to use Simulated Data\n";
128     TrkParams::SetSimuFlag(kTRUE);
129     continue;
130     }
131 mocchiut 1.1 // -----------------------------------------------------//
132     if (!strcmp(vcustom[i], "-processFolder")){
133     if (++i >= ncustom) throw -3;
134     pfolder = vcustom[i];
135     continue;
136     }
137     // -----------------------------------------------------//
138 pam-fi 1.6 if (!strcmp(vcustom[i], "--get1") || !strcmp(vcustom[i], "--get-level1") ){
139 pam-fi 1.7 get1 = 1;
140     full1 = 0;
141     continue;
142     }
143     // -----------------------------------------------------//
144     if (!strcmp(vcustom[i], "--get1-full") || !strcmp(vcustom[i], "--get-level1-full") ){
145     get1 = 1;
146     full1 = 1;
147 mocchiut 1.1 continue;
148     }
149     // -----------------------------------------------------//
150 pam-fi 1.6 if (!strcmp(vcustom[i], "--geth") || !strcmp(vcustom[i], "--get-hough") ){
151     geth = 1;
152     continue;
153     }
154     // -----------------------------------------------------//
155 pam-ts 1.17 // if (!strcmp(vcustom[i], "--dontget2") ||!strcmp(vcustom[i], "--dontget-level2") ){
156     // get2 = 0;
157     // gete = 0;
158     // getn = 0;
159     // continue;
160     // }
161 mocchiut 1.1 // -----------------------------------------------------//
162 pam-fi 1.16 if (!strcmp(vcustom[i], "--dontgete") ||!strcmp(vcustom[i], "--dontget-exttrack") ){
163     gete = 0;
164     continue;
165     }
166     // -----------------------------------------------------//
167 pam-ts 1.17 if (!strcmp(vcustom[i], "-extalg")){
168 mocchiut 1.1 if (++i >= ncustom) throw -3;
169 pam-ts 1.17 gete = 1;
170     get2 = 1;
171     extAlgID = atoi(vcustom[i]);
172 mocchiut 1.1 continue;
173     }
174     // -----------------------------------------------------//
175 pam-ts 1.17 if (!strcmp(vcustom[i], "--dontgetn") ||!strcmp(vcustom[i], "--dontget-nuclei") ){
176     getn = 0;
177 mocchiut 1.1 continue;
178     }
179     // -----------------------------------------------------//
180 pam-ts 1.17 if (!strcmp(vcustom[i], "--standalone") || !strcmp(vcustom[i], "-s")){
181     standalone = true;
182 mocchiut 1.1 continue;
183     }
184     // -----------------------------------------------------//
185 pam-ts 1.17 if (!strcmp(vcustom[i], "-processFile1")){
186     if (++i >= ncustom) throw -3;
187     get1 = 1;
188     file1 = vcustom[i];
189 pam-fi 1.16 continue;
190     }
191 pam-ts 1.17 // // -----------------------------------------------------//
192     // if (!strcmp(vcustom[i], "-frame1")){
193     // if (++i >= ncustom)throw -3;
194     // get1 = 1;
195     // frame1 = vcustom[i];
196     // continue;
197     // }
198     // // -----------------------------------------------------//
199     // if (!strcmp(vcustom[i], "-frame2")){
200     // if (++i >= ncustom)throw -3;
201     // get2 = 1;
202     // frame2 = vcustom[i];
203     // continue;
204     // }
205     // // -----------------------------------------------------//
206     // if (!strcmp(vcustom[i], "-framee")){
207     // if (++i >= ncustom)throw -3;
208     // gete = 1;
209     // framee = vcustom[i];
210     // continue;
211     // }
212 pam-fi 1.16 // -----------------------------------------------------//
213 pam-fi 1.12 if (!strcmp(vcustom[i], "-pfa")){
214     if (++i >= ncustom)throw -3;
215     TrkParams::SetPFA(atoi(vcustom[i]));
216     continue;
217     }
218     // -----------------------------------------------------//
219 pam-fi 1.14 if (!strcmp(vcustom[i], "-skip")){
220     if (++i >= ncustom)throw -3;
221     nskip = atoi(vcustom[i]);
222     continue;
223     }
224     // -----------------------------------------------------//
225 pam-fi 1.11 if ( atoi(vcustom[i]) < 0){
226     if (++i >= ncustom)throw -3;
227     partype[npar]=-1*atoi(vcustom[i-1]);
228     parpath[npar]=vcustom[i];
229     npar++;
230     continue;
231     }
232     // -----------------------------------------------------//
233 pam-fi 1.2 if (!strcmp(vcustom[i], "--verbose") || !strcmp(vcustom[i], "-v")){
234 pam-fi 1.11 TrkParams::SetVerboseMode();
235 pam-fi 1.2 continue;
236     }
237     // -----------------------------------------------------//
238 pam-fi 1.12 if (!strcmp(vcustom[i], "--warning") || !strcmp(vcustom[i], "-w")){
239     TrkParams::SetWarningMode();
240     continue;
241     }
242     // -----------------------------------------------------//
243     if (!strcmp(vcustom[i], "--help") || !strcmp(vcustom[i], "-h")){
244     PrintHelp();
245     return 1;
246     }
247     // -----------------------------------------------------//
248 pam-ts 1.17 if (!strcmp(vcustom[i], "--watch") ){
249     watch = true;
250     continue;
251     }
252     // -----------------------------------------------------//
253 pam-fi 1.2 else if (!strcmp(vcustom[i], "--debug") || !strcmp(vcustom[i], "-d")){
254 pam-fi 1.11 TrkParams::SetDebugMode();
255 mocchiut 1.1 continue;
256 pam-fi 1.2 };
257 mocchiut 1.1 }
258 pam-fi 1.4
259 mocchiut 1.1 if (!frame2.CompareTo("root", TString::kIgnoreCase)) ifroot2 = true;
260     else if (!frame2.CompareTo("hbook", TString::kIgnoreCase)) ifroot2 =false;
261     else throw -201;
262    
263     if (!frame1.CompareTo("root", TString::kIgnoreCase)) ifroot1 = true;
264     else if (!frame1.CompareTo("hbook", TString::kIgnoreCase)) ifroot1 =false;
265     else throw -201;
266 pam-fi 1.4
267 pam-fi 1.6 if (!frameh.CompareTo("root", TString::kIgnoreCase)) ifrooth = true;
268     else if (!frameh.CompareTo("hbook", TString::kIgnoreCase)) ifrooth =false;
269     else throw -201;
270 mocchiut 1.1
271 pam-fi 1.16 if (!framee.CompareTo("root", TString::kIgnoreCase)) ifroote = true;
272     else if (!framee.CompareTo("hbook", TString::kIgnoreCase)) ifroote =false;
273     else throw -201;
274    
275 pam-fi 1.7 if(get1 && !get2)full1=true;
276    
277 pam-fi 1.2 ostatus = 0;
278 mocchiut 1.1
279 pam-fi 1.12 return 0;
280    
281 pam-fi 1.2 };
282     /**
283     * \brief Process Level0 event
284     * @param l0_event Pointer to an object of the tracker level0 class
285     * Starting from a Level0 object, this routine fills the level0 common, then calls
286     * the fortran routines, which process the event and fill level1 and level2 commons.
287     */
288     void TrkProcess::ProcessEvent(TrkLevel0 *l0_event){
289    
290     // fill Level0 common from Level0 object
291 pam-fi 1.8 l0_event->GetLevel0Struct();
292 pam-fi 1.2 // process the event Level0->Level1->Level2
293     int F77err = 0;
294     //
295     reductionflight_(&F77err);
296     if(F77err < 0)throw F77err;
297     //
298 pam-fi 1.10 if(get2) analysisflight_();
299 pam-fi 1.2 //
300 pam-fi 1.16
301 pam-fi 1.2 ostatus = F77err;
302    
303 mocchiut 1.1 };
304    
305     void TrkProcess::Dump(){
306 pam-fi 1.11 cout << endl;
307     cout << " |-------------------------------------| "<<endl;
308     cout << " tracker-processing input-parameters "<< endl;
309     cout << " |-------------------------------------| "<<endl;
310 pam-fi 1.16 cout << " idRun " << idrun << endl;
311     cout << " (skip " << nskip <<" events)"<< endl;
312     cout << " get level1 " << get1 << endl;
313     cout << " full level1 " << full1 << endl;
314     cout << " get level2 " << get2 << endl;
315     cout << " get hough " << geth << endl;
316     cout << " get ext.tracking " << gete << endl;
317 pam-ts 1.17 if(gete)
318     cout << " ext.tracking alg " << extAlgID << endl;
319     cout << " get nuclei " << getn << endl;
320 pam-fi 1.16 // cout << " frame1 " << frame1 << endl;
321     // cout << " frame2 " << frame2 << endl;
322     // cout << " frameh " << frame2 << endl;
323     // cout << " file1 " << file1 << endl;
324     cout << " output file " << file2 << endl;
325     // cout << " outdir " << outdir << endl;
326     // cout << " process folder " << pfolder << endl;
327     // cout << " standalone mode " << standalone << endl;
328 pam-fi 1.11 for(int i=0; i<npar; i++)
329     cout << " force loading parameters of type "<<partype[i]<<" from <--- "<<parpath[i]<<endl;
330     cout<<endl;
331    
332     // cout << " debug mode warning " << dbg_mode.warning << endl;
333     // cout << " debug mode verbose " << dbg_mode.verbose << endl;
334     // cout << " debug mode debug " << dbg_mode.debug << endl << endl;
335 mocchiut 1.1
336     }
337 pam-fi 1.12
338     void TrkProcess::PrintHelp(){
339    
340     printf( "\n\n +TRK [ options ] \n \n");
341     // printf( "\n --version : Print tracker software version and exit ");
342     printf( "Options:");
343     printf( "\n --help, -h : Print this help and exit ");
344     // printf( "\n -idRun RUN : ID number of the run to be processed (for reprocessing RUN=0) \n");
345     // printf( "\n -outDir OUTDIR : Path where to put the LEVEL2 output [default ./ ] ");
346     // printf( "\n -processFolder DIR : Directory (relative to OUTDIR) for other output files [default TrackerFolder/ ] ");
347     // printf( "\n -processFile FILE : Name of the LEVEL2 output file [default RUN.Level2.root]");
348     // printf( "\n -processFile1 FILE : Name of the LEVEL1 output file [default RUN.Level1.rz]");
349     // printf( "\n -frame1 FRAME : type of output for LEVEL1, root/hbook [default hbook ] ");
350     // printf( "\n -frame2 FRAME : type of output for LEVEL2, root/hbook [default root ] ");
351     printf( "\n --get1, --get-level1 : get LEVEL1 output (store only cluster associated to tracks) [default (no LEVEL1 output) ] ");
352     printf( "\n --get1-full, --get-level1-full : get LEVEL1 output (store all clusters) [default (no LEVEL1 output) ] ");
353     printf( "\n --dontget2, --dontget-level2 : do not get LEVEL2 output [default (get LEVEL2 output)]");
354 pam-ts 1.17 printf( "\n --dontgete, --dontget-exttrack : do not get ext.tracking output [default (ext.algorythm 202)]");
355     printf( "\n --dontgetn, --dontget-nuclei : do not get nuclei cleaned tracks [default (get nuclei output)]");
356     printf( "\n --extalg ID : apply ext.tracking algorythm n.ID [default (ID=202) ] ");
357 pam-fi 1.12 printf( "\n --geth,, --get-hough : get Hough-transform output [default (no Hough-t. output) ] ");
358     printf( "\n -pfa PFAID : type of output for LEVEL2, root/hbook [default 14 (COG4) ] ");
359     printf( "\n -N PATH : load parameter of type N=1,2... from PATH [default (from DB) ] ");
360     printf( "\n --verbose, -v : verbose mode ");
361     printf( "\n --debug, -d : debug mode ");
362     printf( "\n --warning, -w : warning mode ");
363 pam-fi 1.14 printf( "\n -skip NEV : skip first NEV events from each run ");
364 pam-fi 1.12 // printf( "\n --standalone, -s : standalone mode (without RunInfo) ... but it might not work \n");
365     // printf( "\n -host HOST : Name for the host [default mysql://localhost/pamelaprod ]");
366     // printf( "\n -user USER : Username for the DB [default anonymous] ");
367     // printf( "\n -psw PSW : Password for the DB [default (none)]\n \n \n");
368    
369    
370     }

  ViewVC Help
Powered by ViewVC 1.1.23