ROOT logo
#ifndef ALIANALYSISTASKJETJTJT_H
#define ALIANALYSISTASKJETJTJT_H

class TH1;
class TH2;
class TH3;
class TGraphErrors;
class TProfile;
class AliJetContainer;
class AliParticleContainer;
class AliClusterContainer;
class JTJTEfficiency;


#include "AliAnalysisTaskEmcalJet.h"


class AliAnalysisTaskJetJTJT : public AliAnalysisTaskEmcalJet {
 public:

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

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

  void SetTrackArrayName( char *c ) { fTrackArrayName = c; }

  void setCentBinBorders( int n, Double_t *c);
  void setTriggPtBorders( int n, Double_t *c);
  void setAssocPtBorders( int n, Double_t *c);
  void setDebug(int n) {debug = n; }
  void setRunPeriod(const char *period) {runPeriod = period; cout << "RunPeriod set to " << runPeriod << endl;}
  //AliJetContainer            *AddJetContainer(const char *n, TString defaultCutType = "", Float_t jetRadius = 0.4);


 protected:
  void                        ExecOnce();
  Bool_t                      FillHistograms()   ;
  Bool_t                      Run()              ;
  void                        CheckClusTrackMatching();
  Double_t	     	      getJt(AliVTrack *track, AliEmcalJet *jet, int reverse);
  Double_t	     	      getJt(AliVParticle *track, AliEmcalJet *jet, int reverse);


  // General histograms
  TH1                       **fHistTracksPt;            //!Track pt spectrum
  TH1                       **fHistTracksJt;            //!Track jt spectrum
  TH1                       **fHistClustersPt;          //!Cluster pt spectrum
  TH1                       **fHistLeadingJetPt;        //!Leading jet pt spectrum
  TH1                       ***fHistJetsPt;          	//!Jet pt spectrum
  TH1			    ***fHistBackgroundDone;	//!Background test

  //Jt histograms
  TH1                       ****fHistJTPta;			//!Jet Jt spectrum
  TH1                       ****fHistLogJTPta;			//!Logarithmic Jet Jt spectrum
  TH1                       ****fHistJTPta_all;			//!All particles Jt spectrum
  TH1                       ****fHistJTBg;			//!Jt background
  TH1                       ****fHistLogJTBg;			//!Logarithmic Jt background


  //Background statistics

  TH1			    ***fHistBgMulti;		//!Multiplicity in background cone
  TH1			    ***fHistBgPt;		//!Background pt distribution

  //Jet statistics
  TH1			    ***fHistJetEta;		//!Jet eta distribution
  TH1			    ***fHistJetMulti;		//!Multiplicity in jet				
  TH1			    ***fHistJetTracksPt;		//!Track pT in jet				
  TProfile		    **fhTrackingEfficiency; 	//!Tracking efficiency

  Int_t fNpttBins;
  Int_t fNptaBins;

  AliJetContainer            *fJetsCont;                   //!Jets
  //AliJetContainer            **fJetsConts;              //!Jets
  //Int_t 		     nJetsConts;
  AliParticleContainer       *fTracksCont;                 //!Tracks
  AliClusterContainer        *fCaloClustersCont;           //!Clusters  

 private:
  //TVector *EtaGapThresholds;
  //TVector *RGapThresholds;
  //TVector *KlongBorders;
  //TVector *XeBorders;



  TClonesArray *fTracks;  //! tracks array
  TString    fTrackArrayName; // track constituents array name
  TString    runPeriod; // run period name
  JTJTEfficiency *fEfficiency; //! AliJ Efficiency


  //TVector *CentBinBorders;
  //TVector *TriggPtBorders;
  //TVector *AssocPtBorders;
  Double_t CentBinBorders[10];
  Double_t TriggPtBorders[10];
  Double_t AssocPtBorders[10];
  AliAnalysisTaskJetJTJT(const AliAnalysisTaskJetJTJT&);            // not implemented
  AliAnalysisTaskJetJTJT &operator=(const AliAnalysisTaskJetJTJT&); // not implemented

  Int_t debug;

  ClassDef(AliAnalysisTaskJetJTJT, 3) // jet sample analysis task



};

class JTJTEfficiency {  // this part can occurr anywhere inside the outer accolades
	#define JUNUSED(expr) do { (void)(expr); } while (0)
	public:
        enum Mode { kNotUse, kPeriod, kRunNumber, kAuto };
        enum { kJTPCOnly, kJRaa, kJGlobalTightDCA, kJGlobalDCA, kJGlobalSDD , kJHybrid, kJNTrackCuts };



        JTJTEfficiency();
        JTJTEfficiency(const JTJTEfficiency& obj);
        JTJTEfficiency& operator=(const JTJTEfficiency& obj);
        void SetMode( int i ){ fMode = i; }
        void SetDataPath(TString s ){ fDataPath=s; }
        void SetPeriodName(TString s ){ fPeriodStr=s; cout << "Eff: Run Period is set to " << fPeriodStr << endl; }
        TString GetName() const { return fName; }
        double GetCorrection( double pt, int icut, double cent ) const ;
        void SetRunNumber( Long64_t runnum ){ fRunNumber=runnum; }

