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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.15 - (show annotations) (download)
Wed Mar 6 14:18:33 2013 UTC (11 years, 8 months ago) by mocchiut
Branch: MAIN
Changes since 1.14: +8 -0 lines
Simulation flag (Valerio's style) added for Tracker

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

  ViewVC Help
Powered by ViewVC 1.1.23