]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/ESD/AliESDEvent.h
make it compile
[u/mrichter/AliRoot.git] / STEER / ESD / AliESDEvent.h
index d3c756f13868ca5aa742347737c894fcc43ce2e9..dc8e5e742fc6e31c9aba297f54247a50d541e75a 100644 (file)
@@ -5,7 +5,7 @@
  * See cxx source for full Copyright notice                               */
 
 
-/* $Id$ */
+/* $Id: AliESDEvent.h 64008 2013-08-28 13:09:59Z hristov $ */
 
 //-------------------------------------------------------------------------
 //                          Class AliESDEvent
@@ -19,6 +19,7 @@
 #include <TObject.h>
 #include <TTree.h>
 #include <TArrayF.h>
+#include <TObjArray.h>
 
 
 #include "AliVEvent.h"
@@ -29,6 +30,8 @@
 #include "AliESDTZERO.h"
 #include "AliESDZDC.h"
 #include "AliESDACORDE.h"
+#include "AliESDAD.h"
+#include "AliMultiplicity.h"
 
 // AliESDtrack has to be included so that the compiler 
 // knows its inheritance tree (= that it is a AliVParticle).
 #include "AliESDCaloCluster.h"
 #include "AliESDCaloCells.h"
 
-#include "AliTOFHeader.h"
-
 #include "AliESDVZERO.h"
-#ifdef MFT_UPGRADE
-//#include "AliESDMFT.h"
-#endif
+#include "AliESDTrdTrack.h"
+#include "AliESDTOFCluster.h"
+#include "AliESDTOFHit.h"
+#include "AliESDTOFMatch.h"
+#include "AliESDv0.h"
+#include "AliESDkink.h"
+#include "AliESDfriend.h"
 
-class AliESDfriend;
 class AliESDHLTtrack;
 class AliESDVertex;
 class AliESDPmdTrack;
 class AliESDFMD;
-class AliESDkink;
-class AliESDv0;
-class AliMultiplicity;
 class AliRawDataErrorLog;
 class AliESDRun;
 class AliESDTrdTrigger;
-class AliESDTrdTrack;
 class AliESDTrdTracklet;
 class AliESDMuonTrack;
+class AliESDMuonCluster;
+class AliESDMuonPad;
+class AliESDMuonGlobalTrack;    // AU
 class AliESD;
 class AliESDcascade;
 class AliCentrality;
 class AliEventplane;
 class TRefArray;
 class AliESDACORDE;
+class AliESDAD;
 class AliESDHLTDecision;
+class AliESDCosmicTrack;
 
 class TList;
 class TString;
@@ -92,6 +97,9 @@ public:
                       kTrkPileupVertices,
                       kTracks,
                       kMuonTracks,
+                      kMuonClusters,
+                      kMuonPads,
+                      kMuonGlobalTracks,   // AU
                       kPmdTracks,
                       kTrdTrigger,
                       kTrdTracks,
@@ -104,11 +112,13 @@ public:
                       kPHOSCells,
                       kErrorLogs,
                        kESDACORDE,
+                       kESDAD,
                       kTOFHeader,
+                       kCosmicTracks,
+                      kTOFclusters,
+                      kTOFhit,
+                      kTOFmatch,
                       kESDListN
-                  #ifdef MFT_UPGRADE
-       //           , kESDMFT
-                  #endif
   };
 
   AliESDEvent();
@@ -145,14 +155,15 @@ public:
   const TGeoHMatrix* GetEMCALMatrix(Int_t i) const {return fESDRun?fESDRun->GetEMCALMatrix(i):0x0;}
   void     SetCaloTriggerType(const Int_t* type) {if (fESDRun) fESDRun->SetCaloTriggerType(type);}
   Int_t*   GetCaloTriggerType() const {return fESDRun?fESDRun->GetCaloTriggerType():0x0;}
-  const Float_t* GetVZEROEqFactors() const {return fESDRun?fESDRun->GetVZEROEqFactors():0x0;}
-  Float_t        GetVZEROEqMultiplicity(Int_t i) const;
+  virtual const Float_t* GetVZEROEqFactors() const {return fESDRun?fESDRun->GetVZEROEqFactors():0x0;}
+  virtual Float_t        GetVZEROEqMultiplicity(Int_t i) const;
        
   //
   void        SetCurrentL3(Float_t cur)           const  {if(fESDRun) fESDRun->SetCurrentL3(cur);}
   void        SetCurrentDip(Float_t cur)          const  {if(fESDRun) fESDRun->SetCurrentDip(cur);}
   void        SetBeamEnergy(Float_t be)           const  {if(fESDRun) fESDRun->SetBeamEnergy(be);}
   void        SetBeamType(const char* bt)         const  {if(fESDRun) fESDRun->SetBeamType(bt);}
