3 #ifndef AlidNdEtaTask_H
4 #define AlidNdEtaTask_H
6 #include "AliAnalysisTask.h"
7 #include "AliPWG0Helper.h"
8 #include "AliTriggerAnalysis.h"
11 class AliESDtrackCuts;
17 class AliTriggerAnalysis;
19 class AlidNdEtaTask : public AliAnalysisTask {
21 AlidNdEtaTask(const char* opt = "");
22 virtual ~AlidNdEtaTask();
24 virtual void ConnectInputData(Option_t *);
25 virtual void CreateOutputObjects();
26 virtual void Exec(Option_t*);
27 virtual void Terminate(Option_t*);
28 virtual Bool_t Notify();
30 void SetTrackCuts(AliESDtrackCuts* cuts) { fEsdTrackCuts = cuts; }
31 void SetAnalysisMode(AliPWG0Helper::AnalysisMode mode) { fAnalysisMode = mode; }
32 void SetReadMC(Bool_t flag = kTRUE) { fReadMC = flag; }
33 void SetUseMCVertex(Bool_t flag = kTRUE) { fUseMCVertex = flag; }
34 void SetOnlyPrimaries(Bool_t flag = kTRUE) { fOnlyPrimaries = flag; }
35 void SetUseMCKine(Bool_t flag = kTRUE) { fUseMCKine = flag; }
36 void SetTrigger(AliTriggerAnalysis::Trigger trigger) { fTrigger = trigger; }
37 void SetTriggerClasses(const char* require, const char* reject) { fRequireTriggerClass = require; fRejectTriggerClass = reject; }
38 void SetFillPhi(Bool_t flag = kTRUE) { fFillPhi = flag; }
39 void SetDeltaPhiCut(Float_t cut) { fDeltaPhiCut = cut; }
40 void SetCheckEventType(Bool_t flag = kTRUE) { fCheckEventType = flag; }
41 void SetSymmetrize(Bool_t flag = kTRUE) { fSymmetrize = flag; }
42 void SetMultAxisEta1(Bool_t flag = kTRUE) { fMultAxisEta1 = flag; }
43 void SetDiffTreatment(AliPWG0Helper::DiffTreatment diffTreatment) { fDiffTreatment = diffTreatment; }
45 void SetOption(const char* opt) { fOption = opt; }
48 AliESDEvent *fESD; //! ESD object
49 TList* fOutput; //! list send on output slot 0
51 TString fOption; // option string
52 AliPWG0Helper::AnalysisMode fAnalysisMode; // detector that is used for analysis
53 AliTriggerAnalysis::Trigger fTrigger; // trigger that is used
54 TString fRequireTriggerClass; // trigger class that is required
55 TString fRejectTriggerClass; // trigger class that is rejected
56 Bool_t fFillPhi; // if true phi is filled as 3rd coordinate in all maps
57 Float_t fDeltaPhiCut; // cut in delta phi (only SPD)
59 Bool_t fReadMC; // if true reads MC data (to build correlation maps)
60 Bool_t fUseMCVertex; // the MC vtx is used instead of the ESD vertex (for syst. check)
61 Bool_t fOnlyPrimaries; // Process only primaries by using the MC information (for syst. check)
62 Bool_t fUseMCKine; // use the MC values for each found track/tracklet (for syst. check)
63 Bool_t fCheckEventType; // check if event type is physics (for real data)
64 Bool_t fSymmetrize; // move all negative to positive eta
65 Bool_t fMultAxisEta1; // restrict multiplicity count to |eta| < 1
66 AliPWG0Helper::DiffTreatment fDiffTreatment; // how to identify SD events (see AliPWG0Helper::GetEventProcessType)
68 AliESDtrackCuts* fEsdTrackCuts; // Object containing the parameters of the esd track cuts
69 AliTriggerAnalysis* fTriggerAnalysis;
72 dNdEtaAnalysis* fdNdEtaAnalysisESD; //! contains the dndeta from the ESD
74 TH1F* fMult; //! raw multiplicity histogram
75 TH1F* fMultVtx; //! raw multiplicity histogram of evts with vtx (control histogram)
76 TH1F* fPartEta[3]; //! counted particles as function of eta (full vertex range, below 0 range, above 0 range)
77 TH1F* fEvents; //! events counted as function of vtx
78 TH2F* fVertexResolution; //! z resolution of the vertex
80 // Gathered from MC (when fReadMC is set)
81 dNdEtaAnalysis* fdNdEtaAnalysis; //! contains the dndeta from the full sample
82 dNdEtaAnalysis* fdNdEtaAnalysisND; //! contains the dndeta for the ND sample
83 dNdEtaAnalysis* fdNdEtaAnalysisNSD; //! contains the dndeta for the NSD sample
84 dNdEtaAnalysis* fdNdEtaAnalysisOnePart; //! contains the dndeta for the one particle sample
85 dNdEtaAnalysis* fdNdEtaAnalysisTr; //! contains the dndeta from the triggered events
86 dNdEtaAnalysis* fdNdEtaAnalysisTrVtx; //! contains the dndeta from the triggered events with vertex
87 dNdEtaAnalysis* fdNdEtaAnalysisTracks; //! contains the dndeta from the triggered events with vertex counted from the mc particles associated to the tracks (comparing this to the raw values from the esd shows the effect of the detector resolution)
89 // control histograms (MC)
90 TH1F* fPartPt; //! counted particles as function of pt
92 // control histograms (ESD)
93 TH3F* fVertex; //! 3d vertex distribution
94 TH3F* fVertexVsMult; //! x-vtx vs y-vtx vs multiplicity
95 TH1F* fPhi; //! raw phi distribution
96 TH1F* fRawPt; //! raw pt distribution
97 TH2F* fEtaPhi; //! raw eta - phi distribution
98 TH2F* fZPhi[2]; //! raw z - phi distribution from tracklets per layer (only SPD)
99 TH1F* fModuleMap; //! count clusters as function of module number (only SPD)
100 TH1F* fDeltaPhi; //! histogram of delta_phi values for tracklets (only for SPD analysis)
101 TH1F* fDeltaTheta; //! histogram of delta_theta values for tracklets (only for SPD analysis)
102 TH2F* fFiredChips; //! fired chips l1+l2 vs. number of tracklets (only for SPD analysis)
103 TH2F* fTrackletsVsClusters; //! number of tracklets vs. clusters in all ITS detectors (only for SPD analysis)
104 TH2F* fTrackletsVsUnassigned; //! number of tracklets vs. number of unassigned clusters in L1 (only for SPD analysis)
105 TH1F* fStats; //! further statistics : bin 1 = vertexer 3d, bin 2 = vertexer z, etc (see CreateOutputObjects)
106 TH2F* fStats2; //! V0 vs SPD statistics
109 AlidNdEtaTask(const AlidNdEtaTask&);
110 AlidNdEtaTask& operator=(const AlidNdEtaTask&);
112 ClassDef(AlidNdEtaTask, 1);