]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/ESD/AliESDEvent.h
Allow fill QA time histograms for Cells in AODs, add a switch to fill them
[u/mrichter/AliRoot.git] / STEER / ESD / AliESDEvent.h
index 7ef4f9afc236e0b5d0cc8f4a1da80822785b2f05..b92029475c7e8caea187120feae53a1e891cab65 100644 (file)
@@ -39,8 +39,6 @@
 #include "AliESDCaloCluster.h"
 #include "AliESDCaloCells.h"
 
-#include "AliTOFHeader.h"
-
 #include "AliESDVZERO.h"
 #ifdef MFT_UPGRADE
 //#include "AliESDMFT.h"
@@ -60,6 +58,8 @@ class AliESDTrdTrigger;
 class AliESDTrdTrack;
 class AliESDTrdTracklet;
 class AliESDMuonTrack;
+class AliESDMuonCluster;
+class AliESDMuonPad;
 class AliESD;
 class AliESDcascade;
 class AliCentrality;
@@ -67,6 +67,7 @@ class AliEventplane;
 class TRefArray;
 class AliESDACORDE;
 class AliESDHLTDecision;
+class AliESDCosmicTrack;
 
 class TList;
 class TString;
@@ -92,6 +93,8 @@ public:
                       kTrkPileupVertices,
                       kTracks,
                       kMuonTracks,
+                      kMuonClusters,
+                      kMuonPads,
                       kPmdTracks,
                       kTrdTrigger,
                       kTrdTracks,
@@ -105,6 +108,7 @@ public:
                       kErrorLogs,
                        kESDACORDE,
                       kTOFHeader,
+                       kCosmicTracks,
                       kESDListN
                   #ifdef MFT_UPGRADE
        //           , kESDMFT
@@ -153,6 +157,7 @@ public:
   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,11 +165,14 @@ 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 void      SetVZEROEqFactors(Float_t factors[64]) const {if(fESDRun) fESDRun->SetVZEROEqFactors(factors);}
   // HEADER
   AliESDHeader* GetHeader() const {return fHeader;}
 
@@ -198,7 +206,7 @@ public:
   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 +231,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,7 +252,7 @@ public:
 
   // VZERO 
   AliESDVZERO *GetVZEROData() const { return fESDVZERO; }
-  void SetVZEROData(AliESDVZERO * obj);
+  void SetVZEROData(const AliESDVZERO * obj);
        
   #ifdef MFT_UPGRADE
   // MFT 
@@ -297,11 +305,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;}
@@ -317,8 +325,8 @@ public:
 
   AliESDtrack *GetTrack(Int_t i) const {
     if (!fTracks) return 0;
-    AliESDtrack* track = (AliESDtrack*) fTracks->UncheckedAt(i);
-    track->SetESDEvent(this);
+    AliESDtrack* track = (AliESDtrack*) fTracks->At(i);
+    if (track) track->SetESDEvent(this);
     return track;
   }
   Int_t  AddTrack(const AliESDtrack *t);
@@ -327,7 +335,7 @@ public:
   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*/) {
@@ -338,7 +346,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*/) {
@@ -347,21 +355,28 @@ 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();
+  
   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);
   }
 
   
@@ -374,29 +389,29 @@ 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);
 
   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);
@@ -410,9 +425,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;
 
@@ -431,13 +453,16 @@ public:
   //  fHLTHoughTracks->GetEntriesFast();  }
 
   Int_t GetNumberOfMuonTracks() const {return fMuonTracks?fMuonTracks->GetEntriesFast():0;}
+  Int_t GetNumberOfMuonClusters();
+  Int_t GetNumberOfMuonPads();
   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;}
@@ -460,6 +485,7 @@ public:
   void ResetStdContent();
   void CreateStdContent();
   void CreateStdContent(Bool_t bUseThisList);
+  void CompleteStdContent();
   void SetStdNames();
   void CopyFromOldESD();
   TList* GetList() const {return fESDObjects;}
@@ -470,11 +496,17 @@ 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;}
 
 protected:
   AliESDEvent(const AliESDEvent&);
   static Bool_t ResetWithPlacementNew(TObject *pObject);
 
+  void AddMuonTrack(const AliESDMuonTrack *t);
+  
   TList *fESDObjects;             // List of esd Objects
 
   AliESDRun       *fESDRun;           //! Run information tmp put in the Userdata
@@ -496,6 +528,8 @@ protected:
   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 *fPmdTracks;        //! PMD ESD tracks
   TClonesArray *fTrdTracks;        //! TRD ESD tracks (triggered)
   TClonesArray *fTrdTracklets;     //! TRD tracklets (for trigger)
@@ -505,9 +539,10 @@ 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 *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
@@ -522,7 +557,10 @@ protected:
                              //  and T0spread as written in OCDB
   AliCentrality *fCentrality; //! Centrality for AA collision
   AliEventplane *fEventplane; //! Event plane for AA collision
-  ClassDef(AliESDEvent,16)  //ESDEvent class 
+
+  ULong_t fDetectorStatus; // set detector event status bit for good event selection
+
+  ClassDef(AliESDEvent,17)  //ESDEvent class 
 };
 #endif