+  void        SetBeamParticle(Int_t az, Int_t ibeam)      {if(fESDRun) fESDRun->SetBeamParticle(az,ibeam);}
   void        SetUniformBMap(Bool_t val=kTRUE)    const  {if(fESDRun) fESDRun->SetBit(AliESDRun::kUniformBMap,val);}
   void        SetBInfoStored(Bool_t val=kTRUE)    const  {if(fESDRun) fESDRun->SetBit(AliESDRun::kBInfoStored,val);}
   //
@@ -160,16 +171,21 @@ public:
   Float_t     GetCurrentDip()                     const  {return fESDRun?fESDRun->GetCurrentDip():0;}
   Float_t     GetBeamEnergy()                     const  {return fESDRun?fESDRun->GetBeamEnergy():0;}
   const char* GetBeamType()                       const  {return fESDRun?fESDRun->GetBeamType():0;}
+  Int_t       GetBeamParticle(Int_t ibeam)        const  {return fESDRun?fESDRun->GetBeamParticle(ibeam):0;}
+  Int_t       GetBeamParticleA(Int_t ibeam)       const  {return fESDRun?fESDRun->GetBeamParticleA(ibeam):0;}
+  Int_t       GetBeamParticleZ(Int_t ibeam)       const  {return fESDRun?fESDRun->GetBeamParticleZ(ibeam):0;}
   Bool_t      IsUniformBMap()                     const  {return fESDRun?fESDRun->TestBit(AliESDRun::kUniformBMap):kFALSE;}
   //
-  Bool_t      InitMagneticField()                 const  {return fESDRun?fESDRun->InitMagneticField():kFALSE;} 
-  void      SetT0spread(Float_t *t)               const  {if(fESDRun) fESDRun->SetT0spread(t);} 
-  void      SetVZEROEqFactors(Float_t factors[64]) const {if(fESDRun) fESDRun->SetVZEROEqFactors(factors);}
+  virtual Bool_t  InitMagneticField()             const  {return fESDRun?fESDRun->InitMagneticField():kFALSE;} 
+  void        SetT0spread(Float_t *t)             const  {if(fESDRun) fESDRun->SetT0spread(t);} 
+  Float_t     GetT0spread(Int_t i)                const  {return fESDRun?fESDRun->GetT0spread(i):0;}
+  virtual void      SetVZEROEqFactors(Float_t factors[64]) const {if(fESDRun) fESDRun->SetVZEROEqFactors(factors);}
   // HEADER
   AliESDHeader* GetHeader() const {return fHeader;}
 
   // Delegated methods for fHeader
   void      SetTriggerMask(ULong64_t n) {if(fHeader) fHeader->SetTriggerMask(n);}
+  void      SetTriggerMaskNext50(ULong64_t n) {if(fHeader) fHeader->SetTriggerMaskNext50(n);}
   void      SetOrbitNumber(UInt_t n) {if(fHeader) fHeader->SetOrbitNumber(n);}
   void      SetTimeStamp(UInt_t timeStamp){if(fHeader) fHeader->SetTimeStamp(timeStamp);}
   void      SetEventType(UInt_t eventType){if(fHeader) fHeader->SetEventType(eventType);}
@@ -180,8 +196,11 @@ public:
   void      SetTriggerCluster(UChar_t n) {if(fHeader) fHeader->SetTriggerCluster(n);}
   
   ULong64_t GetTriggerMask() const {return fHeader?fHeader->GetTriggerMask():0;}
