ROOT logo
#ifndef ALIANALYSISTASKSAQA_H
#define ALIANALYSISTASKSAQA_H

// $Id$

class TH1;
class TH2;
class TH3;
class THnSparse;
class AliVVZERO;

#include "AliAnalysisTaskEmcalJet.h"

class AliAnalysisTaskSAQA : public AliAnalysisTaskEmcalJet {
 public:
  AliAnalysisTaskSAQA();
  AliAnalysisTaskSAQA(const char *name);
  virtual ~AliAnalysisTaskSAQA();

  void                        UserCreateOutputObjects();

  void                        SetCellEnergyCut(Float_t cut)                        { fCellEnergyCut      = cut        ; }
  void                        SetParticleLevel(Bool_t s)                           { fParticleLevel      = s          ; }
  void                        SetMC(Bool_t m)                                      { fIsMC               = m          ; }
  void                        SetAdditionalCentEst(const char* meth2, const char* meth3="") { fCentMethod2 = meth2; fCentMethod3 = meth3; }
  void                        SetDoV0QA(Int_t b)                                   { fDoV0QA             = b          ; }
  void                        SetDoEPQA(Int_t b)                                   { fDoEPQA             = b          ; }
  void                        SetMaxCellsInCluster(Int_t b)                        { fMaxCellsInCluster  = b          ; }
  void                        SetDoLeadingObjectPosition(Int_t b)                  { fDoLeadingObjectPosition = b     ; }

 protected:

  void                        AllocateHistogramArrays()                                     ;
  void                        ExecOnce()                                                    ;
  Bool_t                      FillHistograms()                                              ;
  void                        FillEventQAHisto(Float_t cent, Float_t cent2, Float_t cent3, Float_t v0a, Float_t v0c, Float_t ep, Float_t rho, 
					       Int_t ntracks, Int_t nclusters, Int_t ncells, Int_t njets, 
					       Float_t maxTrackPt, Float_t maxTrackEta, Float_t maxTrackPhi,
					       Float_t maxClusterE, Float_t maxClusterEta, Float_t maxClusterPhi,
					       Float_t maxJetPt, Float_t maxJetEta, Float_t maxJetPhi);
  Bool_t                      RetrieveEventObjects()                                        ;
  Int_t                       DoCellLoop(Float_t &sum)                    ;
  Int_t                       DoTrackLoop(Float_t &sum, AliVParticle* &leading)             ;
  Int_t                       DoClusterLoop(Float_t &sum, AliVCluster* &leading)            ;
  Int_t                       DoJetLoop(AliEmcalJet* &leading)                              ;
  Double_t                    GetFcross(AliVCluster *cluster, AliVCaloCells *cells)         ;

  Float_t                     fCellEnergyCut;            // Energy cell cut
  Bool_t                      fParticleLevel;            // Set particle level analysis
  Bool_t                      fIsMC;                     // Trigger, MC analysis
  TString                     fCentMethod2;              // Centrality method 2
  TString                     fCentMethod3;              // Centrality method 3
  Int_t                       fDoV0QA;                   // Add V0 QA histograms
  Int_t                       fDoEPQA;                   // Add event plane QA histograms
  Int_t                       fDoLeadingObjectPosition;  // Add axis for leading object position (eta-phi)
  Int_t                       fMaxCellsInCluster;        // Maximum number (approx) of cells in a cluster
  Double_t                    fCent2;                    //!Event centrality with method 2
  Double_t                    fCent3;                    //!Event centrality with method 3
  AliVVZERO                  *fVZERO;                    //!Event V0 object
  Double_t                    fV0ATotMult;               //!Event V0A total multiplicity
  Double_t                    fV0CTotMult;               //!Event V0C total multiplicity
 
  // General histograms
  THnSparse                  *fHistEventQA;              //!Event-wise QA observables

  // Tracks
  TH1                       **fHistTrNegativeLabels;  //!Percentage of negative label tracks
  TH1                       **fHistTrZeroLabels;      //!Percentage of tracks with label=0
  TH3                      ***fHistTrPhiEtaPt;        //!Phi-Eta-Pt distribution of tracks
  TH2                       **fHistTrPhiEtaZeroLab;   //!Phi-Eta distribution of tracks with label=0
  TH1                       **fHistTrPtZeroLab;       //!Pt distribution of tracks with label=0
  TH2                       **fHistTrEmcPhiEta;       //!Phi-Eta emcal propagated distribution of tracks
  TH1                       **fHistTrEmcPt;           //!Pt emcal propagated distribution of tracks
  TH2                       **fHistTrPhiEtaNonProp;   //!Phi-Eta distribution of non emcal propagated tracks
  TH1                       **fHistTrPtNonProp;       //!Pt distribution of non emcal propagated tracks
  TH2                       **fHistDeltaEtaPt;        //!Eta-EtaProp vs. Pt
  TH2                       **fHistDeltaPhiPt;        //!Phi-PhiProp vs. Pt
  TH2                       **fHistDeltaPtvsPt;       //!Pt-PtProp vs. Pt

  // Clusters
  TH3                       **fHistClusPhiEtaEnergy;       //!Phi-Eta-Energy distribution of clusters
  TH2                       **fHistClusDeltaPhiEPEnergy;   //!DeltaPhi EP vs Energy of clusters
  TH2                       **fHistNCellsEnergy;           //!Number of cells vs. energy of cluster
  TH2                       **fHistFcrossEnergy;           //!Fcross vs. energy of cluster
  TH2                       **fHistClusTimeEnergy;         //!Time vs. energy of cluster
  TH1                       **fHistClusMCEnergyFraction;   //!MC energy fraction (embedding)

