]>
Commit | Line | Data |
---|---|---|
46f589c2 | 1 | #ifndef ALIANALYSISTASKPTEMCALTRIGGER_H_ |
2 | #define ALIANALYSISTASKPTEMCALTRIGGER_H_ | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | // Author: Markus Fasel | |
7 | ||
555bdd7f | 8 | #include "AliAnalysisTaskEmcalJet.h" |
46f589c2 | 9 | #include "AliCutValueRange.h" |
10 | #include "AliESDtrackCuts.h" | |
5bdebc68 | 11 | #include <TClonesArray.h> |
46f589c2 | 12 | #include <TList.h> |
13 | ||
14 | class TArrayD; | |
15 | class Axis; | |
555bdd7f | 16 | class AliClusterContainer; |
17 | class AliEmcalJet; | |
46f589c2 | 18 | class AliESDtrack; |
555bdd7f | 19 | class AliJetContainer; |
20 | class AliParticleContainer; | |
5bdebc68 | 21 | class AliVTrack; |
cdc26d91 | 22 | class AliVParticle; |
46f589c2 | 23 | |
24 | namespace EMCalTriggerPtAnalysis { | |
25 | class AliEMCalHistoContainer; | |
26 | ||
555bdd7f | 27 | class AliAnalysisTaskPtEMCalTrigger : public AliAnalysisTaskEmcalJet { |
46f589c2 | 28 | public: |
9f248f6f | 29 | enum EEMCalTriggerType_t{ |
30 | kEMCalJetLow = 0, | |
31 | kEMCalJetHigh = 1, | |
32 | kEMCalGammaLow = 2, | |
33 | kEMCalGammaHigh = 3 | |
34 | }; | |
555bdd7f | 35 | static const Int_t kNJetRadii; |
36 | static const Double_t *kJetRadii; | |
37 | ||
9f248f6f | 38 | AliAnalysisTaskPtEMCalTrigger(); |
39 | AliAnalysisTaskPtEMCalTrigger(const char *name); | |
40 | ~AliAnalysisTaskPtEMCalTrigger(); | |
46f589c2 | 41 | |
9f248f6f | 42 | virtual void UserCreateOutputObjects(); |
43 | virtual Bool_t Run(); | |
46f589c2 | 44 | |
9f248f6f | 45 | void AddESDTrackCuts(AliESDtrackCuts *trackCuts); |
46 | void AddCutsForAOD(AliESDtrackCuts *trackCuts, UInt_t filterBits); | |
47 | void SetEtaRange(double etamin, double etamax) { fEtaRange.SetLimits(etamin, etamax); } | |
48 | void SetPtRange(double ptmin, double ptmax) { fPtRange.SetLimits(ptmin, ptmax); } | |
2ae55f0a | 49 | void SetVertexRange(double vmin, double vmax) { fVertexRange.SetLimits(vmin, vmax); } |
caff8cd1 | 50 | void SetClusterEnergyRange(double emin, double emax) { fEnergyRange.SetLimits(emin,emax); } |
9f248f6f | 51 | void SetSwapEta() { fSwapEta = kTRUE; } |
52 | void UseTriggersFromTriggerMaker() { fUseTriggersFromTriggerMaker = kTRUE; } | |
86c0a4aa | 53 | void AddJetContainerName(const Char_t * contname, Bool_t isMC = kFALSE); |
1e2fa4e9 | 54 | void SelectAllTracks(Bool_t doAll) { fSelectAllTracks = doAll; } |
46f589c2 | 55 | |
56 | private: | |
9f248f6f | 57 | AliAnalysisTaskPtEMCalTrigger(const AliAnalysisTaskPtEMCalTrigger &); |
58 | AliAnalysisTaskPtEMCalTrigger &operator=(const AliAnalysisTaskPtEMCalTrigger &); | |
59 | void CreateDefaultPtBinning(TArrayD &binning) const; | |
60 | void CreateDefaultZVertexBinning(TArrayD &binning) const; | |
61 | void CreateDefaultEtaBinning(TArrayD &binning) const; | |
62 | void DefineAxis(TAxis &axis, const char *name, const char *title, const TArrayD &binning, const char **labels = NULL); | |
63 | void DefineAxis(TAxis &axis, const char *name, const char *title, int nbins, double min, double max, const char **labels = NULL); | |
64 | void FillEventHist(const char *trigger, double vz, bool isPileup); | |
555bdd7f | 65 | void FillTrackHist(const char *trigger, const AliVTrack *track, double vz, bool isPileup, int cut, bool isMinBias, double jetradius = -1.); |
66 | void FillClusterHist(const char *trigger, const AliVCluster *clust, double vz, bool isPileup, bool isMinBias); | |
67 | void FillMCParticleHist(const char *histname, const AliVParticle * const part, double vz, bool isPileup); | |
9f248f6f | 68 | bool IsTrueTrack(const AliVTrack *const) const; |
69 | TString BuildTriggerString(); | |
70 | const AliVVertex *GetSPDVertex() const; | |
a745bb5b | 71 | const AliEmcalJet *FoundTrackInJet(const AliVParticle * const track, AliJetContainer *const jets) const; |
72 | const AliEmcalJet *FoundClusterInJet(const AliVCluster * const clust, AliJetContainer *const jets) const; | |
555bdd7f | 73 | bool TrackInJet(const AliVParticle *const track, const AliEmcalJet *reconstructedJet, const AliParticleContainer *const particles) const; |
74 | bool ClusterInJet(const AliVCluster *const clust, const AliEmcalJet *reconstructedJet, const AliClusterContainer *const particles) const; | |
75 | bool IsInRadius(const AliVParticle *const track, const AliEmcalJet *reconstructedJet, Double_t radius) const; | |
76 | bool IsInRadius(const AliVCluster *const clust, const AliEmcalJet *reconstructedJet, Double_t radius) const; | |
46f589c2 | 77 | |
555bdd7f | 78 | AliEMCalHistoContainer *fHistos; //! Histogram container for the task |
79 | TList *fListTrackCuts; // List of track cuts | |
46f589c2 | 80 | |
9f248f6f | 81 | // Cuts |
555bdd7f | 82 | AliCutValueRange<double> fEtaRange; // Eta Selection Range |
83 | AliCutValueRange<double> fPtRange; // Pt Selection Range | |
84 | AliCutValueRange<double> fEnergyRange; // Cluster energy selection range | |
85 | AliCutValueRange<double> fVertexRange; // Vertex cut | |
86 | ||
87 | // Jet containers | |
88 | TList fJetContainersMC; // List of jet containers for MC | |
89 | TList fJetContainersData; // List of jet containers for Data | |
90 | ||
91 | // Settings | |
1e2fa4e9 | 92 | Bool_t fSelectAllTracks; // Loop over all tracks |
555bdd7f | 93 | Bool_t fSwapEta; // Allow swapping of the eta sign in asymmetric collision systems |
94 | Bool_t fUseTriggersFromTriggerMaker; // Use trigger classes from trigger maker | |
46f589c2 | 95 | |
9f248f6f | 96 | ClassDef(AliAnalysisTaskPtEMCalTrigger, 1); // Analysis of EMCal triggered events |
46f589c2 | 97 | }; |
98 | ||
99 | } | |
100 | #endif |