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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Fri May 19 13:15:54 2006 UTC (18 years, 6 months ago) by mocchiut
Branch: MAIN
Branch point for: DarthVader
Initial revision

1 /**
2 * \file TrackerLevel2.cpp
3 * \author Elena Vannuccini
4 */
5 #include <stdlib.h>
6 #include <iostream>
7 #include <TSQLServer.h>
8 #include <TSystem.h>
9 #include <TSystemDirectory.h>
10 #include <TString.h>
11 //
12 #include <TrkCore.h>
13 #include <TrkVerl2.h>
14 //
15 using namespace std;
16 bool DEBUG;
17
18 /**
19 * The program handles input parameters, open the connection to the DB and call the TrkCore() routine.
20 */
21 int main(int argc, char *argv[]){
22
23 try{
24
25 TSQLServer *dbc = 0;
26 TFile *f2 = 0;
27 // -----------------------
28 // Default input parameters
29 // -----------------------
30 DEBUG = 0;
31 ULong64_t run = 0;
32 int get1 = 0;
33 int get2 = 1;
34 bool standalone = false;
35 TString frame2 = "root";
36 TString frame1 = "hbook";
37 TString file1 ;
38 TString file2 ;
39 TString outdir = gSystem->WorkingDirectory(); // "./";
40 TString pfolder = "/TrackerFolder";
41 TString host = "mysql://localhost/pamelaprod";
42 TString user = "anonymous";
43 TString psw = "";
44
45 if(argc<2)throw -1;
46 // -----------------------------
47 // program help and version info
48 // -----------------------------
49 if ( !strcmp(argv[1],"--version") ){
50 TrkInfo(true);
51 return(0);
52 // ----------------------------------------------------------------
53 } else if ( !strcmp(argv[1],"-h") || !strcmp(argv[1],"--help") ){
54 printf( "\n\n USAGE\n\n TrackerLevel2 -idRun xxxxx [options] \n \n");
55 printf( "\n --version : Print tracker software version and exit ");
56 printf( "\n --help, -h : Print this help and exit \n");
57 printf( "\n -idRun RUN : ID number of the run to be processed (for reprocessing RUN=0) \n");
58 printf( "\n -outDir OUTDIR : Path where to put the LEVEL2 output [default ./ ] ");
59 printf( "\n -processFolder DIR : Directory (relative to OUTDIR) for other output files [default TrackerFolder/ ] ");
60 printf( "\n -processFile FILE : Name of the LEVEL2 output file [default RUN.Level2.root]");
61 printf( "\n -processFile1 FILE : Name of the LEVEL1 output file [default RUN.Level1.rz]");
62 printf( "\n -frame1 FRAME : type of output for LEVEL1, root/hbook [default hbook ] ");
63 printf( "\n -frame2 FRAME : type of output for LEVEL2, root/hbook [default root ] ");
64 printf( "\n --get1 : flag to get LEVEL1 output [default (no LEVEL1 output) ] ");
65 printf( "\n --dontget2 : flag to do not get LEVEL2 output [default (get LEVEL2 output)]");
66 printf( "\n --verbose, -v : Run the program in debug mode ");
67 printf( "\n --standalone, -s : Run the program in standalone mode (without RunInfo) \n");
68 printf( "\n -host HOST : Name for the host [default mysql://localhost/pamelaprod ]");
69 printf( "\n -user USER : Username for the DB [default anonymous] ");
70 printf( "\n -psw PSW : Password for the DB [default (none)]\n \n \n");
71 exit(-12);
72 // ----------------------------------------------------------------
73 }
74
75 // cout << "bbb "<< gDirectory->pwd()<< endl;
76
77 // -----------------------
78 // Read input parameters
79 // -----------------------
80 TString input_parameters=0;
81 int ncustom =0;
82 char* vcustom[30];
83 for (int i = 1; i < argc; i++){
84 // cout << i << " "<< argv[i] << endl;
85 vcustom[ncustom] = argv[i];
86 ncustom++;
87 // -----------------------------------------------------//
88 if (!strcmp(argv[i], "-idRun")){
89 if (++i >= argc) throw -1;
90 run = atoi(argv[i]);
91 continue;
92 }
93 // -----------------------------------------------------//
94 else if (!strcmp(argv[i], "-outDir")){
95 if (++i >= argc)throw -3;
96 outdir = argv[i];
97 continue;
98 }
99 // -----------------------------------------------------//
100 else if (!strcmp(argv[i], "-processFolder")){
101 if (++i >= argc) throw -3;
102 pfolder = argv[i];
103 continue;
104 }
105 // -----------------------------------------------------//
106 else if (!strcmp(argv[i], "-processFile")){
107 if (++i >= argc) throw -3;
108 get2 = 1;
109 file2 = argv[i];
110 continue;
111 }
112 // -----------------------------------------------------//
113 else if (!strcmp(argv[i], "--get1")){
114 get1 = 1;
115 continue;
116 }
117 //-----------------------------------------------------//
118 else if (!strcmp(argv[i], "--dontget2")){
119 get2 = 0;
120 continue;
121 }
122 //-----------------------------------------------------//
123 else if (!strcmp(argv[i], "--standalone") || !strcmp(argv[i], "-s")){
124 standalone = true;
125 continue;
126 }
127 //-----------------------------------------------------//
128 else if (!strcmp(argv[i], "-processFile1")){
129 if (++i >= argc) throw -3;
130 get1 = 1;
131 file1 = argv[i];
132 continue;
133 }
134 //-----------------------------------------------------//
135 else if (!strcmp(argv[i], "-frame1")){
136 if (++i >= argc)throw -3;
137 get1 = 1;
138 frame1 = argv[i];
139 continue;
140 }
141 //-----------------------------------------------------//
142 else if (!strcmp(argv[i], "-frame2")){
143 if (++i >= argc)throw -3;
144 get2 = 1;
145 frame2 = argv[i];
146 continue;
147 }
148 // -----------------------------------------------------//
149 else if (!strcmp(argv[i], "-host")){
150 if (++i >= argc)throw -3;
151 host = argv[i];
152 continue;
153 }
154 // -----------------------------------------------------//
155 else if (!strcmp(argv[i], "-user")){
156 if (++i >= argc)throw -3;
157 user = argv[i];
158 continue;
159 }
160 // -----------------------------------------------------//
161 else if (!strcmp(argv[i], "-psw")){
162 if (++i >= argc)throw -3;
163 psw = argv[i];
164 continue;
165 }
166 //-----------------------------------------------------//
167 else if (!strcmp(argv[i], "--verbose") || !strcmp(argv[i], "-v")){
168 DEBUG = 1;
169 continue;
170 }else{
171 };
172 }
173
174
175 // -----------------------
176 // Handle input parameters
177 // -----------------------
178 // check patameter consistency
179 // if(run == -1 || (run < 0 && run != 0)) throw -1;
180 if( get1 == 0 && get2 == 0) throw -202;
181 if( get1 == 1 && get2 == 0 && run == 0) throw -204;
182 if( standalone && run == 0) throw -298;
183 // compose outputfile names
184 /* if(get1){
185 TString filety;
186 if (!frame1.CompareTo("root", TString::kIgnoreCase)) filety=".root";
187 else if (!frame1.CompareTo("hbook", TString::kIgnoreCase)) filety=".rz";
188 else throw -200;
189 if(file1.IsNull()){
190 file1 += run;
191 file1 += ".Level1";
192 file1 += filety;
193 }else if (!file1.Contains(filety.Data())) file1 += filety;
194 file1 = outdir + "/"+ pfolder + "/" + file1;
195 };*/
196 if(get2){
197 if(run == 0 && file2.IsNull()) throw -4;
198 TString filety;
199 if (!frame2.CompareTo("root", TString::kIgnoreCase)) filety=".root";
200 else if (!frame2.CompareTo("hbook", TString::kIgnoreCase)) filety=".rz";
201 else throw -201;
202 if(file2.IsNull()){
203 file2 += (Int_t)run;
204 file2 += ".Level2";
205 file2 += filety;
206 }else if (!file2.Contains(filety.Data())) file2 += filety;
207 file2 = outdir + "/" + file2;
208 f2= new TFile(file2,"UPDATE");
209 if ( !f2->IsOpen() ) throw -204;
210
211 };
212
213 if(DEBUG){
214 cout << endl << "Input parameters: " << endl;
215 cout << "idRun "<< run << endl;
216 cout << "get1 "<< get1 << endl;
217 cout << "get2 "<< get2 << endl;
218 cout << "LEVEL1 output "<< file1 << endl;
219 cout << "LEVEL2 output "<< file2 << endl;
220 cout << "host "<< host << endl;
221 cout << "user "<< user << endl;
222 cout << "password "<< psw << endl;
223 }
224 // -----------------------
225 // connect to the database
226 // -----------------------
227 if(DEBUG) printf("\nConnecting to database... \n");
228 // dbc = TSQLServer::Connect("mysql://localhost/pamelaprod","anonymous","");
229 dbc = TSQLServer::Connect(host,user,psw);
230 Bool_t connect = dbc->IsConnected();
231 if( !connect ) throw -2;
232 if(DEBUG) printf("...connected! \n\n");
233 // -------------------------
234 // CALL REDUCTION ROUTINE
235 // -------------------------
236 // TrkCore(run,dbc,file1,file2,standalone);
237 TrkCore(run,f2,dbc,ncustom,vcustom);
238 // -----------------------
239 // close connection to db
240 // -----------------------
241 if(DEBUG) printf("\nClose the connection to the database... \n");
242 dbc->Close();
243 if(DEBUG) printf("...connection terminated!\n\n");
244
245 if(get2)f2->Close();
246
247 return 0;
248 }
249 catch(int e){
250
251 TString message;
252 switch(e){
253 case -1: message += "Missing/wrong run ID input parameter"; break;
254 case -2: message += "DB connection failure"; break;
255 case -3: message += "Error in input parameters (check format)"; break;
256 case -4: message += "Request reprocessing of all runs (idRun = 0) but processFile is missing"; break;
257 case -6: message += "No LEVEL0 file "; break;
258 case -7: message += "No \"Physics\" tree in LEVEL0 file"; break;
259 case -8: message += "No \"Header\" branch in LEVEL0 \"Physics\" tree"; break;
260 case -9: message += "No \"Registry\" branch in LEVEL0 \"Physics\" tree"; break;
261 case -11: message += "LEVEL0 \"Physics\" tree is empty"; break;
262 case -12: message += "LEVEL2 output directory does not exists"; break;
263 case -13: message += "Cannot create processFolder directory"; break;
264
265 case -50: message += "No entries matching GL_RUN query"; break;
266 case -51: message += "No entries matching GL_ROOT query"; break;
267 case -52: message += "No entries matching GL_PARAM query"; break;
268 case -53: message += "No entries matching GL_TRK_CALIB query"; break;
269 case -54: message += "No entries matching GL_CALO_CALIB query"; break;
270
271
272 case -200: message += "LEVEL1 framework unknown (HBOOK/ROOT)"; break;
273 case -201: message += "LEVEL2 framework unknown (HBOOK/ROOT)"; break;
274 case -202: message += "Neither LEVEL1 nor LEVEL2 output requested"; break;
275 case -203: message += "No \"Tracker\" branch in LEVEL0 \"Physics\" tree"; break;
276 case -204: message += "No reprocessing implemented for LEVEL1 output"; break;
277 case -205: message += "Error accessing \"RunInfo\" "; break;
278
279 case -210: message += "Error opening/reading \"trk mask\" GL_PARAM parameters "; break;
280 case -211: message += "Error opening/reading \"trk alignment\" GL_PARAM parameters"; break;
281 case -212: message += "Error opening/reading \"trk mip\" GL_PARAM parameters"; break;
282 case -213: message += "Error opening/reading \"trk charge\" GL_PARAM parameters"; break;
283 case -214: message += "Error opening/reading \"trk pfa\" GL_PARAM parameters"; break;
284 case -215: message += "Error opening/reading \"field\" GL_PARAM parameters"; break;
285 case -216: message += "Error opening/reading \"default calibration\" GL_PARAM parameters"; break;
286
287 case -298: message += "Reprocessing not implemented in standalone mode"; break;
288 case -299: message += "Not yet implemented"; break;
289
290 default: message += "Unidentified"; break;
291 }
292 cout << "TrackerLevel2 - ERROR ("<< e << ") "<< message <<endl;
293 exit(e);
294 }
295 }
296
297

  ViewVC Help
Powered by ViewVC 1.1.23