ROOT logo
/* $Id: AliAnalysisTaskPi0V2.h 45956 2010-12-10 12:55:37Z agheata $ */

#ifndef ALIANALYSISTASKPI0V2_H
#define ALIANALYSISTASKPI0V2_H

class TH1F;
class TH2F;
class TH3F;
class TList;
class AliESDCaloCluster;
class AliVCluster;
class AliESDtrackCuts;
class AliESDEvent;
class THnSparse;
class TClonesArray;
class TString;
class TProfile;
class AliOADBContainer;
class AliEPFlattener;

#ifndef ALIANALYSISTASKSE_H
#include "AliAnalysisTaskSE.h"
#endif

class AliAnalysisTaskPi0V2 : public AliAnalysisTaskSE {
 public:
    AliAnalysisTaskPi0V2();
    AliAnalysisTaskPi0V2(const char *name);
    virtual ~AliAnalysisTaskPi0V2();
    
    virtual void     UserCreateOutputObjects();
    virtual void     UserExec(Option_t *option);
    virtual void     Terminate(Option_t *);
    Double_t		GetCrossEnergy(const AliVCluster *cluster, Short_t &idmax) const;
    Double_t		GetMaxCellEnergy(const AliVCluster *cluster, Short_t &id) const;
    Bool_t		IsWithinFiducialVolume(Short_t id) const;
    Bool_t		IsGoodCluster(const AliVCluster *c) const;
    Bool_t		IsGoodClusterV1(const AliVCluster *c) const;
    Bool_t		IsGoodPion(const TLorentzVector& p1, const TLorentzVector& p2) const;
    void		FillPion(const TLorentzVector& p1, const TLorentzVector& p2, Double_t EPV0A, Double_t EPV0C, Double_t EPTPC);
    void		FillCluster(const TLorentzVector& p1, Double_t EPV0r, Double_t EPV0C, Double_t EPTPC, AliVCluster *c);
    void 		GetMom(TLorentzVector& p, const AliVCluster *c, Double_t *vertex);		
    void		SetVtxCut(Double_t v )	        { fVtxCut     =v ;}
    void		SetClusNcell(Double_t c )	{ fNcellCut   =c ;}
    void		SetClusE(Double_t e )	        { fECut       =e ;}
    void		SetClusEta(Double_t e )	        { fEtaCut     =e ;}
    void		SetClusM02(Double_t m )	        { fM02Cut     =m ;}
    void		SetDrCut(Double_t m )	        { fDrCut      =m ;}
    void		SetPi0Asy(Double_t a )	        { fPi0AsyCut  =a ;}
    void                SetTracksName(const char *n)    { fTracksName =n ;}
    void                SetTrigClass(const char *n)     { fTrigClass  =n ;} 
    void                SetV1ClusName(const char *n)    { fV1ClusName =n ;} 
    void                SetV2ClusName(const char *n)    { fV2ClusName =n ;} 
    Int_t		ConvertToInternalRunNumber(Int_t n);
    void		FillEPQA();
    void		SetIsV1Clus(Bool_t e)		{ isV1Clus     =e  ;}
    void		SetIsPHOSCali(Bool_t e)		{ isPhosCali   =e  ;}
    void		SetIsCentFlat(Bool_t e)		{ isCentFlat   =e  ;}
    void		SetIsFullHist(Bool_t e)		{ isFullHist   =e  ;}
    void 		SetFlatteningData(); // phos flattening
    Double_t		ApplyFlattening(Double_t phi, Double_t c) ; //Apply centrality-dependent flattening
    Double_t		ApplyFlatteningV0A(Double_t phi, Double_t c) ; //Apply centrality-dependent flattening
    Double_t		ApplyFlatteningV0C(Double_t phi, Double_t c) ; //Apply centrality-dependent flattening
    

    
 private:
    TList           		*fOutput;	        //! Output list
    AliESDEvent			*fESD;		        //!ESD object
    AliAODEvent			*fAOD;		        //!AOD object
    TString                     fTracksName;	        // name of track collection
    TString                     fV1ClusName;	        // name of V1 Clus collection
    TString                     fV2ClusName;	        // name of V1 Clus collection
    TString                     fTrigClass;	        // trigger class name for event selection
    TClonesArray                *fTracks;		//! pico tracks specific for Skim ESD
    TClonesArray                *fV1Clus;		//! Cluster Array for V1
    TClonesArray                *fV2Clus;		//! Cluster Array for V2
    Int_t			fRunNumber;		//! Run numbers
    Int_t			fInterRunNumber;	//! Run numbers
    Double_t			fVtxCut;		// vertex cut
    Double_t			fNcellCut;	        // N cells Cut
    Double_t			fECut;			// Cluster E cut
    Double_t			fEtaCut;		// Cluster Eta Cut
    Double_t			fM02Cut;		// Cluster long axis cut
    Double_t			fDrCut;		        // Cluster long axis cut
    Bool_t			fPi0AsyCut;		// pion Asymetry cut 0=off 1=on
    Bool_t			isV1Clus;		// pion Asymetry cut 0=off 1=on
    Bool_t			isPhosCali;		// use Phos flattening
    Bool_t			isCentFlat;		// use the centrality flatten
    Bool_t			isFullHist;		// remove some histo to save memory 
    Double_t			fCentrality;	  	//! Centrality
    Double_t			fEPTPC;			//! Evt plane TPC
    Double_t			fEPTPCreso;		//! resolution of TPC method
    Double_t			fEPV0;	    		//! EP V0
    Double_t			fEPV0A;			//! EP V0A
    Double_t			fEPV0C;	  		//! EP V0C
    Double_t			fEPV0Ar;		//! EP V0A reduced
    Double_t			fEPV0Cr;		//! EP V0C reduced
    Double_t			fEPV0r;	  		//! EP V0 reduced
    Double_t			fEPV0AR4;		//! EP V0A ring4 only
    Double_t			fEPV0AR5;		//! EP V0A ring5 only
    Double_t			fEPV0AR6;		//! EP V0A ring6 only
    Double_t			fEPV0AR7;		//! EP V0A ring7 only
    Double_t			fEPV0CR0;		//! EP V0C ring0 only	
    Double_t			fEPV0CR1;		//! EP V0C ring1 only	
    Double_t			fEPV0CR2;		//! EP V0C ring2 only	
    Double_t			fEPV0CR3;		//! EP V0C ring3 only	

