1 #ifndef ALIANALYSISTASKSOH_H
2 #define ALIANALYSISTASKSOH_H
15 class AliESDCaloCluster;
16 class AliESDtrackCuts;
18 #include "AliAnalysisTaskSE.h"
20 class AliAnalysisTaskSOH : public AliAnalysisTaskSE {
23 AliAnalysisTaskSOH(const char *name);
24 virtual ~AliAnalysisTaskSOH();
26 void UserCreateOutputObjects();
27 void UserExec(Option_t *option);
28 void Terminate(Option_t *);
30 void SetMcProcess(Bool_t p) { fMcProcess=p; }
31 void SetTrackProcess(Bool_t p) { fTrackProcess=p; }
32 void SetSFProcess(Bool_t p) { fSFProcess=p; }
33 void SetClusterProcess(Bool_t p) { fClusterProcess=p; }
34 void SetZvtx(Double_t zvtx) { fZVtxMax = zvtx; }
36 void SetEsdTrackCuts(AliESDtrackCuts *cuts) { fEsdTrackCuts = cuts ; }
37 void SetHybridTrackCuts1(AliESDtrackCuts *cuts) { fHybridTrackCuts1 = cuts ; }
38 void SetHybridTrackCuts2(AliESDtrackCuts *cuts) { fHybridTrackCuts2 = cuts ; }
42 AliESDtrack *GetAcceptTrack(AliESDtrack *esdtrack) ;
43 Bool_t IsGoodCluster(AliESDCaloCluster *cluster) ;
44 Bool_t IsGoodMcParticle(AliVParticle* vParticle, Int_t ipart);
45 Bool_t EsdVertexOk() const ;
47 void ProcessCluster() ;
49 void ProcessScaleFactor() ;
51 AliESDEvent *fESD; //!esd event
52 AliMCEvent *fMC; //!mv event
53 Double_t fZVtxMax; // Max vertex z cut
54 AliESDtrackCuts *fEsdTrackCuts; // esd track cuts
55 AliESDtrackCuts *fHybridTrackCuts1; // hybrid track cuts
56 AliESDtrackCuts *fHybridTrackCuts2; // hybrid track cuts
57 TArrayI *fTrackIndices; //!selected track index
58 TArrayI *fClusterIndices; //!cluster with two matched MC track index
59 TObjArray *fClusterArray; //!selected cluster array
63 Bool_t fClusterProcess;
65 TList *fOutputList; //!output list
67 TH1F *fHEventStat; //!statistics histo
68 TH1F *fHScaleFactor; //!scale factor spectrum
69 TH1F *fHScaleFactor100HC; //!scale factor with 100% HC spectrum
70 TH2F *fHEOverPVsPt; //!(cluster energy over reconstructed track p) vs. track pt
71 TH2F *fHEMCalResponsePion; //!same as above for pions
72 TH2F *fHEMCalResponseElec; //!same as above for electrons
73 TH2F *fHEMCalResponseProton; //!same as above for protons
74 TH2F *fHEMCalRecdPhidEta; //!(EMCal cluster phi - track phi) vs. (EMCal cluster eta - track eta)
75 TH2F *fHEMCalRecdPhidEtaP; //!same as above for positive charge tracks
76 TH2F *fHEMCalRecdPhidEtaM; //!same as above for negative charge tracks
77 TH2F *fHEMCalRecdPhidEta_Truth; //!same as above with mc truth matching
78 TH2F *fHEMCalRecdPhidEtaP_Truth; //!same as above with positive truth charge matching
79 TH2F *fHEMCalRecdPhidEtaM_Truth; //!same as above with negative truth charge matching
80 TH2F *fHEMCalRecdPhidEtaposEta; //!same as above for positive eta
81 TH2F *fHEMCalRecdPhidEtanegEta; //!same as above for negative eta
82 TH2F *fHPhotonEdiff100HC; //!(truth E - calculated E in 100% HC)/truth E vs. truth E with photon
83 TH2F *fHPhotonEdiff70HC; //!(truth E - calculated E in 70% HC)/truth E vs. truth E with photon
84 TH2F *fHPhotonEdiff30HC; //!(truth E - calculated E in 30% HC)/truth E vs. truth E with photon
85 TH2F *fHPhotonEdiff0HC; //!(truth E - cluster E)/truth E vs. truth E with photon
86 TH2F *fHPhotonEVsClsE; //!cluster E vs. truth photon E
87 TH2F *fHistEsub1Pch; //!(subtracted E in 100% HC) vs. total track P, clusters with 1 matching track
88 TH2F *fHistEsub2Pch; //!(subtracted E in 100% HC) vs. total track P, clusters with 2 matching tracks
89 TH2F *fHistEsub1PchRat; //!(subtracted E in 100% HC)/total track P vs. total track P, clusters with 1 matching track
90 TH2F *fHistEsub2PchRat; //!(subtracted E in 100% HC)/total track P vs. total track P, clusters with 2 matching tracks
91 THnSparse *fHClsEoverMcE_All; //!cluster E/MC particle E, cluster with only one matching particle
92 THnSparse *fHClsEoverMcE_Photon; //!above for photon
93 THnSparse *fHClsEoverMcE_Elec; //!above for electron
94 THnSparse *fHClsEoverMcE_Pion; //!above for pion
95 TH3F *fHParGenPion_p; //!plus pion mc truth pt, phi, eta spectrum
96 TH3F *fHParGenPion_m; //!minus pion mc truth pt, phi, eta spectrum
97 TH3F *fHParGenPion_rmInj_p; //!plus charged mc truth(pion) without injected signal pt, phi, eta spectrum
98 TH3F *fHParGenPion_rmInj_m; //!minus charged mc truth(pion) without injected signal pt, phi, eta spectrum
99 TH3F *fHDetGenFakePion; //!fake pion tracks pt, phi, eta spectrum
100 TH3F *fHDetRecFakePion; //!fake pion tracks pt, phi, eta spectrum
101 TH3F *fHDetGenSecPion; //!secondary pion tracks pt, phi, eta spectrum
102 TH3F *fHDetRecSecPion; //!secondary pion tracks pt, phi, eta spectrum
103 TH3F *fHDetGenPion_p[3]; //!plus pion mc detector level pt, phi, eta spectrum
104 TH3F *fHDetRecPion_p[3]; //!plus pion reconstructed detector level pt, phi, eta spectrum
105 TH3F *fHDetGenPion_m[3]; //!minus pion mc detector level pt, phi, eta spectrum
106 TH3F *fHDetRecPion_m[3]; //!minus pion reconstructed detector level pt, phi, eta spectrum
107 TH3F *fHDetGenPion_rmInj_p[3]; //!plus charged generated detector level particle(pion) without injected signal pt, phi, eta spectrum
108 TH3F *fHDetRecPion_rmInj_p[3]; //!plus charged reconstructed detector level pion+ track without injected signal pt, phi, eta spectrum
109 TH3F *fHDetGenPion_rmInj_m[3]; //!minus charged generated detector level particle(pion) without injected signal pt, phi, eta spectrum
110 TH3F *fHDetRecPion_rmInj_m[3]; //!minus charged reconstructed detector level pion- track without injected signal pt, phi, eta spectrum
112 AliAnalysisTaskSOH(const AliAnalysisTaskSOH&); // not implemented
113 AliAnalysisTaskSOH& operator=(const AliAnalysisTaskSOH&); // not implemented
115 ClassDef(AliAnalysisTaskSOH, 13); // Analysis task Saehanseul Oh