added new enum that describes the type of analysis, passed to all analysis classes
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / AlidNdEtaCorrection.h
1 /* $Id$ */
2
3 #ifndef ALIDNDETACORRECTION_H
4 #define ALIDNDETACORRECTION_H
5
6
7 // ------------------------------------------------------
8 //
9 // Class to handle corrections for dN/dEta measurements
10 //
11 // ------------------------------------------------------
12 //
13 // TODO:
14 // - make the ntrack to npart correction 3D
15 // - add documentation
16 // - add status: generate or use maps
17 // - add functionality to set the bin sizes
18 // - update MERge function
19 //
20
21 #include <TCollection.h>
22 #include <TNamed.h>
23 #include "AliPWG0Helper.h"
24
25 class AliCorrection;
26
27 class AlidNdEtaCorrection : public TNamed
28 {
29 public:
30   enum CorrectionType {
31     kNone = 0,
32     kTrack2Particle,  // measured events
33     kVertexReco,      // MB sample
34     kINEL,
35     kNSD,
36     kND
37   };
38
39   AlidNdEtaCorrection();
40   AlidNdEtaCorrection(const Char_t* name, const Char_t* title, AliPWG0Helper::AnalysisMode analysis = AliPWG0Helper::kTPC);
41
42   virtual Long64_t Merge(TCollection* list);
43
44   ~AlidNdEtaCorrection();
45
46   void FillMCParticle(Float_t vtx, Float_t eta, Float_t pt, Bool_t trigger, Bool_t vertex, Int_t processType);
47   void FillTrackedParticle(Float_t vtx, Float_t eta, Float_t pt);
48   void FillEvent(Float_t vtx, Float_t n, Bool_t trigger, Bool_t vertex, Int_t processType);
49
50   void Finish();
51
52   AliCorrection* GetTrack2ParticleCorrection()  {return fTrack2ParticleCorrection;}
53   AliCorrection* GetVertexRecoCorrection()      {return fVertexRecoCorrection;}
54   AliCorrection* GetTriggerBiasCorrectionINEL() {return fTriggerBiasCorrectionMBToINEL;}
55   AliCorrection* GetTriggerBiasCorrectionNSD()  {return fTriggerBiasCorrectionMBToNSD;}
56   AliCorrection* GetTriggerBiasCorrectionND()   {return fTriggerBiasCorrectionMBToND;}
57   AliCorrection* GetCorrection(CorrectionType correctionType);
58
59   void    Reset(void);
60   void    Add(AlidNdEtaCorrection* aCorrectionsToAdd, Float_t c=1);
61
62   void    SaveHistograms();
63   Bool_t  LoadHistograms(const Char_t* dir = 0);
64   void    DrawHistograms();
65   void    DrawOverview(const char* canvasName = 0);
66
67   Float_t GetMeasuredFraction(CorrectionType correctionType, Float_t ptCutOff, Float_t eta = -100, Bool_t debug = kFALSE);
68
69   void ReduceInformation();
70
71 protected:
72   AliCorrection* fTrack2ParticleCorrection;       //-> handles the track-to-particle correction (only track level (vtx_z, eta, pt))
73   AliCorrection* fVertexRecoCorrection;           //-> handles the vertex reconstruction efficiency, (n, vtx_z)
74   AliCorrection* fTriggerBiasCorrectionMBToINEL;  //-> handles the trigger bias MB->INEL, function of n and vtx_z
75   AliCorrection* fTriggerBiasCorrectionMBToNSD;   //-> handles the trigger bias MB->NSD,  function of n and vtx_z
76   AliCorrection* fTriggerBiasCorrectionMBToND;    //-> handles the trigger bias MB->ND,   function of n and vtx_z
77
78 private:
79   AlidNdEtaCorrection(const AlidNdEtaCorrection&);
80   AlidNdEtaCorrection& operator=(const AlidNdEtaCorrection&);
81
82   ClassDef(AlidNdEtaCorrection, 1)
83 };
84
85 #endif