    TH1F			*hEvtCount;		//!
    TH1F			*hCent;			//!
  
    TProfile			*h2DcosV0A;		//!
    TProfile			*h2DsinV0A;		//!
    TProfile			*h2DcosV0C;		//!
    TProfile			*h2DsinV0C;		//!
    TProfile 			*h2DcosTPC;		//!
    TProfile			*h2DsinTPC;		//!

    TH2F			*hEPTPC;		//! 2-D histo EPTPC  vs cent
    TH2F			*hresoTPC;		//! 2-D histo TPC resolution vs cent
    TH2F			*hEPV0;			//! 2-D histo EPV0   vs cent
    TH2F			*hEPV0A;		//! 2-D histo EPV0A  vs cent
    TH2F			*hEPV0C;		//! 2-D histo EPV0C  vs cent
    TH2F			*hEPV0Ar;		//! 2-D histo EPV0Ar vs cent
    TH2F			*hEPV0Cr;		//! 2-D histo EPV0Cr vs cent
    TH2F			*hEPV0r;		//! 2-D histo EPV0r  vs cent
    TH2F			*hEPV0AR4;		//! 2-D histo EPV0AR4 vs cent
    TH2F			*hEPV0AR7;		//! 2-D histo EPV0AR7 vs cent
    TH2F			*hEPV0CR0;		//! 2-D histo EPV0AR0 vs cent
    TH2F			*hEPV0CR3;		//! 2-D histo EPV0AR3 vs cent

