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