| 60 | 
  */ | 
  */ | 
| 61 | 
 PamelaDBOperations::PamelaDBOperations(TString host, TString user, TString password, TString filerawname, TString filerootname, UInt_t boot, UInt_t tsync, UInt_t obt0, Bool_t debug, TString tlefilename, UInt_t dwinput, Bool_t staticp, Bool_t gpamela, Bool_t keepenv){ | 
 PamelaDBOperations::PamelaDBOperations(TString host, TString user, TString password, TString filerawname, TString filerootname, UInt_t boot, UInt_t tsync, UInt_t obt0, Bool_t debug, TString tlefilename, UInt_t dwinput, Bool_t staticp, Bool_t gpamela, Bool_t keepenv){ | 
| 62 | 
   // | 
   // | 
| 63 | 
  | 
   RELAXED = false; | 
| 64 | 
   chewbacca = false; | 
   chewbacca = false; | 
| 65 | 
   chminentry = 0; | 
   chminentry = 0; | 
| 66 | 
   chID = 0; | 
   chID = 0; | 
| 136 | 
       stringstream qu; | 
       stringstream qu; | 
| 137 | 
       TSQLResult *result = 0; | 
       TSQLResult *result = 0; | 
| 138 | 
       TSQLResult *result2 = 0; | 
       TSQLResult *result2 = 0; | 
| 139 | 
  | 
       TSQLResult *result3 = 0; | 
| 140 | 
       TSQLRow    *row    = 0;     | 
       TSQLRow    *row    = 0;     | 
| 141 | 
       TSQLRow    *row2    = 0;     | 
       TSQLRow    *row2    = 0;     | 
| 142 | 
  | 
       TSQLRow    *row3    = 0;     | 
| 143 | 
       TString chpath; | 
       TString chpath; | 
| 144 | 
       TString chfile; | 
       TString chfile; | 
| 145 | 
       UInt_t ridn = 0; | 
       UInt_t ridn = 0; | 
| 146 | 
       qu.str(""); | 
       qu.str(""); | 
| 147 | 
       qu << "SELECT ROOT_ID_N,PKT_NUMBER_INIT,PKT_NUMBER_FINAL,PKT_OBT_INIT,PKT_OBT_FINAL,INSERTED_BY from ROOT_TABLE_MERGING where ID_N=" << chID << ";";  | 
       qu << "SELECT ROOT_ID_N,PKT_NUMBER_INIT,PKT_NUMBER_FINAL,PKT_OBT_INIT,PKT_OBT_FINAL,INSERTED_BY,REAL_TIME_INIT from ROOT_TABLE_MERGING where ID_N=" << chID << ";";  | 
| 148 | 
       if ( debug ) printf(" chewbacca: query is %s \n",qu.str().c_str()); | 
       if ( debug ) printf(" chewbacca: query is %s \n",qu.str().c_str()); | 
| 149 | 
       result = conn->Query(qu.str().c_str()); | 
       result = conn->Query(qu.str().c_str()); | 
| 150 | 
       if ( result ){ | 
       if ( result ){ | 
| 156 | 
           chobtmin = (UInt_t)atoll(row->GetField(3)); | 
           chobtmin = (UInt_t)atoll(row->GetField(3)); | 
| 157 | 
           chobtmax = (UInt_t)atoll(row->GetField(4)); | 
           chobtmax = (UInt_t)atoll(row->GetField(4)); | 
| 158 | 
           chiby = (TString)(row->GetField(5)); | 
           chiby = (TString)(row->GetField(5)); | 
| 159 | 
  | 
           chrtinit = (UInt_t)atoll(row->GetField(6)); | 
| 160 | 
         } else { | 
         } else { | 
| 161 | 
           throw -84; | 
           throw -84; | 
| 162 | 
         }; | 
         }; | 
| 165 | 
       }; | 
       }; | 
| 166 | 
       delete result; | 
       delete result; | 
| 167 | 
       qu.str(""); | 
       qu.str(""); | 
| 168 | 
       qu << "SELECT FOLDER_NAME,FILE_NAME,OBT_TIME_SYNC,LAST_TIME_SYNC_INFO,TIME_OFFSET,BOOT_NUMBER,PKT_NUMBER_INIT,PKT_NUMBER_FINAL,PKT_OBT_INIT,PKT_OBT_FINAL from ROOT_TABLE where ID_N=" << ridn << ";";  | 
       qu << "SELECT FOLDER_NAME,FILE_NAME,OBT_TIME_SYNC,LAST_TIME_SYNC_INFO,TIME_OFFSET,BOOT_NUMBER,PKT_NUMBER_INIT,PKT_NUMBER_FINAL,PKT_OBT_INIT,PKT_OBT_FINAL,REAL_TIME_INIT from ROOT_TABLE where ID_N=" << ridn << ";";  | 
| 169 | 
       if ( debug ) printf(" chewbacca: query is %s \n",qu.str().c_str()); | 
       if ( debug ) printf(" chewbacca: query is %s \n",qu.str().c_str()); | 
| 170 | 
       result2 = conn->Query(qu.str().c_str()); | 
       result2 = conn->Query(qu.str().c_str()); | 
| 171 | 
       if ( result2 ){ | 
       if ( result2 ){ | 
| 182 | 
           chresursts = (UInt_t)atoll(row2->GetField(4)); | 
           chresursts = (UInt_t)atoll(row2->GetField(4)); | 
| 183 | 
           chboot = (UInt_t)atoll(row2->GetField(5)); | 
           chboot = (UInt_t)atoll(row2->GetField(5)); | 
| 184 | 
           // | 
           // | 
| 185 | 
  | 
           if ( !chboot ){ | 
| 186 | 
  | 
             qu.str(""); | 
| 187 | 
  | 
             //      qu << "SELECT BOOT_NUMBER from ROOT_TABLE where BOOT_NUMBER!=0 AND ABS(LAST_TIME_SYNC_INFO-"<< chlastts <<")<10000 AND ABS(REAL_TIME_INIT-"<< row2->GetField(10) <<")<7200 group by BOOT_NUMBER order by BOOT_NUMBER asc;";  | 
| 188 | 
  | 
             qu << "SELECT BOOT_NUMBER from ROOT_TABLE where BOOT_NUMBER!=0 AND ABS(LAST_TIME_SYNC_INFO-"<< chlastts <<")<40000 AND ABS(REAL_TIME_INIT-"<< row2->GetField(10) <<")<40000 group by BOOT_NUMBER order by BOOT_NUMBER asc;"; // relax conditions... 090112 [8RED: error -29] | 
| 189 | 
  | 
             if ( debug ) printf(" chewbacca: query is %s \n",qu.str().c_str()); | 
| 190 | 
  | 
             result3 = conn->Query(qu.str().c_str()); | 
| 191 | 
  | 
             if ( result3 ){ | 
| 192 | 
  | 
               row3 = result3->Next(); | 
| 193 | 
  | 
               if ( row3 && result3->GetRowCount() == 1 ){ | 
| 194 | 
  | 
                 chboot = (UInt_t)atoll(row3->GetField(0)); | 
| 195 | 
  | 
                 if ( debug ) printf(" Found boot_number = %u \n",chboot); | 
| 196 | 
  | 
               } else { | 
| 197 | 
  | 
                 if ( debug ) printf(" AGH CANNOT DETERMINE THE BOOT NUMBER... \n"); | 
| 198 | 
  | 
                 throw -29; | 
| 199 | 
  | 
               }; | 
| 200 | 
  | 
             }; | 
| 201 | 
  | 
           }; | 
| 202 | 
  | 
           // | 
| 203 | 
           chpktinit = (UInt_t)atoll(row2->GetField(6)); | 
           chpktinit = (UInt_t)atoll(row2->GetField(6)); | 
| 204 | 
           chpktfinal = (UInt_t)atoll(row2->GetField(7)); | 
           chpktfinal = (UInt_t)atoll(row2->GetField(7)); | 
| 205 | 
           chobtinit = (UInt_t)atoll(row2->GetField(8)); | 
           chobtinit = (UInt_t)atoll(row2->GetField(8)); | 
| 427 | 
       if ( IsDebug() ) printf(" Agh problems determining the orbit number! name = %s \n",name.Data()); | 
       if ( IsDebug() ) printf(" Agh problems determining the orbit number! name = %s \n",name.Data()); | 
| 428 | 
       return; | 
       return; | 
| 429 | 
     }; | 
     }; | 
| 430 | 
     TString dwo = 0; | 
     TString dwo = ""; | 
| 431 | 
     for (Int_t i = 0; i<5; i++){ | 
     for (Int_t i = 0; i<5; i++){ | 
| 432 | 
       dwo.Append(name[i],1); | 
       dwo.Append(name[i],1); | 
| 433 | 
     }; | 
     }; | 
| 821 | 
     ph = eh->GetPscuHeader(); | 
     ph = eh->GetPscuHeader(); | 
| 822 | 
     pktlast = ph->GetCounter(); | 
     pktlast = ph->GetCounter(); | 
| 823 | 
     nevent = upperentry - chminentry; | 
     nevent = upperentry - chminentry; | 
| 824 | 
  | 
     if ( ((Int_t)upperentry - (Int_t)chminentry) < 0 ) nevent = 0; // nevent is UInt_t! 090112 [8RED: error -88] | 
| 825 | 
  | 
     if ( IsDebug() ) printf(" Setting nevent to %u - upperentry %i chminentry %i \n",nevent,upperentry,chminentry); | 
| 826 | 
     // | 
     // | 
| 827 | 
   } else { | 
   } else { | 
| 828 | 
     upperpkt = PKT(pktlast); | 
     upperpkt = PKT(pktlast); | 
| 831 | 
   }; | 
   }; | 
| 832 | 
   // | 
   // | 