    TH2F			*hEPTPCCor;		//! 2-D histo EPTPC vs cent after PHOS Correct
    TH2F			*hEPV0ACor;		//! 2-D histo EPV0A vs cent after PHOS Correct
    TH2F			*hEPV0CCor;		//! 2-D histo EPV0C vs cent after PHOS Correct

    TH2F			*hdifV0Ar_V0Cr;		//! 2-D histo diff V0Ar, V0Cr vs cent
    TH2F			*hdifV0A_V0CR0;		//! 2-D histo diff V0A, V0CR0 vs cent
    TH2F			*hdifV0A_V0CR3;		//! 2-D histo diff V0A, V0CR3 vs cent
    TH2F			*hdifV0ACR0_V0CR3;	//! 2-D histo diff V0CR0, V0CR3 vs cent
    TH2F			*hdifV0C_V0AR4;		//! 2-D histo diff V0C, V0AR4 vs cent
    TH2F			*hdifV0C_V0AR7;		//! 2-D histo diff V0C, V0AR7 vs cent
    TH2F			*hdifV0AR4_V0AR7;	//! 2-D histo diff V0AR7, V0AR4 vs cent

    TH2F			*hdifV0A_V0C;		//! 2-D histo diff V0A - V0C
    TH2F			*hdifV0A_TPC;		//! 2-D histo diff V0A - TPC
    TH2F			*hdifV0C_TPC;		//! 2-D histo diff V0C - TPC
    TH2F			*hdifV0C_V0A;		//! 2-D histo diff V0C - V0A

    TH2F			*hM02vsPtA;		//! 2-D histo clus M02 vs Pt before cut
    TH2F			*hM02vsPtB;		//! 2-D histo clus M02 vs Pt after cut
    TH2F			*hClusDxDZA;		//! 2-D histo clus Dx vs Dz before
    TH2F			*hClusDxDZB;		//! 2-D histo clus Dx vs Dz after

    TH3F			*hdifEMC_EPV0A;		//! 3-D histo dif phi in EMC with EPV0A
    TH3F			*hdifEMC_EPV0C;		//! 3-D histo dif phi in EMC with EPV0C

    TH3F			*hdifful_EPV0A;		//! 3-D histo dif phi in full with EPV0A
    TH3F			*hdifful_EPV0C;		//! 3-D histo dif phi in full with EPV0C

    TH3F			*hdifout_EPV0A;		//! 3-D histo dif phi out EMC with EPV0A
    TH3F			*hdifout_EPV0C;		//! 3-D histo dif phi out EMC with EPV0C

    TH3F			*hCv2EMC_EPV0A;		//! 3-D histo for raw charged v2 in EMC with EPV0A
    TH3F			*hCv2EMC_EPV0C;		//! 3-D histo for raw charged v2 in EMC with EPV0C

    TH3F			*hCv2ful_EPV0A;		//! 3-D histo for raw charged v2 in full with EPV0A
    TH3F			*hCv2ful_EPV0C;		//! 3-D histo for raw charged v2 in full with EPV0A

    TH3F			*hCv2out_EPV0A;		//! 3-D histo for raw charged v2 in out with EPV0A
    TH3F			*hCv2out_EPV0C;		//! 3-D histo for raw charged v2 in out with EPV0A

    TH3F			*hclusDif_EPV0A;	//! 3-D histo for dif phi with EPV0A
    TH3F			*hclusDif_EPV0C;	//! 3-D histo for dif phi with EPV0A

    TH3F			*hclusv2_EPV0A;		//! 3-D histo for raw cluster v2 in out with EPV0A
    TH3F			*hclusv2_EPV0C;		//! 3-D histo for raw cluster v2 in out with EPV0C

    TString                      fEPcalibFileName;      // Name for calibration
    AliEPFlattener              *fTPCFlat;		//! Object for flattening of TPC
    AliEPFlattener              *fV0AFlat;		//! Object for flattening of V0A
    AliEPFlattener              *fV0CFlat; 		//! Object for flattening of V0C

