ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *               
 *                                                                        *               
 * Author: The ALICE Off-line Project.                                    *               
 * Contributors are mentioned in the code where appropriate.              *               
 *                                                                        *               
 * Permission to use, copy, modify and distribute this software and its   *               
 * documentation strictly for non-commercial purposes is hereby granted   *               
 * without fee, provided that the above copyright notice appears in all   *               
 * copies and that both the copyright notice and this permission notice   *               
 * appear in the supporting documentation. The authors make no claims     *               
 * about the suitability of this software for any purpose. It is          *               
 * provided "as is" without express or implied warranty.                  *               
 **************************************************************************/

#ifndef ALIANALYSISTASKFlowTPCEMCalEP_H
#define ALIANALYSISTASKFlowTPCEMCalEP_HAliPIDResponse.h

class THnSparse;
class TH2F;
class TLorentzVector;

class AliEMCALTrack;
class AliMagF;
class AliESDEvent;
class AliAODEvent;
class AliVEvent;
class AliEMCALGeometry;
class AliEMCALRecoUtils;
class AliAnalysisFilter;
class AliESDtrackCuts;
class AliESDtrack;
class AliHFEcontainer;
class AliHFEcuts;
class AliHFEpid;
class AliHFEpidQAmanager;
class AliCFManager;
class AliSelectNonHFE;
class AliPIDResponse;


#include "AliAnalysisTaskSE.h"