-  TString   GetFiredTriggerClasses() const {return (fESDRun&&fHeader)?fESDRun->GetFiredTriggerClasses(fHeader->GetTriggerMask()):"";}
-  Bool_t    IsTriggerClassFired(const char *name) const {return (fESDRun&&fHeader)?fESDRun->IsTriggerClassFired(fHeader->GetTriggerMask(),name):kFALSE;}
+  ULong64_t GetTriggerMaskNext50() const {return fHeader?fHeader->GetTriggerMaskNext50():0;}
+  //TString   GetFiredTriggerClasses() const {return (fESDRun&&fHeader)?fESDRun->GetFiredTriggerClasses(fHeader->GetTriggerMask()):"";}
+  TString   GetFiredTriggerClasses() const {return (fESDRun&&fHeader)?fESDRun->GetFiredTriggerClasses(fHeader->GetTriggerMask(),fHeader->GetTriggerMaskNext50()):"";}
+  //Bool_t    IsTriggerClassFired(const char *name) const {return (fESDRun&&fHeader)?fESDRun->IsTriggerClassFired(fHeader->GetTriggerMask(),name):kFALSE;}
+  Bool_t    IsTriggerClassFired(const char *name) const {return (fESDRun&&fHeader)?fESDRun->IsTriggerClassFired(fHeader->GetTriggerMask(),fHeader->GetTriggerMaskNext50(),name):kFALSE;}
   Bool_t    IsEventSelected(const char *trigExpr) const;
   TObject*  GetHLTTriggerDecision() const;
   TString   GetHLTTriggerDescription() const;
@@ -193,12 +212,12 @@ public:
   Int_t     GetEventNumberInFile() const {return fHeader?fHeader->GetEventNumberInFile():-1;}
   UShort_t  GetBunchCrossNumber() const {return fHeader?fHeader->GetBunchCrossNumber():0;}
   UChar_t   GetTriggerCluster() const {return fHeader?fHeader->GetTriggerCluster():0;}
-
+  Bool_t IsDetectorInTriggerCluster(TString detector, AliTriggerConfiguration* trigConf) const;
   // ZDC CKB: put this in the header?
   AliESDZDC*    GetESDZDC()  const {return fESDZDC;}
   AliESDZDC*    GetZDCData() const {return fESDZDC;}
 
-  void SetZDCData(AliESDZDC * obj);
+  void SetZDCData(const AliESDZDC * obj);
 
   // Delegated methods for fESDZDC
   Double_t GetZDCN1Energy() const {return fESDZDC?fESDZDC->GetZDCN1Energy():0;}
@@ -223,7 +242,7 @@ public:
 
   // TZERO CKB: put this in the header?
   const AliESDTZERO*    GetESDTZERO() const {return fESDTZERO;}
-  void SetTZEROData(AliESDTZERO * obj);
+  void SetTZEROData(const AliESDTZERO * obj);
  // delegetated methods for fESDTZERO
 
   Double32_t GetT0zVertex() const {return fESDTZERO?fESDTZERO->GetT0zVertex():0;}
@@ -244,23 +263,23 @@ public:
 
   // VZERO 
   AliESDVZERO *GetVZEROData() const { return fESDVZERO; }
-  void SetVZEROData(AliESDVZERO * obj);
-       
-  #ifdef MFT_UPGRADE
-  // MFT 
-//  AliESDMFT *GetMFTData() const { return fESDMFT; }
-//  void SetMFTData(AliESDMFT * obj);
-  #endif
+  void SetVZEROData(const AliESDVZERO * obj);
        
  // ACORDE
   AliESDACORDE *GetACORDEData() const { return fESDACORDE;}
   void SetACORDEData(AliESDACORDE * obj);
 
-  void SetESDfriend(const AliESDfriend *f) const;
-  void GetESDfriend(AliESDfriend *f) const;
+ // AD
+  AliESDAD *GetADData() const { return fESDAD;}
+  void SetADData(AliESDAD * obj);
 
 
 
+
+  void SetESDfriend(const AliESDfriend *f) const;
+  void GetESDfriend(AliESDfriend *f) const;
+  virtual AliESDfriend* FindFriend() const;
+
   void SetPrimaryVertexTPC(const AliESDVertex *vertex); 
   const AliESDVertex *GetPrimaryVertexTPC() const {return fTPCVertex;}
 
@@ -277,17 +296,49 @@ public:
 
   const AliESDVertex *GetPrimaryVertex() const;
 
