ROOT logo
#ifndef ALIANALYSISTASKEMCALJETMASSRESPONSE_H
#define ALIANALYSISTASKEMCALJETMASSRESPONSE_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;

#include "AliAnalysisTaskEmcalJet.h"

class AliAnalysisTaskEmcalJetMassResponse : public AliAnalysisTaskEmcalJet {
 public:

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

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

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

  void SetJetContainerBase(Int_t c)                             { fContainerBase     = c   ; }
  void SetMinFractionShared(Double_t f)                         { fMinFractionShared = f   ; }
  void SetJetMassAverageFunc(TF1 *f)                            { f1JetMassAvg       = f   ; }
  void SetSingleTrackEmbedding(Bool_t b)                        { fSingleTrackEmb    = b   ; }
  void SetSubtractMasslessParticleJet(Bool_t b)                 { fSubtractMassless  = b   ; }

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

  TLorentzVector                      GetSubtractedVector(AliEmcalJet *jet);
  TLorentzVector                      GetSubtractedVectorCheat(AliEmcalJet *jet);
  TLorentzVector                      GetBkgVector(AliEmcalJet *jet, AliJetContainer *cont);
  TLorentzVector                      GetBkgVectorCheat(AliEmcalJet *jet);
  Double_t                            GetJetMass(AliEmcalJet *jet);
  Double_t                            GetJetMassMasslessConstituents(AliEmcalJet *jet);
  AliVParticle*                       GetEmbeddedConstituent(AliEmcalJet *jet);

  Int_t                               fContainerBase;              // jets to be analyzed
  Double_t                            fMinFractionShared;          // only fill histos for jets if shared fraction larger than X
  TF1                                *f1JetMassAvg;                // parametrization of average jet mass
  Bool_t                              fSingleTrackEmb;             // single track embedding
  Bool_t                              fSubtractMassless;           // subtract mass of jet assuming massless particles
  Bool_t                              fCreateTree;                 // create output tree

  TH2F            **fh2PtJet1DeltaMNoSub;                          //!pt jet1 vs delta-pt vs delta-M
  TH2F            **fh2PtJet2DeltaMNoSub;                          //!pt jet2 vs delta-pt vs delta-M

  TH3F            **fh3PtJet1DeltaPtDeltaMCheat;                   //!pt jet1 vs delta-pt vs delta-M
  TH3F            **fh3PtJet2DeltaPtDeltaMCheat;                   //!pt jet2 vs delta-pt vs delta-M

  TH3F            **fh3PtJet1DeltaPtDeltaM;                        //!pt jet1 vs delta-pt vs delta-M
  TH3F            **fh3PtJet2DeltaPtDeltaM;                        //!pt jet2 vs delta-pt vs delta-M
  TH2F            **fh2PtJet1DeltaE;                               //!pt jet1 vs delta-E
  TH2F            **fh2PtJet2DeltaE;                               //!pt jet2 vs delta-E
  TH2F            **fh2PtJet1DeltaP;                               //!pt jet1 vs delta-P
  TH2F            **fh2PtJet2DeltaP;                               //!pt jet2 vs delta-P
  TH2F            **fh2PtJet2DeltaM;                               //!pt jet2 vs delta-M
  TH3F            **fh3PtJet1MJet1MJet2;                           //!pt jet1 vs jet mass jet1 vs jet mass jet2
  TH3F            **fh3PtJet2MJet1MJet2;                           //!pt jet2 vs jet mass jet1 vs jet mass jet2

  TH3F            **fh3PtJet1DeltaPtDeltaMRho;                     //!pt jet1 vs delta-pt vs delta-M
  TH2F            **fh2PtJet1DeltaERho;                            //!pt jet1 vs delta-E
  TH3F            **fh3PtJet2DeltaPtDeltaMRho;                     //!pt jet2 vs delta-pt vs delta-M
  TH2F            **fh2PtJet2DeltaPxRho;                           //!pt jet2 vs delta-px
  TH2F            **fh2PtJet2DeltaPyRho;                           //!pt jet2 vs delta-py
  TH2F            **fh2PtJet2DeltaPzRho;                           //!pt jet2 vs delta-pz
  TH2F            **fh2PtJet2DeltaERho;                            //!pt jet2 vs delta-E
  TH2F            **fh2PtJet2DeltaMRho;                            //!pt jet2 vs delta-M
  TH2F            **fh2PtJet2DeltaPtRho;                           //!pt jet2 vs delta-pT
  TH3F            **fh3PtJet2DeltaEDeltaMRho;                      //!pt jet2 vs delta-E vs delta-M
  TH3F            **fh3PtJet2DeltaPDeltaMRho;                      //!pt jet2 vs delta-P vs delta-M

  TH2F            **fh2PtJet1DeltaPtVecSub;                        //!pt jet1 (AA) vs delta pT while using vector subtraction

  TTree           *fTreeJetBkg;                                    //!tree with jet and bkg variables
  TLorentzVector  *fJet1Vec;                                       // jet1(AA) vector  
  TLorentzVector  *fJet2Vec;                                       // jet2(probe) vector
  TLorentzVector  *fBkgVec;                                        // bkg 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         fJetMassMassless;                                // jet mass for massless constituents

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

  ClassDef(AliAnalysisTaskEmcalJetMassResponse, 1)
};
#endif

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