ROOT logo
#ifndef ALIANALYSISTASKEMCALDIJETANA_H
#define ALIANALYSISTASKEMCALDIJETANA_H

class TH1;
class TH2;
class TH3;
class TH3F;
class THnSparse;
class TClonesArray;
class TArrayI;
class AliAnalysisManager;
class AliGenPythiaEventHeader;

#include "AliJetContainer.h"

#include "AliAnalysisTaskEmcalDiJetBase.h"

class AliAnalysisTaskEmcalDiJetAna : public AliAnalysisTaskEmcalDiJetBase {
 public:
  AliAnalysisTaskEmcalDiJetAna();
  AliAnalysisTaskEmcalDiJetAna(const char *name);
  virtual ~AliAnalysisTaskEmcalDiJetAna();

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

  //Setters
  void                        SetMatchFullCharged(Bool_t b)        { fDoMatchFullCharged = b;}
  void                        SetNKtBins(Int_t n)                  { fNKtBins = n;           }
  void                        SetNDiJetEtaBins(Int_t n)            { fNDiJetEtaBins = n;     }
  void                        SetNAjBins(Int_t n)                  { fNAjBins = n;           }

  //Getters
  Int_t                       GetPtTriggerBin(Double_t pt);

 protected:
  Bool_t                      Run()              ;
  void                        CorrelateJets(const Int_t type);
  void                        CorrelateAllJets(const Int_t type);
  void                        CorrelateTwoJets(const Int_t type);
  void                        CorrelateLeadingSubleadingJets(const Int_t type);
  AliEmcalJet                *GetLeadingJet(const Int_t type);
  AliEmcalJet                *GetLeadingAssociatedJet(const Int_t type, AliEmcalJet *jetTrig);
  AliEmcalJet                *GetSecondLeadingAssociatedJet(const Int_t type, AliEmcalJet *jetTrig);

  Bool_t                      FillHistograms()   ;
  void                        FillDiJetHistos(const AliEmcalJet *jet1 = 0, const AliEmcalJet *jet2 = 0, const Int_t mode = 0);
  void                        FillThreeJetHistos(const AliEmcalJet *jet1 = 0, const AliEmcalJet *jet2 = 0, const AliEmcalJet *jet3 = 0, const Int_t mode = 0);
  Bool_t                      RetrieveEventObjects();

  void                        FillMatchFullChargedHistos(Int_t cFull,Int_t cCharged);
  Int_t                       MatchFullAndChargedJets(Int_t cFull, Int_t cCharged);

 private:
  Bool_t            fDoMatchFullCharged;                  //  do full-charged matching histos
  Int_t             fNKtBins;                             // nbins on kT axis
  Int_t             fNDiJetEtaBins;                       // nbins on dijet eta axis
  Int_t             fNAjBins;                             // nbins on Aj axis
  TH2F             *fh2CentRhoCh;                         //! cent vs rho charged
  TH2F             *fh2CentRhoScaled;                     //! cent vs rho scaled
  TH3F             *fh3PtEtaPhiJetFull;                   //! pt,eta,phi of full jets
  TH3F             *fh3PtEtaPhiJetCharged;                //! pt,eta,phi of charged jets

  THnSparse        *fhnDiJetVarsFull;                     //! sparse with di-jet properties (full-full)
  THnSparse        *fhnDiJetVarsCh;                       //! sparse with di-jet properties (charged-charged)
  THnSparse        *fhnDiJetVarsFullCharged;              //! sparse with di-jet properties (full-charged)
  THnSparse        *fhnMatchingFullCharged;               //! sparse comparing full with matched charged jet

  TH3F             *fh3DiJetKtNEFPtAssoc[4];              //! dijet kt vs NEF vs pTassoc for 4 trigger intervals

  TH3F             *fCentCorrPtAssocCh[4];                //! default(V0A) vs ZNA centrality vs pT trigger assoc
  TH3F             *fCentCorrPtAssocFuCh[4];              //! default(V0A) vs ZNA centrality vs pT trigger assoc

  TH3F             *fAjPtAssocCentCh[4];                  //! Aj vs pT trigger assoc vs centrality
  TH3F             *fAjPtAssocCentFuCh[4];                //! Aj vs pT trigger assoc vs centrality

  TH3F             *fh3PtTrigKt1Kt2Ch;                    //! ptTrig vs kT1 vs kT2 for 3-jet events
  TH3F             *fh3PtTrigKt1Kt2FuCh;                  //! ptTrig vs kT1 vs kT2 for 3-jet events

  TH3F             *fh3PtTrigDPhi1DPhi2Ch;                //! ptTrig vs DPhi12 vs DPhi13 for 3-jet events
  TH3F             *fh3PtTrigDPhi1DPhi2FuCh;              //! ptTrig vs DPhi12 vs DPhi13 for 3-jet events

  TH3F             *fh3PtAssoc1PtAssoc2DPhi23Ch[4];       //! ptAssoc1 vs ptAssoc2 vs DPhi23 for 3-jet events
  TH3F             *fh3PtAssoc1PtAssoc2DPhi23FuCh[4];     //! ptAssoc1 vs ptAssoc2 vs DPhi23 for 3-jet events

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

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