| 833 | 
   if ( chewbacca && nevent < 1 ) { | 
   if ( chewbacca && nevent < 1 ) { | 
| 834 | 
  | 
     if ( IsDebug() ) printf(" chewbacca and no events in the file \n"); | 
| 835 | 
     pktfirst = chpktmin; | 
     pktfirst = chpktmin; | 
| 836 | 
     upperpkt = PKT(chpktmax); | 
     upperpkt = PKT(chpktmax); | 
| 837 | 
     pktlast = chpktmax; | 
     pktlast = chpktmax; | 
| 857 | 
   //  if ( nevent < jump ) jump = int(nevent/10); | 
   //  if ( nevent < jump ) jump = int(nevent/10); | 
| 858 | 
   //  if ( !jump ) jump = 1; | 
   //  if ( !jump ) jump = 1; | 
| 859 | 
   // | 
   // | 
| 860 | 
   if ( (PKT(pktlast) < PKT(pktfirst) && OBT(obtlast) < OBT(obtfirst)) || (labs(PKT(pktlast)-PKT(pktfirst))<deltapkt && labs(OBT(obtlast)-OBT(obtfirst))<deltaobt) && nevent > deltapkt ){ | 
  | 
| 861 | 
  | 
   if ( ((PKT(pktlast) < PKT(pktfirst) && OBT(obtlast) < OBT(obtfirst)) || (labs(PKT(pktlast)-PKT(pktfirst))<deltapkt && labs(OBT(obtlast)-OBT(obtfirst))<deltaobt)) && nevent > deltapkt ){ | 
| 862 | 
     // | 
     // | 
| 863 | 
     if ( IsDebug() ) printf(" starting jump %i \n",jump); | 
     if ( IsDebug() ) printf(" starting jump %i \n",jump); | 
| 864 | 
     //    if ( IsDebug() ) printf(" (PKT(pktlast) < PKT(pktfirst) && OBT(obtlast) > OBT(obtfirst)) %llu < %llu && %llu > %llu \n     OR \n     (PKT(pktlast) > PKT(pktfirst) && OBT(obtlast) < OBT(obtfirst)) %llu > %llu && %llu < %llu \n",PKT(pktlast),PKT(pktfirst),OBT(obtlast),OBT(obtfirst),PKT(pktlast),PKT(pktfirst),OBT(obtlast),OBT(obtfirst));  | 
     //    if ( IsDebug() ) printf(" (PKT(pktlast) < PKT(pktfirst) && OBT(obtlast) > OBT(obtfirst)) %llu < %llu && %llu > %llu \n     OR \n     (PKT(pktlast) > PKT(pktfirst) && OBT(obtlast) < OBT(obtfirst)) %llu > %llu && %llu < %llu \n",PKT(pktlast),PKT(pktfirst),OBT(obtlast),OBT(obtfirst),PKT(pktlast),PKT(pktfirst),OBT(obtlast),OBT(obtfirst));  | 
| 1505 | 
     glrun->SetRUNTRAILER_PKT(lastPkt); | 
     glrun->SetRUNTRAILER_PKT(lastPkt); | 
| 1506 | 
     //     | 
     //     | 
| 1507 | 
   }; | 
   }; | 
| 1508 | 
  | 
   // | 
| 1509 | 
  | 
   // ad hoc solution for INF EV_TO [8RED] 090113 | 
| 1510 | 
  | 
   // | 
| 1511 | 
  | 
   if ( !firstev && lastev == -1 ){ | 
| 1512 | 
  | 
     if ( IsDebug() ) printf(" EE firstev %i lastev %i nevents %i \n",firstev,lastev,lastev-firstev+1); | 
| 1513 | 
  | 
     firstev = 1; | 
| 1514 | 
  | 
     lastev = 0; | 
| 1515 | 
  | 
   }; | 
| 1516 | 
   glrun->SetEV_FROM((UInt_t)firstev); | 
   glrun->SetEV_FROM((UInt_t)firstev); | 
| 1517 | 
   glrun->SetEV_TO((UInt_t)lastev); | 
   glrun->SetEV_TO((UInt_t)lastev); | 
| 1518 | 
   glrun->SetNEVENTS((UInt_t)lastev-(UInt_t)firstev+1); | 
   glrun->SetNEVENTS((UInt_t)lastev-(UInt_t)firstev+1); | 
| 1641 | 
     if ( !row ){ | 
     if ( !row ){ | 
| 1642 | 
       oss.str(""); | 
       oss.str(""); | 
| 1643 | 
       oss << "SELECT YEAR(OFFSET_DATE),MONTH(OFFSET_DATE),DAY(OFFSET_DATE),HOUR(OFFSET_DATE),MINUTE(OFFSET_DATE),SECOND(OFFSET_DATE),ID 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),ID FROM GL_RESURS_OFFSET WHERE FROM_ORBIT< "  | 
| 1644 | 
           << dworbit << " order by FROM_ORBIT desc limit 1;"; | 
           << dworbit << " AND SPECIAL_FILE='' order by FROM_ORBIT desc limit 1;"; | 
| 1645 | 
       if ( IsDebug() ) printf(" %s \n",oss.str().c_str()); | 
       if ( IsDebug() ) printf(" %s \n",oss.str().c_str()); | 
| 1646 | 
       result = conn->Query(oss.str().c_str()); | 
       result = conn->Query(oss.str().c_str()); | 
| 1647 | 
       if ( !result ) throw -10; | 
       if ( !result ) throw -10; | 
| 2738 | 
       glrun->Fill_GL_RUN_FRAGMENTS(conn); | 
       glrun->Fill_GL_RUN_FRAGMENTS(conn); | 
| 2739 | 
       // | 
       // | 
| 2740 | 
     } else { | 
     } else { | 
| 2741 | 
       if ( IsDebug() ) printf(" The run is already present in the fragment table \n"); | 
       if ( IsDebug() ) printf(" The run is already present in the fragment table, relaxed %u \n",RELAXED); | 
| 2742 | 
       if ( PEDANTIC ) throw -69; | 
       if ( !RELAXED ){ | 
| 2743 | 
       return; | 
         if ( PEDANTIC ) throw -69; | 
| 2744 | 
  | 
         return; | 
| 2745 | 
  | 
       } else { | 
| 2746 | 
  | 
         glrun->SetID((UInt_t)atoll(row->GetField(0))); | 
| 2747 | 
  | 
         glrun->SetID_RUN_FRAG(0); | 
| 2748 | 
  | 
       }; | 
| 2749 | 
     }; | 
     }; | 
| 2750 | 
     // | 
     // | 
| 2751 | 
     if ( chewbacca && mishead && mistrail ) goto justcheck; | 
     if ( chewbacca && mishead && mistrail ) goto justcheck; | 
| 3103 | 
           apkt = PKT(ph->GetCounter()); | 
           apkt = PKT(ph->GetCounter()); | 
| 3104 | 
           aobt = OBT(ph->GetOrbitalTime());      | 
           aobt = OBT(ph->GetOrbitalTime());      | 
| 3105 | 
           lastev--; | 
           lastev--; | 
| 3106 | 
           if ( PEDANTIC ) throw -72; | 
           if ( PEDANTIC && !RELAXED) throw -72; | 
| 3107 | 
         }; | 
         }; | 
| 3108 | 
         if ( IsDebug() ) printf(" Check overlapping events done: %u %u %llu %llu lastev is %i\n",apkt,bpkt,aobt,bobt,lastev); | 
         if ( IsDebug() ) printf(" Check overlapping events done: %u %u %llu %llu lastev is %i\n",apkt,bpkt,aobt,bobt,lastev); | 
| 3109 | 
         // | 
         // | 
| 3171 | 
       // not found, has this run already inserted in the GL_RUN or in the GL_RUN_FRAGMENTS table? | 
       // not found, has this run already inserted in the GL_RUN or in the GL_RUN_FRAGMENTS table? | 
| 3172 | 
       // | 
       // | 
| 3173 | 
       oss.str(""); | 
       oss.str(""); | 
| 3174 | 
       oss << " SELECT ID FROM GL_RUN WHERE " | 
       oss << " SELECT ID,ID_ROOT_L0 FROM GL_RUN WHERE " | 
| 3175 | 
           << " BOOT_NUMBER=" << this->GetBOOTnumber() << " AND (" | 
           << " BOOT_NUMBER=" << this->GetBOOTnumber() << " AND (" | 
| 3176 | 
           << " (RUNHEADER_TIME>=" << (UInt_t)(glrun->GetRUNHEADER_TIME()-10) << " AND " | 
           << " (RUNHEADER_TIME>=" << (UInt_t)(glrun->GetRUNHEADER_TIME()-10) << " AND " | 
| 3177 | 
           << " RUNTRAILER_TIME<=" << (UInt_t)(glrun->GetRUNTRAILER_TIME()+10) << " AND (" | 
           << " RUNTRAILER_TIME<=" << (UInt_t)(glrun->GetRUNTRAILER_TIME()+10) << " AND (" | 
| 3194 | 
       row = result->Next(); | 
       row = result->Next(); | 
| 3195 | 
       // | 
       // | 