class AliAnalysisTaskFlowTPCEMCalEP : public AliAnalysisTaskSE {
 public:
  AliAnalysisTaskFlowTPCEMCalEP();
  AliAnalysisTaskFlowTPCEMCalEP(const char *name);
  virtual ~AliAnalysisTaskFlowTPCEMCalEP();
  
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t *);  

  void SetHFECuts(AliHFEcuts * const cuts) { fCuts = cuts; };
  void SetOpeningAngleCut(Double_t openingAngle) {fOpeningAngleCut = openingAngle;};
  void SetInvariantMassCut(Double_t invMass) {fInvmassCut = invMass;};
  void SetNonHFEalgorithm(TString nonHFEalgorithm)  {fnonHFEalgorithm = nonHFEalgorithm;};

  AliHFEpid *GetPID() const { return fPID; }
  void SetRejectKinkMother(Bool_t rejectKinkMother = kFALSE) { fRejectKinkMother = rejectKinkMother; };
  void InitParameters();
  
  Double_t GetCos2DeltaPhi(Double_t phiA,Double_t phiB)		const;
  Double_t GetDeltaPhi(Double_t phiA,Double_t phiB)	const;
  Double_t GetPi0weight(Double_t mcPi0pT,Float_t cent) const;
  Double_t GetEtaweight(Double_t mcEtapT,Float_t cent) const;
  Double_t GetDweight(Int_t whichD, Double_t mcDpT, Float_t cent) const;


 private:
  
  Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);
  

  AliESDEvent        	*fESD;	            		//! ESD object
  AliAODEvent           *fAOD;                  //! AOD object
  AliVEvent             *fVevent;               //! VEvent
  AliPIDResponse        *fpidResponse;          //! PID response

  AliMCEvent            *fMC;                   //! MC object
    
  TList              	*fOutputList;		        //! output list
  
  AliESDtrackCuts     	*fTrackCuts;      		  //! ESD track cuts
  AliHFEcuts 		*fCuts;                 //! Cut Collection
  AliSelectNonHFE       *fNonHFE;               //! Select non heavy flavour electrons

  Bool_t 		fIdentifiedAsOutInz;    //! Out Of Range in z
  Bool_t 		fPassTheEventCut;       //! Pass The Event Cut
  Bool_t 		fRejectKinkMother;      //! Reject Kink Mother
  Bool_t 		fIsMC;                  //! flag for MC analysis   
  Bool_t                fIsAOD;                 //! flag for AOD analysis

  Double_t 		fVz;                    //! z position of the primary vertex
  AliCFManager 		*fCFM;                  //! Correction Framework Manager
  AliHFEpid 		*fPID;                  //! PID
  AliHFEpidQAmanager 	*fPIDqa;		            //! PID QA manager
  Double_t 		fOpeningAngleCut;	      //! openingAngle cut for non-HFE selection
  Double_t	        fInvmassCut;		        //! invariant mass cut  for non-HFE selection
  Double_t	        fChi2Cut;               //! Chi2 cut  for non-HFE selection
  Double_t	        fDCAcut;                //! DCA cut  for non-HFE selection
  Float_t	        fminCent;               //! min centrality
  Float_t	        fmaxCent;               //! max centrality
  TString               fnonHFEalgorithm;       //! algorithm to select non-HFE pairs (KF or DCA) 

  TH1F		        *fNoEvents;		          //! no of events
  TH1F		        *fTrkpt;		            //! track pt
  TH2F		        *fTrkEovPBef;		        //! track E/p before HFE pid
  TH2F		        *fTrkEovPAft;		        //! track E/p after HFE pid
  TH2F		        *fdEdxBef;		          //! track dEdx vs p before HFE pid
  TH2F		        *fdEdxAft;		          //! track dEdx vs p after HFE pid
  TH1F		        *fPhotoElecPt;		      //! photonic elec pt 
  TH1F		        *fSemiInclElecPt;	      //! Semi inclusive ele pt
  THnSparse	        *fMCphotoElecPt;	      //! pt distribution (MC)
  
  TH1F		        *fTrackPtBefTrkCuts;	  //! Track pt before track cuts	
  TH1F		        *fTrackPtAftTrkCuts;	  //! Track pt after track cuts
  TH2F		        *fTPCnsigma;		        //! TPC n sigma vs p	
  
  TH1F		        *fCent;			            //! centrality
  TH2F		        *fevPlaneV0;		        //! V0 event plane distribution
  TH1F		        *fTPCsubEPres;		      //! TPC event plane resolution
  THnSparse	        *fEPres;		            //! event plane resolution
  THnSparse	        *fCorr;			            //! correlations
  THnSparse	        *feTPCV2;		            //! inclusive eletron v2 (only TPC PID)
  THnSparse	        *feV2;			            //! inclusive eletron v2 (TPC + EMCAL PID)
  THnSparse	        *fphoteV2;		          //! photonic electron v2 (TPC + EMCAL PID)
  THnSparse	        *fChargPartV2;		      //! charged particle v2
    
  TH2F		        *fGammaWeight;		      //! gamma weight
  TH2F		        *fPi0Weight;		        //! pi0 weight
  TH2F		        *fEtaWeight;		        //! eta weight
  TH2F		        *fD0Weight;		          //! D0 weight
  TH2F		        *fDplusWeight;		      //! D+ weight
  TH2F		        *fDminusWeight;		      //! D- weight
  
  TH1F		        *fDe[6];
  TH1F		        *fD0e[6];
  TH1F		        *fDpluse[6];
  TH1F		        *fDminuse[6];
  
  TH2F		        *fD0_e;
  
  TH1F		        *fTot_pi0e;		          //! inclusive electron
  TH1F		        *fPhot_pi0e;		        //! ULS pair 
  TH1F		        *fPhotBCG_pi0e;		      //! LS pair
  TH1F		        *fTot_etae;		          //! inclusive electron
  TH1F		        *fPhot_etae;		        //! ULS pair 
  TH1F		        *fPhotBCG_etae;		      //! LS pair

  TH1F                  *fInvMass;		          //! Invariant mass of ULS pairs
  TH1F                  *fInvMassBack;		      //! Invariant mass if LS pairs
  TH1F                  *fDCA;		              //! DCA of ULS pairs
  TH1F                  *fDCABack;		          //! DCA of LS pairs
  TH1F                  *fOpAngle;		          //! Opening angle of ULS pairs
  TH1F                  *fOpAngleBack;		      //! Opening angle of LS pairs


  AliAnalysisTaskFlowTPCEMCalEP(const AliAnalysisTaskFlowTPCEMCalEP&); // not implemented
  AliAnalysisTaskFlowTPCEMCalEP& operator=(const AliAnalysisTaskFlowTPCEMCalEP&); // not implemented
  
  ClassDef(AliAnalysisTaskFlowTPCEMCalEP, 1); //!example of analysis
};

