#ifndef AliAnalysisTaskPi0Flow_cxx
#define AliAnalysisTaskPi0Flow_cxx
class TObjArray;
class TH1F;
class TH2I;
class TH2F;
class TH3F;
class TF1 ;
class AliStack ;
class AliESDtrackCuts;
class AliPHOSGeometry;
class AliESDEvent ;
class AliPHOSCalibData;
class AliESDtrack ;
class AliESDCaloCluster ;
class AliEPFlattener;
class AliAnalysisUtils;
#include "TArrayD.h"
#include "AliAnalysisTaskSE.h"
class AliAnalysisTaskPi0Flow : public AliAnalysisTaskSE {
public:
enum Period { kUndefinedPeriod, kLHC10h, kLHC11h, kLHC13 };
enum EventSelection { kTotal, kInternalTriggerMaskSelection, kHasVertex, kHasAbsVertex, kHasCentrality, kCentUnderUpperBinUpperEdge, kCentOverLowerBinLowerEdge, kHasPHOSClusters, kTotalSelected };
enum TriggerSelection { kNoSelection, kCentralInclusive, kCentralExclusive, kSemiCentralInclusive, kSemiCentralExclusive, kMBInclusive, kMBExclusive };
public:
AliAnalysisTaskPi0Flow(const char *name = "AliAnalysisTaskPi0Flow", Period period = kUndefinedPeriod);
virtual ~AliAnalysisTaskPi0Flow();
virtual void UserCreateOutputObjects();
virtual void UserExec(Option_t *option);
void SetPeriod(Period period) { fPeriod = period;}
void SetCentralityEstimator(const char * centr) {fCentralityEstimator = centr;}
void EnableTOFCut(Bool_t enable = kTRUE, Double_t TOFCut = 100.e-9, Bool_t fillWide=kFALSE){fTOFCutEnabled=enable; fTOFCut=TOFCut; fFillWideTOF=fillWide;}
void SetCentralityBinning(const TArrayD& edges, const TArrayI& nMixed);
void SetEventMixingRPBinning(UInt_t nBins) { fNEMRPBins = nBins; }
void SetInternalTriggerSelection(TriggerSelection selection) { fInternalTriggerSelection = selection; }
void SetMaxAbsVertexZ(Float_t z) { fMaxAbsVertexZ = z; }
void SetManualV0EPCalc(Bool_t manCalc = true) {fManualV0EPCalc = manCalc;}
void SetEnablePHOSModule(int module, Bool_t enable = true);
void SetPHOSBadMap(Int_t mod,TH2I * badMapHist);
void SetEPcalibFileName(const TString filename) {fEPcalibFileName = filename; }
protected:
AliAnalysisTaskPi0Flow(const AliAnalysisTaskPi0Flow&);
AliAnalysisTaskPi0Flow& operator=(const AliAnalysisTaskPi0Flow&);
AliVEvent* GetEvent();
void SetGeometry();
void SetMisalignment();
void SetV0Calibration();
void SetESDTrackCuts();
void SetPHOSCalibData();
void SetFlatteningData();
Bool_t RejectTriggerMaskSelection();
void SetVertex();
Bool_t RejectEventVertex();
void SetCentrality();
Bool_t RejectCentrality();
void EvalReactionPlane();
void EvalV0ReactionPlane();
void FillPHOSCellQAHists();
virtual void SelectPhotonClusters();
virtual void FillSelectedClusterHistograms();
virtual void ConsiderPi0s();
virtual void ConsiderPi0sMix();
virtual void ProcessMC();
void UpdateLists();
Bool_t AreNeibors(Int_t id1,Int_t id2) ;
Double_t ApplyFlattening(Double_t phi, Double_t c) ;
Double_t ApplyFlatteningV0A(Double_t phi, Double_t c) ;
Double_t ApplyFlatteningV0C(Double_t phi, Double_t c) ;
Int_t ConvertToInternalRunNumber(Int_t run) ;
Double_t CoreEnergy(AliVCluster * clu, AliVCaloCells * cells);
void EvalCoreLambdas(AliVCluster * clu, AliVCaloCells * cells, Double_t &m02, Double_t &m20) ;
Bool_t TestCoreLambda(Double_t pt,Double_t l1,Double_t l2) ;
void FillHistogram(const char * key,Double_t x) const ;
void FillHistogram(const char * key,Double_t x, Double_t y) const ;
void FillHistogram(const char * key,Double_t x, Double_t y, Double_t z) const ;
void FillHistogram(const char * key,Double_t x, Double_t y, Double_t z, Double_t w) const ;
TVector3 GetVertexVector(const AliVVertex* vertex);
Int_t GetCentralityBin(Float_t centralityV0M);
Int_t GetRPBin();
void LogProgress(int step);
void LogSelection(int step, int internalRunNumber);
Bool_t IsGoodChannel(const char * det, Int_t mod,Int_t ix, Int_t iz);
void Reclusterize(AliVCluster * clu) ;
Double_t TestCPV(Double_t dx, Double_t dz, Double_t pt, Int_t charge);
Bool_t TestLambda(Double_t pt,Double_t l1,Double_t l2) ;
Bool_t TestLambda2(Double_t pt,Double_t l1,Double_t l2) ;
UInt_t GetNumberOfCentralityBins() { return fCentEdges.GetSize()-1; }
TList* GetCaloPhotonsPHOSList(UInt_t vtxBin, UInt_t centBin, UInt_t rpBin);
AliAnalysisUtils* GetAnalysisUtils();
protected:
static const Int_t kNMod = 5;
static const Double_t kLogWeight ;
static const Double_t kAlphaCut ;
static const Bool_t doESDReCalibration;
static const Int_t kNCenBins = 9;
static const Double_t kMinClusterEnergy;
static const Double_t kMinBCDistance;
static const Int_t kMinNCells;
static const Double_t kMinM02;
static const Int_t kNVtxZBins;
static const Double_t kCentCutoff;
TArrayD fCentEdges;
TArrayI fCentNMixed;
UInt_t fNEMRPBins;
Period fPeriod;
TriggerSelection fInternalTriggerSelection;
Float_t fMaxAbsVertexZ;
Bool_t fManualV0EPCalc;
Bool_t fModuleEnabled[kNMod];
Bool_t fTOFCutEnabled;
Double_t fTOFCut;
Bool_t fFillWideTOF;
TList * fOutputContainer;
TF1 *fNonLinCorr;
TH2I *fPHOSBadMap[6] ;
AliVEvent* fEvent;
AliESDEvent* fEventESD;
AliAODEvent* fEventAOD;
Int_t fRunNumber;
Int_t fInternalRunNumber ;
AliPHOSGeometry *fPHOSGeo;
TProfile *fMultV0;
Float_t fV0Cpol,fV0Apol;
Float_t fMeanQ[kNCenBins][2][2];
Float_t fWidthQ[kNCenBins][2][2];
AliESDtrackCuts *fESDtrackCuts;
AliPHOSCalibData *fPHOSCalibData;
TString fEPcalibFileName;
AliEPFlattener * fTPCFlat ;
AliEPFlattener * fV0AFlat ;
AliEPFlattener * fV0CFlat ;
Double_t fVertex[3];
TVector3 fVertexVector;
Int_t fVtxBin;
TString fCentralityEstimator;
Float_t fCentrality ;
Int_t fCentBin ;
Bool_t fHaveTPCRP ;
Float_t fRP ;
Float_t fRPV0A ;
Float_t fRPV0C ;
Int_t fEMRPBin;
TObjArray * fCaloPhotonsPHOS ;
TObjArray* fCaloPhotonsPHOSLists;
ClassDef(AliAnalysisTaskPi0Flow, 3);
};
#endif
AliAnalysisTaskPi0Flow.h:1 AliAnalysisTaskPi0Flow.h:2 AliAnalysisTaskPi0Flow.h:3 AliAnalysisTaskPi0Flow.h:4 AliAnalysisTaskPi0Flow.h:5 AliAnalysisTaskPi0Flow.h:6 AliAnalysisTaskPi0Flow.h:7 AliAnalysisTaskPi0Flow.h:8 AliAnalysisTaskPi0Flow.h:9 AliAnalysisTaskPi0Flow.h:10 AliAnalysisTaskPi0Flow.h:11 AliAnalysisTaskPi0Flow.h:12 AliAnalysisTaskPi0Flow.h:13 AliAnalysisTaskPi0Flow.h:14 AliAnalysisTaskPi0Flow.h:15 AliAnalysisTaskPi0Flow.h:16 AliAnalysisTaskPi0Flow.h:17 AliAnalysisTaskPi0Flow.h:18 AliAnalysisTaskPi0Flow.h:19 AliAnalysisTaskPi0Flow.h:20 AliAnalysisTaskPi0Flow.h:21 AliAnalysisTaskPi0Flow.h:22 AliAnalysisTaskPi0Flow.h:23 AliAnalysisTaskPi0Flow.h:24 AliAnalysisTaskPi0Flow.h:25 AliAnalysisTaskPi0Flow.h:26 AliAnalysisTaskPi0Flow.h:27 AliAnalysisTaskPi0Flow.h:28 AliAnalysisTaskPi0Flow.h:29 AliAnalysisTaskPi0Flow.h:30 AliAnalysisTaskPi0Flow.h:31 AliAnalysisTaskPi0Flow.h:32 AliAnalysisTaskPi0Flow.h:33 AliAnalysisTaskPi0Flow.h:34 AliAnalysisTaskPi0Flow.h:35 AliAnalysisTaskPi0Flow.h:36 AliAnalysisTaskPi0Flow.h:37 AliAnalysisTaskPi0Flow.h:38 AliAnalysisTaskPi0Flow.h:39 AliAnalysisTaskPi0Flow.h:40 AliAnalysisTaskPi0Flow.h:41 AliAnalysisTaskPi0Flow.h:42 AliAnalysisTaskPi0Flow.h:43 AliAnalysisTaskPi0Flow.h:44 AliAnalysisTaskPi0Flow.h:45 AliAnalysisTaskPi0Flow.h:46 AliAnalysisTaskPi0Flow.h:47 AliAnalysisTaskPi0Flow.h:48 AliAnalysisTaskPi0Flow.h:49 AliAnalysisTaskPi0Flow.h:50 AliAnalysisTaskPi0Flow.h:51 AliAnalysisTaskPi0Flow.h:52 AliAnalysisTaskPi0Flow.h:53 AliAnalysisTaskPi0Flow.h:54 AliAnalysisTaskPi0Flow.h:55 AliAnalysisTaskPi0Flow.h:56 AliAnalysisTaskPi0Flow.h:57 AliAnalysisTaskPi0Flow.h:58 AliAnalysisTaskPi0Flow.h:59 AliAnalysisTaskPi0Flow.h:60 AliAnalysisTaskPi0Flow.h:61 AliAnalysisTaskPi0Flow.h:62 AliAnalysisTaskPi0Flow.h:63 AliAnalysisTaskPi0Flow.h:64 AliAnalysisTaskPi0Flow.h:65 AliAnalysisTaskPi0Flow.h:66 AliAnalysisTaskPi0Flow.h:67 AliAnalysisTaskPi0Flow.h:68 AliAnalysisTaskPi0Flow.h:69 AliAnalysisTaskPi0Flow.h:70 AliAnalysisTaskPi0Flow.h:71 AliAnalysisTaskPi0Flow.h:72 AliAnalysisTaskPi0Flow.h:73 AliAnalysisTaskPi0Flow.h:74 AliAnalysisTaskPi0Flow.h:75 AliAnalysisTaskPi0Flow.h:76 AliAnalysisTaskPi0Flow.h:77 AliAnalysisTaskPi0Flow.h:78 AliAnalysisTaskPi0Flow.h:79 AliAnalysisTaskPi0Flow.h:80 AliAnalysisTaskPi0Flow.h:81 AliAnalysisTaskPi0Flow.h:82 AliAnalysisTaskPi0Flow.h:83 AliAnalysisTaskPi0Flow.h:84 AliAnalysisTaskPi0Flow.h:85 AliAnalysisTaskPi0Flow.h:86 AliAnalysisTaskPi0Flow.h:87 AliAnalysisTaskPi0Flow.h:88 AliAnalysisTaskPi0Flow.h:89 AliAnalysisTaskPi0Flow.h:90 AliAnalysisTaskPi0Flow.h:91 AliAnalysisTaskPi0Flow.h:92 AliAnalysisTaskPi0Flow.h:93 AliAnalysisTaskPi0Flow.h:94 AliAnalysisTaskPi0Flow.h:95 AliAnalysisTaskPi0Flow.h:96 AliAnalysisTaskPi0Flow.h:97 AliAnalysisTaskPi0Flow.h:98 AliAnalysisTaskPi0Flow.h:99 AliAnalysisTaskPi0Flow.h:100 AliAnalysisTaskPi0Flow.h:101 AliAnalysisTaskPi0Flow.h:102 AliAnalysisTaskPi0Flow.h:103 AliAnalysisTaskPi0Flow.h:104 AliAnalysisTaskPi0Flow.h:105 AliAnalysisTaskPi0Flow.h:106 AliAnalysisTaskPi0Flow.h:107 AliAnalysisTaskPi0Flow.h:108 AliAnalysisTaskPi0Flow.h:109 AliAnalysisTaskPi0Flow.h:110 AliAnalysisTaskPi0Flow.h:111 AliAnalysisTaskPi0Flow.h:112 AliAnalysisTaskPi0Flow.h:113 AliAnalysisTaskPi0Flow.h:114 AliAnalysisTaskPi0Flow.h:115 AliAnalysisTaskPi0Flow.h:116 AliAnalysisTaskPi0Flow.h:117 AliAnalysisTaskPi0Flow.h:118 AliAnalysisTaskPi0Flow.h:119 AliAnalysisTaskPi0Flow.h:120 AliAnalysisTaskPi0Flow.h:121 AliAnalysisTaskPi0Flow.h:122 AliAnalysisTaskPi0Flow.h:123 AliAnalysisTaskPi0Flow.h:124 AliAnalysisTaskPi0Flow.h:125 AliAnalysisTaskPi0Flow.h:126 AliAnalysisTaskPi0Flow.h:127 AliAnalysisTaskPi0Flow.h:128 AliAnalysisTaskPi0Flow.h:129 AliAnalysisTaskPi0Flow.h:130 AliAnalysisTaskPi0Flow.h:131 AliAnalysisTaskPi0Flow.h:132 AliAnalysisTaskPi0Flow.h:133 AliAnalysisTaskPi0Flow.h:134 AliAnalysisTaskPi0Flow.h:135 AliAnalysisTaskPi0Flow.h:136 AliAnalysisTaskPi0Flow.h:137 AliAnalysisTaskPi0Flow.h:138 AliAnalysisTaskPi0Flow.h:139 AliAnalysisTaskPi0Flow.h:140 AliAnalysisTaskPi0Flow.h:141 AliAnalysisTaskPi0Flow.h:142 AliAnalysisTaskPi0Flow.h:143 AliAnalysisTaskPi0Flow.h:144 AliAnalysisTaskPi0Flow.h:145 AliAnalysisTaskPi0Flow.h:146 AliAnalysisTaskPi0Flow.h:147 AliAnalysisTaskPi0Flow.h:148 AliAnalysisTaskPi0Flow.h:149 AliAnalysisTaskPi0Flow.h:150 AliAnalysisTaskPi0Flow.h:151 AliAnalysisTaskPi0Flow.h:152 AliAnalysisTaskPi0Flow.h:153 AliAnalysisTaskPi0Flow.h:154 AliAnalysisTaskPi0Flow.h:155 AliAnalysisTaskPi0Flow.h:156 AliAnalysisTaskPi0Flow.h:157 AliAnalysisTaskPi0Flow.h:158 AliAnalysisTaskPi0Flow.h:159 AliAnalysisTaskPi0Flow.h:160 AliAnalysisTaskPi0Flow.h:161 AliAnalysisTaskPi0Flow.h:162 AliAnalysisTaskPi0Flow.h:163 AliAnalysisTaskPi0Flow.h:164 AliAnalysisTaskPi0Flow.h:165 AliAnalysisTaskPi0Flow.h:166 AliAnalysisTaskPi0Flow.h:167 AliAnalysisTaskPi0Flow.h:168 AliAnalysisTaskPi0Flow.h:169 AliAnalysisTaskPi0Flow.h:170 AliAnalysisTaskPi0Flow.h:171 AliAnalysisTaskPi0Flow.h:172 AliAnalysisTaskPi0Flow.h:173 AliAnalysisTaskPi0Flow.h:174 AliAnalysisTaskPi0Flow.h:175 AliAnalysisTaskPi0Flow.h:176 AliAnalysisTaskPi0Flow.h:177 AliAnalysisTaskPi0Flow.h:178 AliAnalysisTaskPi0Flow.h:179 AliAnalysisTaskPi0Flow.h:180 AliAnalysisTaskPi0Flow.h:181 AliAnalysisTaskPi0Flow.h:182 AliAnalysisTaskPi0Flow.h:183 AliAnalysisTaskPi0Flow.h:184 AliAnalysisTaskPi0Flow.h:185 AliAnalysisTaskPi0Flow.h:186 AliAnalysisTaskPi0Flow.h:187 AliAnalysisTaskPi0Flow.h:188 AliAnalysisTaskPi0Flow.h:189 AliAnalysisTaskPi0Flow.h:190 AliAnalysisTaskPi0Flow.h:191 AliAnalysisTaskPi0Flow.h:192 AliAnalysisTaskPi0Flow.h:193 AliAnalysisTaskPi0Flow.h:194 AliAnalysisTaskPi0Flow.h:195 AliAnalysisTaskPi0Flow.h:196 AliAnalysisTaskPi0Flow.h:197 AliAnalysisTaskPi0Flow.h:198 AliAnalysisTaskPi0Flow.h:199 AliAnalysisTaskPi0Flow.h:200 AliAnalysisTaskPi0Flow.h:201 AliAnalysisTaskPi0Flow.h:202 AliAnalysisTaskPi0Flow.h:203 AliAnalysisTaskPi0Flow.h:204 AliAnalysisTaskPi0Flow.h:205 AliAnalysisTaskPi0Flow.h:206 AliAnalysisTaskPi0Flow.h:207 AliAnalysisTaskPi0Flow.h:208 AliAnalysisTaskPi0Flow.h:209 AliAnalysisTaskPi0Flow.h:210 AliAnalysisTaskPi0Flow.h:211 AliAnalysisTaskPi0Flow.h:212 AliAnalysisTaskPi0Flow.h:213 AliAnalysisTaskPi0Flow.h:214 AliAnalysisTaskPi0Flow.h:215 AliAnalysisTaskPi0Flow.h:216 AliAnalysisTaskPi0Flow.h:217 AliAnalysisTaskPi0Flow.h:218 AliAnalysisTaskPi0Flow.h:219 AliAnalysisTaskPi0Flow.h:220 AliAnalysisTaskPi0Flow.h:221 AliAnalysisTaskPi0Flow.h:222 AliAnalysisTaskPi0Flow.h:223 AliAnalysisTaskPi0Flow.h:224 AliAnalysisTaskPi0Flow.h:225 AliAnalysisTaskPi0Flow.h:226 AliAnalysisTaskPi0Flow.h:227 AliAnalysisTaskPi0Flow.h:228 AliAnalysisTaskPi0Flow.h:229 AliAnalysisTaskPi0Flow.h:230 AliAnalysisTaskPi0Flow.h:231 AliAnalysisTaskPi0Flow.h:232 AliAnalysisTaskPi0Flow.h:233 AliAnalysisTaskPi0Flow.h:234 AliAnalysisTaskPi0Flow.h:235 AliAnalysisTaskPi0Flow.h:236 AliAnalysisTaskPi0Flow.h:237 AliAnalysisTaskPi0Flow.h:238 AliAnalysisTaskPi0Flow.h:239 AliAnalysisTaskPi0Flow.h:240 AliAnalysisTaskPi0Flow.h:241 AliAnalysisTaskPi0Flow.h:242 AliAnalysisTaskPi0Flow.h:243