| 3196 | 
       if ( row ){ | 
       if ( row ){ | 
| 3197 | 
         if ( IsDebug() ) printf(" The run is already present in the GL_RUN table \n"); | 
         // | 
| 3198 | 
         if ( PEDANTIC ) throw -70; | 
         // we end up here if chewbacca and we have RH---| small gap |---RT, in this case the two pieces are attached and moved to GL_RUN. We are now processing the  | 
| 3199 | 
  | 
         // "small gap" piece... we recognize this since: we have two entries from this query, the pkt number is consistent with our pkt number. | 
| 3200 | 
  | 
         // | 
| 3201 | 
  | 
         // 090112 [8RED (-70): RUN ALREADY INSERTED] | 
| 3202 | 
  | 
         // | 
| 3203 | 
  | 
         Bool_t OK = false; | 
| 3204 | 
  | 
         UInt_t IDRL2A = 0; | 
| 3205 | 
  | 
         UInt_t IDRL2B = 0; | 
| 3206 | 
  | 
         if ( chewbacca ){ | 
| 3207 | 
  | 
           if ( result->GetRowCount() == 2 ){ | 
| 3208 | 
  | 
             IDRL2A = (UInt_t)atoll(row->GetField(0)); | 
| 3209 | 
  | 
             UInt_t IDRL0A = (UInt_t)atoll(row->GetField(1)); | 
| 3210 | 
  | 
             row = result->Next(); | 
| 3211 | 
  | 
             IDRL2B = (UInt_t)atoll(row->GetField(0)); | 
| 3212 | 
  | 
             UInt_t IDRL0B = (UInt_t)atoll(row->GetField(1)); | 
| 3213 | 
  | 
             if ( IsDebug() ) printf(" IDRL0A %u B %u IDRL2A %u B %u \n",IDRL0A,IDRL0B,IDRL2A,IDRL2B); | 
| 3214 | 
  | 
             if ( IDRL0A == IDRL0B ){ | 
| 3215 | 
  | 
               TSQLResult *result2 = 0; | 
| 3216 | 
  | 
               TSQLRow    *row2    = 0; | 
| 3217 | 
  | 
               oss.str(""); | 
| 3218 | 
  | 
               oss << "select PKT_NUMBER_FINAL from ROOT_TABLE_MERGING where REAL_TIME_INIT<" << chrtinit << " order by REAL_TIME_INIT desc limit 1;"; | 
| 3219 | 
  | 
               if ( IsDebug() ) printf(" Check if we are in the case RH---| small gap |---RT: query is \n %s \n",oss.str().c_str()); | 
| 3220 | 
  | 
               result2 = conn->Query(oss.str().c_str()); | 
| 3221 | 
  | 
               // | 
| 3222 | 
  | 
               if ( !result2 ) throw -4; | 
| 3223 | 
  | 
               // | 
| 3224 | 
  | 
               row2 = result2->Next(); | 
| 3225 | 
  | 
               // | 
| 3226 | 
  | 
               if ( row2 ){ | 
| 3227 | 
  | 
                 UInt_t PKA = (UInt_t)atoll(row2->GetField(0)); | 
| 3228 | 
  | 
                 delete result2; | 
| 3229 | 
  | 
                 oss.str(""); | 
| 3230 | 
  | 
                 oss << "select PKT_NUMBER_INIT from ROOT_TABLE_MERGING where REAL_TIME_INIT>" << chrtinit << " order by REAL_TIME_INIT asc limit 1;"; | 
| 3231 | 
  | 
                 if ( IsDebug() ) printf(" Check if we are in the case RH---| small gap |---RT: query is \n %s \n",oss.str().c_str()); | 
| 3232 | 
  | 
                 result2 = conn->Query(oss.str().c_str()); | 
| 3233 | 
  | 
                 // | 
| 3234 | 
  | 
                 if ( !result2 ) throw -4; | 
| 3235 | 
  | 
                 // | 
| 3236 | 
  | 
                 row2 = result2->Next(); | 
| 3237 | 
  | 
                 // | 
| 3238 | 
  | 
                 if ( row2 ){ | 
| 3239 | 
  | 
                   UInt_t PKB = (UInt_t)atoll(row2->GetField(0)); | 
| 3240 | 
  | 
                   // | 
| 3241 | 
  | 
                   if ( IsDebug() ) printf(" PKT(PKA) + 1 %llu == runheaderpkt %llu && PKB = runtrailer %llu + 1 %llu \n",PKT(PKA)+1LL, PKT(glrun->GetRUNHEADER_PKT()),PKT(PKB), PKT(glrun->GetRUNTRAILER_PKT())+1LL); | 
| 3242 | 
  | 
                   if ( PKT(PKA)+1LL == PKT(glrun->GetRUNHEADER_PKT()) && PKT(PKB) == PKT(glrun->GetRUNTRAILER_PKT())+1LL ){ | 
| 3243 | 
  | 
                     if ( IsDebug() ) printf(" Ok, we are in the case: RH---| small gap |---RT \n"); | 
| 3244 | 
  | 
                     OK = true; | 
| 3245 | 
  | 
                   }; | 
| 3246 | 
  | 
                 }; | 
| 3247 | 
  | 
               };                   | 
| 3248 | 
  | 
             }; | 
| 3249 | 
  | 
           };       | 
| 3250 | 
  | 
         }; | 
| 3251 | 
  | 
         if ( OK ){ | 
| 3252 | 
  | 
           // | 
| 3253 | 
  | 
           // this is the case in which we must insert a piece of run between two fragments in the GL_RUN table | 
| 3254 | 
  | 
           // | 
| 3255 | 
  | 
           // we have to update with runheader/trailer infos our run and we have to change the ROOT_ID_FRAG of the header piece ( 1/2 2/1 must become 1/3 3/2 2/1 ) | 
| 3256 | 
  | 
           // | 
| 3257 | 
  | 
           GL_RUN *glA = new GL_RUN(); | 
| 3258 | 
  | 
           glA->Query_GL_RUN(IDRL2A,conn); | 
| 3259 | 
  | 
           // | 
| 3260 | 
  | 
           if ( glA->GetACQ_BUILD_INFO() != 0 ){ | 
| 3261 | 
  | 
             // | 
| 3262 | 
  | 
             // the first piece contains a good runheader we can update all the other runs with correct infos! | 
| 3263 | 
  | 
             // | 
| 3264 | 
  | 
             oss.str(""); | 
| 3265 | 
  | 
             oss << "UPDATE GL_RUN_FRAGMENTS SET " | 
| 3266 | 
  | 
                 << " RUNHEADER_TIME=" << glA->GetRUNHEADER_TIME()<< " , " | 
| 3267 | 
  | 
                 << " RUNHEADER_OBT=" << glA->GetRUNHEADER_OBT()<< " , " | 
| 3268 | 
  | 
                 << " RUNHEADER_PKT=" << glA->GetRUNHEADER_PKT()<< " , " | 
| 3269 | 
  | 
                 << " COMPILATIONTIMESTAMP=" << glA->GetCOMPILATIONTIMESTAMP()<< " , " | 
| 3270 | 
  | 
                 << " FAV_WRK_SCHEDULE=" << glA->GetFAV_WRK_SCHEDULE()<< " , " | 
| 3271 | 
  | 
                 << " EFF_WRK_SCHEDULE=" << glA->GetEFF_WRK_SCHEDULE()<< " , " | 
| 3272 | 
  | 
                 << " PRH_VAR_TRG_MODE_A=" << glA->GetPRH_VAR_TRG_MODE_A()<< " , " | 
| 3273 | 
  | 
                 << " PRH_VAR_TRG_MODE_B=" << glA->GetPRH_VAR_TRG_MODE_B()<< " , " | 
| 3274 | 
  | 
                 << " ACQ_BUILD_INFO=" << glA->GetACQ_BUILD_INFO()<< " , " | 
| 3275 | 
  | 
                 << " ACQ_VAR_INFO=" << glA->GetACQ_VAR_INFO()<< " , " | 
| 3276 | 
  | 
                 << " RM_ACQ_AFTER_CALIB=" << glA->GetRM_ACQ_AFTER_CALIB()<< " , "   | 
| 3277 | 
  | 
                 << " RM_ACQ_SETTING_MODE=" << glA->GetRM_ACQ_SETTING_MODE()<< " , "   | 
| 3278 | 
  | 
                 << " TRK_CALIB_USED=" << glA->GetTRK_CALIB_USED()<< " , "   | 
| 3279 | 
  | 
                 << " CAL_DSP_MASK=" << glA->GetCAL_DSP_MASK()<< " , "   | 
| 3280 | 
  | 
                 << " LAST_TIMESYNC=" << glA->GetLAST_TIMESYNC()<< " , "; | 
| 3281 | 
  | 
             // | 
| 3282 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S3S2S12() ) | 
| 3283 | 
  | 
               oss << " PHYSENDRUN_MASK_S3S2S12=" << glA->GetPHYSENDRUN_MASK_S3S2S12() << " , ";  | 
| 3284 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S11CRC() ) | 
| 3285 | 
  | 
               oss << " PHYSENDRUN_MASK_S11CRC=" << glA->GetPHYSENDRUN_MASK_S11CRC() << " , "; | 
| 3286 | 
  | 
             //         | 
| 3287 | 
  | 
             oss << " OBT_TIMESYNC=" << glA->GetOBT_TIMESYNC(); | 
| 3288 | 
  | 
             oss << " WHERE ID=" << glrun->GetID() << ";"; | 
| 3289 | 
  | 
             if ( IsDebug() ) printf(" update with correct infos: %s\n",oss.str().c_str()); | 
| 3290 | 
  | 
             conn->Query(oss.str().c_str());      | 
| 3291 | 
  | 
             // | 
| 3292 | 
  | 
           } else { | 
| 3293 | 
  | 
             // | 
| 3294 | 
  | 
             // sig no runheader, let set anyway what is possible... | 
| 3295 | 
  | 
             // | 
| 3296 | 
  | 
             oss.str(""); | 
| 3297 | 
  | 
             oss << "UPDATE GL_RUN_FRAGMENTS SET " | 
| 3298 | 
  | 
                 << " RUNHEADER_TIME=" << glA->GetRUNHEADER_TIME()<< " , "; | 
| 3299 | 
  | 
             // | 
| 3300 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S3S2S12() ) | 
| 3301 | 
  | 
               oss << " PHYSENDRUN_MASK_S3S2S12=" << glA->GetPHYSENDRUN_MASK_S3S2S12()<< " , "; | 
| 3302 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S11CRC() ) | 
| 3303 | 
  | 
               oss << " PHYSENDRUN_MASK_S11CRC=" << glA->GetPHYSENDRUN_MASK_S11CRC()<< " , ";  | 
