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