AliRoot Core  ee782a0 (ee782a0)
AliMCEvent.h
Go to the documentation of this file.
1 // -*- mode: C++ -*-
2 #ifndef ALIMCEVENT_H
3 #define ALIMCEVENT_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 AliMCEvent
12 //
13 // Origin: Andreas.Morsch, CERN, andreas.morsch@cern.ch
14 //-------------------------------------------------------------------------
15 
16 
17 #include <TTree.h>
18 #include <TRefArray.h>
19 #include <TClonesArray.h>
20 
21 #include "AliVEvent.h"
22 #include "AliVHeader.h"
23 #include "AliVParticle.h"
24 #include "AliVVertex.h"
25 #include "AliMCParticle.h"
26 
27 class AliCentrality;
28 class AliEventplane;
29 class AliStack;
30 class AliHeader;
31 class AliGenEventHeader;
32 
33 class TClonesArray;
34 class TList;
35 
36 class AliMCEvent : public AliVEvent {
37 
38 public:
39 
40  AliMCEvent();
41  virtual ~AliMCEvent();
42  AliMCEvent(const AliMCEvent& mcEvnt);
43  AliMCEvent& operator=(const AliMCEvent& mcEvnt);
44  //
45  // Methods implementing the interface
46  //
47  // Services
48  virtual void AddObject(TObject* /*obj*/) {;}
49  virtual TObject* FindListObject(const char */*name*/) const {return 0;}
50  virtual TList* GetList() const {return 0;}
51  virtual void CreateStdContent() {;}
52  virtual void GetStdContent() {;}
53  virtual void ReadFromTree(TTree * /*tree*/, Option_t* /*opt*/) {;}
54  virtual void WriteToTree(TTree* /*tree*/) const {;}
55 
56  virtual void SetStdNames() {;}
57  virtual void Print(Option_t */*option=""*/) const {;}
58  virtual void PreReadAll();
59  virtual void Reset() {;}
60 
61  // Header
62  virtual AliVHeader* GetHeader() const {return 0;}
63 
64  // Delegated methods for fESDRun or AODHeader
65 
66  virtual void SetRunNumber(Int_t /*n*/) {;}
67  virtual void SetPeriodNumber(UInt_t /*n*/) {;}
68  virtual void SetMagneticField(Double_t /*mf*/) {;}
69 
70 
71  virtual Int_t GetRunNumber() const {return 0;}
72  virtual UInt_t GetPeriodNumber() const {return 0;}
73  virtual Double_t GetMagneticField() const {return 0.;}
74 
75  // Setters not needed
76  virtual void SetOrbitNumber(UInt_t /*n*/) {;}
77  virtual void SetBunchCrossNumber(UShort_t /*n*/) {;}
78  virtual void SetEventType(UInt_t /*eventType*/) {;}
79  virtual void SetTriggerMask(ULong64_t /*n*/) {;}
80  virtual void SetTriggerCluster(UChar_t /*n*/) {;}
81 
82  virtual UInt_t GetOrbitNumber() const {return 0;}
83  virtual UShort_t GetBunchCrossNumber() const {return 0;}
84 
85  virtual UInt_t GetEventType() const {return 0;}
86 
87  virtual ULong64_t GetTriggerMask() const {return 0;}
88  virtual UChar_t GetTriggerCluster() const {return 0;}
89  virtual TString GetFiredTriggerClasses()const {return ("");}
90  virtual Double_t GetZDCN1Energy() const {return 0.;}
91  virtual Double_t GetZDCP1Energy() const {return 0.;}
92  virtual Double_t GetZDCN2Energy() const {return 0.;}
93  virtual Double_t GetZDCP2Energy() const {return 0.;}
94  virtual Double_t GetZDCEMEnergy(Int_t /*i*/)
95  const {return 0.;}
96  // Tracks
97  virtual AliVParticle *GetTrack(Int_t i) const;
98  virtual Int_t GetNumberOfTracks() const {return fNparticles;}
99  virtual Int_t GetNumberOfV0s() const {return -1;}
100  virtual Int_t GetNumberOfCascades() const {return -1;}
101 
102  Int_t Raw2MergedLabel(int lbRaw) const;
103 
104  TParticle* ParticleFromStack(Int_t i) const;
105  TParticle* Particle(int i) const;
106  // Vertex
108  virtual const AliVVertex *GetPrimaryVertex() const;
109 
110  //
111  // MC Specific methods
112  //
113  // Getters
114  AliStack* Stack() {return fStack;}
115  AliHeader* Header() {return fHeader;}
117  // Services
118  virtual void ConnectTreeE (TTree* tree);
119  virtual void ConnectTreeK (TTree* tree);
120  virtual void ConnectHeaderAndStack(AliHeader* header);
121  virtual void ConnectTreeTR(TTree* tree);
122  virtual void Clean();
123  virtual void InitEvent();
124  virtual void FinishEvent();
125  virtual Int_t GetParticleAndTR(Int_t i, TParticle*& particle, TClonesArray*& trefs);
126  virtual void DrawCheck(Int_t i, Int_t search);
127  virtual void AddSubsidiaryEvent(AliMCEvent* event);
128  virtual Int_t GetNumberOfPrimaries() const {return fNprimaries;}
129  virtual Int_t GetPrimaryOffset() const {return fPrimaryOffset;}
130  virtual Int_t GetSecondaryOffset() const {return fSecondaryOffset;}
131  virtual void SetPrimaryOffset(Int_t ioff) {fPrimaryOffset = ioff;}
132  virtual void SetSecondaryOffset(Int_t ioff) {fSecondaryOffset = ioff;}
133  virtual Bool_t IsPhysicalPrimary(Int_t i) const;
134 
135  Int_t GetPrimary(Int_t id);
136 
137  virtual Int_t BgLabelToIndex(Int_t label);
138  static Int_t BgLabelOffset() {return fgkBgLabelOffset;}
139  virtual Bool_t IsFromBGEvent(Int_t index);
140  TList* GetCocktailList();
141  TString GetGenerator(Int_t index);
142  Bool_t GetCocktailGenerator(Int_t index,TString &nameGen);
143  virtual Bool_t IsSecondaryFromWeakDecay(Int_t index);
144  virtual Bool_t IsSecondaryFromMaterial(Int_t index);
145  // External particle array
146  virtual void SetParticleArray(TClonesArray* mcParticles);
147  //External Header
148  virtual void SetExternalHeader(AliVHeader* aodmcHeader)
149  {fAODMCHeader=aodmcHeader;}
150  virtual AliGenEventHeader *FindHeader(Int_t ipart);
151  //Following needed only for mixed event
152  virtual Int_t EventIndex(Int_t) const {return 0;}
153  virtual Int_t EventIndexForCaloCluster(Int_t) const {return 0;}
154  virtual Int_t EventIndexForPHOSCell(Int_t) const {return 0;}
155  virtual Int_t EventIndexForEMCALCell(Int_t) const {return 0;}
156  AliCentrality* GetCentrality() {return 0;}
157  AliEventplane* GetEventplane() {return 0;}
158 
159  virtual AliVVZERO *GetVZEROData() const {return 0;}
160  virtual AliVZDC *GetZDCData() const {return 0;}
161 
163 
164  virtual Int_t FindIndexAndEvent(Int_t oldidx, AliMCEvent*& event) const; //RS
165 
166  Bool_t HasSubsidiaries() const {return fSubsidiaryEvents!=0;}
167  Bool_t IsFromSubsidiaryEvent(int id) const;
168  void SetTopEvent(const AliMCEvent* ev) {fTopEvent = ev;}
169  const AliMCEvent* GetTopEvent() const {return fTopEvent;}
170 
171 private:
172  virtual void ReorderAndExpandTreeTR();
173 
174  void UpdateEventInformation();
175  virtual void AssignGeneratorIndex();
176  virtual void AssignGeneratorIndex(Int_t index, Int_t dmin, Int_t dmax);
177 
179 
180 private:
181  // Stanndard implementation for ESD production
182  AliStack *fStack; // Current pointer to stack
183  TClonesArray *fMCParticles; // Pointer to list of particles
184  TObjArray *fMCParticleMap; // Map of MC Particles
185  AliHeader *fHeader; // Current pointer to header
186  AliVHeader *fAODMCHeader; //Current pointer to AODMC header
187  TClonesArray *fTRBuffer; // Track reference buffer
188  TClonesArray *fTrackReferences; // Array of track references
189  TTree *fTreeTR; // Pointer to Track Reference Tree
190  TTree *fTmpTreeTR; // Temporary tree TR to read old format
191  TFile *fTmpFileTR; // Temporary file with TreeTR to read old format
192  Int_t fNprimaries; // Number of primaries
193  Int_t fNparticles; // Number of particles
194  TList *fSubsidiaryEvents; // List of possible subsidiary events (for example merged underlying event)
195  Int_t fPrimaryOffset; // Offset for primaries
196  Int_t fSecondaryOffset; // Offset for secondaries
197  Bool_t fExternal; // True if external particle array
199  static Int_t fgkBgLabelOffset; // Standard branch name
200  mutable AliVVertex* fVertex; // MC Vertex
201  Int_t fNBG;
202 
203  ClassDef(AliMCEvent, 2) // AliVEvent realisation for MC data
204 };
205 
206 
207 #endif
208 
virtual void Print(Option_t *) const
Definition: AliMCEvent.h:57
virtual const AliVVertex * GetPrimaryVertex() const
Definition: AliMCEvent.cxx:879
AliHeader * fHeader
Definition: AliMCEvent.h:185
virtual UChar_t GetTriggerCluster() const
Definition: AliMCEvent.h:88
virtual void AddSubsidiaryEvent(AliMCEvent *event)
Definition: AliMCEvent.cxx:682
virtual const AliVVertex * GetPrimaryVertex() const
Definition: AliVEvent.h:247
virtual Bool_t IsPhysicalPrimary(Int_t i) const
Definition: AliMCEvent.cxx:782
virtual Double_t GetZDCP1Energy() const
Definition: AliMCEvent.h:91
virtual void SetExternalHeader(AliVHeader *aodmcHeader)
Definition: AliMCEvent.h:148
virtual void ReadFromTree(TTree *, Option_t *)
Definition: AliMCEvent.h:53
virtual Double_t GetZDCN2Energy() const
Definition: AliMCEvent.h:92
AliCentrality * GetCentrality()
Definition: AliMCEvent.h:156
virtual Int_t GetNumberOfPrimaries() const
Definition: AliMCEvent.h:128
AliGenEventHeader * GenEventHeader() const
Definition: AliMCEvent.cxx:666
virtual void FinishEvent()
Definition: AliMCEvent.cxx:243
const AliMCEvent * fTopEvent
Definition: AliMCEvent.h:198
Int_t fPrimaryOffset
Definition: AliMCEvent.h:195
virtual AliVVZERO * GetVZEROData() const
Definition: AliMCEvent.h:159
AliHeader * Header()
Definition: AliMCEvent.h:115
#define TObjArray
virtual void DrawCheck(Int_t i, Int_t search)
Definition: AliMCEvent.cxx:267
virtual void SetOrbitNumber(UInt_t)
Definition: AliMCEvent.h:76
virtual void InitEvent()
Definition: AliMCEvent.cxx:824
virtual void SetPeriodNumber(UInt_t)
Definition: AliMCEvent.h:67
virtual Bool_t IsSecondaryFromMaterial(Int_t index)
Definition: AliMCEvent.cxx:810
virtual void SetSecondaryOffset(Int_t ioff)
Definition: AliMCEvent.h:132
virtual ULong64_t GetTriggerMask() const
Definition: AliMCEvent.h:87
Bool_t fExternal
Definition: AliMCEvent.h:197
const AliMCEvent * GetTopEvent() const
Definition: AliMCEvent.h:169
virtual void ConnectTreeK(TTree *tree)
Definition: AliMCEvent.cxx:121
TFile * fTmpFileTR
Definition: AliMCEvent.h:191
TClonesArray * fTRBuffer
Definition: AliMCEvent.h:187
virtual void ConnectTreeTR(TTree *tree)
Definition: AliMCEvent.cxx:169
TList * fSubsidiaryEvents
Definition: AliMCEvent.h:194
virtual AliVZDC * GetZDCData() const
Definition: AliMCEvent.h:160
virtual Bool_t IsFromBGEvent(Int_t index)
Definition: AliMCEvent.cxx:892
virtual Int_t EventIndexForCaloCluster(Int_t) const
Definition: AliMCEvent.h:153
AliMCEvent & operator=(const AliMCEvent &mcEvnt)
Definition: AliMCEvent.cxx:100
virtual void ConnectHeaderAndStack(AliHeader *header)
Definition: AliMCEvent.cxx:133
TClonesArray * fMCParticles
Definition: AliMCEvent.h:183
virtual UInt_t GetEventType() const
Definition: AliMCEvent.h:85
virtual void AddObject(TObject *)
Definition: AliMCEvent.h:48
virtual Int_t BgLabelToIndex(Int_t label)
Definition: AliMCEvent.cxx:766
AliStack * fStack
Definition: AliMCEvent.h:182
virtual UInt_t GetPeriodNumber() const
Definition: AliMCEvent.h:72
virtual Double_t GetZDCN1Energy() const
Definition: AliMCEvent.h:90
virtual Int_t GetRunNumber() const
Definition: AliMCEvent.h:71
virtual void ConnectTreeE(TTree *tree)
Definition: AliMCEvent.cxx:115
TTree * fTmpTreeTR
Definition: AliMCEvent.h:190
virtual void GetStdContent()
Definition: AliMCEvent.h:52
virtual AliVEvent::EDataLayoutType GetDataLayoutType() const
TList * GetCocktailList()
Definition: AliMCEvent.cxx:910
virtual Int_t GetNumberOfV0s() const
Definition: AliMCEvent.h:99
Int_t fNBG
Definition: AliMCEvent.h:201
virtual void SetTriggerMask(ULong64_t)
Definition: AliMCEvent.h:79
virtual Int_t EventIndex(Int_t) const
Definition: AliMCEvent.h:152
virtual Int_t GetParticleAndTR(Int_t i, TParticle *&particle, TClonesArray *&trefs)
Definition: AliMCEvent.cxx:188
virtual Int_t EventIndexForEMCALCell(Int_t) const
Definition: AliMCEvent.h:155
virtual void Reset()
Definition: AliMCEvent.h:59
virtual Int_t FindIndexAndEvent(Int_t oldidx, AliMCEvent *&event) const
Definition: AliMCEvent.cxx:730
virtual void WriteToTree(TTree *) const
Definition: AliMCEvent.h:54
TTree * tree
virtual void SetBunchCrossNumber(UShort_t)
Definition: AliMCEvent.h:77
Int_t GetPrimary(Int_t id)
virtual void AssignGeneratorIndex()
Definition: AliMCEvent.cxx:950
virtual Double_t GetZDCP2Energy() const
Definition: AliMCEvent.h:93
static Int_t fgkBgLabelOffset
Top MCEvent (if not embedded, then itself)
Definition: AliMCEvent.h:199
virtual void SetEventType(UInt_t)
Definition: AliMCEvent.h:78
AliVHeader * fAODMCHeader
Definition: AliMCEvent.h:186
AliStack * Stack()
Definition: AliMCEvent.h:114
virtual UInt_t GetOrbitNumber() const
Definition: AliMCEvent.h:82
virtual AliVParticle * GetTrack(Int_t i) const
Definition: AliMCEvent.cxx:538
static Int_t BgLabelOffset()
Definition: AliMCEvent.h:138
virtual void SetTriggerCluster(UChar_t)
Definition: AliMCEvent.h:80
Int_t fNparticles
Definition: AliMCEvent.h:193
TTree * fTreeTR
Definition: AliMCEvent.h:189
virtual void Clean()
Definition: AliMCEvent.cxx:228
TParticle * ParticleFromStack(Int_t i) const
Definition: AliMCEvent.cxx:651
virtual void SetParticleArray(TClonesArray *mcParticles)
Bool_t GetCocktailGenerator(Int_t index, TString &nameGen)
TString GetGenerator(Int_t index)
Definition: AliMCEvent.cxx:931
virtual Double_t GetMagneticField() const
Definition: AliMCEvent.h:73
Int_t fNprimaries
Definition: AliMCEvent.h:192
virtual TString GetFiredTriggerClasses() const
Definition: AliMCEvent.h:89
virtual AliGenEventHeader * FindHeader(Int_t ipart)
Definition: AliMCEvent.cxx:697
virtual Int_t GetNumberOfTracks() const
Definition: AliMCEvent.h:98
virtual Int_t GetSecondaryOffset() const
Definition: AliMCEvent.h:130
EDataLayoutType
Definition: AliVEvent.h:46
virtual AliVVZERO * GetVZEROData() const =0
Int_t fSecondaryOffset
Definition: AliMCEvent.h:196
virtual void PreReadAll()
Definition: AliMCEvent.cxx:852
virtual UShort_t GetBunchCrossNumber() const
Definition: AliMCEvent.h:83
virtual Int_t GetPrimaryOffset() const
Definition: AliMCEvent.h:129
AliVVertex * fVertex
Definition: AliMCEvent.h:200
TClonesArray * fTrackReferences
Definition: AliMCEvent.h:188
AliEventplane * GetEventplane()
Definition: AliMCEvent.h:157
Bool_t HasSubsidiaries() const
Definition: AliMCEvent.h:166
TParticle * Particle(int i) const
Int_t Raw2MergedLabel(int lbRaw) const
virtual TList * GetList() const
Definition: AliMCEvent.h:50
virtual Int_t GetNumberOfCascades() const
Definition: AliMCEvent.h:100
virtual Int_t EventIndexForPHOSCell(Int_t) const
Definition: AliMCEvent.h:154
virtual void CreateStdContent()
Definition: AliMCEvent.h:51
virtual ~AliMCEvent()
Definition: AliMCEvent.cxx:110
virtual void ReorderAndExpandTreeTR()
Definition: AliMCEvent.cxx:318
virtual Double_t GetZDCEMEnergy(Int_t) const
Definition: AliMCEvent.h:94
TObjArray * fMCParticleMap
Definition: AliMCEvent.h:184
virtual AliVHeader * GetHeader() const
Definition: AliMCEvent.h:62
virtual void SetRunNumber(Int_t)
Definition: AliMCEvent.h:66
Bool_t IsFromSubsidiaryEvent(int id) const
Definition: AliMCEvent.cxx:525
virtual void SetStdNames()
Definition: AliMCEvent.h:56
void SetTopEvent(const AliMCEvent *ev)
Definition: AliMCEvent.h:168
virtual Bool_t IsSecondaryFromWeakDecay(Int_t index)
Definition: AliMCEvent.cxx:797
virtual void SetPrimaryOffset(Int_t ioff)
Definition: AliMCEvent.h:131
void UpdateEventInformation()
Definition: AliMCEvent.cxx:143
virtual TObject * FindListObject(const char *) const
Definition: AliMCEvent.h:49
virtual void SetMagneticField(Double_t)
Definition: AliMCEvent.h:68