        TString GetEffName() ;
        TString GetEffFullName() ;
        bool   Load();
        void   PrintOut() const {
            cout<<fInputRootName<<endl;
        }
        //void Write();

    private:
        int      fMode;             // Mode. see enum Mode
        int      fPeriod;           // Data Period index
        //AliJTrackCut fTrackCut;     // Track Cut Object. TODO:why not pointer?
        //AliJRunTable fRunTable;     // run Table. TODO:why not pointer?

        TString fDataPath;          // locaction of eff files
        TString fName;              // name of efficiency. usually empty
        TString fPeriodStr;         // DATA period
        TString fMCPeriodStr;       // MC period
        Long64_t fRunNumber;        // Runnumber
        TString fTag;               // Tags to distinguish special eff file
        TString fInputRootName;     // name of input

        TFile * fInputRoot;         // input file  
        TDirectory * fEffDir[3];    // root directory of efficiency. only second item of fEffDir with "Efficiency" is being used.
        TGraphErrors * fCorrection[20][20][20]; // Storage of Correction factor 
        TAxis * fCentBinAxis;     // Bin of Centrality. replace with AliJBin?



};

#endif
 AliAnalysisTaskJetJTJT.h:1
 AliAnalysisTaskJetJTJT.h:2
 AliAnalysisTaskJetJTJT.h:3
 AliAnalysisTaskJetJTJT.h:4
 AliAnalysisTaskJetJTJT.h:5
 AliAnalysisTaskJetJTJT.h:6
 AliAnalysisTaskJetJTJT.h:7
 AliAnalysisTaskJetJTJT.h:8
 AliAnalysisTaskJetJTJT.h:9
 AliAnalysisTaskJetJTJT.h:10
 AliAnalysisTaskJetJTJT.h:11
 AliAnalysisTaskJetJTJT.h:12
 AliAnalysisTaskJetJTJT.h:13
 AliAnalysisTaskJetJTJT.h:14
 AliAnalysisTaskJetJTJT.h:15
 AliAnalysisTaskJetJTJT.h:16
 AliAnalysisTaskJetJTJT.h:17
 AliAnalysisTaskJetJTJT.h:18
 AliAnalysisTaskJetJTJT.h:19
 AliAnalysisTaskJetJTJT.h:20
 AliAnalysisTaskJetJTJT.h:21
 AliAnalysisTaskJetJTJT.h:22
 AliAnalysisTaskJetJTJT.h:23
 AliAnalysisTaskJetJTJT.h:24
 AliAnalysisTaskJetJTJT.h:25
 AliAnalysisTaskJetJTJT.h:26
 AliAnalysisTaskJetJTJT.h:27
 AliAnalysisTaskJetJTJT.h:28
 AliAnalysisTaskJetJTJT.h:29
 AliAnalysisTaskJetJTJT.h:30
 AliAnalysisTaskJetJTJT.h:31
 AliAnalysisTaskJetJTJT.h:32
 AliAnalysisTaskJetJTJT.h:33
 AliAnalysisTaskJetJTJT.h:34
 AliAnalysisTaskJetJTJT.h:35
 AliAnalysisTaskJetJTJT.h:36
 AliAnalysisTaskJetJTJT.h:37
 AliAnalysisTaskJetJTJT.h:38
 AliAnalysisTaskJetJTJT.h:39
 AliAnalysisTaskJetJTJT.h:40
 AliAnalysisTaskJetJTJT.h:41
 AliAnalysisTaskJetJTJT.h:42
 AliAnalysisTaskJetJTJT.h:43
 AliAnalysisTaskJetJTJT.h:44
 AliAnalysisTaskJetJTJT.h:45
 AliAnalysisTaskJetJTJT.h:46
 AliAnalysisTaskJetJTJT.h:47
 AliAnalysisTaskJetJTJT.h:48
 AliAnalysisTaskJetJTJT.h:49
 AliAnalysisTaskJetJTJT.h:50
 AliAnalysisTaskJetJTJT.h:51
 AliAnalysisTaskJetJTJT.h:52
 AliAnalysisTaskJetJTJT.h:53
 AliAnalysisTaskJetJTJT.h:54
 AliAnalysisTaskJetJTJT.h:55
 AliAnalysisTaskJetJTJT.h:56
 AliAnalysisTaskJetJTJT.h:57
 AliAnalysisTaskJetJTJT.h:58
 AliAnalysisTaskJetJTJT.h:59
 AliAnalysisTaskJetJTJT.h:60
 AliAnalysisTaskJetJTJT.h:61
 AliAnalysisTaskJetJTJT.h:62
 AliAnalysisTaskJetJTJT.h:63
 AliAnalysisTaskJetJTJT.h:64
 AliAnalysisTaskJetJTJT.h:65
 AliAnalysisTaskJetJTJT.h:66
 AliAnalysisTaskJetJTJT.h:67
 AliAnalysisTaskJetJTJT.h:68
 AliAnalysisTaskJetJTJT.h:69
 AliAnalysisTaskJetJTJT.h:70
 AliAnalysisTaskJetJTJT.h:71
 AliAnalysisTaskJetJTJT.h:72
 AliAnalysisTaskJetJTJT.h:73
 AliAnalysisTaskJetJTJT.h:74
 AliAnalysisTaskJetJTJT.h:75
 AliAnalysisTaskJetJTJT.h:76
 AliAnalysisTaskJetJTJT.h:77
 AliAnalysisTaskJetJTJT.h:78
 AliAnalysisTaskJetJTJT.h:79
 AliAnalysisTaskJetJTJT.h:80
 AliAnalysisTaskJetJTJT.h:81
 AliAnalysisTaskJetJTJT.h:82
 AliAnalysisTaskJetJTJT.h:83
 AliAnalysisTaskJetJTJT.h:84
 AliAnalysisTaskJetJTJT.h:85
 AliAnalysisTaskJetJTJT.h:86
 AliAnalysisTaskJetJTJT.h:87
 AliAnalysisTaskJetJTJT.h:88
 AliAnalysisTaskJetJTJT.h:89
 AliAnalysisTaskJetJTJT.h:90
 AliAnalysisTaskJetJTJT.h:91
 AliAnalysisTaskJetJTJT.h:92
 AliAnalysisTaskJetJTJT.h:93
 AliAnalysisTaskJetJTJT.h:94
 AliAnalysisTaskJetJTJT.h:95
 AliAnalysisTaskJetJTJT.h:96
 AliAnalysisTaskJetJTJT.h:97
 AliAnalysisTaskJetJTJT.h:98
 AliAnalysisTaskJetJTJT.h:99
 AliAnalysisTaskJetJTJT.h:100
 AliAnalysisTaskJetJTJT.h:101
 AliAnalysisTaskJetJTJT.h:102
 AliAnalysisTaskJetJTJT.h:103
 AliAnalysisTaskJetJTJT.h:104
 AliAnalysisTaskJetJTJT.h:105
 AliAnalysisTaskJetJTJT.h:106
 AliAnalysisTaskJetJTJT.h:107
 AliAnalysisTaskJetJTJT.h:108
 AliAnalysisTaskJetJTJT.h:109
 AliAnalysisTaskJetJTJT.h:110
 AliAnalysisTaskJetJTJT.h:111
 AliAnalysisTaskJetJTJT.h:112
 AliAnalysisTaskJetJTJT.h:113
 AliAnalysisTaskJetJTJT.h:114
 AliAnalysisTaskJetJTJT.h:115
 AliAnalysisTaskJetJTJT.h:116
 AliAnalysisTaskJetJTJT.h:117
 AliAnalysisTaskJetJTJT.h:118
 AliAnalysisTaskJetJTJT.h:119
 AliAnalysisTaskJetJTJT.h:120
 AliAnalysisTaskJetJTJT.h:121
 AliAnalysisTaskJetJTJT.h:122
 AliAnalysisTaskJetJTJT.h:123
 AliAnalysisTaskJetJTJT.h:124
 AliAnalysisTaskJetJTJT.h:125
 AliAnalysisTaskJetJTJT.h:126
 AliAnalysisTaskJetJTJT.h:127
 AliAnalysisTaskJetJTJT.h:128
 AliAnalysisTaskJetJTJT.h:129
 AliAnalysisTaskJetJTJT.h:130
 AliAnalysisTaskJetJTJT.h:131
 AliAnalysisTaskJetJTJT.h:132
 AliAnalysisTaskJetJTJT.h:133
 AliAnalysisTaskJetJTJT.h:134
 AliAnalysisTaskJetJTJT.h:135
 AliAnalysisTaskJetJTJT.h:136
 AliAnalysisTaskJetJTJT.h:137
 AliAnalysisTaskJetJTJT.h:138
 AliAnalysisTaskJetJTJT.h:139
 AliAnalysisTaskJetJTJT.h:140
 AliAnalysisTaskJetJTJT.h:141
 AliAnalysisTaskJetJTJT.h:142
 AliAnalysisTaskJetJTJT.h:143
 AliAnalysisTaskJetJTJT.h:144
 AliAnalysisTaskJetJTJT.h:145
 AliAnalysisTaskJetJTJT.h:146
 AliAnalysisTaskJetJTJT.h:147
 AliAnalysisTaskJetJTJT.h:148
 AliAnalysisTaskJetJTJT.h:149
 AliAnalysisTaskJetJTJT.h:150
 AliAnalysisTaskJetJTJT.h:151
 AliAnalysisTaskJetJTJT.h:152
 AliAnalysisTaskJetJTJT.h:153
 AliAnalysisTaskJetJTJT.h:154
 AliAnalysisTaskJetJTJT.h:155
 AliAnalysisTaskJetJTJT.h:156
 AliAnalysisTaskJetJTJT.h:157
 AliAnalysisTaskJetJTJT.h:158
 AliAnalysisTaskJetJTJT.h:159
 AliAnalysisTaskJetJTJT.h:160
 AliAnalysisTaskJetJTJT.h:161
 AliAnalysisTaskJetJTJT.h:162
 AliAnalysisTaskJetJTJT.h:163