Corrected protection.
[u/mrichter/AliRoot.git] / STEER / AliMixedEvent.h
1 // -*- mode: C++ -*- 
2 #ifndef ALIMIXEDEVENT_H
3 #define ALIMIXEDEVENT_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7
8 /* $Id$ */
9
10 //-------------------------------------------------------------------------
11 //                          Class AliMixedEvent
12 // VEvent which is the container of several VEvents 
13 // Use Case: Event Mixing     
14 // Origin: Andreas Morsch, CERN, Andreas.Morsch@cern.ch 
15 //-------------------------------------------------------------------------
16
17 #include "AliVEvent.h"
18 #include "AliVVertex.h"
19 #include <TList.h>
20 #include <TObjArray.h>
21
22 class AliMixedEvent : public AliVEvent {
23
24 public:
25     
26     AliMixedEvent();
27     virtual ~AliMixedEvent() ;
28     AliMixedEvent(const AliMixedEvent& vEvnt); 
29     AliMixedEvent& operator=(const AliMixedEvent& vEvnt);
30     
31     // Services from VEvent
32     virtual void AddObject(TObject* /*obj*/) {;}
33     virtual TObject* FindListObject(const char* /*name*/) const {return 0;}
34     virtual TList* GetList() const {return 0;}
35     virtual void CreateStdContent() {;}
36     virtual void GetStdContent() {;}
37     virtual void ReadFromTree(TTree* /*tree*/, Option_t* /*opt*/) {;} 
38     virtual void WriteToTree(TTree* /*tree*/) const {;}
39     virtual void SetStdNames() {;} 
40     virtual void Print(Option_t * /*option*/) const  {;} 
41     // Specific Services
42     virtual void AddEvent(AliVEvent* evt);
43     virtual void SetPrimaryVertex(AliVVertex* newVertex) {fMeanVertex = newVertex;}
44     virtual void Reset();
45     virtual void Init();
46     const AliVVertex* GetEventVertex(Int_t i) const;
47     const AliVVertex* GetVertexOfEvent(Int_t i) const;
48     Int_t        GetNumberOfEvents() {return fNEvents;}      
49   
50     // Header
51     virtual AliVHeader* GetHeader() const {return 0;}
52
53     // Delegated methods for fESDRun or AODHeader
54   
55     virtual void     SetRunNumber(Int_t /*n*/)         {;} 
56     virtual void     SetPeriodNumber(UInt_t /*n*/)     {;} 
57     virtual void     SetMagneticField(Double_t /*mf*/) {;} 
58     
59     virtual Int_t    GetRunNumber()     const  {return -999 ;} 
60     virtual UInt_t   GetPeriodNumber()  const  {return    0 ;} 
61     virtual Double_t GetMagneticField() const;
62     
63     
64     virtual Double_t GetDiamondX() const {return -999.;}
65     virtual Double_t GetDiamondY() const {return -999.;}
66     virtual void     GetDiamondCovXY(Float_t cov[3]) const
67         {cov[0]=-999.; return;}
68   
69   // Delegated methods for fHeader
70     virtual void      SetOrbitNumber(UInt_t /*n*/)        {;} 
71     virtual void      SetBunchCrossNumber(UShort_t /*n*/) {;}
72     virtual void      SetEventType(UInt_t /*eventType*/)  {;}
73     virtual void      SetTriggerMask(ULong64_t /*n*/)     {;}
74     virtual void      SetTriggerCluster(UChar_t /*n*/)    {;}
75
76     virtual UInt_t    GetOrbitNumber()      const  {return    0;}
77     virtual UShort_t  GetBunchCrossNumber() const  {return    0;}
78     virtual UInt_t    GetEventType()        const  {return    0;}
79     virtual ULong64_t GetTriggerMask()      const  {return    0;}
80     virtual UChar_t   GetTriggerCluster()   const  {return    0;}
81     
82     virtual Double_t  GetZDCN1Energy()            const {return -999.;}
83     virtual Double_t  GetZDCP1Energy()            const {return -999.;}
84     virtual Double_t  GetZDCN2Energy()            const {return -999.;}
85     virtual Double_t  GetZDCP2Energy()            const {return -999.;}
86     virtual Double_t  GetZDCEMEnergy(Int_t /*i*/) const {return -999.;}
87  
88   // Tracks
89     virtual AliVParticle *GetTrack(Int_t i)    const;
90     virtual Int_t        GetNumberOfTracks()   const {return fNumberOfTracks;}
91     virtual Int_t        GetNumberOfV0s()      const {return -999;}
92     virtual Int_t        GetNumberOfCascades() const {return -999;}
93   
94     // Calo Clusters and cells
95   virtual AliVCluster *GetCaloCluster(Int_t i)     const;
96   virtual Int_t        GetNumberOfCaloClusters()   const {return fNumberOfCaloClusters;}
97   virtual AliVCaloCells *GetPHOSCells()            const {return fPHOSCells;}
98   virtual AliVCaloCells *GetEMCALCells()           const {return fEMCALCells;}
99   virtual Int_t        GetNumberOfPHOSCells()      const {return fNumberOfPHOSCells;}
100   virtual Int_t        GetNumberOfEMCALCells()     const {return fNumberOfEMCALCells;}
101   virtual Int_t*       GetPHOSCellsCumul()         const {return fNPHOSCellsCumul;} 
102   virtual Int_t*       GetEMCALCellsCumul()        const {return fNEMCALCellsCumul;} 
103   virtual Int_t        GetNCaloClustersCumul(Int_t iev) const {return fNCaloClustersCumul[iev];}
104
105
106   virtual Int_t        EventIndex(Int_t itrack) const;
107   virtual Int_t        EventIndexForCaloCluster(Int_t iclu) const;
108   virtual Int_t        EventIndexForPHOSCell(Int_t icell) const;
109   virtual Int_t        EventIndexForEMCALCell(Int_t icell) const;
110
111   // Primary vertex
112     virtual const AliVVertex   *GetPrimaryVertex() const {return fMeanVertex;}
113     virtual Bool_t ComputeVtx(TObjArray *vertices, Double_t *pos,Double_t *sig,Int_t *nContributors);
114 private:
115   TList   fEventList;            //! List of Events
116   Int_t   fNEvents;              //! Number of Events 
117   Int_t   fNumberOfTracks;       //! Total number of tracks
118   Int_t   fNumberOfCaloClusters; //! Total number of calo clusters
119   Int_t   fNumberOfPHOSCells;    //! Total number of PHOS Cells
120   Int_t   fNumberOfEMCALCells;   //! Total number of EMCAL Cells
121   Int_t*  fNTracksCumul;         //! Cumulant
122   Int_t*  fNCaloClustersCumul;   //! Cumulant
123   Int_t*  fNPHOSCellsCumul;      //! Cumulant
124   Int_t*  fNEMCALCellsCumul;     //! Cumulant
125   AliVCaloCells* fPHOSCells;     //! array ofPHOS cells  
126   AliVCaloCells* fEMCALCells;    //! array ofPHOS cells  
127   AliVVertex* fMeanVertex;    //! Mean vertex
128     
129     ClassDef(AliMixedEvent, 0)  // Container for mixed events
130 };
131 #endif 
132