| 3304 | 
  | 
             //         | 
| 3305 | 
  | 
             oss << " RUNHEADER_OBT=" << glA->GetRUNHEADER_OBT()<< " , " | 
| 3306 | 
  | 
                 << " RUNHEADER_PKT=" << glA->GetRUNHEADER_PKT(); | 
| 3307 | 
  | 
             oss << " WHERE ID=" << glrun->GetID() << ";"; | 
| 3308 | 
  | 
             if ( IsDebug() ) printf(" update with correct infos2: %s\n",oss.str().c_str()); | 
| 3309 | 
  | 
             conn->Query(oss.str().c_str());      | 
| 3310 | 
  | 
           }; | 
| 3311 | 
  | 
           // | 
| 3312 | 
  | 
           // update runheader ROOT_ID_FRAG | 
| 3313 | 
  | 
           // | 
| 3314 | 
  | 
           oss.str(""); | 
| 3315 | 
  | 
           oss << "UPDATE GL_RUN SET ID_RUN_FRAG = " << glrun->GetID() << " where ID = " << IDRL2A << ";"; | 
| 3316 | 
  | 
           if ( IsDebug() ) printf(" update gl_run to have cross indexing: %s\n",oss.str().c_str()); | 
| 3317 | 
  | 
           conn->Query(oss.str().c_str()); | 
| 3318 | 
  | 
           // | 
| 3319 | 
  | 
           // now let's look for runtrailer if any in the last run | 
| 3320 | 
  | 
           // | 
| 3321 | 
  | 
           glA->Query_GL_RUN(IDRL2B,conn); | 
| 3322 | 
  | 
           // | 
| 3323 | 
  | 
           if ( glA->GetPKT_READY_COUNTER() != 0 ){ | 
| 3324 | 
  | 
             // | 
| 3325 | 
  | 
             // the first piece contains a good runtrailer we can update all the other runs with correct infos! | 
| 3326 | 
  | 
             // | 
| 3327 | 
  | 
             oss.str(""); | 
| 3328 | 
  | 
             oss << "UPDATE GL_RUN_FRAGMENTS SET " | 
| 3329 | 
  | 
                 << " RUNTRAILER_TIME=" << glA->GetRUNTRAILER_TIME()<< " , " | 
| 3330 | 
  | 
                 << " RUNTRAILER_OBT=" << glA->GetRUNTRAILER_OBT()<< " , " | 
| 3331 | 
  | 
                 << " RUNTRAILER_PKT=" << glA->GetRUNTRAILER_PKT()<< " , " | 
| 3332 | 
  | 
                 << " PKT_COUNTER=" << glA->GetPKT_COUNTER()<< " , "; | 
| 3333 | 
  | 
             // | 
| 3334 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S3S2S12() ){ | 
| 3335 | 
  | 
               oss << " PHYSENDRUN_MASK_S3S2S12=" << glA->GetPHYSENDRUN_MASK_S3S2S12()<< " , "; }; | 
| 3336 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S11CRC() ) { | 
| 3337 | 
  | 
               oss << " PHYSENDRUN_MASK_S11CRC=" << glA->GetPHYSENDRUN_MASK_S11CRC()<< " , "; }; | 
| 3338 | 
  | 
             //         | 
| 3339 | 
  | 
             oss << " PKT_READY_COUNTER=" << glA->GetPKT_READY_COUNTER() | 
| 3340 | 
  | 
                 << " WHERE ID=" << glrun->GetID() << ";"; | 
| 3341 | 
  | 
             if ( IsDebug() ) printf(" update with correct trailer infos: %s\n",oss.str().c_str()); | 
| 3342 | 
  | 
             conn->Query(oss.str().c_str());      | 
| 3343 | 
  | 
             // | 
| 3344 | 
  | 
           } else { | 
| 3345 | 
  | 
             // | 
| 3346 | 
  | 
             // sig no runtrailer, let set anyway what is possible... | 
| 3347 | 
  | 
             // | 
| 3348 | 
  | 
             oss.str(""); | 
| 3349 | 
  | 
             oss << "UPDATE GL_RUN_FRAGMENTS SET " | 
| 3350 | 
  | 
                 << " RUNTRAILER_TIME=" << glA->GetRUNTRAILER_TIME()<< " , " | 
| 3351 | 
  | 
                 << " RUNTRAILER_OBT=" << glA->GetRUNTRAILER_OBT()<< " , "; | 
| 3352 | 
  | 
               // | 
| 3353 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S3S2S12() ){ | 
| 3354 | 
  | 
               oss << " PHYSENDRUN_MASK_S3S2S12=" << glA->GetPHYSENDRUN_MASK_S3S2S12()<< " , "; }; | 
| 3355 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S11CRC() ){ | 
| 3356 | 
  | 
               oss << " PHYSENDRUN_MASK_S11CRC=" << glA->GetPHYSENDRUN_MASK_S11CRC()<< " , "; }; | 
| 3357 | 
  | 
             //         | 
| 3358 | 
  | 
             oss << " RUNTRAILER_PKT=" << glrun->GetRUNTRAILER_PKT() | 
| 3359 | 
  | 
                 << " WHERE ID=" << glrun->GetID() << ";"; | 
| 3360 | 
  | 
             if ( IsDebug() ) printf(" update with correct trailer infos2: %s\n",oss.str().c_str()); | 
| 3361 | 
  | 
             conn->Query(oss.str().c_str());      | 
| 3362 | 
  | 
           }; | 
| 3363 | 
  | 
           // | 
| 3364 | 
  | 
           UInt_t myi = glrun->GetID(); | 
| 3365 | 
  | 
           oss.str(""); | 
| 3366 | 
  | 
           oss << " ID= "<< myi; | 
| 3367 | 
  | 
           // | 
| 3368 | 
  | 
           glrun->Query_GL_RUN_FRAGMENTS(oss.str().c_str(),conn);    | 
| 3369 | 
  | 
           // | 
| 3370 | 
  | 
           // fill the new run in GL_RUN | 
| 3371 | 
  | 
           // | 
| 3372 | 
  | 
           glrun->SetID_RUN_FRAG(IDRL2B); | 
| 3373 | 
  | 
           glrun->Fill_GL_RUN(conn);      | 
| 3374 | 
  | 
           glrun->DeleteRun(conn,0,"GL_RUN_FRAGMENTS"); | 
| 3375 | 
  | 
           delete glA; | 
| 3376 | 
  | 
           // | 
| 3377 | 
  | 
         } else { | 
| 3378 | 
  | 
           // | 
| 3379 | 
  | 
           // is just a repetition | 
| 3380 | 
  | 
           // | 
| 3381 | 
  | 
           if ( IsDebug() ) printf(" The run is already present in the GL_RUN table \n");         | 
| 3382 | 
  | 
           if ( PEDANTIC ) throw -70; | 
| 3383 | 
  | 
         }; | 
| 3384 | 
  | 
         // | 
