]>
Commit | Line | Data |
---|---|---|
4e566f2f | 1 | ////////////////////////////////////////////////////////////////////// |
2 | // | |
3 | // $Id$ | |
4 | // | |
5 | // Author: Emanuele Simili | |
6 | // | |
7 | ////////////////////////////////////////////////////////////////////// | |
8 | // | |
9 | // Description: parser class from KineTree (pure MC simulation) to | |
da5aa0a0 | 10 | // AliFlowEvent . It does not use the AliRunLoades, but simply |
11 | // gets the KineTree as an imput (a macro mast provide them). | |
4e566f2f | 12 | // |
13 | ////////////////////////////////////////////////////////////////////// | |
14 | ||
15 | #ifndef ALIFLOWKINEMAKER_H | |
16 | #define ALIFLOWKINEMAKER_H | |
17 | ||
18 | class AliFlowEvent ; | |
19 | class AliFlowTrack ; | |
20 | class AliFlowV0 ; | |
21 | class TClonesArray ; | |
22 | ||
23 | class TParticle ; | |
24 | class TParticlePDG ; | |
25 | class TTree ; | |
26 | //class AliRun ; | |
27 | //class AliRunLoader ; | |
28 | //class AliStack ; | |
29 | ||
30 | class AliFlowKineMaker { | |
31 | ||
32 | public: | |
33 | ||
34 | AliFlowKineMaker(); | |
35 | virtual ~AliFlowKineMaker(); | |
36 | ||
37 | // FLOW SPECIFIC METHODS (to fill the flowEvents) | |
38 | AliFlowEvent* FillFlowEvent(TTree* fKTree) ; // fills up evt quantities | |
39 | AliFlowTrack* FillFlowTrack(TParticle* fParticle) ; // fills up track quantities ; | |
40 | AliFlowV0* FillFlowV0(TParticle* fParticle) ; // fills up v0 quantities ; | |
41 | ||
42 | // USEFULL METHODS | |
43 | Double_t Norm(Double_t nu[3]) ; // norm of a non-vector 3 array | |
44 | Double_t Phi(Double_t nu[3]) ; // phi of a non-vector 3 array | |
45 | Double_t Pt(Double_t nu[3]) ; // pt of a non-vector 3 array | |
46 | Double_t Eta(Double_t nu[3]) ; // eta of a non-vector 3 array | |
47 | ||
48 | // Cut METHODS | |
49 | Bool_t CheckTrack(TParticle* fParticle) const ; // checks the particle (applies particle cuts, returns the particle charge) | |
50 | Bool_t CheckEvent(TTree* fKTree) const ; // checks the KineTree (dummy) | |
51 | void PrintCutList() ; // prints the list of cuts | |
52 | ||
53 | void SetAbsEtaCut(Float_t aEta) { fAbsEta = aEta ; } // exclude tracks with eta > aEta | |
54 | void SetECut(Float_t eLow, Float_t eUp) { fElow = eLow ; fEup = eUp ; } // exclude tracks below and above .. GeV | |
55 | void SetLabelCut(Int_t labLo, Int_t labHi) { fLabel[0] = labLo ; fLabel[1] = labHi ; } // exclude tracks outside label interval | |
56 | void SetPrimaryCut(Bool_t prim = kTRUE) { fPrimary = prim ; } // exclude secundaries | |
57 | ||
58 | // Get METHODS | |
59 | Int_t GetNgoodTracks() const { return fGoodTracks ; } | |
60 | Int_t GetNgoodV0s() const { return fGoodV0s ; } | |
61 | Int_t GetNgoodTracksEta() const { return fGoodTracksEta ; } | |
62 | Int_t GetNposiTracks() const { return fPosiTracks ; } | |
63 | Int_t GetNnegaTracks() const { return fNegaTracks ; } | |
64 | Int_t GetNunconstrained() const { return fUnconstrained ; } | |
65 | Int_t GetBayesian(Int_t i = 2) const { return fBayesianAll[i] ; } | |
66 | Float_t GetBayesianNorm(Int_t i = 2) const { return (Float_t)fBayesianAll[i] / (Float_t)fSumAll ; } | |
67 | ||
68 | ||
69 | protected: | |
70 | ||
71 | // enumerators | |
72 | Int_t fEventNumber ; //! progressive enumeration of KineTree events | |
73 | Int_t fPartNumber ; //! progressive enumeration of TParticle | |
74 | ||
75 | Int_t fGoodTracks ; //! enumerator for good tracks | |
76 | Int_t fGoodV0s ; //! enumerator for good v0s | |
77 | Int_t fGoodTracksEta ; //! enumerator for good tracks in the good eta range (-0.9..0.9) | |
78 | Int_t fPosiTracks ; //! enumerator for positive tracks | |
79 | Int_t fNegaTracks ; //! enumerator for negative tracks | |
80 | Int_t fUnconstrained ; //! enumerator for tracks not constrainable | |
81 | Int_t fBayesianAll[6] ; //! final particles abundance -> AliFlowEvent (see Bayesian P.Id.) | |
82 | Int_t fSumAll ; //! total particles abundance (all kind) | |
83 | ||
84 | Int_t fCutEvts ; //! total enumerator for discarded events | |
85 | Int_t fCutParts ; //! total enumerator for discarded particles | |
86 | ||
87 | // Flags | |
88 | Bool_t fNewAli ; //! enables the new features (since AliRoot 12/2006) | |
89 | Bool_t fLoopParts ; //! flag to loop over tracks | |
90 | ||
91 | Int_t fCounter ; //! number of processed events | |
92 | ||
93 | ||
94 | private: | |
95 | ||
96 | // to make the code checker happy | |
97 | AliFlowKineMaker(const AliFlowKineMaker &flowMak) ; // Copy Constructor (dummy) | |
98 | AliFlowKineMaker &operator=(const AliFlowKineMaker &flowMak) ; // Assignment Operator (dummy) | |
99 | ||
100 | // KineTree stuff | |
101 | TTree* fKTree ; //! KineTree | |
102 | TParticle* fParticle ; //! TParticle (momentum, decay, etc.) | |
103 | TParticlePDG* fParticlePDG ; //! TParticlePDG (type, charge, etc.) | |
104 | Int_t fCharge ; //! charge of the TParticlePDG | |
105 | Float_t fVertex[3] ; //! primary vertex | |
106 | // AliStack* fStack ; //! particle stack | |
107 | // AliRunLoader* fRunLoader ; //! AliRunLoader | |
108 | // AliRun* gAlice ; //! pointer to the AliRun (gAlice) | |
109 | ||
110 | Int_t fRunID; //! last run ID | |
111 | Int_t fNumberOfEvents ; //! total number of KineTree events in file | |
112 | Int_t fNumberOfParticles ; //! total number of TParticles in the current event | |
113 | Float_t fMagField ; //! magnetic field from the ESD | |
114 | ||
115 | // Flow | |
116 | AliFlowEvent* fFlowEvent ; //! pointer to flow event | |
117 | AliFlowTrack* fFlowTrack; //! pointer to flow track | |
118 | AliFlowV0* fFlowV0; //! pointer to flow V0 | |
119 | ||
120 | // Tracks cuts | |
121 | Float_t fAbsEta; // exclude tracks with |eta| bigger than | |
122 | Float_t fElow ; // exclude tracks below .. GeV (~total Momentum) | |
123 | Float_t fEup ; // exclude tracks above .. GeV (~total Momentum) | |
124 | Int_t fLabel[2] ; // exclude tracks outside label interval | |
125 | Bool_t fPrimary ; // exclude secundary tracks | |
126 | ||
127 | ClassDef(AliFlowKineMaker,1); | |
128 | }; | |
129 | ||
130 | #endif | |
131 |