Storage of interaction records for evaluation of instantaneous luminocity (space...
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 9 Nov 2011 14:44:40 +0000 (14:44 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 9 Nov 2011 14:44:40 +0000 (14:44 +0000)
STEER/ESD/AliESDHeader.cxx
STEER/ESD/AliESDHeader.h
STEER/STEER/AliReconstruction.cxx

index ef110b7..f64f94d 100644 (file)
@@ -48,7 +48,8 @@ AliESDHeader::AliESDHeader() :
   fTriggerScalersDeltaEvent(),
   fTriggerScalersDeltaRun(),
   fTriggerInputsNames(kNTriggerInputs),
-  fCTPConfig(NULL)
+  fCTPConfig(NULL),
+  fIRBufferArray()
 {
   // default constructor
 
@@ -62,6 +63,8 @@ AliESDHeader::~AliESDHeader()
   // destructor
   for(Int_t i=0;i<kNMaxIR;i++)if(fIRArray[i])delete fIRArray[i];
   delete fCTPConfig;
+
+  fIRBufferArray.Delete();
 }
 
 
@@ -83,7 +86,8 @@ AliESDHeader::AliESDHeader(const AliESDHeader &header) :
   fTriggerScalersDeltaEvent(header.fTriggerScalersDeltaEvent),
   fTriggerScalersDeltaRun(header.fTriggerScalersDeltaRun),
   fTriggerInputsNames(TObjArray(kNTriggerInputs)),
-  fCTPConfig(header.fCTPConfig)
+  fCTPConfig(header.fCTPConfig),
+  fIRBufferArray()
 {
   // copy constructor
   SetName(header.fName);
@@ -96,6 +100,11 @@ AliESDHeader::AliESDHeader(const AliESDHeader &header) :
     TNamed *str = (TNamed *)((header.fTriggerInputsNames).At(i));
     if (str) fTriggerInputsNames.AddAt(new TNamed(*str),i);
   }
+
+  for(Int_t i = 0; i < (header.fIRBufferArray).GetEntries(); ++i) {
+    AliTriggerIR *ir = (AliTriggerIR*)((header.fIRBufferArray).At(i));
+    if (ir) fIRBufferArray.Add(new AliTriggerIR(*ir));
+  }
 }
 
 AliESDHeader& AliESDHeader::operator=(const AliESDHeader &header)
@@ -131,6 +140,12 @@ AliESDHeader& AliESDHeader::operator=(const AliESDHeader &header)
     }
     SetName(header.fName);
     SetTitle(header.fTitle);
+
+    fIRBufferArray.Delete();
+    for(Int_t i = 0; i < (header.fIRBufferArray).GetEntries(); ++i) {
+      AliTriggerIR *ir = (AliTriggerIR*)((header.fIRBufferArray).At(i));
+      if (ir) fIRBufferArray.Add(new AliTriggerIR(*ir));
+    }
   }
   return *this;
 }
@@ -173,19 +188,18 @@ void AliESDHeader::Reset()
    delete fIRArray[i];
    fIRArray[i]=0;
   }
+
+  fIRBufferArray.Delete();
 }
 //______________________________________________________________________________
 Bool_t AliESDHeader::AddTriggerIR(const AliTriggerIR* ir)
 {
- // Adds trigger interaction record to array
- for(Int_t i=0;i<kNMaxIR;i++){
-  if(!fIRArray[i]){
-    fIRArray[i]=new AliTriggerIR(*ir);
-    return 0;
-  }
- }
- //AliErrorClass("Attempt to add # of IRs > kNMaxIR \n");
- return 1;
+  // Add an IR object into the array
+  // of IRs in the ESD header
+
+ fIRBufferArray.Add(new AliTriggerIR(*ir));
+
+ return kTRUE;
 }
 //______________________________________________________________________________
 void AliESDHeader::Print(const Option_t *) const
index 25906da..eb280cf 100644 (file)
@@ -12,6 +12,7 @@
 //   Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch 
 //-------------------------------------------------------------------------
 
+#include <TObjArray.h>
 #include <TClonesArray.h>
 #include "AliVHeader.h"
 #include "AliTriggerScalersESD.h"
@@ -54,7 +55,7 @@ public:
   const AliTriggerScalersRecordESD* GetTriggerScalersRecord() const {return &fTriggerScalers; }
   const AliTriggerScalersRecordESD* GetTriggerScalersDeltaEvent() const {return &fTriggerScalersDeltaEvent; }
   const AliTriggerScalersRecordESD* GetTriggerScalersDeltaRun() const {return &fTriggerScalersDeltaRun; }
-  const AliTriggerIR* GetTriggerIR(Int_t i) const { return fIRArray[i]; }
+  const AliTriggerIR* GetTriggerIR(Int_t i) const { return (const AliTriggerIR*)fIRBufferArray[i]; }
   void SetActiveTriggerInputs(const char*name, Int_t index);
   const char* GetTriggerInputName(Int_t index, Int_t trglevel) const;
   TString     GetActiveTriggerInputs() const;
@@ -100,8 +101,11 @@ private:
   AliTriggerIR*  fIRArray[kNMaxIR];// Array with trigger IRs 
   TObjArray    fTriggerInputsNames;// Array of TNamed of the active trigger inputs (L0,L1 and L2)
   AliTriggerConfiguration*  fCTPConfig; // Trigger configuration for the run
+  TObjArray    fIRBufferArray;// Array with interaction records before and after triggered event
 
-  ClassDef(AliESDHeader,9)
+
+
+  ClassDef(AliESDHeader,10)
 };
 
 #endif
index 1d490f9..a9b770e 100644 (file)
@@ -3117,10 +3117,9 @@ Bool_t AliReconstruction::FillTriggerESD(AliESDEvent*& esd)
       esdheader->SetL2TriggerInputs(input.GetL2Inputs());
       // IR
       UInt_t orbit=input.GetOrbitID();
-       for(Int_t i=0 ; i<input.GetNIRs() ; i++ )
-          if(TMath::Abs(Int_t(orbit-(input.GetIR(i))->GetOrbit()))<=1){
-            esdheader->AddTriggerIR(input.GetIR(i));
-         }
+      for(Int_t i=0 ; i<input.GetNIRs() ; i++ ) {
+       esdheader->AddTriggerIR(input.GetIR(i));
+      }
        AliCentralTrigger* rlCTP = fRunLoader->GetTrigger();
        rlCTP->SetL0TriggerInputs(input.GetL0Inputs());
        rlCTP->SetL1TriggerInputs(input.GetL1Inputs());