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 //
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 #include "AliAnalysisTaskSE.h"
41 //#include "AliCentrality.h"
43 class AliAnalysisTaskFlowTPCEMCalQCSP : public AliAnalysisTaskSE {
46 AliAnalysisTaskFlowTPCEMCalQCSP();
47 AliAnalysisTaskFlowTPCEMCalQCSP(const char *name);
48 virtual ~AliAnalysisTaskFlowTPCEMCalQCSP();
50 void SetEnableDebugMode() {fDebug = kTRUE; };
51 void SetCentralityParameters(Double_t CentralityMin, Double_t CentralityMax, const char* CentralityMethod); //select centrality
52 void CheckCentrality(AliAODEvent *event,Bool_t ¢ralitypass); //to use only events with the correct centrality....
53 void SelectPhotonicElectron(Int_t itrack,const AliAODTrack *track, Bool_t &fFlagPhotonicElec);
54 void SetInvariantMassCut(Double_t invmass) {fInvmassCut = invmass;};
55 void SetTrigger(Int_t trig) {fTrigger = trig;};
56 template <typename T> void PlotVZeroMultiplcities(const T* event) const;
57 template <typename T> void SetNullCuts(T* aod);
58 void PrepareFlowEvent(Int_t iMulti, AliFlowEvent *FlowEv) const;
59 virtual void UserCreateOutputObjects();
60 virtual void UserExec(Option_t *option);
61 virtual void Terminate(Option_t *);
62 void SetRPCuts(AliFlowTrackCuts *cutsRP) { fCutsRP = cutsRP; }
63 void SetHFECuts(AliHFEcuts * const cuts) { fCuts = cuts; };
64 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);
68 AliHFEpid *GetPID() const { return fPID; };
72 Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);
74 Bool_t fDebug; //! enable debug mode
75 AliAODEvent *fAOD; //AOD object
76 AliEMCALGeometry *fGeom; // emcal geometry
77 TList *fOutputList; //output list
78 AliHFEcuts *fCuts; //Cut Collection
79 Bool_t fIdentifiedAsOutInz; //Out Of Range in z
80 Bool_t fPassTheEventCut; //Pass The Event Cut
81 Double_t fVz; //z position of the primary vertex
82 AliCFManager *fCFM; //!Correction Framework Manager
83 AliHFEpid *fPID; //PID
84 AliHFEpidQAmanager *fPIDqa; //! PID QA manager
85 AliFlowTrackCuts *fCutsRP; // track cuts for reference particles
86 AliFlowTrackCuts *fNullCuts; // dummy cuts for flow event tracks
87 AliFlowEvent *fFlowEvent; //! flow events Inclusive e
88 const char *fkCentralityMethod; // method used to determine centrality (V0 by default)
89 Double_t fCentrality; // event centrality for QA
90 Double_t fCentralityMin; // lower bound of cenrality bin
91 Double_t fCentralityMax; // upper bound of centrality bin
92 Double_t fInvmassCut; //invariant mass cut value
93 Int_t fTrigger; //invariant mass cut value
94 TH1F *fPhi; //! QA plot of azimuthal distribution of tracks used for event plane estimation
95 TH1F *fEta; //! QA plot of eta distribution of tracks used for event plane estimation
96 TH1F *fVZEROA; //! QA plot vzeroa multiplicity (all tracks in event)
97 TH1F *fVZEROC; //! QA plot vzeroc multiplicity (all tracks in event)
98 TH1F *fTPCM; //! QA plot TPC multiplicity (tracks used for event plane estimation)
99 TH1F *fNoEvents; //no of events
100 TH2F *fTrkEovPBef; //track E/p before HFE pid
101 TH2F *fdEdxBef; //track dEdx vs p before HFE pid
102 TH1F *fInclusiveElecPt; // Inclusive elec pt
103 TH2F *fTPCnsigma; //TPC n sigma vs p
104 TH2F *fTPCnsigmaAft; //TPC n sigma vs p after HFE pid
105 TH1F *fCentralityPass; // ! QA histogram of events that pass centrality cut
106 TH1F *fCentralityNoPass; //! QA histogram of events that do not pass centrality cut
107 THnSparse *fSparseElectron;//! Trk matching sparse for v1 clusterizer
108 Double_t *fvalueElectron;//! 6dim sparse fill for trk matching quantities
109 TH1F *fInvmassLS1; //LS Invmass for all rec par
110 TH1F *fInvmassULS1;//ULS Invmass for all rec par
111 TH1F *fPhotoElecPt; //photonic elec pt
112 TH1F *fSemiInclElecPt; //Semi inclusive ele pt
113 TH1F *fULSElecPt; //ULS elec Pt
114 TH1F *fLSElecPt;// LS elec pt
116 Double_t fminTPC; //ID cuts tpc
117 Double_t fmaxTPC; //ID cuts tpc
118 Double_t fminEovP; //ID cuts eovp
119 Double_t fmaxEovP;//ID cuts eovp
120 Double_t fminM20;//ID cuts SS
121 Double_t fmaxM20;//ID cuts SS
122 Double_t fminM02;//ID cuts SS
123 Double_t fmaxM02;//ID cuts SS
124 Double_t fDispersion;//ID cuts SS
127 AliAnalysisTaskFlowTPCEMCalQCSP(const AliAnalysisTaskFlowTPCEMCalQCSP&); // not implemented
128 AliAnalysisTaskFlowTPCEMCalQCSP& operator=(const AliAnalysisTaskFlowTPCEMCalQCSP&); // not implemented
130 ClassDef(AliAnalysisTaskFlowTPCEMCalQCSP, 2); //!example of analysis