+  //getters for calibration
+  Int_t GetPrimaryVertex (AliESDVertex &v) const {
+      if(!GetPrimaryVertex()) return -1;
+      v=*GetPrimaryVertex();
+      return 0;
+  }
+
+  Int_t GetPrimaryVertexTPC (AliESDVertex &v) const {
+      if(!GetPrimaryVertexTPC()) return -1;
+      v=*GetPrimaryVertexTPC();
+      return 0;
+  }
+
+  Int_t GetPrimaryVertexSPD (AliESDVertex &v) const {
+      if(!GetPrimaryVertexSPD()) return -1;
+      v=*GetPrimaryVertexSPD();
+      return 0;
+  }
+
+  Int_t GetPrimaryVertexTracks (AliESDVertex &v) const {
+      if(!GetPrimaryVertexTracks()) return -1;
+      v=*GetPrimaryVertexTracks();
+      return 0;
+  }
 
 
   void SetTOFHeader(const AliTOFHeader * tofEventTime);
-  const AliTOFHeader *GetTOFHeader() const {return fTOFHeader;}
+  AliTOFHeader *GetTOFHeader() const {return fTOFHeader;}
   Float_t GetEventTimeSpread() const {if (fTOFHeader) return fTOFHeader->GetT0spread(); else return 0.;}
   Float_t GetTOFTimeResolution() const {if (fTOFHeader) return fTOFHeader->GetTOFResolution(); else return 0.;}
 
+  TClonesArray *GetESDTOFClusters() const {return fESDTOFClusters;}
+  TClonesArray *GetESDTOFHits() const {return fESDTOFHits;}
+  TClonesArray *GetESDTOFMatches() const {return fESDTOFMatches;}
+
+  void SetTOFcluster(Int_t ntofclusters,AliESDTOFCluster *cluster,Int_t *mapping=NULL);
+  void SetTOFcluster(Int_t ntofclusters,AliESDTOFCluster *cluster[],Int_t *mapping=NULL);
+  Int_t GetNTOFclusters() const {return fESDTOFClusters ? fESDTOFClusters->GetEntriesFast() : 0;}
 
+  Int_t GetNumberOfITSClusters(Int_t lr) const {return fSPDMult ? fSPDMult->GetNumberOfITSClusters(lr) : 0;}
   void SetMultiplicity(const AliMultiplicity *mul);
 
-  const AliMultiplicity *GetMultiplicity() const {return fSPDMult;}
+  AliMultiplicity *GetMultiplicity() const {return fSPDMult;}
   void   EstimateMultiplicity(Int_t &tracklets,Int_t &trITSTPC,Int_t &trITSSApure,
                              Double_t eta=1.,Bool_t useDCAFlag=kTRUE,Bool_t useV0Flag=kTRUE) const;
 
@@ -297,11 +348,11 @@ public:
   Bool_t RemoveTrack(Int_t i)  const;
 
   const AliESDVertex *GetPileupVertexSPD(Int_t i) const {
-    return (const AliESDVertex *)(fSPDPileupVertices?fSPDPileupVertices->UncheckedAt(i):0x0);
+    return (const AliESDVertex *)(fSPDPileupVertices?fSPDPileupVertices->At(i):0x0);
   }
   Char_t  AddPileupVertexSPD(const AliESDVertex *vtx);
   const AliESDVertex *GetPileupVertexTracks(Int_t i) const {
-    return (const AliESDVertex *)(fTrkPileupVertices?fTrkPileupVertices->UncheckedAt(i):0x0);
+    return (const AliESDVertex *)(fTrkPileupVertices?fTrkPileupVertices->At(i):0x0);
   }
   Char_t  AddPileupVertexTracks(const AliESDVertex *vtx);
   TClonesArray* GetPileupVerticesTracks() const {return (TClonesArray*)fTrkPileupVertices;}
@@ -315,16 +366,17 @@ public:
   
   virtual Bool_t IsPileupFromSPDInMultBins() const;
 
