/[PAMELA software]/YodaProfiler/src/R2-D2.cpp
ViewVC logotype

Annotation of /YodaProfiler/src/R2-D2.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.12 - (hide annotations) (download)
Tue Feb 12 19:35:58 2008 UTC (16 years, 9 months ago) by mocchiut
Branch: MAIN
Changes since 1.11: +15 -9 lines
Option '-n' added to R2-D2 to printout only ID numbers

1 mocchiut 1.1 //
2     // C/C++ headers
3     //
4     #include <iostream>
5     #include <iomanip>
6     #include <fstream>
7     #include <sstream>
8     //
9     // ROOT headers
10     //
11     #include <TString.h>
12 mocchiut 1.2 #include <TTimeStamp.h>
13 mocchiut 1.1 #include <TSQLServer.h>
14     #include <TFile.h>
15     #include <TSystem.h>
16     //
17     // Detector's package headers
18     //
19     #include <GLTables.h>
20     //
21     using namespace std;
22     //
23     //
24     //
25     #include <YodaProfilerVerl2.h>
26     //
27     // Usage subroutine
28     //
29     void r2d2usage(){
30     printf("\nUsage:\n");
31 mocchiut 1.6 printf("\n R2-D2 [ options ]\n");
32 mocchiut 1.7 printf("\n Options are:\n\n");
33 mocchiut 1.6 printf(" --version print informations about compilation and exit\n");
34     printf(" -h | --help print this help and exit \n");
35 mocchiut 1.12 printf(" -v | --verbose be verbose [default]\n");
36     printf(" -n | --neat used with '-filename' returns only the run ID number\n");
37 mocchiut 1.6 printf(" -idRun run ID_RUN: ID number of the run \n");
38     printf(" -filename file output yoda filename \n");
39 mocchiut 1.9 printf(" -l2filename file output amidala filename \n");
40 mocchiut 1.6 printf(" -host name of the DB host [default = $PAM_DBHOST or mysql://localhost/pamelaprod]\n");
41     printf(" -user username for the DB connection [default = $PAM_DBUSER or \"anonymous\"] \n");
42     printf(" -psw password for the DB connection [default = $PAM_DBPSW or \"\"]\n");
43     printf(" -tzone timezone the time zone: UTC,GMT,MSK,MSD,CET,CEST are accepted \n");
44     printf(" -convert dbtime convert the dbtime given in seconds (from the DB) to a string\n");
45     printf(" -runat date returns run number which contains the given date,\n");
46     printf(" for date use the SQL format \"yyyy-mm-dd hh:mm:ss\" \n");
47     printf(" -runatDB time returns run number which contains the given DB time\n");
48     printf(" -tsfile file yoda filename for the time sync (to be used with -obt)\n");
49     printf(" -obt OBT OBT in ms returns a date (to be used with -tsfile)\n");
50     printf(" -getRTime OBT OBT in ms returns Resurs time (to be used with -tsfile)\n");
51     printf(" -dumpTLEfor date save into file tle.txt the TLE for the given date,\n");
52     printf(" for date use the SQL format \"yyyy-mm-dd hh:mm:ss\" \n");
53 mocchiut 1.1 printf("\nExamples: \n");
54 mocchiut 1.6 printf(" R2-D2 -idRun 1085 \n");
55     printf(" R2-D2 -filename DW_050208_00900.root \n");
56 mocchiut 1.8 printf(" R2-D2 -idRun 1085 -filename DW_050208_00900.root \n\n");
57 mocchiut 1.1 };
58     //
59     // Here the main
60     //
61     int main(int numinp, char *inps[]){
62     //
63     // Variables booking
64     //
65     TString message;
66     Int_t error = 0;
67     //
68     UInt_t run = 0ULL;
69     //
70     TString filename = "";
71 mocchiut 1.9 TString l2filename = "";
72 mocchiut 1.1 //
73     TSQLServer *dbc = 0;
74     TString host = "mysql://localhost/pamelaprod";
75     TString user = "anonymous";
76     TString psw = "";
77     //
78     const char *pamdbhost=gSystem->Getenv("PAM_DBHOST");
79     const char *pamdbuser=gSystem->Getenv("PAM_DBUSER");
80     const char *pamdbpsw=gSystem->Getenv("PAM_DBPSW");
81     if ( !pamdbhost ) pamdbhost = "";
82     if ( !pamdbuser ) pamdbuser = "";
83     if ( !pamdbpsw ) pamdbpsw = "";
84     if ( strcmp(pamdbhost,"") ) host = pamdbhost;
85     if ( strcmp(pamdbuser,"") ) user = pamdbuser;
86     if ( strcmp(pamdbpsw,"") ) psw = pamdbpsw;
87     //
88     // printf(" host %s user %s psw %s \n",host.Data(),user.Data(),psw.Data());
89     //
90     TString tzone = "UTC";
91     TString runtime = "1970-01-01 00:00:00";
92     TString tletime = "1970-01-01 00:00:00";
93     UInt_t dbti = 0;
94     Bool_t convert = false;
95 mocchiut 1.3 Bool_t convres = false;
96 mocchiut 1.1 Bool_t ruti = false;
97     Bool_t dtle = false;
98     Bool_t ruti2 = false;
99     Bool_t convobt = false;
100     Bool_t convobtts = false;
101 mocchiut 1.12 Bool_t neat = false;
102 mocchiut 1.1 //
103     UInt_t runtime2 = 0;
104     UInt_t obt = 0;
105 mocchiut 1.3 UInt_t res = 0;
106 mocchiut 1.1 TString tsfile = "";
107     //
108     TSQLResult *pResult;
109     TSQLRow *Row;
110     int t;
111     int r;
112     stringstream myquery;
113     //
114     // Checking input parameters
115     //
116     Int_t i = 0;
117     if ( numinp > 1 ){
118     while ( i < numinp ){
119     if ( !strcmp(inps[i],"--version") ){
120     YodaProfilerInfo(true);
121     exit(0);
122     };
123     if ( !strcmp(inps[i],"-h") || !strcmp(inps[i],"--help") ){
124     r2d2usage();
125     exit(0);
126     };
127 mocchiut 1.12 if ( !strcmp(inps[i],"-n") || !strcmp(inps[i],"--neat") ){
128     neat = true;
129     };
130 mocchiut 1.1 if ( !strcmp(inps[i],"-idRun") ) {
131     if ( numinp-1 < i+1 ) {
132     r2d2usage();
133     exit(-3);
134     };
135     run = (UInt_t)atoll(inps[i+1]);
136     };
137     if ( !strcmp(inps[i],"-filename") ) {
138     if ( numinp-1 < i+1 ){
139     r2d2usage();
140     exit(-3);
141     };
142     filename = (TString)inps[i+1];
143     };
144 mocchiut 1.9 if ( !strcmp(inps[i],"-l2filename") ) {
145     if ( numinp-1 < i+1 ){
146     r2d2usage();
147     exit(-3);
148     };
149     l2filename = (TString)inps[i+1];
150     };
151 mocchiut 1.1 if ( !strcmp(inps[i],"-host") ) {
152     if ( numinp-1 < i+1 ){
153     r2d2usage();
154     exit(-3);
155     };
156     host = (TString)inps[i+1];
157     };
158     if ( !strcmp(inps[i],"-user") ) {
159     if ( numinp-1 < i+1 ){
160     r2d2usage();
161     exit(-3);
162     };
163     user = (TString)inps[i+1];
164     };
165     if ( !strcmp(inps[i],"-psw") ) {
166     if ( numinp-1 < i+1 ){
167     r2d2usage();
168     exit(-3);
169     };
170     psw = (TString)inps[i+1];
171     };
172     //
173     if ( !strcmp(inps[i],"-tsfile") ) {
174     convobtts = true;
175     if ( numinp-1 < i+1 ){
176     r2d2usage();
177     exit(-3);
178     };
179     tsfile = (TString)inps[i+1];
180     };
181     //
182     if ( !strcmp(inps[i],"-obt") ) {
183     convobt = true;
184     if ( numinp-1 < i+1 ){
185     r2d2usage();
186     exit(-3);
187     };
188     obt = (UInt_t)atoll(inps[i+1]);
189     };
190     //
191 mocchiut 1.3 if ( !strcmp(inps[i],"-getRTime") ) {
192     convres = true;
193     if ( numinp-1 < i+1 ){
194     r2d2usage();
195     exit(-3);
196     };
197     res = (UInt_t)atoll(inps[i+1]);
198     };
199     //
200 mocchiut 1.1 //
201     if ( !strcmp(inps[i],"-tzone") ) {
202     if ( numinp-1 < i+1 ){
203     r2d2usage();
204     exit(-3);
205     };
206     tzone = (TString)inps[i+1];
207     };
208     //
209     if ( !strcmp(inps[i],"-convert") ) {
210     convert = true;
211     if ( numinp-1 < i+1 ){
212     r2d2usage();
213     exit(-3);
214     };
215     dbti = (UInt_t)atoll(inps[i+1]);
216     };
217     //
218     if ( !strcmp(inps[i],"-runat") ) {
219     ruti = true;
220     if ( numinp-1 < i+1 ){
221     r2d2usage();
222     exit(-3);
223     };
224     runtime = (TString)inps[i+1];
225     };
226     //
227     if ( !strcmp(inps[i],"-dumpTLEfor") ) {
228     dtle = true;
229     if ( numinp-1 < i+1 ){
230     r2d2usage();
231     exit(-3);
232     };
233     tletime = (TString)inps[i+1];
234     };
235     //
236     //
237     if ( !strcmp(inps[i],"-runatDB") ) {
238     ruti2 = true;
239     if ( numinp-1 < i+1 ){
240     r2d2usage();
241     exit(-3);
242     };
243     runtime2 = (UInt_t)atoll(inps[i+1]);
244     };
245     //
246     i++;
247     };
248     //
249     } else {
250     //
251     // no input parameters exit with error, we need at least the run id.
252     //
253     r2d2usage();
254     exit(-2);
255     };
256     //
257     // Connect to the DB
258     //
259     dbc = TSQLServer::Connect(host.Data(),user.Data(),psw.Data());
260     if( !dbc ) throw -2;
261     //
262     bool connect = dbc->IsConnected();
263     //
264     if( !connect ){
265     printf(" Error, not connected to DB\n");
266     exit(-1);
267     };
268     //
269 mocchiut 1.2 myquery.str("");
270     myquery << "SET time_zone='+0:00'";
271     dbc->Query(myquery.str().c_str());
272     //
273 mocchiut 1.1 GL_ROOT *glroot = new GL_ROOT();
274     GL_RUN *glrun = new GL_RUN();
275     GL_TIMESYNC *dbtime = new GL_TIMESYNC();
276 mocchiut 1.9 UInt_t nr = 0;
277     UInt_t rlist[500];
278 mocchiut 1.1 //
279     // At which date correspond the DB time "dbti"?
280     //
281     if ( convert ){
282     printf("\n DB time %u is %s %s \n",dbti,dbtime->ConvertTime(tzone,dbti).Data(),tzone.Data());
283     };
284     //
285 mocchiut 1.3 // convert OBT to date
286 mocchiut 1.1 //
287     if ( convobt && convobtts ){
288     UInt_t id = 0;
289     myquery.str("");
290     myquery << "select ";
291     myquery << " ID";
292     myquery << " from GL_ROOT where NAME=\"" << tsfile.Data() << "\";";
293     pResult = dbc->Query(myquery.str().c_str());
294     if ( pResult ){
295     Row = pResult->Next();
296     if ( Row ){
297     id = (UInt_t)atoll(Row->GetField(0));
298     delete pResult;
299     GL_TIMESYNC *ctime = new GL_TIMESYNC(id,"ID",dbc);
300     UInt_t abtime = ctime->DBabsTime(obt);
301     TString thetime = dbtime->ConvertTime(tzone,abtime);
302     printf("\n OBT %u in the file %s corresponds to DBtime %u and date %s %s \n",obt,tsfile.Data(),abtime,thetime.Data(),tzone.Data());
303     delete ctime;
304     };
305     };
306     };
307 mocchiut 1.3 if ( (convobt && !convobtts) ){
308 mocchiut 1.1 printf("\n To convert a OBT to a date you must provide both OBT and file to be used for time sync \n");
309     };
310     //
311 mocchiut 1.3 // convert OBT to Resurs seconds
312     //
313     if ( convres && convobtts ){
314     UInt_t id = 0;
315     myquery.str("");
316     myquery << "select ";
317     myquery << " ID";
318     myquery << " from GL_ROOT where NAME=\"" << tsfile.Data() << "\";";
319     pResult = dbc->Query(myquery.str().c_str());
320     if ( pResult ){
321     Row = pResult->Next();
322     if ( Row ){
323     id = (UInt_t)atoll(Row->GetField(0));
324     delete pResult;
325     GL_TIMESYNC *ctime = new GL_TIMESYNC(id,"ID",dbc);
326     UInt_t restime = ctime->ResursTime(res);
327     //UInt_t abtime = ctime->DBabsTime(obt);
328     //
329     // TString thetime = dbtime->ConvertTime(tzone,abtime);
330     printf("\n OBT %u in the file %s corresponds to Resurs time %u \n",res,tsfile.Data(),restime);
331     delete ctime;
332     };
333     };
334     };
335     if ( (convres && !convobtts) ){
336     printf("\n To convert a OBT to the Resurs time you must provide both OBT and file to be used for time sync \n");
337     };
338     //
339 mocchiut 1.1 // Which run contains the date "runtime"?
340     //
341     if ( ruti ){
342     //
343 mocchiut 1.2 TDatime ti = TDatime(runtime.Data());
344     //
345     TTimeStamp *time = new TTimeStamp((UInt_t)ti.GetYear(),(UInt_t)ti.GetMonth(),(UInt_t)ti.GetDay(),(UInt_t)ti.GetHour(),(UInt_t)ti.GetMinute(),(UInt_t)ti.GetSecond(),0,true,0);
346     //
347     UInt_t dbti = time->GetSec();
348 mocchiut 1.1 //
349     TString thetime = dbtime->UnConvertTime(tzone,dbti);
350     //
351 mocchiut 1.2 ti = TDatime(thetime.Data());
352     TTimeStamp *time2 = new TTimeStamp((UInt_t)ti.GetYear(),(UInt_t)ti.GetMonth(),(UInt_t)ti.GetDay(),(UInt_t)ti.GetHour(),(UInt_t)ti.GetMinute(),(UInt_t)ti.GetSecond(),0,true,0);
353     //
354     UInt_t mytime = time2->GetSec();
355     //
356 mocchiut 1.1 Bool_t found = false;
357     //
358     myquery.str("");
359     myquery << "select ";
360     myquery << " ID ";
361     myquery << " from GL_RUN where RUNHEADER_TIME<=" << mytime << " AND "
362     << " RUNTRAILER_TIME>=" << mytime << " ;";
363     // printf("myquery is %s \n",myquery.str().c_str());
364     pResult = dbc->Query(myquery.str().c_str());
365     for( r=0; r < 1000; r++){
366     Row = pResult->Next();
367     if( Row == NULL ) break;
368     found = true;
369     printf("\n Date %s %s (DB time %u ) is contained in run %u \n",runtime.Data(),tzone.Data(),mytime,(UInt_t)atoll(Row->GetField(0)));
370     };
371     myquery.str("");
372     myquery << "select ";
373     myquery << " ID ";
374     myquery << " from GL_RUN_TRASH where BELONGED_TO='GL_RUN' AND RUNHEADER_TIME<=" << mytime << " AND "
375     << " RUNTRAILER_TIME>=" << mytime << " ;";
376     // printf("myquery is %s \n",myquery.str().c_str());
377     pResult = dbc->Query(myquery.str().c_str());
378     for( r=0; r < 1000; r++){
379     Row = pResult->Next();
380     if( Row == NULL ) break;
381     printf("\n Date %s %s (DB time %u ) is contained in run %u in the GL_RUN_TRASH table \n",runtime.Data(),tzone.Data(),mytime,(UInt_t)atoll(Row->GetField(0)));
382     found = true;
383     };
384     //
385     if ( !found ){
386     printf("\n No run contains date %s %s (DB time %u )\n",runtime.Data(),tzone.Data(),mytime);
387     };
388     //
389     };
390     //
391     // Which tle must be used for the date "tletime"?
392     //
393     if ( dtle ){
394     //
395 mocchiut 1.2 //
396 mocchiut 1.4 TDatime ti = TDatime(tletime.Data());
397 mocchiut 1.2 //
398     TTimeStamp *time = new TTimeStamp((UInt_t)ti.GetYear(),(UInt_t)ti.GetMonth(),(UInt_t)ti.GetDay(),(UInt_t)ti.GetHour(),(UInt_t)ti.GetMinute(),(UInt_t)ti.GetSecond(),0,true,0);
399     //
400     UInt_t dbti = time->GetSec();
401 mocchiut 1.1 //
402     TString thetime = dbtime->UnConvertTime(tzone,dbti);
403     //
404 mocchiut 1.2 ti = TDatime(thetime.Data());
405     TTimeStamp *time2 = new TTimeStamp((UInt_t)ti.GetYear(),(UInt_t)ti.GetMonth(),(UInt_t)ti.GetDay(),(UInt_t)ti.GetHour(),(UInt_t)ti.GetMinute(),(UInt_t)ti.GetSecond(),0,true,0);
406     //
407     UInt_t mytime = time2->GetSec();
408 mocchiut 1.1 //
409     myquery.str("");
410 mocchiut 1.2 myquery << " select ID,TLE1,TLE2,TLE3 from GL_TLE where FROM_TIME<='" << time2->AsString("s") << "' ORDER BY FROM_TIME DESC LIMIT 1;";
411 mocchiut 1.1 // myquery << " from GL_TLE where FROM_TIME>=" << mytime << " ORDER BY FROM_TIME ASC LIMIT 1;";
412     // printf("myquery is %s \n",myquery.str().c_str());
413     pResult = dbc->Query(myquery.str().c_str());
414     Row = pResult->Next();
415     if ( !Row ){
416     printf("\n No TLE in the DB for date %s %s (DB time %u )\n",tletime.Data(),tzone.Data(),mytime);
417     };
418     printf("\n Date %s %s (DB time %u ) is contained in TLE %u \n",tletime.Data(),tzone.Data(),mytime,(UInt_t)atoll(Row->GetField(0)));
419     printf("\n%s\n",Row->GetField(1));
420     printf("%s\n",Row->GetField(2));
421     printf("%s\n",Row->GetField(3));
422     //
423     FILE *tlefile;
424     tlefile = fopen("tle.txt","w");
425     fprintf(tlefile,"%s\n",Row->GetField(1));
426     fprintf(tlefile,"%s\n",Row->GetField(2));
427     fprintf(tlefile,"%s\n",Row->GetField(3));
428     fclose (tlefile);
429     //
430     printf("\n TLE has been dumped in file tle.txt \n");
431     };
432     //
433     // Which run contains the dbtime "runtime2"?
434     //
435     if ( ruti2 ){
436     //
437     UInt_t mytime = runtime2;
438     //
439     Bool_t found = false;
440     myquery.str("");
441     myquery << "select ";
442     myquery << " ID ";
443     myquery << " from GL_RUN where RUNHEADER_TIME<=" << mytime << " AND "
444     << " RUNTRAILER_TIME>=" << mytime << " ;";
445     // printf("myquery is %s \n",myquery.str().c_str());
446     pResult = dbc->Query(myquery.str().c_str());
447     for( r=0; r < 1000; r++){
448     Row = pResult->Next();
449     if( Row == NULL ) break;
450     printf("\n DB time %u is contained in run %u \n",mytime,(UInt_t)atoll(Row->GetField(0)));
451     found = true;
452     };
453     //
454     myquery.str("");
455     myquery << "select ";
456     myquery << " ID ";
457     myquery << " from GL_RUN_TRASH where BELONGED_TO='GL_RUN' AND RUNHEADER_TIME<=" << mytime << " AND "
458     << " RUNTRAILER_TIME>=" << mytime << " ;";
459     // printf("myquery is %s \n",myquery.str().c_str());
460     pResult = dbc->Query(myquery.str().c_str());
461     for( r=0; r < 1000; r++){
462     Row = pResult->Next();
463     if( Row == NULL ) break;
464     printf("\n DB time %u is contained in run %u in the GL_RUN_TRASH table \n",mytime,(UInt_t)atoll(Row->GetField(0)));
465     found = true;
466     };
467     //
468     if ( !found ){
469     printf("\n No run contains DB time %u \n",mytime);
470     };
471     //
472     };
473     //
474     // To which file the run "run" belongs?
475     //
476     if ( run != 0 ){
477     Bool_t found = false;
478     glrun->Clear();
479     error = glrun->Query_GL_RUN(run,dbc);
480     glroot->Clear();
481     error = glroot->Query_GL_ROOT(glrun->ID_ROOT_L0,dbc);
482     if ( glrun->ID_ROOT_L0 ){
483     if ( error ){
484     printf(" Error querying the DB! \n");
485     exit(-4);
486     };
487     printf("\n Run %u belongs to file %s \n",run,(glroot->PATH+glroot->NAME).Data());
488 mocchiut 1.9 //filename = glroot->NAME;
489 mocchiut 1.1 found = true;
490     };
491     //
492     myquery.str("");
493     myquery << "select ";
494     myquery << " ID,FILENAMEL0,FILENAMEL2 ";
495     myquery << " from GL_RUN_TRASH where BELONGED_TO='GL_RUN' AND ID=" << run << "; ";
496     pResult = dbc->Query(myquery.str().c_str());
497     for( r=0; r < 1000; r++){
498     Row = pResult->Next();
499     if( Row == NULL ) break;
500     printf("\n RUN %u has been deleted and now is contained in the GL_RUN_TRASH table \n",run);
501     printf("\n RUN %u belonged to L0 file %s and L2 file %s \n",run,Row->GetField(1),Row->GetField(2));
502     found = true;
503     };
504     //
505     if ( !found ) printf("\n No run with ID=%u in the DB!\n",run);
506     };
507     //
508     // Which runs are contained in the file "filename"?
509     //
510     if ( strcmp(filename.Data(),"") ){
511     // ----------------
512     Bool_t found = false;
513     Int_t ID = 0;
514     Int_t ID_RAW = 0;
515     //
516     const char *rawpath = "";
517     const char *rawname = "";
518     //
519     myquery.str("");
520     myquery << "select ";
521     myquery << " ID";
522     myquery << ",ID_RAW";
523     myquery << ",PATH";
524     myquery << ",NAME";
525     myquery << " from GL_ROOT where NAME=\"" << filename.Data() << "\";";
526     pResult = dbc->Query(myquery.str().c_str());
527     for( r=0; r < 1000; r++){
528     Row = pResult->Next();
529     if( Row == NULL ) break;
530     for( t = 0; t < pResult->GetFieldCount(); t++){
531     if(t==0) ID = atoi(Row->GetField(t));
532     if(t==1) ID_RAW = atoi(Row->GetField(t));
533     };
534     };
535     delete pResult;
536     if ( !ID && !ID_RAW ){
537 mocchiut 1.12 if ( !neat ) printf("\n No file with name %s in the DB!\n",filename.Data());
538 mocchiut 1.1 } else {
539     myquery.str("");
540     myquery << "select ";
541 mocchiut 1.5 myquery << " ID,RUNHEADER_TIME,RUNTRAILER_TIME,NEVENTS ";
542 mocchiut 1.1 myquery << " from GL_RUN where ID_ROOT_L0=" << ID << ";";
543     pResult = dbc->Query(myquery.str().c_str());
544     for( r=0; r < 1000; r++){
545     Row = pResult->Next();
546     if( Row == NULL ) break;
547     found = true;
548 mocchiut 1.12 if ( !r && !neat ) printf("\n File %s contains the following runs: \n\n",filename.Data());
549 mocchiut 1.5 TString UTC=tzone.Data();
550 mocchiut 1.12 if ( !neat ) printf(" => ID = %u --> the run started at %s %s ended at %s %s NEV = %u \n\n",(UInt_t)atoll(Row->GetField(0)),dbtime->ConvertTime(UTC,(UInt_t)atoll(Row->GetField(1))).Data(),tzone.Data(),dbtime->ConvertTime(UTC,(UInt_t)atoll(Row->GetField(2))).Data(),tzone.Data(),(UInt_t)atoll(Row->GetField(3)));
551     if ( neat ) printf("%u\n",(UInt_t)atoll(Row->GetField(0)));
552 mocchiut 1.1 };
553     delete pResult;
554     myquery.str("");
555     myquery << "select ";
556     myquery << " ID,RUNHEADER_TIME,RUNTRAILER_TIME ";
557     myquery << " from GL_RUN_TRASH where BELONGED_TO='GL_RUN' AND FILENAMEL0='" << filename.Data() << "' ;";
558     pResult = dbc->Query(myquery.str().c_str());
559     for( r=0; r < 1000; r++){
560     Row = pResult->Next();
561     if( Row == NULL ) break;
562 mocchiut 1.12 if ( !r && !neat ) printf("\n File %s contains the following DELETED runs: \n\n",filename.Data());
563 mocchiut 1.5 TString UTC=tzone.Data();
564 mocchiut 1.12 if ( !neat ) printf(" => ID = %i --> the run started at %s %s ended at %s %s \n\n",(UInt_t)atoll(Row->GetField(0)),dbtime->ConvertTime(UTC,(UInt_t)atoll(Row->GetField(1))).Data(),tzone.Data(),dbtime->ConvertTime(UTC,(UInt_t)atoll(Row->GetField(2))).Data(),tzone.Data());
565 mocchiut 1.1 };
566     //
567     if ( !found ){
568 mocchiut 1.12 if ( !neat ) printf("\n No run associated to the file %s \n",filename.Data());
569 mocchiut 1.1 };
570     myquery.str("");
571     myquery << "select ";
572     myquery << " PATH,NAME";
573     myquery << " from GL_RAW where ID=" << ID_RAW << ";";
574     pResult = dbc->Query(myquery.str().c_str());
575     for( r=0; r < 1000; r++){
576     Row = pResult->Next();
577     if( Row == NULL ) break;
578     for( t = 0; t < pResult->GetFieldCount(); t++){
579     if(t==0) rawpath = Row->GetField(t);
580     if(t==1) rawname = Row->GetField(t);
581     };
582     };
583     delete pResult;
584 mocchiut 1.12 if ( !neat ) printf("\n File %s belongs to raw data file %s/%s \n",filename.Data(),rawpath,rawname);
585 mocchiut 1.1 };
586     };
587     //
588 mocchiut 1.9 // Which runs are contained in the file "l2filename"?
589     //
590     if ( strcmp(l2filename.Data(),"") ){
591     // ----------------
592     Bool_t found = false;
593     Int_t ID = 0;
594     Int_t ID_RAW = 0;
595     //
596     const char *rawpath = "";
597     const char *rawname = "";
598     //
599     myquery.str("");
600     myquery << "select ";
601     myquery << " ID";
602     myquery << ",ID_RAW";
603     myquery << ",PATH";
604     myquery << ",NAME";
605 mocchiut 1.11 myquery << " from GL_ROOT where NAME=\"" << l2filename.Data() << "\" order by INSERT_TIME desc limit 1;";
606 mocchiut 1.9 pResult = dbc->Query(myquery.str().c_str());
607     for( r=0; r < 1000; r++){
608     Row = pResult->Next();
609     if( Row == NULL ) break;
610     for( t = 0; t < pResult->GetFieldCount(); t++){
611     if(t==0) ID = atoi(Row->GetField(t));
612     if(t==1) ID_RAW = atoi(Row->GetField(t));
613     };
614     };
615     delete pResult;
616     if ( !ID ){
617     printf("\n No file with name %s in the DB!\n",l2filename.Data());
618     } else {
619     nr = 0;
620     rlist[0] = 0;
621     myquery.str("");
622     myquery << "select ";
623     myquery << " ID,ID_ROOT_L0 ";
624     myquery << " from GL_RUN where ID_ROOT_L2=" << ID << ";";
625     pResult = dbc->Query(myquery.str().c_str());
626     for( r=0; r < pResult->GetRowCount(); r++){
627     Row = pResult->Next();
628     if( Row == NULL ) break;
629     found = true;
630     if ( !r ) printf("\n File %s contains the following runs: \n\n",l2filename.Data());
631     printf(" %u ",(UInt_t)atoll(Row->GetField(0)));
632     if ( r < (pResult->GetRowCount()-1) ){
633     printf("-");
634     } else {
635     printf("\n\n");
636     };
637 mocchiut 1.10 if ( (UInt_t)atoll(Row->GetField(1)) != rlist[nr] ){
638 mocchiut 1.9 nr++;
639 mocchiut 1.10 rlist[nr] = (UInt_t)atoll(Row->GetField(1));
640 mocchiut 1.9 };
641     };
642     delete pResult;
643     //
644     printf("\n File %s contains runs from L0 files: \n\n",l2filename.Data());
645     for (UInt_t l=1; l<nr+1; l++){
646     myquery.str("");
647     myquery << "select ";
648     myquery << " PATH,NAME";
649     myquery << " from GL_ROOT where ID=" << rlist[l] << ";";
650     pResult = dbc->Query(myquery.str().c_str());
651     for( r=0; r < pResult->GetRowCount(); r++){
652     Row = pResult->Next();
653     if( Row == NULL ) break;
654     for( t = 0; t < pResult->GetFieldCount(); t++){
655     if(t==0) rawpath = Row->GetField(t);
656     if(t==1) rawname = Row->GetField(t);
657     };
658     printf(" %s/%s \n",rawpath,rawname);
659     };
660     delete pResult;
661     };
662     };
663     };
664     //
665 mocchiut 1.1 // Close the DB connection
666     //
667     if ( dbc ) dbc->Close();
668     //
669 mocchiut 1.12 if ( !neat ) printf("\n");
670 mocchiut 1.1 //
671     exit(0);
672     }

  ViewVC Help
Powered by ViewVC 1.1.23