    THnSparse		        *fClusterPbV0;          //!
    THnSparse		        *fClusterPbV0A;         //!
    THnSparse		        *fClusterPbV0C;         //!
    THnSparse			*fClusterPbTPC;         //!

    THnSparse                   *fHEPV0A;	        //! Flow 5-D Histo
    THnSparse                   *fHEPV0C;	        //! Flow 5-D Histo
    THnSparse                   *fHEPTPC;	        //! Flow 5-D Histo

    THnSparse                   *fHEPV0AM2;	        //! Flow 5-D Histo
    THnSparse                   *fHEPV0CM2;	        //! Flow 5-D Histo
    THnSparse                   *fHEPTPCM2;	        //! Flow 5-D Histo
    
    AliAnalysisTaskPi0V2(const AliAnalysisTaskPi0V2&); // not implemented
    AliAnalysisTaskPi0V2& operator=(const AliAnalysisTaskPi0V2&); // not implemented
    
    ClassDef(AliAnalysisTaskPi0V2, 6); // example of analysis
};
#endif
 AliAnalysisTaskPi0V2.h:1
 AliAnalysisTaskPi0V2.h:2
 AliAnalysisTaskPi0V2.h:3
 AliAnalysisTaskPi0V2.h:4
 AliAnalysisTaskPi0V2.h:5
 AliAnalysisTaskPi0V2.h:6
 AliAnalysisTaskPi0V2.h:7
 AliAnalysisTaskPi0V2.h:8
 AliAnalysisTaskPi0V2.h:9
 AliAnalysisTaskPi0V2.h:10
 AliAnalysisTaskPi0V2.h:11
 AliAnalysisTaskPi0V2.h:12
 AliAnalysisTaskPi0V2.h:13
 AliAnalysisTaskPi0V2.h:14
 AliAnalysisTaskPi0V2.h:15
 AliAnalysisTaskPi0V2.h:16
 AliAnalysisTaskPi0V2.h:17
 AliAnalysisTaskPi0V2.h:18
 AliAnalysisTaskPi0V2.h:19
 AliAnalysisTaskPi0V2.h:20
 AliAnalysisTaskPi0V2.h:21
 AliAnalysisTaskPi0V2.h:22
 AliAnalysisTaskPi0V2.h:23
 AliAnalysisTaskPi0V2.h:24
 AliAnalysisTaskPi0V2.h:25
 AliAnalysisTaskPi0V2.h:26
 AliAnalysisTaskPi0V2.h:27
 AliAnalysisTaskPi0V2.h:28
 AliAnalysisTaskPi0V2.h:29
 AliAnalysisTaskPi0V2.h:30
 AliAnalysisTaskPi0V2.h:31
 AliAnalysisTaskPi0V2.h:32
 AliAnalysisTaskPi0V2.h:33
 AliAnalysisTaskPi0V2.h:34
 AliAnalysisTaskPi0V2.h:35
 AliAnalysisTaskPi0V2.h:36
 AliAnalysisTaskPi0V2.h:37
 AliAnalysisTaskPi0V2.h:38
 AliAnalysisTaskPi0V2.h:39
 AliAnalysisTaskPi0V2.h:40
 AliAnalysisTaskPi0V2.h:41
 AliAnalysisTaskPi0V2.h:42
 AliAnalysisTaskPi0V2.h:43
 AliAnalysisTaskPi0V2.h:44
 AliAnalysisTaskPi0V2.h:45
 AliAnalysisTaskPi0V2.h:46
 AliAnalysisTaskPi0V2.h:47
 AliAnalysisTaskPi0V2.h:48
 AliAnalysisTaskPi0V2.h:49
 AliAnalysisTaskPi0V2.h:50
 AliAnalysisTaskPi0V2.h:51
 AliAnalysisTaskPi0V2.h:52
 AliAnalysisTaskPi0V2.h:53
 AliAnalysisTaskPi0V2.h:54
 AliAnalysisTaskPi0V2.h:55
 AliAnalysisTaskPi0V2.h:56
 AliAnalysisTaskPi0V2.h:57
 AliAnalysisTaskPi0V2.h:58
 AliAnalysisTaskPi0V2.h:59
 AliAnalysisTaskPi0V2.h:60
 AliAnalysisTaskPi0V2.h:61
 AliAnalysisTaskPi0V2.h:62
 AliAnalysisTaskPi0V2.h:63
 AliAnalysisTaskPi0V2.h:64
 AliAnalysisTaskPi0V2.h:65
 AliAnalysisTaskPi0V2.h:66
 AliAnalysisTaskPi0V2.h:67
 AliAnalysisTaskPi0V2.h:68
 AliAnalysisTaskPi0V2.h:69
 AliAnalysisTaskPi0V2.h:70
 AliAnalysisTaskPi0V2.h:71
 AliAnalysisTaskPi0V2.h:72
 AliAnalysisTaskPi0V2.h:73
 AliAnalysisTaskPi0V2.h:74
 AliAnalysisTaskPi0V2.h:75
 AliAnalysisTaskPi0V2.h:76
 AliAnalysisTaskPi0V2.h:77
 AliAnalysisTaskPi0V2.h:78
 AliAnalysisTaskPi0V2.h:79
 AliAnalysisTaskPi0V2.h:80
 AliAnalysisTaskPi0V2.h:81
 AliAnalysisTaskPi0V2.h:82
 AliAnalysisTaskPi0V2.h:83
 AliAnalysisTaskPi0V2.h:84
 AliAnalysisTaskPi0V2.h:85
 AliAnalysisTaskPi0V2.h:86
 AliAnalysisTaskPi0V2.h:87
 AliAnalysisTaskPi0V2.h:88
 AliAnalysisTaskPi0V2.h:89
 AliAnalysisTaskPi0V2.h:90
 AliAnalysisTaskPi0V2.h:91
 AliAnalysisTaskPi0V2.h:92
 AliAnalysisTaskPi0V2.h:93
 AliAnalysisTaskPi0V2.h:94
 AliAnalysisTaskPi0V2.h:95
 AliAnalysisTaskPi0V2.h:96
 AliAnalysisTaskPi0V2.h:97
 AliAnalysisTaskPi0V2.h:98
 AliAnalysisTaskPi0V2.h:99
 AliAnalysisTaskPi0V2.h:100
 AliAnalysisTaskPi0V2.h:101
 AliAnalysisTaskPi0V2.h:102
 AliAnalysisTaskPi0V2.h:103
 AliAnalysisTaskPi0V2.h:104
 AliAnalysisTaskPi0V2.h:105
 AliAnalysisTaskPi0V2.h:106
 AliAnalysisTaskPi0V2.h:107
 AliAnalysisTaskPi0V2.h:108
 AliAnalysisTaskPi0V2.h:109
 AliAnalysisTaskPi0V2.h:110
 AliAnalysisTaskPi0V2.h:111
 AliAnalysisTaskPi0V2.h:112
 AliAnalysisTaskPi0V2.h:113
 AliAnalysisTaskPi0V2.h:114
 AliAnalysisTaskPi0V2.h:115
 AliAnalysisTaskPi0V2.h:116
 AliAnalysisTaskPi0V2.h:117
 AliAnalysisTaskPi0V2.h:118
 AliAnalysisTaskPi0V2.h:119
 AliAnalysisTaskPi0V2.h:120
 AliAnalysisTaskPi0V2.h:121
 AliAnalysisTaskPi0V2.h:122
 AliAnalysisTaskPi0V2.h:123
 AliAnalysisTaskPi0V2.h:124
 AliAnalysisTaskPi0V2.h:125
 AliAnalysisTaskPi0V2.h:126
 AliAnalysisTaskPi0V2.h:127
 AliAnalysisTaskPi0V2.h:128
 AliAnalysisTaskPi0V2.h:129
 AliAnalysisTaskPi0V2.h:130
 AliAnalysisTaskPi0V2.h:131
 AliAnalysisTaskPi0V2.h:132
 AliAnalysisTaskPi0V2.h:133
 AliAnalysisTaskPi0V2.h:134
 AliAnalysisTaskPi0V2.h:135
 AliAnalysisTaskPi0V2.h:136
 AliAnalysisTaskPi0V2.h:137
 AliAnalysisTaskPi0V2.h:138
 AliAnalysisTaskPi0V2.h:139
 AliAnalysisTaskPi0V2.h:140
 AliAnalysisTaskPi0V2.h:141
 AliAnalysisTaskPi0V2.h:142
 AliAnalysisTaskPi0V2.h:143
 AliAnalysisTaskPi0V2.h:144
 AliAnalysisTaskPi0V2.h:145
 AliAnalysisTaskPi0V2.h:146
 AliAnalysisTaskPi0V2.h:147
 AliAnalysisTaskPi0V2.h:148
 AliAnalysisTaskPi0V2.h:149
 AliAnalysisTaskPi0V2.h:150
 AliAnalysisTaskPi0V2.h:151
 AliAnalysisTaskPi0V2.h:152
 AliAnalysisTaskPi0V2.h:153
 AliAnalysisTaskPi0V2.h:154
 AliAnalysisTaskPi0V2.h:155
 AliAnalysisTaskPi0V2.h:156
 AliAnalysisTaskPi0V2.h:157
 AliAnalysisTaskPi0V2.h:158
 AliAnalysisTaskPi0V2.h:159
 AliAnalysisTaskPi0V2.h:160
 AliAnalysisTaskPi0V2.h:161
 AliAnalysisTaskPi0V2.h:162
 AliAnalysisTaskPi0V2.h:163
 AliAnalysisTaskPi0V2.h:164
 AliAnalysisTaskPi0V2.h:165
 AliAnalysisTaskPi0V2.h:166
 AliAnalysisTaskPi0V2.h:167
 AliAnalysisTaskPi0V2.h:168
 AliAnalysisTaskPi0V2.h:169
 AliAnalysisTaskPi0V2.h:170
 AliAnalysisTaskPi0V2.h:171
 AliAnalysisTaskPi0V2.h:172
 AliAnalysisTaskPi0V2.h:173
 AliAnalysisTaskPi0V2.h:174
 AliAnalysisTaskPi0V2.h:175
 AliAnalysisTaskPi0V2.h:176
 AliAnalysisTaskPi0V2.h:177
 AliAnalysisTaskPi0V2.h:178
 AliAnalysisTaskPi0V2.h:179
 AliAnalysisTaskPi0V2.h:180
 AliAnalysisTaskPi0V2.h:181
 AliAnalysisTaskPi0V2.h:182
 AliAnalysisTaskPi0V2.h:183
 AliAnalysisTaskPi0V2.h:184
 AliAnalysisTaskPi0V2.h:185
 AliAnalysisTaskPi0V2.h:186
 AliAnalysisTaskPi0V2.h:187
 AliAnalysisTaskPi0V2.h:188
 AliAnalysisTaskPi0V2.h:189
 AliAnalysisTaskPi0V2.h:190
 AliAnalysisTaskPi0V2.h:191
 AliAnalysisTaskPi0V2.h:192
 AliAnalysisTaskPi0V2.h:193
 AliAnalysisTaskPi0V2.h:194
 AliAnalysisTaskPi0V2.h:195
 AliAnalysisTaskPi0V2.h:196
 AliAnalysisTaskPi0V2.h:197
 AliAnalysisTaskPi0V2.h:198
 AliAnalysisTaskPi0V2.h:199
 AliAnalysisTaskPi0V2.h:200
 AliAnalysisTaskPi0V2.h:201