ROOT logo
#ifndef ALIANALYSISTASKEMCALHJETMASS_H
#define ALIANALYSISTASKEMCALHJETMASS_H

class TH1;
class TH2;
class TH3;
class TH3F;
class THnSparse;
class TClonesArray;
class TArrayI;
class TArrayF;
class TRandom3;
class AliAnalysisManager;
class AliJetContainer;
class AliEmcalJet;
class AliVParticle;

#include "AliAnalysisTaskEmcalJet.h"

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

    enum TriggerTrackType {
      kInclusive       = 0,  //take all trigger tracks
      kSingleInclusive = 1   //take randomly trigger track within defined pt bin
    };


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

    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   ; fUseUnsubJet = useUnsubJet; }
    void SetJetMassType(JetMassType t)                                 { fJetMassType       = t   ; }
    void SetMaxDeltaPhi(Double_t dphi)                                 { fDPhiHJetMax       = dphi; }
    void SetTriggerTrackType(TriggerTrackType t)                       { fTriggerTrackType  = t   ; }
    void AddTriggerTrackPtCuts(Float_t min, Float_t max);
    void SelectConstituents(UInt_t constSel)                           { fEmbConstSel = constSel  ; }
    void SetMarkMCLabel(Int_t l)                                       { fMarkMCLabel = l         ; }

  protected:
    Bool_t                              RetrieveEventObjects();
    Bool_t                              Run();
    Bool_t                              FillHJetHistograms(const AliVParticle *vp, const AliEmcalJet *jet);

    Double_t                            GetJetMass(const AliEmcalJet *jet) const;
    Double_t                            GetDeltaPhi(const AliVParticle *vp, const AliEmcalJet* jet) const;
    Double_t                            GetDeltaPhi(Double_t phi1,Double_t phi2) const; 
    AliVParticle                       *GetSingleInclusiveTT(AliParticleContainer *pCont, Double_t ptmin, Double_t ptmax) const;

    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
    Double_t                            fDPhiHJetMax;                // maximum delta phi between hadron and jet
    TriggerTrackType                    fTriggerTrackType;           // method to select trigger track
    TArrayF                            *fPtTTMin;                    // minimum pt of trigger tracks
    TArrayF                            *fPtTTMax;                    // maximum pt of trigger tracks
    TRandom3                           *fRandom;                     //! Random number generator
    UInt_t                              fEmbConstSel;                // select embedded constituents using bit
    Int_t                               fMarkMCLabel;                // select embedded constituents using label

    TH1F            **fh1PtHadron;                        //!pt of hadrons
    TH1F            **fh1PtHadronMatch;                   //!pt of hadrons matched to MC
    TH3F            **fh3PtHPtJDPhi;                      //!pt hadron vs pt jet vs delta phi
    TH3F            **fh3PtJet1VsMassVsHPtAllSel;         //!all jets after std selection pt vs mass vs track pt
    TH3F            **fh3PtJet1VsMassVsHPtAllSelMatch;    //!all jets after std selection pt vs mass vs track pt matched to MC
    TH3F            **fh3PtJet1VsMassVsHPtTagged;         //!tagged jets pt vs mass vs track pt
    TH3F            **fh3PtJet1VsMassVsHPtTaggedMatch;    //!tagged jets pt vs mass vs track pt matched to MC

    TH3F            **fh3PtJet1VsRatVsHPtAllSel;          //!all jets after std selection pt vs mass/pt vs track pt
    TH3F            **fh3PtJet1VsRatVsHPtAllSelMatch;     //!all jets after std selection pt vs mass/pt vs track pt matched to MC
    TH3F            **fh3PtJet1VsRatVsHPtTagged;          //!tagged jets pt vs mass/pt vs track pt
    TH3F            **fh3PtJet1VsRatVsHPtTaggedMatch;     //!tagged jets pt vs mas/pts vs track pt matched to MC

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

    ClassDef(AliAnalysisTaskEmcalHJetMass, 6)
      };
}
#endif

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