ROOT logo
#ifndef AliAnalysisTaskHFEemcQA_cxx
#define AliAnalysisTaskHFEemcQA_cxx

//QA task for EMCAL electron analysis 

class TH1F;
class THnSparse;
class AliESDEvent;
class AliAODEvent;
class AliHFEcontainer;
class AliHFEcuts;
class AliHFEpid;
class AliHFEpidQAmanager;
class AliCFManager;

#include "AliAnalysisTaskSE.h"

class AliAnalysisTaskHFEemcQA : public AliAnalysisTaskSE {
  public:
    AliAnalysisTaskHFEemcQA();
    AliAnalysisTaskHFEemcQA(const char *name);
    virtual ~AliAnalysisTaskHFEemcQA();

    virtual void   UserCreateOutputObjects();
    virtual void   UserExec(Option_t *option);
    virtual void   Terminate(Option_t *);

    void SetAODAnalysis() { SetBit(kAODanalysis, kTRUE); };
    void SetESDAnalysis() { SetBit(kAODanalysis, kFALSE); };
    Bool_t IsAODanalysis() const { return TestBit(kAODanalysis); };

    Bool_t GetElecIDsparse() {return fFlagSparse;};
    void SetElecIDsparse(Bool_t flagelecIDsparse){fFlagSparse = flagelecIDsparse;};
    
    Bool_t GetTenderSwitch() {return fUseTender;};
    void SetTenderSwitch(Bool_t usetender){fUseTender = usetender;};

  private:
    enum{
      kAODanalysis = BIT(20),
    };

    AliVEvent   *fVevent;  //!event object
    AliESDEvent *fESD;    //!ESD object
    AliAODEvent *fAOD;    //!AOD object
    AliPIDResponse *fpidResponse; //!pid response

    Bool_t      fFlagSparse;// switch to THnspare
    Bool_t       fUseTender;// switch to add tender
    
    TClonesArray  *fTracks_tender;
    TClonesArray  *fCaloClusters_tender;

    TList       *fOutputList; //!Output list
    TH1F        *fNevents;//! no of events
    TH1F        *fVtxZ;//!Vertex z 
    TH1F        *fVtxX;//!Vertex x 
    TH1F        *fVtxY;//!Vertex y 
    TH2F        *fTrigMulti;//!trigger multiplicity 
    TH1F        *fHistClustE;//!cluster energy
    TH2F        *fEMCClsEtaPhi;//! EMC cluster eta and phi
    TH1F        *fHistoNCls;//! No of clusters per event
    TH1F        *fHistoNClsE1;//! No of clusters per event
    TH1F        *fHistoNClsE2;//! No of clusters per event
    TH1F        *fHistoNClsE3;//! No of clusters per event
    //TH1F        *fHistoNCells;//! No of cells per cluster
    TH2F        *fHistoNCells;//! No of cells per cluster
    TH2F        *fHistoCalCell;//! No of cells per cluster
    TH2F        *fHistoCalTime;
    TH2F        *fHistoCalCellTime;
    TH1F        *fNegTrkIDPt;//!neg track ID
    TH1F        *fTrkPt;//!track pt
    TH1F        *fTrketa;//!track eta
    TH1F        *fTrkphi;//!track phi 
    TH2F        *fdEdx;//!dedx vs pt
    TH2F        *fTPCNpts;//!TPC Npoints used for dedx
    TH2F        *fTPCnsig;//!TPC Nsigma
    TH1F        *fHistPtMatch;//!tracks matched to EMCAL 
    TH2F        *fEMCTrkMatch;//!Distance of EMC cluster to closest track in phi and z
    TH1F        *fEMCTrkPt;//!tracks with EMCAL cluster
    TH1F        *fEMCTrketa;//!EMC trk eta
    TH1F        *fEMCTrkphi;//!EMC trk phi
    TH2F        *fEMCdEdx;//!EMC trk dedx
    TH2F        *fEMCTPCnsig;//! EMC trk nsig
    TH2F        *fEMCTPCNpts;//!EMC Npoints used for dedx
    TH1F        *fClsEAftMatch;//!EMC Cluster energy after track matching 
    TH2F        *fHistdEdxEop;//!E/p vs dedx
    TH2F        *fHistNsigEop;//!E/p vs dedx
    TH2F        *fHistEop;//!pt vs E/p
    TH2F        *fM20;//!M20 vs pt
    TH2F        *fM02;//!M20 vs pt
    TH2F        *fM20EovP;//!M20 vs E/p
    TH2F        *fM02EovP;//!M20 vs E/p
    TH2F        *fEleCanTPCNpts;//!ele cand TPC Npoints used for dedx
    TH2F        *fEleCanTPCNCls;//!ele cand TPC N clusters
    TH2F        *fEleCanITSNCls;//!ele cand ITS N clusters
    TH1F        *fEleCanITShit;//!ele cand ITS hit map
    TH2F        *fEleCanSPD1;//!ele cand hit SPD layer 1
    TH2F        *fEleCanSPD2;//!ele cand hit SPD layer 2
    TH2F        *fEleCanSPDBoth;//!ele cand SPD both layer
    TH2F        *fEleCanSPDOr;//!ele cand SPD or

    THnSparse  *fSparseElectron;//!Electron info 
    Double_t *fvalueElectron;//!Electron info

    AliAnalysisTaskHFEemcQA(const AliAnalysisTaskHFEemcQA&); // not implemented
    AliAnalysisTaskHFEemcQA& operator=(const AliAnalysisTaskHFEemcQA&); // not implemented

    ClassDef(AliAnalysisTaskHFEemcQA, 1); // example of analysis
};

#endif


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