ROOT logo
#ifndef ALIANALYSISTASKEMCALJETMASS_H
#define ALIANALYSISTASKEMCALJETMASS_H

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

#include "AliAnalysisTaskEmcalJet.h"

class AliAnalysisTaskEmcalJetMass : public AliAnalysisTaskEmcalJet {
 public:
  enum JetMassType {
    kRaw   = 0,  //mass form anti-kt 4-vector
    kDeriv = 1   //area based subtracted jet mass
  };

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

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

  //Setters
  void SetJetContainerBase(Int_t c)                                  { fContainerBase     = c   ; }
  void SetJetContainerUnsub(Int_t c)                                 { fContainerUnsub    = c   ; }
  void SetMinFractionShared(Double_t f, Bool_t useUnsubJet = kFALSE) { fMinFractionShared = f   ; SetUseUnsubJet(useUnsubJet); }
  void SetUseUnsubJet(Bool_t b)                                      { fUseUnsubJet       = b   ; }
  void SetJetMassType(JetMassType t)                                 { fJetMassType       = t   ; }
  void SetUseSumw2(Bool_t b)                                         { fUseSumw2          = b   ; }

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

  Double_t                            GetJetMass(AliEmcalJet *jet);
 
 private:
  Int_t                               fContainerBase;              // jets to be analyzed
  Int_t                               fContainerUnsub;             // unsubtracted jets
  Double_t                            fMinFractionShared;          // only fill histos for jets if shared fraction larger than X
  Bool_t                              fUseUnsubJet;                // calc fraction of unsubtracted jet (relevant for constituent subtraction)
  JetMassType                         fJetMassType;                // jet mass type to be used
  Bool_t                              fUseSumw2;                   // activate sumw2 for output histograms

  TH3F            **fh3PtJet1VsMassVsLeadPtAllSel;         //!all jets after std selection pt vs mass vs leading track pt
  TH3F            **fh3PtJet1VsMassVsLeadPtTagged;         //!tagged jets pt vs mass vs leading track pt
  TH3F            **fh3PtJet1VsMassVsLeadPtTaggedMatch;    //!tagged jets pt vs mass vs leading track pt matched to MC
  TProfile        **fpPtVsMassJet1All;                     //!pT vs avg mass of all jets
  TProfile        **fpPtVsMassJet1Tagged;                  //!pT vs avg mass of tagged jets
  TProfile        **fpPtVsMassJet1TaggedMatch;             //!pT vs avg mass of tagged jets matched to MC
  TH2F            **fh2MassVsAreaJet1All;                  //!mass vs area of all jets
  TH2F            **fh2MassVsAreaJet1Tagged;               //!mass vs area of tagged jets
  TH2F            **fh2MassVsAreaJet1TaggedMatch;          //!mass vs area of tagged jets matched to MC
  TH2F            **fh2MassVsNConstJet1All;                //!mass vs number of constituents of all jets
  TH2F            **fh2MassVsNConstJet1Tagged;             //!mass vs number of constituents of tagged jets
  TH2F            **fh2MassVsNConstJet1TaggedMatch;        //!mass vs number of constituents of tagged jets matched to MC

  TH3F            **fh3PtJet1VsRatVsLeadPtAllSel;          //!all jets after std selection pt vs mass/pt vs leading track pt
  TH3F            **fh3PtJet1VsRatVsLeadPtTagged;          //!tagged jets pt vs mass/pt vs leading track pt
  TH3F            **fh3PtJet1VsRatVsLeadPtTaggedMatch;     //!tagged jets pt vs mas/pts vs leading track pt matched to MC
  TProfile        **fpPtVsRatJet1All;                      //!pT vs avg mass/pt of all jets
  TProfile        **fpPtVsRatJet1Tagged;                   //!pT vs avg mass/pt of tagged jets
  TProfile        **fpPtVsRatJet1TaggedMatch;              //!pT vs avg mass/pt of tagged jets matched to MC
  TH2F            **fh2RatVsAreaJet1All;                   //!mass/pt vs area of all jets
  TH2F            **fh2RatVsAreaJet1Tagged;                //!mass/pt vs area of tagged jets
  TH2F            **fh2RatVsAreaJet1TaggedMatch;           //!mass/pt vs area of tagged jets matched to MC
  TH2F            **fh2RatVsNConstJet1All;                 //!mass/pt vs number of constituents of all jets
  TH2F            **fh2RatVsNConstJet1Tagged;              //!mass/pt vs number of constituents of tagged jets
  TH2F            **fh2RatVsNConstJet1TaggedMatch;         //!mass/pt vs number of constituents of tagged jets matched to MC

  TH3F            **fh3JetPtVsMassVsEPRelAllSel;           //!jet pt vs mass vs (phi-ep) for all jets
  TH3F            **fh3JetPtVsMassVsEPRelTagged;           //!jet pt vs mass vs (phi-ep) for tagged jets
  TH3F            **fh3JetPtVsMassVsEPRelTaggedMatch;      //!jet pt vs mass vs (phi-ep) for tagged matched jets

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

  ClassDef(AliAnalysisTaskEmcalJetMass, 9)
};
#endif

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