]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliRunTagCuts.cxx
Update the Tag system classes. Reduce memory footprint. Add information from RCT
[u/mrichter/AliRoot.git] / STEER / AliRunTagCuts.cxx
index 362618297752791820d01782a9255608baecc10f..94d09d3998e81eda53d741dad1ea9e219c639df2 100644 (file)
@@ -35,6 +35,8 @@ AliRunTagCuts::AliRunTagCuts() :
   fAliceRunIdFlag(kFALSE),              
   fAliceMagneticField(-1.),          
   fAliceMagneticFieldFlag(kFALSE),      
+  fAliceDipoleField(-1.),
+  fAliceDipoleFieldFlag(kFALSE),
   fAliceRunStartTimeMin(-1),        
   fAliceRunStartTimeMax(-1),        
   fAliceRunStartTimeFlag(kFALSE),       
@@ -46,9 +48,17 @@ AliRunTagCuts::AliRunTagCuts() :
   fRootVersion(""),                 
   fRootVersionFlag(kFALSE),             
   fGeant3Version(""),               
-  fGeant3VersionFlag(kFALSE),           
-  fAliceRunQuality(0),             
-  fAliceRunQualityFlag(kFALSE),         
+  fGeant3VersionFlag(kFALSE),   
+  fLHCPeriod(""),
+  fLHCPeriodFlag(kFALSE),
+  fRecPass(""),
+  fRecPassFlag(kFALSE),
+  fProdName(""),
+  fProdNameFlag(kFALSE),
+  fAliceRunValidation(0),             
+  fAliceRunValidationFlag(kFALSE),         
+  fAliceRunQualities(""),
+  fAliceRunQualitiesFlag(kFALSE),
   fAliceBeamEnergy(-1),             
   fAliceBeamEnergyFlag(kFALSE),         
   fAliceBeamType(""),               
@@ -56,7 +66,27 @@ AliRunTagCuts::AliRunTagCuts() :
   fAliceCalibrationVersion(-1),    
   fAliceCalibrationVersionFlag(kFALSE),
   fAliceDataType(-1),                
-  fAliceDataTypeFlag(kFALSE)
+  fAliceDataTypeFlag(kFALSE),
+  fBeamTriggerRange(),
+  fBeamTriggerFlag(kFALSE),
+  fCollisionTriggerRange(),
+  fCollisionTriggerFlag(kFALSE),
+  fEmptyTriggerRange(),
+  fEmptyTriggerFlag(kFALSE),
+  fASideTriggerRange(),
+  fASideTriggerFlag(kFALSE),
+  fCSideTriggerRange(),
+  fCSideTriggerFlag(kFALSE),
+  fHMTriggerRange(),
+  fHMTriggerFlag(kFALSE),
+  fMuonTriggerRange(),
+  fMuonTriggerFlag(kFALSE),
+  fCollisionRateRange(),
+  fCollisionRateFlag(kFALSE),
+  fMeanVertexRange(),
+  fMeanVertexFlag(kFALSE),
+  fVertexQualityRange(),
+  fVertexQualityFlag(kFALSE)
 {
   //Default constructor which calls the Reset method.
 }
