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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.23