#endif
 AliAnalysisTaskFlowTPCEMCalEP.h:1
 AliAnalysisTaskFlowTPCEMCalEP.h:2
 AliAnalysisTaskFlowTPCEMCalEP.h:3
 AliAnalysisTaskFlowTPCEMCalEP.h:4
 AliAnalysisTaskFlowTPCEMCalEP.h:5
 AliAnalysisTaskFlowTPCEMCalEP.h:6
 AliAnalysisTaskFlowTPCEMCalEP.h:7
 AliAnalysisTaskFlowTPCEMCalEP.h:8
 AliAnalysisTaskFlowTPCEMCalEP.h:9
 AliAnalysisTaskFlowTPCEMCalEP.h:10
 AliAnalysisTaskFlowTPCEMCalEP.h:11
 AliAnalysisTaskFlowTPCEMCalEP.h:12
 AliAnalysisTaskFlowTPCEMCalEP.h:13
 AliAnalysisTaskFlowTPCEMCalEP.h:14
 AliAnalysisTaskFlowTPCEMCalEP.h:15
 AliAnalysisTaskFlowTPCEMCalEP.h:16
 AliAnalysisTaskFlowTPCEMCalEP.h:17
 AliAnalysisTaskFlowTPCEMCalEP.h:18
 AliAnalysisTaskFlowTPCEMCalEP.h:19
 AliAnalysisTaskFlowTPCEMCalEP.h:20
 AliAnalysisTaskFlowTPCEMCalEP.h:21
 AliAnalysisTaskFlowTPCEMCalEP.h:22
 AliAnalysisTaskFlowTPCEMCalEP.h:23
 AliAnalysisTaskFlowTPCEMCalEP.h:24
 AliAnalysisTaskFlowTPCEMCalEP.h:25
 AliAnalysisTaskFlowTPCEMCalEP.h:26
 AliAnalysisTaskFlowTPCEMCalEP.h:27
 AliAnalysisTaskFlowTPCEMCalEP.h:28
 AliAnalysisTaskFlowTPCEMCalEP.h:29
 AliAnalysisTaskFlowTPCEMCalEP.h:30
 AliAnalysisTaskFlowTPCEMCalEP.h:31
 AliAnalysisTaskFlowTPCEMCalEP.h:32
 AliAnalysisTaskFlowTPCEMCalEP.h:33
 AliAnalysisTaskFlowTPCEMCalEP.h:34
 AliAnalysisTaskFlowTPCEMCalEP.h:35
 AliAnalysisTaskFlowTPCEMCalEP.h:36
 AliAnalysisTaskFlowTPCEMCalEP.h:37
 AliAnalysisTaskFlowTPCEMCalEP.h:38
 AliAnalysisTaskFlowTPCEMCalEP.h:39
 AliAnalysisTaskFlowTPCEMCalEP.h:40
 AliAnalysisTaskFlowTPCEMCalEP.h:41
 AliAnalysisTaskFlowTPCEMCalEP.h:42
 AliAnalysisTaskFlowTPCEMCalEP.h:43
 AliAnalysisTaskFlowTPCEMCalEP.h:44
 AliAnalysisTaskFlowTPCEMCalEP.h:45
 AliAnalysisTaskFlowTPCEMCalEP.h:46
 AliAnalysisTaskFlowTPCEMCalEP.h:47
 AliAnalysisTaskFlowTPCEMCalEP.h:48
 AliAnalysisTaskFlowTPCEMCalEP.h:49
 AliAnalysisTaskFlowTPCEMCalEP.h:50
 AliAnalysisTaskFlowTPCEMCalEP.h:51
 AliAnalysisTaskFlowTPCEMCalEP.h:52
 AliAnalysisTaskFlowTPCEMCalEP.h:53
 AliAnalysisTaskFlowTPCEMCalEP.h:54
 AliAnalysisTaskFlowTPCEMCalEP.h:55
 AliAnalysisTaskFlowTPCEMCalEP.h:56
 AliAnalysisTaskFlowTPCEMCalEP.h:57
 AliAnalysisTaskFlowTPCEMCalEP.h:58
 AliAnalysisTaskFlowTPCEMCalEP.h:59
 AliAnalysisTaskFlowTPCEMCalEP.h:60
 AliAnalysisTaskFlowTPCEMCalEP.h:61
 AliAnalysisTaskFlowTPCEMCalEP.h:62
 AliAnalysisTaskFlowTPCEMCalEP.h:63
 AliAnalysisTaskFlowTPCEMCalEP.h:64
 AliAnalysisTaskFlowTPCEMCalEP.h:65
 AliAnalysisTaskFlowTPCEMCalEP.h:66
 AliAnalysisTaskFlowTPCEMCalEP.h:67
 AliAnalysisTaskFlowTPCEMCalEP.h:68
 AliAnalysisTaskFlowTPCEMCalEP.h:69
 AliAnalysisTaskFlowTPCEMCalEP.h:70
 AliAnalysisTaskFlowTPCEMCalEP.h:71
 AliAnalysisTaskFlowTPCEMCalEP.h:72
 AliAnalysisTaskFlowTPCEMCalEP.h:73
 AliAnalysisTaskFlowTPCEMCalEP.h:74
 AliAnalysisTaskFlowTPCEMCalEP.h:75
 AliAnalysisTaskFlowTPCEMCalEP.h:76
 AliAnalysisTaskFlowTPCEMCalEP.h:77
 AliAnalysisTaskFlowTPCEMCalEP.h:78
 AliAnalysisTaskFlowTPCEMCalEP.h:79
 AliAnalysisTaskFlowTPCEMCalEP.h:80
 AliAnalysisTaskFlowTPCEMCalEP.h:81
 AliAnalysisTaskFlowTPCEMCalEP.h:82
 AliAnalysisTaskFlowTPCEMCalEP.h:83
 AliAnalysisTaskFlowTPCEMCalEP.h:84
 AliAnalysisTaskFlowTPCEMCalEP.h:85
 AliAnalysisTaskFlowTPCEMCalEP.h:86
 AliAnalysisTaskFlowTPCEMCalEP.h:87
 AliAnalysisTaskFlowTPCEMCalEP.h:88
 AliAnalysisTaskFlowTPCEMCalEP.h:89
 AliAnalysisTaskFlowTPCEMCalEP.h:90
 AliAnalysisTaskFlowTPCEMCalEP.h:91
 AliAnalysisTaskFlowTPCEMCalEP.h:92
 AliAnalysisTaskFlowTPCEMCalEP.h:93
 AliAnalysisTaskFlowTPCEMCalEP.h:94
 AliAnalysisTaskFlowTPCEMCalEP.h:95
 AliAnalysisTaskFlowTPCEMCalEP.h:96
 AliAnalysisTaskFlowTPCEMCalEP.h:97
 AliAnalysisTaskFlowTPCEMCalEP.h:98
 AliAnalysisTaskFlowTPCEMCalEP.h:99
 AliAnalysisTaskFlowTPCEMCalEP.h:100
 AliAnalysisTaskFlowTPCEMCalEP.h:101
 AliAnalysisTaskFlowTPCEMCalEP.h:102
 AliAnalysisTaskFlowTPCEMCalEP.h:103
 AliAnalysisTaskFlowTPCEMCalEP.h:104
 AliAnalysisTaskFlowTPCEMCalEP.h:105
 AliAnalysisTaskFlowTPCEMCalEP.h:106
 AliAnalysisTaskFlowTPCEMCalEP.h:107
 AliAnalysisTaskFlowTPCEMCalEP.h:108
 AliAnalysisTaskFlowTPCEMCalEP.h:109
 AliAnalysisTaskFlowTPCEMCalEP.h:110
 AliAnalysisTaskFlowTPCEMCalEP.h:111
 AliAnalysisTaskFlowTPCEMCalEP.h:112
 AliAnalysisTaskFlowTPCEMCalEP.h:113
 AliAnalysisTaskFlowTPCEMCalEP.h:114
 AliAnalysisTaskFlowTPCEMCalEP.h:115
 AliAnalysisTaskFlowTPCEMCalEP.h:116
 AliAnalysisTaskFlowTPCEMCalEP.h:117
 AliAnalysisTaskFlowTPCEMCalEP.h:118
 AliAnalysisTaskFlowTPCEMCalEP.h:119
 AliAnalysisTaskFlowTPCEMCalEP.h:120
 AliAnalysisTaskFlowTPCEMCalEP.h:121
 AliAnalysisTaskFlowTPCEMCalEP.h:122
 AliAnalysisTaskFlowTPCEMCalEP.h:123
 AliAnalysisTaskFlowTPCEMCalEP.h:124
 AliAnalysisTaskFlowTPCEMCalEP.h:125
 AliAnalysisTaskFlowTPCEMCalEP.h:126
 AliAnalysisTaskFlowTPCEMCalEP.h:127
 AliAnalysisTaskFlowTPCEMCalEP.h:128
 AliAnalysisTaskFlowTPCEMCalEP.h:129
 AliAnalysisTaskFlowTPCEMCalEP.h:130
 AliAnalysisTaskFlowTPCEMCalEP.h:131
 AliAnalysisTaskFlowTPCEMCalEP.h:132
 AliAnalysisTaskFlowTPCEMCalEP.h:133
 AliAnalysisTaskFlowTPCEMCalEP.h:134
 AliAnalysisTaskFlowTPCEMCalEP.h:135
 AliAnalysisTaskFlowTPCEMCalEP.h:136
 AliAnalysisTaskFlowTPCEMCalEP.h:137
 AliAnalysisTaskFlowTPCEMCalEP.h:138
 AliAnalysisTaskFlowTPCEMCalEP.h:139
 AliAnalysisTaskFlowTPCEMCalEP.h:140
 AliAnalysisTaskFlowTPCEMCalEP.h:141
 AliAnalysisTaskFlowTPCEMCalEP.h:142
 AliAnalysisTaskFlowTPCEMCalEP.h:143
 AliAnalysisTaskFlowTPCEMCalEP.h:144
 AliAnalysisTaskFlowTPCEMCalEP.h:145
 AliAnalysisTaskFlowTPCEMCalEP.h:146
 AliAnalysisTaskFlowTPCEMCalEP.h:147
 AliAnalysisTaskFlowTPCEMCalEP.h:148
 AliAnalysisTaskFlowTPCEMCalEP.h:149
 AliAnalysisTaskFlowTPCEMCalEP.h:150
 AliAnalysisTaskFlowTPCEMCalEP.h:151
 AliAnalysisTaskFlowTPCEMCalEP.h:152
 AliAnalysisTaskFlowTPCEMCalEP.h:153
 AliAnalysisTaskFlowTPCEMCalEP.h:154
 AliAnalysisTaskFlowTPCEMCalEP.h:155
 AliAnalysisTaskFlowTPCEMCalEP.h:156
 AliAnalysisTaskFlowTPCEMCalEP.h:157
 AliAnalysisTaskFlowTPCEMCalEP.h:158
 AliAnalysisTaskFlowTPCEMCalEP.h:159
 AliAnalysisTaskFlowTPCEMCalEP.h:160
 AliAnalysisTaskFlowTPCEMCalEP.h:161
 AliAnalysisTaskFlowTPCEMCalEP.h:162
 AliAnalysisTaskFlowTPCEMCalEP.h:163
 AliAnalysisTaskFlowTPCEMCalEP.h:164
 AliAnalysisTaskFlowTPCEMCalEP.h:165