The CTP (trigger) infor is written into the ESD. The corresponding entries are fTrigg...
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 4 May 2006 10:30:33 +0000 (10:30 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 4 May 2006 10:30:33 +0000 (10:30 +0000)
STEER/AliESD.cxx
STEER/AliESD.h
STEER/AliReconstruction.cxx
STEER/AliReconstruction.h
STEER/AliTagCreator.cxx
STEER/STEERLinkDef.h
STEER/libSTEER.pkg

index d0dde6b..7716dd3 100644 (file)
@@ -31,7 +31,8 @@ ClassImp(AliESD)
 AliESD::AliESD():
   fEventNumber(0),
   fRunNumber(0),
-  fTrigger(0),
+  fTriggerMask(0),
+  fTriggerCluster(0),
   fRecoVersion(0),
   fMagneticField(0),
   fZDCN1Energy(0),
@@ -111,7 +112,8 @@ void AliESD::Reset()
 {
   fEventNumber=0;
   fRunNumber=0;
-  fTrigger=0;
+  fTriggerMask=0;
+  fTriggerCluster=0;
   fRecoVersion=0;
   fMagneticField=0;
   fZDCN1Energy=0;
@@ -146,10 +148,10 @@ void AliESD::Print(Option_t *) const
   // Print header information of the event
   //
   printf("ESD run information\n");
-  printf("Event # %d Run # %d Trigger %ld Magnetic field %f \n",
+  printf("Event # %d Run # %d Trigger %lld Magnetic field %f \n",
         GetEventNumber(),
         GetRunNumber(),
-        GetTrigger(),
+        GetTriggerMask(),
         GetMagneticField() );
   printf("Vertex: (%.4f +- %.4f, %.4f +- %.4f, %.4f +- %.4f) cm\n",
         fPrimaryVertex.GetXv(), fPrimaryVertex.GetXRes(),
index 67f2503..1ac8298 100644 (file)
@@ -42,7 +42,8 @@ public:
 
   void SetEventNumber(Int_t n) {fEventNumber=n;}
   void SetRunNumber(Int_t n) {fRunNumber=n;}
-  void SetTrigger(Long_t n) {fTrigger=n;}
+  void SetTriggerMask(ULong64_t n) {fTriggerMask=n;}
+  void SetTriggerCluster(UChar_t n) {fTriggerCluster = n;}
   void SetMagneticField(Float_t mf){fMagneticField = mf;}
   Float_t GetMagneticField() const {return fMagneticField;}
   
@@ -136,7 +137,8 @@ public:
 
   Int_t  GetEventNumber() const {return fEventNumber;}
   Int_t  GetRunNumber() const {return fRunNumber;}
-  Long_t GetTrigger() const {return fTrigger;}
+  ULong64_t GetTriggerMask() const {return fTriggerMask;}
+  UChar_t  GetTriggerCluster() const {return fTriggerCluster;}
   
   Int_t GetNumberOfTracks()     const {return fTracks.GetEntriesFast();}
   Int_t GetNumberOfHLTConfMapTracks()     const {return fHLTConfMapTracks.GetEntriesFast();}
@@ -201,7 +203,8 @@ protected:
   // Event Identification
   Int_t        fEventNumber;     // Event Number
   Int_t        fRunNumber;       // Run Number
-  Long_t       fTrigger;         // Trigger Type
+  ULong64_t    fTriggerMask;     // Trigger Type (mask)
+  UChar_t      fTriggerCluster;  // Trigger cluster (mask)
   Int_t        fRecoVersion;     // Version of reconstruction 
   Float_t      fMagneticField;   // Solenoid Magnetic Field in kG : for compatibility with AliMagF
 
@@ -237,7 +240,7 @@ protected:
  
   AliESDFMD *  fESDFMD; // FMD object containing rough multiplicity
 
-  ClassDef(AliESD,9)  //ESD class 
+  ClassDef(AliESD,10)  //ESD class 
 };
 #endif 
 
index 26b56ca..a49ca60 100644 (file)
 #include "AliCDBEntry.h"
 #include "AliAlignObj.h"
 
+#include "AliCentralTrigger.h"
+#include "AliCTPRawStream.h"
+
 ClassImp(AliReconstruction)
 
 
@@ -159,6 +162,7 @@ AliReconstruction::AliReconstruction(const char* gAliceFilename, const char* cdb
   fStopOnError(kFALSE),
   fWriteAlignmentData(kFALSE),
   fWriteESDfriend(kFALSE),
+  fFillTriggerESD(kTRUE),
 
   fRunLocalReconstruction("ALL"),
   fRunTracking("ALL"),
@@ -200,6 +204,7 @@ AliReconstruction::AliReconstruction(const AliReconstruction& rec) :
   fStopOnError(rec.fStopOnError),
   fWriteAlignmentData(rec.fWriteAlignmentData),
   fWriteESDfriend(rec.fWriteESDfriend),
+  fFillTriggerESD(rec.fFillTriggerESD),
 
   fRunLocalReconstruction(rec.fRunLocalReconstruction),
   fRunTracking(rec.fRunTracking),
@@ -669,6 +674,15 @@ Bool_t AliReconstruction::Run(const char* input,
     AliESDpid::MakePID(esd);
     if (fCheckPointLevel > 1) WriteESD(esd, "PID");
 
+    if (fFillTriggerESD) {
+      if (!ReadESD(esd, "trigger")) {
+       if (!FillTriggerESD(esd)) {
+         if (fStopOnError) {CleanUp(file, fileOld); return kFALSE;}
+       }
+       if (fCheckPointLevel > 1) WriteESD(esd, "trigger");
+      }
+    }
+
     // write ESD
     tree->Fill();
     // write HLT ESD
@@ -1131,6 +1145,45 @@ Bool_t AliReconstruction::FillESD(AliESD*& esd, const TString& detectors)
   return kTRUE;
 }
 
+//_____________________________________________________________________________
+Bool_t AliReconstruction::FillTriggerESD(AliESD*& esd)
+{
+  // Reads the trigger decision which is
+  // stored in Trigger.root file and fills
+  // the corresponding esd entries
+
+  AliInfo("Filling trigger information into the ESD");
+
+  if (fRawReader) {
+    AliCTPRawStream input(fRawReader);
+    if (!input.Next()) {
+      AliError("No valid CTP (trigger) DDL raw data is found ! The trigger information is not stored in the ESD !");
+      return kFALSE;
+    }
+    esd->SetTriggerMask(input.GetClassMask());
+    esd->SetTriggerCluster(input.GetClusterMask());
+  }
+  else {
+    AliRunLoader *runloader = AliRunLoader::GetRunLoader();
+    if (runloader) {
+      if (!runloader->LoadTrigger()) {
+       AliCentralTrigger *aCTP = runloader->GetTrigger();
+       esd->SetTriggerMask(aCTP->GetClassMask());
+       esd->SetTriggerCluster(aCTP->GetClusterMask());
+      }
+      else {
+       AliWarning("No trigger can be loaded! The trigger information is not stored in the ESD !");
+       return kFALSE;
+      }
+    }
+    else {
+      AliError("No run loader is available! The trigger information is not stored in the ESD !");
+      return kFALSE;
+    }
+  }
+
+  return kTRUE;
+}
 
 //_____________________________________________________________________________
 Bool_t AliReconstruction::IsSelected(TString detName, TString& detectors) const
@@ -1664,7 +1717,7 @@ void AliReconstruction::CreateTag(TFile* file)
 
     evTag->SetT0VertexZ(esd->GetT0zVertex());
     
-    evTag->SetTrigger(esd->GetTrigger());
+    evTag->SetTrigger(esd->GetTriggerMask());
     
     evTag->SetZDCNeutron1Energy(esd->GetZDCN1Energy());
     evTag->SetZDCProton1Energy(esd->GetZDCP1Energy());
index fa4bdc4..0142565 100644 (file)
@@ -73,6 +73,7 @@ public:
   void SetStopOnError(Bool_t flag=kTRUE) {fStopOnError=flag;}
   void SetWriteAlignmentData(Bool_t flag=kTRUE){fWriteAlignmentData=flag;}
   void SetWriteESDfriend(Bool_t flag=kTRUE){fWriteESDfriend=flag;}
+  void SetFillTriggerESD(Bool_t flag=kTRUE){fFillTriggerESD=flag;}
 
                   
   void           SetCheckPointLevel(Int_t checkPointLevel)
@@ -107,6 +108,7 @@ private:
   Bool_t         RunHLTTracking(AliESD*& esd);
   Bool_t         RunTracking(AliESD*& esd);
   Bool_t         FillESD(AliESD*& esd, const TString& detectors);
+  Bool_t         FillTriggerESD(AliESD*& esd);
 
   Bool_t         IsSelected(TString detName, TString& detectors) const;
   Bool_t         InitRunLoader();
@@ -133,7 +135,7 @@ private:
   Bool_t         fStopOnError;        // stop or continue on errors
   Bool_t         fWriteAlignmentData; // write track space-points flag
   Bool_t         fWriteESDfriend;     // write ESD friend flag
-
+  Bool_t         fFillTriggerESD;     // fill trigger info into ESD
 
   TString        fRunLocalReconstruction; // run the local reconstruction for these detectors
   TString        fRunTracking;        // run the tracking for these detectors
index d74d509..8e87fcb 100644 (file)
@@ -408,7 +408,7 @@ void AliTagCreator::CreateTag(TFile* file, const char *guid, const char *md5, co
     
     evTag->SetT0VertexZ(esd->GetT0zVertex());
     
-    evTag->SetTrigger(esd->GetTrigger());
+    evTag->SetTrigger(esd->GetTriggerMask());
     
     evTag->SetZDCNeutron1Energy(esd->GetZDCN1Energy());
     evTag->SetZDCProton1Energy(esd->GetZDCP1Energy());
index 9ed6e3b..1c3a880 100644 (file)
 #pragma link C++ class AliTriggerDescriptor+;
 #pragma link C++ class AliCentralTrigger+;
 #pragma link C++ class AliCTPRawData+;
+#pragma link C++ class AliCTPRawStream+;
 
 #endif
index a6f336e..2fc3005 100644 (file)
@@ -33,7 +33,7 @@ AliTrackFitter.cxx AliTrackFitterRieman.cxx AliTrackFitterStraight.cxx\
 AliTrackResiduals.cxx AliTrackResidualsChi2.cxx AliTrackResidualsFast.cxx\
 AliAlignmentTracks.cxx \
 AliExpression.cxx \
-AliCTPRawData.cxx
+AliCTPRawData.cxx AliCTPRawStream.cxx
 
 HDRS:= $(SRCS:.cxx=.h)