Using detector quality flag (taken from ALICE logbook) to decide whether to rpodcue...
authorzampolli <chiara.zampolli@cern.ch>
Mon, 20 Oct 2014 09:00:33 +0000 (11:00 +0200)
committerzampolli <chiara.zampolli@cern.ch>
Mon, 20 Oct 2014 09:00:46 +0000 (11:00 +0200)
PWGPP/CalibMacros/CPass0/makeOCDB.C
PWGPP/CalibMacros/CPass0/mergeMakeOCDB.byComponent.sh
PWGPP/CalibMacros/CPass1/makeOCDB.C
PWGPP/CalibMacros/CPass1/mergeMakeOCDB.byComponent.sh

index 520aba0..4916538 100644 (file)
@@ -12,7 +12,7 @@
 
 void printCalibStat(Int_t run, const char * fname,  TTreeSRedirector * pcstream);
 
-void makeOCDB(Int_t runNumber, TString  targetOCDBstorage="", TString sourceOCDBstorage="raw://")
+void makeOCDB(Int_t runNumber, TString  targetOCDBstorage="", TString sourceOCDBstorage="raw://", Int_t detectorBitsQualityFlag = -1)
 {
   //
   // extract OCDB entries for detectors participating in the calibration for the current run
@@ -78,9 +78,29 @@ void makeOCDB(Int_t runNumber, TString  targetOCDBstorage="", TString sourceOCDB
     printf("Mag field is %f --> OFF\n", bz);
   }
 
+  // Quality flags
+  Bool_t TPC_qf = kTRUE;
+  Bool_t TOF_qf = kTRUE;
+  Bool_t TRD_qf = kTRUE;
+  Bool_t T0_qf  = kTRUE;
+  Bool_t SDD_qf = kTRUE;
+  Bool_t SPD_qf = kTRUE;
+
+  if (detectorBitsQualityFlag != -1){
+    TPC_qf = ((detectorBitsQualityFlag & AliDAQ::kTPC_QF) == AliDAQ::kTPC_QF)? kTRUE : kFALSE;
+    TOF_qf = ((detectorBitsQualityFlag & AliDAQ::kTOF_QF) == AliDAQ::kTOF_QF)? kTRUE : kFALSE;
+    TRD_qf = ((detectorBitsQualityFlag & AliDAQ::kTRD_QF) == AliDAQ::kTRD_QF)? kTRUE : kFALSE;
+    T0_qf  = ((detectorBitsQualityFlag & AliDAQ::kT0_QF)  == AliDAQ::kT0_QF)?  kTRUE : kFALSE;
+    SDD_qf = ((detectorBitsQualityFlag & AliDAQ::kSDD_QF) == AliDAQ::kSDD_QF)? kTRUE : kFALSE;
+    SPD_qf = ((detectorBitsQualityFlag & AliDAQ::kSPD_QF) == AliDAQ::kSPD_QF)? kTRUE : kFALSE;
+  }    
+
+  Printf("Quality flags: detectorBitsQualityFlag = %d, TPC = %d, TOF = %d, TRD = %d, T0 = %d, SDD = %d, SPD = %d", detectorBitsQualityFlag, (Int_t)TPC_qf, (Int_t)TOF_qf, (Int_t)TRD_qf, (Int_t)T0_qf, (Int_t)SDD_qf, (Int_t)SPD_qf);
+  return;
+
   // TPC part
   AliTPCPreprocessorOffline *procesTPC = 0;
-  if (detStr.Contains("TPC")){
+  if (detStr.Contains("TPC") && TPC_qf){
     Printf("\n******* Calibrating TPC *******");
     procesTPC = new AliTPCPreprocessorOffline;
     // switch on parameter validation
@@ -97,10 +117,13 @@ void makeOCDB(Int_t runNumber, TString  targetOCDBstorage="", TString sourceOCDB
     //proces.CalibTimeVdrift("CalibObjects.root",runNumber,AliCDBRunRange::Infinity(),targetOCDBstorage);
     procesTPC->CalibTimeVdrift("CalibObjects.root",runNumber,runNumber,targetStorage);
   }
+  else {
+    Printf("\n******* NOT Calibrating TPC: detStr = %s, TPC_qf = %d *******", detStr.Data(), (Int_t)TPC_qf);
+  }
 
   // TOF part
   AliTOFAnalysisTaskCalibPass0 *procesTOF=0;
-  if (detStr.Contains("TOF") && detStr.Contains("TPC")){
+  if (detStr.Contains("TOF") && detStr.Contains("TPC") && TOF_qf){
     procesTOF = new AliTOFAnalysisTaskCalibPass0;
     Printf("\n******* Calibrating TOF *******");
     if (isMagFieldON) procesTOF->ProcessOutput("CalibObjects.root", targetStorage);
@@ -108,10 +131,13 @@ void makeOCDB(Int_t runNumber, TString  targetOCDBstorage="", TString sourceOCDB
       printf("Not calibrating TOF in case of mag field OFF\n");
     }
   }
+  else {
+    Printf("\n******* NOT Calibrating TOF: detStr = %s, TOF_qf = %d *******", detStr.Data(), (Int_t)TOF_qf);
+  }
 
   // T0 part
   AliT0PreprocessorOffline *procesT0= 0;
-  if (detStr.Contains("T0")) {
+  if (detStr.Contains("T0") && T0_qf) {
     Printf("\n******* Calibrating T0 *******");
     // Make  calibration of channels offset
     procesT0 = new AliT0PreprocessorOffline;
@@ -120,10 +146,13 @@ void makeOCDB(Int_t runNumber, TString  targetOCDBstorage="", TString sourceOCDB
     else 
       procesT0->Process("CalibObjects.root",runNumber, runNumber, targetStorage);
   }
+  else {
+    Printf("\n******* NOT Calibrating T0: detStr = %s, T0_qf = %d *******", detStr.Data(), (Int_t)T0_qf);
+  }
 
   //TRD part
   AliTRDPreprocessorOffline *procesTRD = 0;
-  if (detStr.Contains("TRD") && detStr.Contains("TPC")){
+  if (detStr.Contains("TRD") && detStr.Contains("TPC") && TRD_qf){
     Printf("\n******* Calibrating TRD *******");
     procesTRD = new  AliTRDPreprocessorOffline;
     if(isLHC10) procesTRD->SetSwitchOnChamberStatus(kFALSE);
@@ -146,14 +175,20 @@ void makeOCDB(Int_t runNumber, TString  targetOCDBstorage="", TString sourceOCDB
     printf("version and subversion exb %d and %d\n",versionExBUsed,subversionExBUsed);
     procesTRD->Process("CalibObjects.root",runNumber,runNumber,targetStorage);
   }
+  else {
+    Printf("\n******* NOT Calibrating TRD: detStr = %s, TRD_qf = %d *******", detStr.Data(), (Int_t)TRD_qf);
+  }
   
   //Mean Vertex
   AliMeanVertexPreprocessorOffline * procesMeanVtx=0;
-  if (detStr.Contains("ITSSPD")) {
+  if (detStr.Contains("ITSSPD") && SPD_qf) {
     Printf("\n******* Calibrating MeanVertex *******");
     procesMeanVtx = new AliMeanVertexPreprocessorOffline;
     procesMeanVtx->ProcessOutput("CalibObjects.root", targetStorage, runNumber);
   }
+  else {
+    Printf("\n******* NOT Calibrating MeanVertex: detStr = %s, SPD_qf = %d *******", detStr.Data(), (Int_t)SPD_qf);
+  }
 
   //
   // Print calibration status into the stdout
index b94b657..f4caa18 100644 (file)
@@ -65,6 +65,9 @@ main()
   components="TOF MeanVertex T0 SDD TRD TPCCalib TPCCluster TPCAlign"
   #components="TOF MeanVertex T0 SDD TRD TPCCalib"
 
+  # take Data Quality Flags from JDL
+  detectorBitsQualityFlag=${ALIEN_JDL_RUNQUALITY--1}
+
   #################################################################
   echo "" | tee -a merge.log
   echo "$0 ${save_args[*]}" | tee -a merge.log
@@ -74,12 +77,13 @@ main()
   echo path = $path | tee -a merge.log
   echo run  = $run | tee -a merge.log
   echo ocdb = $ocdb | tee -a merge.log
-  echo defaultOCDB=$defaultOCDB | tee -a merge.log
+  echo defaultOCDB = $defaultOCDB | tee -a merge.log
   echo filesAreLocal = $filesAreLocal | tee -a merge.log
   echo cleanup = $cleanup | tee -a merge.log
-  echo fileAccessMethod=$fileAccessMethod | tee -a merge.log
+  echo fileAccessMethod = $fileAccessMethod | tee -a merge.log
   echo numberOfFilesInAbunch = $numberOfFilesInAbunch | tee -a merge.log
-  echo runParallel=$runParallel
+  echo runParallel = $runParallel
+  echo detectorBitsQualityFlag = $detectorBitsQualityFlag
   echo "***********************" | tee -a merge.log
 
   alienFileList="alien.list"
@@ -204,8 +208,8 @@ main()
   echo "***********************" 2>&1 | tee -a ocdb.log
   echo making ${det} OCDB 2>&1 | tee -a ocdb.log
   echo "***********************" 2>&1 | tee -a ocdb.log
-  echo aliroot -b -q "makeOCDB.C($run, \"$ocdb\", \"$defaultOCDB\")" 2>&1 | tee -a ocdb.log
-  aliroot -b -q "makeOCDB.C($run, \"$ocdb\", \"$defaultOCDB\")" 2>&1 | tee -a ocdb.log
+  echo aliroot -b -q "makeOCDB.C($run, \"$ocdb\", \"$defaultOCDB\", $detectorBitsQualityFlag)" 2>&1 | tee -a ocdb.log
+  aliroot -b -q "makeOCDB.C($run, \"$ocdb\", \"$defaultOCDB\", $detectorBitsQualityFlag)" 2>&1 | tee -a ocdb.log
   mv syswatch.log syswatch_makeOCDB.log
 
   # summary
index 6586661..daaddb3 100644 (file)
@@ -12,7 +12,7 @@
 
 void printCalibStat(Int_t run, const char * fname,  TTreeSRedirector * pcstream);
 
-void makeOCDB(Int_t runNumber, TString  targetOCDBstorage="", TString sourceOCDBstorage="raw://")
+void makeOCDB(Int_t runNumber, TString  targetOCDBstorage="", TString sourceOCDBstorage="raw://", Int_t detectorBitsQualityFlag = -1)
 {
   //
   // extract OCDB entries for detectors participating in the calibration for the current run
@@ -78,9 +78,28 @@ void makeOCDB(Int_t runNumber, TString  targetOCDBstorage="", TString sourceOCDB
     printf("Mag field is %f --> OFF\n", bz);
   }
 
+  // Quality flags
+  Bool_t TPC_qf = kTRUE;
+  Bool_t TOF_qf = kTRUE;
+  Bool_t TRD_qf = kTRUE;
+  Bool_t T0_qf  = kTRUE;
+  Bool_t SDD_qf = kTRUE;
+  Bool_t SPD_qf = kTRUE;
+
+  if (detectorBitsQualityFlag != -1){
+    TPC_qf = ((detectorBitsQualityFlag & AliDAQ::kTPC_QF) == AliDAQ::kTPC_QF)? kTRUE : kFALSE;
+    TOF_qf = ((detectorBitsQualityFlag & AliDAQ::kTOF_QF) == AliDAQ::kTOF_QF)? kTRUE : kFALSE;
+    TRD_qf = ((detectorBitsQualityFlag & AliDAQ::kTRD_QF) == AliDAQ::kTRD_QF)? kTRUE : kFALSE;
+    T0_qf  = ((detectorBitsQualityFlag & AliDAQ::kT0_QF)  == AliDAQ::kT0_QF)?  kTRUE : kFALSE;
+    SDD_qf = ((detectorBitsQualityFlag & AliDAQ::kSDD_QF) == AliDAQ::kSDD_QF)? kTRUE : kFALSE;
+    SPD_qf = ((detectorBitsQualityFlag & AliDAQ::kSPD_QF) == AliDAQ::kSPD_QF)? kTRUE : kFALSE;
+  }    
+
+  Printf("Quality flags: detectorBitsQualityFlag = %d, TPC = %d, TOF = %d, TRD = %d, T0 = %d, SDD = %d, SPD = %d", detectorBitsQualityFlag, (Int_t)TPC_qf, (Int_t)TOF_qf, (Int_t)TRD_qf, (Int_t)T0_qf, (Int_t)SDD_qf, (Int_t)SPD_qf);
+
   // TPC part
   AliTPCPreprocessorOffline *procesTPC = 0;
-  if (detStr.Contains("TPC")){
+  if (detStr.Contains("TPC") && TPC_qf){
     Printf("\n******* Calibrating TPC *******");
     Printf("TPC won't be calibrated at CPass1 for the time being... Doing nothing here");
     //procesTPC = new AliTPCPreprocessorOffline;
@@ -93,10 +112,13 @@ void makeOCDB(Int_t runNumber, TString  targetOCDBstorage="", TString sourceOCDB
     // Make vdrift calibration
     //proces.CalibTimeVdrift("CalibObjects.root",runNumber,AliCDBRunRange::Infinity(),targetStorage);
   }
+  else {
+    Printf("\n******* NOT Calibrating TPC: detStr = %s, TPC_qf = %d *******", detStr.Data(), (Int_t)TPC_qf);
+  }
 
   // TOF part
   AliTOFAnalysisTaskCalibPass0 *procesTOF=0;
-  if (detStr.Contains("TOF") && detStr.Contains("TPC")){
+  if (detStr.Contains("TOF") && detStr.Contains("TPC") && TOF_qf){
     procesTOF = new AliTOFAnalysisTaskCalibPass0;
     Printf("\n******* Calibrating TOF *******");
     if (isMagFieldON) procesTOF->ProcessOutput("CalibObjects.root", targetStorage);
@@ -104,20 +126,26 @@ void makeOCDB(Int_t runNumber, TString  targetOCDBstorage="", TString sourceOCDB
       printf("Not calibrating TOF in case of mag field OFF\n");
     }
   }
+  else {
+    Printf("\n******* NOT Calibrating TOF: detStr = %s, TOF_qf = %d *******", detStr.Data(), (Int_t)TOF_qf);
+  }
 
   // T0 part
   AliT0PreprocessorOffline *procesT0= 0;
-  if (detStr.Contains("T0")) {
+  if (detStr.Contains("T0") && T0_qf) {
     Printf("\n******* Calibrating T0 *******");
     procesT0 = new AliT0PreprocessorOffline;
     // Make  calibration of channels offset
     procesT0->setDArun(100000);
     procesT0->Process("CalibObjects.root",runNumber, runNumber, targetStorage);
   }
+  else {
+    Printf("\n******* NOT Calibrating T0: detStr = %s, T0_qf = %d *******", detStr.Data(), (Int_t)T0_qf);
+  }
 
   //TRD part
   AliTRDPreprocessorOffline *procesTRD = 0;
-  if (detStr.Contains("TRD") && detStr.Contains("TPC")){
+  if (detStr.Contains("TRD") && detStr.Contains("TPC") && TRD_qf){
     Printf("\n******* Calibrating TRD *******");
     procesTRD = new  AliTRDPreprocessorOffline;
     if(isLHC10) procesTRD->SetSwitchOnChamberStatus(kFALSE);
@@ -140,16 +168,22 @@ void makeOCDB(Int_t runNumber, TString  targetOCDBstorage="", TString sourceOCDB
     printf("version and subversion exb %d and %d\n",versionExBUsed,subversionExBUsed);
     procesTRD->Process("CalibObjects.root",runNumber,runNumber,targetStorage);
   }
+  else {
+    Printf("\n******* NOT Calibrating TRD: detStr = %s, TRD_qf = %d *******", detStr.Data(), (Int_t)TRD_qf);
+  }
   
   // switched OFF at CPass1 in any case
   /*
   //Mean Vertex
   AliMeanVertexPreprocessorOffline * procesMeanVtx=0;
-  if (detStr.Contains("ITSSPD")) {
+  if (detStr.Contains("ITSSPD") && SPD_qf) {
     Printf("\n******* Calibrating MeanVertex *******");
     procesMeanVtx = new AliMeanVertexPreprocessorOffline;
     procesMeanVtx->ProcessOutput("CalibObjects.root", targetStorage, runNumber);
   }
+  else {
+    Printf("\n******* NOT Calibrating MeanVertex: detStr = %s, SPD_qf = %d *******", detStr.Data(), (Int_t)SPD_qf);
+  }
   */
 
   //
index 0d7e9e4..7bf3a65 100644 (file)
@@ -65,6 +65,9 @@ main()
   components="TOF MeanVertex T0 SDD TRD TPCCalib TPCCluster TPCAlign"
   #components="TOF MeanVertex T0 SDD TRD TPCCalib"
 
+  # take Data Quality Flags from JDL
+  detectorBitsQualityFlag=${ALIEN_JDL_RUNQUALITY--1}
+
   #################################################################
   echo "" | tee -a merge.log
   echo "$0 ${save_args[*]}" | tee -a merge.log
@@ -74,12 +77,13 @@ main()
   echo path = $path | tee -a merge.log
   echo run  = $run | tee -a merge.log
   echo ocdb = $ocdb | tee -a merge.log
-  echo defaultOCDB=$defaultOCDB | tee -a merge.log
+  echo defaultOCDB = $defaultOCDB | tee -a merge.log
   echo filesAreLocal = $filesAreLocal | tee -a merge.log
   echo cleanup = $cleanup | tee -a merge.log
-  echo fileAccessMethod=$fileAccessMethod | tee -a merge.log
+  echo fileAccessMethod = $fileAccessMethod | tee -a merge.log
   echo numberOfFilesInAbunch = $numberOfFilesInAbunch | tee -a merge.log
-  echo runParallel=$runParallel
+  echo runParallel = $runParallel
+  echo detectorBitsQualityFlag = $detectorBitsQualityFlag
   echo "***********************" | tee -a merge.log
 
   alienFileList="alien.list"
@@ -204,8 +208,8 @@ main()
   echo "***********************" 2>&1 | tee -a ocdb.log
   echo making ${det} OCDB 2>&1 | tee -a ocdb.log
   echo "***********************" 2>&1 | tee -a ocdb.log
-  echo aliroot -b -q "makeOCDB.C($run, \"$ocdb\", \"$defaultOCDB\")" 2>&1 | tee -a ocdb.log
-  aliroot -b -q "makeOCDB.C($run, \"$ocdb\", \"$defaultOCDB\")" 2>&1 | tee -a ocdb.log
+  echo aliroot -b -q "makeOCDB.C($run, \"$ocdb\", \"$defaultOCDB\", $detectorBitsQualityFlag)" 2>&1 | tee -a ocdb.log
+  aliroot -b -q "makeOCDB.C($run, \"$ocdb\", \"$defaultOCDB\", $detectorBitsQualityFlag)" 2>&1 | tee -a ocdb.log
   mv syswatch.log syswatch_makeOCDB.log
 
   # summary