ROOT logo
#ifndef ALIANALYSISTASKCLQA_H
#define ALIANALYSISTASKCLQA_H

// $Id $

class TClonesArray;
class TString;
class TH1;
class TH1F;
class TH2F;
class TH3F;
class TNtuple;
class TNtupleD;
class TTree;

#include "AliAnalysisTaskEmcal.h"

class AliNtupCumInfo;
class AliNtupZdcInfo;

class AliAnalysisTaskCLQA : public AliAnalysisTaskEmcal {
 public:
  AliAnalysisTaskCLQA();
  AliAnalysisTaskCLQA(const char *name);
  virtual ~AliAnalysisTaskCLQA();

  void                        SetCentCL1In(TH1 *h)              { fCentCL1In       = h; }
  void                        SetCentV0AIn(TH1 *h)              { fCentV0AIn       = h; }
  void                        SetCumParams(Double_t Mmin, Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax);
  void                        SetDoCumulants(Bool_t b)          { fDoCumulants     = b; }
  void                        SetDoMuonTracking(Bool_t b)       { fDoMuonTracking  = b; }
  void                        SetDoTracking(Bool_t b)           { fDoTracking      = b; }
  void                        SetDo2013VertexCut(Bool_t b)      { fDo2013VertexCut = b; }

  void                        UserCreateOutputObjects();

 protected:
  Bool_t                      FillHistograms();
  Bool_t                      RetrieveEventObjects();
  Bool_t                      Run();
  void                        RunCumulants(Double_t Mmin, Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax);

  Bool_t                      fDo2013VertexCut;  // if true then use 2013 pA vertex check (only if 2013 pPb run)
  Bool_t                      fDoTracking;       // if true run tracking analysis
  Bool_t                      fDoMuonTracking;   // if true run muon tracking analysis
  Bool_t                      fDoCumulants;      // if true run cumulant analysis
  Bool_t                      fDoCumNtuple;      // if true then save cumulant ntuple
  Double_t                    fCumPtMin;         // minimum pt for cumulants
  Double_t                    fCumPtMax;         // maximum pt for cumulants
  Double_t                    fCumEtaMin;        // minimum eta for cumulants
  Double_t                    fCumEtaMax;        // maximum eta for cumulants
  Double_t                    fCumMmin;          // minimum number of tracks for cumulants 
  Int_t                       fCumMbins;         // number of bins for M
  TH1                        *fCentCL1In;        // input for MC based CL1 centrality
  TH1                        *fCentV0AIn;        // input for MC based V0A centrality
  TTree                      *fNtupCum;          //!ntuple for cumulant analysis
  AliNtupCumInfo             *fNtupCumInfo;      //!object holding cumulant results
  AliNtupZdcInfo             *fNtupZdcInfo;      //!object holding zdc info
  TH1                        *fHists[1000];      //!pointers to histograms

 private:
  AliAnalysisTaskCLQA(const AliAnalysisTaskCLQA&);            // not implemented
  AliAnalysisTaskCLQA &operator=(const AliAnalysisTaskCLQA&); // not implemented

  ClassDef(AliAnalysisTaskCLQA, 6) // Constantin's Task
};

class AliNtupCumInfo {
 public:
  AliNtupCumInfo() : fTrig(0), fRun(0), fVz(0), fIsFEC(0), fIsVSel(0), fIsP(0),
                     fMall(0), fMall2(0), fPtMaxall(0), fMPtall(0), 
                     fMPt2all(0), fMPtall2(0), fTSall(0),
                     fM(0), fQ2abs(0), fQ4abs(0), fQ42re(0), fCos2phi(0), fSin2phi(0),
                     fPtMax(0), fMPt(0), fMPt2(0), fTS(0), fMV0M(0), 
                     fCl1(0), fV0M(0), fV0MEq(0), fV0A(0), fV0AEq(0), fZNA(0) {;}
  virtual ~AliNtupCumInfo() {;}

