ROOT logo
#ifndef ALIANALYSISTASKJETSHAPECONST_H
#define ALIANALYSISTASKJETSHAPECONST_H

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

#include "AliAnalysisTaskEmcalJet.h"

class AliAnalysisTaskJetShapeConst : public AliAnalysisTaskEmcalJet {
 public:
  enum JetMassVarType {
    kMass   = 0,  //jet mass
    kRatMPt = 1    //ratio mass/pt jet
  };

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

  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 SetJetContainerNoEmb(Int_t c)                            { fContainerNoEmb    = c   ; }
  void SetMinFractionShared(Double_t f)                         { fMinFractionShared = f   ; }
  void SetSingleTrackEmbedding(Bool_t b)                        { fSingleTrackEmb    = b   ; }
  void SetJetMassVarType(JetMassVarType t)                      { fJetMassVarType    = t   ; }
  void SetUseSumw2(Bool_t b)                                    { fUseSumw2          = b   ; }

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

  AliVParticle*                       GetEmbeddedConstituent(AliEmcalJet *jet);

 private:
  Int_t                               fContainerBase;              // jets to be analyzed
  Int_t                               fContainerSub;               // subtracted jets to be analyzed
  Int_t                               fContainerNoEmb;             // subtracted jets from Pb-Pb only events
  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
  JetMassVarType                      fJetMassVarType;             // observable to use
  Bool_t                              fUseSumw2;                   // activate sumw2 for output histograms

  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

  TH2F          **fh2MSubMatch;                                    //! subtracted jet mass vs match index (0: no match; 1:match)
  TH2F          **fh2MSubPtRawAll;                                 //! subtracted jet mass vs subtracted jet pT
  TH3F          **fh3MSubPtRawDRMatch;                             //! subtracted jet mass vs subtracted jet pT vs distance to leading Pb-Pb jet
  TH3F          **fh3MSubPtTrueDR;                                 //! subtracted jet mass vs true jet pT vs DR for matched jets for matched jets 
  TH3F          **fh3MTruePtTrueDR;                                //! true jet mass vs true jet pT vs DR for matched jets for matched jets
  TH3F          **fh3PtTrueDeltaMDR;                               //! true jet pT vs (Msub - Mtrue) vs distance to leading Pb-Pb jet for matched jets
  TH3F          **fh3PtTrueDeltaMRelDR;                            //! true jet pT vs (Msub - Mtrue)/Mtrue vs DR for matched jets
  THnSparse     **fhnMassResponse;                                 //! Msub vs Mtrue vs PtCorr vs PtTrue vs DR

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

  ClassDef(AliAnalysisTaskJetShapeConst, 5)
};
#endif



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