--- YodaProfiler/src/R2-D2.cpp 2006/10/31 15:36:05 1.1 +++ YodaProfiler/src/R2-D2.cpp 2008/03/04 15:21:56 1.15 @@ -9,6 +9,7 @@ // ROOT headers // #include +#include #include #include #include @@ -27,29 +28,35 @@ // void r2d2usage(){ printf("\nUsage:\n"); - printf("\n R2-D2 [-h | --help] [--version] [-idRun ID_RUN] [-filename filename]\n"); - printf("\n [-host host] [-user username] [-psw password] \n"); - printf("\n --version print informations about compilation and exit\n"); - printf("\n -h | --help print this help and exit \n"); - printf("\n -v | --verbose be verbose [default: print nothing on STDOUT]\n"); - printf("\n -idRun run ID_RUN: ID number of the run \n"); - printf("\n -filename file output yoda filename \n"); - printf("\n -host name for the host [default = $PAM_DBHOST or mysql://localhost/pamelaprod]\n"); - printf("\n -user username for the DB [default = $PAM_DBUSER or \"anonymous\"] \n"); - printf("\n -psw password for the DB [default = $PAM_DBPSW or \"\"]\n"); - printf("\n -tzone timezone the time zone: UTC,GMT,MSK,MSD,CET,CEST are accepted \n"); - printf("\n -convert dbtime convert the dbtime given in seconds (from the DB) to a string\n"); - printf("\n -runat date returns run number which contains the given date,\n"); - printf("\n for date use the SQL format \"yyyy-mm-dd hh:mm:ss\" \n"); - printf("\n -runatDB time returns run number which contains the given DB time\n"); - printf("\n -tsfile file yoda filename for the time sync (to be used with -obt)\n"); - printf("\n -obt OBT OBT in ms returns a date (to be used with -tsfile)\n"); - printf("\n -dumpTLEfor date save into file tle.txt the TLE for the given date,\n"); - printf("\n for date use the SQL format \"yyyy-mm-dd hh:mm:ss\" \n"); + printf("\n R2-D2 [ options ]\n"); + printf("\n Options are:\n\n"); + printf(" --version print informations about compilation and exit\n"); + printf(" -h | --help print this help and exit \n"); + printf(" -v | --verbose be verbose [default]\n"); + printf(" -n | --neat used with '-filename' returns only the run ID number\n"); + printf(" -idRun run ID_RUN: ID number of the run \n"); + printf(" -filename file output yoda filename \n"); + printf(" -l2filename file output amidala filename \n"); + printf(" -host name of the DB host [default = $PAM_DBHOST or mysql://localhost/pamelaprod]\n"); + printf(" -user username for the DB connection [default = $PAM_DBUSER or \"anonymous\"] \n"); + printf(" -psw password for the DB connection [default = $PAM_DBPSW or \"\"]\n"); + printf(" -deps file shows dependencies of the given file\n"); + printf(" -splitat file shows dependenices of the given file and the following files (given by -nsplit)\n"); + printf(" -nsplit number number of files to be shown by -splitat [default 20]\n"); + printf(" -tzone timezone the time zone: UTC,GMT,MSK,MSD,CET,CEST are accepted \n"); + printf(" -convert dbtime convert the dbtime given in seconds (from the DB) to a string\n"); + printf(" -runat date returns run number which contains the given date,\n"); + printf(" for date use the SQL format \"yyyy-mm-dd hh:mm:ss\" \n"); + printf(" -runatDB time returns run number which contains the given DB time\n"); + printf(" -tsfile file yoda filename for the time sync (to be used with -obt)\n"); + printf(" -obt OBT OBT in ms returns a date (to be used with -tsfile)\n"); + printf(" -getRTime OBT OBT in ms returns Resurs time (to be used with -tsfile)\n"); + printf(" -dumpTLEfor date save into file tle.txt the TLE for the given date,\n"); + printf(" for date use the SQL format \"yyyy-mm-dd hh:mm:ss\" \n"); printf("\nExamples: \n"); - printf("\n R2-D2 -idRun 1085 \n"); - printf("\n R2-D2 -filename DW_050208_00900.root \n"); - printf("\n R2-D2 -idRun 1085 -filename DW_050208_00900.root \n"); + printf(" R2-D2 -idRun 1085 \n"); + printf(" R2-D2 -filename DW_050208_00900.root \n"); + printf(" R2-D2 -idRun 1085 -filename DW_050208_00900.root \n\n"); }; // // Here the main @@ -64,6 +71,9 @@ UInt_t run = 0ULL; // TString filename = ""; + TString l2filename = ""; + TString splitat = ""; + UInt_t nsplit = 20; // TSQLServer *dbc = 0; TString host = "mysql://localhost/pamelaprod"; @@ -87,18 +97,23 @@ TString tletime = "1970-01-01 00:00:00"; UInt_t dbti = 0; Bool_t convert = false; + Bool_t convres = false; Bool_t ruti = false; Bool_t dtle = false; Bool_t ruti2 = false; Bool_t convobt = false; Bool_t convobtts = false; + Bool_t neat = false; // UInt_t runtime2 = 0; UInt_t obt = 0; + UInt_t res = 0; TString tsfile = ""; // TSQLResult *pResult; TSQLRow *Row; + TSQLResult *pResult2 = 0; + TSQLRow *Row2; int t; int r; stringstream myquery; @@ -116,6 +131,9 @@ r2d2usage(); exit(0); }; + if ( !strcmp(inps[i],"-n") || !strcmp(inps[i],"--neat") ){ + neat = true; + }; if ( !strcmp(inps[i],"-idRun") ) { if ( numinp-1 < i+1 ) { r2d2usage(); @@ -130,6 +148,36 @@ }; filename = (TString)inps[i+1]; }; + if ( !strcmp(inps[i],"-splitat") ) { + if ( numinp-1 < i+1 ){ + r2d2usage(); + exit(-3); + }; + splitat = (TString)inps[i+1]; + }; + // + if ( !strcmp(inps[i],"-nsplit") ) { + if ( numinp-1 < i+1 ){ + r2d2usage(); + exit(-3); + }; + nsplit = (UInt_t)atoll(inps[i+1]); + }; + if ( !strcmp(inps[i],"-deps") ) { + if ( numinp-1 < i+1 ){ + r2d2usage(); + exit(-3); + }; + nsplit = 1; + splitat = (TString)inps[i+1]; + }; + if ( !strcmp(inps[i],"-l2filename") ) { + if ( numinp-1 < i+1 ){ + r2d2usage(); + exit(-3); + }; + l2filename = (TString)inps[i+1]; + }; if ( !strcmp(inps[i],"-host") ) { if ( numinp-1 < i+1 ){ r2d2usage(); @@ -170,6 +218,15 @@ obt = (UInt_t)atoll(inps[i+1]); }; // + if ( !strcmp(inps[i],"-getRTime") ) { + convres = true; + if ( numinp-1 < i+1 ){ + r2d2usage(); + exit(-3); + }; + res = (UInt_t)atoll(inps[i+1]); + }; + // // if ( !strcmp(inps[i],"-tzone") ) { if ( numinp-1 < i+1 ){ @@ -239,9 +296,15 @@ exit(-1); }; // + myquery.str(""); + myquery << "SET time_zone='+0:00'"; + dbc->Query(myquery.str().c_str()); + // GL_ROOT *glroot = new GL_ROOT(); GL_RUN *glrun = new GL_RUN(); GL_TIMESYNC *dbtime = new GL_TIMESYNC(); + UInt_t nr = 0; + UInt_t rlist[500]; // // At which date correspond the DB time "dbti"? // @@ -249,7 +312,7 @@ printf("\n DB time %u is %s %s \n",dbti,dbtime->ConvertTime(tzone,dbti).Data(),tzone.Data()); }; // - // + // convert OBT to date // if ( convobt && convobtts ){ UInt_t id = 0; @@ -265,28 +328,61 @@ delete pResult; GL_TIMESYNC *ctime = new GL_TIMESYNC(id,"ID",dbc); UInt_t abtime = ctime->DBabsTime(obt); - TString UTC="UTC"; TString thetime = dbtime->ConvertTime(tzone,abtime); 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()); delete ctime; }; }; }; - if ( (convobt && !convobtts) || (convobtts && !convobt) ){ + if ( (convobt && !convobtts) ){ printf("\n To convert a OBT to a date you must provide both OBT and file to be used for time sync \n"); }; // + // convert OBT to Resurs seconds + // + if ( convres && convobtts ){ + UInt_t id = 0; + myquery.str(""); + myquery << "select "; + myquery << " ID"; + myquery << " from GL_ROOT where NAME=\"" << tsfile.Data() << "\";"; + pResult = dbc->Query(myquery.str().c_str()); + if ( pResult ){ + Row = pResult->Next(); + if ( Row ){ + id = (UInt_t)atoll(Row->GetField(0)); + delete pResult; + GL_TIMESYNC *ctime = new GL_TIMESYNC(id,"ID",dbc); + UInt_t restime = ctime->ResursTime(res); + //UInt_t abtime = ctime->DBabsTime(obt); + // + // TString thetime = dbtime->ConvertTime(tzone,abtime); + printf("\n OBT %u in the file %s corresponds to Resurs time %u \n",res,tsfile.Data(),restime); + delete ctime; + }; + }; + }; + if ( (convres && !convobtts) ){ + printf("\n To convert a OBT to the Resurs time you must provide both OBT and file to be used for time sync \n"); + }; + // // Which run contains the date "runtime"? // if ( ruti ){ // - TDatime *time = new TDatime(runtime.Data()); - UInt_t dbti = time->Convert(); + TDatime ti = TDatime(runtime.Data()); + // + 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); + // + UInt_t dbti = time->GetSec(); // TString thetime = dbtime->UnConvertTime(tzone,dbti); // - TDatime *time2 = new TDatime(thetime.Data()); - UInt_t mytime = time2->Convert(); + ti = TDatime(thetime.Data()); + 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); + // + UInt_t mytime = time2->GetSec(); + // Bool_t found = false; // myquery.str(""); @@ -326,16 +422,22 @@ // if ( dtle ){ // - TDatime *time = new TDatime(tletime.Data()); - UInt_t dbti = time->Convert(); + // + TDatime ti = TDatime(tletime.Data()); + // + 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); + // + UInt_t dbti = time->GetSec(); // TString thetime = dbtime->UnConvertTime(tzone,dbti); // - TDatime *time2 = new TDatime(thetime.Data()); - UInt_t mytime = time2->Convert(); + ti = TDatime(thetime.Data()); + 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); + // + UInt_t mytime = time2->GetSec(); // myquery.str(""); - 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;"; // myquery << " from GL_TLE where FROM_TIME>=" << mytime << " ORDER BY FROM_TIME ASC LIMIT 1;"; // printf("myquery is %s \n",myquery.str().c_str()); pResult = dbc->Query(myquery.str().c_str()); @@ -413,6 +515,7 @@ exit(-4); }; printf("\n Run %u belongs to file %s \n",run,(glroot->PATH+glroot->NAME).Data()); + //filename = glroot->NAME; found = true; }; // @@ -461,20 +564,21 @@ }; delete pResult; if ( !ID && !ID_RAW ){ - 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()); } else { myquery.str(""); myquery << "select "; - myquery << " ID,RUNHEADER_TIME,RUNTRAILER_TIME "; + myquery << " ID,RUNHEADER_TIME,RUNTRAILER_TIME,NEVENTS "; myquery << " from GL_RUN where ID_ROOT_L0=" << ID << ";"; pResult = dbc->Query(myquery.str().c_str()); for( r=0; r < 1000; r++){ Row = pResult->Next(); if( Row == NULL ) break; found = true; - if ( !r ) printf("\n File %s contains the following runs: \n\n",filename.Data()); - TString UTC="UTC"; - 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 ( !r && !neat ) printf("\n File %s contains the following runs: \n\n",filename.Data()); + TString UTC=tzone.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))); + if ( neat ) printf("%u\n",(UInt_t)atoll(Row->GetField(0))); }; delete pResult; myquery.str(""); @@ -485,13 +589,13 @@ for( r=0; r < 1000; r++){ Row = pResult->Next(); if( Row == NULL ) break; - if ( !r ) printf("\n File %s contains the following DELETED runs: \n\n",filename.Data()); - TString UTC="UTC"; - 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 ( !r && !neat ) printf("\n File %s contains the following DELETED runs: \n\n",filename.Data()); + TString UTC=tzone.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()); }; // if ( !found ){ - 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()); }; myquery.str(""); myquery << "select "; @@ -507,15 +611,362 @@ }; }; delete pResult; - 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); }; }; // + // Which runs are contained in the file "l2filename"? + // + if ( strcmp(l2filename.Data(),"") ){ + // ---------------- + Bool_t found = false; + Int_t ID = 0; + Int_t ID_RAW = 0; + // + const char *rawpath = ""; + const char *rawname = ""; + // + myquery.str(""); + myquery << "select "; + myquery << " ID"; + myquery << ",ID_RAW"; + myquery << ",PATH"; + myquery << ",NAME"; + myquery << " from GL_ROOT where NAME=\"" << l2filename.Data() << "\" order by INSERT_TIME desc limit 1;"; + pResult = dbc->Query(myquery.str().c_str()); + for( r=0; r < 1000; r++){ + Row = pResult->Next(); + if( Row == NULL ) break; + for( t = 0; t < pResult->GetFieldCount(); t++){ + if(t==0) ID = atoi(Row->GetField(t)); + if(t==1) ID_RAW = atoi(Row->GetField(t)); + }; + }; + delete pResult; + if ( !ID ){ + printf("\n No file with name %s in the DB!\n",l2filename.Data()); + } else { + nr = 0; + rlist[0] = 0; + myquery.str(""); + myquery << "select "; + myquery << " ID,ID_ROOT_L0 "; + myquery << " from GL_RUN where ID_ROOT_L2=" << ID << ";"; + pResult = dbc->Query(myquery.str().c_str()); + for( r=0; r < pResult->GetRowCount(); r++){ + Row = pResult->Next(); + if( Row == NULL ) break; + found = true; + if ( !r ) printf("\n File %s contains the following runs: \n\n",l2filename.Data()); + printf(" %u ",(UInt_t)atoll(Row->GetField(0))); + if ( r < (pResult->GetRowCount()-1) ){ + printf("-"); + } else { + printf("\n\n"); + }; + if ( (UInt_t)atoll(Row->GetField(1)) != rlist[nr] ){ + nr++; + rlist[nr] = (UInt_t)atoll(Row->GetField(1)); + }; + }; + delete pResult; + // + printf("\n File %s contains runs from L0 files: \n\n",l2filename.Data()); + for (UInt_t l=1; lQuery(myquery.str().c_str()); + for( r=0; r < pResult->GetRowCount(); r++){ + Row = pResult->Next(); + if( Row == NULL ) break; + for( t = 0; t < pResult->GetFieldCount(); t++){ + if(t==0) rawpath = Row->GetField(t); + if(t==1) rawname = Row->GetField(t); + }; + printf(" %s/%s \n",rawpath,rawname); + }; + delete pResult; + }; + }; + }; + // + // + // Show relationship between files around file "splitat" + // + if ( strcmp(splitat.Data(),"") ){ + // ---------------- + Int_t ID = 0; + Int_t IDR = 0; + TString PATH; + TString NAME; + UInt_t atime1 = 0; + UInt_t atime2 = 0; + UInt_t minid = 0; + UInt_t maxid = 0; + // + myquery.str(""); + myquery << " select ID,PATH,NAME from GL_ROOT where NAME>=\"" << splitat.Data() << "\" order by NAME asc limit " << nsplit << ";"; + // printf(" myquery is %s \n",myquery.str().c_str()); + pResult = dbc->Query(myquery.str().c_str()); + GL_TIMESYNC *dbtime; + GL_S4_CALIB *glS4calib; + GL_ROOT *glroot; + for( r=0; r < 1000; r++){ + Row = pResult->Next(); + if( Row == NULL ) break; + printf("\n\n#################################################\n"); + Int_t s=0; + Int_t t=0; + Int_t c=0; + TString *s4files[500]; + TString *tfiles[500]; + TString *cfiles[2000]; + ID = atoi(Row->GetField(0)); + PATH = Row->GetField(1); + NAME = Row->GetField(2); + printf("\n FILE: %s/%s \n",PATH.Data(),NAME.Data()); + myquery.str(""); + myquery << " select ID,RUNHEADER_OBT,RUNTRAILER_OBT from GL_RUN where ID_ROOT_L0=" << ID << " order by ID;"; + pResult2 = dbc->Query(myquery.str().c_str()); + for( Int_t run=0; run < pResult2->GetRowCount(); run++){ + Row2 = pResult2->Next(); + if( Row2 == NULL ) break; + IDR = atoi(Row2->GetField(0)); + if ( run == 0 ) minid = IDR; + if ( run == pResult2->GetRowCount()-1 ) maxid = IDR; + // + // here we make queries to DB looking for needed files and print results + // + dbtime = new GL_TIMESYNC(ID,"ID",dbc); + // + atime1 = dbtime->DBabsTime((UInt_t)atoll(Row2->GetField(1))); + atime2 = dbtime->DBabsTime((UInt_t)atoll(Row2->GetField(2))); + // printf(" atime1 %u atime2 %u field 1 %s field2 %s \n",atime1,atime2,Row2->GetField(1),Row2->GetField(2)); + // + // S4 + // + glS4calib = new GL_S4_CALIB(); + glS4calib->Query_GL_S4_CALIB(atime1, dbc); + glroot = new GL_ROOT(); + glroot->Query_GL_ROOT(glS4calib->ID_ROOT_L0,dbc); + // + if ( s > 0 ){ + Bool_t found = false; + for (Int_t g=0; gNAME.Data(),s4files[g]->Data()) ){ + found = true; + }; + }; + if ( !found && strcmp(glroot->NAME.Data(),NAME.Data()) ){ + s4files[s] = new TString(glroot->NAME.Data()); + s++; + }; + } else { + if ( strcmp(glroot->NAME.Data(),NAME.Data()) ){ + s4files[s] = new TString(glroot->NAME.Data()); + s++; + }; + }; + // + delete glS4calib; + delete dbtime; + delete glroot; + // + // TRACKER + // + GL_TRK_CALIB q2; + q2.Query_GL_TRK_CALIB(atime1,dbc); + GL_ROOT q3; + q3.Query_GL_ROOT(q2.ID_ROOT_L0,dbc); + // + if ( t > 0 ){ + Bool_t found = false; + for (Int_t gt=0; gtData()) ){ + found = true; + }; + }; + if ( !found && strcmp(q3.NAME.Data(),NAME.Data()) ){ + tfiles[t] = new TString(q3.NAME.Data()); + t++; + }; + } else { + if ( strcmp(q3.NAME.Data(),NAME.Data()) ){ + tfiles[t] = new TString(q3.NAME.Data()); + t++; + }; + }; + // + // CALO + // + GL_CALO_CALIB *glcalo = new GL_CALO_CALIB(); + GL_CALOPULSE_CALIB *glp = new GL_CALOPULSE_CALIB(); + GL_ROOT *glroot = new GL_ROOT(); + // + for (Int_t sc=0; sc<4; sc++){ + // + UInt_t pampli = 0; + glcalo->Query_GL_CALO_CALIB(atime1,pampli,sc,dbc); + glroot->Query_GL_ROOT(glcalo->ID_ROOT_L0,dbc); + if ( c > 0 ){ + Bool_t found = false; + for (Int_t gt=0; gtNAME.Data(),cfiles[gt]->Data()) ){ + found = true; + }; + }; + if ( !found && strcmp(glroot->NAME.Data(),NAME.Data()) ){ + cfiles[c] = new TString(glroot->NAME.Data()); + c++; + }; + } else { + if ( strcmp(glroot->NAME.Data(),NAME.Data()) ){ + cfiles[c] = new TString(glroot->NAME.Data()); + c++; + }; + }; + // + pampli = 0; + glcalo->Query_GL_CALO_CALIB(atime2,pampli,sc,dbc); + glroot->Query_GL_ROOT(glcalo->ID_ROOT_L0,dbc); + if ( c > 0 ){ + Bool_t found = false; + for (Int_t gt=0; gtNAME.Data(),cfiles[gt]->Data()) ){ + found = true; + }; + }; + if ( !found && strcmp(glroot->NAME.Data(),NAME.Data()) ){ + cfiles[c] = new TString(glroot->NAME.Data()); + c++; + }; + } else { + if ( strcmp(glroot->NAME.Data(),NAME.Data()) ){ + cfiles[c] = new TString(glroot->NAME.Data()); + c++; + }; + }; + // + pampli = 2; + glp->Query_GL_CALOPULSE_CALIB(atime1,sc,pampli,dbc); + glroot->Query_GL_ROOT(glp->ID_ROOT_L0,dbc); + if ( c > 0 ){ + Bool_t found = false; + for (Int_t gt=0; gtNAME.Data(),cfiles[gt]->Data()) ){ + found = true; + }; + }; + if ( !found && strcmp(glroot->NAME.Data(),NAME.Data()) ){ + cfiles[c] = new TString(glroot->NAME.Data()); + c++; + }; + } else { + if ( strcmp(glroot->NAME.Data(),NAME.Data()) ){ + cfiles[c] = new TString(glroot->NAME.Data()); + c++; + }; + }; + // + pampli = 0; + glp->Query_GL_CALOPULSE_CALIB(atime1,sc,pampli,dbc); + glroot->Query_GL_ROOT(glp->ID_ROOT_L0,dbc); + if ( c > 0 ){ + Bool_t found = false; + for (Int_t gt=0; gtNAME.Data(),cfiles[gt]->Data()) ){ + found = true; + }; + }; + if ( !found && strcmp(glroot->NAME.Data(),NAME.Data()) ){ + cfiles[c] = new TString(glroot->NAME.Data()); + c++; + }; + } else { + if ( strcmp(glroot->NAME.Data(),NAME.Data()) ){ + cfiles[c] = new TString(glroot->NAME.Data()); + c++; + }; + }; + // + pampli = 2; + glp->Query_GL_CALOPULSE_CALIB(atime2,sc,pampli,dbc); + glroot->Query_GL_ROOT(glp->ID_ROOT_L0,dbc); + if ( c > 0 ){ + Bool_t found = false; + for (Int_t gt=0; gtNAME.Data(),cfiles[gt]->Data()) ){ + found = true; + }; + }; + if ( !found && strcmp(glroot->NAME.Data(),NAME.Data()) ){ + cfiles[c] = new TString(glroot->NAME.Data()); + c++; + }; + } else { + if ( strcmp(glroot->NAME.Data(),NAME.Data()) ){ + cfiles[c] = new TString(glroot->NAME.Data()); + c++; + }; + }; + // + pampli = 0; + glp->Query_GL_CALOPULSE_CALIB(atime2,sc,pampli,dbc); + glroot->Query_GL_ROOT(glp->ID_ROOT_L0,dbc); + if ( c > 0 ){ + Bool_t found = false; + for (Int_t gt=0; gtNAME.Data(),cfiles[gt]->Data()) ){ + found = true; + }; + }; + if ( !found && strcmp(glroot->NAME.Data(),NAME.Data()) ){ + cfiles[c] = new TString(glroot->NAME.Data()); + c++; + }; + } else { + if ( strcmp(glroot->NAME.Data(),NAME.Data()) ){ + cfiles[c] = new TString(glroot->NAME.Data()); + c++; + }; + }; + // + }; + }; + printf(" S4 requires:"); + for (Int_t f=0;fData()); + delete s4files[f]; + }; + printf("\n"); + printf(" Tracker requires:"); + for (Int_t f=0;fData()); + delete tfiles[f]; + }; + printf("\n"); + printf(" Calorimeter requires:"); + for (Int_t f=0;fData()); + delete cfiles[f]; + }; + printf("\n\n"); + printf(" Minimum ID number in the file: %u \n",minid); + printf(" Maximum ID number in the file: %u \n",maxid); + printf("\n#################################################\n"); + // + }; + delete pResult; + if ( pResult2 ) delete pResult2; + }; + // // Close the DB connection // if ( dbc ) dbc->Close(); // - printf("\n"); + if ( !neat ) printf("\n"); // exit(0); }