]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - STEER/AliMCEvent.h
following coverity, fix for case of invalid DET string passed to GetNalignable
[u/mrichter/AliRoot.git] / STEER / AliMCEvent.h
... / ...
CommitLineData
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
27class AliCentrality;
28class AliStack;
29class AliHeader;
30class AliGenEventHeader;
31
32class TClonesArray;
33class TList;
34
35class AliMCEvent : public AliVEvent {
36
37public:
38
39 AliMCEvent();
40 virtual ~AliMCEvent() {;}
41 AliMCEvent(const AliMCEvent& mcEvnt);
42 AliMCEvent& operator=(const AliMCEvent& mcEvnt);
43 //
44 // Methods implementing the interface
45 //
46 // Services
47 virtual void AddObject(TObject* /*obj*/) {;}
48 virtual TObject* FindListObject(const char */*name*/) const {return 0;}
49 virtual TList* GetList() const {return 0;}
50 virtual void CreateStdContent() {;}
51 virtual void GetStdContent() {;}
52 virtual void ReadFromTree(TTree * /*tree*/, Option_t* /*opt*/) {;}
53 virtual void WriteToTree(TTree* /*tree*/) const {;}
54
55 virtual void SetStdNames() {;}
56 virtual void Print(Option_t */*option=""*/) const {;}
57 virtual void PreReadAll();
58 virtual void Reset() {;}
59
60 // Header
61 virtual AliVHeader* GetHeader() const {return 0;}
62
63 // Delegated methods for fESDRun or AODHeader
64
65 virtual void SetRunNumber(Int_t /*n*/) {;}
66 virtual void SetPeriodNumber(UInt_t /*n*/) {;}
67 virtual void SetMagneticField(Double_t /*mf*/) {;}
68
69
70 virtual Int_t GetRunNumber() const {return 0;}
71 virtual UInt_t GetPeriodNumber() const {return 0;}
72 virtual Double_t GetMagneticField() const {return 0.;}
73
74 // Setters not needed
75 virtual void SetOrbitNumber(UInt_t /*n*/) {;}
76 virtual void SetBunchCrossNumber(UShort_t /*n*/) {;}
77 virtual void SetEventType(UInt_t /*eventType*/) {;}
78 virtual void SetTriggerMask(ULong64_t /*n*/) {;}
79 virtual void SetTriggerCluster(UChar_t /*n*/) {;}
80
81 virtual UInt_t GetOrbitNumber() const {return 0;}
82 virtual UShort_t GetBunchCrossNumber() const {return 0;}
83
84 virtual UInt_t GetEventType() const {return 0;}
85
86 virtual ULong64_t GetTriggerMask() const {return 0;}
87 virtual UChar_t GetTriggerCluster() const {return 0;}
88 virtual Double_t GetZDCN1Energy() const {return 0.;}
89 virtual Double_t GetZDCP1Energy() const {return 0.;}
90 virtual Double_t GetZDCN2Energy() const {return 0.;}
91 virtual Double_t GetZDCP2Energy() const {return 0.;}
92 virtual Double_t GetZDCEMEnergy(Int_t /*i*/)
93 const {return 0.;}
94 // Tracks
95 virtual AliVParticle *GetTrack(Int_t i) const;
96 virtual Int_t GetNumberOfTracks() const {return fNparticles;}
97 virtual Int_t GetNumberOfV0s() const {return -1;}
98 virtual Int_t GetNumberOfCascades() const {return -1;}
99 // Vertex
100 virtual const AliVVertex *GetPrimaryVertex() const;
101
102 //
103 // MC Specific methods
104 //
105 // Getters
106 AliStack* Stack() {return fStack;}
107 AliHeader* Header() {return fHeader;}
108 AliGenEventHeader* GenEventHeader() const;
109 // Services
110 virtual void ConnectTreeE (TTree* tree);
111 virtual void ConnectTreeK (TTree* tree);
112 virtual void ConnectTreeTR(TTree* tree);
113 virtual void Clean();
114 virtual void InitEvent();
115 virtual void FinishEvent();
116 virtual Int_t GetParticleAndTR(Int_t i, TParticle*& particle, TClonesArray*& trefs);
117 virtual void DrawCheck(Int_t i, Int_t search);
118 virtual void AddSubsidiaryEvent(AliMCEvent* event);
119 virtual Int_t GetNumberOfPrimaries() {return fNprimaries;}
120 virtual Int_t GetPrimaryOffset() const {return fPrimaryOffset;}
121 virtual Int_t GetSecondaryOffset() const {return fSecondaryOffset;}
122 virtual void SetPrimaryOffset(Int_t ioff) {fPrimaryOffset = ioff;}
123 virtual void SetSecondaryOffset(Int_t ioff) {fSecondaryOffset = ioff;}
124 virtual Bool_t IsPhysicalPrimary(Int_t i);
125 virtual Int_t BgLabelToIndex(Int_t label);
126 static Int_t BgLabelOffset() {return fgkBgLabelOffset;}
127 // External particle array
128 virtual void SetParticleArray(TClonesArray* mcParticles)
129 {fMCParticles = mcParticles; fNparticles = fMCParticles->GetEntries(); fExternal = kTRUE;}
130
131 //Following needed only for mixed event
132 virtual Int_t EventIndex(Int_t) const {return 0;}
133 virtual Int_t EventIndexForCaloCluster(Int_t) const {return 0;}
134 virtual Int_t EventIndexForPHOSCell(Int_t) const {return 0;}
135 virtual Int_t EventIndexForEMCALCell(Int_t) const {return 0;}
136 AliCentrality* GetCentrality() {return 0;}
137private:
138 virtual void ReorderAndExpandTreeTR();
139 virtual Int_t FindIndexAndEvent(Int_t oldidx, AliMCEvent*& event) const;
140
141private:
142 // Stanndard implementation for ESD production
143 AliStack *fStack; // Current pointer to stack
144 TClonesArray *fMCParticles; // Pointer to list of particles
145 TRefArray *fMCParticleMap; // Map of MC Particles
146 AliHeader *fHeader; // Current pointer to header
147 TClonesArray *fTRBuffer; // Track reference buffer
148 TClonesArray *fTrackReferences; // Array of track references
149 TTree *fTreeTR; // Pointer to Track Reference Tree
150 TTree *fTmpTreeTR; // Temporary tree TR to read old format
151 TFile *fTmpFileTR; // Temporary file with TreeTR to read old format
152 Int_t fNprimaries; // Number of primaries
153 Int_t fNparticles; // Number of particles
154 TList *fSubsidiaryEvents; // List of possible subsidiary events (for example merged underlying event)
155 Int_t fPrimaryOffset; // Offset for primaries
156 Int_t fSecondaryOffset; // Offset for secondaries
157 Bool_t fExternal; // True if external particle array
158 static Int_t fgkBgLabelOffset; // Standard branch name
159 mutable AliVVertex* fVertex; // MC Vertex
160 ClassDef(AliMCEvent, 1) // AliVEvent realisation for MC data
161};
162
163
164#endif
165