1 #ifndef AliAnalysisTaskEMCALIsoPhoton_h
2 #define AliAnalysisTaskEMCALIsoPhoton_h
12 class AliEMCALGeometry;
13 class AliOADBContainer;
14 class AliESDCaloCells;
17 class AliESDtrackCuts;
19 class AliAODCaloCells;
26 #include "AliAnalysisTaskSE.h"
28 class AliAnalysisTaskEMCALIsoPhoton : public AliAnalysisTaskSE {
30 AliAnalysisTaskEMCALIsoPhoton();
31 AliAnalysisTaskEMCALIsoPhoton(const char *name);
32 virtual ~AliAnalysisTaskEMCALIsoPhoton() {}
34 void UserCreateOutputObjects();
35 void UserExec(Option_t *option);
36 void Terminate(Option_t *);
38 void GetCeIso(TVector3 vec, Int_t maxid, Float_t &iso, Float_t &phiband, Float_t &core);
39 Double_t GetCrossEnergy(const AliVCluster *cluster, Short_t &idmax);
40 Double_t GetMaxCellEnergy(const AliVCluster *cluster, Short_t &id) const;
41 void GetTrIso(TVector3 vec, Float_t &iso, Float_t &phiband, Float_t &core);
42 Double_t GetTrackMatchedPt(Int_t matchIndex);
46 Float_t GetClusSource(const AliVCluster *cluster);
48 void GetDaughtersInfo(int firstd, int lastd, int selfid, const char *indputindent);
49 Float_t GetMcPtSumInCone(Float_t etaclus, Float_t phiclus, Float_t R);
51 bool IsExotic(AliVCluster *c);
52 void SetExotCut(Double_t c) { fExoticCut = c; }
53 void SetGeoName(const char *n) { fGeoName = n; }
54 void SetIsoConeR(Double_t r) { fIsoConeR = r; }
55 void SetPeriod(const char *n) { fPeriod = n; }
56 void SetTriggerBit(const char *tb) { fTrigBit = tb; }
57 void SetPrimTrackCuts(AliESDtrackCuts *c) { fPrTrCuts = c; }
58 void SetTrainMode(Bool_t t) { fIsTrain = t; }
59 void SetMcMode(Bool_t mc) { fIsMc = mc; }
60 void SetDebugOn(Bool_t d) { fDebug = d; }
61 void SetPathStringSelect(char *p) { fPathStrOpt = p; }
62 void SetEtCut(Double_t ec) { fECut = ec; }
63 void SetImportGeometryFromFile(Bool_t im,
64 TString pa = "") { fImportGeometryFromFile = im ;
65 fImportGeometryFilePath = pa ; }
66 void SetTrackFilterBit(ULong_t bit) { fFilterBit = bit; }
67 void SetHybridOn() { fSelHybrid = kTRUE; }
68 void SetFillQA() { fFillQA = kTRUE; }
69 void SelectCPVFromTrack(Bool_t b) { fCpvFromTrack = b; }
70 void SetEtPtHistoBinning(Int_t n,
72 Double_t highx) { fNBinsPt = n; fPtBinLowEdge = lowx; fPtBinHighEdge = highx; }
76 TObjArray *fESDClusters; //!pointer to EMCal clusters
77 TObjArray *fAODClusters; //!pointer to EMCal clusters
78 TObjArray *fSelPrimTracks; //!pointer to ESD primary tracks
79 TClonesArray *fTracks; //!track input array
80 AliESDCaloCells *fESDCells; //!pointer to EMCal cells, esd
81 AliAODCaloCells *fAODCells; //!pointer to EMCal cells, aod
82 AliESDtrackCuts *fPrTrCuts; //pointer to hold the prim track cuts
83 AliEMCALGeometry *fGeom; // geometry utils
84 TString fGeoName; // geometry name (def = EMCAL_FIRSTYEARV1)
85 AliOADBContainer *fOADBContainer; //!OADB container used to load misalignment matrices
86 TString fPeriod; // string to the LHC period
87 TString fTrigBit; // string to the trigger bit name
88 Bool_t fIsTrain; // variable to set train mode
89 Bool_t fIsMc; // variable to set mc mode
90 Bool_t fDebug; // variable to set on/off debugging printouts
91 TString fPathStrOpt; // variable to set the name of files to be analyzed (MC only)
92 Double_t fExoticCut; // variable to set the cut on exotic clusters
93 Double_t fIsoConeR; // variable to set the isolation cone radius
94 Int_t fNDimensions; // variable to set the number of dimensions of n-sparse
95 Double_t fECut; // variable to set the minimum E of a cluster
96 Int_t fTrackMult; // global variable with the event multiplicity
97 TString fMcIdFamily; // string that holds the ids of all particles originated from the prompt photon
98 Int_t fNClusForDirPho; // number of clusters from prompt photon per event
99 Float_t fDirPhoPt; // prompt photon pt (assumes only one per event)
100 Float_t fHigherPtCone; // higher pt inside the cone around the candidate
101 Bool_t fImportGeometryFromFile; // Import geometry settings in geometry.root file
102 TString fImportGeometryFilePath; // path fo geometry.root file
103 Double_t fMaxPtTrack; //track with highest pt in event
104 Double_t fMaxEClus; //cluster with highest energy in event
105 Int_t fNCells50; // variable to keep the number of cells with E>50 MeV
106 ULong_t fFilterBit; // Track selection bit, for AODs
107 Bool_t fSelHybrid; // bool to select hybrid tracks
108 Bool_t fFillQA; // bool to fill the QA plots
109 TString fClusIdFromTracks; // string to hold the list of cluster ids given by tracks
110 Bool_t fCpvFromTrack; // set the track-matching method to track->GetEMCALcluster()
111 Int_t fNBinsPt; // set the number of bins in axis of histograms filled with pt (or Et)
112 Double_t fPtBinLowEdge; // low edge of the first pt (Et) bin
113 Double_t fPtBinHighEdge; // high edge of the first pt (Et) bin
118 AliESDEvent *fESD; //! ESD object
119 AliAODEvent *fAOD; //! AOD object
120 AliVEvent *fVEvent; //! AliVEvent
121 AliMCEvent *fMCEvent; //! MC event object
122 AliStack *fStack; //!MC particles stack object
123 TGeoHMatrix *fGeomMatrix[12];//! Geometry misalignment matrices for EMCal
124 TList *fOutputList; //! Output list
125 //histograms for events with 1+ track pt>1
126 TH1F *fEvtSel; //!evt selection counter: 0=all trg, 1=pv cut
127 TH1F *fNClusEt10; //!number of clusters w/ Et>10 in the event
128 TH1F *fRecoPV; //!histogram to record if an event has a prim. vert.
129 TH1F *fPVtxZ; //!primary vertex Z before cut
130 TH1F *fTrMultDist; //!track multiplicity distribution
131 TH3F *fMCDirPhotonPtEtaPhi; //!direct produced photon pt, eta, phi
132 TH3F *fMCIsoDirPhotonPtEtaPhi; //!direct produced photon pt, eta, phi, isolated @ mc level
133 TH2F *fMCDirPhotonPtEtIso; //!direct produced photon pt and isolation pt @ mc level
134 TH1F *fDecayPhotonPtMC; //!decay photon pt
135 TH2F *fCellAbsIdVsAmpl; //!cell abs id vs cell amplitude (energy)
136 TH2F *fNClusHighClusE; //!total number of clusters vs. highest clus energy in the event
137 TH2F *fHigherPtConeM02; //!M02 vs. the higher pt of a track inside the cone
138 TH2F *fClusEtMcPt; //!cluster et x mc-pt
139 TH2F *fClusMcDetaDphi; //!delta-eta x delta-phi(reco-mc)
140 TH2F *fNClusPerPho; //!delta-eta x delta-phi(reco-mc)
141 TH2F *fMcPtInConeBG; //!sum of mc-pt of "primary" particles inside de cone, as a function of NET-ISO in BG template
142 TH2F *fMcPtInConeSBG; //!sum of mc-pt of "primary" particles inside de cone, as a function of NET-ISO in SBG range
143 TH2F *fMcPtInConeBGnoUE; //!sum of mc-pt of "primary" particles inside de cone, as a function of NET-ISO in BG template no UE sub
144 TH2F *fMcPtInConeSBGnoUE; //!sum of mc-pt of "primary" particles inside de cone, as a function of NET-ISO in SBG range no UE sub
145 TH2F *fAllIsoEtMcGamma; //!all iso distribution vs. Et clus for clusters comming from a MC prompt photon
146 TH2F *fAllIsoNoUeEtMcGamma; //!all iso distribution (without UE subtraction) vs. Et clus for clusters comming from a MC prompt photon
147 TH3F *fMCDirPhotonPtEtaPhiNoClus; //!pt x eta x phi for prompt photons that didn't produce clusters
148 THnSparse *fHnOutput; //!Output matrix with 7 dimensions
151 TList *fQAList; //!output list holding QA histos
152 TH1F *fNTracks; //!number of tracks from Array->GetEntries()
153 TH1F *fEmcNCells; //!number of emcal cells in the event
154 TH1F *fEmcNClus; //!# of emcal clusters
155 TH1F *fEmcNClusCut; //!# of clusters in an event with at least 1 clus with E > fECut ("triggered event")
156 TH1F *fNTracksECut; //!number of tracks from Array->GetEntries() in "triggered event"
157 TH1F *fEmcNCellsCut; //!number of emcal cells in a in "triggered event"
158 TH1F *fEmcClusETM1; //!emcal track matched cluster energy (TracDx,z method)
159 TH1F *fEmcClusETM2; //!emcal track matched cluster energy (track->GetEMCALcluster() method)
160 TH1F *fEmcClusNotExo; //!cluster energy (exotics removed)
161 TH2F *fEmcClusEPhi; //!cluster E spectrum vs. phi
162 TH2F *fEmcClusEPhiCut; //!cluster E spectrum vs. phi in "triggered event"
163 TH2F *fEmcClusEEta; //!cluster E spectrum vs. eta
164 TH2F *fEmcClusEEtaCut; //!cluster E spectrum vs. eta in "triggered event"
165 TH2F *fTrackPtPhi; //!selected tracks pt vs. phi
166 TH2F *fTrackPtPhiCut; //!selected tracks pt vs. phi in "triggered event"
167 TH2F *fTrackPtEta; //!selected tracks pt vs. eta
168 TH2F *fTrackPtEtaCut; //!selected tracks pt vs. eta in "triggered event"
169 TH2F *fMaxCellEPhi; //!max cell energy vs. cell phi
172 AliAnalysisTaskEMCALIsoPhoton(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
173 AliAnalysisTaskEMCALIsoPhoton& operator=(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
175 ClassDef(AliAnalysisTaskEMCALIsoPhoton, 1); // Class to analyse isolated photons