Usage of the recently introduced OCDB entry which contains the list of defined cosmic...
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 30 Jun 2009 22:57:29 +0000 (22:57 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 30 Jun 2009 22:57:29 +0000 (22:57 +0000)
STEER/AliRecoParam.cxx
STEER/AliRecoParam.h
STEER/AliReconstruction.cxx
STEER/AliReconstruction.h

index 9da24f9..0d988d7 100644 (file)
@@ -28,6 +28,7 @@
 #include "TClass.h"
 #include "TObjArray.h"
 #include "TMath.h"
+#include "THashTable.h"
 #include "AliDetectorRecoParam.h"
 
 #include "AliLog.h"
@@ -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;
 
@@ -254,27 +256,18 @@ void AliRecoParam::SetEventSpecie(const AliRunInfo *runInfo, const AliEventInfo
        continue;
       }
 
-      TObjArray* tmp = trClass.Tokenize("-");
-      TObjString* bcName = (TObjString*)tmp->At(1);
-      if (bcName) {
-       if ((bcName->String().CompareTo("ABCE") == 0) ||
-           (bcName->String().CompareTo("E")    == 0) ||
-           (bcName->String().CompareTo("NONE") == 0)) {
-         // Cosmic triggers are identified by empty bunch-crossing mask
-         // The naming comvention is:
-         // A  filled bunch from A side, empty from C side
-         // B  filled bunch from both sides
-         // C  filled bunch from C side, empty from A side
-         // E  empty bunch from both sides
+      if (cosmicTriggersList) {
+       if (cosmicTriggersList->FindObject(trClass.Data())) {
+         // Cosmic trigger accorind to the table
+         // provided in OCDB
          cosmicTrigger = kTRUE;
-         delete tmp;
-         continue;
+         AliDebug(1,Form("Trigger %s identified as cosmic according to the list defined in OCDB.",
+                         trClass.Data()));
        }
       }
       else {
-       AliWarning(Form("Trigger class %s doesn't comply with the naming convention!",trClass.Data()));
+       AliDebug(1,"Cosmic trigger list is not provided, cosmic event specie is effectively disabled!");
       }
-      delete tmp;
 
       otherTrigger = kTRUE;
     }
index a468909..deff2f3 100644 (file)
@@ -18,6 +18,7 @@
 class AliDetectorRecoParam;
 class AliRunInfo;
 class AliEventInfo;
+class THashTable;
 
 class AliRecoParam : public TObject
 {
@@ -42,7 +43,8 @@ class AliRecoParam : public TObject
 
   virtual void                  Print(Option_t *option="") const;
   const TObjArray              *GetDetRecoParamArray(Int_t iDet) const { return fDetRecoParams[iDet]; }
-  void                          SetEventSpecie(const AliRunInfo*runInfo, const AliEventInfo &evInfo);
+  void                          SetEventSpecie(const AliRunInfo*runInfo, const AliEventInfo &evInfo,
+                                              const THashTable*cosmicTriggersList);
   EventSpecie_t                 GetEventSpecie() const { return fEventSpecie; }
   static const char*            GetEventSpecieName(EventSpecie_t es);
   static const char*            GetEventSpecieName(Int_t esIndex);
index 398c6f7..194b3a4 100644 (file)
 #include <TProofOutputFile.h>
 #include <TROOT.h>
 #include <TSystem.h>
+#include <THashTable.h>
 
 #include "AliAlignObj.h"
 #include "AliCDBEntry.h"
@@ -241,6 +242,7 @@ AliReconstruction::AliReconstruction(const char* gAliceFilename) :
   fDiamondProfileSPD(NULL),
   fDiamondProfile(NULL),
   fDiamondProfileTPC(NULL),
+  fListOfCosmicTriggers(NULL),
   
   fGRPData(NULL),
 
@@ -336,6 +338,7 @@ AliReconstruction::AliReconstruction(const AliReconstruction& rec) :
   fDiamondProfileSPD(rec.fDiamondProfileSPD),
   fDiamondProfile(rec.fDiamondProfile),
   fDiamondProfileTPC(rec.fDiamondProfileTPC),
+  fListOfCosmicTriggers(NULL),
   
   fGRPData(NULL),
 
@@ -467,6 +470,9 @@ AliReconstruction& AliReconstruction::operator = (const AliReconstruction& rec)
   delete fDiamondProfileTPC; fDiamondProfileTPC = NULL;
   if (rec.fDiamondProfileTPC) fDiamondProfileTPC = new AliESDVertex(*rec.fDiamondProfileTPC);
 
+  delete fListOfCosmicTriggers; fListOfCosmicTriggers = NULL;
+  if (rec.fListOfCosmicTriggers) fListOfCosmicTriggers = (THashTable*)((rec.fListOfCosmicTriggers)->Clone());
+
   delete fGRPData; fGRPData = NULL;
   //  if (rec.fGRPData) fGRPData = (TMap*)((rec.fGRPData)->Clone());
   if (rec.fGRPData) fGRPData = (AliGRPObject*)((rec.fGRPData)->Clone());
@@ -507,6 +513,10 @@ AliReconstruction::~AliReconstruction()
 // clean up
 
   CleanUp();
+  if (fListOfCosmicTriggers) {
+    fListOfCosmicTriggers->Delete();
+    delete fListOfCosmicTriggers;
+  }
   delete fGRPData;
   fOptions.Delete();
   if (fAlignObjArray) {
@@ -1164,6 +1174,17 @@ Bool_t AliReconstruction::InitGRP() {
      AliError("No TPC diamond profile found in OCDB!");
   }
 
+  entry = AliCDBManager::Instance()->Get("GRP/Calib/CosmicTriggers");
+  if (entry) {
+    fListOfCosmicTriggers = dynamic_cast<THashTable*>(entry->GetObject());
+    entry->SetOwner(0);
+    AliCDBManager::Instance()->UnloadFromCache("GRP/Calib/CosmicTriggers");
+  }
+
+  if (!fListOfCosmicTriggers) {
+    AliWarning("Can not get list of cosmic triggers from OCDB! Cosmic event specie will be effectively disabled!");
+  }
+
   return kTRUE;
 } 
 
@@ -1567,7 +1588,7 @@ Bool_t AliReconstruction::ProcessEvent(Int_t iEvent)
 
   // Fill Event-info object
   GetEventInfo();
-  fRecoParam.SetEventSpecie(fRunInfo,fEventInfo);
+  fRecoParam.SetEventSpecie(fRunInfo,fEventInfo,fListOfCosmicTriggers);
   AliInfo(Form("Current event specie: %s",fRecoParam.PrintEventSpecie()));
 
   // Set the reco-params
index 96850dd..a9330c8 100644 (file)
@@ -42,6 +42,7 @@ class AliRecoParam;
 class AliDetectorRecoParam;
 class AliRunInfo;
 class AliGRPObject;
+class THashTable;
 #include "AliQAv1.h"
 #include "AliEventInfo.h"
 #include "AliRecoParam.h"
@@ -255,6 +256,7 @@ private:
   AliESDVertex*  fDiamondProfileSPD;       // (x,y) diamond profile from SPD for AliITSVertexer3D(Z)
   AliESDVertex*  fDiamondProfile;          // (x,y) diamond profile for AliVertexerTracks (ITS+TPC)
   AliESDVertex*  fDiamondProfileTPC;       // (x,y) diamond profile from TPC for AliVertexerTracks
+  THashTable*    fListOfCosmicTriggers;    // list of cosmic triggers as defined by trigger coordination
 
   AliGRPObject*  fGRPData;              // Data from the GRP/GRP/Data CDB folder
 
@@ -294,7 +296,7 @@ private:
 
   TTree*              fChain;      //! The raw-data chain in case of AliRawReaderChain
 
-  ClassDef(AliReconstruction, 32)      // class for running the reconstruction
+  ClassDef(AliReconstruction, 33)      // class for running the reconstruction
 };
 
 #endif