Removing dummy if
[u/mrichter/AliRoot.git] / PWG0 / multiplicity / AliMultiplicityTask.h
1 /* $Id$ */
2
3 #ifndef AliMultiplicityTask_H
4 #define AliMultiplicityTask_H
5
6 #include "AliAnalysisTask.h"
7
8 #include <TString.h>
9 #include "AliPWG0Helper.h"
10
11 class AliESDtrackCuts;
12 class AliMultiplicityCorrection;
13 class TNtuple;
14 class AliCorrection;
15 class TH1;
16 class TH1D;
17 class TH2F;
18 class TH3F;
19 class AliESDEvent;
20
21 class AliMultiplicityTask : public AliAnalysisTask {
22   public:
23     AliMultiplicityTask(const char* opt = "");
24     virtual ~AliMultiplicityTask();
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 SetPtSpectrum(TH1D* hist) { fPtSpectrum = hist; }
33
34     void SetAnalysisMode(AliPWG0Helper::AnalysisMode mode) { fAnalysisMode = mode; }
35     void SetTrigger(AliTriggerAnalysis::Trigger trigger) { fTrigger = trigger; }
36     void SetDeltaPhiCut(Float_t cut) { fDeltaPhiCut = cut; }
37
38     void SetReadMC(Bool_t flag = kTRUE) { fReadMC = flag; }
39     void SetUseMCVertex(Bool_t flag = kTRUE) { fUseMCVertex = flag; }
40     void SetSkipParticles(Bool_t flag = kTRUE) { fSystSkipParticles = flag; }
41     void SetDiffTreatment(AliPWG0Helper::DiffTreatment diffTreatment) { fDiffTreatment = diffTreatment; }
42   
43  protected:
44     AliESDEvent *fESD;    //! ESD object
45
46     TString fOption;      // option string
47     AliPWG0Helper::AnalysisMode fAnalysisMode; // detector that is used for analysis
48     AliTriggerAnalysis::Trigger fTrigger;      // trigger that is used
49     Float_t fDeltaPhiCut;                      // cut in delta phi (only SPD)
50     AliPWG0Helper::DiffTreatment  fDiffTreatment;  // how to identify SD events (see AliPWG0Helper::GetEventProcessType)
51     
52     Bool_t  fReadMC;       // if true reads MC data (to build correlation maps)
53     Bool_t  fUseMCVertex;  // the MC vtx is used instead of the ESD vertex (for syst. check)
54
55     AliMultiplicityCorrection* fMultiplicity; //! object containing the extracted data
56     AliESDtrackCuts* fEsdTrackCuts;           // Object containing the parameters of the esd track cuts
57
58     Bool_t fSystSkipParticles;          // if true skips particles (systematic study)
59     AliCorrection* fParticleCorrection[8]; //! correction from measured to generated particles for different particles for trigger, vertex sample in |eta| < 2; switch on with "particle-efficiency"
60                                            // for each of the species (0..3): pi, k, p, other; for systematic study of pt cut off
61                                            // 4..7 counts for the same species the decayed particles (in generated) and stopped (in measured)
62     Int_t fSelectProcessType;        // 0 = all (default), 1 = ND, 2 = SD, 3 = DD (for systematic study)
63     TNtuple *fParticleSpecies;       //! per event: vtx_mc, (pi, k, p, rest (in |eta| < 1)) X (true, recon) + (nolabel,
64                                      // doubleTracks, doublePrimaries) [doubleTracks + doublePrimaries are already part of
65                                      // rec. particles!); enable with: particle-species
66     TH1* fdNdpT;                     //! true pT spectrum (MC)
67
68     TH1D* fPtSpectrum;               // function that modifies the pt spectrum (syst. study)
69     
70     TH1* fTemp1;                                 //! temp histogram for quick study of variables
71     TH1* fTemp2;                                 //! temp histogram for quick study of variables
72     
73     TH1* fEta[3];                    //! eta histogram of events in the acceptance region for each of the eta-bins (control histogram)
74
75     // control histograms (ESD)
76     TH3F* fVertex;                //! 3d vertex distribution
77     TH2F* fEtaPhi;                //! raw eta - phi distribution
78     
79     TList* fOutput;                  //! list send on output slot 0
80     
81  private:
82     AliMultiplicityTask(const AliMultiplicityTask&);
83     AliMultiplicityTask& operator=(const AliMultiplicityTask&);
84
85   ClassDef(AliMultiplicityTask, 1);
86 };
87
88 #endif