/[PAMELA software]/chewbacca/YodaProfiler/src/GLTables.cpp
ViewVC logotype

Diff of /chewbacca/YodaProfiler/src/GLTables.cpp

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

revision 1.1 by mocchiut, Tue Sep 23 07:20:33 2008 UTC revision 1.10 by pam-fi, Wed Aug 5 18:48:44 2009 UTC
# Line 7  Line 7 
7  //  //
8  #include <sstream>  #include <sstream>
9  #include <iostream>  #include <iostream>
10    #include <limits.h>
11  //  //
12  #include <TFile.h>  #include <TFile.h>
13  #include <TTree.h>  #include <TTree.h>
# Line 56  void GL_TABLES::Set(TString host, TStrin Line 57  void GL_TABLES::Set(TString host, TStrin
57    mp = psw.Data();    mp = psw.Data();
58  };  };
59    
60  Bool_t GL_TABLES::IsConnected(TSQLServer *&dbc){  //Bool_t GL_TABLES::IsConnected(TSQLServer *&dbc){
61    Bool_t GL_TABLES::IsConnected(TSQLServer *dbc){
62    //    //
63    //    //
64    //    //
# Line 92  Bool_t GL_TABLES::IsConnected(TSQLServer Line 94  Bool_t GL_TABLES::IsConnected(TSQLServer
94      TString host = fHost->Data();      TString host = fHost->Data();
95      TString user = fUser->Data();      TString user = fUser->Data();
96      TString psw = fPsw->Data();      TString psw = fPsw->Data();
97      dbc->Close();      if ( dbc ){
98      delete dbc;        dbc->Close();
99          delete dbc;
100        };
101      dbc = TSQLServer::Connect(host.Data(),user.Data(),psw.Data());      dbc = TSQLServer::Connect(host.Data(),user.Data(),psw.Data());
102      //      //
103      myquery.str("");      myquery.str("");
# Line 168  GL_RUN::GL_RUN() { Line 172  GL_RUN::GL_RUN() {
172    TRK_CALIB_USED             = 0;    TRK_CALIB_USED             = 0;
173    CAL_DSP_MASK               = 0;    CAL_DSP_MASK               = 0;
174    BOOT_NUMBER                = 0;    BOOT_NUMBER                = 0;
175      PHYSENDRUN_MASK_S3S2S12    = 0;
176      PHYSENDRUN_MASK_S11CRC     = 0;
177    VALIDATION                 = 0;    VALIDATION                 = 0;
178  }  }
179    
# Line 203  void GL_RUN::Clear(Option_t *t) { Line 209  void GL_RUN::Clear(Option_t *t) {
209    TRK_CALIB_USED             = 0;    TRK_CALIB_USED             = 0;
210    CAL_DSP_MASK               = 0;    CAL_DSP_MASK               = 0;
211    BOOT_NUMBER                = 0;    BOOT_NUMBER                = 0;
212      PHYSENDRUN_MASK_S3S2S12    = 0;
213      PHYSENDRUN_MASK_S11CRC     = 0;
214    VALIDATION                 = 0;    VALIDATION                 = 0;
215  }  }
216    
# Line 214  GL_ROOT::GL_ROOT(){ Line 222  GL_ROOT::GL_ROOT(){
222    NAME   = "";    NAME   = "";
223  }  }
224    
225    GL_RAW::GL_RAW(){
226      ID     = 0;
227      PATH   = "";
228      NAME   = "";
229      BOOT_NUMBER = 0;
230    }
231    
232  GL_PARAM::GL_PARAM(){  GL_PARAM::GL_PARAM(){
233    ID     = 0;    ID     = 0;
234    PATH   = "";    PATH   = "";
# Line 368  void GL_RUN:: SetCOMPILATIONTIMESTAMP(UI Line 383  void GL_RUN:: SetCOMPILATIONTIMESTAMP(UI
383    COMPILATIONTIMESTAMP = value;    COMPILATIONTIMESTAMP = value;
384  };  };
385    
386    void GL_RUN:: SetPHYSENDRUN_MASK_S3S2S12(UInt_t value){
387      PHYSENDRUN_MASK_S3S2S12 = value;
388    };
389    
390    void GL_RUN:: SetPHYSENDRUN_MASK_S11CRC(UInt_t value){
391      PHYSENDRUN_MASK_S11CRC = value;
392    };
393    
394    
395  void GL_RUN:: SetFAV_WRK_SCHEDULE(UInt_t value){  void GL_RUN:: SetFAV_WRK_SCHEDULE(UInt_t value){
396    FAV_WRK_SCHEDULE = value;    FAV_WRK_SCHEDULE = value;
397  };  };
# Line 435  void GL_RUN::Set_GL_RUNH(RunHeaderEvent Line 459  void GL_RUN::Set_GL_RUNH(RunHeaderEvent
459    RM_ACQ_AFTER_CALIB         = runh->RM_ACQ_AFTER_CALIB;    RM_ACQ_AFTER_CALIB         = runh->RM_ACQ_AFTER_CALIB;
460    RM_ACQ_SETTING_MODE        = runh->RM_ACQ_SETTING_MODE;    RM_ACQ_SETTING_MODE        = runh->RM_ACQ_SETTING_MODE;
461    TRK_CALIB_USED             = runh->TRK_CALIB_USED;    TRK_CALIB_USED             = runh->TRK_CALIB_USED;
462    CAL_DSP_MASK              = runh->CAL_DSP_MASK;    CAL_DSP_MASK               = runh->CAL_DSP_MASK;
463  };  };
464    
465  void GL_RUN::Set_GL_RUNT0(){  void GL_RUN::Set_GL_RUNT0(){
# Line 465  void GL_RUN::Set_GL_RUNH0(){ Line 489  void GL_RUN::Set_GL_RUNH0(){
489  };  };
490    
491  void GL_RUN::Set_GL_RUN(TSQLRow *Row){  void GL_RUN::Set_GL_RUN(TSQLRow *Row){
492          for( Int_t t = 0; t < 30; t++){          for( Int_t t = 0; t < 32; t++){
493                  if (t== 0) ID                = (UInt_t)atoll(Row->GetField(t));                  if (t== 0) ID                = (UInt_t)atoll(Row->GetField(t));
494                  if (t== 1) ID_RUN_FRAG       = (UInt_t)atoll(Row->GetField(t));                  if (t== 1) ID_RUN_FRAG       = (UInt_t)atoll(Row->GetField(t));
495                  if (t== 2) ID_ROOT_L0        = (UInt_t)atoll(Row->GetField(t));                  if (t== 2) ID_ROOT_L0        = (UInt_t)atoll(Row->GetField(t));
# Line 495  void GL_RUN::Set_GL_RUN(TSQLRow *Row){ Line 519  void GL_RUN::Set_GL_RUN(TSQLRow *Row){
519                  if (t==26) CAL_DSP_MASK      = (UInt_t)atoll(Row->GetField(t));                  if (t==26) CAL_DSP_MASK      = (UInt_t)atoll(Row->GetField(t));
520                  if (t==27) LAST_TIMESYNC     = (UInt_t)atoll(Row->GetField(t));                  if (t==27) LAST_TIMESYNC     = (UInt_t)atoll(Row->GetField(t));
521                  if (t==28) OBT_TIMESYNC      = (UInt_t)atoll(Row->GetField(t));                  if (t==28) OBT_TIMESYNC      = (UInt_t)atoll(Row->GetField(t));
522                  if (t==29) VALIDATION        = (UInt_t)atoll(Row->GetField(t));                  if (t==29) PHYSENDRUN_MASK_S3S2S12 = (UInt_t)atoll(Row->GetField(t));
523                    if (t==30) PHYSENDRUN_MASK_S11CRC = (UInt_t)atoll(Row->GetField(t));
524                    if (t==31) VALIDATION        = (UInt_t)atoll(Row->GetField(t));
525          };          };
526    
527  }  }
# Line 545  Int_t GL_RUN::DeleteRun(TSQLServer *dbc, Line 571  Int_t GL_RUN::DeleteRun(TSQLServer *dbc,
571    myquery << ",CAL_DSP_MASK";    myquery << ",CAL_DSP_MASK";
572    myquery << ",LAST_TIMESYNC";    myquery << ",LAST_TIMESYNC";
573    myquery << ",OBT_TIMESYNC";    myquery << ",OBT_TIMESYNC";
574      myquery << ",PHYSENDRUN_MASK_S3S2S12";
575      myquery << ",PHYSENDRUN_MASK_S11CRC";
576    myquery << ",VALIDATION";    myquery << ",VALIDATION";
577    myquery << ",INSERT_TIME";    myquery << ",INSERT_TIME";
578    myquery << ") SELECT * FROM ";    myquery << ") SELECT * FROM ";
# Line 733  Int_t GL_RUN::RestoreRun(TSQLServer *dbc Line 761  Int_t GL_RUN::RestoreRun(TSQLServer *dbc
761    myquery << ",CAL_DSP_MASK";    myquery << ",CAL_DSP_MASK";
762    myquery << ",LAST_TIMESYNC";    myquery << ",LAST_TIMESYNC";
763    myquery << ",OBT_TIMESYNC";    myquery << ",OBT_TIMESYNC";
764      myquery << ",PHYSENDRUN_MASK_S3S2S12";
765      myquery << ",PHYSENDRUN_MASK_S11CRC";
766    myquery << ",VALIDATION";    myquery << ",VALIDATION";
767    myquery << ",INSERT_TIME";    myquery << ",INSERT_TIME";
768    myquery << ") SELECT ";    myquery << ") SELECT ";
# Line 765  Int_t GL_RUN::RestoreRun(TSQLServer *dbc Line 795  Int_t GL_RUN::RestoreRun(TSQLServer *dbc
795    myquery << ",CAL_DSP_MASK";    myquery << ",CAL_DSP_MASK";
796    myquery << ",LAST_TIMESYNC";    myquery << ",LAST_TIMESYNC";
797    myquery << ",OBT_TIMESYNC";    myquery << ",OBT_TIMESYNC";
798      myquery << ",PHYSENDRUN_MASK_S3S2S12";
799      myquery << ",PHYSENDRUN_MASK_S11CRC";
800    myquery << ",VALIDATION";    myquery << ",VALIDATION";
801    myquery << ",INSERT_TIME";    myquery << ",INSERT_TIME";
802    myquery << " FROM GL_RUN_TRASH ";    myquery << " FROM GL_RUN_TRASH ";
# Line 830  Int_t GL_RUN::Fill_GL_RUN(TSQLServer *db Line 862  Int_t GL_RUN::Fill_GL_RUN(TSQLServer *db
862    myquery << ",TRK_CALIB_USED";    myquery << ",TRK_CALIB_USED";
863    myquery << ",CAL_DSP_MASK";    myquery << ",CAL_DSP_MASK";
864    myquery << ",BOOT_NUMBER";    myquery << ",BOOT_NUMBER";
865      myquery << ",PHYSENDRUN_MASK_S3S2S12";
866      myquery << ",PHYSENDRUN_MASK_S11CRC";
867    myquery << ",VALIDATION";    myquery << ",VALIDATION";
868    myquery << ") VALUES ('";    myquery << ") VALUES ('";
869    
# Line 862  Int_t GL_RUN::Fill_GL_RUN(TSQLServer *db Line 896  Int_t GL_RUN::Fill_GL_RUN(TSQLServer *db
896    myquery << (UInt_t)TRK_CALIB_USED << "','";    myquery << (UInt_t)TRK_CALIB_USED << "','";
897    myquery << (UInt_t)CAL_DSP_MASK << "','";    myquery << (UInt_t)CAL_DSP_MASK << "','";
898    myquery << (UInt_t)BOOT_NUMBER << "','";    myquery << (UInt_t)BOOT_NUMBER << "','";
899      myquery << (UInt_t)PHYSENDRUN_MASK_S3S2S12 << "','";
900      myquery << (UInt_t)PHYSENDRUN_MASK_S11CRC << "','";
901    myquery << (UInt_t)VALIDATION << "');";    myquery << (UInt_t)VALIDATION << "');";
902    //    //
903    //  printf("myquery is %s \n",myquery.str().c_str());    //  printf("myquery is %s \n",myquery.str().c_str());
# Line 913  Int_t GL_RUN::Fill_GL_RUN_FRAGMENTS(TSQL Line 949  Int_t GL_RUN::Fill_GL_RUN_FRAGMENTS(TSQL
949    myquery << ",TRK_CALIB_USED";    myquery << ",TRK_CALIB_USED";
950    myquery << ",CAL_DSP_MASK";    myquery << ",CAL_DSP_MASK";
951    myquery << ",BOOT_NUMBER";    myquery << ",BOOT_NUMBER";
952      myquery << ",PHYSENDRUN_MASK_S3S2S12";
953      myquery << ",PHYSENDRUN_MASK_S11CRC";
954    myquery << ") VALUES ('";    myquery << ") VALUES ('";
955    myquery << (UInt_t)ID << "','";    myquery << (UInt_t)ID << "','";
956    myquery << (UInt_t)ID_ROOT_L0 << "','";    myquery << (UInt_t)ID_ROOT_L0 << "','";
# Line 940  Int_t GL_RUN::Fill_GL_RUN_FRAGMENTS(TSQL Line 978  Int_t GL_RUN::Fill_GL_RUN_FRAGMENTS(TSQL
978    myquery << (UInt_t)PKT_READY_COUNTER << "','";    myquery << (UInt_t)PKT_READY_COUNTER << "','";
979    myquery << (UInt_t)TRK_CALIB_USED << "','";    myquery << (UInt_t)TRK_CALIB_USED << "','";
980    myquery << (UInt_t)CAL_DSP_MASK << "','";    myquery << (UInt_t)CAL_DSP_MASK << "','";
981    myquery << (UInt_t)BOOT_NUMBER << "');";    myquery << (UInt_t)BOOT_NUMBER << "','";
982      myquery << (UInt_t)PHYSENDRUN_MASK_S3S2S12 << "','";
983      myquery << (UInt_t)PHYSENDRUN_MASK_S11CRC << "');";
984    //    //
985    // printf("myquery is %s \n",myquery.str().c_str());    // printf("myquery is %s \n",myquery.str().c_str());
986    //    //
# Line 999  Int_t GL_RUN::Query_GL_RUN(UInt_t run, T Line 1039  Int_t GL_RUN::Query_GL_RUN(UInt_t run, T
1039    myquery << ",TRK_CALIB_USED";    myquery << ",TRK_CALIB_USED";
1040    myquery << ",CAL_DSP_MASK";    myquery << ",CAL_DSP_MASK";
1041    myquery << ",BOOT_NUMBER";    myquery << ",BOOT_NUMBER";
1042      myquery << ",PHYSENDRUN_MASK_S3S2S12";
1043      myquery << ",PHYSENDRUN_MASK_S11CRC";
1044    myquery << ",VALIDATION";    myquery << ",VALIDATION";
1045    myquery << " from GL_RUN where ID=" << run << ";";    myquery << " from GL_RUN where ID=" << run << ";";
1046    //    //
# Line 1045  Int_t GL_RUN::Query_GL_RUN(UInt_t run, T Line 1087  Int_t GL_RUN::Query_GL_RUN(UInt_t run, T
1087          if (t==26) TRK_CALIB_USED    = (UInt_t)atoll(Row->GetField(t));          if (t==26) TRK_CALIB_USED    = (UInt_t)atoll(Row->GetField(t));
1088          if (t==27) CAL_DSP_MASK      = (UInt_t)atoll(Row->GetField(t));          if (t==27) CAL_DSP_MASK      = (UInt_t)atoll(Row->GetField(t));
1089          if (t==28) BOOT_NUMBER       = (UInt_t)atoll(Row->GetField(t));          if (t==28) BOOT_NUMBER       = (UInt_t)atoll(Row->GetField(t));
1090          if (t==29) VALIDATION        = (UInt_t)atoll(Row->GetField(t));          if (t==29) PHYSENDRUN_MASK_S3S2S12 = (UInt_t)atoll(Row->GetField(t));
1091            if (t==30) PHYSENDRUN_MASK_S11CRC = (UInt_t)atoll(Row->GetField(t));
1092            if (t==31) VALIDATION        = (UInt_t)atoll(Row->GetField(t));
1093        };        };
1094    };    };
1095    //  delete pResult;    //  delete pResult;
# Line 1098  Int_t GL_RUN::Query_GL_RUN_FRAGMENTS(TSt Line 1142  Int_t GL_RUN::Query_GL_RUN_FRAGMENTS(TSt
1142    myquery << ",TRK_CALIB_USED";    myquery << ",TRK_CALIB_USED";
1143    myquery << ",CAL_DSP_MASK";    myquery << ",CAL_DSP_MASK";
1144    myquery << ",BOOT_NUMBER";    myquery << ",BOOT_NUMBER";
1145      myquery << ",PHYSENDRUN_MASK_S3S2S12";
1146      myquery << ",PHYSENDRUN_MASK_S11CRC";
1147    myquery << ",VALIDATION";    myquery << ",VALIDATION";
1148    myquery << " from GL_RUN_FRAGMENTS where " << where.Data() << ";";    myquery << " from GL_RUN_FRAGMENTS where " << where.Data() << ";";
1149    //    //
# Line 1140  Int_t GL_RUN::Query_GL_RUN_FRAGMENTS(TSt Line 1186  Int_t GL_RUN::Query_GL_RUN_FRAGMENTS(TSt
1186        if (t==26) TRK_CALIB_USED    = (UInt_t)atoll(Row->GetField(t));        if (t==26) TRK_CALIB_USED    = (UInt_t)atoll(Row->GetField(t));
1187        if (t==27) CAL_DSP_MASK      = (UInt_t)atoll(Row->GetField(t));        if (t==27) CAL_DSP_MASK      = (UInt_t)atoll(Row->GetField(t));
1188        if (t==28) BOOT_NUMBER       = (UInt_t)atoll(Row->GetField(t));        if (t==28) BOOT_NUMBER       = (UInt_t)atoll(Row->GetField(t));
1189        if (t==29) VALIDATION        = (UInt_t)atoll(Row->GetField(t));        if (t==29) PHYSENDRUN_MASK_S3S2S12 = (UInt_t)atoll(Row->GetField(t));
1190          if (t==30) PHYSENDRUN_MASK_S11CRC = (UInt_t)atoll(Row->GetField(t));
1191          if (t==31) VALIDATION        = (UInt_t)atoll(Row->GetField(t));
1192      };      };
1193    };    };
1194    //  delete pResult;    //  delete pResult;
# Line 1272  Int_t GL_CALO_CALIB::Query_GL_CALO_CALIB Line 1320  Int_t GL_CALO_CALIB::Query_GL_CALO_CALIB
1320    if ( !this->GetGLTABLES()->IsConnected(dbc) ) return -57;      if ( !this->GetGLTABLES()->IsConnected(dbc) ) return -57;  
1321    this->GetGLTABLES()->AddQ();    this->GetGLTABLES()->AddQ();
1322    pResult = dbc->Query(myquery.str().c_str());    pResult = dbc->Query(myquery.str().c_str());
1323    //  printf(" mysquery is %s\n",myquery.str().c_str());    // printf(" mysquery is %s\n",myquery.str().c_str());
1324    //    //
1325    if( !pResult->GetRowCount() ) return(-54);    if( !pResult->GetRowCount() ) return(-54);
1326    Row = pResult->Next();    Row = pResult->Next();
# Line 1310  Int_t GL_CALO_CALIB::Query_GL_CALO_CALIB Line 1358  Int_t GL_CALO_CALIB::Query_GL_CALO_CALIB
1358    //    //
1359    // if the selected calibration is too old (more than 5 orbits old) try to take the closest not corrupted one    // if the selected calibration is too old (more than 5 orbits old) try to take the closest not corrupted one
1360    //    //
1361    if ( (time-myfromtime)>28500 ){    if ( (time-myfromtime)>28500 && myfromtime > 0 ){
1362      //      //
1363      myquery.str("");      myquery.str("");
1364      myquery << "select ID_ROOT_L0, FROM_TIME, TO_TIME, EV_ROOT from GL_CALO_CALIB where SECTION=" << section;      myquery << "select ID_ROOT_L0, FROM_TIME, TO_TIME, EV_ROOT from GL_CALO_CALIB where SECTION=" << section;
# Line 1502  void GL_RUN::GetLevel2Struct(cGLRun *l2) Line 1550  void GL_RUN::GetLevel2Struct(cGLRun *l2)
1550  GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TString type, TSQLServer *dbc){  GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TString type, TSQLServer *dbc){
1551    // MySQL variables    // MySQL variables
1552    TFile *file = 0;    TFile *file = 0;
1553    UInt_t idraw = 0;    UInt_t idtsy = 0;
1554    //    //
1555    TSQLResult *pResult;    TSQLResult *pResult;
1556    TSQLRow *Row;    TSQLRow *Row = 0;
1557    stringstream myquery;    stringstream myquery;
1558    stringstream rname;    stringstream rname;
1559    //  pcksList packetsNames;    //  pcksList packetsNames;
# Line 1516  GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TStr Line 1564  GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TStr
1564    myquery.str("");    myquery.str("");
1565    myquery << "select ";    myquery << "select ";
1566    myquery << "PATH";    myquery << "PATH";
1567    myquery << ",NAME,ID_RAW";    myquery << ",NAME,ID_TIMESYNC";
1568    myquery << " from GL_ROOT where ";    myquery << " from GL_ROOT where ";
1569    myquery << type.Data();    myquery << type.Data();
1570    myquery << "=" << id << ";";        myquery << "=" << id << ";";    
# Line 1532  GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TStr Line 1580  GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TStr
1580        fname << gSystem->ExpandPathName(Row->GetField(0)) << "/" << Row->GetField(1);        fname << gSystem->ExpandPathName(Row->GetField(0)) << "/" << Row->GetField(1);
1581        rname << Row->GetField(1);        rname << Row->GetField(1);
1582        file = new TFile(fname.str().c_str(),"READ");        file = new TFile(fname.str().c_str(),"READ");
1583        idraw = (UInt_t)atoll(Row->GetField(2));        idtsy = (UInt_t)atoll(Row->GetField(2));
1584      };      };
1585    };    };
1586    //    //
# Line 1545  GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TStr Line 1593  GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TStr
1593      T->GetEntry(0);      T->GetEntry(0);
1594      ph = eh->GetPscuHeader();      ph = eh->GetPscuHeader();
1595      pktfirst = ph->GetCounter();      pktfirst = ph->GetCounter();
1596      obtfirst = ph->GetOrbitalTime();        //    obtfirst = ph->GetOrbitalTime();  
     //  
 //     code = eh->GetCounter();  
 //     UInt_t en = 0;  
 //     for(Iter = packetsNames.begin(); Iter != packetsNames.end(); Iter++){  
 //       en = code->Get(GetPacketType(*Iter));  
 //       if ( !strcmp("CalibCalPed",*Iter) || !strcmp("CalibTrk1",*Iter) || !strcmp("CalibTrk2",*Iter) || !strcmp("CalibS4",*Iter) ){  
 //      //  
 //      TTree *TC = 0;  
 //      TC = (TTree*)file->Get("CalibCalPed");  
 //      if ( !TC || TC->IsZombie() ) return;  
 //      EventHeader *ehc = 0;  
 //      PscuHeader *phc = 0;  
 //      TC->SetBranchAddress("Header", &ehc);  
 //      TC->GetEntry(0);  
 //      phc = ehc->GetPscuHeader();  
 //      pktfirst = phc->GetCounter();  
 //      obtfirst = phc->GetOrbitalTime();    
 //       //  
 //       };  
 //     };    
