]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskSOH.h
create general emcal task lib
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskSOH.h
1 #ifndef ALIANALYSISTASKSOH_H
2 #define ALIANALYSISTASKSOH_H
3
4 // $Id$
5
6 class TList;
7 class TH1F;
8 class TH2F;
9 class TH3F;
10 class TArrayI;
11 class AliESDEvent;
12 class AliMCEvent;
13 class AliESDtrack;
14 class AliESDCaloCluster;
15 class AliESDtrackCuts;
16
17 #include "AliAnalysisTaskSE.h"
18
19 class AliAnalysisTaskSOH : public AliAnalysisTaskSE {
20  public:
21   AliAnalysisTaskSOH();
22   AliAnalysisTaskSOH(const char *name);
23   virtual ~AliAnalysisTaskSOH();
24   
25   void                UserCreateOutputObjects();
26   void                UserExec(Option_t *option);
27   void                Terminate(Option_t *);
28   
29   void                SetEsdTrackCuts(AliESDtrackCuts *cuts)         { fEsdTrackCuts     = cuts ; }
30   void                SetHybridTrackCuts1(AliESDtrackCuts *cuts)     { fHybridTrackCuts1 = cuts ; }
31   void                SetHybridTrackCuts2(AliESDtrackCuts *cuts)     { fHybridTrackCuts2 = cuts ; }
32
33  private:
34
35   AliESDtrack        *GetAcceptTrack(AliESDtrack *esdtrack) ;
36   Bool_t              IsGoodCluster(AliESDCaloCluster *cluster)             ;
37   Bool_t              IsGoodMcParticle(AliVParticle* vParticle, Int_t ipart);
38   void                ProcessTrack()                       ;
39   void                ProcessCluster()                     ;
40   void                ProcessMc()                          ;
41   void                ProcessScaleFactor()                 ;
42
43   AliESDEvent        *fESD;                      //!esd event
44   AliMCEvent         *fMC;                       //!mv event
45   AliESDtrackCuts    *fEsdTrackCuts;             // esd track cuts
46   AliESDtrackCuts    *fHybridTrackCuts1;         // hybrid track cuts
47   AliESDtrackCuts    *fHybridTrackCuts2;         // hybrid track cuts
48   TArrayI            *fTrackIndices;             //!selected track index
49   TArrayI            *fClusterIndices;           //!cluster with two matched MC track index
50   TObjArray          *fClusterArray;             //!selected cluster array
51   
52   TList              *fOutputList;               //!output list
53   TH1F               *fHEventStat;               //!statistics histo
54   TH3F               *fHTrkEffParGenPtEtaPhi;    //!mc truth pt spectrum
55   TH3F               *fHTrkEffDetGenPtEtaPhi;    //!mc detector level pt spectrum
56   TH3F               *fHTrkEffDetRecPtEtaPhi;    //!reconstructed detector level pt spectrum
57   TH3F               *fHTrkEffDetRecFakePtEtaPhi;//!fake and secondary tracks pt spectrum
58   TH1F               *fHScaleFactor;             //!scale factor spectrum
59   TH1F               *fHScaleFactor100HC;        //!scale factor with 100% HC spectrum
60   TH2F               *fHEOverPVsPt;              //!(cluster energy over reconstructed track p) vs. track pt
61   TH2F               *fHEMCalResponsePion;       //!same as above for pions 
62   TH2F               *fHEMCalResponseElec;       //!same as above for electrons
63   TH2F               *fHEMCalResponseProton;     //!same as above for protons
64   TH2F               *fHEMCalRecdPhidEta;        //!(EMCal cluster phi - track phi) vs. (EMCal cluster eta - track eta)
65   TH2F               *fHEMCalRecdPhidEtaP;       //!same as above for positive charge tracks
66   TH2F               *fHEMCalRecdPhidEtaM;       //!same as above for negative charge tracks
67   TH2F               *fHEMCalRecdPhidEta_Truth;  //!same as above with mc truth matching
68   TH2F               *fHEMCalRecdPhidEtaP_Truth; //!same as above with positive truth charge matching
69   TH2F               *fHEMCalRecdPhidEtaM_Truth; //!same as above with negative truth charge matching
70   TH2F               *fHEMCalRecdPhidEtaposEta;  //!same as above for positive eta
71   TH2F               *fHEMCalRecdPhidEtanegEta;  //!same as above for negative eta
72   TH2F               *fHPhotonEdiff100HC;        //!(truth E - calculated E in 100% HC)/truth E vs. truth E with photon
73   TH2F               *fHPhotonEdiff70HC;         //!(truth E - calculated E in 70% HC)/truth E vs. truth E with photon
74   TH2F               *fHPhotonEdiff30HC;         //!(truth E - calculated E in 30% HC)/truth E vs. truth E with photon
75   TH2F               *fHPhotonEdiff0HC;          //!(truth E - cluster E)/truth E vs. truth E with photon
76   TH2F               *fHPhotonEVsClsE;           //!cluster E vs. truth photon E
77   TH2F               *fHistEsub1Pch;       //!(subtracted E in 100% HC) vs. total track P, clusters with 1 matching track
78   TH2F               *fHistEsub2Pch;        //!(subtracted E in 100% HC) vs. total track P, clusters with 2 matching tracks
79   TH2F               *fHistEsub1PchRat;    //!(subtracted E in 100% HC)/total track P vs. total track P, clusters with 1 matching track
80   TH2F               *fHistEsub2PchRat;     //!(subtracted E in 100% HC)/total track P vs. total track P, clusters with 2 matching tracks
81  
82
83   AliAnalysisTaskSOH(const AliAnalysisTaskSOH&); // not implemented
84   AliAnalysisTaskSOH& operator=(const AliAnalysisTaskSOH&); // not implemented
85   
86   ClassDef(AliAnalysisTaskSOH, 6); // Analysis task Saehanseul Oh
87 };
88 #endif