]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESD.h
New class AliESDEvent, backward compatibility with the old AliESD (Christian)
[u/mrichter/AliRoot.git] / STEER / AliESD.h
index 85fa211ab850b52205a1a0602328194bd40ebcfd..f94b11eb5d5210c3deaf30cbfa60e9bedb99b639 100644 (file)
 
 #include <TClonesArray.h>
 #include <TObject.h>
-#include <TTree.h>
 #include <TArrayF.h>
 
-class TList;
-
-
 #include "AliESDMuonTrack.h"
 #include "AliESDPmdTrack.h"
 #include "AliESDTrdTrack.h"
@@ -29,329 +25,288 @@ class TList;
 #include "AliESDcascade.h"
 #include "AliESDkink.h"
 #include "AliESDtrack.h"
+#include "AliESDHLTtrack.h"
 #include "AliESDCaloCluster.h"
 #include "AliESDv0.h"
 #include "AliESDFMD.h"
 #include "AliESDVZERO.h"
 #include "AliMultiplicity.h"
 #include "AliRawDataErrorLog.h"
-#include "AliESDRun.h"
-#include "AliESDHeader.h"
-#include "AliESDZDC.h"
-#include "AliESDTZERO.h"
-#include "AliESDCaloTrigger.h"
 
 class AliESDfriend;
