ROOT logo
//********************************************************************
//********************************************************************
// Author : Zhongbao Yin
//********************************************************************
//********************************************************************
#ifndef AliAnalysisTaskFlowEPCascade_cxx
#define AliAnalysisTaskFlowEPCascade_cxx

#include "AliAnalysisTaskSE.h"
#include "AliEventplane.h"

class AliESDEvent;
//class AliFlowEventCuts;
class AliFlowTrackCuts;
class TH1F;
class TH2F;
class AliPIDResponse;
class TProfile;
class TProfile2D;
class TFile;

class AliAnalysisTaskFlowEPCascade : public AliAnalysisTaskSE {
 public:

  AliAnalysisTaskFlowEPCascade();
    
  AliAnalysisTaskFlowEPCascade(const char *name, Double_t centMin, 
			       Double_t centMax, 
			       Double_t xis[3][2], 
			       Double_t omegas[3][2] );
  virtual ~AliAnalysisTaskFlowEPCascade();
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t *);
  
  //  void  SetFlowEventCuts(AliFlowEventCuts* cuts){fFlowEventCuts = cuts;}
  //  void  SetFlowTrackCuts(AliFlowTrackCuts* cuts){fFlowTrackCuts = cuts;}
  void  SetFlowDauTrackCuts(AliFlowTrackCuts* cuts){fCutsDau = cuts;}
  void  SetVertexCut(Double_t vtxCut = 10.){fVtxCut = vtxCut;}

 private:
  // AliFlowEventCuts*     fFlowEventCuts       ;
  //AliFlowTrackCuts*     fFlowTrackCuts       ;
  AliFlowTrackCuts *fCutsDau; // cuts for daughters
  AliPIDResponse * fPIDResponse;

  Double_t fXiBands[3][2]; //
  Double_t fOmegaBands[3][2]; //

  Double_t fMinCent, fMaxCent;
  Double_t fVtxCut;
  // Double_t fEtaCut;
  //Double_t fMinPt;
  //Int_t fNTPCcls;

  TFile * fOADB; //
  Int_t fRun; //! current run checked to load VZERO calibration
  Int_t fICent; //! centrality bin number

  TProfile *fMultV0; //! object containing VZERO calibration info
  Float_t fV0Cpol;          //! loaded by OADB       
  Float_t fV0Apol;          //! loaded by OADB                                
  Float_t fMeanQ[9][2][2];//! and recentering                  
  Float_t fWidthQ[9][2][2]; //! ...                              
  
  TList* fHistList; //!
  TH1I * fhEvent;  //!
  TH1F * fhEPangleVZero; //!
  TH1F * fhEPangleV0A; //!
  TH1F * fhEPangleV0C; //!
  TH1F * fhEPangleTPC; //!

  TH1F *fh1Chi2Xi; //!
  TH1F *fh1DCAXiDaughters; //!
  TH1F *fh1DCABachToPrimVertex; //!
  TH1F *fh1XiCosOfPointingAngle; //!
  TH1F *fh1XiRadius; //!
  
  TH1F *fh1MassLambda; //! mass of lambda as the cascade daughter
  TH1F *fh1V0Chi2; //! for V0 associated to a cascade
  TH1F *fh1V0CosOfPointingAngle; //!
  TH1F *fh1V0Radius; //!
  TH1F *fh1DcaV0DaughtersXi; //!
  TH1F *fh1DcaV0ToPrimVertex; //! DCA of V0 to prim. vtx
  TH1F *fh1DCAPosToPrimVertex; //! V0 positive daughter to prim. vertex
  TH1F *fh1DCANegToPrimVertex; //! V0 neg. daughter to prim. vertex
  
  TH1F *fh1MassXiMinus; //! effective mass under Xi- hyp.
  TH1F *fh1MassXiPlus; //!
  TH1F *fh1MassOmegaMinus; //! effective mass under Omega- hyp.
  TH1F *fh1MassOmegaPlus; //!

  TH1F *fh1MassXi;    //!
  TH1F *fh1MassOmega; //!

  TH1F *fh1XiPt; //! transverse momentum
  TH1F *fh1XiP; //! total momentum
  TH1F *fh1XiBachPt; //!  
  TH1F *fh1XiBachP; //!

  TH1F *fh1ChargeXi;//!
  TH1F *fh1V0toXiCosOfPointingAngle; //! cos of pointing angle btw the V0 mom and the Xi-V0 vtx line

  TH1F *fh1PhiXi; //!
  
  TH2F *fh2Armenteros; //! alpha vs ptArm for casc. candidate
  
  TH2F *fh2MassLambdaVsMassXiMinus; //! Xi- effective mass vs V0 eff. mass
  TH2F *fh2MassXiVsMassOmegaMinus; //!
  TH2F *fh2MassLambdaVsMassXiPlus; //!
  TH2F *fh2MassXiVsMassOmegaPlus; //!

  TH2F *fh2XiRadiusVsMassXiMinus; //! decay radius under Xi- hyp.
  TH2F *fh2XiRadiusVsMassXiPlus; //!
  TH2F *fh2XiRadiusVsMassOmegaMinus; //! decay radius under Omega- hyp.
  TH2F *fh2XiRadiusVsMassOmegaPlus; //!

  TH2F *fh2TPCdEdxOfCascDghters; //! dEdx with the cascade daughters
  
  TH2F *fh2MassVsPtXiMinus; //!
  TH2F *fh2MassVsPtXiPlus; //!
  TH2F *fh2MassVsPtXiAll; //!
  
  TH2F *fh2MassVsPtOmegaMinus; //!
  TH2F *fh2MassVsPtOmegaPlus; //!
  TH2F *fh2MassVsPtOmegaAll; //!

  TH1F * fhXiRapidity; //! 
  TH1F * fhOmegaRapidity; //!
  
  TProfile *fProfXiV2PtV0A[3]; //! three mass bands V0A
  TProfile *fProfOmegaV2PtV0A[3];//!
  TProfile *fProfXiSinePtV0A[3];//!
  TProfile *fProfOmegaSinePtV0A[3];//!
  
  TProfile *fProfXiV2PtV0C[3]; //! three mass bands V0C
  TProfile *fProfOmegaV2PtV0C[3];//!
  TProfile *fProfXiSinePtV0C[3];//!
  TProfile *fProfOmegaSinePtV0C[3];//!

  TProfile *fProfXiV2Pt[3]; //! three mass bands V0A&V0C
  TProfile *fProfOmegaV2Pt[3]; //!
  TProfile *fProfXiSinePt[3]; //!
  TProfile *fProfOmegaSinePt[3]; //!

  TProfile2D *fProf2dXiV2PtV0A[3]; //! three mass bands V0A                 
  TProfile2D *fProf2dOmegaV2PtV0A[3];//! 
  TProfile2D *fProf2dXiV2PtV0C[3]; //! three mass bands V0C
  TProfile2D *fProf2dOmegaV2PtV0C[3];//!
  TProfile2D *fProf2dXiV2Pt[3]; //! three mass bands V0A&V0C
  TProfile2D *fProf2dOmegaV2Pt[3]; //!

  TProfile * fProfResolution;  //!

  TH1F *fh1DistToVtxZAfter; //! After propagation to vertex 
  TH1F *fh1DistToVtxXYAfter; //!                                               
  TH2F *fh2DistToVtxZBeforeVsAfter; //!
  TH2F *fh2DistToVtxXYBeforeVsAfter; //!
  TH2F *fh2PxBeforeVsAfter; //!
  TH2F *fh2PyBeforeVsAfter; //!
  TH2F *fh2PhiPosBeforeVsAfter; //! 
  TH2F *fh2PhiNegBeforeVsAfter; //!
  
  //  void ReadFromESDv0(AliESDEvent *fESD);
  void ReadFromAODv0(AliAODEvent *fAOD);

  //Progate to the primary vertex
  void Propagate(Double_t vv[3], Double_t x[3], Double_t p[3], 
		 Double_t bz, Short_t sign);

  void OpenInfoCalbration(Int_t run );//9 bins: 0-5,5-10,10-20

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