]>
Commit | Line | Data |
---|---|---|
e9b1e63f | 1 | #ifndef AliHFAssociatedTrackCuts_H\r |
2 | #define AliHFAssociatedTrackCuts_H\r | |
3 | /**************************************************************************\r | |
4 | * Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *\r | |
5 | * *\r | |
6 | * Author: The ALICE Off-line Project. *\r | |
7 | * Contributors are mentioned in the code where appropriate. *\r | |
8 | * *\r | |
9 | * Permission to use, copy, modify and distribute this software and its *\r | |
10 | * documentation strictly for non-commercial purposes is hereby granted *\r | |
11 | * without fee, provided that the above copyright notice appears in all *\r | |
12 | * copies and that both the copyright notice and this permission notice *\r | |
13 | * appear in the supporting documentation. The authors make no claims *\r | |
14 | * about the suitability of this software for any purpose. It is *\r | |
15 | * provided "as is" without express or implied warranty. *\r | |
16 | **************************************************************************/\r | |
17 | \r | |
18 | /* $Id$ */\r | |
19 | \r | |
20 | ////////////////////////////////////////////////////////////////////////\r | |
21 | //\r | |
22 | // Base class for cuts on Associated tracks for HF Correlation analysis\r | |
23 | //\r | |
24 | // Author: S.Bjelogrlic (Utrecht) sandro.bjelogrlic@cern.ch\r | |
25 | ////////////////////////////////////////////////////////////////////////\r | |
26 | \r | |
27 | #include <TString.h>\r | |
28 | #include "AliAnalysisCuts.h"\r | |
29 | #include "AliESDtrackCuts.h"\r | |
30 | #include "AliESDVertex.h"\r | |
31 | #include "AliAODPidHF.h"\r | |
32 | #include "AliAODEvent.h"\r | |
33 | #include "AliAODRecoDecayHF2Prong.h"\r | |
34 | #include <TClonesArray.h>\r | |
35 | #include <TH3D.h>\r | |
36 | \r | |
37 | \r | |
38 | class AliAODTrack;\r | |
39 | class AliAODEvent;\r | |
40 | \r | |
41 | \r | |
42 | //\r | |
43 | class AliHFAssociatedTrackCuts : public AliAnalysisCuts\r | |
44 | {\r | |
45 | public: \r | |
46 | AliHFAssociatedTrackCuts();\r | |
47 | AliHFAssociatedTrackCuts(const char* name, const char* title);\r | |
48 | \r | |
49 | \r | |
50 | AliHFAssociatedTrackCuts(const AliHFAssociatedTrackCuts& source);\r | |
51 | AliHFAssociatedTrackCuts& operator=(const AliHFAssociatedTrackCuts& source);\r | |
52 | \r | |
53 | virtual ~AliHFAssociatedTrackCuts(); // destructor\r | |
54 | Bool_t IsSelected(TList* list) {if(list) return kTRUE; return kFALSE;};\r | |
55 | Bool_t IsSelected(TObject* obj) {if(obj) return kTRUE; return kFALSE;};\r | |
56 | Bool_t IsInAcceptance();\r | |
3a20e523 | 57 | Bool_t IsHadronSelected(AliAODTrack * track,const AliESDVertex *primary=0x0, Double_t magfield=0);\r |
e9b1e63f | 58 | Bool_t CheckHadronKinematic(Double_t pt, Double_t d0); \r |
59 | Bool_t Charge(Short_t charge, AliAODTrack* track);\r | |
60 | Bool_t CheckKaonCompatibility(AliAODTrack * track, Bool_t useMc, TClonesArray* mcArray, Int_t method=1);\r | |
61 | Bool_t IsKZeroSelected(AliAODv0 *vzero, AliAODVertex *vtx1);\r | |
62 | Bool_t *IsMCpartFromHF(Int_t label, TClonesArray*mcArray);\r | |
63 | Bool_t InvMassDstarRejection(AliAODRecoDecayHF2Prong* d, AliAODTrack *track, Int_t hypD0) const;\r | |
64 | void SetPidAssociated(); \r | |
65 | \r | |
66 | // getters\r | |
67 | AliESDtrackCuts * GetESDTrackCuts() const {return fESDTrackCuts;}\r | |
68 | AliAODPidHF * GetPIDObject() const {return fPidObj;}\r | |
69 | TH3D * GetEfficiencyWeight() const {return fEffWeights;}\r | |
70 | \r | |
71 | Int_t GetMaxNEventsInPool() const {return fPoolMaxNEvents;}\r | |
72 | Int_t GetMinNTracksInPool() const {return fPoolMinNTracks;}\r | |
73 | Int_t GetMinEventsToMix() const {return fMinEventsToMix;}\r | |
74 | Int_t GetNZvtxPoolBins() const {return fNzVtxBins;}\r | |
75 | Double_t *GetZvtxPoolBins() const {return fZvtxBins;}\r | |
76 | Int_t GetNCentPoolBins() const {return fNCentBins;}\r | |
77 | Double_t *GetCentPoolBins() const {return fCentBins;}\r | |
78 | \r | |
79 | Int_t GetNofMCEventType() const {return fNofMCEventType;}\r | |
80 | Int_t *GetMCEventType() const {return fMCEventType;}\r | |
dbbea648 | 81 | Int_t GetPoolBin(Double_t multorcent, Double_t zVtx) const;\r |
e9b1e63f | 82 | \r |
83 | Int_t GetNTrackCuts() const {return fNTrackCuts;}\r | |
84 | Float_t* GetAODTrackCuts() const {return fAODTrackCuts;}\r | |
85 | TString * GetTrackCutNames() const {return fTrackCutsNames;}\r | |
86 | Int_t GetNvZeroCuts() const {return fNvZeroCuts;}\r | |
87 | Float_t * GetAODvZeroCuts() const {return fAODvZeroCuts;}\r | |
88 | TString * GetvZeroCutNames() const {return fvZeroCutsNames;}\r | |
89 | Int_t GetFilterBit() const {return fBit;}\r | |
90 | Short_t GetCharge() const {return fCharge;}\r | |
91 | TString GetDescription() const {return fDescription;}\r | |
92 | \r | |
93 | \r | |
94 | \r | |
95 | \r | |
96 | \r | |
97 | void AddTrackCuts(const AliESDtrackCuts *cuts) {\r | |
98 | delete fESDTrackCuts; \r | |
99 | fESDTrackCuts=new AliESDtrackCuts(*cuts); \r | |
100 | return;\r | |
101 | }\r | |
102 | \r | |
103 | void AddDescription(TString description){fDescription=description;}\r | |
104 | \r | |
105 | //setters\r | |
106 | //event pool settings\r | |
107 | void SetMaxNEventsInPool(Int_t events){fPoolMaxNEvents=events;}\r | |
108 | void SetMinNTracksInPool(Int_t tracks){fPoolMinNTracks=tracks;}\r | |
109 | void SetMinEventsToMix(Int_t events){fMinEventsToMix=events;}\r | |
110 | \r | |
111 | void SetNofPoolBins(Int_t Nzvtxbins, Int_t Ncentbins){\r | |
112 | fNzVtxBins=Nzvtxbins;\r | |
113 | fNzVtxBinsDim=Nzvtxbins+1;\r | |
114 | \r | |
115 | fNCentBins=Ncentbins;\r | |
116 | fNCentBinsDim=Ncentbins+1;\r | |
117 | }\r | |
118 | \r | |
119 | void SetPoolBins(Double_t *ZvtxBins, Double_t* CentBins){\r | |
120 | fZvtxBins=ZvtxBins; \r | |
121 | fCentBins=CentBins;\r | |
122 | }\r | |
123 | \r | |
124 | // set MC events to process\r | |
125 | \r | |
126 | void SetNofMCEventTypes(Int_t k) {fNofMCEventType=k;}\r | |
127 | void SetMCEventTypes(Int_t *MCEventTypeArray);\r | |
128 | \r | |
129 | //cut settings\r | |
130 | void SetAODTrackCuts(Float_t *cutsarray);\r | |
131 | void SetTrackCutsNames(/*TString *namearray*/);\r | |
132 | void SetAODvZeroCuts(Float_t *cutsarray);\r | |
133 | void SetvZeroCutsNames(/*TString *namearray*/);\r | |
134 | void SetPidHF(AliAODPidHF* pid) {fPidObj = pid; return;}\r | |
135 | void SetCharge(Short_t charge) {fCharge = charge;}\r | |
136 | void SetFilterBit(Int_t bit) {fBit = bit;}\r | |
137 | void SetEfficiencyWeightMap(TH3D *hMap){if(fEffWeights)delete fEffWeights;fEffWeights=(TH3D*)hMap->Clone();}\r | |
138 | \r | |
139 | void SetTriggerEffWeightMapvspt(TH1D* hTrigMap) {if(fTrigEffWeightsvspt) delete fTrigEffWeightsvspt; fTrigEffWeightsvspt=(TH1D*)hTrigMap->Clone();}\r | |
140 | void SetTriggerEffWeightMapvsptB(TH1D* hTrigMapB) {if(fTrigEffWeightsvsptB) delete fTrigEffWeightsvsptB; fTrigEffWeightsvsptB=(TH1D*)hTrigMapB->Clone();}\r | |
141 | \r | |
142 | void SetTriggerEffWeightMap(TH2D* hTrigMap) {if(fTrigEffWeights) delete fTrigEffWeights; fTrigEffWeights=(TH2D*)hTrigMap->Clone();}\r | |
143 | void SetTriggerEffWeightMapB(TH2D* hTrigMapB) {if(fTrigEffWeightsB) delete fTrigEffWeightsB; fTrigEffWeightsB=(TH2D*)hTrigMapB->Clone();}\r | |
144 | \r | |
145 | \r | |
146 | Double_t GetTrackWeight(Double_t pt, Double_t eta,Double_t zvtx);\r | |
147 | Double_t GetTrigWeight(Double_t pt, Double_t mult=0);\r | |
148 | Double_t GetTrigWeightB(Double_t pt, Double_t mult=0);\r | |
149 | \r | |
150 | Bool_t IsTrackEffMap(){if(fEffWeights) return kTRUE; else return kFALSE;}\r | |
151 | Bool_t IsTrigEffMap1D(){ if(fTrigEffWeightsvspt) return kTRUE; else return kFALSE;}\r | |
152 | Bool_t IsTrigEffMap1DB(){ if(fTrigEffWeightsvsptB) return kTRUE; else return kFALSE;}\r | |
153 | Bool_t IsTrigEffMap2D(){ if(fTrigEffWeights) return kTRUE; else return kFALSE;}\r | |
154 | Bool_t IsTrigEffMap2DB(){ if(fTrigEffWeightsB) return kTRUE; else return kFALSE;}\r | |
155 | \r | |
156 | \r | |
157 | void Print(Option_t *option) const;\r | |
158 | virtual void PrintAll() const;\r | |
159 | virtual void PrintPoolParameters() const;\r | |
160 | virtual void PrintSelectedMCevents() const;\r | |
161 | \r | |
162 | \r | |
163 | \r | |
164 | \r | |
165 | void SetNVarsTrack(Int_t nVars){fNTrackCuts=nVars;}\r | |
166 | void SetNVarsVzero(Int_t nVars){fNvZeroCuts=nVars;}\r | |
167 | \r | |
168 | \r | |
169 | \r | |
170 | private:\r | |
171 | AliESDtrackCuts *fESDTrackCuts; // track cut object\r | |
172 | AliAODPidHF * fPidObj; /// PID object\r | |
173 | TH3D *fEffWeights; // weight map (pt,eta,zvtx) to account for single track efficiency\r | |
174 | TH1D *fTrigEffWeightsvspt; // weight map (pt,mult) to account for trigger efficiency (on data, from c)\r | |
175 | TH1D *fTrigEffWeightsvsptB; // weight map (pt,mult) to account for trigger efficiency (from b)\r | |
176 | TH2D *fTrigEffWeights; // weight map (pt,mult) to account for trigger efficiency (on data, from c)\r | |
177 | TH2D *fTrigEffWeightsB; // weight map (pt,mult) to account for trigger efficiency (from b)\r | |
178 | Int_t fPoolMaxNEvents; // set maximum number of events in the pool\r | |
179 | Int_t fPoolMinNTracks; // se minimum number of tracks in the pool\r | |
180 | Int_t fMinEventsToMix; // set the minimum number of events you wanna mix\r | |
181 | \r | |
182 | Int_t fNzVtxBins; // number of z vrtx bins\r | |
183 | Int_t fNzVtxBinsDim; // number of z vrtx bins +1 : necessary to initialize correctly the array\r | |
184 | Double_t* fZvtxBins; // [fNzVtxBinsDim]\r | |
185 | \r | |
186 | \r | |
187 | Int_t fNCentBins; //number of centrality bins\r | |
188 | Int_t fNCentBinsDim; //number of centrality bins bins +1 : necessary to initialize correctly the array\r | |
189 | Double_t* fCentBins; // [fNCentBinsDim]\r | |
190 | \r | |
191 | Int_t fNofMCEventType;// number of event types to be selected in MC simultaneously;\r | |
192 | Int_t *fMCEventType;//[fNofMCEventType]\r | |
193 | \r | |
194 | Int_t fNTrackCuts; // array dimension\r | |
195 | Float_t* fAODTrackCuts;//[fNTrackCuts]\r | |
196 | TString * fTrackCutsNames;//[fNTrackCuts]\r | |
197 | Int_t fNvZeroCuts;// array dimension\r | |
198 | Float_t *fAODvZeroCuts;//[fNvZeroCuts]\r | |
199 | TString * fvZeroCutsNames;//[fNvZeroCuts]\r | |
200 | Int_t fBit; // filterBit\r | |
201 | Short_t fCharge; // charge (+1 or -1)\r | |
202 | TString fDescription; // additional description to the cuts\r | |
203 | \r | |
204 | \r | |
205 | ClassDef(AliHFAssociatedTrackCuts,6);\r | |
206 | };\r | |
207 | \r | |
208 | \r | |
209 | #endif\r |