fe6a0e357fd3ea782e1164476d41c34dcbfdd4a3
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / AlidNdEtaCorrectionTask.h
1 /* $Id$ */
2
3 #ifndef AlidNdEtaCorrectionTask_H
4 #define AlidNdEtaCorrectionTask_H
5
6 #include "AliAnalysisTask.h"
7 #include <TString.h>
8 #include "AliPWG0Helper.h"
9
10 class AliESDtrackCuts;
11 class dNdEtaAnalysis;
12 class AlidNdEtaCorrection;
13 class TH1;
14 class TH1F;
15 class AliESDEvent;
16 class TParticlePDG;
17 class TH2F;
18 class TProfile;
19
20 class AlidNdEtaCorrectionTask : public AliAnalysisTask {
21   public:
22     AlidNdEtaCorrectionTask();
23     AlidNdEtaCorrectionTask(const char* opt);
24     virtual ~AlidNdEtaCorrectionTask();
25
26     virtual void   ConnectInputData(Option_t *);
27     virtual void   CreateOutputObjects();
28     virtual void   Exec(Option_t*);
29     virtual void   Terminate(Option_t *);
30
31     void SetTrackCuts(AliESDtrackCuts* cuts) { fEsdTrackCuts = cuts; }
32     void SetAnalysisMode(AliPWG0Helper::AnalysisMode mode) { fAnalysisMode = mode; }
33     void SetOnlyPrimaries(Bool_t flag = kTRUE) { fOnlyPrimaries = flag; }
34     void SetTrigger(AliPWG0Helper::Trigger trigger) { fTrigger = trigger; }
35
36     void SetOption(const char* opt) { fOption = opt; }
37
38  protected:
39     Bool_t SignOK(TParticlePDG* particle);
40
41     AliESDEvent *fESD;               //! ESD object
42     TList* fOutput;                  //! list send on output slot 0
43
44     TString fOption;                 // option string
45     AliPWG0Helper::AnalysisMode fAnalysisMode;    // detector that is used for analysis
46     AliPWG0Helper::Trigger fTrigger; // trigger used in the analysis
47     Int_t fSignMode;                 // if 0 process all particles, if +-1 process only particles with that sign
48     Bool_t fOnlyPrimaries;           // only process primaries (syst. studies)
49
50     AliESDtrackCuts*  fEsdTrackCuts;             // Object containing the parameters of the esd track cuts
51
52     AlidNdEtaCorrection* fdNdEtaCorrection;      //! contains the intermediate histograms (on each slave)
53
54     dNdEtaAnalysis* fdNdEtaAnalysisMC;           //! analysis from MC (only triggered, vertex events)
55     dNdEtaAnalysis* fdNdEtaAnalysisESD;          //! analysis from ESD (not yet corrected!)
56
57     // control histograms
58     TH1F* fPIDParticles;                         //! pid of primary particles
59     TH1F* fPIDTracks;                            //! pid of reconstructed tracks
60
61     TH2F* fVertexCorrelation;                    //! ESD z-vtx vs MC z-vtx
62     TProfile* fVertexProfile;                    //! Profile of MC z-vtx - ESD z-vtx vs. MC z-vtx
63     TH1F* fVertexShift;                          //! (MC z-vtx - ESD z-vtx) in +- 10 cm
64     TH1F* fVertexShiftNorm;                      //! (MC z-vtx - ESD z-vtx) / (sigma_ESD-z-vtx) histogrammed
65
66     TH2F* fEtaCorrelation;                       //! ESD eta vs MC eta
67     TProfile* fEtaProfile;                       //! Profile of MC eta - ESD eta vs. MC eta
68     TH1F* fEtaResolution;                        //! MC eta - ESD eta in |eta| < 1
69
70     TH1F* fpTResolution;                         //! MC pT - ESD pT in |eta| < 1
71
72     AliESDtrackCuts*  fEsdTrackCutsPrim;         //! control histograms for primaries
73     AliESDtrackCuts*  fEsdTrackCutsSec;          //! control histograms for secondaries
74
75     // histograms for systematic studies (must be enabled with option)
76
77     TH1* fTemp1;                                 //! temp histogram for quick study of variables
78     TH1* fTemp2;                                 //! temp histogram for quick study of variables
79
80     TH1F* fMultAll; //! primary particles  in |eta| < 1 and pT > 0.2 in all events
81     TH1F* fMultTr; //! primary particles  in |eta| < 1 and pT > 0.2 in triggered events
82     TH1F* fMultVtx; //! primary particles  in |eta| < 1 and pT > 0.2 in triggered events with vertex
83
84     TH1F* fDeltaPhi[8]; //! delta phi of primaries, secondaries, other (= unclear cases)
85
86     TH2F* fEventStats;  //! some stats on number of events
87
88     AlidNdEtaCorrection* fdNdEtaCorrectionProcessType[3]; //! correction for specific process type (ND, SD, DD)
89                                                           // enable with option: process-types
90
91  private:
92     AlidNdEtaCorrectionTask(const AlidNdEtaCorrectionTask&);
93     AlidNdEtaCorrectionTask& operator=(const AlidNdEtaCorrectionTask&);
94
95   ClassDef(AlidNdEtaCorrectionTask, 1);
96 };
97
98 #endif