3 #ifndef ALIANALYSISTASKFLOWTPCEMCALQCSP_H
4 #define ALIANALYSISTASKFLOWTPCEMCALQCSP_H
6 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
7 * See cxx source for full Copyright notice */
9 ////////////////////////////////////////////////////////////////////////
11 // Task for Heavy Flavour Electron Flow TPC plus EMCal //
13 // Author: Andrea Dubla (Utrecht University) //
15 ////////////////////////////////////////////////////////////////////////
25 class AliEMCALGeometry;
26 class AliEMCALRecoUtils;
27 class AliAnalysisFilter;
28 class AliESDtrackCuts;
31 class AliHFEcontainer;
34 class AliHFEpidQAmanager;
36 class AliFlowTrackCuts;
39 class AliFlowCandidateTrack;
40 class AliFlowEventSimple;
42 class AliSelectNonHFE;
44 #include "AliAnalysisTaskSE.h"
46 class AliAnalysisTaskFlowTPCEMCalQCSP : public AliAnalysisTaskSE {
49 AliAnalysisTaskFlowTPCEMCalQCSP();
50 AliAnalysisTaskFlowTPCEMCalQCSP(const char *name);
51 virtual ~AliAnalysisTaskFlowTPCEMCalQCSP();
53 void SetEnableDebugMode() {fDebug = kTRUE; };
54 void SetCentralityParameters(Double_t CentralityMin, Double_t CentralityMax, const char* CentralityMethod); //select centrality
55 void CheckCentrality(AliAODEvent *event,Bool_t ¢ralitypass); //to use only events with the correct centrality....
56 void SelectPhotonicElectron(Int_t itrack,const AliAODTrack *track, Bool_t &fFlagPhotonicElec);
57 void SetInvariantMassCut(Double_t invmass) {fInvmassCut = invmass;};
58 void SetpTCuttrack(Double_t ptcut) {fpTCut = ptcut;};
59 void SetTrigger(Int_t trig) {fTrigger = trig;};
60 void SetAssoTPCCluster(Int_t tpc_clust) {fAssoTPCCluster = tpc_clust;};
61 void SetMultCorrelationCut(Bool_t multcut) {fMultCut = multcut;};
62 void SetAssoITSRefit(Bool_t itsref) {fAssoITSRefit = itsref;};
63 void SetFlowSideBands(Bool_t sidebandsflow){fSideBandsFlow = sidebandsflow;}
64 void SelectPhotonicElectronMethod(Bool_t dca){fDCA = dca;}
65 void Setphiminuspsi(Bool_t phipsi){fPhiminusPsi = phipsi;}
66 void SetPurity(Bool_t Purityel){fpurity = Purityel;}
67 template <typename T> void PlotVZeroMultiplcities(const T* event) const;
68 template <typename T> void SetNullCuts(T* aod);
69 void PrepareFlowEvent(Int_t iMulti, AliFlowEvent *FlowEv) const;
70 virtual void UserCreateOutputObjects();
71 virtual void UserExec(Option_t *option);
72 virtual void Terminate(Option_t *);
73 void SetRPCuts(AliFlowTrackCuts *cutsRP) { fCutsRP = cutsRP; }
74 void SetHFECuts(AliHFEcuts * const cuts) { fCuts = cuts; };
75 void SetIDCuts(Double_t minTPC, Double_t maxTPC, Double_t minEovP, Double_t maxEovP, Double_t minM20, Double_t maxM20, Double_t minM02, Double_t maxM02, Double_t Dispersion);
76 void SetOpeningAngleflag(Bool_t opang){fOP_angle = opang;};
77 void SetOpeningAngleCut(Double_t opanglecut) {fOpeningAngleCut = opanglecut;};
78 void SetHistoForCentralityFlattening(TH1F *h,Double_t minCentr,Double_t maxCentr,Double_t centrRef=0.,Int_t switchTRand=0);
79 Bool_t IsEventSelectedForCentrFlattening(Float_t centvalue);
85 AliHFEpid *GetPID() const { return fPID; };
89 Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);
91 Bool_t fDebug; //! enable debug mode
92 AliAODEvent *fAOD; //AOD object
93 AliEMCALGeometry *fGeom; // emcal geometry
94 TList *fOutputList; //output list
95 AliHFEcuts *fCuts; //Cut Collection
96 Bool_t fIdentifiedAsOutInz; //Out Of Range in z
97 Bool_t fPassTheEventCut; //Pass The Event Cut
98 AliCFManager *fCFM; //!Correction Framework Manager
99 AliHFEpid *fPID; //PID
100 AliHFEpidQAmanager *fPIDqa; //! PID QA manager
101 AliFlowTrackCuts *fCutsRP; // track cuts for reference particles
102 AliFlowTrackCuts *fNullCuts; // dummy cuts for flow event tracks
103 AliFlowEvent *fFlowEvent; //! flow events Inclusive e
104 const char *fkCentralityMethod; // method used to determine centrality (V0 by default)
105 Double_t fCentrality; // event centrality for QA
106 Double_t fCentralityMin; // lower bound of cenrality bin
107 Double_t fCentralityMax; // upper bound of centrality bin
108 Double_t fInvmassCut; //invariant mass cut value
109 Double_t fpTCut; //pt cut value
110 Int_t fTrigger; //invariant mass cut value
111 TH1F *fPhi; //! QA plot of azimuthal distribution of tracks used for event plane estimation
112 TH1F *fEta; //! QA plot of eta distribution of tracks used for event plane estimation
113 TH1F *fVZEROA; //! QA plot vzeroa multiplicity (all tracks in event)
114 TH1F *fVZEROC; //! QA plot vzeroc multiplicity (all tracks in event)
115 TH1F *fTPCM; //! QA plot TPC multiplicity (tracks used for event plane estimation)
116 TH1F *fNoEvents; //no of events
117 TH2F *fTrkEovPBef; //track E/p before HFE pid
118 // TH2F *fdEdxBef; //track dEdx vs p before HFE pid
119 TH1F *fInclusiveElecPt; // Inclusive elec pt
120 TH2F *fTPCnsigma; //TPC n sigma vs p
121 TH2F *fTPCnsigmaAft; //TPC n sigma vs p after HFE pid
122 TH1F *fCentralityPass; // ! QA histogram of events that pass centrality cut
123 TH1F *fCentralityNoPass; //! QA histogram of events that do not pass centrality cut
124 TH1F *fInvmassLS1; //LS Invmass for all rec par
125 TH1F *fInvmassULS1;//ULS Invmass for all rec par
126 TH1F *fPhotoElecPt; //photonic elec pt
127 TH1F *fSemiInclElecPt; //Semi inclusive ele pt
128 TH1F *fULSElecPt; //ULS elec Pt
129 TH1F *fLSElecPt;// LS elec pt
130 Double_t fminTPC; //ID cuts tpc
131 Double_t fmaxTPC; //ID cuts tpc
132 Double_t fminEovP; //ID cuts eovp
133 Double_t fmaxEovP;//ID cuts eovp
134 Double_t fminM20;//ID cuts SS
135 Double_t fmaxM20;//ID cuts SS
136 Double_t fminM02;//ID cuts SS
137 Double_t fmaxM02;//ID cuts SS
138 Double_t fDispersion;//ID cuts SS
139 TH2F *fMultCorAfterCuts; //! QA profile global and tpc multiplicity after outlier cut
140 TH2F *fMultvsCentr; //! QA profile of centralty vs multiplicity
141 TProfile *fSubEventDPhiv2;
145 THnSparseF *fV2Phi;//! v2 analysis of EP-V0
146 THnSparseD *fSparseElectronHadron;//! Trk matching sparse for v1 clusterizer
147 TH1D *fvertex;//huge ThNsparse
148 TH2F *fMultCorBeforeCuts; //! QA profile global and tpc multiplicity after outlier cut
149 Bool_t fSideBandsFlow;//flow from side bands for contamination
150 Bool_t fPhiminusPsi;//flow from phi minus psi method
151 AliFlowEvent *fFlowEventCont; //! flow events for elect Contamination
152 Bool_t fpurity; //for purity evaluation
153 THnSparseD *fSparseElectronpurity;//! Trk matching sparse for v1 clusterizer
154 TH1F *fOpeningAngleLS; //opening angle for LS pairs
155 TH1F *fOpeningAngleULS; //opening angle for ULS pairs
156 AliSelectNonHFE *fNonHFE;//new elienos stuff
157 Bool_t fDCA;//selection PHelectron
158 Double_t fOpeningAngleCut; //openingAngle cut value
159 Bool_t fOP_angle; //to shitch on and off the op_angle cut
160 Int_t fAssoTPCCluster;//asso tpc cluster
161 Bool_t fAssoITSRefit;//asso its refit
162 Bool_t fMultCut;//for mult correlationcut
163 TH2F *fMultCorAfterCentrBeforeCuts; //! QA profile global and tpc multiplicity after outlier cut
164 TH2F *fMultCorAfterVZTRKComp;//!after cent comp
165 TH1F *fCentralityBeforePileup;//!cent chneck
166 TH1F *fCentralityAfterVZTRK;//!cent chneck2
169 TH1D *EPTPCn;//!tpcep
170 TProfile *fSubEventDPhiv2new;
171 THnSparseF *fV2Phivzerotot;//! v2 analysis of EP-V0
172 TH1F *fHistCentrDistr;// isto for Centr Flat
173 TH1F *fCentralityNoPassForFlattening; //! QA histogram of events that do not pass centrality cut for flattening
174 TH1F *fInvmassLS1highpt; //LS Invmass for all rec par high pt
175 TH1F *fInvmassULS1highpt;//ULS Invmass for all rec par high pt
179 AliAnalysisTaskFlowTPCEMCalQCSP(const AliAnalysisTaskFlowTPCEMCalQCSP&); // not implemented
180 AliAnalysisTaskFlowTPCEMCalQCSP& operator=(const AliAnalysisTaskFlowTPCEMCalQCSP&); // not implemented
182 ClassDef(AliAnalysisTaskFlowTPCEMCalQCSP, 2); //!example of analysis