]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/correlationHF/AliHFAssociatedTrackCuts.h
Fix for Coverity defect 21499
[u/mrichter/AliRoot.git] / PWGHF / correlationHF / AliHFAssociatedTrackCuts.h
CommitLineData
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
38class AliAODTrack;\r
39class AliAODEvent;\r
40\r
41\r
42//\r
43class 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
170private:\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