ROOT logo
#ifndef ALIANALYSISTASKPERFORMANCESTRANGE_H
#define ALIANALYSISTASKPERFORMANCESTRANGE_H

/*  See cxx source for full Copyright notice */

//-----------------------------------------------------------------
//	        AliAnalysisTaskPerformanceSrange class
//    This task is for a performance study of V0 identification.
//                It works with MC info and ESD tree.
//                 Author: H.Ricaud, H.Ricaud@gsi.de
//-----------------------------------------------------------------

class TString;
class TList;
class TH1F;
class TH2F;
class TH3F;
class AliAnalysisCentralitySelector;
class AliPIDResponse;
#include "AliAnalysisTaskSE.h"

class AliAnalysisTaskPerformanceStrange : public AliAnalysisTaskSE {
 public:
  AliAnalysisTaskPerformanceStrange();
  AliAnalysisTaskPerformanceStrange(const char *name);
  virtual ~AliAnalysisTaskPerformanceStrange(); // Destructor implemented by Kalinak  
  
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t *);
 
  void   SetCollidingSystems(Int_t collidingSystems = 0) {fCollidingSystems = collidingSystems;}
  void   SetAnalysisMC(Bool_t analysisMC) {fAnalysisMC = analysisMC;}
  void   SetAnalysisType(const char* analysisType) {fAnalysisType = analysisType;}
  void   SetUsePID(const char* usePID) {fUsePID = usePID;}
  void   SetAnalysisCut(const char* useCut) {fUseCut = useCut;}
  void   SetCentralityRange(Int_t down, Int_t up) {fDown=down; fUp = up;}
  void   SetTrackCuts(AliESDtrackCuts * myTracksCuts) { fTracksCuts = myTracksCuts;}
  void   SetCentralitySelector(AliAnalysisCentralitySelector * centr) { fCentrSelector = centr;}
  void   SetQASelector(Bool_t QA = 0) { fQASelector = QA;}
  Double_t MyRapidity(Double_t rE, Double_t rPz) const;
 
 private:
  Double_t fCuts[7];                            //! V0 finding cuts
  Bool_t       fAnalysisMC;                     //  0->No MC or 1->MC analysis
  TString      fAnalysisType;                   //  "ESD" or "AOD"
  Bool_t       fCollidingSystems;               //  Colliding systems 0/1 for pp/PbPb  
  TString      fUsePID;                         //  "withPID" or "noPID"
  TString      fUseCut;                         //  "yes" or "no"
  Int_t		fDown;				//centrality range 
  Int_t		fUp;                            //centrality range
  AliESDEvent *fESD;                            //! ESD object
  TList       *fListHist;		//! Output List


  AliAnalysisCentralitySelector * fCentrSelector; // Centrality selector, used to 
  AliESDtrackCuts * fTracksCuts;		// track cuts
  AliPIDResponse *fPIDResponse;                 // PID response
  Bool_t      fQASelector;                    // Quality Assurenc Histo switch

  // MC histograms
  TH1F        *fHistMCPrimaryVertexX;      //! Histo
  TH1F        *fHistMCPrimaryVertexY;      //! Histo
  TH1F        *fHistMCPrimaryVertexZ;      //! Histo
  TH1F        *fHistPtTracks;      //! Histo

  TH1F        *fHistMCMultiplicityPrimary;       //! Histo
  TH1F        *fHistMCMultiplicityTracks;       //! Histo
  TH1F        *fHistTPCTracks;                  //! Histo
  
  TH1F        *fHistMCPtAllK0s;       //! Histo
  TH1F        *fHistMCPtAllLambda;       //! Histo
  TH1F        *fHistMCPtAllAntiLambda;       //! Histo
  TH1F        *fHistMCPtAllXi;       //! Histo
  TH1F        *fHistMCPtAllAntiXi;       //! Histo
  TH1F        *fHistMCPtAllOmega;       //! Histo
  TH1F        *fHistMCPtAllAntiOmega;       //! Histo

  TH1F        *fHistMCRapK0s;                 //! Histo
  TH1F        *fHistMCRapLambda;              //! Histo
  TH1F        *fHistMCRapAntiLambda;          //! Histo
  TH1F        *fHistMCRapXi;                  //! Histo