 public:
  UInt_t        fTrig;         // trigger selection
  Int_t         fRun;          // run number
  Double_t      fVz;           // vertex z
  Bool_t        fIsFEC;        // is first event in chunk
  Bool_t        fIsVSel;       // is vertex selected
  Bool_t        fIsP;          // is SPD pileup
  Int_t         fMall;         // multiplicity (tracks in eta range)
  Int_t         fMall2;        // multiplicity (tracks above 1 GeV/c in eta range)
  Double32_t    fPtMaxall;     //[0,0,16] maximum pT
  Double32_t    fMPtall;       //[0,0,16] mean pT
  Double32_t    fMPt2all;      //[0,0,16] mean pT2
  Double32_t    fMPtall2;      //[0,0,16] mean pT truncated above 1 GeV/c
  Double32_t    fTSall;        //[0,0,16] transverse sphericity
  Int_t         fM;            // multiplicity (tracks in pT range)
  Double32_t    fQ2abs;        // Q2 absolute
  Double32_t    fQ4abs;        // Q4 absolute
  Double32_t    fQ42re;        // Re(Q2Q*Q*)
  Double32_t    fCos2phi;      // Cos(2phi)
  Double32_t    fSin2phi;      // Sin(2phi)
  Double32_t    fPtMax;        //[0,0,16] maximum pT
  Double32_t    fMPt;          //[0,0,16] mean pT
  Double32_t    fMPt2;         //[0,0,16] mean pT2
  Double32_t    fTS;           //[0,0,16] transverse sphericity
  Double32_t    fMV0M;         // V0M amplitude
  Double32_t    fCl1;          //[0,0,16] class CL1
  Double32_t    fV0M;          //[0,0,16] class V0M
  Double32_t    fV0MEq;        //[0,0,16] class V0M Eq
  Double32_t    fV0A;          //[0,0,16] class V0A
  Double32_t    fV0AEq;        //[0,0,16] class V0A Eq
  Double32_t    fZNA;          //[0,0,16] class ZNA

  ClassDef(AliNtupCumInfo,3) // Cumulant storage class
};

class AliNtupZdcInfo {
 public:
   AliNtupZdcInfo() : fZna0(0), fZna1(0), fZna2(0), fZna3(0), fZna4(0) {;}
   virtual ~AliNtupZdcInfo() {;}

 public:
  Double32_t    fZna0;         // ZNA energy 0 
  Double32_t    fZna1;         // ZNA energy 1 
  Double32_t    fZna2;         // ZNA energy 2 
  Double32_t    fZna3;         // ZNA energy 3 
  Double32_t    fZna4;         // ZNA energy 4 

