]>
Commit | Line | Data |
---|---|---|
1c5acb87 | 1 | #ifndef ALICALOTRACKMCREADER_H |
2 | #define ALICALOTRACKMCREADER_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | /* $Id: $ */ | |
6 | ||
7 | //_________________________________________________________________________ | |
29b2ceec | 8 | // Class for reading data (Kinematics) in order to do prompt gamma |
9 | // or other particle correlations | |
10 | // Separates generated particles into charged (CTS) | |
11 | // and neutral (PHOS or EMCAL acceptance) | |
1c5acb87 | 12 | // |
29b2ceec | 13 | //*-- Author: Gustavo Conesa (LNF-INFN) |
14 | ////////////////////////////////////////////////////////////////////////////// | |
1c5acb87 | 15 | |
16 | //-- Author: Gustavo Conesa (INFN-LNF) | |
17 | ||
18 | // --- ROOT system --- | |
477d6cee | 19 | class TArrayI ; |
20 | class TParticle ; | |
1c5acb87 | 21 | |
22 | // --- AliRoot system --- | |
23 | #include "AliCaloTrackReader.h" | |
0ae57829 | 24 | class AliVCluster ; |
1c5acb87 | 25 | class AliAODTrack ; |
477d6cee | 26 | class AliAODEvent ; |
27 | class AliMCEvent ; | |
28 | class AliVEvent ; | |
1c5acb87 | 29 | |
30 | class AliCaloTrackMCReader : public AliCaloTrackReader { | |
31 | ||
32 | public: | |
1c5acb87 | 33 | AliCaloTrackMCReader() ; // ctor |
1c5acb87 | 34 | virtual ~AliCaloTrackMCReader() ;//virtual dtor |
78219bac | 35 | private : |
36 | AliCaloTrackMCReader(const AliCaloTrackMCReader & g) ; // cpy ctor | |
03190ad7 | 37 | AliCaloTrackMCReader & operator = (const AliCaloTrackMCReader & g) ;//cpy assignment |
38 | ||
39 | public: | |
1c5acb87 | 40 | void InitParameters(); |
41 | ||
42 | void Print(const Option_t * opt) const; | |
43 | ||
44 | void SwitchOnPi0Decay() { fDecayPi0 = kTRUE ; } | |
45 | void SwitchOffPi0Decay() { fDecayPi0 = kFALSE ; } | |
46 | Int_t IsPi0DecaySwitchedOn() const { return fDecayPi0 ; } | |
47 | ||
1c5acb87 | 48 | void AddNeutralParticlesArray(TArrayI & array) |
49 | { fNeutralParticlesArray = new TArrayI(array) ; } | |
50 | TArrayI * GetNeutralParticlesArray() const {return fNeutralParticlesArray;} | |
51 | Bool_t SkipNeutralParticles(Int_t pdg) const ; | |
52 | ||
53 | void AddChargedParticlesArray(TArrayI & array) | |
54 | { fChargedParticlesArray = new TArrayI(array) ; } | |
55 | TArrayI * GetChargedParticlesArray() const {return fChargedParticlesArray;} | |
56 | Bool_t KeepChargedParticles(Int_t pdg) const ; | |
57 | ||
58 | void AddStatusArray(TArrayI & array) | |
59 | { fStatusArray = new TArrayI(array) ; } | |
60 | TArrayI * GetStatusArray() const {return fStatusArray;} | |
61 | ||
62 | void SwitchOnStatusSelection() {fKeepAllStatus = kFALSE;} | |
63 | void SwitchOffStatusSelection() {fKeepAllStatus = kTRUE;} | |
64 | Bool_t KeepParticleWithStatus(Int_t status) const ; | |
65 | ||
66 | void GetVertex(Double_t v[3]) const ; | |
67 | ||
29b2ceec | 68 | Bool_t FillInputEvent(const Int_t iEntry, const char * currentFileName) ; |
477d6cee | 69 | AliVEvent* GetInputEvent() const {return (AliVEvent *) GetMC();} |
70 | void SetInputOutputMCEvent(AliVEvent* esd, AliAODEvent* aod, AliMCEvent* mc) ; | |
1c5acb87 | 71 | |
0ae57829 | 72 | void SetCaloClusterPID(const Int_t pdgCode, AliVCluster *calo) const ; |
1c5acb87 | 73 | void SetTrackChargeAndPID(const Int_t pdgCode, AliAODTrack *track) const ; |
74 | ||
691bdd02 | 75 | void SwitchOnOverlapCheck() {fCheckOverlap = kTRUE;} |
76 | void SwitchOffOverlapCheck() {fCheckOverlap = kFALSE;} | |
77 | ||
78 | Float_t GetEMCALOverlapAngle() const {return fEMCALOverlapAngle ;} | |
79 | Float_t GetPHOSOverlapAngle() const {return fPHOSOverlapAngle ;} | |
80 | void SetEMCALOverlapAngle(Float_t angle) {fEMCALOverlapAngle = angle;} | |
81 | void SetPHOSOverlapAngle(Float_t angle) {fPHOSOverlapAngle = angle;} | |
82 | ||
1c5acb87 | 83 | private: |
84 | ||
691bdd02 | 85 | void CheckOverlap(const Float_t anglethres, const Int_t imom, Int_t & iPrimary, Int_t & index, TLorentzVector & mom, Int_t & pdg); |
1c5acb87 | 86 | void MakePi0Decay(TLorentzVector &p0, TLorentzVector &p1, TLorentzVector &p2) const ;//, Double_t &angle); |
0ae57829 | 87 | void FillCalorimeters(Int_t & iParticle, TParticle* particle, TLorentzVector momentum) ; |
1c5acb87 | 88 | |
89 | private: | |
477d6cee | 90 | Bool_t fDecayPi0 ; // If not decayed, decay pi0 by hand |
91 | TArrayI * fNeutralParticlesArray ; // Do not keep neutral particles of this list in calorimeter. | |
92 | TArrayI * fChargedParticlesArray ; // Keep charged particles of this list in calorimeter. | |
93 | TArrayI * fStatusArray ; // Keep particles with status of the list. | |
94 | Bool_t fKeepAllStatus ; // Do or do not select particles depending on their status code. | |
95 | Bool_t fCheckOverlap; // Check of overlapped photons from pi0 enter the calorimeter | |
96 | Float_t fEMCALOverlapAngle; // Aperture angle of photons from decay that is not resolved by EMCAL, in radians | |
97 | Float_t fPHOSOverlapAngle; // Aperture angle of photons from decay that is not resolved by PHOS, in radians | |
98 | Int_t fIndex2ndPhoton; // Check overlap of first decay photon already done, internal use. | |
691bdd02 | 99 | |
477d6cee | 100 | ClassDef(AliCaloTrackMCReader,3) |
101 | } ; | |
1c5acb87 | 102 | |
103 | ||
104 | #endif //ALICALOTRACKMCREADER_H | |
105 | ||
106 | ||
107 |