]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/EMCALTasks/AliAnalysisTaskEMCALIsoPhoton.h
including histos to tag the isolation distribution of true gammas
[u/mrichter/AliRoot.git] / PWGGA / EMCALTasks / AliAnalysisTaskEMCALIsoPhoton.h
CommitLineData
bd092f0f 1#ifndef AliAnalysisTaskEMCALIsoPhoton_h
2#define AliAnalysisTaskEMCALIsoPhoton_h
3
4// $Id$
5
6class TH1F;
7class TH2F;
caaf99d3 8class TH3F;
965c985f 9class THnSparse;
a62631a9 10class TList;
bd092f0f 11class TObjArray;
12class AliEMCALGeometry;
13class AliESDCaloCells;
14class AliESDEvent;
15class AliESDtrack;
16class AliESDtrackCuts;
17class AliVCluster;
c7bb0b43 18class AliMCEvent;
19class AliStack;
20class TParticle;
bd092f0f 21
22#include "AliAnalysisTaskSE.h"
23
24class AliAnalysisTaskEMCALIsoPhoton : public AliAnalysisTaskSE {
25 public:
26 AliAnalysisTaskEMCALIsoPhoton();
27 AliAnalysisTaskEMCALIsoPhoton(const char *name);
28 virtual ~AliAnalysisTaskEMCALIsoPhoton() {}
29
30 void UserCreateOutputObjects();
31 void UserExec(Option_t *option);
32 void Terminate(Option_t *);
33
f224025f 34 void GetCeIso(TVector3 vec, Int_t maxid, Float_t &iso, Float_t &phiband, Float_t &core);
bd092f0f 35 Double_t GetCrossEnergy(const AliVCluster *cluster, Short_t &idmax);
36 Double_t GetMaxCellEnergy(const AliVCluster *cluster, Short_t &id) const;
37 void GetTrIso(TVector3 vec, Float_t &iso, Float_t &phiband, Float_t &core);
38 void FillClusHists();
c7bb0b43 39 void FillMcHists();
b8b781cb 40 Float_t GetClusSource(const AliVCluster *cluster);
f507c09b 41 void FollowGamma();
22ad7981 42 void GetDaughtersInfo(int firstd, int lastd, int selfid, const char *indputindent);
f912f9a9 43 Float_t GetMcPtSumInCone(Float_t etaclus, Float_t phiclus, Float_t R);
bd092f0f 44 void SetExotCut(Double_t c) { fExoticCut = c; }
45 void SetGeoName(const char *n) { fGeoName = n; }
46 void SetIsoConeR(Double_t r) { fIsoConeR = r; }
47 void SetPeriod(const char *n) { fPeriod = n; }
751194e8 48 void SetTriggerBit(const char *tb) { fTrigBit = tb; }
bd092f0f 49 void SetPrimTrackCuts(AliESDtrackCuts *c) { fPrTrCuts = c; }
50 void SetTrainMode(Bool_t t) { fIsTrain = t; }
c7bb0b43 51 void SetMcMode(Bool_t mc) { fIsMc = mc; }
ecd47673 52 void SetDebugOn(Bool_t d) { fDebug = d; }
f3843637 53 void SetPathStringSelect(char *p) { fPathStrOpt = p; }
f507c09b 54 void SetEtCut(Double_t ec) { fECut = ec; }
bd092f0f 55
56 protected:
57 TRefArray *fCaloClusters; //!pointer to EMCal clusters
58 TObjArray *fSelPrimTracks; //!pointer to ESD primary tracks
3f4073ba 59 TClonesArray *fTracks; //!track input array
bd092f0f 60 AliESDCaloCells *fEMCalCells; //!pointer to EMCal cells
ae41967e 61 AliESDtrackCuts *fPrTrCuts; //pointer to hold the prim track cuts
bd092f0f 62 AliEMCALGeometry *fGeom; // geometry utils
63 TString fGeoName; // geometry name (def = EMCAL_FIRSTYEARV1)
64 TString fPeriod; // string to the LHC period
751194e8 65 TString fTrigBit; // string to the trigger bit name
bd092f0f 66 Bool_t fIsTrain; // variable to set train mode
c7bb0b43 67 Bool_t fIsMc; // variable to set mc mode
ecd47673 68 Bool_t fDebug; // variable to set on/off debugging printouts
f3843637 69 TString fPathStrOpt; // variable to set the name of files to be analyzed (MC only)
bd092f0f 70 Double_t fExoticCut; // variable to set the cut on exotic clusters
71 Double_t fIsoConeR; // variable to set the isolation cone radius
965c985f 72 Int_t fNDimensions; // variable to set the number of dimensions of n-sparse
73 Double_t fECut; // variable to set the minimum E of a cluster
16a4050e 74 Int_t fTrackMult; // global variable with the event multiplicity
f507c09b 75 TString fMcIdFamily; // string that holds the ids of all particles originated from the prompt photon
76 Int_t fNClusForDirPho; // number of clusters from prompt photon per event
77 Float_t fDirPhoPt; // prompt photon pt (assumes only one per event)
f9e2362a 78 Float_t fHigherPtCone; // higher pt inside the cone around the candidate
16a4050e 79
bd092f0f 80
81 private:
82 AliESDEvent *fESD; //! ESD object
c7bb0b43 83 AliMCEvent *fMCEvent; //! MC event object
84 AliStack *fStack; //!MC particles stack object
85
bd092f0f 86 TList *fOutputList; //! Output list
87 //histograms for events with 1+ track pt>1
092ceec8 88 TH1F *fEvtSel; //!evt selection counter: 0=all trg, 1=pv cut
89 TH1F *fNClusEt10; //!number of clusters w/ Et>10 in the event
cc57d293 90 TH1F *fRecoPV; //!histogram to record if an event has a prim. vert.
092ceec8 91 TH1F *fPVtxZ; //!primary vertex Z before cut
92 TH1F *fTrMultDist; //!track multiplicity distribution
93 TH3F *fMCDirPhotonPtEtaPhi; //!direct produced photon pt
94 TH1F *fDecayPhotonPtMC; //!decay photon pt
95 TH2F *fCellAbsIdVsAmpl; //!cell abs id vs cell amplitude (energy)
96 TH2F *fNClusHighClusE; //!total number of clusters vs. highest clus energy in the event
f9e2362a 97 TH2F *fHigherPtConeM02; //!M02 vs. the higher pt of a track inside the cone
092ceec8 98 TH2F *fClusEtMcPt; //!cluster et x mc-pt
99 TH2F *fClusMcDetaDphi; //!delta-eta x delta-phi(reco-mc)
100 TH2F *fNClusPerPho; //!delta-eta x delta-phi(reco-mc)
f912f9a9 101 TH2F *fMcPtInConeBG; //!sum of mc-pt of "primary" particles inside de cone, as a function of NET-ISO in BG template
102 TH2F *fMcPtInConeSBG; //!sum of mc-pt of "primary" particles inside de cone, as a function of NET-ISO in SBG range
103 TH2F *fMcPtInConeBGnoUE; //!sum of mc-pt of "primary" particles inside de cone, as a function of NET-ISO in BG template no UE sub
104 TH2F *fMcPtInConeSBGnoUE; //!sum of mc-pt of "primary" particles inside de cone, as a function of NET-ISO in SBG range no UE sub
81f2660f 105 TH2F *fAllIsoEtMcGamma; //!all iso distribution vs. Et clus for clusters comming from a MC prompt photon
106 TH2F *fAllIsoNoUeEtMcGamma; //!all iso distribution (without UE subtraction) vs. Et clus for clusters comming from a MC prompt photon
092ceec8 107 TH3F *fMCDirPhotonPtEtaPhiNoClus; //!pt x eta x phi for prompt photons that didn't produce clusters
108 THnSparse *fHnOutput; //!Output matrix with 7 dimensions
965c985f 109
bd092f0f 110 AliAnalysisTaskEMCALIsoPhoton(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
111 AliAnalysisTaskEMCALIsoPhoton& operator=(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
112
113 ClassDef(AliAnalysisTaskEMCALIsoPhoton, 1); // Class to analyse isolated photons
114};
115#endif