updated plots
[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 <TNamed.h>
22
23 #include <AliCorrectionMatrix2D.h>
24 #include <AliCorrectionMatrix3D.h>
25
26 class AlidNdEtaCorrection : public TNamed
27 {
28 public:
29   AlidNdEtaCorrection();
30   AlidNdEtaCorrection(const Char_t* name, const Char_t* title);
31
32   ~AlidNdEtaCorrection();
33
34   // fVertexRecoCorrection, fTriggerCorrection
35   void FillEvent(Float_t vtx, Float_t n)                        {fTriggerCorrection->FillGene(vtx, n);}
36   void FillEventWithTrigger(Float_t vtx, Float_t n)             {fVertexRecoCorrection->FillGene(vtx, n); fTriggerCorrection->FillMeas(vtx, n);}
37   void FillEventWithTriggerWithReconstructedVertex(Float_t vtx, Float_t n) {fVertexRecoCorrection->FillMeas(vtx, n);}
38
39   // fTrack2ParticleCorrection
40   void FillParticle(Float_t vtx, Float_t eta, Float_t pt)                  {fTrack2ParticleCorrection->FillGene(vtx, eta, pt);}
41   void FillParticleWhenMeasuredTrack(Float_t vtx, Float_t eta, Float_t pt) {fTrack2ParticleCorrection->FillMeas(vtx, eta, pt);}
42
43   // fTriggerBiasCorrection
44   void FillParticleAllEvents(Float_t eta, Float_t pt)          {fTriggerBiasCorrection->FillGene(eta, pt);}
45   void FillParticleWhenEventTriggered(Float_t eta, Float_t pt) {fTriggerBiasCorrection->FillMeas(eta, pt);}
46
47   //void IncreaseEventCount() { fNEvents++; }
48   //void IncreaseTriggeredEventCount() { fNTriggeredEvents++; }
49
50   void Finish();
51
52   AliCorrectionMatrix3D* GetTrack2ParticleCorrection()    {return fTrack2ParticleCorrection;}
53   AliCorrectionMatrix2D* GetVertexRecoCorrection()        {return fVertexRecoCorrection;}
54   AliCorrectionMatrix2D* GetTriggerBiasCorrection()       {return fTriggerBiasCorrection;}
55   AliCorrectionMatrix2D* GetTriggerCorrection()       {return fTriggerCorrection;}
56
57   virtual Long64_t Merge(TCollection* list);
58
59   void    SaveHistograms();
60   Bool_t  LoadHistograms(const Char_t* fileName, const Char_t* dir = "dndeta_correction");
61   Bool_t  LoadCorrection(const Char_t* fileName, const Char_t* dir = "dndeta_correction")
62     {return LoadHistograms(fileName, dir);}
63   
64   void DrawHistograms();
65   
66   //  void RemoveEdges(Float_t cut=2, Int_t nBinsVtx=0, Int_t nBinsEta=0);
67   
68   Float_t GetTrack2ParticleCorrection(Float_t vtx, Float_t eta, Float_t pt)
69     {return fTrack2ParticleCorrection->GetCorrection(vtx, eta, pt);}
70
71   Float_t GetVertexRecoCorrection(Float_t vtx, Float_t n) {return fVertexRecoCorrection->GetCorrection(vtx, n);}
72
73   Float_t GetTriggerCorrection(Float_t vtx, Float_t n) {return fTriggerCorrection->GetCorrection(vtx, n);}
74
75   Float_t GetTriggerBiasCorrection(Float_t eta, Float_t pt=0) {return fTriggerBiasCorrection->GetCorrection(eta, pt);}
76
77   Float_t GetMeasuredFraction(Float_t ptCutOff, Float_t eta = -100, Bool_t debug = kFALSE);
78
79   //void SetNEvents(Long64_t events) { fNEvents = events; }
80
81   Int_t GetNevents();
82   Int_t GetNtriggeredEvents();
83
84   void ReduceInformation();
85
86 protected:
87   AliCorrectionMatrix3D* fTrack2ParticleCorrection; //-> handles the track-to-particle correction, function of vtx_z, eta, pt
88   AliCorrectionMatrix2D* fVertexRecoCorrection;     //-> handles the vertex reconstruction efficiency, function of n_clustersITS and vtx_z
89   AliCorrectionMatrix2D* fTriggerCorrection;       //-> handles the trigger efficiency, function of n_clustersITS and vtx_z
90
91   AliCorrectionMatrix2D* fTriggerBiasCorrection;          //-> MB to desired sample, obsolete!!!
92
93   //Long64_t fNEvents;
94   //Long64_t fNTriggeredEvents;
95
96 private:
97   AlidNdEtaCorrection(const AlidNdEtaCorrection&);
98   AlidNdEtaCorrection& operator=(const AlidNdEtaCorrection&);
99
100   ClassDef(AlidNdEtaCorrection, 1)
101 };
102
103 #endif