]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGUD/base/AlidNdEtaCorrection.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGUD / base / 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 // - add functionality to set the bin sizes
15 // - update MERge function
16 //
17
18 #include <TCollection.h>
19 #include <TNamed.h>
20 #include "AliPWG0Helper.h"
21
22 class AliCorrection;
23 class TH1;
24
25 class AlidNdEtaCorrection : public TNamed
26 {
27 public:
28   enum CorrectionType {
29     kNone = 0,
30     kTrack2Particle,  // measured events
31     kVertexReco,      // MB sample
32     kINEL,
33     kNSD,
34     kND,
35     kOnePart
36   };
37
38   AlidNdEtaCorrection();
39   AlidNdEtaCorrection(const Char_t* name, const Char_t* title, AliPWG0Helper::AnalysisMode analysis = (AliPWG0Helper::AnalysisMode) (AliPWG0Helper::kTPC | AliPWG0Helper::kFieldOn));
40
41   virtual Long64_t Merge(TCollection* list);
42
43   ~AlidNdEtaCorrection();
44
45   void FillMCParticle(Float_t vtx, Float_t eta, Float_t pt, Bool_t trigger, Bool_t vertex, Int_t processType);
46   void FillTrackedParticle(Float_t vtx, Float_t eta, Float_t pt, Double_t weight=1.);
47   void FillEvent(Float_t vtx, Float_t n, Bool_t trigger, Bool_t vertex, Int_t processType);
48
49   void Finish();
50
51   AliCorrection* GetTrack2ParticleCorrection()  {return fTrack2ParticleCorrection;}
52   AliCorrection* GetVertexRecoCorrection()      {return fVertexRecoCorrection;}
53   AliCorrection* GetTriggerBiasCorrectionINEL() {return fTriggerBiasCorrectionMBToINEL;}
54   AliCorrection* GetTriggerBiasCorrectionNSD()  {return fTriggerBiasCorrectionMBToNSD;}
55   AliCorrection* GetTriggerBiasCorrectionND()   {return fTriggerBiasCorrectionMBToND;}
56   AliCorrection* GetTriggerBiasCorrectionOnePart()   {return fTriggerBiasCorrectionMBToOnePart;}
57   AliCorrection* GetCorrection(CorrectionType correctionType);
58
59   void    Reset(void);
60   void    Add(AlidNdEtaCorrection* aCorrectionsToAdd, Float_t c=1);
61   void    Scale(Float_t c);
62
63   void    SaveHistograms();
64   Bool_t  LoadHistograms(const Char_t* dir = 0);
65   void    DrawHistograms();
66   void    DrawOverview(const char* canvasName = 0);
67
68   Float_t GetMeasuredFraction(CorrectionType correctionType, Float_t ptCutOff, Float_t eta = -100, Int_t vertexBegin = -1, Int_t vertexEnd = -1, Bool_t debug = kFALSE);
69   TH1*    GetMeasuredEventFraction(CorrectionType correctionType, Int_t multCut);
70
71   void    ReduceInformation();
72
73 protected:
74   AliCorrection* fTrack2ParticleCorrection;       //-> handles the track-to-particle correction (only track level (vtx_z, eta, pt))
75   AliCorrection* fVertexRecoCorrection;           //-> handles the vertex reconstruction efficiency, (n, vtx_z)
76   AliCorrection* fTriggerBiasCorrectionMBToINEL;  //-> handles the trigger bias MB->INEL, function of n and vtx_z
77   AliCorrection* fTriggerBiasCorrectionMBToNSD;   //-> handles the trigger bias MB->NSD,  function of n and vtx_z
78   AliCorrection* fTriggerBiasCorrectionMBToND;    //-> handles the trigger bias MB->ND,   function of n and vtx_z
79   AliCorrection* fTriggerBiasCorrectionMBToOnePart;    //-> handles the trigger bias MB->OnePart,   function of n and vtx_z
80
81 private:
82   AlidNdEtaCorrection(const AlidNdEtaCorrection&);
83   AlidNdEtaCorrection& operator=(const AlidNdEtaCorrection&);
84
85   ClassDef(AlidNdEtaCorrection, 2)
86 };
87
88 #endif