| 3385 | 
       } else { | 
       } else { | 
| 3386 | 
         if ( NoFrag() ){ | 
         if ( NoFrag() ){ | 
| 3387 | 
           glrun->SetID_RUN_FRAG(glrun->GetID()); | 
           glrun->SetID_RUN_FRAG(glrun->GetID()); | 
| 4236 | 
   UInt_t totime = 0; | 
   UInt_t totime = 0; | 
| 4237 | 
   UInt_t obt = 0; | 
   UInt_t obt = 0; | 
| 4238 | 
   UInt_t pkt = 0; | 
   UInt_t pkt = 0; | 
| 4239 | 
  | 
   Float_t totped = 0.; | 
| 4240 | 
   // | 
   // | 
| 4241 | 
   tr = (TTree*)file->Get("CalibCalPed"); | 
   tr = (TTree*)file->Get("CalibCalPed"); | 
| 4242 | 
   if ( !tr || tr->IsZombie() ) throw -21; | 
   if ( !tr || tr->IsZombie() ) throw -21; | 
| 4254 | 
       if ( calibCalPed->cstwerr[section] ){ | 
       if ( calibCalPed->cstwerr[section] ){ | 
| 4255 | 
         valid = 1; | 
         valid = 1; | 
| 4256 | 
         if ( calibCalPed->cperror[section] ) valid = 0; | 
         if ( calibCalPed->cperror[section] ) valid = 0; | 
| 4257 | 
  | 
         // | 
| 4258 | 
  | 
         // check pedestal values for one plane, if all zeros calibration is not valid (calorimeter power problems) [8th data reduction bug, fixed on 25/11/2009 by E.M.] | 
| 4259 | 
  | 
         // | 
| 4260 | 
  | 
         totped = 0.; | 
| 4261 | 
  | 
         Int_t ns = 0; | 
| 4262 | 
  | 
         if ( section == 2 ) ns = 3;  | 
| 4263 | 
  | 
         if ( section == 3 ) ns = 1;  | 
| 4264 | 
  | 
         if ( section == 1 ) ns = 2;  | 
| 4265 | 
  | 
         for (UInt_t ss=0; ss<96; ss++){ | 
| 4266 | 
  | 
           totped += fabs(calibCalPed->calped[ns][0][ss]); | 
| 4267 | 
  | 
         } | 
| 4268 | 
  | 
         if ( totped < 1. ){ | 
| 4269 | 
  | 
           if ( IsDebug() ) printf(" Section %i totped %f -  No calibration data! Calorimeter power problems? \n",section,totped); | 
| 4270 | 
  | 
           valid = 0; | 
| 4271 | 
  | 
         }; | 
| 4272 | 
  | 
         // | 
| 4273 | 
         ph = eh->GetPscuHeader(); | 
         ph = eh->GetPscuHeader(); | 
| 4274 | 
         obt = ph->GetOrbitalTime();   | 
         obt = ph->GetOrbitalTime();   | 
| 4275 | 
         pkt = ph->GetCounter();   | 
         pkt = ph->GetCounter();   | 
| 4437 | 
   tr->SetBranchAddress("Header", &eh); | 
   tr->SetBranchAddress("Header", &eh); | 
| 4438 | 
   nevents = tr->GetEntries(); | 
   nevents = tr->GetEntries(); | 
| 4439 | 
   // | 
   // | 
| 4440 | 
  | 
   Float_t totpul = 0.; | 
| 4441 | 
  | 
   // | 
| 4442 | 
   if ( nevents > 0 ){ | 
   if ( nevents > 0 ){ | 
| 4443 | 
     // | 
     // | 
| 4444 | 
     for (UInt_t i=0; i < nevents; i++){ | 
     for (UInt_t i=0; i < nevents; i++){ | 
| 4448 | 
         if ( cp1->pstwerr[section] && cp1->unpackError == 0 ){ | 
         if ( cp1->pstwerr[section] && cp1->unpackError == 0 ){ | 
| 4449 | 
           valid = 1; | 
           valid = 1; | 
| 4450 | 
           if ( cp1->pperror[section] ) valid = 0; | 
           if ( cp1->pperror[section] ) valid = 0; | 
| 4451 | 
  | 
           // | 
| 4452 | 
  | 
           // check pulse values for one plane, if all zeros calibration is not valid (calorimeter power problems) [8th data reduction bug, fixed on 25/11/2009 by E.M.] | 
| 4453 | 
  | 
           // | 
| 4454 | 
  | 
           totpul = 0.; | 
| 4455 | 
  | 
           Int_t ns = 0; | 
| 4456 | 
  | 
           if ( section == 2 ) ns = 3;  | 
| 4457 | 
  | 
           if ( section == 3 ) ns = 1;  | 
| 4458 | 
  | 
           if ( section == 1 ) ns = 2;  | 
| 4459 | 
  | 
           for (UInt_t ss=0; ss<96; ss++){ | 
| 4460 | 
  | 
             totpul += cp1->calpuls[ns][0][ss]; | 
| 4461 | 
  | 
           } | 
| 4462 | 
  | 
           if ( totpul >= 3145632. ){ | 
| 4463 | 
  | 
             if ( IsDebug() ) printf(" PULSE1 Section %i totpul %f -  No calibration data! Calorimeter power problems? \n",section,totpul); | 
| 4464 | 
  | 
             valid = 0; | 
| 4465 | 
  | 
           }; | 
| 4466 | 
  | 
           // | 
| 4467 | 
           ph = eh->GetPscuHeader(); | 
           ph = eh->GetPscuHeader(); | 
| 4468 | 
           obt = ph->GetOrbitalTime();   | 
           obt = ph->GetOrbitalTime();   | 
| 4469 | 
           pkt = ph->GetCounter();   | 
           pkt = ph->GetCounter();   | 
| 4621 | 
         if ( cp2->pstwerr[section] && cp2->unpackError == 0 ){ | 
         if ( cp2->pstwerr[section] && cp2->unpackError == 0 ){ | 
| 4622 | 
           valid = 1; | 
           valid = 1; | 
| 4623 | 
           if ( cp2->pperror[section] ) valid = 0; | 
           if ( cp2->pperror[section] ) valid = 0; | 
| 4624 | 
  | 
           // | 
| 4625 | 
  | 
           // check pulse values for one plane, if all zeros calibration is not valid (calorimeter power problems) [8th data reduction bug, fixed on 25/11/2009 by E.M.] | 
| 4626 | 
  | 
           // | 
| 4627 | 
  | 
           totpul = 0.; | 
| 4628 | 
  | 
           Int_t ns = 0; | 
| 4629 | 
  | 
           if ( section == 2 ) ns = 3;  | 
| 4630 | 
  | 
           if ( section == 3 ) ns = 1;  | 
| 4631 | 
  | 
           if ( section == 1 ) ns = 2;  | 
| 4632 | 
  | 
           for (UInt_t ss=0; ss<96; ss++){ | 
| 4633 | 
  | 
             totpul += cp2->calpuls[ns][0][ss]; | 
| 4634 | 
  | 
           } | 
| 4635 | 
  | 
           if ( totpul >= 3145632. ){ | 
| 4636 | 
  | 
             if ( IsDebug() ) printf(" PULSE2 Section %i totpul %f -  No calibration data! Calorimeter power problems? \n",section,totpul); | 
| 4637 | 
  | 
             valid = 0; | 
| 4638 | 
  | 
           }; | 
| 4639 | 
  | 
           // | 
| 4640 | 
           ph = eh->GetPscuHeader(); | 
           ph = eh->GetPscuHeader(); | 
| 4641 | 
           obt = ph->GetOrbitalTime();   | 
           obt = ph->GetOrbitalTime();   | 
| 4642 | 
           pkt = ph->GetCounter();   | 
           pkt = ph->GetCounter();   | 
| 5002 | 
     if ( !result ) throw -4;; | 
     if ( !result ) throw -4;; | 
| 5003 | 
     row = result->Next(); | 
     row = result->Next(); | 
| 5004 | 
     if(row)glcal->ID = (UInt_t)atoll(row->GetField(0)); | 
     if(row)glcal->ID = (UInt_t)atoll(row->GetField(0)); | 
| 5005 | 
  | 
     // | 
| 5006 | 
  | 
     delete result; // mmm... "Error in <TMySQLResult::Next>: result set closed" solved? 090112 [8RED error messages] | 
| 5007 | 
     // | 
     // | 
| 5008 | 
 }; | 
 }; | 
| 5009 | 
  | 
  | 
| 5511 | 
  | 
  | 
| 5512 | 
             if(FOUND){ | 
             if(FOUND){ | 
| 5513 | 
  | 
  | 
| 5514 | 
             if ( IsDebug() ) cout << " >>> REPETITION FOUND :-) <<<" <<endl; | 
               if ( IsDebug() ) cout << " >>> REPETITION FOUND :-) <<<" <<endl; | 
 | 
  | 
  | 
 | 
                 //////////////////////////////////////////// | 
  | 
 | 
                 // insert a new entry in GL_TRK_CALIB and  | 
  | 
 | 
                 // modify the time-tag of the previous one | 
  | 
 | 
                 //////////////////////////////////////////// | 
  | 
| 5515 | 
  | 
  | 
| 5516 | 
                 // --------------------------------------------------------------------- | 
               //////////////////////////////////////////// | 
| 5517 | 
                 // step 1: insert a new raw file in GL_RAW | 
               // insert a new entry in GL_TRK_CALIB and  | 
| 5518 | 
                 // --------------------------------------------------------------------- | 
               // modify the time-tag of the previous one | 
| 5519 | 
                 // | 
               //////////////////////////////////////////// | 
| 5520 | 
                 // check if the raw file already exist | 
  | 
| 5521 | 
                 // | 
               // --------------------------------------------------------------------- | 
| 5522 | 
                 UInt_t id_raw = 0;   // EM GL_RAW is there only for backward compatibility so we do not need to fill it when in "chewbacca" mode | 
               // step 1: insert a new raw file in GL_RAW | 
| 5523 | 
 //              oss.str(""); | 
               // --------------------------------------------------------------------- | 
| 5524 | 
 //              oss << "SELECT ID FROM GL_RAW where NAME=\"" << gSystem->BaseName(raw.Data()) <<"\";"; | 
               // | 
| 5525 | 
 //              if ( IsDebug() ) cout << oss.str().c_str() << endl; | 
               // check if the raw file already exist | 
| 5526 | 
  | 
               // | 
| 5527 | 
  | 
               UInt_t id_raw = 0;   // EM GL_RAW is there only for backward compatibility so we do not need to fill it when in "chewbacca" mode | 
| 5528 | 
  | 
               //                oss.str(""); | 
| 5529 | 
  | 
               //                oss << "SELECT ID FROM GL_RAW where NAME=\"" << gSystem->BaseName(raw.Data()) <<"\";"; | 
| 5530 | 
  | 
               //                if ( IsDebug() ) cout << oss.str().c_str() << endl; | 
| 5531 | 
                  | 
                  | 
| 5532 | 
 //              result = conn->Query(oss.str().c_str()); | 
               //                result = conn->Query(oss.str().c_str()); | 
| 5533 | 
 //              if ( !result ) throw -4;; | 
               //                if ( !result ) throw -4;; | 
| 5534 | 
 //              if ( IsDebug() ) cout <<"Rows: "<<result->GetRowCount()<<endl; | 
               //                if ( IsDebug() ) cout <<"Rows: "<<result->GetRowCount()<<endl; | 
| 5535 | 
 //              if( result->GetRowCount() == 0){ | 
               //                if( result->GetRowCount() == 0){ | 
| 5536 | 
 //                  if ( IsDebug() ) cout << " << Insert new RAW file >> "<<endl; | 
               //                    if ( IsDebug() ) cout << " << Insert new RAW file >> "<<endl; | 
| 5537 | 
 //                  // - - - - - - - - - - - | 
               //                    // - - - - - - - - - - - | 
| 5538 | 
 //                  // insert new raw file | 
               //                    // insert new raw file | 
| 5539 | 
 //                  // - - - - - - - - - - -  | 
               //                    // - - - - - - - - - - -  | 
| 5540 | 
 //                  GL_RAW glraw = GL_RAW();     | 
               //                    GL_RAW glraw = GL_RAW();     | 
| 5541 | 
 //                  glraw.PATH        = gSystem->DirName(raw.Data()); | 
               //                    glraw.PATH        = gSystem->DirName(raw.Data()); | 
| 5542 | 
 //                  glraw.NAME        = gSystem->BaseName(raw.Data()); | 
               //                    glraw.NAME        = gSystem->BaseName(raw.Data()); | 
| 5543 | 
 //                  glraw.BOOT_NUMBER = boot_number; | 
               //                    glraw.BOOT_NUMBER = boot_number; | 
| 5544 | 
 //                  // | 
               //                    // | 
| 5545 | 
 //                  insertPamelaRawFile( &glraw ); | 
               //                    insertPamelaRawFile( &glraw ); | 
| 5546 | 
 //                  //               | 
               //                    //               | 
| 5547 | 
 //                  id_raw = glraw.ID;               | 
               //                    id_raw = glraw.ID;               | 
| 5548 | 
 //              }else{ | 
               //                }else{ | 
| 5549 | 
 //                  row = result->Next(); | 
               //                    row = result->Next(); | 
| 5550 | 
 //                  id_raw = (UInt_t)atoll(row->GetField(0)); | 
               //                    id_raw = (UInt_t)atoll(row->GetField(0)); | 
| 5551 | 
 //              } | 
               //                } | 
| 5552 | 
 //              if ( IsDebug() ) cout << "ID_RAW = "<<id_raw<<endl; | 
               //                if ( IsDebug() ) cout << "ID_RAW = "<<id_raw<<endl; | 
| 5553 | 
  | 
  | 
| 5554 | 
                 // --------------------------------------------------------------------- | 
               // --------------------------------------------------------------------- | 
| 5555 | 
                 // step 1(bis): retrieve the timesync id associated to the file | 
               // step 1(bis): retrieve the timesync id associated to the file | 
| 5556 | 
                 // (NB, uso lo stesso associato al file iniziale) | 
               // (NB, uso lo stesso associato al file iniziale) | 
| 5557 | 
                 // --------------------------------------------------------------------- | 
               // --------------------------------------------------------------------- | 
| 5558 | 
                 UInt_t idtimesync = 0; | 
               UInt_t idtimesync = 0; | 
| 5559 | 
                 oss.str(""); | 
               oss.str(""); | 
| 5560 | 
                 oss << " SELECT ID FROM GL_TIMESYNC where TIMESYNC="<<chlastts<<" AND OBT0="<<chobtts*1000<<" limit 1;"; | 
               oss << " SELECT ID FROM GL_TIMESYNC where TIMESYNC="<<chlastts<<" AND OBT0="<<chobtts*1000<<" limit 1;"; | 
| 5561 | 
                 if ( debug ) printf(" %s \n",oss.str().c_str()); | 
               if ( debug ) printf(" %s \n",oss.str().c_str()); | 
| 5562 | 
                 result = conn->Query(oss.str().c_str()); | 
               result = conn->Query(oss.str().c_str()); | 
| 5563 | 
                 if ( !result ) throw -3; | 
               if ( !result ) throw -3; | 
| 5564 | 
                 row = result->Next(); | 
                 row = result->Next(); | 
| 5565 | 
                 if ( !row ) throw -3; | 
                 if ( !row ) throw -3; | 
| 5566 | 
                 idtimesync = (UInt_t)atoll(row->GetField(0)); | 
                 idtimesync = (UInt_t)atoll(row->GetField(0)); | 
| 5567 | 
                 if ( IsDebug() ) cout << "ID_TIMESYNC = "<<idtimesync<<endl; | 
                 if ( IsDebug() ) cout << "ID_TIMESYNC = "<<idtimesync<<endl; | 
| 5568 | 
                  | 
                  | 
| 5569 | 
  | 
                 delete result;// mmm... "Error in <TMySQLResult::Next>: result set closed" solved? 090112 [8RED error messages] | 
| 5570 | 
                 // --------------------------------------------------------------------- | 
                 // --------------------------------------------------------------------- | 
| 5571 | 
                 // step 2: insert a new root file in GL_ROOT | 
                 // step 2: insert a new root file in GL_ROOT | 
| 5572 | 
                 // --------------------------------------------------------------------- | 
                 // --------------------------------------------------------------------- | 
| 5614 | 
                 } | 
                 } | 
| 5615 | 
                 if ( IsDebug() ) cout << "ID_ROOT = "<<id_root<<endl; | 
                 if ( IsDebug() ) cout << "ID_ROOT = "<<id_root<<endl; | 
| 5616 | 
  | 
  | 
| 5617 | 
  | 
                 delete result;// mmm... "Error in <TMySQLResult::Next>: result set closed" solved? 090112 [8RED error messages] | 
| 5618 | 
                 // --------------------------------------------------------------------- | 
                 // --------------------------------------------------------------------- | 
| 5619 | 
                 // step 3: modify time-tag of corrupted GL_TRK_CALIB entry | 
                 // step 3: modify time-tag of corrupted GL_TRK_CALIB entry | 
| 5620 | 
                 // --------------------------------------------------------------------- | 
                 // --------------------------------------------------------------------- | 
| 5627 | 
                 result = conn->Query(oss.str().c_str()); | 
                 result = conn->Query(oss.str().c_str()); | 
| 5628 | 
                 if ( !result ) throw -4;; | 
                 if ( !result ) throw -4;; | 
| 5629 | 
  | 
  | 
| 5630 | 
  | 
                 delete result; // mmm... "Error in <TMySQLResult::Next>: result set closed" solved? 090112 [8RED error messages] | 
| 5631 | 
  | 
  | 
| 5632 | 
                 // --------------------------------------------------------------------- | 
                 // --------------------------------------------------------------------- | 
| 5633 | 
                 // step 4: insert the new calibration: | 
                 // step 4: insert the new calibration: | 
| 5634 | 
                 // --------------------------------------------------------------------- | 
                 // --------------------------------------------------------------------- | 
| 6080 | 
                 oss << " PHYSENDRUN_MASK_S11CRC=" << glrun->GetPHYSENDRUN_MASK_S11CRC()<< " , ";  | 
                 oss << " PHYSENDRUN_MASK_S11CRC=" << glrun->GetPHYSENDRUN_MASK_S11CRC()<< " , ";  | 
| 6081 | 
               //               | 
               //               | 
| 6082 | 
               oss << " RUNHEADER_OBT=" << glrun->GetRUNHEADER_OBT()<< " , " | 
               oss << " RUNHEADER_OBT=" << glrun->GetRUNHEADER_OBT()<< " , " | 
| 6083 | 
                   << " RUNHEADER_PKT=" << glrun->GetRUNHEADER_PKT()<< ";"; | 
                   << " RUNHEADER_PKT=" << glrun->GetRUNHEADER_PKT(); | 
| 6084 | 
  | 
               oss << " WHERE ID=" << myid[u] << ";"; // BUG!!! 090112 | 
| 6085 | 
               conn->Query(oss.str().c_str());    | 
               conn->Query(oss.str().c_str());    | 
| 6086 | 
             };     | 
             };     | 
| 6087 | 
           }; | 
           }; | 
| 6130 | 
               if ( glrun->GetPHYSENDRUN_MASK_S11CRC() ){ | 
               if ( glrun->GetPHYSENDRUN_MASK_S11CRC() ){ | 
| 6131 | 
                 oss << " PHYSENDRUN_MASK_S11CRC=" << glrun->GetPHYSENDRUN_MASK_S11CRC()<< " , "; }; | 
                 oss << " PHYSENDRUN_MASK_S11CRC=" << glrun->GetPHYSENDRUN_MASK_S11CRC()<< " , "; }; | 
| 6132 | 
               //               | 
               //               | 
| 6133 | 
               oss << " RUNTRAILER_PKT=" << glrun->GetRUNTRAILER_PKT()<< ";"; | 
               oss << " RUNTRAILER_PKT=" << glrun->GetRUNTRAILER_PKT(); | 
| 6134 | 
  | 
               oss << " WHERE ID=" << myid[u] << ";"; // BUG!!! 090112 | 
| 6135 | 
               conn->Query(oss.str().c_str());    | 
               conn->Query(oss.str().c_str());    | 
| 6136 | 
             };     | 
             };     | 
| 6137 | 
           }; | 
           }; | 
| 6182 | 
               row2 = result2->Next(); | 
               row2 = result2->Next(); | 
| 6183 | 
               // | 
               // | 
| 6184 | 
               if ( row2 ){ | 
               if ( row2 ){ | 
| 6185 | 
                 if ( IsDebug() ) printf(" The already exist in the GL_RUN table! \n"); | 
                 if ( IsDebug() ) printf(" The run already exists in the GL_RUN table! \n"); | 
| 6186 | 
                 if ( PEDANTIC ) throw -83; | 
                 if ( PEDANTIC ) throw -83; | 
| 6187 | 
                 row2->Close(); | 
                 row2->Close(); | 
| 6188 | 
               }; | 
               }; | 
| 6259 | 
       glrun->Query_GL_RUN_FRAGMENTS(oss.str().c_str(),conn);    | 
       glrun->Query_GL_RUN_FRAGMENTS(oss.str().c_str(),conn);    | 
| 6260 | 
       // | 
       // | 
| 6261 | 
       oss.str(""); | 
       oss.str(""); | 
| 6262 | 
       oss << " SELECT ID,NEVENTS,TRK_CALIB_USED,PKT_COUNTER FROM GL_RUN WHERE " | 
       oss << " SELECT ID,NEVENTS,TRK_CALIB_USED,PKT_COUNTER,ID_ROOT_L0 FROM GL_RUN WHERE " | 
| 6263 | 
           << " BOOT_NUMBER=" << glrun->GetBOOT_NUMBER() << " AND (" | 
           << " BOOT_NUMBER=" << glrun->GetBOOT_NUMBER() << " AND (" | 
| 6264 | 
           << " (RUNHEADER_TIME>=" << (UInt_t)(glrun->GetRUNHEADER_TIME()-10) << " AND " | 
           << " (RUNHEADER_TIME>=" << (UInt_t)(glrun->GetRUNHEADER_TIME()-10) << " AND " | 
| 6265 | 
           << " RUNTRAILER_TIME<=" << (UInt_t)(glrun->GetRUNTRAILER_TIME()+10) << " AND (" | 
           << " RUNTRAILER_TIME<=" << (UInt_t)(glrun->GetRUNTRAILER_TIME()+10) << " AND (" | 
| 6317 | 
         moved++; | 
         moved++; | 
| 6318 | 
         // | 
         // | 
| 6319 | 
       } else { | 
       } else { | 
| 6320 | 
         if ( IsDebug() ) printf(" The already exist in the GL_RUN table! \n"); | 
  | 
| 6321 | 
         if ( PEDANTIC ) throw -83; | 
         // questa parte mah mah mah... da controllare | 
| 6322 | 
  | 
  | 
| 6323 | 
  | 
         // | 
| 6324 | 
  | 
         // we end up here if chewbacca and we have RH---| small gap |---RT, in this case the two pieces are attached and moved to GL_RUN. We are now processing the  | 
| 6325 | 
  | 
         // "small gap" piece... we recognize this since: we have two entries from this query, the pkt number is consistent with our pkt number. | 
| 6326 | 
  | 
         // | 
| 6327 | 
  | 
         // 090112 [8RED (-70): RUN ALREADY INSERTED] | 
| 6328 | 
  | 
         // | 
| 6329 | 
  | 
         Bool_t OK = false; | 
| 6330 | 
  | 
         UInt_t IDRL2A = 0; | 
| 6331 | 
  | 
         UInt_t IDRL2B = 0; | 
| 6332 | 
  | 
           if ( result2->GetRowCount() == 2 ){ | 
| 6333 | 
  | 
             IDRL2A = (UInt_t)atoll(row2->GetField(0)); | 
| 6334 | 
  | 
             UInt_t IDRL0A = (UInt_t)atoll(row2->GetField(4)); | 
| 6335 | 
  | 
             row2 = result2->Next(); | 
| 6336 | 
  | 
             IDRL2B = (UInt_t)atoll(row2->GetField(0)); | 
| 6337 | 
  | 
             UInt_t IDRL0B = (UInt_t)atoll(row2->GetField(4)); | 
| 6338 | 
  | 
             if ( IsDebug() ) printf(" IDRL0A %u B %u IDRL2A %u B %u \n",IDRL0A,IDRL0B,IDRL2A,IDRL2B); | 
| 6339 | 
  | 
             //      if ( IDRL0A == IDRL0B ){ | 
| 6340 | 
  | 
 //            TSQLResult *result2a = 0; | 
| 6341 | 
  | 
 //            TSQLRow    *row2a    = 0; | 
| 6342 | 
  | 
 //            oss.str(""); | 
| 6343 | 
  | 
 //            oss << "select PKT_NUMBER_FINAL from ROOT_TABLE_MERGING where REAL_TIME_INIT<" << chrtinit << " order by REAL_TIME_INIT desc limit 1;"; | 
| 6344 | 
  | 
 //            if ( IsDebug() ) printf(" Check if we are in the case RH---| small gap |---RT: query is \n %s \n",oss.str().c_str()); | 
| 6345 | 
  | 
 //            result2a = conn->Query(oss.str().c_str()); | 
| 6346 | 
  | 
 //            // | 
| 6347 | 
  | 
 //            if ( !result2a ) throw -4; | 
| 6348 | 
  | 
 //            // | 
| 6349 | 
  | 
 //            row2a = result2a->Next(); | 
| 6350 | 
  | 
 //            // | 
| 6351 | 
  | 
 //            if ( row2a ){ | 
| 6352 | 
  | 
 //              UInt_t PKA = (UInt_t)atoll(row2a->GetField(0)); | 
| 6353 | 
  | 
 //              delete result2a; | 
| 6354 | 
  | 
 //              oss.str(""); | 
| 6355 | 
  | 
 //              oss << "select PKT_NUMBER_INIT from ROOT_TABLE_MERGING where REAL_TIME_INIT>" << chrtinit << " order by REAL_TIME_INIT asc limit 1;"; | 
| 6356 | 
  | 
 //              if ( IsDebug() ) printf(" Check if we are in the case RH---| small gap |---RT: query is \n %s \n",oss.str().c_str()); | 
| 6357 | 
  | 
 //              result2a = conn->Query(oss.str().c_str()); | 
| 6358 | 
  | 
 //              // | 
| 6359 | 
  | 
 //              if ( !result2a ) throw -4; | 
| 6360 | 
  | 
 //              // | 
| 6361 | 
  | 
 //              row2a = result2a->Next(); | 
| 6362 | 
  | 
 //              // | 
| 6363 | 
  | 
 //              if ( row2a ){ | 
| 6364 | 
  | 
 //                UInt_t PKB = (UInt_t)atoll(row2a->GetField(0)); | 
| 6365 | 
  | 
 //                // | 
| 6366 | 
  | 
 //                if ( IsDebug() ) printf(" PKT(PKA) + 1 %llu == runheaderpkt %llu && PKB = runtrailer %llu + 1 %llu \n",PKT(PKA)+1LL, PKT(glrun->GetRUNHEADER_PKT()),PKT(PKB), PKT(glrun->GetRUNTRAILER_PKT())+1LL); | 
| 6367 | 
  | 
 //                if ( PKT(PKA)+1LL == PKT(glrun->GetRUNHEADER_PKT()) && PKT(PKB) == PKT(glrun->GetRUNTRAILER_PKT())+1LL ){ | 
| 6368 | 
  | 
 //                  if ( IsDebug() ) printf(" Ok, we are in the case: RH---| small gap |---RT \n"); | 
| 6369 | 
  | 
                     OK = true; | 
| 6370 | 
  | 
                     //            }; | 
| 6371 | 
  | 
                     //          }; | 
| 6372 | 
  | 
                     //        };                   | 
| 6373 | 
  | 
                     //    }; | 
| 6374 | 
  | 
           };       | 
| 6375 | 
  | 
         if ( OK ){ | 
| 6376 | 
  | 
           // | 
| 6377 | 
  | 
           // this is the case in which we must insert a piece of run between two fragments in the GL_RUN table | 
| 6378 | 
  | 
           // | 
| 6379 | 
  | 
           // we have to update with runheader/trailer infos our run and we have to change the ROOT_ID_FRAG of the header piece ( 1/2 2/1 must become 1/3 3/2 2/1 ) | 
| 6380 | 
  | 
           // | 
| 6381 | 
  | 
           GL_RUN *glA = new GL_RUN(); | 
| 6382 | 
  | 
           glA->Query_GL_RUN(IDRL2A,conn); | 
| 6383 | 
  | 
           // | 
| 6384 | 
  | 
           if ( glA->GetACQ_BUILD_INFO() != 0 ){ | 
| 6385 | 
  | 
             // | 
| 6386 | 
  | 
             // the first piece contains a good runheader we can update all the other runs with correct infos! | 
| 6387 | 
  | 
             // | 
| 6388 | 
  | 
             oss.str(""); | 
| 6389 | 
  | 
             oss << "UPDATE GL_RUN_FRAGMENTS SET " | 
| 6390 | 
  | 
                 << " RUNHEADER_TIME=" << glA->GetRUNHEADER_TIME()<< " , " | 
| 6391 | 
  | 
                 << " RUNHEADER_OBT=" << glA->GetRUNHEADER_OBT()<< " , " | 
| 6392 | 
  | 
                 << " RUNHEADER_PKT=" << glA->GetRUNHEADER_PKT()<< " , " | 
| 6393 | 
  | 
                 << " COMPILATIONTIMESTAMP=" << glA->GetCOMPILATIONTIMESTAMP()<< " , " | 
| 6394 | 
  | 
                 << " FAV_WRK_SCHEDULE=" << glA->GetFAV_WRK_SCHEDULE()<< " , " | 
| 6395 | 
  | 
                 << " EFF_WRK_SCHEDULE=" << glA->GetEFF_WRK_SCHEDULE()<< " , " | 
| 6396 | 
  | 
                 << " PRH_VAR_TRG_MODE_A=" << glA->GetPRH_VAR_TRG_MODE_A()<< " , " | 
| 6397 | 
  | 
                 << " PRH_VAR_TRG_MODE_B=" << glA->GetPRH_VAR_TRG_MODE_B()<< " , " | 
| 6398 | 
  | 
                 << " ACQ_BUILD_INFO=" << glA->GetACQ_BUILD_INFO()<< " , " | 
| 6399 | 
  | 
                 << " ACQ_VAR_INFO=" << glA->GetACQ_VAR_INFO()<< " , " | 
| 6400 | 
  | 
                 << " RM_ACQ_AFTER_CALIB=" << glA->GetRM_ACQ_AFTER_CALIB()<< " , "   | 
| 6401 | 
  | 
                 << " RM_ACQ_SETTING_MODE=" << glA->GetRM_ACQ_SETTING_MODE()<< " , "   | 
| 6402 | 
  | 
                 << " TRK_CALIB_USED=" << glA->GetTRK_CALIB_USED()<< " , "   | 
| 6403 | 
  | 
                 << " CAL_DSP_MASK=" << glA->GetCAL_DSP_MASK()<< " , "   | 
| 6404 | 
  | 
                 << " LAST_TIMESYNC=" << glA->GetLAST_TIMESYNC()<< " , "; | 
| 6405 | 
  | 
             // | 
| 6406 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S3S2S12() ) | 
| 6407 | 
  | 
               oss << " PHYSENDRUN_MASK_S3S2S12=" << glA->GetPHYSENDRUN_MASK_S3S2S12() << " , ";  | 
| 6408 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S11CRC() ) | 
| 6409 | 
  | 
               oss << " PHYSENDRUN_MASK_S11CRC=" << glA->GetPHYSENDRUN_MASK_S11CRC() << " , "; | 
| 6410 | 
  | 
             //         | 
| 6411 | 
  | 
             oss << " OBT_TIMESYNC=" << glA->GetOBT_TIMESYNC(); | 
| 6412 | 
  | 
             oss << " WHERE ID=" << glrun->GetID() << ";"; | 
| 6413 | 
  | 
             if ( IsDebug() ) printf(" update with correct infos: %s\n",oss.str().c_str()); | 
| 6414 | 
  | 
             conn->Query(oss.str().c_str());      | 
| 6415 | 
  | 
             // | 
| 6416 | 
  | 
           } else { | 
| 6417 | 
  | 
             // | 
| 6418 | 
  | 
             // sig no runheader, let set anyway what is possible... | 
| 6419 | 
  | 
             // | 
| 6420 | 
  | 
             oss.str(""); | 
| 6421 | 
  | 
             oss << "UPDATE GL_RUN_FRAGMENTS SET " | 
| 6422 | 
  | 
                 << " RUNHEADER_TIME=" << glA->GetRUNHEADER_TIME()<< " , "; | 
| 6423 | 
  | 
             // | 
| 6424 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S3S2S12() ) | 
| 6425 | 
  | 
               oss << " PHYSENDRUN_MASK_S3S2S12=" << glA->GetPHYSENDRUN_MASK_S3S2S12()<< " , "; | 
| 6426 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S11CRC() ) | 
| 6427 | 
  | 
               oss << " PHYSENDRUN_MASK_S11CRC=" << glA->GetPHYSENDRUN_MASK_S11CRC()<< " , ";  | 
| 6428 | 
  | 
             //         | 
| 6429 | 
  | 
             oss << " RUNHEADER_OBT=" << glA->GetRUNHEADER_OBT()<< " , " | 
| 6430 | 
  | 
                 << " RUNHEADER_PKT=" << glA->GetRUNHEADER_PKT(); | 
| 6431 | 
  | 
             oss << " WHERE ID=" << glrun->GetID() << ";"; | 
| 6432 | 
  | 
             if ( IsDebug() ) printf(" update with correct infos2: %s\n",oss.str().c_str()); | 
| 6433 | 
  | 
             conn->Query(oss.str().c_str());      | 
| 6434 | 
  | 
           }; | 
