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

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

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

revision 1.1 by mocchiut, Tue Oct 31 15:36:05 2006 UTC revision 1.14 by mocchiut, Mon Mar 3 15:09:40 2008 UTC
# Line 9  Line 9 
9  // ROOT headers  // ROOT headers
10  //  //
11  #include <TString.h>  #include <TString.h>
12    #include <TTimeStamp.h>
13  #include <TSQLServer.h>  #include <TSQLServer.h>
14  #include <TFile.h>  #include <TFile.h>
15  #include <TSystem.h>  #include <TSystem.h>
# Line 27  using namespace std; Line 28  using namespace std;
28  //  //
29  void r2d2usage(){  void r2d2usage(){
30    printf("\nUsage:\n");    printf("\nUsage:\n");
31    printf("\n R2-D2 [-h | --help] [--version] [-idRun ID_RUN] [-filename filename]\n");    printf("\n R2-D2 [ options ]\n");
32    printf("\n            [-host host] [-user username] [-psw password] \n");    printf("\n Options are:\n\n");
33    printf("\n --version        print informations about compilation and exit\n");    printf(" --version        print informations about compilation and exit\n");
34    printf("\n -h | --help      print this help and exit \n");    printf(" -h | --help      print this help and exit \n");
35    printf("\n -v | --verbose   be verbose [default: print nothing on STDOUT]\n");    printf(" -v | --verbose   be verbose [default]\n");
36    printf("\n -idRun run       ID_RUN: ID number of the run \n");    printf(" -n | --neat      used with '-filename' returns only the run ID number\n");
37    printf("\n -filename file   output yoda filename \n");    printf(" -idRun run       ID_RUN: ID number of the run \n");
38    printf("\n -host            name for the host [default = $PAM_DBHOST or mysql://localhost/pamelaprod]\n");    printf(" -filename file   output yoda filename \n");
39    printf("\n -user            username for the DB [default = $PAM_DBUSER or \"anonymous\"] \n");    printf(" -l2filename file output amidala filename \n");
40    printf("\n -psw             password for the DB [default = $PAM_DBPSW or \"\"]\n");    printf(" -host            name of the DB host [default = $PAM_DBHOST or mysql://localhost/pamelaprod]\n");
41    printf("\n -tzone timezone  the time zone: UTC,GMT,MSK,MSD,CET,CEST are accepted \n");    printf(" -user            username for the DB connection [default = $PAM_DBUSER or \"anonymous\"] \n");
42    printf("\n -convert dbtime  convert the dbtime given in seconds (from the DB) to a string\n");    printf(" -psw             password for the DB connection [default = $PAM_DBPSW or \"\"]\n");
43    printf("\n -runat date      returns run number which contains the given date,\n");    printf(" -splitat file    shows relationship between files around the given file\n");
44    printf("\n                  for date use the SQL format \"yyyy-mm-dd hh:mm:ss\" \n");    printf(" -tzone timezone  the time zone: UTC,GMT,MSK,MSD,CET,CEST are accepted \n");
45    printf("\n -runatDB time    returns run number which contains the given DB time\n");    printf(" -convert dbtime  convert the dbtime given in seconds (from the DB) to a string\n");
46    printf("\n -tsfile file     yoda filename for the time sync (to be used with -obt)\n");    printf(" -runat date      returns run number which contains the given date,\n");
47    printf("\n -obt OBT         OBT in ms returns a date (to be used with -tsfile)\n");    printf("                  for date use the SQL format \"yyyy-mm-dd hh:mm:ss\" \n");
48    printf("\n -dumpTLEfor date save into file tle.txt the TLE for the given date,\n");    printf(" -runatDB time    returns run number which contains the given DB time\n");
49    printf("\n                  for date use the SQL format \"yyyy-mm-dd hh:mm:ss\" \n");    printf(" -tsfile file     yoda filename for the time sync (to be used with -obt)\n");
50      printf(" -obt OBT         OBT in ms returns a date (to be used with -tsfile)\n");
51      printf(" -getRTime OBT    OBT in ms returns Resurs time (to be used with -tsfile)\n");
52      printf(" -dumpTLEfor date save into file tle.txt the TLE for the given date,\n");
53      printf("                  for date use the SQL format \"yyyy-mm-dd hh:mm:ss\" \n");
54    printf("\nExamples: \n");    printf("\nExamples: \n");
55    printf("\n R2-D2 -idRun 1085 \n");    printf("      R2-D2 -idRun 1085 \n");
56    printf("\n R2-D2 -filename DW_050208_00900.root \n");    printf("      R2-D2 -filename DW_050208_00900.root \n");
57    printf("\n R2-D2 -idRun 1085 -filename DW_050208_00900.root \n");    printf("      R2-D2 -idRun 1085 -filename DW_050208_00900.root \n\n");
58  };  };
59  //  //
60  // Here the main  // Here the main
# Line 64  int main(int numinp, char *inps[]){ Line 69  int main(int numinp, char *inps[]){
69    UInt_t run = 0ULL;    UInt_t run = 0ULL;
70    //    //
71    TString filename = "";    TString filename = "";
72      TString l2filename = "";
73      TString splitat = "";
74    //    //
75    TSQLServer *dbc = 0;    TSQLServer *dbc = 0;
76    TString host = "mysql://localhost/pamelaprod";    TString host = "mysql://localhost/pamelaprod";
# Line 87  int main(int numinp, char *inps[]){ Line 94  int main(int numinp, char *inps[]){
94    TString tletime = "1970-01-01 00:00:00";    TString tletime = "1970-01-01 00:00:00";
95    UInt_t dbti = 0;    UInt_t dbti = 0;
96    Bool_t convert = false;    Bool_t convert = false;
97      Bool_t convres = false;
98    Bool_t ruti = false;    Bool_t ruti = false;
99    Bool_t dtle = false;    Bool_t dtle = false;
100    Bool_t ruti2 = false;    Bool_t ruti2 = false;
101    Bool_t convobt = false;    Bool_t convobt = false;
102    Bool_t convobtts = false;    Bool_t convobtts = false;
103      Bool_t neat = false;
104    //    //
105    UInt_t runtime2 = 0;    UInt_t runtime2 = 0;
106    UInt_t obt = 0;    UInt_t obt = 0;
107      UInt_t res = 0;
108    TString tsfile = "";    TString tsfile = "";
109    //    //
110    TSQLResult *pResult;    TSQLResult *pResult;
111    TSQLRow *Row;    TSQLRow *Row;
112      TSQLResult *pResult2 = 0;
113      TSQLRow *Row2;
114    int t;    int t;
115    int r;    int r;
116    stringstream myquery;    stringstream myquery;
# Line 116  int main(int numinp, char *inps[]){ Line 128  int main(int numinp, char *inps[]){
128          r2d2usage();          r2d2usage();
129          exit(0);          exit(0);
130        };        };
131          if ( !strcmp(inps[i],"-n") || !strcmp(inps[i],"--neat") ){
132            neat = true;
133          };
134        if ( !strcmp(inps[i],"-idRun") ) {        if ( !strcmp(inps[i],"-idRun") ) {
135          if ( numinp-1 < i+1 ) {          if ( numinp-1 < i+1 ) {
136            r2d2usage();            r2d2usage();
# Line 130  int main(int numinp, char *inps[]){ Line 145  int main(int numinp, char *inps[]){
145          };          };
146          filename = (TString)inps[i+1];            filename = (TString)inps[i+1];  
147        };        };
148          if ( !strcmp(inps[i],"-splitat") ) {
149            if ( numinp-1 < i+1 ){
150              r2d2usage();
151              exit(-3);
152            };
153            splitat = (TString)inps[i+1];  
154          };
155          if ( !strcmp(inps[i],"-l2filename") ) {
156            if ( numinp-1 < i+1 ){
157              r2d2usage();
158              exit(-3);
159            };
160            l2filename = (TString)inps[i+1];        
161          };
162        if ( !strcmp(inps[i],"-host") ) {        if ( !strcmp(inps[i],"-host") ) {
163          if ( numinp-1 < i+1 ){          if ( numinp-1 < i+1 ){
164            r2d2usage();            r2d2usage();
# Line 170  int main(int numinp, char *inps[]){ Line 199  int main(int numinp, char *inps[]){
199          obt = (UInt_t)atoll(inps[i+1]);          obt = (UInt_t)atoll(inps[i+1]);
200        };        };
201        //        //
202         if ( !strcmp(inps[i],"-getRTime") ) {
203            convres = true;
204            if ( numinp-1 < i+1 ){
205              r2d2usage();
206              exit(-3);
207            };
208            res = (UInt_t)atoll(inps[i+1]);
209          };
210          //
211        //        //
212        if ( !strcmp(inps[i],"-tzone") ) {        if ( !strcmp(inps[i],"-tzone") ) {
213          if ( numinp-1 < i+1 ){          if ( numinp-1 < i+1 ){
# Line 239  int main(int numinp, char *inps[]){ Line 277  int main(int numinp, char *inps[]){
277      exit(-1);      exit(-1);
278    };        };    
279    //    //
280      myquery.str("");
281      myquery << "SET time_zone='+0:00'";
282      dbc->Query(myquery.str().c_str());
283      //
284    GL_ROOT *glroot = new GL_ROOT();    GL_ROOT *glroot = new GL_ROOT();
285    GL_RUN *glrun = new GL_RUN();    GL_RUN *glrun = new GL_RUN();
286    GL_TIMESYNC *dbtime = new GL_TIMESYNC();    GL_TIMESYNC *dbtime = new GL_TIMESYNC();
287      UInt_t nr = 0;
288      UInt_t rlist[500];
289    //    //
290    // At which date correspond the DB time "dbti"?    // At which date correspond the DB time "dbti"?
291    //    //
# Line 249  int main(int numinp, char *inps[]){ Line 293  int main(int numinp, char *inps[]){
293      printf("\n DB time %u is %s %s \n",dbti,dbtime->ConvertTime(tzone,dbti).Data(),tzone.Data());      printf("\n DB time %u is %s %s \n",dbti,dbtime->ConvertTime(tzone,dbti).Data(),tzone.Data());
294    };    };
295    //    //
296    //    // convert OBT to date
297    //    //
298    if ( convobt && convobtts ){    if ( convobt && convobtts ){
299      UInt_t id = 0;      UInt_t id = 0;
# Line 265  int main(int numinp, char *inps[]){ Line 309  int main(int numinp, char *inps[]){
309          delete pResult;                delete pResult;      
310          GL_TIMESYNC *ctime = new GL_TIMESYNC(id,"ID",dbc);          GL_TIMESYNC *ctime = new GL_TIMESYNC(id,"ID",dbc);
311          UInt_t abtime = ctime->DBabsTime(obt);          UInt_t abtime = ctime->DBabsTime(obt);
         TString UTC="UTC";  
312          TString thetime = dbtime->ConvertTime(tzone,abtime);          TString thetime = dbtime->ConvertTime(tzone,abtime);
313          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());          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());
314          delete ctime;          delete ctime;
315        };        };
316      };      };
317    };    };
318    if ( (convobt && !convobtts) || (convobtts && !convobt) ){    if ( (convobt && !convobtts) ){
319      printf("\n To convert a OBT to a date you must provide both OBT and file to be used for time sync \n");      printf("\n To convert a OBT to a date you must provide both OBT and file to be used for time sync \n");
320    };    };
321    //    //
322      // convert OBT to Resurs seconds
323      //
324      if ( convres && convobtts ){
325        UInt_t id = 0;
326        myquery.str("");
327        myquery << "select ";
328        myquery << " ID";
329        myquery << " from GL_ROOT where NAME=\"" << tsfile.Data() << "\";";    
330        pResult = dbc->Query(myquery.str().c_str());
331        if ( pResult ){
332          Row = pResult->Next();      
333          if ( Row ){
334            id = (UInt_t)atoll(Row->GetField(0));
335            delete pResult;      
336            GL_TIMESYNC *ctime = new GL_TIMESYNC(id,"ID",dbc);
337            UInt_t restime = ctime->ResursTime(res);
338            //UInt_t abtime = ctime->DBabsTime(obt);
339            //
340            //      TString thetime = dbtime->ConvertTime(tzone,abtime);
341            printf("\n OBT %u in the file %s corresponds to Resurs time %u  \n",res,tsfile.Data(),restime);
342            delete ctime;
343          };
344        };
345      };
346      if ( (convres && !convobtts) ){
347        printf("\n To convert a OBT to the Resurs time you must provide both OBT and file to be used for time sync \n");
348      };
349      //
350    // Which run contains the date "runtime"?    // Which run contains the date "runtime"?
351    //    //
352    if ( ruti ){    if ( ruti ){
353      //      //
354      TDatime *time = new TDatime(runtime.Data());      TDatime ti = TDatime(runtime.Data());
355      UInt_t dbti = time->Convert();      //
356        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);
357        //
358        UInt_t dbti = time->GetSec();
359      //      //
360      TString thetime = dbtime->UnConvertTime(tzone,dbti);      TString thetime = dbtime->UnConvertTime(tzone,dbti);
361      //      //
362      TDatime *time2 = new TDatime(thetime.Data());      ti = TDatime(thetime.Data());
363      UInt_t mytime = time2->Convert();      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);
364        //
365        UInt_t mytime = time2->GetSec();
366        //
367      Bool_t found = false;      Bool_t found = false;
368      //      //
369      myquery.str("");      myquery.str("");
# Line 326  int main(int numinp, char *inps[]){ Line 403  int main(int numinp, char *inps[]){
403    //    //
404    if ( dtle ){    if ( dtle ){
405      //      //
406      TDatime *time = new TDatime(tletime.Data());      //
407      UInt_t dbti = time->Convert();      TDatime ti = TDatime(tletime.Data());
408        //
409        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);
410        //
411        UInt_t dbti = time->GetSec();
412      //      //
413      TString thetime = dbtime->UnConvertTime(tzone,dbti);      TString thetime = dbtime->UnConvertTime(tzone,dbti);
414      //      //
415      TDatime *time2 = new TDatime(thetime.Data());      ti = TDatime(thetime.Data());
416      UInt_t mytime = time2->Convert();      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);
417        //
418        UInt_t mytime = time2->GetSec();
419      //      //
420      myquery.str("");      myquery.str("");
421      myquery << " select ID,TLE1,TLE2,TLE3 from GL_TLE where FROM_TIME<='" << time2->AsSQLString() << "' ORDER BY FROM_TIME DESC LIMIT 1;";      myquery << " select ID,TLE1,TLE2,TLE3 from GL_TLE where FROM_TIME<='" << time2->AsString("s") << "' ORDER BY FROM_TIME DESC LIMIT 1;";
422      //    myquery << " from GL_TLE where FROM_TIME>=" << mytime << " ORDER BY FROM_TIME ASC LIMIT 1;";      //    myquery << " from GL_TLE where FROM_TIME>=" << mytime << " ORDER BY FROM_TIME ASC LIMIT 1;";
423      //    printf("myquery is %s \n",myquery.str().c_str());      //    printf("myquery is %s \n",myquery.str().c_str());
424      pResult = dbc->Query(myquery.str().c_str());      pResult = dbc->Query(myquery.str().c_str());
# Line 413  int main(int numinp, char *inps[]){ Line 496  int main(int numinp, char *inps[]){
496          exit(-4);          exit(-4);
497        };        };
498        printf("\n Run %u belongs to file %s \n",run,(glroot->PATH+glroot->NAME).Data());        printf("\n Run %u belongs to file %s \n",run,(glroot->PATH+glroot->NAME).Data());
499          //filename = glroot->NAME;
500        found = true;        found = true;
501      };      };
502      //      //
# Line 461  int main(int numinp, char *inps[]){ Line 545  int main(int numinp, char *inps[]){
545      };      };
546      delete pResult;        delete pResult;  
547      if ( !ID && !ID_RAW ){      if ( !ID && !ID_RAW ){
548        printf("\n No file with name %s in the DB!\n",filename.Data());        if ( !neat ) printf("\n No file with name %s in the DB!\n",filename.Data());
549      } else {      } else {
550        myquery.str("");        myquery.str("");
551        myquery << "select ";        myquery << "select ";
552        myquery << " ID,RUNHEADER_TIME,RUNTRAILER_TIME ";        myquery << " ID,RUNHEADER_TIME,RUNTRAILER_TIME,NEVENTS ";
553        myquery << " from GL_RUN where ID_ROOT_L0=" << ID << ";";            myquery << " from GL_RUN where ID_ROOT_L0=" << ID << ";";    
554        pResult = dbc->Query(myquery.str().c_str());        pResult = dbc->Query(myquery.str().c_str());
555        for( r=0; r < 1000; r++){        for( r=0; r < 1000; r++){
556          Row = pResult->Next();                Row = pResult->Next();      
557          if( Row == NULL ) break;          if( Row == NULL ) break;
558          found = true;          found = true;
559          if ( !r ) printf("\n File %s contains the following runs: \n\n",filename.Data());          if ( !r && !neat ) printf("\n File %s contains the following runs: \n\n",filename.Data());
560          TString UTC="UTC";          TString UTC=tzone.Data();
561          printf(" => ID = %i _-_-_ the run started at %s UTC ended at %s UTC \n\n",(UInt_t)atoll(Row->GetField(0)),dbtime->ConvertTime(UTC,(UInt_t)atoll(Row->GetField(1))).Data(),dbtime->ConvertTime(UTC,(UInt_t)atoll(Row->GetField(2))).Data());          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)));
562            if ( neat ) printf("%u\n",(UInt_t)atoll(Row->GetField(0)));
563        };        };
564        delete pResult;          delete pResult;  
565        myquery.str("");        myquery.str("");
# Line 485  int main(int numinp, char *inps[]){ Line 570  int main(int numinp, char *inps[]){
570        for( r=0; r < 1000; r++){        for( r=0; r < 1000; r++){
571          Row = pResult->Next();                Row = pResult->Next();      
572          if( Row == NULL ) break;          if( Row == NULL ) break;
573          if ( !r ) printf("\n File %s contains the following DELETED runs: \n\n",filename.Data());          if ( !r && !neat ) printf("\n File %s contains the following DELETED runs: \n\n",filename.Data());
574          TString UTC="UTC";          TString UTC=tzone.Data();
575          printf(" => ID = %i _-_-_ the run started at %s UTC ended at %s UTC \n\n",(UInt_t)atoll(Row->GetField(0)),dbtime->ConvertTime(UTC,(UInt_t)atoll(Row->GetField(1))).Data(),dbtime->ConvertTime(UTC,(UInt_t)atoll(Row->GetField(2))).Data());          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());
576        };        };
577        //        //
578        if ( !found ){        if ( !found ){
579          printf("\n No run associated to the file %s \n",filename.Data());          if ( !neat ) printf("\n No run associated to the file %s \n",filename.Data());
580        };        };
581        myquery.str("");        myquery.str("");
582        myquery << "select ";        myquery << "select ";
# Line 507  int main(int numinp, char *inps[]){ Line 592  int main(int numinp, char *inps[]){
592          };          };
593        };        };
594        delete pResult;          delete pResult;  
595        printf("\n File %s belongs to raw data file %s/%s \n",filename.Data(),rawpath,rawname);        if ( !neat ) printf("\n File %s belongs to raw data file %s/%s \n",filename.Data(),rawpath,rawname);
596      };      };
597    };      };  
598    //    //
599      // Which runs are contained in the file "l2filename"?
600      //
601      if ( strcmp(l2filename.Data(),"") ){
602        // ----------------
603        Bool_t found = false;
604        Int_t ID = 0;
605        Int_t ID_RAW = 0;
606        //    
607        const char *rawpath = "";
608        const char *rawname = "";
609        //
610        myquery.str("");
611        myquery << "select ";
612        myquery << " ID";
613        myquery << ",ID_RAW";
614        myquery << ",PATH";
615        myquery << ",NAME";
616        myquery << " from GL_ROOT where NAME=\"" << l2filename.Data() << "\" order by INSERT_TIME desc limit 1;";    
617        pResult = dbc->Query(myquery.str().c_str());
618        for( r=0; r < 1000; r++){
619          Row = pResult->Next();      
620          if( Row == NULL ) break;
621          for( t = 0; t < pResult->GetFieldCount(); t++){
622            if(t==0) ID     = atoi(Row->GetField(t));
623            if(t==1) ID_RAW = atoi(Row->GetField(t));
624          };
625        };
626        delete pResult;  
627        if ( !ID ){
628          printf("\n No file with name %s in the DB!\n",l2filename.Data());
629        } else {
630          nr = 0;
631          rlist[0] = 0;
632          myquery.str("");
633          myquery << "select ";
634          myquery << " ID,ID_ROOT_L0 ";
635          myquery << " from GL_RUN where ID_ROOT_L2=" << ID << ";";    
636          pResult = dbc->Query(myquery.str().c_str());
637          for( r=0; r < pResult->GetRowCount(); r++){
638            Row = pResult->Next();      
639            if( Row == NULL ) break;
640            found = true;
641            if ( !r ) printf("\n File %s contains the following runs: \n\n",l2filename.Data());
642            printf(" %u ",(UInt_t)atoll(Row->GetField(0)));
643            if ( r < (pResult->GetRowCount()-1) ){
644              printf("-");
645            } else {
646              printf("\n\n");
647            };
648            if ( (UInt_t)atoll(Row->GetField(1)) != rlist[nr] ){
649              nr++;
650              rlist[nr] = (UInt_t)atoll(Row->GetField(1));
651            };
652          };
653          delete pResult;  
654          //
655          printf("\n File %s contains runs from L0 files: \n\n",l2filename.Data());
656          for (UInt_t l=1; l<nr+1; l++){
657            myquery.str("");
658            myquery << "select ";
659            myquery << " PATH,NAME";
660            myquery << " from GL_ROOT where ID=" << rlist[l] << ";";    
661            pResult = dbc->Query(myquery.str().c_str());
662            for( r=0; r < pResult->GetRowCount(); r++){
663              Row = pResult->Next();      
664              if( Row == NULL ) break;
665              for( t = 0; t < pResult->GetFieldCount(); t++){
666                if(t==0) rawpath = Row->GetField(t);
667                if(t==1) rawname = Row->GetField(t);
668            };
669              printf(" %s/%s \n",rawpath,rawname);
670            };
671            delete pResult;  
672          };
673        };
674      };  
675      //
676      //
677      // Show relationship between files around file "splitat"
678      //
679      if ( strcmp(splitat.Data(),"") ){
680        // ----------------
681        Int_t ID = 0;
682        Int_t IDR = 0;
683        TString PATH;
684        TString NAME;
685        UInt_t atime1 = 0;
686        UInt_t atime2 = 0;
687        //    
688        myquery.str("");
689        myquery << " select ID,PATH,NAME from GL_ROOT where NAME>=\"" << splitat.Data() << "\" order by NAME asc limit 20;";    
690        //    printf(" myquery is %s \n",myquery.str().c_str());
691        pResult = dbc->Query(myquery.str().c_str());
692        GL_TIMESYNC *dbtime;
693        GL_S4_CALIB *glS4calib;
694        GL_ROOT *glroot;
695        for( r=0; r < 1000; r++){
696          Row = pResult->Next();      
697          if( Row == NULL ) break;
698          Int_t s=0;
699          Int_t t=0;
700          Int_t c=0;
701          TString *s4files[500];
702          TString *tfiles[500];
703          TString *cfiles[2000];
704          ID     = atoi(Row->GetField(0));
705          PATH = Row->GetField(1);
706          NAME = Row->GetField(2);
707          printf("\n FILE: %s/%s \n",PATH.Data(),NAME.Data());
708          myquery.str("");
709          myquery << " select ID,RUNHEADER_OBT,RUNTRAILER_OBT from GL_RUN where ID_ROOT_L0=" << ID << ";";    
710          pResult2 = dbc->Query(myquery.str().c_str());
711          for( Int_t run=0; run < pResult2->GetRowCount(); run++){
712            Row2 = pResult2->Next();      
713            if( Row2 == NULL ) break;
714            IDR = atoi(Row2->GetField(0));
715            //
716            // here we make queries to DB looking for needed files and print results
717            //
718            dbtime = new GL_TIMESYNC(ID,"ID",dbc);
719            //
720            atime1 = dbtime->DBabsTime((UInt_t)atoll(Row2->GetField(1)));  
721            atime2 = dbtime->DBabsTime((UInt_t)atoll(Row2->GetField(2)));  
722            //      printf(" atime1 %u atime2 %u field 1 %s field2 %s \n",atime1,atime2,Row2->GetField(1),Row2->GetField(2));
723            //
724            // S4
725            //
726            glS4calib = new GL_S4_CALIB();
727            glS4calib->Query_GL_S4_CALIB(atime1, dbc);
728            glroot = new GL_ROOT();
729            glroot->Query_GL_ROOT(glS4calib->ID_ROOT_L0,dbc);
730            //
731            if ( s > 0 ){
732              Bool_t found = false;
733              for (Int_t g=0; g<s; g++){
734                if ( !strcmp(glroot->NAME.Data(),s4files[g]->Data()) ){
735                  found = true;
736                };
737              };
738              if ( !found && strcmp(glroot->NAME.Data(),NAME.Data()) ){
739                s4files[s] = new TString(glroot->NAME.Data());
740                s++;
741              };
742            } else {
743              if ( strcmp(glroot->NAME.Data(),NAME.Data()) ){
744                s4files[s] = new TString(glroot->NAME.Data());
745                s++;
746              };
747            };
748            //
749            delete glS4calib;
750            delete dbtime;
751            delete glroot;
752            //
753            // TRACKER
754            //
755            GL_TRK_CALIB q2;
756            q2.Query_GL_TRK_CALIB(atime1,dbc);
757            GL_ROOT q3;
758            q3.Query_GL_ROOT(q2.ID_ROOT_L0,dbc);
759            //
760            if ( t > 0 ){
761              Bool_t found = false;
762              for (Int_t gt=0; gt<t; gt++){
763                if ( !strcmp(q3.NAME.Data(),tfiles[gt]->Data()) ){
764                  found = true;
765                };
766              };
767              if ( !found && strcmp(q3.NAME.Data(),NAME.Data()) ){
768                tfiles[t] = new TString(q3.NAME.Data());
769                t++;
770              };
771            } else {
772              if ( strcmp(q3.NAME.Data(),NAME.Data()) ){
773                tfiles[t] = new TString(q3.NAME.Data());
774                t++;
775              };
776            };
777            //
778            // CALO
779            //
780            GL_CALO_CALIB *glcalo = new GL_CALO_CALIB();
781            GL_CALOPULSE_CALIB *glp = new GL_CALOPULSE_CALIB();
782            GL_ROOT *glroot = new GL_ROOT();  
783            //
784            for (Int_t sc=0; sc<4; sc++){
785              //
786              UInt_t pampli = 0;
787              glcalo->Query_GL_CALO_CALIB(atime1,pampli,sc,dbc);
788              glroot->Query_GL_ROOT(glcalo->ID_ROOT_L0,dbc);
789              if ( c > 0 ){
790                Bool_t found = false;
791                for (Int_t gt=0; gt<c; gt++){
792                  if ( !strcmp(glroot->NAME.Data(),cfiles[gt]->Data()) ){
793                    found = true;
794                  };
795                };
796                if ( !found && strcmp(glroot->NAME.Data(),NAME.Data()) ){
797                  cfiles[c] = new TString(glroot->NAME.Data());
798                  c++;
799                };
800              } else {
801                if ( strcmp(glroot->NAME.Data(),NAME.Data()) ){
802                  cfiles[c] = new TString(glroot->NAME.Data());
803                  c++;
804                };
805              };
806              //
807              pampli = 0;
808              glcalo->Query_GL_CALO_CALIB(atime2,pampli,sc,dbc);
809              glroot->Query_GL_ROOT(glcalo->ID_ROOT_L0,dbc);
810              if ( c > 0 ){
811                Bool_t found = false;
812                for (Int_t gt=0; gt<c; gt++){
813                  if ( !strcmp(glroot->NAME.Data(),cfiles[gt]->Data()) ){
814                    found = true;
815                  };
816                };
817                if ( !found && strcmp(glroot->NAME.Data(),NAME.Data()) ){
818                  cfiles[c] = new TString(glroot->NAME.Data());
819                  c++;
820                };
821              } else {
822                if ( strcmp(glroot->NAME.Data(),NAME.Data()) ){
823                  cfiles[c] = new TString(glroot->NAME.Data());
824                  c++;
825                };
826              };
827              //
828              pampli = 2;
829              glp->Query_GL_CALOPULSE_CALIB(atime1,sc,pampli,dbc);
830              glroot->Query_GL_ROOT(glp->ID_ROOT_L0,dbc);
831              if ( c > 0 ){
832                Bool_t found = false;
833                for (Int_t gt=0; gt<c; gt++){
834                  if ( !strcmp(glroot->NAME.Data(),cfiles[gt]->Data()) ){
835                    found = true;
836                  };
837                };
838                if ( !found && strcmp(glroot->NAME.Data(),NAME.Data()) ){
839                  cfiles[c] = new TString(glroot->NAME.Data());
840                  c++;
841                };
842              } else {
843                if ( strcmp(glroot->NAME.Data(),NAME.Data()) ){
844                  cfiles[c] = new TString(glroot->NAME.Data());
845                  c++;
846                };
847              };
848              //
849              pampli = 0;
850              glp->Query_GL_CALOPULSE_CALIB(atime1,sc,pampli,dbc);
851              glroot->Query_GL_ROOT(glp->ID_ROOT_L0,dbc);
852              if ( c > 0 ){
853                Bool_t found = false;
854                for (Int_t gt=0; gt<c; gt++){
855                  if ( !strcmp(glroot->NAME.Data(),cfiles[gt]->Data()) ){
856                    found = true;
857                  };
858                };
859                if ( !found && strcmp(glroot->NAME.Data(),NAME.Data()) ){
860                  cfiles[c] = new TString(glroot->NAME.Data());
861                  c++;
862                };
863              } else {
864                if ( strcmp(glroot->NAME.Data(),NAME.Data()) ){
865                  cfiles[c] = new TString(glroot->NAME.Data());
866                  c++;
867                };
868              };
869              //
870              pampli = 2;
871              glp->Query_GL_CALOPULSE_CALIB(atime2,sc,pampli,dbc);
872              glroot->Query_GL_ROOT(glp->ID_ROOT_L0,dbc);
873              if ( c > 0 ){
874                Bool_t found = false;
875                for (Int_t gt=0; gt<c; gt++){
876                  if ( !strcmp(glroot->NAME.Data(),cfiles[gt]->Data()) ){
877                    found = true;
878                  };
879                };
880                if ( !found && strcmp(glroot->NAME.Data(),NAME.Data()) ){
881                  cfiles[c] = new TString(glroot->NAME.Data());
882                  c++;
883                };
884              } else {
885                if ( strcmp(glroot->NAME.Data(),NAME.Data()) ){
886                  cfiles[c] = new TString(glroot->NAME.Data());
887                  c++;
888                };
889              };
890              //
891              pampli = 0;
892              glp->Query_GL_CALOPULSE_CALIB(atime2,sc,pampli,dbc);
893              glroot->Query_GL_ROOT(glp->ID_ROOT_L0,dbc);
894              if ( c > 0 ){
895                Bool_t found = false;
896                for (Int_t gt=0; gt<c; gt++){
897                  if ( !strcmp(glroot->NAME.Data(),cfiles[gt]->Data()) ){
898                    found = true;
899                  };
900                };
901                if ( !found && strcmp(glroot->NAME.Data(),NAME.Data()) ){
902                  cfiles[c] = new TString(glroot->NAME.Data());
903                  c++;
904                };
905              } else {
906                if ( strcmp(glroot->NAME.Data(),NAME.Data()) ){
907                  cfiles[c] = new TString(glroot->NAME.Data());
908                  c++;
909                };
910              };
911              //
912            };
913          };
914          printf(" S4 requires:");
915          for (Int_t f=0;f<s; f++){
916            printf(" %s",s4files[f]->Data());
917            delete s4files[f];
918          };      
919          printf("\n");
920          printf(" Tracker requires:");
921          for (Int_t f=0;f<t; f++){
922            printf(" %s",tfiles[f]->Data());
923            delete tfiles[f];
924          };      
925          printf("\n");
926          printf(" Calorimeter requires:");
927          for (Int_t f=0;f<c; f++){
928            printf(" %s",cfiles[f]->Data());
929            delete cfiles[f];
930          };      
931          printf("\n\n#################################################\n");
932          //
933        };
934        delete pResult;  
935        if ( pResult2 ) delete pResult2;  
936      };  
937      //
938    // Close the DB connection    // Close the DB connection
939    //    //
940    if ( dbc ) dbc->Close();    if ( dbc ) dbc->Close();
941    //    //
942    printf("\n");    if ( !neat ) printf("\n");
943    //    //
944    exit(0);    exit(0);
945  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.23