]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Changes for report #72965: New AliESDCaloTrigger + associated modifs in AliESDEvent
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 26 Oct 2010 16:33:49 +0000 (16:33 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 26 Oct 2010 16:33:49 +0000 (16:33 +0000)
PWG4/PartCorrDep/AliAnaCaloTrigger.cxx
STEER/AliESDCaloTrigger.cxx
STEER/AliESDCaloTrigger.h
STEER/AliESDEvent.cxx
STEER/AliESDEvent.h

index 407ec8f32250933e61d8f42e3915b8cf187223bd..7953c6847d25554f1ea57bf94f1758fee706f379 100755 (executable)
@@ -126,109 +126,110 @@ void AliAnaCaloTrigger::UserExec(Option_t *)
   
   if ( !((Entry()-1)%100) ) 
     printf(" Processing event # %lld\n",  Entry()) ; 
-  AliESDEvent* esd = (AliESDEvent*)InputEvent();
+  AliESDEvent* esd = 0x0;
+  esd = (AliESDEvent*)InputEvent();
   
   //Get MC data, if available
   AliStack* stack = 0x0; 
   if(MCEvent())
     stack = MCEvent()->Stack();
   
-  // Get trigger information of fCalorimeter 
-  TArrayF * triggerAmplitudes = 0x0 ;
-  TArrayF * triggerPosition   = 0x0 ;
-  Int_t numberOfCaloClusters  =  esd->GetNumberOfCaloClusters() ;
+  // // Get trigger information of fCalorimeter 
+  // TArrayF * triggerAmplitudes = 0x0 ;
+  // TArrayF * triggerPosition   = 0x0 ;
+  // Int_t numberOfCaloClusters  =  esd->GetNumberOfCaloClusters() ;
   
-  if(fCalorimeter == "PHOS"){
-    triggerAmplitudes      = esd->GetPHOSTriggerAmplitudes();
-    triggerPosition        = esd->GetPHOSTriggerPosition();
-  }
-  else if(fCalorimeter == "EMCAL"){
-    triggerAmplitudes    = esd->GetEMCALTriggerAmplitudes();
-    triggerPosition      = esd->GetEMCALTriggerPosition();
-  }
+  // if(fCalorimeter == "PHOS"){
+  //   triggerAmplitudes      = esd->GetPHOSTriggerAmplitudes();
+  //   triggerPosition        = esd->GetPHOSTriggerPosition();
+  // }
+  // else if(fCalorimeter == "EMCAL"){
+  //   triggerAmplitudes    = esd->GetEMCALTriggerAmplitudes();
+  //   triggerPosition      = esd->GetEMCALTriggerPosition();
+  // }
   
-  if( triggerAmplitudes && triggerPosition ){
-    // trigger amplitudes
-    const Float_t ka22    = static_cast<Float_t>(triggerAmplitudes->At(0)) ; 
-    const Float_t ka22O   = static_cast<Float_t>(triggerAmplitudes->At(1)) ; 
-    const Float_t kaNN    = static_cast<Float_t>(triggerAmplitudes->At(2)) ; 
-    const Float_t kaNNO   = static_cast<Float_t>(triggerAmplitudes->At(3)) ; 
+  // if( triggerAmplitudes && triggerPosition ){
+  //   // trigger amplitudes
+  //   const Float_t ka22    = static_cast<Float_t>(triggerAmplitudes->At(0)) ; 
+  //   const Float_t ka22O   = static_cast<Float_t>(triggerAmplitudes->At(1)) ; 
+  //   const Float_t kaNN    = static_cast<Float_t>(triggerAmplitudes->At(2)) ; 
+  //   const Float_t kaNNO   = static_cast<Float_t>(triggerAmplitudes->At(3)) ; 
     
-    // trigger position
-    const Float_t kx22  =  static_cast<Float_t>(triggerPosition->At(0)) ; 
-    const Float_t ky22  =  static_cast<Float_t>(triggerPosition->At(1)) ;
-    const Float_t kz22  =  static_cast<Float_t>(triggerPosition->At(2)) ;
-    const Float_t kxNN  =  static_cast<Float_t>(triggerPosition->At(3)) ; 
-    const Float_t kyNN  =  static_cast<Float_t>(triggerPosition->At(4)) ;
-    const Float_t kzNN  =  static_cast<Float_t>(triggerPosition->At(5)) ; 
+  //   // trigger position
+  //   const Float_t kx22  =  static_cast<Float_t>(triggerPosition->At(0)) ; 
+  //   const Float_t ky22  =  static_cast<Float_t>(triggerPosition->At(1)) ;
+  //   const Float_t kz22  =  static_cast<Float_t>(triggerPosition->At(2)) ;
+  //   const Float_t kxNN  =  static_cast<Float_t>(triggerPosition->At(3)) ; 
+  //   const Float_t kyNN  =  static_cast<Float_t>(triggerPosition->At(4)) ;
+  //   const Float_t kzNN  =  static_cast<Float_t>(triggerPosition->At(5)) ; 
     
-    //printf("ka22 %f, ka220 %f, kaNN %f, kaNN0 %f\n",ka22,ka22O,kaNN,kaNNO);
-    //printf("kx22 %f, ky22 %f, kz22 %f, kxNN %f, kyNN %f, kzNN %f \n",kx22,ky22,kz22,kxNN,kyNN,kzNN);
+  //   //printf("ka22 %f, ka220 %f, kaNN %f, kaNN0 %f\n",ka22,ka22O,kaNN,kaNNO);
+  //   //printf("kx22 %f, ky22 %f, kz22 %f, kxNN %f, kyNN %f, kzNN %f \n",kx22,ky22,kz22,kxNN,kyNN,kzNN);
     
-    Float_t enMax       = 0. ;
-    Float_t phEnMax     = 0. ;
-    Float_t etaMax      = 0.5 ;
-    Float_t phiMax      = 0. ; 
-    Float_t phEtaMax    = 0.5 ;
-    Float_t phPhiMax    = 0. ; 
+  //   Float_t enMax       = 0. ;
+  //   Float_t phEnMax     = 0. ;
+  //   Float_t etaMax      = 0.5 ;
+  //   Float_t phiMax      = 0. ; 
+  //   Float_t phEtaMax    = 0.5 ;
+  //   Float_t phPhiMax    = 0. ; 
     
-    TVector3 vpos22(kx22, ky22, kz22) ;
-    TVector3 vposNN(kxNN, kyNN, kzNN) ;
-    Float_t eta22 = vpos22.Eta() ; 
-    Float_t phi22 = vpos22.Phi() * TMath::RadToDeg() + 360. ; 
-    Float_t etaNN = vposNN.Eta() ; 
-    Float_t phiNN = vposNN.Phi() * TMath::RadToDeg() + 360. ; 
+  //   TVector3 vpos22(kx22, ky22, kz22) ;
+  //   TVector3 vposNN(kxNN, kyNN, kzNN) ;
+  //   Float_t eta22 = vpos22.Eta() ; 
+  //   Float_t phi22 = vpos22.Phi() * TMath::RadToDeg() + 360. ; 
+  //   Float_t etaNN = vposNN.Eta() ; 
+  //   Float_t phiNN = vposNN.Phi() * TMath::RadToDeg() + 360. ; 
     
     
-    Int_t      icaloCluster = 0 ; 
-    Int_t      labelmax     = -1 ;
-    // loop over the Calorimeters Clusters
+  //   Int_t      icaloCluster = 0 ; 
+  //   Int_t      labelmax     = -1 ;
+  //   // loop over the Calorimeters Clusters
     
-    for(icaloCluster = 0 ; icaloCluster < numberOfCaloClusters ; icaloCluster++) {
+  //   for(icaloCluster = 0 ; icaloCluster < numberOfCaloClusters ; icaloCluster++) {
       
-      AliESDCaloCluster * cluster = esd->GetCaloCluster(icaloCluster) ;
+  //     AliESDCaloCluster * cluster = esd->GetCaloCluster(icaloCluster) ;
       
-      if (cluster && ( (fCalorimeter == "PHOS" && cluster->IsPHOS())  ||  
-                      (fCalorimeter == "EMCAL" && cluster->IsEMCAL()))) {
+  //     if (cluster && ( (fCalorimeter == "PHOS" && cluster->IsPHOS())  ||  
+  //                  (fCalorimeter == "EMCAL" && cluster->IsEMCAL()))) {
        
-       Float_t cluEnergy = cluster->E() ; 
-       Float_t pos[3] ;
-       TVector3 vpos ;
+  //   Float_t cluEnergy = cluster->E() ; 
+  //   Float_t pos[3] ;
+  //   TVector3 vpos ;
        
-       cluster->GetPosition( pos ) ;
+  //   cluster->GetPosition( pos ) ;
        
-       if ( cluEnergy > enMax) { 
-         enMax    = cluEnergy ; 
-         vpos.SetXYZ(pos[0], pos[1], pos[2]) ; 
-         etaMax   = vpos.Eta() ; 
-         phiMax   = vpos.Phi() ; 
-         labelmax = cluster->GetLabel();
-       }
+  //   if ( cluEnergy > enMax) { 
+  //     enMax    = cluEnergy ; 
+  //     vpos.SetXYZ(pos[0], pos[1], pos[2]) ; 
+  //     etaMax   = vpos.Eta() ; 
+  //     phiMax   = vpos.Phi() ; 
+  //     labelmax = cluster->GetLabel();
+  //   }
        
-       const Double_t * pid = cluster->GetPID() ;
+  //   const Double_t * pid = cluster->GetPID() ;
        
-       if(pid[AliPID::kPhoton] > 0.9) {
-         if ( cluEnergy > phEnMax) { 
-           phEnMax   = cluEnergy ; 
-           vpos.SetXYZ(pos[0], pos[1], pos[2]) ; 
-           phEtaMax = vpos.Eta() ; 
-           phPhiMax = vpos.Phi() ; 
-         }
-       }
-      }//if cluster
+  //   if(pid[AliPID::kPhoton] > 0.9) {
+  //     if ( cluEnergy > phEnMax) { 
+  //       phEnMax   = cluEnergy ; 
+  //       vpos.SetXYZ(pos[0], pos[1], pos[2]) ; 
+  //       phEtaMax = vpos.Eta() ; 
+  //       phPhiMax = vpos.Phi() ; 
+  //     }
+  //   }
+  //     }//if cluster
       
-      Float_t ptGen = -1;
-      if(stack && labelmax < stack->GetNtrack() && labelmax >= 0 ){
-       TParticle * particle = stack->Particle(labelmax); 
-       ptGen = particle->Energy();
-      }
+  //     Float_t ptGen = -1;
+  //     if(stack && labelmax < stack->GetNtrack() && labelmax >= 0 ){
+  //   TParticle * particle = stack->Particle(labelmax); 
+  //   ptGen = particle->Energy();
+  //     }
       
-      fNtTrigger22->Fill(ka22, ka22O, ptGen, enMax, phEnMax, eta22, phi22, etaMax, phiMax * TMath::RadToDeg() + 360., phEtaMax, phPhiMax * TMath::RadToDeg() + 360.);
-      fNtTriggerNN->Fill(kaNN, kaNNO, ptGen, enMax, phEnMax, etaNN, phiNN, etaMax, phiMax * TMath::RadToDeg() + 360., phEtaMax, phPhiMax * TMath::RadToDeg() + 360.);
+  //     fNtTrigger22->Fill(ka22, ka22O, ptGen, enMax, phEnMax, eta22, phi22, etaMax, phiMax * TMath::RadToDeg() + 360., phEtaMax, phPhiMax * TMath::RadToDeg() + 360.);
+  //     fNtTriggerNN->Fill(kaNN, kaNNO, ptGen, enMax, phEnMax, etaNN, phiNN, etaMax, phiMax * TMath::RadToDeg() + 360., phEtaMax, phPhiMax * TMath::RadToDeg() + 360.);
       
-    }//CaloCluster loop
+  //   }//CaloCluster loop
     
-  }//If trigger arrays filled
+  // }//If trigger arrays filled
   
   PostData(1, fOutputContainer);
   
index d3a8269c8b23a12ea71262af0d9deaa8012c0e1b..8d843b26bca6b18bcc48619d2e0db975cb139332 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-//-------------------------------------------------------------------------
-//                      Implementation of   Class AliESDCaloTrigger
-//   This is a class that summarizes the Trigger Data of EMCal and Phos
-//   for the ESD   
-//   Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch 
-//-------------------------------------------------------------------------
+/*
 
+
+Author: R. GUERNANE LPSC Grenoble CNRS/IN2P3
+*/
 
 #include "AliESDCaloTrigger.h"
+#include "AliLog.h"
+
+#include "TArrayI.h"
+#include "Riostream.h"
+#include <cstdlib>
 
 ClassImp(AliESDCaloTrigger)
 
-AliESDCaloTrigger::AliESDCaloTrigger() : 
-  TNamed(),
-  fTriggerAmplitudes(0x0),
-  fTriggerPosition(0x0)
+//_______________
+AliESDCaloTrigger::AliESDCaloTrigger() : TNamed(),
+fNEntries(0),
+fCurrent(-1),
+fColumn(0x0),
+fRow(0x0),
+fAmplitude(0x0),
+fTime(0x0),
+fNL0Times(0x0),
+fL0Times(new TArrayI()),
+fL1TimeSum(0x0)
 {
+       //
+       for (Int_t i = 0; i < 48; i++) for (Int_t j = 0; j < 64; j++) fTriggerBits[i][j] = 0;
 }
 
-AliESDCaloTrigger::AliESDCaloTrigger(const AliESDCaloTrigger &ctrig) : 
-  TNamed(ctrig),
-  fTriggerAmplitudes(ctrig.fTriggerAmplitudes),
-  fTriggerPosition(ctrig.fTriggerPosition)
+//_______________
+AliESDCaloTrigger::AliESDCaloTrigger(const AliESDCaloTrigger& src) : TNamed(src),
+fNEntries(0),
+fCurrent(-1),
+fColumn(0x0),
+fRow(0x0),
+fAmplitude(0x0),
+fTime(0x0),
+fNL0Times(0x0),
+fL0Times(new TArrayI()),
+fL1TimeSum(0x0)
 {
+       //
+       src.Copy(*this);
 }
 
+//_______________
 AliESDCaloTrigger::~AliESDCaloTrigger()
 {
-  delete fTriggerAmplitudes; fTriggerAmplitudes = 0;
-  delete fTriggerPosition; fTriggerPosition = 0;
+       //
+       if (fNEntries) DeAllocate();
+       
+       delete fL0Times; fL0Times = 0x0;
 }
 
-AliESDCaloTrigger& AliESDCaloTrigger::operator=(const AliESDCaloTrigger& ctrig)
+//_______________
+void AliESDCaloTrigger::DeAllocate()
 {
-  // assigment operator
-  if(this!=&ctrig) {
-    TNamed::operator=(ctrig);
-    if(ctrig.fTriggerAmplitudes){
-      // asign or copy construct
-      if(fTriggerAmplitudes)*fTriggerAmplitudes = *ctrig.fTriggerAmplitudes;
-      else fTriggerAmplitudes = new TArrayF(*ctrig.fTriggerAmplitudes);
-    }
-    else{
-      delete fTriggerAmplitudes;
-      fTriggerAmplitudes = 0;
-    }
+       //
+       delete [] fColumn;    fColumn    = 0x0;
+       delete [] fRow;       fRow       = 0x0;     
+       delete [] fAmplitude; fAmplitude = 0x0;
+       delete [] fTime;      fTime      = 0x0;   
+       delete [] fNL0Times;  fNL0Times  = 0x0;
+       delete [] fL1TimeSum; fL1TimeSum = 0x0;
+//     delete [] fL0Times;   fL0Times   = 0x0;
+
+       fNEntries =  0;
+       fCurrent  = -1;
+       
+       for (Int_t i = 0; i < 48; i++) for (Int_t j = 0; j < 64; j++) fTriggerBits[i][j] = 0;
 
-    if(ctrig.fTriggerPosition){
-      // asign or copy construct
-      if(fTriggerPosition)*fTriggerPosition = *ctrig.fTriggerPosition;
-      else fTriggerPosition = new TArrayF(*ctrig.fTriggerPosition);
-    }
-    else{
-      delete fTriggerPosition;
-      fTriggerPosition = 0;
-    }
-  } 
-  return *this;
+       fL0Times->Reset();
 }
 
-void AliESDCaloTrigger::Copy(TObject &obj) const {
-  
-  // this overwrites the virtual TOBject::Copy()
-  // to allow run time copying without casting
-  // in AliESDEvent
+//_______________
+AliESDCaloTrigger& AliESDCaloTrigger::operator=(const AliESDCaloTrigger& src)
+{
+       //
+       if (this != &src) src.Copy(*this);
+       
+       return *this;
+}
 
-  if(this==&obj)return;
-  AliESDCaloTrigger *robj = dynamic_cast<AliESDCaloTrigger*>(&obj);
-  if(!robj)return; // not an AliESDCaloTrigger
-  *robj = *this;
+//_______________
+void AliESDCaloTrigger::Copy(TObject &obj) const 
+{      
+       //
+       TNamed::Copy(obj);
+       
+       AliESDCaloTrigger& dest = static_cast<AliESDCaloTrigger&>(obj);
 
+       if (dest.fNEntries) dest.DeAllocate();
+       
+       dest.Allocate(fNEntries);
+       
+       for (Int_t i = 0; i < fNEntries; i++)
+       {
+               Int_t times[10];
+               for (Int_t j = 0; j < 10; j++) times[j] = fL0Times->At(10 * i + j);
+         
+               dest.Add(fColumn[i], fRow[i], fAmplitude[i], fTime[i], times, fNL0Times[i], fL1TimeSum[i]);
+       }
+       
+       for (Int_t i = 0; i < 48; i++) for (Int_t j = 0; j < 64; j++) dest.fTriggerBits[i][j] = fTriggerBits[i][j];
 }
 
+//_______________
+void AliESDCaloTrigger::Allocate(Int_t size)
+{
+       //
+       if (!size) return;
+       
+       fNEntries = size;
+       
+       fColumn      = new   Int_t[fNEntries];
+       fRow         = new   Int_t[fNEntries];
+       fAmplitude   = new Float_t[fNEntries];
+       fTime        = new Float_t[fNEntries];
+       fNL0Times    = new   Int_t[fNEntries];
+//     fL0Times     = new   Int_t[fNEntries * 10];
+       fL1TimeSum   = new   Int_t[fNEntries];
+
+       for (Int_t i = 0; i < fNEntries; i++) 
+       {
+         fColumn[i]    = 0;
+         fRow[i]       = 0;
+         fAmplitude[i] = 0;
+         fTime[i]      = 0;
+         fNL0Times[i]  = 0;
+         fL1TimeSum[i] = 0;
+       }
+       
+       fL0Times->Set(fNEntries * 10);
+}
 
-void AliESDCaloTrigger::Reset()
+//_______________
+Bool_t AliESDCaloTrigger::Add(Int_t col, Int_t row, Float_t amp, Float_t time, Int_t trgtimes[], Int_t ntrgtimes, Int_t trgts)
 {
-  // simple reset
-  if( fTriggerAmplitudes){  
-    fTriggerAmplitudes->Reset();
-  }
-  if( fTriggerPosition){
-    fTriggerPosition->Reset();
-  }
+       //
+       fCurrent++;
+       
+          fColumn[fCurrent] = col;
+             fRow[fCurrent] = row;
+       fAmplitude[fCurrent] = amp;
+            fTime[fCurrent] = time;
+        fNL0Times[fCurrent] = ntrgtimes;
+       fL1TimeSum[fCurrent] = trgts;   
+
+       if (ntrgtimes > 9) 
+       {
+               AliError("Should not have more than 10 L0 times");
+               return kFALSE;
+       }
+       
+       for (Int_t i = 0; i < fNL0Times[fCurrent]; i++) fL0Times->AddAt(trgtimes[i], 10 * fCurrent + i);
+
+       return kTRUE;
 }
 
+//_______________
+void AliESDCaloTrigger::SetTriggerBits(Int_t col, Int_t row, Int_t i, Int_t j)
+{
+       //
+       if (col < 0 || col > 47 || row < 0 || row > 63) 
+       {
+               AliError("Bad position!");
+               return;
+       }
+
+       fTriggerBits[col][row] = (fTriggerBits[col][row] | (1 << (i + 3 * j))); // L0 L1g L1j
+}
+
+//_______________
+Bool_t AliESDCaloTrigger::Next()
+{
+       //
+       if (fCurrent >= fNEntries - 1 || !fNEntries) return kFALSE;
+       
+       fCurrent++;
+       
+       return kTRUE;
+}
+
+//_______________
+void AliESDCaloTrigger::GetPosition(Int_t& col, Int_t& row) const
+{
+       //
+       if (fCurrent == -1) return;
+       
+       col = fColumn[fCurrent];
+       row =    fRow[fCurrent];
+}
+
+//_______________
+void AliESDCaloTrigger::GetAmplitude(Float_t& amp) const
+{
+       //
+       if (fCurrent == -1) return;
+
+       amp = fAmplitude[fCurrent];
+}
+
+//_______________
+void AliESDCaloTrigger::GetTime(Float_t& time) const
+{
+       //
+       if (fCurrent == -1) return;
+
+       time = fTime[fCurrent];
+}
+
+//_______________
+void AliESDCaloTrigger::GetL1TimeSum(Int_t& amp) const
+{
+       //      
+       if (fCurrent == -1) return;
+
+       amp = fL1TimeSum[fCurrent];
+}
+
+//_______________
+void AliESDCaloTrigger::GetNL0Times(Int_t& ntimes) const
+{
+       //
+       if (fCurrent == -1) return;
+
+       ntimes = fNL0Times[fCurrent];
+}
+
+//_______________
+void AliESDCaloTrigger::GetTriggerBits(Char_t& bits) const
+{
+       //
+       if (fCurrent == -1) return;
+
+       bits = fTriggerBits[fColumn[fCurrent]][fRow[fCurrent]];
+}
+
+//_______________
+void AliESDCaloTrigger::GetL0Times(Int_t times[]) const
+{
+       //
+       if (fCurrent == -1) return;
+
+       for (Int_t i = 0; i < fNL0Times[fCurrent]; i++) times[i] = fL0Times->At(10 * fCurrent + i);
+}
+
+//_______________
+void AliESDCaloTrigger::Print(const Option_t* /*opt*/) const
+{
+       //
+       if (fCurrent == -1) return;
 
+       printf("============\n");
+       printf("--L0:\n");
+       printf("\tPOSITION (X: %2d Y: %2d) / FITTED F-ALTRO (AMP: %4f TIME: %3f)\n", 
+                  fColumn[fCurrent], fRow[fCurrent], fAmplitude[fCurrent], fTime[fCurrent]);
+       printf("\t%d L0 TIMES (", fNL0Times[fCurrent]); 
+       for (Int_t i = 0; i < fNL0Times[fCurrent]; i++) printf("%2d ",fL0Times->At(10 * fCurrent + i));
+       printf(")\n");
+       printf("--L1:\n");
+       printf("\tTIME SUM: %4d\n", fL1TimeSum[fCurrent]);
+       printf("\tTHRESHOLDS (GAMMA: %4d, JET: %4d)\n", fL1Threshold[0], fL1Threshold[1]);
+       printf("--TRIGGER BITS: 0x%x\n", fTriggerBits[fColumn[fCurrent]][fRow[fCurrent]]);
+}      
index d5fc630c34da4b5d4cf67ecf6e90d6d4458896c0..8516d3de6874adb68eb9d045f691f922baf4e27e 100644 (file)
@@ -1,59 +1,78 @@
-// -*- mode: C++ -*- 
 #ifndef ALIESDCALOTRIGGER_H
 #define ALIESDCALOTRIGGER_H
 
-
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
-
-//-------------------------------------------------------------------------
-//                          Class AliESDCaloTrigger
-//   This is a class that summarizes the Trigger Data of EMCal and Phos
-//   for the ESD   
-//   Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch 
-//-------------------------------------------------------------------------
+/*
 
 
+Author: R. GUERNANE LPSC Grenoble CNRS/IN2P3
+*/
 
 #include <TNamed.h>
-#include <TArrayF.h>
-
-
 
+class TArrayI;
 
-class AliESDCaloTrigger : public TNamed {
+class AliESDCaloTrigger : public TNamed 
+{
 public:
-  AliESDCaloTrigger();
-  AliESDCaloTrigger(const  AliESDCaloTrigger& ctrig);
-  AliESDCaloTrigger& operator=(const  AliESDCaloTrigger& ctrig);
-  virtual ~AliESDCaloTrigger();
-  virtual void Copy(TObject &obj) const;
-
-  void AddTriggerPosition(const TArrayF & array)  { 
-    if(fTriggerPosition) *fTriggerPosition = array;
-    else fTriggerPosition =  new TArrayF(array);
-  }
-
-  void AddTriggerAmplitudes(const TArrayF & array) { 
-    if(fTriggerAmplitudes) *fTriggerAmplitudes = array;
-    else fTriggerAmplitudes  = new TArrayF(array); 
-  }
-  
-  void Reset(); 
-
-  TArrayF* GetTriggerPosition()    {return fTriggerPosition;}
-  TArrayF* GetTriggerAmplitudes()  {return fTriggerAmplitudes;}
-  
-
+                AliESDCaloTrigger();
+                AliESDCaloTrigger(const AliESDCaloTrigger& ctrig);
+       virtual ~AliESDCaloTrigger();
+       
+       AliESDCaloTrigger& operator=(const AliESDCaloTrigger& ctrig);
+       
+       Bool_t  IsEmpty() {return (fNEntries == 0);}
+
+       virtual void Reset() {fCurrent = -1;}
+
+       void    Allocate(Int_t size);
+       void    DeAllocate(        ); 
+       
+       Bool_t  Add(Int_t col, Int_t row, Float_t amp, Float_t time, Int_t trgtimes[], Int_t ntrgtimes, Int_t trgts);
+       
+       void    SetL1Threshold(Int_t i, Int_t thr) {fL1Threshold[i] = thr;}
+       void    SetTriggerBits(Int_t col, Int_t row, Int_t i, Int_t j);
+
+       void    GetPosition(     Int_t& col, Int_t& row           ) const;
+       
+       void    GetAmplitude(  Float_t& amp                       ) const;
+       void    GetTime(       Float_t& time                      ) const;
+       
+       void    GetTriggerBits( Char_t& bits                      ) const;
+       void    GetNL0Times(     Int_t& ntimes                    ) const;
+       void    GetL0Times(      Int_t  times[]                   ) const;
+       Int_t   GetEntries(                                       ) const {return fNEntries;}
+
+       void    GetL1TimeSum(    Int_t& timesum                   ) const;
+
+       Int_t   GetL1Threshold(  Int_t  i                         ) const {return fL1Threshold[i];}
+
+       virtual Bool_t Next();
+
+       virtual void Copy(TObject& obj) const;
+       
+       virtual void Print(const Option_t* opt) const;
+       
 private:
 
-  TArrayF *fTriggerAmplitudes; // Amplitude of PHOS or EMCal Trigger
-  TArrayF *fTriggerPosition;   // Position of PHOS or EMCal Trigger
-
-  ClassDef(AliESDCaloTrigger,1)
+       Int_t    fNEntries;
+    Int_t    fCurrent;
+
+       Int_t*   fColumn;         // [fNEntries]
+       Int_t*   fRow;            // [fNEntries]
+       Float_t* fAmplitude;      // [fNEntries]
+       Float_t* fTime;           // [fNEntries]
+       Int_t*   fNL0Times;       // [fNEntries]
+       TArrayI* fL0Times;        //
+       Int_t*   fL1TimeSum;      // [fNEntries]
+
+       Char_t   fTriggerBits[48][64]; //
+       Int_t    fL1Threshold[2];      // L1 thresholds from raw data
+       
+       ClassDef(AliESDCaloTrigger, 2)
 };
-
-
 #endif
 
index a19530f13875e36ddb3c15ae5181aa2cf2b0c00c..f58698a72585f219484b4d562e87523c0bd8d527 100644 (file)
@@ -437,8 +437,8 @@ void AliESDEvent::ResetStdContent()
     new (fTOFHeader) AliTOFHeader();
     //fTOFHeader->SetName(fgkESDListName[kTOFHeader]);
   }
-  if(fPHOSTrigger)fPHOSTrigger->Reset(); 
-  if(fEMCALTrigger)fEMCALTrigger->Reset(); 
+  if(fPHOSTrigger)fPHOSTrigger->DeAllocate(); 
+  if(fEMCALTrigger)fEMCALTrigger->DeAllocate(); 
   if(fSPDPileupVertices)fSPDPileupVertices->Delete();
   if(fTrkPileupVertices)fTrkPileupVertices->Delete();
   if(fTracks)fTracks->Delete();
index 16cbc22fdecbe974a8f1eabd977746f06ebf3959..8cb80c58cd1eed1cd403a6ba8287acf8221ec214 100644 (file)
@@ -353,6 +353,13 @@ public:
   AliESDCaloCells *GetEMCALCells() const {return fEMCALCells; }  
   AliESDCaloCells *GetPHOSCells() const {return fPHOSCells; }  
 
+  AliESDCaloTrigger* GetCaloTrigger(TString calo) const 
+  {
+         if (calo.Contains("EMCAL")) return fEMCALTrigger;
+         else
+                 return fPHOSTrigger;
+  }
+       
   AliRawDataErrorLog *GetErrorLog(Int_t i) const {
     return (AliRawDataErrorLog *)(fErrorLogs?fErrorLogs->UncheckedAt(i):0x0);
   }
@@ -360,12 +367,6 @@ public:
 
   Int_t GetNumberOfErrorLogs()   const {return fErrorLogs?fErrorLogs->GetEntriesFast():0;}
 
-    
-  void AddPHOSTriggerPosition(TArrayF array)   { if(fPHOSTrigger) fPHOSTrigger->AddTriggerPosition(array); }
-  void AddPHOSTriggerAmplitudes(TArrayF array) { if(fPHOSTrigger) fPHOSTrigger->AddTriggerAmplitudes(array);}
-  void AddEMCALTriggerPosition(TArrayF array)  { if(fEMCALTrigger) fEMCALTrigger->AddTriggerPosition(array); }
-  void AddEMCALTriggerAmplitudes(TArrayF array){ if(fEMCALTrigger) fEMCALTrigger->AddTriggerAmplitudes(array); }
-
   Int_t GetNumberOfPileupVerticesSPD() const {
     return (fSPDPileupVertices?fSPDPileupVertices->GetEntriesFast():0);
   }
@@ -392,11 +393,6 @@ public:
   void SetUseOwnList(Bool_t b){fUseOwnList = b;}
   Bool_t GetUseOwnList() const {return fUseOwnList;}
 
-  TArrayF *GetEMCALTriggerPosition() const {return  fEMCALTrigger?fEMCALTrigger->GetTriggerPosition():0x0;}
-  TArrayF *GetEMCALTriggerAmplitudes() const {return  fEMCALTrigger?fEMCALTrigger->GetTriggerAmplitudes():0x0;}
-  TArrayF *GetPHOSTriggerPosition() const {return  fPHOSTrigger?fPHOSTrigger->GetTriggerPosition():0x0;}
-  TArrayF *GetPHOSTriggerAmplitudes() const {return  fPHOSTrigger?fPHOSTrigger->GetTriggerAmplitudes():0x0;}
-
   void ResetV0s() { if(fV0s) fV0s->Clear(); }
   void ResetCascades() { if(fCascades) fCascades->Clear(); }
   void Reset();