]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/hfe/AliAnalysisTaskFlowTPCEMCalQCSP.h
merging trunk to TPCdev
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliAnalysisTaskFlowTPCEMCalQCSP.h
1
2
3 #ifndef ALIANALYSISTASKFLOWTPCEMCALQCSP_H
4 #define ALIANALYSISTASKFLOWTPCEMCALQCSP_H
5
6 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
7  * See cxx source for full Copyright notice                               */
8
9 ////////////////////////////////////////////////////////////////////////
10 //                                                                    //
11 //  Task for Heavy Flavour Electron Flow TPC plus EMCal               //
12 //                                                                    //
13 //  Author: Andrea Dubla (Utrecht University)                         //
14 //                                                                    //
15 ////////////////////////////////////////////////////////////////////////
16
17 class THnSparse;
18 class TH2F;
19 class TLorentzVector;
20
21 class AliEMCALTrack;
22 class AliMagF;
23 class AliESDEvent;
24 class AliAODEvent;
25 class AliEMCALGeometry;
26 class AliEMCALRecoUtils;
27 class AliAnalysisFilter;
28 class AliESDtrackCuts;
29 class AliESDtrack;
30 class AliAODtrack;
31 class AliHFEcontainer;
32 class AliHFEcuts;
33 class AliHFEpid;
34 class AliHFEpidQAmanager;
35 class AliCFManager;
36 class AliFlowTrackCuts;
37 class AliFlowTrack;
38 class AliFlowEvent;
39 class AliFlowCandidateTrack;
40 class AliFlowEventSimple;
41 class AliCentrality;
42 class AliSelectNonHFE;
43
44 #include "AliAnalysisTaskSE.h"
45
46 class AliAnalysisTaskFlowTPCEMCalQCSP : public AliAnalysisTaskSE {
47     
48 public:
49     AliAnalysisTaskFlowTPCEMCalQCSP();
50     AliAnalysisTaskFlowTPCEMCalQCSP(const char *name);
51     virtual ~AliAnalysisTaskFlowTPCEMCalQCSP();
52     
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 &centralitypass); //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);
80     
81
82     
83     
84     
85     AliHFEpid *GetPID() const { return fPID; };
86     
87 private:
88     
89     Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);
90     
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;
142     TH1D                 *EPVzA;//v0aep
143     TH1D                 *EPVzC;//v0cep
144     TH1D                 *EPTPC;//tpcep
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
167     TH1D                 *EPVz;//v0cep
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
176
177     
178     
179     AliAnalysisTaskFlowTPCEMCalQCSP(const AliAnalysisTaskFlowTPCEMCalQCSP&); // not implemented
180     AliAnalysisTaskFlowTPCEMCalQCSP& operator=(const AliAnalysisTaskFlowTPCEMCalQCSP&); // not implemented
181     
182     ClassDef(AliAnalysisTaskFlowTPCEMCalQCSP, 2); //!example of analysis
183 };
184
185 #endif
186
187
188