//////////////////////////////////////////////////////////

  TH1F        *fHistMCPtK0s;       //! Histo
  TH1F        *fHistMCPtLambda;       //! Histo
  TH1F        *fHistMCPtAntiLambda;       //! Histo
//////////////////////////////////////////////////////////

  // ESD histograms
  TH1F        *fHistNumberEvents;        //! Histo
  TH1F        *fHistTrackPerEvent;       //! Histo
  TH1F        *fHistTPCMult;             //! Histo
  TH1F        *fHistTrackletPerEvent;   //! Histo
  TH1F        *fHistSPDPrimaryVertexZ;       //! Histo
  TH1F        *fHistPrimaryVertexX;       //! Histo
  TH1F        *fHistPrimaryVertexY;       //! Histo
  TH1F        *fHistPrimaryVertexZ;       //! Histo
//////////////////////////////////////////////////////////////////////

  TH1F        *fHistV0Multiplicity;  //! Histo
  TH1F        *fHistMassK0;       //! Histo
  TH1F        *fHistMassLambda;       //! Histo
  TH1F        *fHistMassAntiLambda;       //! Histo
  TH1F        *fHistMassXi;       //! Histo
  TH1F        *fHistMassAntiXi;       //! Histo
  TH1F        *fHistMassOmega;       //! Histo
  TH1F        *fHistMassAntiOmega;       //! Histo

  TH2F        *fHistMassXiVsPID;       //! Histo
////////////////////////////////////////////////////////////////////////////

  TH2F        *fHistPtVsMassK0;       //! Histo
  TH2F        *fHistPtVsMassLambda;       //! Histo
  TH2F        *fHistPtVsMassAntiLambda;       //! Histo
/////////////////////////////////////////////

  TH2F        *fHistArmenterosPodolanski;       //! Histo
  TH2F        *fHistK0sMassVsLambdaMass;       //! Histo

  //PID check
  TH2F *fHistTPCsigPLambda;               //! Histo
  TH2F *fHistTPCsigPAntiLambda;               //! Histo
  TH1F *fHistNSigmaProton;               //! Histo

  // Associated particles histograms
  TH1F        *fHistAsMcRapK0;       //! Histo
  TH1F        *fHistAsMcRapLambda;       //! Histo
  TH1F        *fHistAsMcRapAntiLambda;       //! Histo

////////////////////////////////////////////////////////////////////
  TH1F        *fHistAsMcPtK0;       //! Histo
  TH1F        *fHistAsMcPtLambda;       //! Histo
  TH1F        *fHistAsMcPtAntiLambda;       //! Histo

  TH1F        *fHistPidMcMassK0;       //! Histo
  TH1F        *fHistPidMcMassLambda;       //! Histo
  TH1F        *fHistPidMcMassAntiLambda;       //! Histo

    //Mass 

  TH1F        *fHistAsMcMassK0;       //! Histo
  TH1F        *fHistAsMcMassLambda;       //! Histo
  TH1F        *fHistAsMcMassAntiLambda;       //! Histo

  //PtVsMass

  TH2F        *fHistAsMcPtVsMassK0;       //! Histo
  TH2F        *fHistAsMcPtVsMassLambda;       //! Histo
  TH2F        *fHistAsMcPtVsMassAntiLambda;       //! Histo

  TH1F        *fHistCompositionXi;             //! Histo
  TH1F        *fHistCompositionAntiXi;          //! Histo
  TH1F        *fHistCompositionOmega;           //! Histo
  TH1F        *fHistCompositionAntiOmega;       //! Histo
  TH1I        *fHistMCIndexes;          //! Histo


  AliAnalysisTaskPerformanceStrange(const AliAnalysisTaskPerformanceStrange&); 
  AliAnalysisTaskPerformanceStrange& operator=(const AliAnalysisTaskPerformanceStrange&); 

  ClassDef(AliAnalysisTaskPerformanceStrange, 1); 
};

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