/[PAMELA software]/YodaProfiler/src/PamelaDBOperations.cpp
ViewVC logotype

Diff of /YodaProfiler/src/PamelaDBOperations.cpp

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

revision 1.6 by mocchiut, Fri Sep 8 16:06:02 2006 UTC revision 1.9 by mocchiut, Tue Sep 12 07:28:46 2006 UTC
# Line 63  PamelaDBOperations::PamelaDBOperations(T Line 63  PamelaDBOperations::PamelaDBOperations(T
63    SetObt0(obt0);    SetObt0(obt0);
64    //    //
65    //    //
66    SetRootName(filerootname);    INSERT_RAW =!filerawname.IsNull();
67    SetRawName(filerawname);    if(INSERT_RAW)SetRawName(filerawname);
68    //    //
69    this->OpenFile();    INSERT_ROOT = !filerootname.IsNull();
70      if( INSERT_ROOT ){
71        file = TFile::Open(this->GetRootName().Data());
72        //    if ( !file ) INSERT_ROOT = false;
73      };
74      //  this->OpenFile();
75    //    //
76    this->SetID_RAW(0);    this->SetID_RAW(0);
77    this->SetID_ROOT(0);    this->SetID_ROOT(0);
78    
79      VALIDATE = false;
80      
81    //    //
82  };  };
83    
# Line 78  PamelaDBOperations::PamelaDBOperations(T Line 86  PamelaDBOperations::PamelaDBOperations(T
86   */   */
87  void PamelaDBOperations::Close(){  void PamelaDBOperations::Close(){
88    if( conn && conn->IsConnected() ) conn->Close();    if( conn && conn->IsConnected() ) conn->Close();
89      delete clean_time;
90    delete glrun;    delete glrun;
91    delete this;    delete this;
92  };  };
# Line 86  void PamelaDBOperations::Close(){ Line 95  void PamelaDBOperations::Close(){
95  // SETTERS  // SETTERS
96  //  //
97    
98    //
99    // must be out of the constructor in order to FORCE the validation of the latest runs in case you run the validation together with the latest file
100    //
101    void PamelaDBOperations::CheckValidate(Long64_t olderthan){
102      clean_time = new TDatime();
103      if(olderthan >= 0){
104        VALIDATE = true;
105        UInt_t timelim = 0;
106        timelim =  (UInt_t)clean_time->Convert() - olderthan;
107        clean_time->Set(timelim,false);
108      };
109    };
110    
111  /**  /**
112   * Open the DB connection   * Open the DB connection
113   * @param host         hostname for the SQL connection.   * @param host         hostname for the SQL connection.
# Line 172  void PamelaDBOperations::SetNOBOOT(Bool_ Line 194  void PamelaDBOperations::SetNOBOOT(Bool_
194   * Store the olderthan variable   * Store the olderthan variable
195   * @param olderthan   * @param olderthan
196   */   */
197  void PamelaDBOperations::SetOlderThan(Long64_t oldthan){  // void PamelaDBOperations::SetOlderThan(Long64_t oldthan){
198    olderthan = oldthan;  //   olderthan = oldthan;
199  };  // };
200    
201  /**  /**
202   * Retrieve the ID_RAW, if exists, returns NULL if does not exist.   * Retrieve the ID_RAW, if exists, returns NULL if does not exist.
# Line 401  Int_t PamelaDBOperations::SetUpperLimits Line 423  Int_t PamelaDBOperations::SetUpperLimits
423      pkth = PKT(phh->GetCounter());      pkth = PKT(phh->GetCounter());
424      obth = OBT(phh->GetOrbitalTime());      obth = OBT(phh->GetOrbitalTime());
425      //      //
426      if ( IsDebug() ) printf(" k %i rhev before %i ph %u upperp %u oh %u uppero %u \n",k,rhev,pkth,spkth,obth,sobth);  //    if ( IsDebug() ) printf(" k %i rhev before %i ph %u upperp %u oh %u uppero %u \n",k,rhev,pkth,spkth,obth,sobth);
427      //      //
428      if ( pkth < spkth && obth < sobth ){      if ( pkth < spkth && obth < sobth ){
429        if ( IsDebug() ) printf(" RH PROBLEMS determining the event repetition at the end of the file lasthead %i  \n",rhev);        if ( IsDebug() ) printf(" RH PROBLEMS determining the event repetition at the end of the file lasthead %i  \n",rhev);
# Line 419  Int_t PamelaDBOperations::SetUpperLimits Line 441  Int_t PamelaDBOperations::SetUpperLimits
441          ph = eh->GetPscuHeader();          ph = eh->GetPscuHeader();
442          t_pktlast = PKT(ph->GetCounter());          t_pktlast = PKT(ph->GetCounter());
443          t_obtlast = OBT(ph->GetOrbitalTime());          t_obtlast = OBT(ph->GetOrbitalTime());
444          if ( t_pktlast < spkth && t_obtlast < sobth ){ // jump          if ( t_pktlast <= spkth && t_obtlast <= sobth ){ // jump
445            upperpkt = pkth;            upperpkt = pkth;
446            upperobt = obth;            upperobt = obth;
447            upperentry = evbefh-1;            upperentry = evbefh-1;
# Line 460  Int_t PamelaDBOperations::SetUpperLimits Line 482  Int_t PamelaDBOperations::SetUpperLimits
482      pktt = PKT(pht->GetCounter());      pktt = PKT(pht->GetCounter());
483      obtt = OBT(pht->GetOrbitalTime());      obtt = OBT(pht->GetOrbitalTime());
484      //      //
485      if ( IsDebug() ) printf(" k %i rtev beforev %i  pt %i upperp %i ot %llu uppero %llu \n",k,rtev,pktt,spktt,obtt,sobtt);  //    if ( IsDebug() ) printf(" k %i rtev beforev %i  pt %i upperp %i ot %llu uppero %llu \n",k,rtev,pktt,spktt,obtt,sobtt);
486      //      //
487      if ( pktt < spktt && obtt < sobtt ){      if ( pktt < spktt && obtt < sobtt ){
488        if ( IsDebug() ) printf(" RT PROBLEMS determining the event repetition at the end of the file lasttrail %i \n",rtev);        if ( IsDebug() ) printf(" RT PROBLEMS determining the event repetition at the end of the file lasttrail %i \n",rtev);
# Line 479  Int_t PamelaDBOperations::SetUpperLimits Line 501  Int_t PamelaDBOperations::SetUpperLimits
501          ph = eh->GetPscuHeader();          ph = eh->GetPscuHeader();
502          t_pktlast = PKT(ph->GetCounter());          t_pktlast = PKT(ph->GetCounter());
503          t_obtlast = OBT(ph->GetOrbitalTime());          t_obtlast = OBT(ph->GetOrbitalTime());
504          if ( t_pktlast < spktt && t_obtlast < sobtt ){ // jump          if ( t_pktlast <= spktt && t_obtlast <= sobtt ){ // jump
505            upperpkt = pktt;            upperpkt = pktt;
506            upperobt = obtt;            upperobt = obtt;
507            upperentry = evbeft-1;            upperentry = evbeft-1;
# Line 628  const PacketType* PamelaDBOperations::Ge Line 650  const PacketType* PamelaDBOperations::Ge
650  // PRIVATE FUNCTIONS  // PRIVATE FUNCTIONS
651  //  //
652    
653  /**  // /**
654   * Open the ROOT filename for reading  // * Open the ROOT filename for reading
655   */  // */
656  void PamelaDBOperations::OpenFile(){  // void PamelaDBOperations::OpenFile(){
657    file = TFile::Open(this->GetRootName().Data());  //   file = TFile::Open(this->GetRootName().Data());
658    //   //
659    
660    void PamelaDBOperations::CheckFile(){  
661      if ( !file ) throw -12;
662  };  };
663    
664    
665  /**  /**
666   * Check if LEVEL0 file and DB connection have really be opened   * Check if LEVEL0 file and DB connection have really be opened
667   */   */
668  void PamelaDBOperations::CheckFile(){    void PamelaDBOperations::CheckConnection(){  
   //  
   if ( !file ) throw -12;  
669    //    //
670    // check connection    // check connection
671    //    //
672    if( !conn ) throw -1;        if( !conn ) throw -1;
673    bool connect = conn->IsConnected();    bool connect = conn->IsConnected();
674    if( !connect ) throw -1;        if( !connect ) throw -1;
675  };  };
676    
677  /**  /**
# Line 3168  Int_t PamelaDBOperations::CleanGL_RUN_FR Line 3192  Int_t PamelaDBOperations::CleanGL_RUN_FR
3192    TSQLRow    *row2   = 0;    TSQLRow    *row2   = 0;
3193    //    //
3194    UInt_t moved = 0;    UInt_t moved = 0;
3195    UInt_t timelim = 0;  //  UInt_t timelim = 0;
3196    TDatime *time = new TDatime();  //  TDatime *time = new TDatime();
3197    //    //
3198    stringstream oss;    stringstream oss;
3199    oss.str("");    oss.str("");
3200    //    //
3201    //    //
   //  
   if ( olderthan < 0 ){  
     if ( IsDebug() ) printf(" Do not clean GL_RUN_FRAGMENTS table \n");  
     return(1);  
   };  
   //  
   // timelim = now - olderthan  
   //  
   time->Set();  
   timelim =  (UInt_t)time->Convert() - olderthan;  
   time->Set(timelim,false);  
   //  
3202    // check if there are entries older than "olderthan" seconds from now    // check if there are entries older than "olderthan" seconds from now
3203    //    //
3204    oss.str("");    oss.str("");
3205    oss << " SELECT ID FROM GL_RUN_FRAGMENTS WHERE"    oss << " SELECT ID FROM GL_RUN_FRAGMENTS WHERE"
3206        << " INSERT_TIME <= '" << time->AsSQLString() << "';";        << " INSERT_TIME <= '" << clean_time->AsSQLString() << "';";
3207    //    //
3208    if ( IsDebug() ) printf(" Select from GL_RUN_FRAGMENTS runs older than %s : query is \n %s \n",time->AsSQLString(),oss.str().c_str());    if ( IsDebug() ) printf(" Select from GL_RUN_FRAGMENTS runs older than %s : query is \n %s \n",clean_time->AsSQLString(),oss.str().c_str());
3209    result = conn->Query(oss.str().c_str());    result = conn->Query(oss.str().c_str());
3210    //    //
3211    if ( result ){    if ( result ){
# Line 3291  Int_t PamelaDBOperations::ValidateRuns() Line 3303  Int_t PamelaDBOperations::ValidateRuns()
3303    TSQLResult *result = 0;    TSQLResult *result = 0;
3304    TSQLRow    *row    = 0;    TSQLRow    *row    = 0;
3305    //    //
   UInt_t timelim = 0;  
   TDatime *time = new TDatime();  
   //  
3306    stringstream oss;    stringstream oss;
3307    oss.str("");    oss.str("");
3308    //    //
   //  
   //  
   if ( olderthan < 0 ){  
     if ( IsDebug() ) printf(" Do not validate runs \n");  
     return(1);  
   };  
   //  
   // timelim = now - olderthan  
   //  
   time->Set();  
   timelim =  (UInt_t)time->Convert() - olderthan;  
   time->Set(timelim,false);  
   
   printf("Validate runs older than %s \n",time->AsSQLString());  
   
3309    // =======================================================    // =======================================================
3310    // validate runs by checking missing calibrations    // validate runs by checking missing calibrations
3311    // =======================================================    // =======================================================
# Line 3321  Int_t PamelaDBOperations::ValidateRuns() Line 3315  Int_t PamelaDBOperations::ValidateRuns()
3315    // 1) get the OBT of the last run inserted after clean-time limit    // 1) get the OBT of the last run inserted after clean-time limit
3316    // --------------------------------------------------------------    // --------------------------------------------------------------
3317    oss.str("");    oss.str("");
3318    oss << " SELECT * FROM GL_RUN  WHERE INSERT_TIME <= '" << time->AsSQLString()    oss << " SELECT * FROM GL_RUN  WHERE INSERT_TIME <= '" << clean_time->AsSQLString()
3319        << "' ORDER BY INSERT_TIME DESC LIMIT 1;";            << "' ORDER BY RUNHEADER_TIME DESC LIMIT 1;";
3320    printf(" Get start validation-time: query is \n %s \n",oss.str().c_str());    if ( IsDebug() ) printf(" Get start validation-time: query is \n %s \n",oss.str().c_str());
3321    result = conn->Query(oss.str().c_str());    result = conn->Query(oss.str().c_str());
3322    if ( !result ) throw -4;    if ( !result ) throw -4;
3323    if ( !result->GetRowCount() ) {    if ( !result->GetRowCount() ) {
# Line 3332  Int_t PamelaDBOperations::ValidateRuns() Line 3326  Int_t PamelaDBOperations::ValidateRuns()
3326    }else{    }else{
3327          row = result->Next();          row = result->Next();
3328          t_start = (UInt_t)atoll(row->GetField(4));          t_start = (UInt_t)atoll(row->GetField(4));
         printf("t_start %i\n",t_start);  
3329    };      };  
3330    // --------------------------------------------------------------    // --------------------------------------------------------------
3331    // 2) get the OBT of the last validated run    // 2) get the OBT of the last validated run
# Line 3340  Int_t PamelaDBOperations::ValidateRuns() Line 3333  Int_t PamelaDBOperations::ValidateRuns()
3333    oss.str("");    oss.str("");
3334    oss << " SELECT * FROM GL_RUN  WHERE VALIDATION=1 AND RUNHEADER_TIME<="<< t_start    oss << " SELECT * FROM GL_RUN  WHERE VALIDATION=1 AND RUNHEADER_TIME<="<< t_start
3335        <<" ORDER BY RUNHEADER_TIME DESC LIMIT 1;";        <<" ORDER BY RUNHEADER_TIME DESC LIMIT 1;";
3336    printf(" Get stop validation-time: query is \n %s \n",oss.str().c_str());    if ( IsDebug() ) printf(" Get stop validation-time: query is \n %s \n",oss.str().c_str());
3337    result = conn->Query(oss.str().c_str());    result = conn->Query(oss.str().c_str());
3338    if ( !result ) throw -4;    if ( !result ) throw -4;
3339    if ( result->GetRowCount() ){    if ( result->GetRowCount() ){
3340            row = result->Next();            row = result->Next();
3341            t_stop = (UInt_t)atoll(row->GetField(4));            t_stop = (UInt_t)atoll(row->GetField(4));
3342    };    };
3343    printf("t_stop %i\n",t_stop);    if ( IsDebug() ) printf("Validation interval: from time %i - to time %i \n\n",t_stop,t_start);
3344    // --------------------------------------------------------------    // --------------------------------------------------------------
3345    // now retrieves runs to be validated    // now retrieves runs to be validated
3346    // --------------------------------------------------------------    // --------------------------------------------------------------
# Line 3356  Int_t PamelaDBOperations::ValidateRuns() Line 3349  Int_t PamelaDBOperations::ValidateRuns()
3349    oss << " AND RUNHEADER_TIME >="<< t_stop;    oss << " AND RUNHEADER_TIME >="<< t_stop;
3350    oss << " ORDER BY RUNHEADER_TIME DESC;";    oss << " ORDER BY RUNHEADER_TIME DESC;";
3351  //  if ( IsDebug() )  //  if ( IsDebug() )
3352    printf(" Check runs for validation: query is \n %s \n",oss.str().c_str());    if ( IsDebug() )printf(" Check runs for validation: query is \n %s \n",oss.str().c_str());
3353    result = conn->Query(oss.str().c_str());    result = conn->Query(oss.str().c_str());
3354    if ( !result ) throw -4;    if ( !result ) throw -4;
3355    if ( !result->GetRowCount() ) printf(" No runs to validate \n");    if ( !result->GetRowCount() ) printf(" No runs to validate \n");
3356    printf("------------------------------------------------------------------------------- \n");  //  printf("------------------------------------------------------------------------------- \n");
3357        
3358    Int_t nrow = 0;    Int_t nrow = 0;
3359    GL_RUN* this_run = new GL_RUN();    GL_RUN* this_run = new GL_RUN();
3360    GL_RUN* next_run = new GL_RUN();    GL_RUN* next_run = new GL_RUN();
3361    Int_t   nseq_max = 100;    Int_t   nseq_max = 1000;
3362  //  UInt_t* sequence = new UInt_t[100];  //  UInt_t* sequence = new UInt_t[100];
3363    vector<UInt_t> sequence(nseq_max);    vector<UInt_t> sequence(nseq_max);
3364    Int_t   nseq = 0;    Int_t   nseq = 0;
# Line 3388  Int_t PamelaDBOperations::ValidateRuns() Line 3381  Int_t PamelaDBOperations::ValidateRuns()
3381            //get run info            //get run info
3382            //------------            //------------
3383            this_run->Set_GL_RUN(row);            this_run->Set_GL_RUN(row);
3384                                
           printf(" RUN ID %i --- TRK_CALIB_USED %i --- RM_ACQ_AFTER_CALIB %i --- TIME %i %i \n",this_run->ID,this_run->TRK_CALIB_USED,this_run->RM_ACQ_AFTER_CALIB,this_run->RUNHEADER_TIME, this_run->RUNTRAILER_TIME);  
             
3385            Bool_t this_BAD = false;            Bool_t this_BAD = false;
3386            if(this_run->GetTRK_CALIB_USED() == 1 || this_run->GetTRK_CALIB_USED() == 2) this_ONLINE = true;            if(this_run->GetTRK_CALIB_USED() == 1 || this_run->GetTRK_CALIB_USED() == 2) this_ONLINE = true;
3387            else if (this_run->GetTRK_CALIB_USED() == 104)                          this_ONLINE = false;            else if (this_run->GetTRK_CALIB_USED() == 104)                          this_ONLINE = false;
3388            else{            else{
3389                    printf("Missing or corrupted header!! \n");  //                printf("Missing or corrupted header!! \n");
3390                    this_ONLINE = false;                    this_ONLINE = false;
3391                    this_BAD = true;                    this_BAD = true;
3392            };            };
# Line 3419  Int_t PamelaDBOperations::ValidateRuns() Line 3410  Int_t PamelaDBOperations::ValidateRuns()
3410                                                        
3411                            if( interval >= 60 )CHECK = true;                     //more than 60 s => there might be a calibration                            if( interval >= 60 )CHECK = true;                     //more than 60 s => there might be a calibration
3412                                                        
 /*                        if( CHECK && !next_run->GetRM_ACQ_AFTER_CALIB() )  
                                   printf(" ValidateRuns ***WARNING*** : DT = %i but RM_ACQ_AFTER_CALIB = %i \n",(t2-t1),next_run->GetRM_ACQ_AFTER_CALIB());*/  
                                                     
                             