@@ -73,6 +103,8 @@ void AliRunTagCuts::Reset() {
   fAliceRunIdFlag = kFALSE;              
   fAliceMagneticField = -1.;          
   fAliceMagneticFieldFlag = kFALSE;      
+  fAliceDipoleField = -1.;
+  fAliceDipoleFieldFlag = kFALSE;
   fAliceRunStartTimeMin = -1;        
   fAliceRunStartTimeMax = -1;        
   fAliceRunStartTimeFlag = kFALSE;       
@@ -85,8 +117,16 @@ void AliRunTagCuts::Reset() {
   fRootVersionFlag = kFALSE;             
   fGeant3Version = "";               
   fGeant3VersionFlag = kFALSE;           
-  fAliceRunQuality = 0;             
-  fAliceRunQualityFlag = kFALSE;         
+  fLHCPeriod = "";
+  fLHCPeriodFlag = kFALSE;
+  fRecPass = "";
+  fRecPassFlag = kFALSE;
+  fProdName = "";
+  fProdNameFlag = kFALSE;
+  fAliceRunValidation = 0;             
+  fAliceRunValidationFlag = kFALSE;         
+  fAliceRunQualities = "";
+  fAliceRunQualitiesFlag = kFALSE;
   fAliceBeamEnergy = -1;             
   fAliceBeamEnergyFlag = kFALSE;         
   fAliceBeamType = "";               
@@ -95,6 +135,44 @@ void AliRunTagCuts::Reset() {
   fAliceCalibrationVersionFlag = kFALSE;
   fAliceDataType = -1;                
   fAliceDataTypeFlag = kFALSE;           
+  fBeamTriggerRange[0] = 0;
+  fBeamTriggerRange[1] = 0;
+  fBeamTriggerFlag = kFALSE;
+  fCollisionTriggerRange[0] = 0;
+  fCollisionTriggerRange[1] = 0;
+  fCollisionTriggerFlag = kFALSE;
+  fEmptyTriggerRange[0] = 0;
+  fEmptyTriggerRange[1] = 0;
+  fEmptyTriggerFlag = kFALSE;
+  fASideTriggerRange[0] = 0;
+  fASideTriggerRange[1] = 0;
+  fASideTriggerFlag = kFALSE;
+  fCSideTriggerRange[0] = 0;
+  fCSideTriggerRange[1] = 0;
+  fCSideTriggerFlag = kFALSE;
+  fHMTriggerRange[0] = 0;
+  fHMTriggerRange[1] = 0;
+  fHMTriggerFlag = kFALSE;
+  fMuonTriggerRange[0] = 0;
+  fMuonTriggerRange[1] = 0;
+  fMuonTriggerFlag = kFALSE;
+  fCollisionRateRange[0] = 0;
+  fCollisionRateRange[1] = 0;
+  fCollisionRateFlag = kFALSE;
+  fMeanVertexRange[0] = 0;
+  fMeanVertexRange[1] = 0;
+  fMeanVertexFlag = kFALSE;
+  fVertexQualityRange[0] = 0;
+  fVertexQualityRange[1] = 0;
+  fVertexQualityFlag = kFALSE;
+}
+
+void AliRunTagCuts::AddRunQualityValue(Int_t qval)
+{
+  // Adds to the list of selected run qualities
+  fAliceRunQualities += qval;
+  fAliceRunQualities += " ";
+  fAliceRunQualitiesFlag = kTRUE;
 }
 
 //___________________________________________________________________________
@@ -106,6 +184,9 @@ Bool_t AliRunTagCuts::IsAccepted(AliRunTag *RunTag) const {
   if(fAliceMagneticFieldFlag)
     if((RunTag->GetMagneticField() != fAliceMagneticField))
       return kFALSE;
+  if(fAliceDipoleFieldFlag)
+    if((RunTag->GetDipoleField() != fAliceDipoleField))
+      return kFALSE;
   if(fAliceRunStartTimeFlag)
     if((RunTag->GetRunStartTime() < fAliceRunStartTimeMin) || (RunTag->GetRunStartTime() > fAliceRunStartTimeMax))
       return kFALSE;
@@ -121,9 +202,36 @@ Bool_t AliRunTagCuts::IsAccepted(AliRunTag *RunTag) const {
   if(fGeant3VersionFlag)
     if((RunTag->GetGeant3Version() != fGeant3Version))
       return kFALSE;
-  if(fAliceRunQualityFlag)
-    if(RunTag->GetRunQuality())
+  if(fLHCPeriodFlag)
+    if((RunTag->GetLHCPeriod() != fLHCPeriod))
+      return kFALSE;
+  if(fRecPassFlag)
+    if((RunTag->GetReconstructionPass() != fRecPass))
+      return kFALSE;
+  if(fProdNameFlag)
+    if((RunTag->GetProductionName() != fProdName))
+      return kFALSE;
+  if(fAliceRunValidationFlag)
+    if(RunTag->GetRunValidation())
+      return kFALSE;
+  if (fAliceRunQualitiesFlag) {
+    TObjArray *tQualities = fAliceRunQualities.Tokenize(" ");
+    Bool_t tQual = kFALSE;
+
+    TString tRQual = "";
+    tRQual += RunTag->GetRunQuality();
+
+    for (int iqual=0; iqual<tQualities->GetEntries(); iqual++)
+      if (((TObjString *) tQualities->At(iqual))->GetString().Contains(tRQual))
+       tQual = kTRUE;
+       //      if (EvTag->GetFiredTriggerClasses().Contains(((TObjString *) tClasses->At(iqual))->GetString()))
+  
+    tQualities->Delete();
+    delete tQualities;
+
+    if (!tQual)
       return kFALSE;
+  }
   if(fAliceBeamEnergyFlag)
     if(RunTag->GetBeamEnergy() != fAliceBeamEnergy)
       return kFALSE;
@@ -136,6 +244,36 @@ Bool_t AliRunTagCuts::IsAccepted(AliRunTag *RunTag) const {
   if(fAliceDataTypeFlag)
     if(RunTag->GetDataType() != fAliceDataType)
       return kFALSE;
+  if (fBeamTriggerFlag)
+    if ((RunTag->GetBeamTriggers() < fBeamTriggerRange[0]) || (RunTag->GetBeamTriggers() > fBeamTriggerRange[1]))
+      return kFALSE;
+  if (fCollisionTriggerFlag)
+    if ((RunTag->GetCollisionTriggers() < fCollisionTriggerRange[0]) || (RunTag->GetCollisionTriggers() > fCollisionTriggerRange[1]))
+      return kFALSE;
+  if (fEmptyTriggerFlag)
+    if ((RunTag->GetEmptyTriggers() < fEmptyTriggerRange[0]) || (RunTag->GetEmptyTriggers() > fEmptyTriggerRange[1]))
+      return kFALSE;
+  if (fCSideTriggerFlag)
+    if ((RunTag->GetCSideTriggers() < fCSideTriggerRange[0]) || (RunTag->GetCSideTriggers() > fCSideTriggerRange[1]))
+      return kFALSE;
+  if (fASideTriggerFlag)
+    if ((RunTag->GetASideTriggers() < fASideTriggerRange[0]) || (RunTag->GetASideTriggers() > fASideTriggerRange[1]))
+      return kFALSE;
+  if (fHMTriggerFlag)
+    if ((RunTag->GetHMTriggers() < fHMTriggerRange[0]) || (RunTag->GetHMTriggers() > fHMTriggerRange[1]))
+      return kFALSE;
+  if (fMuonTriggerFlag)
+    if ((RunTag->GetMuonTriggers() < fMuonTriggerRange[0]) || (RunTag->GetMuonTriggers() > fMuonTriggerRange[1]))
+      return kFALSE;
+  if (fCollisionRateFlag)
+    if ((RunTag->GetCollisionRate() < fCollisionRateRange[0]) || (RunTag->GetCollisionRate() > fCollisionRateRange[1]))
+      return kFALSE;
+  if (fMeanVertexFlag)
+    if ((RunTag->GetMeanVertex() < fMeanVertexRange[0]) || (RunTag->GetMeanVertex() > fMeanVertexRange[1]))
+      return kFALSE;
+  if (fVertexQualityFlag)
+    if ((RunTag->GetVertexQuality() < fVertexQualityRange[0]) || (RunTag->GetVertexQuality() > fVertexQualityRange[1]))
+      return kFALSE;
+
   return kTRUE;
 }