ROOT logo
#ifndef AliAnalysisTaskEmcalJetHMEC_H
#define AliAnalysisTaskEmcalJetHMEC_H

// $Id$

class TClonesArray;
class TList;
class TH1;
class TH2;
class THnSparse;
class AliEmcalJet;
class AliESDEvent;
class AliAODEvent;
class AliEventPoolManager;

#include "AliAnalysisTaskEmcalJet.h"

class AliAnalysisTaskEmcalJetHMEC : public AliAnalysisTaskEmcalJet {
 public:
  AliAnalysisTaskEmcalJetHMEC();
  AliAnalysisTaskEmcalJetHMEC(const char *name);
  virtual ~AliAnalysisTaskEmcalJetHMEC() {}
  
  virtual void            UserCreateOutputObjects();
  virtual Double_t        RelativePhi(Double_t mphi, Double_t vphi);
//  virtual void            UserExec(Option_t *option);
  virtual void            Terminate(Option_t *);
  virtual Int_t           AcceptthisJet(AliEmcalJet *jet);
  virtual THnSparse*      NewTHnSparseF(const char* name, UInt_t entries);
  virtual void            GetDimParams(Int_t iEntry,TString &label, Int_t &nbins, Double_t &xmin, Double_t &xmax);

  virtual void            SetTracksName(const char *n)             {fTracksName=n;}
  virtual void            SetJetsName(const char *jn)              {fJetsName=jn;}

  virtual void            SetAreaCut(Double_t a)                   { fAreacut    = a; }
  virtual void            SetTrkBias(Double_t b)                   { fTrkBias    = b; }  //require a track with pt > b in jet
  virtual void            SetClusBias(Double_t b)                  { fClusBias   = b; }  //require a cluster with pt > b in jet

  virtual void            SetTrkEta(Double_t e)                    { fTrkEta   = e; }  //eta range of the associated tracks

  virtual void            SetJetEta(Double_t emin, Double_t emax)  { fEtamin = emin; fEtamax = emax; }
  virtual void            SetJetPhi(Double_t pmin, Double_t pmax)  { fPhimin = pmin; fPhimax = pmax; }
  virtual void            SetEventMixing(Int_t yesno)              { fDoEventMixing=yesno;}
  virtual void            SetMixingTracks(Int_t tracks)            { fMixingTracks = tracks; }

  // event trigger/mixed selection - setters
  virtual void            SetTrigType(UInt_t te)       { fTriggerEventType = te; }
  virtual void            SetMixType(UInt_t me)        { fMixingEventType = me; }
  virtual void            SetNMixedTracks(Int_t nmt)   { fNMIXtracks = nmt; }
  virtual void            SetNMixedEvents(Int_t nme)   { fNMIXevents = nme; }

  // switch to cut out some unneeded sparse axis
  void                    SetDoLessSparseAxes(Bool_t dlsa) { fDoLessSparseAxes = dlsa; }
  void                    SetDoWiderTrackBin(Bool_t wtrbin) { fDoWiderTrackBin = wtrbin; }

  virtual void            SetCentBinSize(Bool_t centbins) { fCentBinSize = centbins; }

 protected:
  void					 ExecOnce();
  Bool_t			     Run();
  virtual Int_t          GetCentBin(Double_t cent) const;
  virtual Int_t          GetEtaBin(Double_t eta) const;
  virtual Int_t          GetpTjetBin(Double_t pt) const;

  TString                fTracksName;              // name of tracks collection
  TString                fJetsName;                // name of Jet collection
  Double_t               fPhimin;                  // phi min of jet
  Double_t               fPhimax;                  // phi max of jet
  Double_t               fEtamin;                  // eta min of jet
  Double_t               fEtamax;                  // eta max of jet
  Double_t               fAreacut;                 // area cut of jet
  Double_t               fTrkBias;
  Double_t               fClusBias;
  Double_t               fTrkEta;                  // eta min/max of tracks
  Int_t                  fDoEventMixing;           // flag to do evt mixing
  Int_t  		         fMixingTracks;		       // size of track buffer for event mixing
  Int_t                  fNMIXtracks;              // threshold to use event pool # tracks
  Int_t                  fNMIXevents;              // threshold to use event pool # events
  TObjArray*             CloneAndReduceTrackList(TObjArray* tracks);

  // event selection types
  UInt_t         fTriggerEventType;
  UInt_t         fMixingEventType;

  Bool_t         fDoLessSparseAxes;
  Bool_t         fDoWiderTrackBin;

  UInt_t         fCentBinSize;

  AliESDEvent           *fESD;    //! ESD object
  AliAODEvent			*fAOD;    //! AOD object
  AliEventPoolManager   *fPoolMgr; //!
  TH1                   *fHistTrackPt; //! Pt spectrum
  TH1                   *fHistCentrality;//!
  TH2                   *fHistJetEtaPhi;//!
  TH2                   *fHistTrackEtaPhi[7];//!
  TH2                   *fHistJetHEtaPhi;//!

  TH1                   *fHistJetPt[6]; //!
  TH1                   *fHistJetPtBias[6];//!
  TH1                   *fHistLeadJetPt[6];//!
  TH1                   *fHistLeadJetPtBias[6];//!
  TH1                   *fHistJetPtTT[6];//!
  TH2                   *fHistJetH[6][5][3];//!
  TH2                   *fHistJetHBias[6][5][3];//!
  TH2                   *fHistJetHTT[6][5][3];//!
  THnSparse             *fhnMixedEvents;      //!mixed events matrix
  THnSparse             *fhnJH;      //!Fg events matrix

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