-class AliESDVZERO;
-class AliESDHLTtrack;
-class AliESDFMD;
 
 class AliESD : public TObject {
 public:
-
-
-  enum ESDListIndex_t   {kESDRun,
-                      kHeader,
-                      kESDZDC,
-                      kESDFMD,
-                      kESDVZERO,
-                      kESDTZERO,
-                      kSPDVertex,
-                      kPrimaryVertex,
-                      kSPDMult,
-                      kPHOSTrigger,
-                      kEMCALTrigger,
-                      kTracks,
-                      kMuonTracks,
-                      kPmdTracks,
-                      kTrdTracks,
-                      kV0s,
-                      kCascades,
-                      kKinks,
-                      kCaloClusters,
-                      kErrorLogs,
-                      kESDListN
-  };
-
   AliESD();
   virtual ~AliESD(); 
 
-
-  // RUN
-  // move this to the UserData!!!
-  const AliESDRun*    GetESDRun() const {return fESDRun;}
-
-  // Delegated methods for fESDRun
-  void    SetRunNumber(Int_t n) {fESDRun->SetRunNumber(n);}
-  Int_t   GetRunNumber() const {return fESDRun->GetRunNumber();}
-  void    SetPeriodNumber(Int_t n){fESDRun->SetPeriodNumber(n);}
-  Int_t   GetPeriodNumber() const {return fESDRun->GetPeriodNumber();}
-  void    SetMagneticField(Float_t mf){fESDRun->SetMagneticField(mf);}
-  Float_t GetMagneticField() const {return fESDRun->GetMagneticField();}
-  void SetDiamond(const AliESDVertex *vertex) { fESDRun->SetDiamond(vertex);}
-  Float_t GetDiamondX() const {return fESDRun->GetDiamondX();}
-  Float_t GetDiamondY() const {return fESDRun->GetDiamondY();}
-  Float_t GetSigma2DiamondX() const {return  fESDRun->GetSigma2DiamondX();}
-  Float_t GetSigma2DiamondY() const {return  fESDRun->GetSigma2DiamondY();}
-  void GetDiamondCovXY(Float_t cov[3]) const {fESDRun->GetDiamondCovXY(cov);}   
-  
-
-  // HEADER
-  const AliESDHeader* GetHeader() const {return fHeader;}
-
-  // Delegated methods for fHeader
-  void      SetTriggerMask(ULong64_t n) {fHeader->SetTriggerMask(n);}
-  void      SetOrbitNumber(UInt_t n) {fHeader->SetOrbitNumber(n);}
-  void      SetTimeStamp(UInt_t timeStamp){fHeader->SetTimeStamp(timeStamp);}
-  void      SetEventType(UInt_t eventType){fHeader->SetEventType(eventType);}
-  void      SetEventNumberInFile(Int_t n) {fHeader->SetEventNumberInFile(n);}
-  //  void      SetRunNumber(Int_t n) {fHeader->SetRunNumber(n);}
-  void      SetBunchCrossNumber(UShort_t n) {fHeader->SetBunchCrossNumber(n);}
-  void      SetTriggerCluster(UChar_t n) {fHeader->SetTriggerCluster(n);}
-  ULong64_t GetTriggerMask() const {return fHeader->GetTriggerMask();}
-  UInt_t    GetOrbitNumber() const {return fHeader->GetOrbitNumber();}
-  UInt_t    GetTimeStamp()  const { return fHeader->GetTimeStamp();}
-  UInt_t    GetEventType()  const { return fHeader->GetEventType();}
-  Int_t     GetEventNumberInFile() const {return fHeader->GetEventNumberInFile();}
-  UShort_t  GetBunchCrossNumber() const {return fHeader->GetBunchCrossNumber();}
-  UChar_t   GetTriggerCluster() const {return fHeader->GetTriggerCluster();}
-
-  // ZDC CKB: put this in the header?
-  const AliESDZDC*    GetESDZDC() const {return fESDZDC;}
-
-  // Delegated methods for fESDZDC
-  Float_t GetZDCN1Energy() const {return fESDZDC->GetZDCN1Energy();}
-  Float_t GetZDCP1Energy() const {return fESDZDC->GetZDCP1Energy();}
-  Float_t GetZDCN2Energy() const {return fESDZDC->GetZDCN2Energy();}
-  Float_t GetZDCP2Energy() const {return fESDZDC->GetZDCP2Energy();}
-  Float_t GetZDCEMEnergy() const {return fESDZDC->GetZDCEMEnergy();}
-  Int_t   GetZDCParticipants() const {return fESDZDC->GetZDCParticipants();}
-  void    SetZDC(Float_t n1Energy, Float_t p1Energy, Float_t emEnergy,
-                 Float_t n2Energy, Float_t p2Energy, Int_t participants)
-  {fESDZDC->SetZDC(n1Energy, p1Energy, emEnergy, n2Energy, p2Energy, participants);}
-
-
-  // FMD
-  void SetFMDData(AliESDFMD * obj);
-  AliESDFMD *GetFMDData(){ return fESDFMD; }
-
-
-  // TZERO CKB: put this in the header?
-  const AliESDTZERO*    GetESDTZERO() const {return fESDTZERO;}
-  // delegetated methods for fESDTZERO
-
-  Float_t GetT0zVertex() const {return fESDTZERO->GetT0zVertex();}
-  void SetT0zVertex(Float_t z) {fESDTZERO->SetT0zVertex(z);}
-  Float_t GetT0() const {return fESDTZERO->GetT0();}
-  void SetT0(Float_t timeStart) {fESDTZERO->SetT0(timeStart);}
-  const Float_t * GetT0time() const {return fESDTZERO->GetT0time();}
-  void SetT0time(Float_t time[24]) {fESDTZERO->SetT0time(time);}
-  const Float_t * GetT0amplitude() const {return fESDTZERO->GetT0amplitude();}
-  void SetT0amplitude(Float_t amp[24]){fESDTZERO->SetT0amplitude(amp);}
-
-  // VZERO 
-  AliESDVZERO *GetVZEROData() const { return fESDVZERO; }
-  void SetVZEROData(AliESDVZERO * obj);
-
-
   void SetESDfriend(const AliESDfriend *f);
   void GetESDfriend(AliESDfriend *f) const;
 
-
-
-  void SetVertex(const AliESDVertex *vertex) {
-    *fSPDVertex  = *vertex;
-    fSPDVertex->SetName("fSPDVertex");// error prone use class wide names?
-    //CKB or new with placement
+  void SetEventNumberInFile(Int_t n) {fEventNumberInFile=n;}
+  void SetBunchCrossNumber(UShort_t n) {fBunchCrossNumber=n;}
+  void SetOrbitNumber(UInt_t n) {fOrbitNumber=n;}
+  void SetPeriodNumber(UInt_t n) {fPeriodNumber=n;}
+  void SetRunNumber(Int_t n) {fRunNumber=n;}
+  void SetTimeStamp(UInt_t timeStamp){fTimeStamp = timeStamp;}
+  void SetEventType(UInt_t eventType){fEventType = eventType;}
+  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;}
+  
+  AliESDtrack *GetTrack(Int_t i) const {
+    return (AliESDtrack *)fTracks.UncheckedAt(i);
   }
-  const AliESDVertex *GetVertex() const {return fSPDVertex;}
-
-  void SetPrimaryVertex(const AliESDVertex *vertex) {
-    *fPrimaryVertex = *vertex;
-    fPrimaryVertex->SetName("fPrimaryVertex");// error prone use class wide names?
+  AliESDHLTtrack *GetHLTConfMapTrack(Int_t i) const {
+    return (AliESDHLTtrack *)fHLTConfMapTracks.UncheckedAt(i);
   }
-  const AliESDVertex *GetPrimaryVertex() const {return fPrimaryVertex;}
-
-  void SetMultiplicity(const AliMultiplicity *mul) {
-    *fSPDMult = *mul;
-    // CKB 
-    //     new (&fSPDMult) AliMultiplicity(*mul);
+  AliESDHLTtrack *GetHLTHoughTrack(Int_t i) const {
+    return (AliESDHLTtrack *)fHLTHoughTracks.UncheckedAt(i);
   }
-  const AliMultiplicity *GetMultiplicity() const {return fSPDMult;}
-  
-  AliESDtrack *GetTrack(Int_t i) const {
-    return (AliESDtrack *)fTracks->UncheckedAt(i);
+  AliESDMuonTrack *GetMuonTrack(Int_t i) const {
+    return (AliESDMuonTrack *)fMuonTracks.UncheckedAt(i);
   }
-  Int_t  AddTrack(const AliESDtrack *t);
-
-  
-  AliESDHLTtrack *GetHLTConfMapTrack(Int_t /*i*/) const {
-    //    return (AliESDHLTtrack *)fHLTConfMapTracks->UncheckedAt(i);
-    return 0;
+  AliESDPmdTrack *GetPmdTrack(Int_t i) const {
+    return (AliESDPmdTrack *)fPmdTracks.UncheckedAt(i);
   }
-  void AddHLTConfMapTrack(const AliESDHLTtrack */*t*/) {
-    printf("ESD:: AddHLTConfMapTrack do nothing \n");
-    //    TClonesArray &fhlt = *fHLTConfMapTracks;
-    //  new(fhlt[fHLTConfMapTracks->GetEntriesFast()]) AliESDHLTtrack(*t);
+  AliESDTrdTrack *GetTrdTrack(Int_t i) const {
+    return (AliESDTrdTrack *)fTrdTracks.UncheckedAt(i);
   }
-  
 
-  AliESDHLTtrack *GetHLTHoughTrack(Int_t /*i*/) const {
-    //    return (AliESDHLTtrack *)fHLTHoughTracks->UncheckedAt(i);
-    return 0;
+  Int_t  AddTrack(const AliESDtrack *t) {
+    AliESDtrack * track = new(fTracks[fTracks.GetEntriesFast()]) AliESDtrack(*t);
+    track->SetID(fTracks.GetEntriesFast()-1);
+    return  track->GetID();
+    
   }
-  void AddHLTHoughTrack(const AliESDHLTtrack */*t*/) {
-    printf("ESD:: AddHLTHoughTrack do nothing \n");
-    //    TClonesArray &fhlt = *fHLTHoughTracks;
-    //     new(fhlt[fHLTHoughTracks->GetEntriesFast()]) AliESDHLTtrack(*t);
+  void AddHLTConfMapTrack(const AliESDHLTtrack *t) {
+    new(fHLTConfMapTracks[fHLTConfMapTracks.GetEntriesFast()]) AliESDHLTtrack(*t);
   }
-  
-  AliESDMuonTrack *GetMuonTrack(Int_t i) const {
-    return (AliESDMuonTrack *)fMuonTracks->UncheckedAt(i);
+  void AddHLTHoughTrack(const AliESDHLTtrack *t) {
+    new(fHLTHoughTracks[fHLTHoughTracks.GetEntriesFast()]) AliESDHLTtrack(*t);
   }
   void AddMuonTrack(const AliESDMuonTrack *t) {
-    TClonesArray &fmu = *fMuonTracks;
-    new(fmu[fMuonTracks->GetEntriesFast()]) AliESDMuonTrack(*t);
-  }
-
-  AliESDPmdTrack *GetPmdTrack(Int_t i) const {
-    return (AliESDPmdTrack *)fPmdTracks->UncheckedAt(i);
+    new(fMuonTracks[fMuonTracks.GetEntriesFast()]) AliESDMuonTrack(*t);
   }
   void AddPmdTrack(const AliESDPmdTrack *t) {
-    TClonesArray &fpmd = *fPmdTracks;
-    new(fpmd[fPmdTracks->GetEntriesFast()]) AliESDPmdTrack(*t);
-  }
-
-  AliESDTrdTrack *GetTrdTrack(Int_t i) const {
-    return (AliESDTrdTrack *)fTrdTracks->UncheckedAt(i);
+    new(fPmdTracks[fPmdTracks.GetEntriesFast()]) AliESDPmdTrack(*t);
   }
   void AddTrdTrack(const AliESDTrdTrack *t) {
-    TClonesArray &ftrd = *fTrdTracks;
-    new(ftrd[fTrdTracks->GetEntriesFast()]) AliESDTrdTrack(*t);
+    new(fTrdTracks[fTrdTracks.GetEntriesFast()]) AliESDTrdTrack(*t);
   }
 
   AliESDv0 *GetV0(Int_t i) const {
-    return (AliESDv0*)fV0s->UncheckedAt(i);
+    return (AliESDv0 *)fV0s.UncheckedAt(i);
   }
   Int_t AddV0(const AliESDv0 *v);
 
   AliESDcascade *GetCascade(Int_t i) const {
-    return (AliESDcascade *)fCascades->UncheckedAt(i);
+    return (AliESDcascade *)fCascades.UncheckedAt(i);
   }
   void AddCascade(const AliESDcascade *c) {
-    TClonesArray &fc = *fCascades;
-    new(fc[fCascades->GetEntriesFast()]) AliESDcascade(*c);
+    new(fCascades[fCascades.GetEntriesFast()]) AliESDcascade(*c);
   }
 
   AliESDkink *GetKink(Int_t i) const {
-    return (AliESDkink *)fKinks->UncheckedAt(i);
+    return (AliESDkink *)fKinks.UncheckedAt(i);
+  }
+  Int_t AddKink(const AliESDkink *c) {
+    AliESDkink * kink = new(fKinks[fKinks.GetEntriesFast()]) AliESDkink(*c);
+    kink->SetID(fKinks.GetEntriesFast());
+    return fKinks.GetEntriesFast()-1;
   }
-  Int_t AddKink(const AliESDkink *c);
 
   AliESDCaloCluster *GetCaloCluster(Int_t i) const {
-    return (AliESDCaloCluster *)fCaloClusters->UncheckedAt(i);
+    return (AliESDCaloCluster *)fCaloClusters.UncheckedAt(i);
+  }
+  Int_t AddCaloCluster(const AliESDCaloCluster *c) {
+    AliESDCaloCluster *clus = new(fCaloClusters[fCaloClusters.GetEntriesFast()]) AliESDCaloCluster(*c);
+    clus->SetID(fCaloClusters.GetEntriesFast()-1);
+    return fCaloClusters.GetEntriesFast()-1;
   }
-  Int_t AddCaloCluster(const AliESDCaloCluster *c);
+    
+  void AddPHOSTriggerPosition(TArrayF array)   { fPHOSTriggerPosition    = new TArrayF(array) ; }
+  void AddPHOSTriggerAmplitudes(TArrayF array) { fPHOSTriggerAmplitudes  = new TArrayF(array) ; }
+  void AddEMCALTriggerPosition(TArrayF array)  { fEMCALTriggerPosition   = new TArrayF(array) ; }
+  void AddEMCALTriggerAmplitudes(TArrayF array){ fEMCALTriggerAmplitudes = new TArrayF(array) ; }
 
-  AliRawDataErrorLog *GetErrorLog(Int_t i) const {
-    return (AliRawDataErrorLog *)fErrorLogs->UncheckedAt(i);
+  void SetVertex(const AliESDVertex *vertex) {
+     new (&fSPDVertex) AliESDVertex(*vertex);
   }
-  void  AddRawDataErrorLog(const AliRawDataErrorLog *log) {
-    // CKB inline this??
-    TClonesArray &errlogs = *fErrorLogs;
-    new(errlogs[errlogs.GetEntriesFast()])  AliRawDataErrorLog(*log);
+  const AliESDVertex *GetVertex() const {return &fSPDVertex;}
+
+  void SetMultiplicity(const AliMultiplicity *mul) {
+     new (&fSPDMult) AliMultiplicity(*mul);
   }
-  Int_t GetNumberOfErrorLogs()   const {return fErrorLogs->GetEntriesFast();}
+  const AliMultiplicity *GetMultiplicity() const {return &fSPDMult;}
 
-    
-  void AddPHOSTriggerPosition(TArrayF array)   { fPHOSTrigger->AddTriggerPosition(array); }
-  void AddPHOSTriggerAmplitudes(TArrayF array) { fPHOSTrigger->AddTriggerAmplitudes(array);}
-  void AddEMCALTriggerPosition(TArrayF array)  { fEMCALTrigger->AddTriggerPosition(array); }
-  void AddEMCALTriggerAmplitudes(TArrayF array){ fEMCALTrigger->AddTriggerAmplitudes(array); }
-
-
-  Int_t GetNumberOfTracks()     const {return fTracks->GetEntriesFast();}
-  Int_t GetNumberOfHLTConfMapTracks()     const {return 0;} 
-  // fHLTConfMapTracks->GetEntriesFast();}
-  Int_t GetNumberOfHLTHoughTracks()     const {return  0;  }
-  //  fHLTHoughTracks->GetEntriesFast();  }
-
-  Int_t GetNumberOfMuonTracks() const {return fMuonTracks->GetEntriesFast();}
-  Int_t GetNumberOfPmdTracks() const {return fPmdTracks->GetEntriesFast();}
-  Int_t GetNumberOfTrdTracks() const {return fTrdTracks->GetEntriesFast();}
-  Int_t GetNumberOfV0s()      const {return fV0s->GetEntriesFast();}
-  Int_t GetNumberOfCascades() const {return fCascades->GetEntriesFast();}
-  Int_t GetNumberOfKinks() const {return fKinks->GetEntriesFast();}
-  Int_t GetNumberOfCaloClusters() const {return fCaloClusters->GetEntriesFast();}
+  void SetPrimaryVertex(const AliESDVertex *vertex) {
+     new (&fPrimaryVertex) AliESDVertex(*vertex);
+  }
+  const AliESDVertex *GetPrimaryVertex() const {return &fPrimaryVertex;}
+
+  void SetDiamond(const AliESDVertex *vertex) {
+    fDiamondXY[0]=vertex->GetXv();
+    fDiamondXY[1]=vertex->GetYv();
+    Double_t cov[6];
+    vertex->GetCovMatrix(cov);
+    fDiamondCovXY[0]=cov[0];
+    fDiamondCovXY[1]=cov[1];
+    fDiamondCovXY[2]=cov[2];
+  }
+  Float_t GetDiamondX() const {return fDiamondXY[0];}
+  Float_t GetDiamondY() const {return fDiamondXY[1];}
+  Float_t GetSigma2DiamondX() const {return fDiamondCovXY[0];}
+  Float_t GetSigma2DiamondY() const {return fDiamondCovXY[2];}
+  void GetDiamondCovXY(Float_t cov[3]) const {
+    for(Int_t i=0;i<3;i++) cov[i]=fDiamondCovXY[i]; return;
+  }
+
+  Int_t  GetEventNumberInFile() const {return fEventNumberInFile;}
+  UShort_t GetBunchCrossNumber() const {return fBunchCrossNumber;}
+  UInt_t GetOrbitNumber() const {return fOrbitNumber;}
+  UInt_t GetPeriodNumber() const {return fPeriodNumber;}
+  Int_t  GetRunNumber() const {return fRunNumber;}
+  UInt_t    GetTimeStamp()  const { return fTimeStamp;}
+  UInt_t    GetEventType()  const { return fEventType;}
+  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();}
+  Int_t GetNumberOfHLTHoughTracks()     const {return fHLTHoughTracks.GetEntriesFast();}
+  Int_t GetNumberOfMuonTracks() const {return fMuonTracks.GetEntriesFast();}
+  Int_t GetNumberOfPmdTracks() const {return fPmdTracks.GetEntriesFast();}
+  Int_t GetNumberOfTrdTracks() const {return fTrdTracks.GetEntriesFast();}
+  Int_t GetNumberOfV0s()      const {return fV0s.GetEntriesFast();}
+  Int_t GetNumberOfCascades() const {return fCascades.GetEntriesFast();}
+  Int_t GetNumberOfKinks() const {return fKinks.GetEntriesFast();}
+  Int_t GetNumberOfCaloClusters() const {return fCaloClusters.GetEntriesFast();}
 
   Int_t GetNumberOfEMCALClusters() const {return fEMCALClusters;}
   void  SetNumberOfEMCALClusters(Int_t clus) {fEMCALClusters = clus;}
   Int_t GetFirstEMCALCluster() const {return fFirstEMCALCluster;}
   void  SetFirstEMCALCluster(Int_t index) {fFirstEMCALCluster = index;}
-  TArrayF *GetEMCALTriggerPosition() const {return  fEMCALTrigger->GetTriggerPosition();}
-  TArrayF *GetEMCALTriggerAmplitudes() const {return  fEMCALTrigger->GetTriggerAmplitudes();}
+  TArrayF *GetEMCALTriggerPosition() const {return  fEMCALTriggerPosition;}
+  TArrayF *GetEMCALTriggerAmplitudes() const {return  fEMCALTriggerAmplitudes;}
 
   Int_t GetNumberOfPHOSClusters() const {return fPHOSClusters;}
   void  SetNumberOfPHOSClusters(Int_t part) { fPHOSClusters = part ; }
   void  SetFirstPHOSCluster(Int_t index) { fFirstPHOSCluster = index ; } 
   Int_t GetFirstPHOSCluster() const  { return fFirstPHOSCluster ; }
-  TArrayF *GetPHOSTriggerPosition() const {return  fPHOSTrigger->GetTriggerPosition();}
-  TArrayF *GetPHOSTriggerAmplitudes() const {return  fPHOSTrigger->GetTriggerAmplitudes();}
+  TArrayF *GetPHOSTriggerPosition() const {return  fPHOSTriggerPosition;}
+  TArrayF *GetPHOSTriggerAmplitudes() const {return  fPHOSTriggerAmplitudes;}
+
+
+  Float_t GetT0zVertex() const {return fT0zVertex;}
+  void SetT0zVertex(Float_t z) {fT0zVertex=z;}
+  Float_t GetT0() const {return fT0timeStart;}
+  void SetT0(Float_t timeStart) {fT0timeStart = timeStart;}
+  const Float_t * GetT0time() const {return fT0time;}
+  void SetT0time(Float_t time[24]) {
+    for (Int_t i=0; i<24; i++) fT0time[i] = time[i];
+  }
+  const Float_t * GetT0amplitude() const {return fT0amplitude;}
+  void SetT0amplitude(Float_t amp[24]) {
+    for (Int_t i=0; i<24; i++) fT0amplitude[i] = amp[i];
+  }
+
+  Float_t GetZDCN1Energy() const {return fZDCN1Energy;}
+  Float_t GetZDCP1Energy() const {return fZDCP1Energy;}
+  Float_t GetZDCN2Energy() const {return fZDCN2Energy;}
+  Float_t GetZDCP2Energy() const {return fZDCP2Energy;}
+  Float_t GetZDCEMEnergy() const {return fZDCEMEnergy;}
+  Int_t   GetZDCParticipants() const {return fZDCParticipants;}
+  void    SetZDC(Float_t n1Energy, Float_t p1Energy, Float_t emEnergy,
+                 Float_t n2Energy, Float_t p2Energy, Int_t participants) 
+   {fZDCN1Energy=n1Energy; fZDCP1Energy=p1Energy; fZDCEMEnergy=emEnergy;
+    fZDCN2Energy=n2Energy; fZDCP2Energy=p2Energy; fZDCParticipants=participants;}
 
-  void ResetV0s() { fV0s->Clear(); }
-  void ResetCascades() { fCascades->Clear(); }
+  void ResetV0s() { fV0s.Clear(); }
+  void ResetCascades() { fCascades.Clear(); }
   void Reset();
 
   void  Print(Option_t *option="") const;
 
-  void AddObject(TObject* obj);
-  void ReadFromTree(TTree *tree);
-  const void WriteToTree(TTree* tree) const {tree->Branch(fESDObjects);}
-  void GetStdContent();
-  void CreateStdContent();
-  void SetStdNames();
-  TList* GetList(){return fESDObjects;}
+  void SetFMDData(AliESDFMD * obj) { fESDFMD = new AliESDFMD(*obj); }
+  AliESDFMD *GetFMDData(){ return fESDFMD; }
+   
+  void SetVZEROData(AliESDVZERO * obj) { fESDVZERO = new AliESDVZERO(*obj); }
+  AliESDVZERO *GetVZEROData(){ return fESDVZERO; }
 
-protected:
-  AliESD(const AliESD&);
+  AliRawDataErrorLog *GetErrorLog(Int_t i) const {
+    return (AliRawDataErrorLog *)fErrorLogs.UncheckedAt(i);
+  }
+  void  AddRawDataErrorLog(const AliRawDataErrorLog *log) {
+    new(fErrorLogs[fErrorLogs.GetEntriesFast()]) AliRawDataErrorLog(*log);
+  }
+  Int_t GetNumberOfErrorLogs()   const {return fErrorLogs.GetEntriesFast();}
+  AliESD(const AliESD&);  
   AliESD &operator=(const AliESD& source);
 
+protected:
+  
+
 
-  TList *fESDObjects;             // List of esd Objects
-
-  AliESDRun       *fESDRun;           //! Run information tmp put in the Userdata
-  AliESDHeader    *fHeader;           //! ESD Event Header
-  AliESDZDC       *fESDZDC;           //! ZDC information
-  AliESDFMD       *fESDFMD;           //! FMD object containing rough multiplicity
-  AliESDVZERO     *fESDVZERO;         //! VZERO object containing rough multiplicity
-  AliESDTZERO     *fESDTZERO;         //! TZEROObject
-  AliESDVertex    *fSPDVertex;        //! Primary vertex estimated by the SPD
-  AliESDVertex    *fPrimaryVertex;    //! Primary vertex estimated using ESD tracks
-  AliMultiplicity *fSPDMult;          //! SPD tracklet multiplicity
-  AliESDCaloTrigger* fPHOSTrigger;     //! PHOS Trigger information
-  AliESDCaloTrigger* fEMCALTrigger;    //! PHOS Trigger information
-
-  TClonesArray *fTracks;           //! ESD tracks 
-  //  TClonesArray *fHLTConfMapTracks; //! HLT ESD tracks from Conformal Mapper method
-  //  TClonesArray *fHLTHoughTracks;   //! HLT ESD tracks from Hough Transform method
-  TClonesArray *fMuonTracks;       //! MUON ESD tracks
-  TClonesArray *fPmdTracks;        //! PMD ESD tracks
-  TClonesArray *fTrdTracks;        //! TRD ESD tracks (triggered)
-  TClonesArray *fV0s;              //! V0 vertices
-  TClonesArray *fCascades;         //! Cascade vertices
-  TClonesArray *fKinks;            //! Kinks
-  TClonesArray *fCaloClusters;     //! Calorimeter clusters for PHOS/EMCAL
-  TClonesArray *fErrorLogs;        //! Raw-data reading error messages
-
-
-  // Remove this stuff CKB
+  // Event Identification
+
+  Int_t        fEventNumberInFile;// running Event count in the file
+  UShort_t     fBunchCrossNumber;// Bunch Crossing Number
+  UInt_t       fOrbitNumber;     // Orbit Number
+  UInt_t       fPeriodNumber;    // Period Number
+  Int_t        fRunNumber;       // Run Number
+  UInt_t       fTimeStamp;       // Time stamp
+  UInt_t       fEventType;       // Type of Event
+  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
+
+  Float_t      fZDCN1Energy;      // reconstructed energy in the neutron ZDC
+  Float_t      fZDCP1Energy;      // reconstructed energy in the proton ZDC
+  Float_t      fZDCN2Energy;      // reconstructed energy in the neutron ZDC
+  Float_t      fZDCP2Energy;      // reconstructed energy in the proton ZDC
+  Float_t      fZDCEMEnergy;     // reconstructed energy in the electromagnetic ZDC
+  Int_t        fZDCParticipants; // number of participants estimated by the ZDC
+
+  Float_t      fT0zVertex;       // vertex z position estimated by the T0
+  AliESDVertex fSPDVertex;       // Primary vertex estimated by the SPD
+  AliESDVertex fPrimaryVertex;   // Primary vertex estimated using ESD tracks
+  Float_t      fDiamondXY[2];    // Interaction diamond (x,y) in RUN
+  Float_t      fDiamondCovXY[3]; // Interaction diamond covariance (x,y) in RUN
+  AliMultiplicity fSPDMult;      // SPD tracklet multiplicity
+
+  Float_t      fT0timeStart;     // interaction time estimated by the T0
+  Float_t      fT0time[24];      // best TOF on each T0 PMT
+  Float_t      fT0amplitude[24]; // number of particles(MIPs) on each T0 PMT
+
+  TClonesArray fTracks;          // ESD tracks
+  TClonesArray fHLTConfMapTracks;// HLT ESD tracks from Conformal Mapper method
+  TClonesArray fHLTHoughTracks;  // HLT ESD tracks from Hough Transform method
+  TClonesArray fMuonTracks;      // MUON ESD tracks
+  TClonesArray fPmdTracks;       // PMD ESD tracks
+  TClonesArray fTrdTracks;       // TRD ESD tracks (triggered)
+  TClonesArray fV0s;             // V0 vertices
+  TClonesArray fCascades;        // Cascade vertices
+  TClonesArray fKinks;           // Kinks
+  TClonesArray fCaloClusters;    // Calorimeter clusters for PHOS/EMCAL
   Int_t        fEMCALClusters;   // Number of EMCAL clusters (subset of caloclusters)
   Int_t        fFirstEMCALCluster; // First EMCAL cluster in the fCaloClusters list 
+  TArrayF   *fEMCALTriggerPosition; ///(x,y,z of 2x2 and x,y,z of nxn) not position of centroid but of patch corner
+  TArrayF   *fEMCALTriggerAmplitudes; //(2x2 max ampl, 2x2 amp out of patch,  nxn max ampl, nxn amp out of patch)
 
   Int_t        fPHOSClusters;     // Number of PHOS clusters (subset of caloclusters)
   Int_t        fFirstPHOSCluster; // First PHOS cluster in the fCaloClusters list 
+  TArrayF   *fPHOSTriggerPosition; //(x,y,z of 2x2 and x,y,z of nxn), not position of centroid but of patch corner
+  TArrayF   *fPHOSTriggerAmplitudes; //(2x2 max ampl, 2x2 amp out of patch,  nxn max ampl, nxn amp out of patch)
+
+  AliESDFMD   *fESDFMD;   // FMD object containing rough multiplicity
+  AliESDVZERO *fESDVZERO; // VZERO object containing rough multiplicity
+
+  TClonesArray fErrorLogs;        // Raw-data reading error messages
 
-  ClassDef(AliESD,23)  //ESD class 
+  ClassDef(AliESD,21)  //ESD class 
 };
 #endif