]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/GammaConv/AliConversionCuts.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / AliConversionCuts.h
CommitLineData
3b77b2d1 1#ifndef ALICONVERSIONCUTS_H
2#define ALICONVERSIONCUTS_H
3
4// Class handling all kinds of selection cuts for Gamma Conversion analysis
fcc79cf5 5// Authors: Svein Lindal, Daniel Lohner *
3b77b2d1 6
7#include "AliAODpidUtil.h"
8#include "AliConversionPhotonBase.h"
9#include "AliAODConversionMother.h"
10#include "AliAODTrack.h"
11#include "AliESDtrack.h"
12#include "AliVTrack.h"
13#include "AliAODTrack.h"
14#include "AliStack.h"
15#include "AliAnalysisCuts.h"
d008165e 16#include "TH1F.h"
aff90284 17#include "TF1.h"
0a2b2b4b 18#include "AliAnalysisUtils.h"
11c1e680 19#include "AliAnalysisManager.h"
3b77b2d1 20
21class AliESDEvent;
22class AliAODEvent;
23class AliConversionPhotonBase;
24class AliKFVertex;
25class TH1F;
26class TH2F;
aff90284 27class TF1;
3b77b2d1 28class AliPIDResponse;
29class AliAnalysisCuts;
30class iostream;
31class TList;
32class AliAnalysisManager;
ae947965 33class AliAODMCParticle;
3b77b2d1 34
3b77b2d1 35using namespace std;
36
37class AliConversionCuts : public AliAnalysisCuts {
ae4f2cfb 38
39 public:
40
41
42 enum cutIds {
43 kisHeavyIon,
44 kCentralityMin,
45 kCentralityMax,
46 kselectV0AND,
47 kmultiplicityMethod,
48 kremovePileUp,
49 kExtraSignals,
50 kv0FinderType,
51 ketaCut,
52 kRCut,
53 ksinglePtCut,
54 kclsTPCCut,
55 kededxSigmaCut,
56 kpidedxSigmaCut,
57 kpiMomdedxSigmaCut,
58 kpiMaxMomdedxSigmaCut,
59 kLowPRejectionSigmaCut,
60 kTOFelectronPID,
61 kQtMaxCut,
62 kchi2GammaCut,
63 kPsiPair,
64 kdoPhotonAsymmetryCut,
65 kCosPAngle,
66 kElecShare,
67 kToCloseV0s,
68 kDcaRPrimVtx,
69 kDcaZPrimVtx,
70 kInPlaneOutOfPlane,
71 kNCuts
72 };
73
74 enum photonCuts {
75 kPhotonIn=0,
76 kOnFly,
77 kNoTracks,
78 kTrackCuts,
79 kdEdxCuts,
80 kConvPointFail,
81 kPhotonCuts,
82 kEventPlane,
83 kPhotonOut
84 };
85
86
87 Bool_t SetCutIds(TString cutString);
88 Int_t fCuts[kNCuts];
89 Bool_t SetCut(cutIds cutID, Int_t cut);
90 Bool_t UpdateCutString();
91
92
93 static const char * fgkCutNames[kNCuts];
94
95 Double_t GetCosineOfPointingAngle(const AliConversionPhotonBase * photon, AliVEvent * event) const;
96
97
98 Bool_t InitializeCutsFromCutString(const TString analysisCutSelection);
99 void SelectCollisionCandidates(UInt_t offlineTriggerMask = AliVEvent::kAny) {
100 fOfflineTriggerMask = offlineTriggerMask;
101 fTriggerSelectedManually = kTRUE;
102 }
103 void SelectSpecialTrigger(UInt_t offlineTriggerMask = AliVEvent::kAny, TString TriggerClassName = "AliVEvent::kAny" ) {
104 fOfflineTriggerMask = offlineTriggerMask;
105 fSpecialTriggerName = TriggerClassName;
106 cout << fSpecialTriggerName.Data() << endl;
107
108 }
109 void FillElectonLabelArray(AliAODConversionPhoton* photon, Int_t nV0);
110 void SetAcceptedHeader(TList *HeaderList){fHeaderList = HeaderList;}
111 void SetPreSelectionCutFlag(Bool_t preSelFlag){fPreSelCut = preSelFlag;}
112 TString *GetFoundHeader(){return fGeneratorNames;}
113
114 Int_t GetEventQuality(){return fEventQuality;}
115 Bool_t GetIsFromPileup(){return fRemovePileUp;}
fcc79cf5 116
ae4f2cfb 117 AliConversionCuts(const char *name="V0Cuts", const char * title="V0 Cuts");
118 AliConversionCuts(const AliConversionCuts&);
119 AliConversionCuts& operator=(const AliConversionCuts&);
120
121 virtual ~AliConversionCuts(); //virtual destructor
122
123 static AliConversionCuts * GetStandardCuts2010PbPb();
124 static AliConversionCuts * GetStandardCuts2010pp();
125
126 virtual Bool_t IsSelected(TObject* /*obj*/){return kTRUE;}
127 virtual Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
128
129 TString GetCutNumber();
130
131 void GetCentralityRange(Double_t range[2]){range[0]=10*fCentralityMin;range[1]=10*fCentralityMax;};
ccfa8c0d 132
ae4f2cfb 133 // Cut Selection
134 Bool_t EventIsSelected(AliVEvent *fInputEvent, AliVEvent *fMCEvent);
75f195f2 135 Int_t IsEventAcceptedByConversionCut(AliConversionCuts *ReaderCuts, AliVEvent *InputEvent, AliMCEvent *MCEvent, Int_t isHeavyIon);
ae4f2cfb 136 Bool_t PhotonIsSelected(AliConversionPhotonBase * photon, AliVEvent * event);
137 Bool_t PhotonIsSelectedMC(TParticle *particle,AliStack *fMCStack,Bool_t checkForConvertedGamma=kTRUE);
138 Bool_t PhotonIsSelectedAODMC(AliAODMCParticle *particle,TClonesArray *aodmcArray,Bool_t checkForConvertedGamma=kTRUE);
139 Bool_t ElectronIsSelectedMC(TParticle *particle,AliStack *fMCStack);
140 Bool_t TracksAreSelected(AliVTrack * negTrack, AliVTrack * posTrack);
141 Bool_t MesonIsSelected(AliAODConversionMother *pi0,Bool_t IsSignal=kTRUE);
142 Bool_t MesonIsSelectedMC(TParticle *fMCMother,AliStack *fMCStack, Bool_t bMCDaughtersInAcceptance=kFALSE);
3b77b2d1 143
ae4f2cfb 144 void InitAODpidUtil(Int_t type);
145 Bool_t InitPIDResponse();
146
147 void SetPIDResponse(AliPIDResponse * pidResponse) {fPIDResponse = pidResponse;}
148 AliPIDResponse * GetPIDResponse() { return fPIDResponse;}
149
150 void PrintCuts();
d0a4ea74 151 void PrintCutsWithValues();
1d9e6011 152
ae4f2cfb 153 void InitCutHistograms(TString name="",Bool_t preCut = kTRUE);
154 void SetFillCutHistograms(TString name="",Bool_t preCut = kTRUE){if(!fHistograms){InitCutHistograms(name,preCut);};}
155 TList *GetCutHistograms(){return fHistograms;}
156 void FillPhotonCutIndex(Int_t photoncut){if(hCutIndex)hCutIndex->Fill(photoncut);}
b92cea5e 157 void FillV0EtaBeforedEdxCuts(Float_t v0Eta){if(hEtaDistV0s)hEtaDistV0s->Fill(v0Eta);}
158 void FillV0EtaAfterdEdxCuts(Float_t v0Eta){if(hEtaDistV0sAfterdEdxCuts)hEtaDistV0sAfterdEdxCuts->Fill(v0Eta);}
ae4f2cfb 159 void SetEtaShift(Double_t etaShift) {
160 fEtaShift = etaShift;
161 fLineCutZRSlope = tan(2*atan(exp(-fEtaCut + etaShift)));
162 if(fEtaCutMin > -0.1)
163 fLineCutZRSlopeMin = tan(2*atan(exp(-fEtaCutMin + etaShift)));
164 }
165 void SetEtaShift(TString pPbOrPbp) {
166 Double_t etaShift = 0.0;
167 if(!pPbOrPbp.CompareTo("pPb")) etaShift = -0.465;
168 else if(!pPbOrPbp.CompareTo("Pbp")) etaShift = 0.465;
169
170 fEtaShift = etaShift;
171 fLineCutZRSlope = tan(2*atan(exp(-fEtaCut + etaShift)));
172 if(fEtaCutMin > -0.1)
173 fLineCutZRSlopeMin = tan(2*atan(exp(-fEtaCutMin + etaShift)));
174 }
175 Double_t GetEtaShift() {return fEtaShift;}
176 Bool_t GetDoEtaShift(){return fDoEtaShift;}
177 void DoEtaShift(Bool_t doEtaShift){fDoEtaShift = doEtaShift;}
178 void GetCorrectEtaShiftFromPeriod(TString periodName);
179
180 static AliVTrack * GetTrack(AliVEvent * event, Int_t label);
181 static AliESDtrack *GetESDTrack(AliESDEvent * event, Int_t label);
182
183 ///Cut functions
184 Bool_t SpecificTrackCuts(AliAODTrack * negTrack, AliAODTrack * posTrack,Int_t &cutIndex);
185 Bool_t SpecificTrackCuts(AliESDtrack * negTrack, AliESDtrack * posTrack,Int_t &cutIndex);
186 Bool_t AcceptanceCuts(AliConversionPhotonBase *photon);
187 Bool_t AcceptanceCut(TParticle *particle, TParticle * ePos,TParticle* eNeg);
188 Bool_t dEdxCuts(AliVTrack * track);
189 Bool_t ArmenterosQtCut(AliConversionPhotonBase *photon);
190 Bool_t AsymmetryCut(AliConversionPhotonBase *photon,AliVEvent *event);
191 Bool_t PIDProbabilityCut(AliConversionPhotonBase *photon, AliVEvent * event);
192 Bool_t SelectV0Finder(Bool_t onfly){
193 if(onfly == fUseOnFlyV0Finder) return kTRUE;
194 else return kFALSE;
195 }
196 Bool_t PhotonCuts(AliConversionPhotonBase *photon,AliVEvent *event);
197 Bool_t CorrectedTPCClusterCut(AliConversionPhotonBase *photon, AliVEvent * event);
d8b864f8 198 Bool_t PsiPairCut(const AliConversionPhotonBase * photon) const;
ae4f2cfb 199 Bool_t CosinePAngleCut(const AliConversionPhotonBase * photon, AliVEvent * event) const;
200 Bool_t RejectSharedElectronV0s(AliAODConversionPhoton* photon, Int_t nV0, Int_t nV0s);
201 Bool_t RejectToCloseV0s(AliAODConversionPhoton* photon, TList *photons, Int_t nV0);
202 Int_t IsParticleFromBGEvent(Int_t index, AliStack *MCStack, AliVEvent *InputEvent = 0x0);
203 void GetNotRejectedParticles(Int_t rejection, TList *HeaderList, AliVEvent *MCEvent);
204 void SetUseReweightingWithHistogramFromFile( Bool_t pi0reweight=kTRUE, Bool_t etareweight=kFALSE, Bool_t k0sreweight=kFALSE, TString path="$ALICE_ROOT/PWGGA/GammaConv/MCSpectraInput.root",
205 TString histoNamePi0 = "", TString histoNameEta = "", TString histoNameK0s = "",
206 TString fitNamePi0 = "", TString fitNameEta = "", TString fitNameK0s ="" ) {
207 AliInfo(Form("enabled reweighting for: pi0 : %i, eta: %i, K0s: %i",pi0reweight, etareweight, k0sreweight));
208 fDoReweightHistoMCPi0 = pi0reweight;
209 fDoReweightHistoMCEta = etareweight;
210 fDoReweightHistoMCK0s = k0sreweight;
211 fPathTrFReweighting=path;
212 fNameHistoReweightingPi0 =histoNamePi0;
213 fNameHistoReweightingEta =histoNameEta;
214 fNameHistoReweightingK0s =histoNameK0s;
215 fNameFitDataPi0 =fitNamePi0;
216 fNameFitDataEta =fitNameEta;
217 fNameFitDataK0s =fitNameK0s;
218
219 }
220 void LoadReweightingHistosMCFromFile ();
221 // Event Cuts
222 Bool_t IsCentralitySelected(AliVEvent *fInputEvent, AliVEvent *fMCEvent = NULL);
223 Double_t GetCentrality(AliVEvent *event);
224 Int_t GetNumberOfContributorsVtx(AliVEvent *event);
225 Bool_t VertexZCut(AliVEvent *fInputEvent);
226 Bool_t IsTriggerSelected(AliVEvent *fInputEvent);
227 Bool_t HasV0AND(){return fHasV0AND;}
228 Bool_t IsSDDFired(){return fIsSDDFired;}
229 Int_t IsSpecialTrigger(){return fSpecialTrigger;}
230 TString GetSpecialTriggerName(){return fSpecialTriggerName;}
231 Bool_t InPlaneOutOfPlaneCut(Double_t photonPhi, Double_t eventPlaneAngle = -100, Bool_t fill = kTRUE);
232 Int_t GetInPlaneOutOfPlaneCut(){return fInPlaneOutOfPlane;}
3b77b2d1 233
a280ac15 234
ae4f2cfb 235 // Set Individual Cuts
236 Bool_t SetRCut(Int_t RCut);
237 Bool_t SetV0Finder(Int_t v0FinderType);
238 Bool_t SetChi2GammaCut(Int_t chi2GammaCut);
239 Bool_t SetTPCdEdxCutPionLine(Int_t pidedxSigmaCut);
240 Bool_t SetTPCdEdxCutElectronLine(Int_t ededxSigmaCut);
241 Bool_t SetSinglePtCut(Int_t singlePtCut);
242 Bool_t SetTPCClusterCut(Int_t clsTPCCut);
243 Bool_t SetEtaCut(Int_t etaCut);
244 Bool_t SetMinMomPiondEdxCut(Int_t piMinMomdedxSigmaCut);
245 Bool_t SetMaxMomPiondEdxCut(Int_t piMaxMomdedxSigmaCut);
246 Bool_t SetLowPRejectionCuts(Int_t LowPRejectionSigmaCut);
247 Bool_t SetQtMaxCut(Int_t QtMaxCut);
248 Bool_t SetTOFElectronPIDCut(Int_t TOFelectronPID);
249 Bool_t SetTRDElectronCut(Int_t TRDElectronCut);
250 Bool_t SetCentralityMin(Int_t useCentrality);
251 Bool_t SetIsHeavyIon(Int_t isHeavyIon);
252 Bool_t SetCentralityMax(Int_t centralityBin);
253 Bool_t SetPhotonAsymmetryCut(Int_t doPhotonAsymmetryCut);
254 Bool_t SetRemovePileUp(Int_t removePileUp);
255 Bool_t SetMultiplicityMethod(Int_t multiplicityMethod);
256 Int_t SetSelectSpecialTrigger(Int_t selectSpecialTrigger);
257 Bool_t SetCosPAngleCut(Int_t cosCut);
258 Bool_t SetPsiPairCut(Int_t psiCut);
259 Bool_t SetSharedElectronCut(Int_t sharedElec);
260 Bool_t SetToCloseV0sCut(Int_t toClose);
261 Bool_t SetRejectExtraSignalsCut(Int_t extraSignal);
262 Bool_t SetDCARPhotonPrimVtxCut(Int_t DCARPhotonPrimVtx);
263 Bool_t SetDCAZPhotonPrimVtxCut(Int_t DCAZPhotonPrimVtx);
264 Bool_t SetInPlaneOutOfPlane(Int_t inOutPlane);
265
266 // Request Flags
3b77b2d1 267
ae4f2cfb 268 Int_t IsHeavyIon(){return fIsHeavyIon;}
269 Int_t GetFirstTPCRow(Double_t radius);
270 Float_t GetWeightForMeson(TString period, Int_t index, AliStack *MCStack, AliVEvent *InputEvent = 0x0);
271
272 Bool_t UseElecSharingCut(){return fDoSharedElecCut;}
273 Bool_t UseToCloseV0sCut(){return fDoToCloseV0sCut;}
274 Int_t GetMultiplicityMethod(){return fMultiplicityMethod;}
275 Double_t GetEtaCut(){return fEtaCut;}
276 Int_t GetSignalRejection(){return fRejectExtraSignals;}
277 Int_t GetNAcceptedHeaders(){return fnHeaders; }
278 TString * GetAcceptedHeaderNames(){return fGeneratorNames;}
279 Int_t * GetAcceptedHeaderStart(){return fNotRejectedStart;}
280 Int_t * GetAcceptedHeaderEnd(){return fNotRejectedEnd;}
281 TList* GetAcceptedHeader(){return fHeaderList;}
4803eb1f 282
ae4f2cfb 283
284 protected:
285 TList *fHistograms;
286 TList *fHeaderList;
287 AliPIDResponse *fPIDResponse;
288
289
290 Int_t fEventQuality; // EventQuality
291 //cuts
292 Double_t fMaxR; //r cut
293 Double_t fMinR; //r cut
294 Double_t fEtaCut; //eta cut
295 Double_t fEtaCutMin; //eta cut
296 Double_t fPtCut; // pt cut
297 Double_t fSinglePtCut; // pt cut for electron/positron
298 Double_t fMaxZ; //z cut
299 Double_t fMinClsTPC; // minimum clusters in the TPC
300 Double_t fMinClsTPCToF; // minimum clusters to findable clusters
301 Double_t fLineCutZRSlope; //linecut
302 Double_t fLineCutZValue; //linecut
303 Double_t fLineCutZRSlopeMin; //linecut
304 Double_t fLineCutZValueMin; //linecut
305 Double_t fChi2CutConversion; //chi2cut
306 Double_t fPIDProbabilityCutNegativeParticle;
307 Double_t fPIDProbabilityCutPositiveParticle;
308 Bool_t fDodEdxSigmaCut; // flag to use the dEdxCut based on sigmas
309 Bool_t fDoTOFsigmaCut; // flag to use TOF pid cut RRnewTOF
310 Double_t fPIDTRDEfficiency; // required electron efficiency for TRD PID
311 Bool_t fDoTRDPID; // flag to use TRD pid
312 Double_t fPIDnSigmaAboveElectronLine; // sigma cut
313 Double_t fPIDnSigmaBelowElectronLine; // sigma cut
314 Double_t fTofPIDnSigmaAboveElectronLine; // sigma cut RRnewTOF
315 Double_t fTofPIDnSigmaBelowElectronLine; // sigma cut RRnewTOF
316 Double_t fPIDnSigmaAbovePionLine; // sigma cut
317 Double_t fPIDnSigmaAbovePionLineHighPt; // sigma cut
318 Double_t fPIDMinPnSigmaAbovePionLine; // sigma cut
319 Double_t fPIDMaxPnSigmaAbovePionLine; // sigma cut
320 Double_t fDoKaonRejectionLowP; // Kaon rejection at low p
321 Double_t fDoProtonRejectionLowP; // Proton rejection at low p
322 Double_t fDoPionRejectionLowP; // Pion rejection at low p
323 Double_t fPIDnSigmaAtLowPAroundKaonLine; // sigma cut
324 Double_t fPIDnSigmaAtLowPAroundProtonLine; // sigma cut
325 Double_t fPIDnSigmaAtLowPAroundPionLine; // sigma cut
326 Double_t fPIDMinPKaonRejectionLowP; // Momentum limit to apply kaon rejection
327 Double_t fPIDMinPProtonRejectionLowP; // Momentum limit to apply proton rejection
328 Double_t fPIDMinPPionRejectionLowP; // Momentum limit to apply proton rejection
329 Bool_t fDoQtGammaSelection; // Select gammas using qtMax
d8b864f8 330 Bool_t fDo2DQt; // Select gammas using ellipse cut
ae4f2cfb 331 Double_t fQtMax; // Maximum Qt from Armenteros to select Gammas
ae4f2cfb 332 Double_t fXVertexCut; //vertex cut
333 Double_t fYVertexCut; //vertex cut
334 Double_t fZVertexCut; // vertexcut
335 Double_t fNSigmaMass; //nsigma cut
336 Bool_t fUseEtaMinCut; //flag
337 Bool_t fUseOnFlyV0Finder; //flag
338 Bool_t fDoPhotonAsymmetryCut; // flag to use the PhotonAsymetryCut
339 Double_t fMinPPhotonAsymmetryCut; // Min Momentum for Asymmetry Cut
340 Double_t fMinPhotonAsymmetry; // Asymmetry Cut
341 Int_t fIsHeavyIon; // flag for heavy ion
342 Int_t fDetectorCentrality; // centrality detecotor V0M or CL1
343 Int_t fModCentralityClass; // allows to select smaller centrality classes
344 Double_t fMaxVertexZ; // max z offset of vertex
345 Int_t fCentralityMin; // centrality selection lower bin value
346 Int_t fCentralityMax; // centrality selection upper bin value
347 Bool_t fUseCorrectedTPCClsInfo; // flag to use corrected tpc cl info
348 Bool_t fUseTOFpid; // flag to use tof pid
349 Int_t fMultiplicityMethod; // selected multiplicity method
350 Int_t fSpecialTrigger; // flag
351 Bool_t fRemovePileUp; //flag
352 Float_t fOpeningAngle; // min opening angle for meson
353 Float_t fPsiPairCut;
d8b864f8 354 Bool_t fDo2DPsiPairChi2;
ae4f2cfb 355 Float_t fCosPAngleCut;
356 Bool_t fDoToCloseV0sCut; //
357 Int_t fRejectExtraSignals;//
358 Double_t fminV0Dist; //
359 Bool_t fDoSharedElecCut; //
360 UInt_t fOfflineTriggerMask; // Task processes collision candidates only
361 Bool_t fHasV0AND; // V0AND Offline Trigger
362 Bool_t fIsSDDFired; // SDD FIRED to select with SDD events
363 TRandom3 fRandom; //
364 Int_t fElectronArraySize; // Size of electron array
365 Int_t *fElectronLabelArray; //[fElectronArraySize]
366 Double_t fDCAZPrimVtxCut; // cut value for the maximum distance in Z between the photon & the primary vertex [cm]
367 Double_t fDCARPrimVtxCut; // cut value for the maximum distance in R between the photon & the primary vertex [cm]
368 Int_t fInPlaneOutOfPlane; // In-Plane Out-Of Plane Analysis
369 Float_t fConversionPointXArray; // Array with conversion Point x
370 Float_t fConversionPointYArray; // Array with conversion Point y
371 Float_t fConversionPointZArray; // Array with conversion Point z
372 Int_t fnHeaders; // Number of Headers
373 Int_t *fNotRejectedStart; //[fnHeaders]
374 Int_t *fNotRejectedEnd; //[fnHeaders]
375 TString *fGeneratorNames; //[fnHeaders]
376 TObjString *fCutString; // cut number used for analysis
377 AliAnalysisUtils *fUtils;
378 Double_t fEtaShift;
379 Bool_t fDoEtaShift; // Flag for Etashift
380 Bool_t fDoReweightHistoMCPi0; // Flag for reweighting Pi0 input with histogram
381 Bool_t fDoReweightHistoMCEta; // Flag for reweighting Eta input with histogram
382 Bool_t fDoReweightHistoMCK0s; // Flag for reweighting K0s input with histogram
383 TString fPathTrFReweighting; // Path for file used in reweighting
384 TString fNameHistoReweightingPi0; //Histogram name for reweighting Pi0
385 TString fNameHistoReweightingEta; //Histogram name for reweighting Eta
386 TString fNameHistoReweightingK0s; //Histogram name for reweighting K0s
387 TString fNameFitDataPi0; //Fit name for fit to spectrum of pi0s in Data
388 TString fNameFitDataEta; //Fit name for fit to spectrum of etas in Data
389 TString fNameFitDataK0s; //Fit name for fit to spectrum of k0s in Data
390 // Histograms
f315320f 391 TH1F* hEtaDistV0s; //eta-distribution of all V0s after Finder selection
392 TH1F* hEtaDistV0sAfterdEdxCuts; //eta-distribution of all V0s after Finder selection after dEdx cuts
ae4f2cfb 393 TH1F *hdEdxCuts; // bookkeeping for dEdx cuts
394 TH2F *hTPCdEdxbefore; // TPC dEdx before cuts
395 TH2F *hTPCdEdxafter; // TPC dEdx after cuts
396 TH2F *hTPCdEdxSigbefore; // TPC Sigma dEdx before cuts
397 TH2F *hTPCdEdxSigafter; // TPC Sigm dEdx after cuts
398 TH2F *hTOFbefore; // TOF before cuts
399 TH2F *hTOFSigbefore; // TOF Sigma before cuts
400 TH2F *hTOFSigafter; // TOF Sigma after cuts
401 TH2F *hPsiPairDeltaPhiafter; // TOF Sigma after cuts
402 TH1F *hTrackCuts; // bookkeeping for track cuts
403 TH1F *hPhotonCuts; // bookkeeping for photon specific cuts
404 TH1F *hInvMassbefore; // e+e- inv mass distribution before cuts
405 TH2F *hArmenterosbefore; // armenteros podolanski plot before cuts
406 TH1F *hInvMassafter; // e+e- inv mass distribution after cuts
407 TH2F *hArmenterosafter; // armenteros podolanski plot after cuts
408 TH1F *hAcceptanceCuts; // bookkeeping for acceptance cuts
409 TH1F *hCutIndex; // bookkeeping for cuts
410 TH1F *hV0EventCuts; // bookkeeping for event selection cuts
411 TH1F *hCentrality; // centrality distribution for selected events
412 TH2F *hCentralityVsNumberOfPrimaryTracks; // centrality distribution for selected events
413 TH1F *hVertexZ; // vertex z distribution for selected events
414 TH1F *hEventPlanePhi; //EventPlaneAngle Minus Photon Angle
415 TH1F *hTriggerClass; //fired offline trigger class
416 TH1F *hTriggerClassSelected; //selected fired offline trigger class
417 TH1D *hReweightMCHistPi0; //histogram input for reweighting Pi0
418 TH1D *hReweightMCHistEta; //histogram input for reweighting Eta
419 TH1D *hReweightMCHistK0s; //histogram input for reweighting K0s
420 TF1 *fFitDataPi0; //fit to pi0 spectrum in Data
421 TF1 *fFitDataEta; //fit to eta spectrum in Data
422 TF1 *fFitDataK0s; //fit to K0s spectrum in Data
423 Bool_t fPreSelCut; // Flag for preselection cut used in V0Reader
424 Bool_t fTriggerSelectedManually; // Flag for manual trigger selection
425 TString fSpecialTriggerName; // Name of the Special Triggers
a280ac15 426private:
3b77b2d1 427
b92cea5e 428 ClassDef(AliConversionCuts,8)
3b77b2d1 429};
430
431
432inline void AliConversionCuts::InitAODpidUtil(Int_t type) {
433 if (!fPIDResponse) fPIDResponse = new AliAODpidUtil();
434 Double_t alephParameters[5];
435 // simulation
436 alephParameters[0] = 2.15898e+00/50.;
437 alephParameters[1] = 1.75295e+01;
438 alephParameters[2] = 3.40030e-09;
439 alephParameters[3] = 1.96178e+00;
440 alephParameters[4] = 3.91720e+00;
441 fPIDResponse->GetTOFResponse().SetTimeResolution(80.);
442
443 // data
444 if (type==1){
445 alephParameters[0] = 0.0283086/0.97;
446 alephParameters[1] = 2.63394e+01;
447 alephParameters[2] = 5.04114e-11;
448 alephParameters[3] = 2.12543e+00;
449 alephParameters[4] = 4.88663e+00;
450 fPIDResponse->GetTOFResponse().SetTimeResolution(130.);
451 fPIDResponse->GetTPCResponse().SetMip(50.);
452 }
453
454 fPIDResponse->GetTPCResponse().SetBetheBlochParameters(
455 alephParameters[0],alephParameters[1],alephParameters[2],
456 alephParameters[3],alephParameters[4]);
457
458 fPIDResponse->GetTPCResponse().SetSigma(3.79301e-03, 2.21280e+04);
459}
460
461
462#endif