| 6435 | 
  | 
           // | 
| 6436 | 
  | 
           // update runheader ROOT_ID_FRAG | 
| 6437 | 
  | 
           // | 
| 6438 | 
  | 
           oss.str(""); | 
| 6439 | 
  | 
           oss << "UPDATE GL_RUN SET ID_RUN_FRAG = " << glrun->GetID() << " where ID = " << IDRL2A << ";"; | 
| 6440 | 
  | 
           if ( IsDebug() ) printf(" update gl_run to have cross indexing: %s\n",oss.str().c_str()); | 
| 6441 | 
  | 
           conn->Query(oss.str().c_str()); | 
| 6442 | 
  | 
           // | 
| 6443 | 
  | 
           // now let's look for runtrailer if any in the last run | 
| 6444 | 
  | 
           // | 
| 6445 | 
  | 
           glA->Query_GL_RUN(IDRL2B,conn); | 
| 6446 | 
  | 
           // | 
| 6447 | 
  | 
           if ( glA->GetPKT_READY_COUNTER() != 0 ){ | 
| 6448 | 
  | 
             // | 
| 6449 | 
  | 
             // the first piece contains a good runtrailer we can update all the other runs with correct infos! | 
| 6450 | 
  | 
             // | 
| 6451 | 
  | 
             oss.str(""); | 
| 6452 | 
  | 
             oss << "UPDATE GL_RUN_FRAGMENTS SET " | 
| 6453 | 
  | 
                 << " RUNTRAILER_TIME=" << glA->GetRUNTRAILER_TIME()<< " , " | 
| 6454 | 
  | 
                 << " RUNTRAILER_OBT=" << glA->GetRUNTRAILER_OBT()<< " , " | 
| 6455 | 
  | 
                 << " RUNTRAILER_PKT=" << glA->GetRUNTRAILER_PKT()<< " , " | 
| 6456 | 
  | 
                 << " PKT_COUNTER=" << glA->GetPKT_COUNTER()<< " , "; | 
| 6457 | 
  | 
             // | 
| 6458 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S3S2S12() ){ | 
| 6459 | 
  | 
               oss << " PHYSENDRUN_MASK_S3S2S12=" << glA->GetPHYSENDRUN_MASK_S3S2S12()<< " , "; }; | 
