ROOT logo
#ifndef ALIANALYSISTASKEMCALJETTRIGGERQA_H
#define ALIANALYSISTASKEMCALJETTRIGGERQA_H

class TH1;
class TH2;
class TH3;
class TH3F;
class TProfile;
class TClonesArray;
class TArrayI;

#include <TRef.h>
#include <TBits.h>
#include <TMath.h>

#include <AliVEvent.h>

#include "AliAnalysisTaskEmcalJet.h"

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

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

  Bool_t                      SelectEvent();              //decides if event is used for analysis
  void                        FillTriggerPatchHistos();

  //Setters
  void SetDebug(Int_t d)                    { fDebug = d;}
  void SetTriggerClass(const char *n)       { fTriggerClass = n; }
  void SetNFastorPatch(Int_t i)             { fNFastOR = i;}
 
  void SetContainerFull(Int_t c)            { fContainerFull      = c;}
  void SetContainerCharged(Int_t c)         { fContainerCharged   = c;}

  void SetMainTriggerTypeCat(TriggerCategory cat, Bool_t b) {fMainTrigCat = cat; fMainTrigSimple = b;}

  Int_t    GetLeadingCellId(const AliVCluster *clus) const;
  Double_t GetEnergyLeadingCell(const AliVCluster *clus) const;
  Double_t GetECross(Int_t absID) const;

  Double_t GetZ(const AliVParticle *trk, const AliEmcalJet *jet)       const;
  Double_t GetZ(Double_t trkPx, Double_t trkPy, Double_t trkPz, Double_t jetPx, Double_t jetPy, Double_t jetPz) const;

 protected:
  Bool_t                      FillHistograms()   ;
  Bool_t                      Run()              ;
  Float_t                     RelativeEP(Double_t objAng, Double_t EPAng) const;
  Bool_t                      TestFilterBit(Int_t trigBit, UInt_t bitJetTrig) const {return (Bool_t) ((trigBit & bitJetTrig) != 0);}

 private:
  Bool_t             fDebug;                 // debug level
  TString            fTriggerClass;          // trigger class to analyze EJ1 or EJ2    
  Int_t              fContainerFull;         // number of container with full jets DET
  Int_t              fContainerCharged;      // number of container with charged jets DET
  Double_t           fMaxPatchEnergy;        // energy of patch with largest energy (offline)
  Double_t           fMaxPatchADCEnergy;     // energy of patch with largest energy from online ADC
  Int_t              fTriggerType;           // trigger type
  Int_t              fNFastOR;               // size of trigger patch fNFastORxfNFastOR
  TriggerCategory    fMainTrigCat;           // trigger category for main trigger
  Bool_t             fMainTrigSimple;        // use offline trigger instead of online

  TH1F     *fhNEvents;                         //! Histo number of events
  TProfile *fhTriggerbit;                      //! histogram containing the triggerbit (fOfflineTriggerMask)
  TH2F     *fHistRhovsCentFull;                //! rho vs. centrality
  TH2F     *fHistRhovsCentCharged;             //! rho vs. centrality
  TH3F     *fh3PtEtaPhiTracks;                 //! pt,eta,phi of tracks at vertex
  TH3F     *fh3PtEtaPhiTracksOnEmcal;          //! pt,eta,phi of tracks at Emcal surface
  TH3F     *fh3PtEtaPhiTracksToProp;           //! pt,eta,phi of tracks at vertex
  TH3F     *fh3PtEtaPhiTracksProp;             //! pt,eta,phi of tracks at vertex
  TH3F     *fh3PtEtaPhiTracksNoProp;           //! pt,eta,phi of tracks at vertex
  TH2F     *fh2CentPtJetFull;                  //! cent, pt of full jets
  TH2F     *fh2CentPtJetCharged;               //! cent, pt of charged jets
  TH3F     *fh3PtEtaPhiJetFull;                //! pt,eta,phi of full jets
  TH3F     *fh3PtEtaPhiJetCharged;             //! pt,eta,phi of charged jets
  TH2F     *fh2NJetsPtFull;                    //! NJets per event vs pT,jet
  TH2F     *fh2NJetsPtCharged;                 //! NJets per event vs pT,jet
  TH3F     *fh3PtEtaAreaJetFull;               //! pt,eta,area of full jet
  TH3F     *fh3PtEtaAreaJetCharged;            //! pt,eta,area of charged jets
  TH2F     *fh2PtNConstituentsCharged;         //! pt, # charged jet constituents
  TH2F     *fh2PtNConstituents;                //! pt, # jet constituents
  TH2F     *fh2PtMeanPtConstituentsCharged;    //! pt, <pt> charged constituents
  TH2F     *fh2PtMeanPtConstituentsNeutral;    //! pt, <pt> neutral constituents
  TH2F     *fh2PtNEF;                          //! pt, NEF (neutral energy fraction)
  TH3F     *fh3NEFEtaPhi;                      //! NEF, eta, phi
  TH2F     *fh2NEFNConstituentsCharged;        //! NEF, # charged jet constituents
  TH2F     *fh2NEFNConstituentsNeutral;        //! NEF, # neutral jet constituents
  TH2F     *fh2Ptz;                            //! pt, z=pT,h,proj/p,jet full jet
  TH2F     *fh2PtzCharged;                     //! pt, z=pT,h,proj/p,jet charged jet
  TH2F     *fh2PtLeadJet1VsLeadJet2;           //! correlation between leading jet of the two branches
  TH3F     *fh3EEtaPhiCluster;                 //! cluster E, eta, phi
  TH3F     *fh3PtLeadJet1VsPatchEnergy;        //! leading jet energy vs leading patch energy vs jet trigger (J1/J2)
  TH3F     *fh3PtLeadJet2VsPatchEnergy;        //! leading jet energy vs leading patch energy vs jet trigger (J1/J2)
  TH3F     *fh3PtLeadJet1PatchEnergyVZEROAmp;  //! leading jet energy vs leading patch energy vs VZERO amplitude
  TH3F     *fh3PtLeadJet1RawPatchEnergyVZEROAmp;  //! leading jet energy vs online leading patch energy vs VZERO amplitude
  TH3F     *fh3PatchEnergyEtaPhiCenterJ1;      //! patch energy vs eta, phi at center of patch, high threshold
  TH3F     *fh3PatchEnergyEtaPhiCenterJ2;      //! patch energy vs eta, phi at center of patch, low threshold
  TH3F     *fh3PatchEnergyEtaPhiCenterJ1J2;    //! patch energy vs eta, phi at center of patch, low + high threshold
  TH3F     *fh3PatchADCEnergyEtaPhiCenterJ1;   //! patch ADC energy vs eta, phi at center of patch, high threshold
  TH3F     *fh3PatchADCEnergyEtaPhiCenterJ2;   //! patch ADC energy vs eta, phi at center of patch, low threshold
  TH3F     *fh3PatchADCEnergyEtaPhiCenterJ1J2; //! patch ADC energy vs eta, phi at center of patch, low + high threshold
  TH3F     *fh3PatchADCEnergyEtaPhiCenterAll;  //! patch ADC energy vs eta, phi at center of patch, all trigger patches
  TH3F     *fh3EEtaPhiCell;                    //! cell E, eta, phi
  TH2F     *fh2ECellVsCent;                    //! cell E vs centrality
  TH2F     *fh2CellEnergyVsTime;               //! emcal cell energy vs time
  TH3F     *fh3EClusELeadingCellVsTime;        //! cluster energy vs energy of leading cell in cluster vs time of the leading cell
  TH3F     *fh3JetReacCent;                    //! jet energy vs cent vs dphi(jet,event plane)

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

  ClassDef(AliAnalysisTaskEmcalJetTriggerQA, 15)
};
#endif


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