  ClassDef(AliNtupZdcInfo,1) // ZDC storage class
};
#endif
 AliAnalysisTaskCLQA.h:1
 AliAnalysisTaskCLQA.h:2
 AliAnalysisTaskCLQA.h:3
 AliAnalysisTaskCLQA.h:4
 AliAnalysisTaskCLQA.h:5
 AliAnalysisTaskCLQA.h:6
 AliAnalysisTaskCLQA.h:7
 AliAnalysisTaskCLQA.h:8
 AliAnalysisTaskCLQA.h:9
 AliAnalysisTaskCLQA.h:10
 AliAnalysisTaskCLQA.h:11
 AliAnalysisTaskCLQA.h:12
 AliAnalysisTaskCLQA.h:13
 AliAnalysisTaskCLQA.h:14
 AliAnalysisTaskCLQA.h:15
 AliAnalysisTaskCLQA.h:16
 AliAnalysisTaskCLQA.h:17
 AliAnalysisTaskCLQA.h:18
 AliAnalysisTaskCLQA.h:19
 AliAnalysisTaskCLQA.h:20
 AliAnalysisTaskCLQA.h:21
 AliAnalysisTaskCLQA.h:22
 AliAnalysisTaskCLQA.h:23
 AliAnalysisTaskCLQA.h:24
 AliAnalysisTaskCLQA.h:25
 AliAnalysisTaskCLQA.h:26
 AliAnalysisTaskCLQA.h:27
 AliAnalysisTaskCLQA.h:28
 AliAnalysisTaskCLQA.h:29
 AliAnalysisTaskCLQA.h:30
 AliAnalysisTaskCLQA.h:31
 AliAnalysisTaskCLQA.h:32
 AliAnalysisTaskCLQA.h:33
 AliAnalysisTaskCLQA.h:34
 AliAnalysisTaskCLQA.h:35
 AliAnalysisTaskCLQA.h:36
 AliAnalysisTaskCLQA.h:37
 AliAnalysisTaskCLQA.h:38
 AliAnalysisTaskCLQA.h:39
 AliAnalysisTaskCLQA.h:40
 AliAnalysisTaskCLQA.h:41
 AliAnalysisTaskCLQA.h:42
 AliAnalysisTaskCLQA.h:43
 AliAnalysisTaskCLQA.h:44
 AliAnalysisTaskCLQA.h:45
 AliAnalysisTaskCLQA.h:46
 AliAnalysisTaskCLQA.h:47
 AliAnalysisTaskCLQA.h:48
 AliAnalysisTaskCLQA.h:49
 AliAnalysisTaskCLQA.h:50
 AliAnalysisTaskCLQA.h:51
 AliAnalysisTaskCLQA.h:52
 AliAnalysisTaskCLQA.h:53
 AliAnalysisTaskCLQA.h:54
 AliAnalysisTaskCLQA.h:55
 AliAnalysisTaskCLQA.h:56
 AliAnalysisTaskCLQA.h:57
 AliAnalysisTaskCLQA.h:58
 AliAnalysisTaskCLQA.h:59
 AliAnalysisTaskCLQA.h:60
 AliAnalysisTaskCLQA.h:61
 AliAnalysisTaskCLQA.h:62
 AliAnalysisTaskCLQA.h:63
 AliAnalysisTaskCLQA.h:64
 AliAnalysisTaskCLQA.h:65
 AliAnalysisTaskCLQA.h:66
 AliAnalysisTaskCLQA.h:67
 AliAnalysisTaskCLQA.h:68
 AliAnalysisTaskCLQA.h:69
 AliAnalysisTaskCLQA.h:70
 AliAnalysisTaskCLQA.h:71
 AliAnalysisTaskCLQA.h:72
 AliAnalysisTaskCLQA.h:73
 AliAnalysisTaskCLQA.h:74
 AliAnalysisTaskCLQA.h:75
 AliAnalysisTaskCLQA.h:76
 AliAnalysisTaskCLQA.h:77
 AliAnalysisTaskCLQA.h:78
 AliAnalysisTaskCLQA.h:79
 AliAnalysisTaskCLQA.h:80
 AliAnalysisTaskCLQA.h:81
 AliAnalysisTaskCLQA.h:82
 AliAnalysisTaskCLQA.h:83
 AliAnalysisTaskCLQA.h:84
 AliAnalysisTaskCLQA.h:85
 AliAnalysisTaskCLQA.h:86
 AliAnalysisTaskCLQA.h:87
 AliAnalysisTaskCLQA.h:88
 AliAnalysisTaskCLQA.h:89
 AliAnalysisTaskCLQA.h:90
 AliAnalysisTaskCLQA.h:91
 AliAnalysisTaskCLQA.h:92
 AliAnalysisTaskCLQA.h:93
 AliAnalysisTaskCLQA.h:94
 AliAnalysisTaskCLQA.h:95
 AliAnalysisTaskCLQA.h:96
 AliAnalysisTaskCLQA.h:97
 AliAnalysisTaskCLQA.h:98
 AliAnalysisTaskCLQA.h:99
 AliAnalysisTaskCLQA.h:100
 AliAnalysisTaskCLQA.h:101
 AliAnalysisTaskCLQA.h:102
 AliAnalysisTaskCLQA.h:103
 AliAnalysisTaskCLQA.h:104
 AliAnalysisTaskCLQA.h:105
 AliAnalysisTaskCLQA.h:106
 AliAnalysisTaskCLQA.h:107
 AliAnalysisTaskCLQA.h:108
 AliAnalysisTaskCLQA.h:109
 AliAnalysisTaskCLQA.h:110
 AliAnalysisTaskCLQA.h:111
 AliAnalysisTaskCLQA.h:112
 AliAnalysisTaskCLQA.h:113
 AliAnalysisTaskCLQA.h:114
 AliAnalysisTaskCLQA.h:115
 AliAnalysisTaskCLQA.h:116
 AliAnalysisTaskCLQA.h:117
 AliAnalysisTaskCLQA.h:118
 AliAnalysisTaskCLQA.h:119
 AliAnalysisTaskCLQA.h:120
 AliAnalysisTaskCLQA.h:121
 AliAnalysisTaskCLQA.h:122
 AliAnalysisTaskCLQA.h:123
 AliAnalysisTaskCLQA.h:124
 AliAnalysisTaskCLQA.h:125
 AliAnalysisTaskCLQA.h:126
 AliAnalysisTaskCLQA.h:127