| 6460 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S11CRC() ) { | 
| 6461 | 
  | 
               oss << " PHYSENDRUN_MASK_S11CRC=" << glA->GetPHYSENDRUN_MASK_S11CRC()<< " , "; }; | 
| 6462 | 
  | 
             //         | 
| 6463 | 
  | 
             oss << " PKT_READY_COUNTER=" << glA->GetPKT_READY_COUNTER() | 
| 6464 | 
  | 
                 << " WHERE ID=" << glrun->GetID() << ";"; | 
| 6465 | 
  | 
             if ( IsDebug() ) printf(" update with correct trailer infos: %s\n",oss.str().c_str()); | 
| 6466 | 
  | 
             conn->Query(oss.str().c_str());      | 
| 6467 | 
  | 
             // | 
| 6468 | 
  | 
           } else { | 
| 6469 | 
  | 
             // | 
| 6470 | 
  | 
             // sig no runtrailer, let set anyway what is possible... | 
| 6471 | 
  | 
             // | 
| 6472 | 
  | 
             oss.str(""); | 
| 6473 | 
  | 
             oss << "UPDATE GL_RUN_FRAGMENTS SET " | 
| 6474 | 
  | 
                 << " RUNTRAILER_TIME=" << glA->GetRUNTRAILER_TIME()<< " , " | 
| 6475 | 
  | 
                 << " RUNTRAILER_OBT=" << glA->GetRUNTRAILER_OBT()<< " , "; | 
| 6476 | 
  | 
               // | 
| 6477 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S3S2S12() ){ | 
| 6478 | 
  | 
               oss << " PHYSENDRUN_MASK_S3S2S12=" << glA->GetPHYSENDRUN_MASK_S3S2S12()<< " , "; }; | 
