]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/Tracks/AliAnalysisTaskPtEMCalTrigger.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / Tracks / AliAnalysisTaskPtEMCalTrigger.h
1 #ifndef ALIANALYSISTASKPTEMCALTRIGGER_H_
2 #define ALIANALYSISTASKPTEMCALTRIGGER_H_
3 /* Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 // Author: Markus Fasel
7
8 #include "AliAnalysisTaskEmcalJet.h"
9 #include "AliESDtrackCuts.h"
10 #include <TClonesArray.h>
11 #include <TList.h>
12 #include "AliCutValueRange.h"
13
14 class TArrayD;
15 class Axis;
16 class AliClusterContainer;
17 class AliEmcalJet;
18 class AliESDtrack;
19 class AliJetContainer;
20 class AliParticleContainer;
21 class AliVTrack;
22 class AliVParticle;
23
24 namespace EMCalTriggerPtAnalysis {
25 class AliEMCalHistoContainer;
26
27 class AliAnalysisTaskPtEMCalTrigger : public AliAnalysisTaskEmcalJet {
28 public:
29   enum EEMCalTriggerType_t{
30     kEMCalJetLow = 0,
31     kEMCalJetHigh = 1,
32     kEMCalGammaLow = 2,
33     kEMCalGammaHigh = 3
34   };
35   static const Int_t kNJetRadii;
36   static const Double_t *kJetRadii;
37
38   AliAnalysisTaskPtEMCalTrigger();
39   AliAnalysisTaskPtEMCalTrigger(const char *name);
40   ~AliAnalysisTaskPtEMCalTrigger();
41
42   virtual void UserCreateOutputObjects();
43   virtual Bool_t Run();
44
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); }
49   void SetVertexRange(double vmin, double vmax) { fVertexRange.SetLimits(vmin, vmax); }
50   void SetClusterEnergyRange(double emin, double emax) { fEnergyRange.SetLimits(emin,emax); }
51   void SetSwapEta() { fSwapEta = kTRUE; }
52   void UseTriggersFromTriggerMaker() { fUseTriggersFromTriggerMaker = kTRUE; }
53   void AddJetContainerName(const Char_t * contname, Bool_t isMC = kFALSE);
54   void SelectAllTracks(Bool_t doAll) { fSelectAllTracks = doAll; }
55
56 private:
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);
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);
68   bool IsTrueTrack(const AliVTrack *const) const;
69   TString BuildTriggerString();
70   const AliVVertex *GetSPDVertex() const;
71   const AliEmcalJet *FoundTrackInJet(const AliVParticle * const track, AliJetContainer *const jets) const;
72   const AliEmcalJet *FoundClusterInJet(const AliVCluster * const clust, AliJetContainer *const jets) const;
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;
77
78   AliEMCalHistoContainer        *fHistos;                 //! Histogram container for the task
79   TList                                                             *fListTrackCuts;                  // List of track cuts
80
81   // Cuts
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
92   Bool_t                        fSelectAllTracks;         // Loop over all tracks
93   Bool_t                                                            fSwapEta;                                     // Allow swapping of the eta sign in asymmetric collision systems
94   Bool_t                                                            fUseTriggersFromTriggerMaker; // Use trigger classes from trigger maker
95
96   ClassDef(AliAnalysisTaskPtEMCalTrigger, 1);           // Analysis of EMCal triggered events
97 };
98
99 }
100 #endif