IR datum changed to array of pointers.
authorlietava <lietava@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 3 Jul 2009 12:32:06 +0000 (12:32 +0000)
committerlietava <lietava@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 3 Jul 2009 12:32:06 +0000 (12:32 +0000)
STEER/AliESDHeader.cxx
STEER/AliESDHeader.h

index e588bb5..74835b2 100644 (file)
@@ -42,15 +42,19 @@ AliESDHeader::AliESDHeader() :
   fL1TriggerInputs(0),
   fL2TriggerInputs(0),
   fTriggerScalers(),
-  fIRArray("AliTriggerIR",3)
+  fIRArray(0)
 {
   // default constructor
 
   SetName("AliESDHeader");
+  fIRArray = new AliTriggerIR *[kNMaxIR];
+  for(Int_t i = 0; i<kNMaxIR ; i++) fIRArray[i] = 0;
+
 }
 AliESDHeader::~AliESDHeader() 
 {
   // destructor
+  for(Int_t i=0;i<kNMaxIR;i++)if(fIRArray[i])delete fIRArray[i];
 }
 
 
@@ -68,11 +72,16 @@ AliESDHeader::AliESDHeader(const AliESDHeader &header) :
   fL1TriggerInputs(header.fL1TriggerInputs),
   fL2TriggerInputs(header.fL2TriggerInputs),
   fTriggerScalers(header.fTriggerScalers),
-  fIRArray(*((TClonesArray*)header.fIRArray.Clone()))
+  fIRArray(0)
 {
   // copy constructor
   SetName(header.fName);
   SetTitle(header.fTitle);
+  fIRArray = new AliTriggerIR *[kNMaxIR];
+  for(Int_t i = 0; i<kNMaxIR ; i++) {
+    if(header.fIRArray[i])fIRArray[i] = new AliTriggerIR(*header.fIRArray[i]);
+    else fIRArray[i]=0;
+  }
 }
 
 AliESDHeader& AliESDHeader::operator=(const AliESDHeader &header)
@@ -92,7 +101,11 @@ AliESDHeader& AliESDHeader::operator=(const AliESDHeader &header)
     fL1TriggerInputs = header.fL1TriggerInputs;
     fL2TriggerInputs = header.fL2TriggerInputs;
     fTriggerScalers = header.fTriggerScalers;
-    fIRArray = header.fIRArray;
+    fIRArray = new AliTriggerIR *[kNMaxIR];
+    for(Int_t i = 0; i<kNMaxIR ; i++) {
+       if(header.fIRArray[i])fIRArray[i] = new AliTriggerIR(*header.fIRArray[i]);
+       else fIRArray[i]=0;
+    }
     SetName(header.fName);
     SetTitle(header.fTitle);
 
@@ -128,13 +141,20 @@ void AliESDHeader::Reset()
   fL1TriggerInputs   = 0;
   fL2TriggerInputs   = 0;
   fTriggerScalers.Reset();
-  fIRArray.Clear();
+  for(Int_t i=0;i<kNMaxIR;i++)if(fIRArray[i]){
+   delete fIRArray[i];
+   fIRArray[i]=0;
+  }
 }
 //______________________________________________________________________________
-void AliESDHeader::AddTriggerIR(const AliTriggerIR* ir)
+Bool_t AliESDHeader::AddTriggerIR(const AliTriggerIR* ir)
 {
  // Adds trigger interaction record to array
- new(fIRArray[fIRArray.GetEntriesFast()]) AliTriggerIR(*ir);
+ for(Int_t i=0;i<kNMaxIR;i++){
+  if(!fIRArray[i])fIRArray[i]=const_cast<AliTriggerIR*>(ir);
+  return 0;
+ }
+ return 1;
 }
 //______________________________________________________________________________
 void AliESDHeader::Print(const Option_t *) const
index dfb6b61..a762efd 100644 (file)
@@ -37,7 +37,7 @@ public:
   void      SetBunchCrossNumber(UShort_t n) {fBunchCrossNumber=n;}
   void      SetPeriodNumber(UInt_t n) {fPeriodNumber=n;}
   void      SetTriggerCluster(UChar_t n) {fTriggerCluster = n;}
-  void      AddTriggerIR(const AliTriggerIR* ir);
+  Bool_t    AddTriggerIR(const AliTriggerIR* ir);
 
 //************Setters/Getters for Trigger Inputs and TriggerScalersRecordESD
   void SetL0TriggerInputs(UInt_t n) {fL0TriggerInputs=n;}
@@ -76,7 +76,8 @@ private:
   UInt_t       fL1TriggerInputs;   //L1 Trigger Inputs
   UShort_t     fL2TriggerInputs;   //L2 Trigger Inputs
   AliTriggerScalersRecordESD fTriggerScalers;  //Trigger counters of triggered classes in event
-  TClonesArray     fIRArray;     // Array with trigger interaction records (3)
+  enum {kNMaxIR = 3};            // Max number of interaction records (IR)
+  AliTriggerIR**  fIRArray;     // Array with trigger IRs 
 
   ClassDef(AliESDHeader,6)
 };