| 6479 | 
  | 
             if ( glA->GetPHYSENDRUN_MASK_S11CRC() ){ | 
| 6480 | 
  | 
               oss << " PHYSENDRUN_MASK_S11CRC=" << glA->GetPHYSENDRUN_MASK_S11CRC()<< " , "; }; | 
| 6481 | 
  | 
             //         | 
| 6482 | 
  | 
             oss << " RUNTRAILER_PKT=" << glrun->GetRUNTRAILER_PKT() | 
| 6483 | 
  | 
                 << " WHERE ID=" << glrun->GetID() << ";"; | 
| 6484 | 
  | 
             if ( IsDebug() ) printf(" update with correct trailer infos2: %s\n",oss.str().c_str()); | 
| 6485 | 
  | 
             conn->Query(oss.str().c_str());      | 
| 6486 | 
  | 
           }; | 
| 6487 | 
  | 
           // | 
| 6488 | 
  | 
           UInt_t myi = glrun->GetID(); | 
| 6489 | 
  | 
           oss.str(""); | 
| 6490 | 
  | 
           oss << " ID= "<< myi; | 
| 6491 | 
  | 
           // | 
| 6492 | 
  | 
           glrun->Query_GL_RUN_FRAGMENTS(oss.str().c_str(),conn);    | 
| 6493 | 
  | 
           // | 
| 6494 | 
  | 
           // fill the new run in GL_RUN | 
| 6495 | 
  | 
           // | 
| 6496 | 
  | 
           glrun->SetID_RUN_FRAG(IDRL2B); | 
| 6497 | 
  | 
           glrun->Fill_GL_RUN(conn);      | 
| 6498 | 
  | 
           glrun->DeleteRun(conn,0,"GL_RUN_FRAGMENTS"); | 
| 6499 | 
  | 
           delete glA; | 
| 6500 | 
  | 
           moved++; | 
| 6501 | 
  | 
           // | 
| 6502 | 
  | 
         } else { | 
| 6503 | 
  | 
           // | 
| 6504 | 
  | 
           // is just a repetition | 
| 6505 | 
  | 
           // | 
| 6506 | 
  | 
           if ( IsDebug() ) printf(" The run %u is already present in the GL_RUN table...\n",glrun->GetID());     | 
| 6507 | 
  | 
           //      printf(" CCCCCCCCICCCCCCCCCCCCIOOOOOOOOOO si muove Ciccio! %u \n",glrun->GetID()); | 
| 6508 | 
  | 
           //      if ( PEDANTIC && glrun->GetID() != 61563 ) throw -83;  | 
| 6509 | 
  | 
           if ( PEDANTIC ) throw -83;  | 
| 6510 | 
  | 
         }; | 
| 6511 | 
  | 
         //      if ( IsDebug() ) printf(" The run already exists in the GL_RUN table! ...\n"); | 
| 6512 | 
  | 
         //      if ( PEDANTIC ) throw -83; | 
| 6513 | 
       }; | 
       }; | 
| 6514 | 
       if ( IsDebug() ) printf(" Delete run %s from the GL_RUN_FRAGMENTS table \n",row->GetField(0));       | 
       if ( IsDebug() ) printf(" Delete run %s from the GL_RUN_FRAGMENTS table \n",row->GetField(0));       | 
| 6515 | 
       // | 
       // |