-  AliESDtrack *GetTrack(Int_t i) const {
-    return (AliESDtrack *)(fTracks?fTracks->UncheckedAt(i):0x0);
-  }
+  void ConnectTracks();
+  Bool_t        AreTracksConnected() const {return fTracksConnected;}
+
+  AliESDtrack *GetTrack(Int_t i) const {return (fTracks)?(AliESDtrack*)fTracks->At(i) : 0;}
   Int_t  AddTrack(const AliESDtrack *t);
 
   /// add new track at the end of tracks array and return instance
   AliESDtrack* NewTrack();
   
   AliESDHLTtrack *GetHLTConfMapTrack(Int_t /*i*/) const {
-    //    return (AliESDHLTtrack *)fHLTConfMapTracks->UncheckedAt(i);
+    //    return (AliESDHLTtrack *)fHLTConfMapTracks->At(i);
     return 0;
   }
   void AddHLTConfMapTrack(const AliESDHLTtrack */*t*/) {
@@ -335,7 +387,7 @@ public:
   
 
   AliESDHLTtrack *GetHLTHoughTrack(Int_t /*i*/) const {
-    //    return (AliESDHLTtrack *)fHLTHoughTracks->UncheckedAt(i);
+    //    return (AliESDHLTtrack *)fHLTHoughTracks->At(i);
     return 0;
   }
   void AddHLTHoughTrack(const AliESDHLTtrack */*t*/) {
@@ -344,21 +396,31 @@ public:
     //     new(fhlt[fHLTHoughTracks->GetEntriesFast()]) AliESDHLTtrack(*t);
   }
   
-  AliESDMuonTrack *GetMuonTrack(Int_t i) const {
-    return (AliESDMuonTrack *)(fMuonTracks?fMuonTracks->UncheckedAt(i):0x0);
-  }
-
-  void AddMuonTrack(const AliESDMuonTrack *t);
-
+  Bool_t MoveMuonObjects();
+  
+  AliESDMuonTrack* GetMuonTrack(Int_t i);
+  AliESDMuonTrack* NewMuonTrack();
+  
+  AliESDMuonCluster* GetMuonCluster(Int_t i);
+  AliESDMuonCluster* FindMuonCluster(UInt_t clusterId);
+  AliESDMuonCluster* NewMuonCluster();
+  
+  AliESDMuonPad* GetMuonPad(Int_t i);
+  AliESDMuonPad* FindMuonPad(UInt_t padId);
+  AliESDMuonPad* NewMuonPad();
+  
+  AliESDMuonGlobalTrack* GetMuonGlobalTrack(Int_t i);      // AU
+  AliESDMuonGlobalTrack* NewMuonGlobalTrack();             // AU
+  
   AliESDPmdTrack *GetPmdTrack(Int_t i) const {
-    return (AliESDPmdTrack *)(fPmdTracks?fPmdTracks->UncheckedAt(i):0x0);
+    return (AliESDPmdTrack *)(fPmdTracks?fPmdTracks->At(i):0x0);
   }
 
   void AddPmdTrack(const AliESDPmdTrack *t);
 
 
   AliESDTrdTrack *GetTrdTrack(Int_t i) const {
-    return (AliESDTrdTrack *)(fTrdTracks?fTrdTracks->UncheckedAt(i):0x0);
+    return (AliESDTrdTrack *)(fTrdTracks?fTrdTracks->At(i):0x0);
   }
 
   
@@ -371,29 +433,31 @@ public:
   void AddTrdTrack(const AliESDTrdTrack *t);
 
   AliESDTrdTracklet* GetTrdTracklet(Int_t idx) const {
-    return (AliESDTrdTracklet*)(fTrdTracklets?fTrdTracklets->UncheckedAt(idx):0x0);
+    return (AliESDTrdTracklet*)(fTrdTracklets?fTrdTracklets->At(idx):0x0);
   }
 
   void AddTrdTracklet(const AliESDTrdTracklet *trkl);
+  void AddTrdTracklet(UInt_t trackletWord, Short_t hcid, Int_t label = -1);
 
+  using AliVEvent::GetV0;
   AliESDv0 *GetV0(Int_t i) const {
-    return (AliESDv0*)(fV0s?fV0s->UncheckedAt(i):0x0);
+    return (AliESDv0*)(fV0s?fV0s->At(i):0x0);
   }
   Int_t AddV0(const AliESDv0 *v);
 
   AliESDcascade *GetCascade(Int_t i) const {
-    return (AliESDcascade *)(fCascades?fCascades->UncheckedAt(i):0x0);
+    return (AliESDcascade *)(fCascades?fCascades->At(i):0x0);
   }
 
   void AddCascade(const AliESDcascade *c);
 
   AliESDkink *GetKink(Int_t i) const {
-    return (AliESDkink *)(fKinks?fKinks->UncheckedAt(i):0x0);
+    return (AliESDkink *)(fKinks?fKinks->At(i):0x0);
   }
   Int_t AddKink(const AliESDkink *c);
 
   AliESDCaloCluster *GetCaloCluster(Int_t i) const {
-    return (AliESDCaloCluster *)(fCaloClusters?fCaloClusters->UncheckedAt(i):0x0);
+    return (AliESDCaloCluster *)(fCaloClusters?fCaloClusters->At(i):0x0);
   }
 
   Int_t AddCaloCluster(const AliESDCaloCluster *c);
@@ -407,9 +471,16 @@ public:
          else
                  return fPHOSTrigger;
   }
