ROOT logo
#ifndef ALIANALYSISTASKEMCALJETTAGGER_H
#define ALIANALYSISTASKEMCALJETTAGGER_H

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

#include "AliAnalysisTaskEmcalJet.h"

class AliAnalysisTaskEmcalJetTagger : public AliAnalysisTaskEmcalJet {
 public:
  enum JetTaggingMethod {
    kGeo      = 0,
    kFraction = 1
  };

  enum JetTaggingType {
    kTag      = 0,
    kClosest  = 1
  };

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

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

  //Setters
  void SetJetContainerBase(Int_t c)                             { fContainerBase = c;}
  void SetJetContainerTag(Int_t c)                              { fContainerTag  = c;}

  void SetJetTaggingType(JetTaggingType t)                      { fJetTaggingType = t;}
  void SetJetTaggingMethod(JetTaggingMethod m)                  { fJetTaggingMethod = m;}

  void SetMinFractionShared(Double_t f)                         { fMinFractionShared = f; }

  void SetUseSumw2(Bool_t b)                                    { fUseSumw2 = b;}

  //Getters
  Double_t GetFractionSharedPt(const AliEmcalJet *jet1, const AliEmcalJet *jet2) const;

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


  Double_t GetDeltaPhi(const AliEmcalJet* jet1, const AliEmcalJet* jet2);
  Double_t GetDeltaPhi(Double_t phi1,Double_t phi2);
  Double_t GetDeltaR(const AliEmcalJet* jet1, const AliEmcalJet* jet2) const;

  void     MatchJetsGeo(Int_t c1 = -1, Int_t c2 = -1, Int_t iDebug = 0, Float_t maxDist = 0.3, Int_t type = 2, Bool_t bReset = kTRUE);
  void     ResetTagging(const Int_t c);
  
 private:
  JetTaggingType                      fJetTaggingType;             // jet matching type
  JetTaggingMethod                    fJetTaggingMethod;           // jet matching method
  Int_t                               fContainerBase;              // jets to be tagged
  Int_t                               fContainerTag;               // jets used for tagging
  Double_t                            fMinFractionShared;          // only fill histos for jets if shared fraction larger than X
  Bool_t                              fUseSumw2;                   // activate sumw2 for output histograms
  Bool_t                              fMatchingDone;               // flag to indicate if matching is done or not

  TH3F            **fh3PtJet1VsDeltaEtaDeltaPhi;  //!pt jet 1 vs deta vs dphi
  TH2F            **fh2PtJet1VsDeltaR;            //!pt jet 1 vs dR
  TH2F            **fh2PtJet2VsFraction;          //!pt jet 1 vs shared fraction
  
  TH2F            **fh2PtJet1VsLeadPtAllSel;      //!all jets after std selection
  TH2F            **fh2PtJet1VsLeadPtTagged;      //!tagged jets
  TH2F            **fh2PtJet1VsPtJet2;            //!pT of base jet vs tagged jet
  TH2F            **fh2PtJet2VsRelPt;             //!pT of tagged jet vs pt base jet / pt tagged jet
  
  TH3F             *fh3PtJetDEtaDPhiConst;        //!pt jet vs delta eta vs delta phi of constituents
  TH2F             *fh2PtJetDRConst;              //!pt jet vs delta R of constituents
  TH3F             *fh3PtJetAreaDRConst;          //!pt jet vs Area vs delta R of constituents

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

  ClassDef(AliAnalysisTaskEmcalJetTagger, 6)
};
#endif

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