]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliRecoParam.cxx
Added some extra CF plots and changed binning for a few histograms (kathrin) anddded...
[u/mrichter/AliRoot.git] / STEER / AliRecoParam.cxx
index 2859297320ea1218b758d0ce8fdc75c1f377177f..8c89652b142908bb443b8a9150d5b9b02994cc02 100644 (file)
@@ -28,6 +28,7 @@
 #include "TClass.h"
 #include "TObjArray.h"
 #include "TMath.h"
+#include "THashTable.h"
 #include "AliDetectorRecoParam.h"
 
 #include "AliLog.h"
@@ -38,7 +39,7 @@
 
 ClassImp(AliRecoParam)
 
-TString AliRecoParam::fkgEventSpecieName[] = {"Default", "LowMultiplicity", "HighMultiplicity", "Cosmic", "Calibration", "Unknown"} ; 
+TString AliRecoParam::fkgEventSpecieName[] = {"Default", "LowMultiplicity", "HighMultiplicity", "Cosmic", "Calib", "Unknown"} ; 
 
 AliRecoParam::AliRecoParam(): 
   TObject(),
@@ -189,10 +190,11 @@ void  AliRecoParam::Print(Option_t *option) const {
   }
 }
 
-void AliRecoParam::SetEventSpecie(const AliRunInfo *runInfo, const AliEventInfo &evInfo)
+void AliRecoParam::SetEventSpecie(const AliRunInfo *runInfo, const AliEventInfo &evInfo,
+                                 const THashTable *cosmicTriggersList)
 {
-  // To be implemented
-  // Here we return always kDefault!!
+  // Implemented according to the discussions
+  // and meetings with physics and trigger coordination
 
   fEventSpecie = kDefault;
 
@@ -202,21 +204,27 @@ void AliRecoParam::SetEventSpecie(const AliRunInfo *runInfo, const AliEventInfo
     return;
   }
 
-  if (strcmp(runInfo->GetLHCState(),"STABLE_BEAMS") == 0) {
-    // In case of stable beams
-//    if ((strcmp(runInfo->GetBeamType(),"A-A") == 0) ||
-//     (strcmp(runInfo->GetBeamType(),"A-") == 0) ||
-//     (strcmp(runInfo->GetBeamType(),"-A") == 0)) {
-      // Heavy ion run (any beam tha is not pp, the event specie is set to kHighMult
+  // Special DAQ events considered as calibration events
+  if (evInfo.GetEventType() != 7) {
+    // START_OF_*, END_OF_*, CALIBRATION etc events
+    fEventSpecie = kCalib;
+    return;
+  }
+
+    if ((strcmp(runInfo->GetLHCState(),"STABLE_BEAMS") == 0) &&
+       ((strcmp(runInfo->GetBeamType(),"A-A") == 0) ||
+       (strcmp(runInfo->GetBeamType(),"A-") == 0) ||
+       (strcmp(runInfo->GetBeamType(),"-A") == 0))) {
+      // Heavy ion run (any beam that is not pp, the event specie is set to kHighMult
       fEventSpecie = kHighMult;
-//    }
-//    else 
-    if ((strcmp(runInfo->GetBeamType(),"p-p") == 0) ||
-            (strcmp(runInfo->GetBeamType(),"p-") == 0) ||
-            (strcmp(runInfo->GetBeamType(),"-p") == 0) ||
-            (strcmp(runInfo->GetBeamType(),"P-P") == 0) ||
-            (strcmp(runInfo->GetBeamType(),"P-") == 0) ||
-            (strcmp(runInfo->GetBeamType(),"-P") == 0)) {
+    }
+    else if ((strcmp(runInfo->GetLHCState(),"STABLE_BEAMS") == 0) &&
+            ((strcmp(runInfo->GetBeamType(),"p-p") == 0) ||
+             (strcmp(runInfo->GetBeamType(),"p-") == 0) ||
+             (strcmp(runInfo->GetBeamType(),"-p") == 0) ||
+             (strcmp(runInfo->GetBeamType(),"P-P") == 0) ||
+             (strcmp(runInfo->GetBeamType(),"P-") == 0) ||
+             (strcmp(runInfo->GetBeamType(),"-P") == 0))) {
       // Proton run, the event specie is set to kLowMult
       fEventSpecie = kLowMult;
     }
@@ -224,68 +232,53 @@ void AliRecoParam::SetEventSpecie(const AliRunInfo *runInfo, const AliEventInfo
       // No beams, we assume cosmic data
       fEventSpecie = kCosmic;
     }
-    else if (strcmp(runInfo->GetBeamType(),"UNKNOWN") == 0) {
-      // No LHC beam information is available, we the default
-      // event specie
-      fEventSpecie = kDefault;
-    }
 
     // Now we look into the trigger type in order to decide
     // on the remaining cases (cosmic event within LHC run,
-    // high-mult event based on high-mult SPD trigger
-    // within p-p run, laser triggers within physics run,
-    // special DAQ events considered as calibration etc...)
-    if (evInfo.GetEventType() != 7) {
-      // START_OF_*, END_OF_*, CALIBRATION etc events
-      fEventSpecie = kCalib;
-    }
-
+    // calibration, for example TPC laser, triggers within physics run
     TString triggerClasses = evInfo.GetTriggerClasses();
     TObjArray* trClassArray = triggerClasses.Tokenize(" ");
     Int_t nTrClasses = trClassArray->GetEntriesFast();
     Bool_t cosmicTrigger = kFALSE,
-      laserTrigger = kFALSE,
-      highMultTrigger = kFALSE,
+      calibTrigger = kFALSE,
       otherTrigger = kFALSE;
     for( Int_t i=0; i<nTrClasses; ++i ) {
       TString trClass = ((TObjString*)trClassArray->At(i))->String();
-      if (trClass.BeginsWith("C0A") ||
-         trClass.BeginsWith("C0SC") ||
-         trClass.BeginsWith("C0OC")) {
-      // ACORDE/SPD/TOF cosmic trigger, so we have cosmic event
-      // not always true, but we don't have a better idea...
-       cosmicTrigger = kTRUE;
-      }
-      else if (trClass.BeginsWith("C0LSR")) {
-       // Laser trigger
-       laserTrigger = kTRUE;
+
+      if (trClass.BeginsWith("C0L")) {
+       // Calibration triggers always start with C0L
+       calibTrigger = kTRUE;
+       continue;
       }
-      else if (trClass.BeginsWith("C0SH")) {
-       // High-multiplicity SPD trugger
-       // Have to add other high-mult triggers here...
-       highMultTrigger = kTRUE;
+
+      if (cosmicTriggersList) {
+       if (cosmicTriggersList->FindObject(trClass.Data())) {
+         // Cosmic trigger accorind to the table
+         // provided in OCDB
+         cosmicTrigger = kTRUE;
+         AliDebug(1,Form("Trigger %s identified as cosmic according to the list defined in OCDB.",
+                         trClass.Data()));
+         continue;
+       }
       }
       else {
-       otherTrigger = kTRUE;
+       AliDebug(1,"Cosmic trigger list is not provided, cosmic event specie is effectively disabled!");
       }
+
+      otherTrigger = kTRUE;
     }
 
-    if (laserTrigger) {
+    if (calibTrigger) {
       fEventSpecie = kCalib;
       return;
     }
-    if (cosmicTrigger && !highMultTrigger && !otherTrigger) {
+    if (cosmicTrigger && !otherTrigger) {
       fEventSpecie = kCosmic;
       return;
     }
-    if (highMultTrigger) {
-      fEventSpecie = kHighMult;
-      return;
-    }
 
     // Here we have to add if we have other cases
     // and also HLT info if any...
-  }
 }
 
 const AliDetectorRecoParam *AliRecoParam::GetDetRecoParam(Int_t iDet) const