+
+  AliESDCosmicTrack *GetCosmicTrack(Int_t i) const {
+    return fCosmicTracks ? (AliESDCosmicTrack*) fCosmicTracks->At(i) : 0;
+  }
+  const TClonesArray * GetCosmicTracks() const{ return fCosmicTracks;}
+
+  void  AddCosmicTrack(const AliESDCosmicTrack *t);
        
   AliRawDataErrorLog *GetErrorLog(Int_t i) const {
-    return (AliRawDataErrorLog *)(fErrorLogs?fErrorLogs->UncheckedAt(i):0x0);
+    return (AliRawDataErrorLog *)(fErrorLogs?fErrorLogs->At(i):0x0);
   }
   void  AddRawDataErrorLog(const AliRawDataErrorLog *log) const;
 
@@ -422,19 +493,24 @@ public:
     return (fTrkPileupVertices?fTrkPileupVertices->GetEntriesFast():0);
   }
   Int_t GetNumberOfTracks()     const {return fTracks?fTracks->GetEntriesFast():0;}
+  Int_t GetNumberOfESDTracks()  const { return GetNumberOfTracks(); }
   Int_t GetNumberOfHLTConfMapTracks()     const {return 0;} 
   // fHLTConfMapTracks->GetEntriesFast();}
   Int_t GetNumberOfHLTHoughTracks()     const {return  0;  }
   //  fHLTHoughTracks->GetEntriesFast();  }
 
   Int_t GetNumberOfMuonTracks() const {return fMuonTracks?fMuonTracks->GetEntriesFast():0;}
+  Int_t GetNumberOfMuonClusters();
+  Int_t GetNumberOfMuonPads();
+  Int_t GetNumberOfMuonGlobalTracks() const {return fMuonGlobalTracks?fMuonGlobalTracks->GetEntriesFast():0;}    // AU
   Int_t GetNumberOfPmdTracks() const {return fPmdTracks?fPmdTracks->GetEntriesFast():0;}
   Int_t GetNumberOfTrdTracks() const {return fTrdTracks?fTrdTracks->GetEntriesFast():0;}
   Int_t GetNumberOfTrdTracklets() const {return fTrdTracklets?fTrdTracklets->GetEntriesFast():0;}
   Int_t GetNumberOfV0s()      const {return fV0s?fV0s->GetEntriesFast():0;}
   Int_t GetNumberOfCascades() const {return fCascades?fCascades->GetEntriesFast():0;}
   Int_t GetNumberOfKinks() const {return fKinks?fKinks->GetEntriesFast():0;}
-  
+
+  Int_t GetNumberOfCosmicTracks() const {return fCosmicTracks ? fCosmicTracks->GetEntriesFast():0;}  
   Int_t GetEMCALClusters(TRefArray *clusters) const;
   Int_t GetPHOSClusters(TRefArray *clusters) const;
   Int_t GetNumberOfCaloClusters() const {return fCaloClusters?fCaloClusters->GetEntriesFast():0;}
@@ -457,6 +533,7 @@ public:
   void ResetStdContent();
   void CreateStdContent();
   void CreateStdContent(Bool_t bUseThisList);
+  void CompleteStdContent();
   void SetStdNames();
   void CopyFromOldESD();
   TList* GetList() const {return fESDObjects;}
@@ -467,11 +544,25 @@ public:
   virtual Int_t        EventIndexForPHOSCell(Int_t)    const {return 0;}
   virtual Int_t        EventIndexForEMCALCell(Int_t)   const {return 0;} 
   