1597      //      //
1598    };    };
1599    //    //
# Line 1573  GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TStr Line 1601  GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TStr
1601    //    //
1602    T0 = 0;    T0 = 0;
1603    //    //
   //  
1604    stringstream oss;    stringstream oss;
   TString frn = rname.str().c_str();  
   frn = frn.ReplaceAll(".root",5,".pam",4);  
   oss.str("");  
   oss << "SELECT YEAR(OFFSET_DATE),MONTH(OFFSET_DATE),DAY(OFFSET_DATE),HOUR(OFFSET_DATE),MINUTE(OFFSET_DATE),SECOND(OFFSET_DATE) FROM GL_RESURS_OFFSET WHERE SPECIAL_FILE='"  
       << frn.Data() << "';";  
   if ( !this->GetGLTABLES()->IsConnected(dbc) ) return;    
   this->GetGLTABLES()->AddQ();  
   pResult = dbc->Query(oss.str().c_str());  
   Row = pResult->Next();  
1605    //    //
1606    TString name=rname.str().c_str();    TString name=rname.str().c_str();
1607    UInt_t dworbit = 0;    UInt_t dworbit = 0;
1608    Int_t nlength = name.Length();    //  Int_t nlength = name.Length();
1609      delete pResult;      
1610    //    //
1611    // Is not a special file    // New code, we have one more column on GL_TIMESYNC so we can trust that one for the Resurs offset
1612    //    //
1613    if ( !Row ){    oss.str("");
1614      delete pResult;          oss << "SELECT OBT0,TIMESYNC,TYPE,ID_RESURS_OFFSET from GL_TIMESYNC where ID=" << idtsy <<";";
1615      //    if ( !this->GetGLTABLES()->IsConnected(dbc) ) return;  
1616      // New code, we have one more column on GL_TIMESYNC so we can trust that one for the Resurs offset    this->GetGLTABLES()->AddQ();
1617      //    pResult = dbc->Query(oss.str().c_str());
1618      oss.str("");    Bool_t fndit = false;
1619      oss << "SELECT ID_RESURS_OFFSET from GL_TIMESYNC where ID_RAW=" << idraw <<";";    if ( pResult ){
1620      if ( !this->GetGLTABLES()->IsConnected(dbc) ) return;        Row = pResult->Next();
1621      this->GetGLTABLES()->AddQ();      if ( Row ){
     pResult = dbc->Query(oss.str().c_str());  
     Bool_t fndit = false;  
     if ( pResult ){  
       Row = pResult->Next();  
       if ( Row ){  
         oss.str("");  
         oss << "SELECT YEAR(OFFSET_DATE),MONTH(OFFSET_DATE),DAY(OFFSET_DATE),HOUR(OFFSET_DATE),MINUTE(OFFSET_DATE),SECOND(OFFSET_DATE) FROM GL_RESURS_OFFSET WHERE ID="  
             << Row->GetField(0) << ";";  
         if ( !this->GetGLTABLES()->IsConnected(dbc) ) return;    
         this->GetGLTABLES()->AddQ();  
         pResult = dbc->Query(oss.str().c_str());  
         if ( pResult ){  
           Row = pResult->Next();  
           if ( Row ){  
             //      printf(" GREAT! the DB structure is the new one! \n");  
             fndit = true;  
             dworbit = 1;  
           };  
         };  
       };  
     };  
     if ( !fndit ){  
       delete pResult;        
       //  
       printf(" OK, you got an error because this is the old database\n Using backward compability code, hence you can continue safetly \n");  
       //  
       // Old code, we must trust the filename  
1622        //        //
1623        if ( nlength < 5 ) return;        OBT0 = (UInt_t)atoll(Row->GetField(0));
1624        TString dwo = 0;        obtfirst = OBT0;
1625        for (Int_t i = 0; i<5; i++){        TIMESYNC = (UInt_t)atoll(Row->GetField(1));
1626          dwo.Append(name[i],1);        TYPE = (UInt_t)atoll(Row->GetField(2));      
       };  
       if ( dwo.IsDigit() ){  
         dworbit = (UInt_t)dwo.Atoi();  
       } else {  
         dwo="";  
         for (Int_t i = 8; i<13; i++){  
           dwo.Append(name[i],1);  
         };      
         if ( dwo.IsDigit() ){  
           dworbit = (UInt_t)dwo.Atoi();  
         } else {  
           dworbit = 1;  
         };  
       };      
1627        //        //
1628        oss.str("");        oss.str("");
1629        oss << "SELECT YEAR(OFFSET_DATE),MONTH(OFFSET_DATE),DAY(OFFSET_DATE),HOUR(OFFSET_DATE),MINUTE(OFFSET_DATE),SECOND(OFFSET_DATE) FROM GL_RESURS_OFFSET WHERE FROM_ORBIT< "        oss << "SELECT YEAR(OFFSET_DATE),MONTH(OFFSET_DATE),DAY(OFFSET_DATE),HOUR(OFFSET_DATE),MINUTE(OFFSET_DATE),SECOND(OFFSET_DATE) FROM GL_RESURS_OFFSET WHERE ID="
1630            << dworbit << " order by FROM_ORBIT desc limit 1;";            << Row->GetField(3) << ";";
1631        if ( !this->GetGLTABLES()->IsConnected(dbc) ) return;          if ( !this->GetGLTABLES()->IsConnected(dbc) ) return;  
1632        this->GetGLTABLES()->AddQ();        this->GetGLTABLES()->AddQ();
1633          delete pResult;
1634        pResult = dbc->Query(oss.str().c_str());        pResult = dbc->Query(oss.str().c_str());
1635        Row = pResult->Next();        if ( pResult ){
1636        if ( !Row ){          Row = pResult->Next();
1637          printf(" ERROR FROM GLTables! cannot determine Resurs offset \n");          if ( Row ){
1638          return;            //        printf(" GREAT! the DB structure is the new one! \n");
1639              fndit = true;
1640              dworbit = 1;
1641            };
1642        };        };
1643      };      };
1644    };    };
1645      if ( !fndit ){
1646        //
1647        printf(" ERROR OLD DB! \n");
1648        printf(" ERROR FROM GLTables! cannot determine Resurs offset \n");
1649        //
1650      };
1651    //    //
1652    TTimeStamp tu = TTimeStamp((UInt_t)atoi(Row->GetField(0)),(UInt_t)atoi(Row->GetField(1)),(UInt_t)atoi(Row->GetField(2)),(UInt_t)atoi(Row->GetField(3)),(UInt_t)atoi(Row->GetField(4)),(UInt_t)atoi(Row->GetField(5)),0,true,0);    TTimeStamp tu = TTimeStamp((UInt_t)atoi(Row->GetField(0)),(UInt_t)atoi(Row->GetField(1)),(UInt_t)atoi(Row->GetField(2)),(UInt_t)atoi(Row->GetField(3)),(UInt_t)atoi(Row->GetField(4)),(UInt_t)atoi(Row->GetField(5)),0,true,0);
1653    T0 = (UInt_t)tu.GetSec();    T0 = (UInt_t)tu.GetSec();
1654    //    //
1655    // look for the correct timesync entry    toffset = (UInt_t)TIMESYNC - (UInt_t)(this->DBobt(OBT0)/1000) + T0;
1656      //
1657      //  printf(" T0 %u toffset is %u \n",T0,toffset);
1658      //
1659      if ( file ) file->Close();
1660      delete pResult;      
1661    };
1662    
1663    GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TString type, TSQLServer *dbc, Bool_t usel0file){
1664      // MySQL variables
1665      TFile *file = 0;
1666      UInt_t idtsy = 0;
1667    //    //
1668      TSQLResult *pResult;
1669      TSQLRow *Row = 0;
1670      stringstream myquery;
1671      stringstream rname;
1672      //  pcksList packetsNames;
1673      //  pcksList::iterator Iter;
1674      //  getPacketsNames(packetsNames);
1675      rname.str("");
1676      // ----------------
1677    myquery.str("");    myquery.str("");
1678    myquery << " SELECT OBT0,TIMESYNC,TYPE FROM GL_TIMESYNC "    myquery << "select ";
1679        << " WHERE ID_RAW = " << idraw    myquery << "PATH";
1680        << ";";    myquery << ",NAME,ID_TIMESYNC";
1681      myquery << " from GL_ROOT where ";
1682      myquery << type.Data();
1683      myquery << "=" << id << ";";    
1684      //
1685    if ( !this->GetGLTABLES()->IsConnected(dbc) ) return;      if ( !this->GetGLTABLES()->IsConnected(dbc) ) return;  
1686    this->GetGLTABLES()->AddQ();    this->GetGLTABLES()->AddQ();
1687    pResult = dbc->Query(myquery.str().c_str());    pResult = dbc->Query(myquery.str().c_str());
1688      if( pResult->GetRowCount() ){
1689        Row = pResult->Next();      
1690        if( Row ){
1691          stringstream fname;
1692          fname.str("");
1693          fname << gSystem->ExpandPathName(Row->GetField(0)) << "/" << Row->GetField(1);
1694          rname << Row->GetField(1);
1695          if ( usel0file ) file = new TFile(fname.str().c_str(),"READ");
1696          idtsy = (UInt_t)atoll(Row->GetField(2));
1697        };
1698      };
1699      //
1700      if ( usel0file && file && file->IsOpen() ){
1701        TTree *T=(TTree*)file->Get("Physics");
1702        pamela::EventHeader *eh = 0;
1703        pamela::PscuHeader *ph = 0;
1704        T->SetBranchAddress("Header", &eh);
1705        //
1706        T->GetEntry(0);
1707        ph = eh->GetPscuHeader();
1708        pktfirst = ph->GetCounter();
1709        //    obtfirst = ph->GetOrbitalTime();  
1710        //
1711      };
1712      if ( !usel0file ) pktfirst = 0;
1713      //
1714      // look for Resurs offset
1715      //
1716      T0 = 0;
1717      //
1718      stringstream oss;
1719      //
1720      TString name=rname.str().c_str();
1721      UInt_t dworbit = 0;
1722      //  Int_t nlength = name.Length();
1723      delete pResult;      
1724      //
1725      // New code, we have one more column on GL_TIMESYNC so we can trust that one for the Resurs offset
1726      //
1727      oss.str("");
1728      oss << "SELECT OBT0,TIMESYNC,TYPE,ID_RESURS_OFFSET from GL_TIMESYNC where ID=" << idtsy <<";";
1729      if ( !this->GetGLTABLES()->IsConnected(dbc) ) return;  
1730      this->GetGLTABLES()->AddQ();
1731      pResult = dbc->Query(oss.str().c_str());
1732      Bool_t fndit = false;
1733    if ( pResult ){    if ( pResult ){
1734      Row = pResult->Next();      Row = pResult->Next();
1735      if ( (Row != NULL) && ((UInt_t)atoll(Row->GetField(0)) > 0 ) ){      if ( Row ){
1736          //
1737        OBT0 = (UInt_t)atoll(Row->GetField(0));        OBT0 = (UInt_t)atoll(Row->GetField(0));
1738          obtfirst = OBT0;
1739        TIMESYNC = (UInt_t)atoll(Row->GetField(1));        TIMESYNC = (UInt_t)atoll(Row->GetField(1));
1740        TYPE = (UInt_t)atoll(Row->GetField(2));        TYPE = (UInt_t)atoll(Row->GetField(2));      
1741        toffset = (UInt_t)atoll(Row->GetField(1)) - (UInt_t)(this->DBobt((UInt_t)atoll(Row->GetField(0)))/1000) + T0;        //
1742          oss.str("");
1743          oss << "SELECT YEAR(OFFSET_DATE),MONTH(OFFSET_DATE),DAY(OFFSET_DATE),HOUR(OFFSET_DATE),MINUTE(OFFSET_DATE),SECOND(OFFSET_DATE) FROM GL_RESURS_OFFSET WHERE ID="
1744              << Row->GetField(3) << ";";
1745          if ( !this->GetGLTABLES()->IsConnected(dbc) ) return;  
1746          this->GetGLTABLES()->AddQ();
1747          delete pResult;
1748          pResult = dbc->Query(oss.str().c_str());
1749          if ( pResult ){
1750            Row = pResult->Next();
1751            if ( Row ){
1752              //        printf(" GREAT! the DB structure is the new one! \n");
1753              fndit = true;
1754              dworbit = 1;
1755            };
1756          };
1757      };      };
1758    };    };
1759      if ( !fndit ){
1760        //
1761        printf(" ERROR OLD DB! \n");
1762        printf(" ERROR FROM GLTables! cannot determine Resurs offset \n");
1763        //
1764      };
1765      //
1766      TTimeStamp tu = TTimeStamp((UInt_t)atoi(Row->GetField(0)),(UInt_t)atoi(Row->GetField(1)),(UInt_t)atoi(Row->GetField(2)),(UInt_t)atoi(Row->GetField(3)),(UInt_t)atoi(Row->GetField(4)),(UInt_t)atoi(Row->GetField(5)),0,true,0);
1767      T0 = (UInt_t)tu.GetSec();
1768      //
1769      toffset = (UInt_t)TIMESYNC - (UInt_t)(this->DBobt(OBT0)/1000) + T0;
1770      //
1771      //  printf(" T0 %u toffset is %u \n",T0,toffset);
1772    //    //
1773    file->Close();    if ( file ) file->Close();
1774    delete pResult;          delete pResult;      
1775  };  };
1776    
# Line 1694  GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TStr Line 1781  GL_TIMESYNC::GL_TIMESYNC(UInt_t id, TStr
1781   */   */
1782  UInt_t GL_TIMESYNC::DBabsTime(UInt_t OBT){    UInt_t GL_TIMESYNC::DBabsTime(UInt_t OBT){  
1783    //    //
1784      //  printf(" OBT %u DBobt %llu toffset %u dbabstime %u\n",OBT,this->DBobt(OBT),toffset,((UInt_t)(this->DBobt(OBT)/1000)+toffset));
1785    return(((UInt_t)(this->DBobt(OBT)/1000)+toffset));    return(((UInt_t)(this->DBobt(OBT)/1000)+toffset));
1786    //    //
1787  };  };
# Line 1732  Long64_t GL_TIMESYNC::DBpkt(UInt_t pkt_n Line 1820  Long64_t GL_TIMESYNC::DBpkt(UInt_t pkt_n
1820   */   */
1821  Long64_t GL_TIMESYNC::DBobt(UInt_t obt){    Long64_t GL_TIMESYNC::DBobt(UInt_t obt){  
1822    //    //
1823    if ( obt < (obtfirst/2) && obtfirst > (numeric_limits<UInt_t>::max()/2) ){    if ( obt < ((Long64_t)obtfirst/2) && obtfirst > (numeric_limits<UInt_t>::max()/2) ){
1824      return((Long64_t)obt+(Long64_t)numeric_limits<UInt_t>::max());      return((Long64_t)obt+(Long64_t)numeric_limits<UInt_t>::max());
1825    };    };
1826    //    //
1827    if ( obt > (obtfirst*2) && obt > (numeric_limits<UInt_t>::max()/2) ){    if ( obt > ((Long64_t)obtfirst*2) && obt > (numeric_limits<UInt_t>::max()/2) ){
1828      return((Long64_t)obt-(Long64_t)numeric_limits<UInt_t>::max());      return((Long64_t)obt-(Long64_t)numeric_limits<UInt_t>::max());
1829    };    };
1830    //    //

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

  ViewVC Help
Powered by ViewVC 1.1.23