1 #ifndef AliAnalysisTaskEMCALIsoPhoton_h
2 #define AliAnalysisTaskEMCALIsoPhoton_h
12 class AliEMCALGeometry;
13 class AliESDCaloCells;
16 class AliESDtrackCuts;
18 class AliAODCaloCells;
25 #include "AliAnalysisTaskSE.h"
27 class AliAnalysisTaskEMCALIsoPhoton : public AliAnalysisTaskSE {
29 AliAnalysisTaskEMCALIsoPhoton();
30 AliAnalysisTaskEMCALIsoPhoton(const char *name);
31 virtual ~AliAnalysisTaskEMCALIsoPhoton() {}
33 void UserCreateOutputObjects();
34 void UserExec(Option_t *option);
35 void Terminate(Option_t *);
37 void GetCeIso(TVector3 vec, Int_t maxid, Float_t &iso, Float_t &phiband, Float_t &core);
38 Double_t GetCrossEnergy(const AliVCluster *cluster, Short_t &idmax);
39 Double_t GetMaxCellEnergy(const AliVCluster *cluster, Short_t &id) const;
40 void GetTrIso(TVector3 vec, Float_t &iso, Float_t &phiband, Float_t &core);
43 Float_t GetClusSource(const AliVCluster *cluster);
45 void GetDaughtersInfo(int firstd, int lastd, int selfid, const char *indputindent);
46 Float_t GetMcPtSumInCone(Float_t etaclus, Float_t phiclus, Float_t R);
47 void SetExotCut(Double_t c) { fExoticCut = c; }
48 void SetGeoName(const char *n) { fGeoName = n; }
49 void SetIsoConeR(Double_t r) { fIsoConeR = r; }
50 void SetPeriod(const char *n) { fPeriod = n; }
51 void SetTriggerBit(const char *tb) { fTrigBit = tb; }
52 void SetPrimTrackCuts(AliESDtrackCuts *c) { fPrTrCuts = c; }
53 void SetTrainMode(Bool_t t) { fIsTrain = t; }
54 void SetMcMode(Bool_t mc) { fIsMc = mc; }
55 void SetDebugOn(Bool_t d) { fDebug = d; }
56 void SetPathStringSelect(char *p) { fPathStrOpt = p; }
57 void SetEtCut(Double_t ec) { fECut = ec; }
58 void SetImportGeometryFromFile(Bool_t im,
59 TString pa = "") { fImportGeometryFromFile = im ;
60 fImportGeometryFilePath = pa ; }
63 TObjArray *fESDClusters; //!pointer to EMCal clusters
64 TObjArray *fAODClusters; //!pointer to EMCal clusters
65 TObjArray *fSelPrimTracks; //!pointer to ESD primary tracks
66 TClonesArray *fTracks; //!track input array
67 AliESDCaloCells *fESDCells; //!pointer to EMCal cells, esd
68 AliAODCaloCells *fAODCells; //!pointer to EMCal cells, aod
69 AliESDtrackCuts *fPrTrCuts; //pointer to hold the prim track cuts
70 AliEMCALGeometry *fGeom; // geometry utils
71 TString fGeoName; // geometry name (def = EMCAL_FIRSTYEARV1)
72 TString fPeriod; // string to the LHC period
73 TString fTrigBit; // string to the trigger bit name
74 Bool_t fIsTrain; // variable to set train mode
75 Bool_t fIsMc; // variable to set mc mode
76 Bool_t fDebug; // variable to set on/off debugging printouts
77 TString fPathStrOpt; // variable to set the name of files to be analyzed (MC only)
78 Double_t fExoticCut; // variable to set the cut on exotic clusters
79 Double_t fIsoConeR; // variable to set the isolation cone radius
80 Int_t fNDimensions; // variable to set the number of dimensions of n-sparse
81 Double_t fECut; // variable to set the minimum E of a cluster
82 Int_t fTrackMult; // global variable with the event multiplicity
83 TString fMcIdFamily; // string that holds the ids of all particles originated from the prompt photon
84 Int_t fNClusForDirPho; // number of clusters from prompt photon per event
85 Float_t fDirPhoPt; // prompt photon pt (assumes only one per event)
86 Float_t fHigherPtCone; // higher pt inside the cone around the candidate
87 Bool_t fImportGeometryFromFile; // Import geometry settings in geometry.root file
88 TString fImportGeometryFilePath; // path fo geometry.root file
92 AliESDEvent *fESD; //! ESD object
93 AliAODEvent *fAOD; //! AOD object
94 AliMCEvent *fMCEvent; //! MC event object
95 AliStack *fStack; //!MC particles stack object
96 TGeoHMatrix *fGeomMatrix[12];//! Geometry misalignment matrices for EMCal
97 TList *fOutputList; //! Output list
98 //histograms for events with 1+ track pt>1
99 TH1F *fEvtSel; //!evt selection counter: 0=all trg, 1=pv cut
100 TH1F *fNClusEt10; //!number of clusters w/ Et>10 in the event
101 TH1F *fRecoPV; //!histogram to record if an event has a prim. vert.
102 TH1F *fPVtxZ; //!primary vertex Z before cut
103 TH1F *fTrMultDist; //!track multiplicity distribution
104 TH3F *fMCDirPhotonPtEtaPhi; //!direct produced photon pt
105 TH1F *fDecayPhotonPtMC; //!decay photon pt
106 TH2F *fCellAbsIdVsAmpl; //!cell abs id vs cell amplitude (energy)
107 TH2F *fNClusHighClusE; //!total number of clusters vs. highest clus energy in the event
108 TH2F *fHigherPtConeM02; //!M02 vs. the higher pt of a track inside the cone
109 TH2F *fClusEtMcPt; //!cluster et x mc-pt
110 TH2F *fClusMcDetaDphi; //!delta-eta x delta-phi(reco-mc)
111 TH2F *fNClusPerPho; //!delta-eta x delta-phi(reco-mc)
112 TH2F *fMcPtInConeBG; //!sum of mc-pt of "primary" particles inside de cone, as a function of NET-ISO in BG template
113 TH2F *fMcPtInConeSBG; //!sum of mc-pt of "primary" particles inside de cone, as a function of NET-ISO in SBG range
114 TH2F *fMcPtInConeBGnoUE; //!sum of mc-pt of "primary" particles inside de cone, as a function of NET-ISO in BG template no UE sub
115 TH2F *fMcPtInConeSBGnoUE; //!sum of mc-pt of "primary" particles inside de cone, as a function of NET-ISO in SBG range no UE sub
116 TH2F *fAllIsoEtMcGamma; //!all iso distribution vs. Et clus for clusters comming from a MC prompt photon
117 TH2F *fAllIsoNoUeEtMcGamma; //!all iso distribution (without UE subtraction) vs. Et clus for clusters comming from a MC prompt photon
118 TH3F *fMCDirPhotonPtEtaPhiNoClus; //!pt x eta x phi for prompt photons that didn't produce clusters
119 THnSparse *fHnOutput; //!Output matrix with 7 dimensions
121 AliAnalysisTaskEMCALIsoPhoton(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
122 AliAnalysisTaskEMCALIsoPhoton& operator=(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
124 ClassDef(AliAnalysisTaskEMCALIsoPhoton, 1); // Class to analyse isolated photons