3413                            if( !CHECK && this_run->VALIDATION ){                            if( !CHECK && this_run->VALIDATION ){
3414                                    for (Int_t irun = 0; irun < nseq; irun++)assignVALIDATION(sequence[irun],true);                                    for (Int_t irun = 0; irun < nseq; irun++)assignVALIDATION(sequence[irun],true);
3415                                    nseq=0;                                    nseq=0;
# Line 3431  Int_t PamelaDBOperations::ValidateRuns() Line 3418  Int_t PamelaDBOperations::ValidateRuns()
3418                    }else if( !this_ONLINE && next_ONLINE) {              // this: DEFAULT + next:ON-LINE                    }else if( !this_ONLINE && next_ONLINE) {              // this: DEFAULT + next:ON-LINE
3419                                                        
3420                            CHECK = true;                            CHECK = true;
 //                        if( interval < 60 ) printf(" ValidateRuns ***WARNING*** : kkkkkk DT = %i \n",interval);  
3421    
3422                    }else if( !next_ONLINE ){                                             // this:ANY + next:DEFAULT                    }else if( !next_ONLINE ){                                             // this:ANY + next:DEFAULT
3423                                                        
# Line 3445  Int_t PamelaDBOperations::ValidateRuns() Line 3431  Int_t PamelaDBOperations::ValidateRuns()
3431            //----------------------------            //----------------------------
3432            if( CHECK ){            if( CHECK ){
3433                    // check if calibration exists                    // check if calibration exists
3434                    printf("DT %i ===> CHECK Missing calibration\n",interval);                    if ( IsDebug() )printf("DT %i ===> CHECK Missing calibration\n",interval);
3435                    Bool_t MISSING = MissingTRK_CALIB(t1,t2);                    Bool_t MISSING = MissingTRK_CALIB(t1,t2);
3436                    for (Int_t irun = 0; irun < nseq; irun++)assignVALIDATION(sequence[irun],!MISSING);                    for (Int_t irun = 0; irun < nseq; irun++)assignVALIDATION(sequence[irun],!MISSING);
3437                    nseq=0;                    nseq=0;
3438            } else printf("DT %i\n",interval);            };
3439            //--------------            //--------------
3440            //store run info            //store run info
3441            //--------------            //--------------
# Line 3462  Int_t PamelaDBOperations::ValidateRuns() Line 3448  Int_t PamelaDBOperations::ValidateRuns()
3448                    }else printf("ValidateRuns ***WARNING*** : run sequence exceed assumed size (%i) \n",nseq_max);                    }else printf("ValidateRuns ***WARNING*** : run sequence exceed assumed size (%i) \n",nseq_max);
3449            };            };
3450                        
3451              if ( IsDebug() ) printf("%i Run %i \n",nrow,this_run->ID);
3452            nrow++;            nrow++;
3453                        
3454    };    };
# Line 3490  Bool_t PamelaDBOperations::MissingTRK_CA Line 3477  Bool_t PamelaDBOperations::MissingTRK_CA
3477          // which should be equal to the time between ascending-nodes.          // which should be equal to the time between ascending-nodes.
3478          //==============================================================          //==============================================================
3479          if ( t2 - trkcalib->FROM_TIME > 5700) {          if ( t2 - trkcalib->FROM_TIME > 5700) {
3480                  printf("Long time to previous calib %i :-( \n",t2 - trkcalib->FROM_TIME);                  if ( IsDebug() )printf("Long time between calib and run start %i :-( ==> there might be a missing calib \n",t2 - trkcalib->FROM_TIME);
3481          //==============================================================          //==============================================================
3482          // there might be a missing calibration, due to:          // there might be a missing calibration, due to:
3483          // - MM full          // - MM full
# Line 3511  Bool_t PamelaDBOperations::MissingTRK_CA Line 3498  Bool_t PamelaDBOperations::MissingTRK_CA
3498          // it is enough to say that there are no missing calibrations          // it is enough to say that there are no missing calibrations
3499          //==============================================================          //==============================================================
3500          // the long time interval bewteen runs might be due to download          // the long time interval bewteen runs might be due to download
3501          printf("Short time to previous calib %i :-) \n",t2 - trkcalib->FROM_TIME);          if ( IsDebug() )printf("Short time between calib and run start %i :-) ==> OK! \n",t2 - trkcalib->FROM_TIME);
3502          return(false);          return(false);
3503                    
3504  };  };
# Line 3524  Int_t PamelaDBOperations::assignVALIDATI Line 3511  Int_t PamelaDBOperations::assignVALIDATI
3511          TSQLResult *result = 0;          TSQLResult *result = 0;
3512          stringstream oss;          stringstream oss;
3513          oss.str("");          oss.str("");
3514          oss << " UPDATE GL_RUN SET VALIDATION="<< (UInt_t)validation <<" WHERE ID= " << idrun << "';";          oss << " UPDATE GL_RUN SET VALIDATION="<< (UInt_t)validation <<" WHERE ID= " << idrun << ";";
3515          //          //
3516  //      if ( IsDebug() )  //      if ( IsDebug() )
3517          printf(" Set VALIDATION = %i for run %i \n",validation,idrun);  //      printf(" Set VALIDATION = %i for run %i \n",validation,idrun);
3518  //      printf(" Set VALIDATION = %i for run %i : query is \n %s \n",validation,idrun,oss.str().c_str());          if ( IsDebug() )printf(" Query: %s \n",oss.str().c_str());
3519  //      result = conn->Query(oss.str().c_str());          result = conn->Query(oss.str().c_str());
3520  //      if ( !result ) throw -4;          if ( !result ) throw -4;
3521          return(0);          return(0);
3522  }  }
3523    

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.23