ROOT logo
#ifndef ALIANALYSISTASKJETSHAPEGR_H
#define ALIANALYSISTASKJETSHAPEGR_H

class TH1;
class TH2;
class TH3;
class TH3F;
class THnSparse;
class TF1;
class TLorentzVector;
class TClonesArray;
class TArrayI;
class TTree;
class TLorentzVector;
class AliAnalysisManager;
class AliVParticle;
class AliJetContainer;

namespace fastjet {
  class PseudoJet;
  class GenericSubtractor;
}

#include "AliAnalysisTaskEmcalJet.h"

class AliAnalysisTaskJetShapeGR : public AliAnalysisTaskEmcalJet {
 public:

  AliAnalysisTaskJetShapeGR();
  AliAnalysisTaskJetShapeGR(const char *name);
  virtual ~AliAnalysisTaskJetShapeGR();

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

  //Setters
  void SetCreateTree(Bool_t b)                                  { fCreateTree        = b   ; }

  void SetJetContainerBase(Int_t c)                             { fContainerBase     = c   ; }
  void SetJetContainerSub(Int_t c)                              { fContainerSub      = c   ; }
  void SetJetContainerTrue(Int_t c)                             { fContainerTrue     = c   ; }
  void SetMinFractionShared(Double_t f)                         { fMinFractionShared = f   ; }
  void SetSingleTrackEmbedding(Bool_t b)                        { fSingleTrackEmb    = b   ; }

 protected:
  Bool_t                              RetrieveEventObjects();
  Bool_t                              Run();
  Bool_t                              FillHistograms();
  Bool_t                              FillTrueJets();

  AliVParticle*                       GetEmbeddedConstituent(AliEmcalJet *jet);

  Double_t                            CalcGR(AliEmcalJet *jet, Int_t ic);
  Double_t                            CalcDeltaGR(AliEmcalJet *jet, Int_t ic, TArrayF *fNum, TArrayF *fDen);//Double_t *num, Double_t *den);
  Double_t                            GetDeltaPhi(Double_t phi1,Double_t phi2);

  Int_t                               fContainerBase;              // jets to be analyzed
  Int_t                               fContainerSub;               // subtracted jets to be analyzed
  Int_t                               fContainerTrue;              // true jets to be analyzed
  Double_t                            fMinFractionShared;          // only fill histos for jets if shared fraction larger than X
  Bool_t                              fSingleTrackEmb;             // single track embedding
  Bool_t                              fCreateTree;                 // create output tree

  TTree           *fTreeJetBkg;                                    //!tree with jet and bkg variables
  TLorentzVector  *fJet1Vec;                                       // jet1(AA) vector  
  TLorentzVector  *fJet2Vec;                                       // jet2(probe) vector
  TLorentzVector  *fJetSubVec;                                     // subtracted AA jet vector
  Float_t         fArea;                                           // area
  Float_t         fAreaPhi;                                        // area phi
  Float_t         fAreaEta;                                        // area eta
  Float_t         fRho;                                            // rho
  Float_t         fRhoM;                                           // rho_m
  Int_t           fNConst;                                         // N constituents in jet1
  Int_t           fMatch;                                          // 1: matched to MC jet; 0: no match
  Double_t        fDRStep;                                         // step width
  Double_t        fMaxR;                                           // max R

  TH2F          **fh2PtTrueDeltaGR;                                 //! true jet pT vs (Msub - Mtrue)
  TH2F          **fh2PtTrueDeltaGRRel;                              //! true jet pT vs (Msub - Mtrue)/Mtrue
  THnSparse     **fhnGRResponse;                                    //! Msub vs Mtrue vs PtCorr vs PtTrue

  //Histos for true jets
  TH1F          **fh1PtTrue;                                        //! bookkeep number of jets vs Pt
  TH3F          **fh3DeltaGRNumRPtTrue;                             //! Numerator of DeltaGR vs R vs Pt
  TH3F          **fh3DeltaGRDenRPtTrue;                             //! Denomerator of DeltaGR vs R vs Pt
  TH2F          **fh2DeltaGRNumRPtTrue;                             //! Numerator of DeltaGR vs R vs Pt : filled with weights of sum
  TH2F          **fh2DeltaGRDenRPtTrue;                             //! Denomerator of DeltaGR vs R vs Pt : filled with weights of sum

  //Histos for raw AA jets
  TH1F          **fh1PtRaw;                                       //! bookkeep number of jets vs Pt
  TH3F          **fh3DeltaGRNumRPtRaw;                            //! Numerator of DeltaGR vs R vs Pt
  TH3F          **fh3DeltaGRDenRPtRaw;                            //! Denomerator of DeltaGR vs R vs Pt
  TH2F          **fh2DeltaGRNumRPtRaw;                            //! Numerator of DeltaGR vs R vs Pt : filled with weights of sum
  TH2F          **fh2DeltaGRDenRPtRaw;                            //! Denomerator of DeltaGR vs R vs Pt : filled with weights of sum

  //Histos for raw AA jets matched to MC
  TH1F          **fh1PtRawMatch;                                  //! bookkeep number of jets vs Pt
  TH3F          **fh3DeltaGRNumRPtRawMatch;                       //! Numerator of DeltaGR vs R vs Pt
  TH3F          **fh3DeltaGRDenRPtRawMatch;                       //! Denomerator of DeltaGR vs R vs Pt
  TH2F          **fh2DeltaGRNumRPtRawMatch;                       //! Numerator of DeltaGR vs R vs Pt : filled with weights of sum
  TH2F          **fh2DeltaGRDenRPtRawMatch;                       //! Denomerator of DeltaGR vs R vs Pt : filled with weights of sum

  //Histos for matched jets and subtracted
  TH1F          **fh1PtMatch;                                       //! bookkeep number of jets vs Pt
  TH3F          **fh3DeltaGRNumRPtMatch;                            //! Numerator of DeltaGR vs R vs Pt
  TH3F          **fh3DeltaGRDenRPtMatch;                            //! Denomerator of DeltaGR vs R vs Pt
  TH2F          **fh2DeltaGRNumRPtMatch;                            //! Numerator of DeltaGR vs R vs Pt : filled with weights of sum
  TH2F          **fh2DeltaGRDenRPtMatch;                            //! Denomerator of DeltaGR vs R vs Pt : filled with weights of sum
  TH2F          **fh2DeltaGRNumRPtTrueMatch;                            //! Numerator of DeltaGR vs R vs Pt : filled with weights of sum
  TH2F          **fh2DeltaGRDenRPtTrueMatch;                            //! Denomerator of DeltaGR vs R vs Pt : filled with weights of sum

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

  ClassDef(AliAnalysisTaskJetShapeGR, 1)
};
#endif



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