ROOT logo
#ifndef ALIANALYSISTASKJETSHAPEDERIV_H
#define ALIANALYSISTASKJETSHAPEDERIV_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 AliAnalysisTaskJetShapeDeriv : public AliAnalysisTaskEmcalJet {
 public:
  enum JetMassVarType {
    kMass   = 0,  //jet mass
    kRatMPt = 1    //ratio mass/pt jet
  };

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

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

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

  void SetJetContainerBase(Int_t c)                             { fContainerBase     = 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                               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
  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
  Float_t         fM1st;                                           // 1st order subtracted jet mass
  Float_t         fM2nd;                                           // 2nd order subtracted jet mass
  Float_t         fDeriv1st;                                       // 1st derivative
  Float_t         fDeriv2nd;                                       // 2nd derivative
  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

  TH2F          **fh2PtTrueSubFacV1;                               //! true pT vs -(rho+rhom)*V1
  TH2F          **fh2PtRawSubFacV1;                                //! raw pT vs -(rho+rhom)*V1
  TH2F          **fh2PtCorrSubFacV1;                               //! subtracted pT vs -(rho+rhom)*V1
  TH2F          **fh2NConstSubFacV1;                               //! N constituents vs -(rho+rhom)*V1
  TH2F          **fh2PtTrueSubFacV2;                               //! true pT vs 0.5(rho+rhom)^2*V2
  TH2F          **fh2PtRawSubFacV2;                                //! raw pT vs 0.5(rho+rhom)^2*V2
  TH2F          **fh2PtCorrSubFacV2;                               //! subtracted pT vs 0.5(rho+rhom)^2*V2
  TH2F          **fh2NConstSubFacV2;                               //! N constituents vs 0.5(rho+rhom)^2*V2

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

  ClassDef(AliAnalysisTaskJetShapeDeriv, 5)
};
#endif



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