  // EMCAL Cells
  TH2                       **fHistCellsAbsIdEnergy;  //!Energy spectrum of cells

  // Jets
  TH2                       **fHistJetsPhiEta;        //!Phi-Eta distribution of jets
  TH2                       **fHistJetsPtArea;        //!Pt vs. area of jets

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

  ClassDef(AliAnalysisTaskSAQA, 23) // Quality task for Emcal analysis
};
#endif
 AliAnalysisTaskSAQA.h:1
 AliAnalysisTaskSAQA.h:2
 AliAnalysisTaskSAQA.h:3
 AliAnalysisTaskSAQA.h:4
 AliAnalysisTaskSAQA.h:5
 AliAnalysisTaskSAQA.h:6
 AliAnalysisTaskSAQA.h:7
 AliAnalysisTaskSAQA.h:8
 AliAnalysisTaskSAQA.h:9
 AliAnalysisTaskSAQA.h:10
 AliAnalysisTaskSAQA.h:11
 AliAnalysisTaskSAQA.h:12
 AliAnalysisTaskSAQA.h:13
 AliAnalysisTaskSAQA.h:14
 AliAnalysisTaskSAQA.h:15
 AliAnalysisTaskSAQA.h:16
 AliAnalysisTaskSAQA.h:17
 AliAnalysisTaskSAQA.h:18
 AliAnalysisTaskSAQA.h:19
 AliAnalysisTaskSAQA.h:20
 AliAnalysisTaskSAQA.h:21
 AliAnalysisTaskSAQA.h:22
 AliAnalysisTaskSAQA.h:23
 AliAnalysisTaskSAQA.h:24
 AliAnalysisTaskSAQA.h:25
 AliAnalysisTaskSAQA.h:26
 AliAnalysisTaskSAQA.h:27
 AliAnalysisTaskSAQA.h:28
 AliAnalysisTaskSAQA.h:29
 AliAnalysisTaskSAQA.h:30
 AliAnalysisTaskSAQA.h:31
 AliAnalysisTaskSAQA.h:32
 AliAnalysisTaskSAQA.h:33
 AliAnalysisTaskSAQA.h:34
 AliAnalysisTaskSAQA.h:35
 AliAnalysisTaskSAQA.h:36
 AliAnalysisTaskSAQA.h:37
 AliAnalysisTaskSAQA.h:38
 AliAnalysisTaskSAQA.h:39
 AliAnalysisTaskSAQA.h:40
 AliAnalysisTaskSAQA.h:41
 AliAnalysisTaskSAQA.h:42
 AliAnalysisTaskSAQA.h:43
 AliAnalysisTaskSAQA.h:44
 AliAnalysisTaskSAQA.h:45
 AliAnalysisTaskSAQA.h:46
 AliAnalysisTaskSAQA.h:47
 AliAnalysisTaskSAQA.h:48
 AliAnalysisTaskSAQA.h:49
 AliAnalysisTaskSAQA.h:50
 AliAnalysisTaskSAQA.h:51
 AliAnalysisTaskSAQA.h:52
 AliAnalysisTaskSAQA.h:53
 AliAnalysisTaskSAQA.h:54
 AliAnalysisTaskSAQA.h:55
 AliAnalysisTaskSAQA.h:56
 AliAnalysisTaskSAQA.h:57
 AliAnalysisTaskSAQA.h:58
 AliAnalysisTaskSAQA.h:59
 AliAnalysisTaskSAQA.h:60
 AliAnalysisTaskSAQA.h:61
 AliAnalysisTaskSAQA.h:62
 AliAnalysisTaskSAQA.h:63
 AliAnalysisTaskSAQA.h:64
 AliAnalysisTaskSAQA.h:65
 AliAnalysisTaskSAQA.h:66
 AliAnalysisTaskSAQA.h:67
 AliAnalysisTaskSAQA.h:68
 AliAnalysisTaskSAQA.h:69
 AliAnalysisTaskSAQA.h:70
 AliAnalysisTaskSAQA.h:71
 AliAnalysisTaskSAQA.h:72
 AliAnalysisTaskSAQA.h:73
 AliAnalysisTaskSAQA.h:74
 AliAnalysisTaskSAQA.h:75
 AliAnalysisTaskSAQA.h:76
 AliAnalysisTaskSAQA.h:77
 AliAnalysisTaskSAQA.h:78
 AliAnalysisTaskSAQA.h:79
 AliAnalysisTaskSAQA.h:80
 AliAnalysisTaskSAQA.h:81
 AliAnalysisTaskSAQA.h:82
 AliAnalysisTaskSAQA.h:83
 AliAnalysisTaskSAQA.h:84
 AliAnalysisTaskSAQA.h:85
 AliAnalysisTaskSAQA.h:86
 AliAnalysisTaskSAQA.h:87
 AliAnalysisTaskSAQA.h:88
 AliAnalysisTaskSAQA.h:89
 AliAnalysisTaskSAQA.h:90
 AliAnalysisTaskSAQA.h:91
 AliAnalysisTaskSAQA.h:92
 AliAnalysisTaskSAQA.h:93
 AliAnalysisTaskSAQA.h:94
 AliAnalysisTaskSAQA.h:95
 AliAnalysisTaskSAQA.h:96
 AliAnalysisTaskSAQA.h:97
 AliAnalysisTaskSAQA.h:98
 AliAnalysisTaskSAQA.h:99
 AliAnalysisTaskSAQA.h:100
 AliAnalysisTaskSAQA.h:101