+  void SetDetectorStatus(ULong_t detMask) {fDetectorStatus|=detMask;}
+  void ResetDetectorStatus(ULong_t detMask) {fDetectorStatus&=~detMask;}
+  ULong_t GetDetectorStatus() const {return fDetectorStatus;}
+  Bool_t IsDetectorOn(ULong_t detMask) const {return (fDetectorStatus&detMask)>0;}
+
+  void SetDAQDetectorPattern(UInt_t pattern) {fDAQDetectorPattern = pattern;}
+  void SetDAQAttributes(UInt_t attributes) {fDAQAttributes = attributes;}
+  UInt_t GetDAQDetectorPattern() const {return fDAQDetectorPattern;}
+  UInt_t GetDAQAttributes() const {return fDAQAttributes;}
+
+  virtual AliVEvent::EDataLayoutType GetDataLayoutType() const;
 
 protected:
   AliESDEvent(const AliESDEvent&);
   static Bool_t ResetWithPlacementNew(TObject *pObject);
 
+  void AddMuonTrack(const AliESDMuonTrack *t);
+  void AddMuonGlobalTrack(const AliESDMuonGlobalTrack *t);     // AU
+  
   TList *fESDObjects;             // List of esd Objects
 
   AliESDRun       *fESDRun;           //! Run information tmp put in the Userdata
@@ -487,12 +578,16 @@ protected:
   AliESDCaloTrigger* fPHOSTrigger;     //! PHOS Trigger information
   AliESDCaloTrigger* fEMCALTrigger;    //! PHOS Trigger information
   AliESDACORDE    *fESDACORDE;        //! ACORDE ESD object caontaining bit pattern
+  AliESDAD    *fESDAD;        //! AD ESD object caontaining bit pattern
   AliESDTrdTrigger *fTrdTrigger;      //! TRD trigger information
 
   TClonesArray *fSPDPileupVertices;//! Pileup primary vertices reconstructed by SPD 
   TClonesArray *fTrkPileupVertices;//! Pileup primary vertices reconstructed using the tracks 
   TClonesArray *fTracks;           //! ESD tracks 
   TClonesArray *fMuonTracks;       //! MUON ESD tracks
+  TClonesArray *fMuonClusters;     //! MUON ESD clusters
+  TClonesArray *fMuonPads;         //! MUON ESD pads
+  TClonesArray *fMuonGlobalTracks; //! MUON+MFT ESD tracks      // AU
   TClonesArray *fPmdTracks;        //! PMD ESD tracks
   TClonesArray *fTrdTracks;        //! TRD ESD tracks (triggered)
   TClonesArray *fTrdTracklets;     //! TRD tracklets (for trigger)
@@ -502,14 +597,19 @@ protected:
   TClonesArray *fCaloClusters;     //! Calorimeter clusters for PHOS/EMCAL
   AliESDCaloCells *fEMCALCells;     //! EMCAL cell info
   AliESDCaloCells *fPHOSCells;     //! PHOS cell info
+  TClonesArray *fCosmicTracks;     //! Tracks created by cosmics finder
+  TClonesArray *fESDTOFClusters;    //! TOF clusters
+  TClonesArray *fESDTOFHits;        //! TOF hits (used for clusters)
+  TClonesArray *fESDTOFMatches;    //! TOF matching info (with the reference to tracks)
   TClonesArray *fErrorLogs;        //! Raw-data reading error messages
  
-
+  Bool_t fOldMuonStructure;        //! Flag if reading ESD with old MUON structure
 
   AliESD       *fESDOld;           //! Old esd Structure
   AliESDfriend *fESDFriendOld;     //! Old friend esd Structure
   Bool_t    fConnected;            //! flag if leaves are alreday connected
   Bool_t    fUseOwnList;           //! Do not use the list from the esdTree but use the one created by this class 
+  Bool_t    fTracksConnected;      //! flag if tracks have already pointer to event set
 
   static const char* fgkESDListName[kESDListN]; //!
 
@@ -519,7 +619,12 @@ protected:
                              //  and T0spread as written in OCDB
   AliCentrality *fCentrality; //! Centrality for AA collision
   AliEventplane *fEventplane; //! Event plane for AA collision
-  ClassDef(AliESDEvent,15)  //ESDEvent class 
+
+  ULong64_t fDetectorStatus; // set detector event status bit for good event selection
+  UInt_t fDAQDetectorPattern; // Detector pattern from DAQ: bit 0 is SPD, bit 4 is TPC, etc. See event.h
+  UInt_t fDAQAttributes; // Third word of attributes from DAQ: bit 7 corresponds to HLT decision 
+
+  ClassDef(AliESDEvent,23)  //ESDEvent class 
 };
 #endif