]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHMEC.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskEmcalJetHMEC.h
1 #ifndef AliAnalysisTaskEmcalJetHMEC_H
2 #define AliAnalysisTaskEmcalJetHMEC_H
3
4 // $Id$
5
6 class TClonesArray;
7 class TList;
8 class TH1;
9 class TH2;
10 class THnSparse;
11 class AliEmcalJet;
12 class AliESDEvent;
13 class AliAODEvent;
14 class AliEventPoolManager;
15
16 #include "AliAnalysisTaskEmcalJet.h"
17
18 class AliAnalysisTaskEmcalJetHMEC : public AliAnalysisTaskEmcalJet {
19  public:
20   AliAnalysisTaskEmcalJetHMEC();
21   AliAnalysisTaskEmcalJetHMEC(const char *name);
22   virtual ~AliAnalysisTaskEmcalJetHMEC() {}
23   
24   virtual void            UserCreateOutputObjects();
25   virtual Double_t        RelativePhi(Double_t mphi, Double_t vphi);
26 //  virtual void            UserExec(Option_t *option);
27   virtual void            Terminate(Option_t *);
28   virtual Int_t           AcceptthisJet(AliEmcalJet *jet);
29   virtual THnSparse*      NewTHnSparseF(const char* name, UInt_t entries);
30   virtual void            GetDimParams(Int_t iEntry,TString &label, Int_t &nbins, Double_t &xmin, Double_t &xmax);
31
32   virtual void            SetTracksName(const char *n)             {fTracksName=n;}
33   virtual void            SetJetsName(const char *jn)              {fJetsName=jn;}
34
35   virtual void            SetAreaCut(Double_t a)                   { fAreacut    = a; }
36   virtual void            SetTrkBias(Double_t b)                   { fTrkBias    = b; }  //require a track with pt > b in jet
37   virtual void            SetClusBias(Double_t b)                  { fClusBias   = b; }  //require a cluster with pt > b in jet
38
39   virtual void            SetTrkEta(Double_t e)                    { fTrkEta   = e; }  //eta range of the associated tracks
40
41   virtual void            SetJetEta(Double_t emin, Double_t emax)  { fEtamin = emin; fEtamax = emax; }
42   virtual void            SetJetPhi(Double_t pmin, Double_t pmax)  { fPhimin = pmin; fPhimax = pmax; }
43   virtual void            SetEventMixing(Int_t yesno)              { fDoEventMixing=yesno;}
44   virtual void            SetMixingTracks(Int_t tracks)            { fMixingTracks = tracks; }
45
46   // event trigger/mixed selection - setters
47   virtual void            SetTrigType(UInt_t te)       { fTriggerEventType = te; }
48   virtual void            SetMixType(UInt_t me)        { fMixingEventType = me; }
49   virtual void            SetNMixedTracks(Int_t nmt)   { fNMIXtracks = nmt; }
50   virtual void            SetNMixedEvents(Int_t nme)   { fNMIXevents = nme; }
51
52   // switch to cut out some unneeded sparse axis
53   void                    SetDoLessSparseAxes(Bool_t dlsa) { fDoLessSparseAxes = dlsa; }
54   void                    SetDoWiderTrackBin(Bool_t wtrbin) { fDoWiderTrackBin = wtrbin; }
55
56   virtual void            SetCentBinSize(Bool_t centbins) { fCentBinSize = centbins; }
57   // set efficiency correction
58   void                    SetDoEffCorr(Int_t effcorr)          { fDoEffCorrection = effcorr; }
59   virtual void            SetEffCorrFunc(Double_t efffunc)     { fEffFunctionCorrection = efffunc; }
60
61  protected:
62   void                                   ExecOnce();
63   Bool_t                             Run();
64   virtual Int_t          GetCentBin(Double_t cent) const;
65   virtual Int_t          GetEtaBin(Double_t eta) const;
66   virtual Int_t          GetpTjetBin(Double_t pt) const;
67   virtual Double_t       EffCorrection(Double_t trkETA, Double_t trkPT, Int_t effswitch) const; // efficiency correction function
68
69   TString                fTracksName;              // name of tracks collection
70   TString                fJetsName;                // name of Jet collection
71   Double_t               fPhimin;                  // phi min of jet
72   Double_t               fPhimax;                  // phi max of jet
73   Double_t               fEtamin;                  // eta min of jet
74   Double_t               fEtamax;                  // eta max of jet
75   Double_t               fAreacut;                 // area cut of jet
76   Double_t               fTrkBias;
77   Double_t               fClusBias;
78   Double_t               fTrkEta;                  // eta min/max of tracks
79   Int_t                  fDoEventMixing;           // flag to do evt mixing
80   Int_t                          fMixingTracks;                // size of track buffer for event mixing
81   Int_t                  fNMIXtracks;              // threshold to use event pool # tracks
82   Int_t                  fNMIXevents;              // threshold to use event pool # events
83   TObjArray*             CloneAndReduceTrackList(TObjArray* tracks);
84
85   // event selection types
86   UInt_t         fTriggerEventType;
87   UInt_t         fMixingEventType;
88
89   // efficiency correction
90   Int_t          fDoEffCorrection;
91   Double_t       fEffFunctionCorrection;
92
93   Bool_t         fDoLessSparseAxes;
94   Bool_t         fDoWiderTrackBin;
95
96   UInt_t         fCentBinSize;
97
98   AliESDEvent           *fESD;    //! ESD object
99   AliAODEvent                   *fAOD;    //! AOD object
100   AliEventPoolManager   *fPoolMgr; //!
101   TH1                   *fHistTrackPt; //! Pt spectrum
102   TH1                   *fHistCentrality;//!
103   TH2                   *fHistJetEtaPhi;//!
104   TH2                   *fHistTrackEtaPhi[7];//!
105   TH2                   *fHistJetHEtaPhi;//!
106
107   TH1                   *fHistJetPt[6]; //!
108   TH1                   *fHistJetPtBias[6];//!
109   TH1                   *fHistLeadJetPt[6];//!
110   TH1                   *fHistLeadJetPtBias[6];//!
111   TH1                   *fHistJetPtTT[6];//!
112   TH2                   *fHistJetH[6][5][3];//!
113   TH2                   *fHistJetHBias[6][5][3];//!
114   TH2                   *fHistJetHTT[6][5][3];//!
115   THnSparse             *fhnMixedEvents;      //!mixed events matrix
116   THnSparse             *fhnJH;      //!Fg events matrix
117
118  private:
119    
120   AliAnalysisTaskEmcalJetHMEC(const AliAnalysisTaskEmcalJetHMEC&); // not implemented
121   AliAnalysisTaskEmcalJetHMEC& operator=(const AliAnalysisTaskEmcalJetHMEC&); // not implemented
122   
123   ClassDef(AliAnalysisTaskEmcalJetHMEC, 10); 
124 };
125 #endif