]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/hfe/AliAnalysisTaskHFECal.h
Merge branch master into TRDdev
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliAnalysisTaskHFECal.h
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *               
3  *                                                                        *               
4  * Author: The ALICE Off-line Project.                                    *               
5  * Contributors are mentioned in the code where appropriate.              *               
6  *                                                                        *               
7  * Permission to use, copy, modify and distribute this software and its   *               
8  * documentation strictly for non-commercial purposes is hereby granted   *               
9  * without fee, provided that the above copyright notice appears in all   *               
10  * copies and that both the copyright notice and this permission notice   *               
11  * appear in the supporting documentation. The authors make no claims     *               
12  * about the suitability of this software for any purpose. It is          *               
13  * provided "as is" without express or implied warranty.                  *               
14  **************************************************************************/
15
16 #ifndef ALIANALYSISTASKHFECAL_H
17 #define ALIANALYSISTASKHFECAL_H
18
19 class THnSparse;
20 class TH2F;
21 class TLorentzVector;
22 class TGraphErrors;
23
24 class AliEMCALTrack;
25 class AliMagF;
26 class AliESDEvent;
27 class AliAODEvent;
28 class AliEMCALGeometry;
29 class AliEMCALRecoUtils;
30 class AliAnalysisFilter;
31 class AliESDtrackCuts;
32 class AliESDtrack;
33 class AliHFEcontainer;
34 class AliHFEcuts;
35 class AliHFEpid;
36 class AliHFEpidQAmanager;
37 class AliCFManager;
38
39 #include "AliAnalysisTaskSE.h"
40 #include "AliStack.h"
41
42 class AliAnalysisTaskHFECal : public AliAnalysisTaskSE {
43  public:
44   AliAnalysisTaskHFECal();
45   AliAnalysisTaskHFECal(const char *name);
46   virtual ~AliAnalysisTaskHFECal();
47   
48   virtual void   UserCreateOutputObjects();
49   virtual void   UserExec(Option_t *option);
50   virtual void   Terminate(Option_t *);
51   
52   void SetHFECuts(AliHFEcuts * const cuts) { fCuts = cuts; };
53   void SetOpeningAngleCut (Double_t openingAngle) {fOpeningAngleCut = openingAngle;};
54   void SetMimpTassCut (Double_t MimpTassCut) {fMimpTassCut = MimpTassCut;};
55   void SetMimNsigassCut (Double_t MimNsigassCut) {fMimNsigassCut = MimNsigassCut;};
56   void SetInvariantMassCut (Double_t invmass) {fInvmassCut = invmass;};
57   void SetMassConstraint        (Bool_t MassConstraint)         { fSetMassConstraint    = MassConstraint; };
58   void SetMassWidthCut          (Bool_t MassWidthCut)           { fSetMassWidthCut      = MassWidthCut; };
59   void SetMassNonlinear         (Bool_t MassNonlinear)          { fSetMassNonlinear     = MassNonlinear; };
60   void SetMassCalMethod         (Bool_t KFpart)         { fSetKFpart = KFpart; };
61   void SetQAHist (int qahist) {fqahist = qahist;};
62   AliHFEpid *GetPID() const { return fPID; }
63   void SetRejectKinkMother(Bool_t rejectKinkMother = kFALSE) { fRejectKinkMother = rejectKinkMother; };
64   void SelectPhotonicElectron(Int_t itrack, Double_t cent, AliESDtrack *track, Bool_t &fFlagPhotonic, Bool_t &fFlagConvinat, Double_t nSig, Double_t shower, Double_t ep, Double_t mce, Double_t w, Int_t ibgevent, Bool_t tagpi0, Bool_t tageta, Int_t iCal);
65   void FindMother(TParticle* part, int &label, int &pid);
66   double GetMCweight(double mcPi0pT);
67   double GetMCweightEta(double mcEtapT);
68   void FindTriggerClusters();
69   double MCEopMeanCorrection(double pTmc, float central);
70   double NsigmaCorrection(double tmpeta, float central);
71  private:
72   
73   Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);
74   
75   AliESDEvent           *fESD;                  //!ESD object
76   AliMCEvent            *fMC;                   //!MC object
77   AliStack              *stack;                 //!MC object
78   AliEMCALGeometry      *fGeom;                 // emcal geometry 
79     
80   TList                 *fOutputList;           //! output list
81   Int_t                 fqahist;  
82
83   AliESDtrackCuts       *fTrackCuts;            //! ESD track cuts
84   AliHFEcuts            *fCuts;                 //! Cut Collection
85   Bool_t                fIdentifiedAsOutInz;    //Out Of Range in z
86   Bool_t                fPassTheEventCut;       //Pass The Event Cut
87   Bool_t                fRejectKinkMother;      //Reject Kink Mother
88   Bool_t                fmcData;
89   Double_t              fVz;                    //z position of the primary vertex
90   AliCFManager          *fCFM;                  //! Correction Framework Manager
91   AliHFEpid             *fPID;                  //! PID
92   AliHFEpidQAmanager    *fPIDqa;                //! PID QA manager
93   Double_t              fOpeningAngleCut;       //openingAngle cut value
94   Double_t              fMimpTassCut;   //openingAngle cut value
95   Double_t              fMimNsigassCut; //openingAngle cut value
96   Double_t              fInvmassCut;            //invariant mass cut value
97   Bool_t                 fSetMassConstraint;            // Set mass constraint
98   Bool_t                 fSetMassWidthCut;              // Set mass constraint
99   Bool_t                 fSetMassNonlinear;             // Set mass constraint
100   Bool_t                 fSetKFpart;            // Set mass constraint
101  
102   int ftriggers[48][60];//!
103   int ftriggersCut[48][60];//!
104   int ftriggersTime[48][60];//!
105  
106
107   TH1F                  *fNoEvents;             //! no of events
108   THnSparseD            *fEMCAccE;              //! EMC acc
109   TH2F                  *hEMCAccE;              //! EMC acc
110   TH1F                  *fTrkpt;                //! track pt
111   TH2F                  *fTrkEovPBef;           //! track E/p before HFE pid
112   TH2F                  *fTrkEovPAft;           //! track E/p after HFE pid
113   TH2F                  *fdEdxBef;              //! track dEdx vs p before HFE pid
114   TH2F                  *fdEdxAft;              //! track dEdx vs p after HFE pid
115   TH2F                  *fIncpT;                //! HFE pid electron vs centrality
116   TH2F                  *fIncpTM20;             //! HFE pid electron vs centrality
117   THnSparseD            *fInvmassLS;            //! Inv mass of LS (e,e)
118   THnSparseD            *fInvmassULS;           //! Inv mass of ULS (e,e)
119   THnSparseD            *fInvmassLSmc;          //! Inv mass of LS (e,e)
120   THnSparseD            *fInvmassULSmc;         //! Inv mass of ULS (e,e)
121   TH2D          *fInvmassLSreco;                //! Inv mass of LS (e,e)
122   TH2D          *fInvmassULSreco;               //! Inv mass of ULS (e,e)
123   TH2D          *fInvmassLSmc0;         //! Inv mass of ULS (e,e)
124   TH2D          *fInvmassLSmc1;         //! Inv mass of ULS (e,e)
125   TH2D          *fInvmassLSmc2;         //! Inv mass of ULS (e,e)
126   TH2D          *fInvmassLSmc3;         //! Inv mass of ULS (e,e)
127   TH2D          *fInvmassULSmc0;                //! Inv mass of ULS (e,e)
128   TH2D          *fInvmassULSmc1;                //! Inv mass of ULS (e,e)
129   TH2D          *fInvmassULSmc2;                //! Inv mass of ULS (e,e)
130   TH2D          *fInvmassULSmc3;                //! Inv mass of ULS (e,e)
131   TH1F                  *fOpeningAngleLS;       //! opening angle for LS pairs
132   TH1F                  *fOpeningAngleULS;      //! opening angle for ULS pairs
133   TH1F                  *fPhotoElecPt;          //! photonic elec pt 
134   TH2F                  *fPhoElecPt;            //! Pho inclusive ele pt
135   TH2F                  *fPhoElecPtM20;         //! Pho inclusive ele pt
136   TH2F                  *fPhoElecPtM20Mass;             //! Pho inclusive ele pt
137   TH2F                  *fSameElecPt;           //! Same inclusive ele pt
138   TH2F                  *fSameElecPtM20;                //! Same inclusive ele pt
139   TH2F                  *fSameElecPtM20Mass;            //! Same inclusive ele pt
140   TH2F                  *fSemiElecPtM20;                //! Same inclusive ele pt
141
142   TH1F                  *fTrackPtBefTrkCuts;    //! Track pt before track cuts  
143   TH1F                  *fTrackPtAftTrkCuts;    //! Track pt after track cuts
144   TH2F                  *fTPCnsigma;            //! TPC n sigma vs p    
145   
146   TH1F                  *fCent;                 //! centrality
147   THnSparseD            *fEleInfo;              //! EMC acc
148   THnSparseD            *fElenSigma;            //! EMC acc
149   /*
150   //<---- trigger info
151   TH1F        *fClsEBftTrigCut; //Cluster E before trigger selection
152   TH1F        *fClsEAftTrigCut; //Cluster E after trigger selection
153   TH1F        *fClsEAftTrigCut1;        //Cluster E after trigger selection
154   TH1F        *fClsEAftTrigCut2;        //Cluster E after trigger selection
155   TH1F        *fClsEAftTrigCut3;        //Cluster E after trigger selection
156   TH1F        *fClsEAftTrigCut4;        //Cluster E after trigger selection
157   TH2F        *fClsETime; //ClsE vs time distribution
158   TH2F        *fClsETime1; //ClsE vs time distribution
159   TH1F        *fTrigTimes;// trigger time
160   TH2F        *fCellCheck;// trigger time
161   */
162   //<------ MC
163   TH2F                  *fInputHFEMC;
164   TH2F                  *fInputAlle;
165   TH2F                  *fIncpTMChfe;           //! MC HFE pid electron vs centrality
166   TH2F                  *fIncpTMChfeAll;                //! MC HFE pid electron vs centrality
167   TH2F                  *fIncpTMCM20hfe;        //! MC HFE pid electron vs centrality
168   TH2F                  *fIncpTMCM20hfeAll;     //! MC HFE pid electron vs centrality
169   TH2F                  *fIncpTMCM20hfeCheck;   //! MC HFE pid electron vs centrality
170  THnSparseD             *fInputHFEMC_weight;            //! MC HFE pid electron vs centrality
171  THnSparseD             *fIncpTMCM20hfeCheck_weight;            //! MC HFE pid electron vs centrality
172  THnSparseD             *fIncpTMCpho;           //! MC HFE pid electron vs centrality
173  THnSparseD             *fIncpTMCM20pho;        //! MC HFE pid electron vs centrality
174  THnSparseD             *fPhoElecPtMC;          //! Pho inclusive ele pt
175  THnSparseD             *fPhoElecPtMCM20;               //! Pho inclusive ele pt
176  TH2D                   *fPhoElecPtMCM20Mass;           //! Pho inclusive ele pt
177  THnSparseD             *fSameElecPtMC;         //! Same inclusive ele pt
178  THnSparseD             *fSameElecPtMCM20;              //! Same inclusive ele pt
179  TH2D                   *fSameElecPtMCM20Mass;          //! Same inclusive ele pt
180  THnSparseD             *fIncpTMCM20pho_pi0e;   //! MC HFE pid electron vs centrality
181  THnSparseD             *fPhoElecPtMCM20_pi0e;          //! Pho inclusive ele pt
182  THnSparseD             *fSameElecPtMCM20_pi0e;         //! Same inclusive ele pt
183  THnSparseD             *fIncpTMCM20pho_eta;    //! MC HFE pid electron vs centrality
184  THnSparseD             *fPhoElecPtMCM20_eta;           //! Pho inclusive ele pt
185  THnSparseD             *fSameElecPtMCM20_eta;          //! Same inclusive ele pt
186  THnSparseD             *fIncpTMCpho_pi0e_TPC;  //! MC HFE pid electron vs centrality
187  THnSparseD             *fPhoElecPtMC_pi0e_TPC;         //! Pho inclusive ele pt
188  THnSparseD             *fSameElecPtMC_pi0e_TPC;                //! Same inclusive ele pt
189  THnSparseD             *fIncpTMCpho_eta_TPC;   //! MC HFE pid electron vs centrality
190  THnSparseD             *fPhoElecPtMC_eta_TPC;          //! Pho inclusive ele pt
191  THnSparseD             *fSameElecPtMC_eta_TPC;         //! Same inclusive ele pt
192  TH1D                   *CheckNclust;  
193  TH1D                   *CheckNits;  
194  TH2D                   *CheckDCA;  
195  THnSparseD             *Hpi0pTcheck; 
196  THnSparseD             *HETApTcheck; 
197  TH2D                   *HphopTcheck; 
198  TH2D                   *HDpTcheck; 
199  TH2D                   *HBpTcheck; 
200  TH1D                   *fpTCheck; 
201  TH2D                   *fMomDtoE; 
202  TH2D                   *fLabelCheck;
203  TH2D                   *fgeoFake;
204  TH2D                   *fFakeTrk0;
205  TH2D                   *fFakeTrk1;
206  TH2D                   *ftimingEle;
207  TH2D                   *fIncMaxE;
208  TH2D                   *fIncReco;
209  TH2D                   *fPhoReco;
210  TH2D                   *fSamReco; 
211  TH2D                   *fIncRecoMaxE;
212  TH2D                   *fPhoRecoMaxE;
213  TH2D                   *fSamRecoMaxE; 
214  TH2D                   *fPhoVertexReco_HFE;
215  TH2D                   *fPhoVertexReco_EMCal;
216  TH2D                   *fPhoVertexReco_Invmass;
217  TH2D                   *fPhoVertexReco_step0;
218  TH2D                   *fPhoVertexReco_step1;
219  TH1D                   *fMatchV0_0;
220  TH1D                   *fMatchV0_1;
221  TH1D                   *fMatchMC_0;
222  TH1D                   *fMatchMC_1;
223  TH2D                   *fpair;
224
225  //<----- correction
226  TGraphErrors           *fnSigEtaCorr[7];
227
228
229   AliAnalysisTaskHFECal(const AliAnalysisTaskHFECal&); // not implemented
230   AliAnalysisTaskHFECal& operator=(const AliAnalysisTaskHFECal&); // not implemented
231   
232   ClassDef(AliAnalysisTaskHFECal, 1); //!example of analysis
233 };
234
235 #endif
236
237