update to master versions
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskPtEMCalTrigger.h
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
8 #include "AliAnalysisTaskEmcal.h"
9 #include "AliCutValueRange.h"
10 #include "AliESDtrackCuts.h"
11 #include <TClonesArray.h>
12 #include <TList.h>
13
14 class TArrayD;
15 class Axis;
16 class AliESDtrack;
17 class AliVTrack;
18 class AliVParticle;
19
20 namespace EMCalTriggerPtAnalysis {
21 class AliEMCalHistoContainer;
22
23 class AliAnalysisTaskPtEMCalTrigger : public AliAnalysisTaskEmcal {
24 public:
25         enum EEMCalTriggerType_t{
26                 kEMCalJetLow = 0,
27                 kEMCalJetHigh = 1,
28                 kEMCalGammaLow = 2,
29                 kEMCalGammaHigh = 3
30         };
31         AliAnalysisTaskPtEMCalTrigger();
32         AliAnalysisTaskPtEMCalTrigger(const char *name);
33         ~AliAnalysisTaskPtEMCalTrigger();
34
35         virtual void UserCreateOutputObjects();
36         virtual Bool_t Run();
37
38         void AddESDTrackCuts(AliESDtrackCuts *trackCuts);
39         void AddCutsForAOD(AliESDtrackCuts *trackCuts, UInt_t filterBits);
40         void SetEtaRange(double etamin, double etamax) { fEtaRange.SetLimits(etamin, etamax); }
41         void SetPtRange(double ptmin, double ptmax) { fPtRange.SetLimits(ptmin, ptmax); }
42         void SetSwapEta() { fSwapEta = kTRUE; }
43         void UseTriggersFromTriggerMaker() { fUseTriggersFromTriggerMaker = kTRUE; }
44
45 private:
46         AliAnalysisTaskPtEMCalTrigger(const AliAnalysisTaskPtEMCalTrigger &);
47         AliAnalysisTaskPtEMCalTrigger &operator=(const AliAnalysisTaskPtEMCalTrigger &);
48         void CreateDefaultPtBinning(TArrayD &binning) const;
49         void CreateDefaultZVertexBinning(TArrayD &binning) const;
50         void CreateDefaultEtaBinning(TArrayD &binning) const;
51         void DefineAxis(TAxis &axis, const char *name, const char *title, const TArrayD &binning, const char **labels = NULL);
52         void DefineAxis(TAxis &axis, const char *name, const char *title, int nbins, double min, double max, const char **labels = NULL);
53         void FillEventHist(const char *trigger, double vz, bool isPileup);
54         void FillTrackHist(const char *trigger, const AliVTrack *track, double vz, bool isPileup, int cut, bool isMinBias);
55         void FillClusterHist(const char *trigger, const AliVCluster *clust, bool isCalibrated, double vz, bool isPileup, bool isMinBias);
56         void FillMCParticleHist(const AliVParticle * const part, double vz, bool isPileup);
57         bool IsTrueTrack(const AliVTrack *const) const;
58         TString BuildTriggerString();
59         const AliVVertex *GetSPDVertex() const;
60
61         AliEMCalHistoContainer        *fHistos;               //! Histogram container for the task
62         TList                                             *fListTrackCuts;                // List of track cuts
63
64         // Cuts
65         AliCutValueRange<double>      fEtaRange;              // Eta Selection Range
66         AliCutValueRange<double>          fPtRange;                               // Pt Selection Range
67         Bool_t                                            fSwapEta;                               // Allow swapping of the eta sign in asymmetric collision systems
68         Bool_t                                            fUseTriggersFromTriggerMaker; // Use trigger classes from trigger maker
69
70         ClassDef(AliAnalysisTaskPtEMCalTrigger, 1);           // Analysis of EMCal triggered events
71 };
72
73 }
74 #endif