- changes for QA part of standard GG task
[u/mrichter/AliRoot.git] / PWGUD / base / dNdEtaAnalysis.h
1 /* $Id$ */
2
3 #ifndef DNDETANALYSIS_H
4 #define DNDETANALYSIS_H
5
6 // ------------------------------------------------------
7 //
8 // Class for dn/deta analysis
9 //
10 // ------------------------------------------------------
11 // 
12 // TODO:
13 // - more documentation
14 // - add debug statements
15 // - add more histograms
16 // - add functionality to set the bin sizes
17 // - figure out correct way to treat the errors
18 // - add functionality to make dn/deta for different mult classes?
19
20 #include <TNamed.h>
21 #include "AlidNdEtaCorrection.h"
22 #include "AliPWG0Helper.h"
23 #include <TString.h>
24
25 class TH1F;
26 class TCollection;
27
28 class AliCorrection;
29
30 class dNdEtaAnalysis : public TNamed
31 {
32 public:
33   enum { kVertexBinning = 1+2 }; // the first is for the whole vertex range, the others divide the vertex range
34
35   dNdEtaAnalysis();
36   dNdEtaAnalysis(const Char_t* name, const Char_t* title, AliPWG0Helper::AnalysisMode analysisMode = (AliPWG0Helper::AnalysisMode) (AliPWG0Helper::kTPC | AliPWG0Helper::kFieldOn));
37   virtual ~dNdEtaAnalysis();
38
39   dNdEtaAnalysis(const dNdEtaAnalysis &c);
40   dNdEtaAnalysis &operator=(const dNdEtaAnalysis &c);
41   virtual void Copy(TObject &c) const;
42
43   void FillTrack(Float_t vtx, Float_t eta, Float_t pt);
44   void FillEvent(Float_t vtx, Float_t n);
45   void FillTriggeredEvent(Float_t n);
46
47   void Finish(AlidNdEtaCorrection* correction, Float_t ptCut, AlidNdEtaCorrection::CorrectionType correctionType, const char* tag = "", Int_t backgroundSubtraction = 0, TH1* combinatoricsCorrection = 0);
48
49   void DrawHistograms(Bool_t simple = kFALSE);
50   void LoadHistograms(const Char_t* dir = 0);
51   void SaveHistograms();
52
53   virtual Long64_t Merge(TCollection* list);
54
55   AliCorrection* GetData() const { return fData; }
56
57   TH1F* GetPtHistogram() const { return fPtDist; }
58
59   TH1F* GetdNdEtaHistogram(Int_t i = 0) const { return fdNdEta[i]; }
60   TH1F* GetdNdEtaPtCutOffCorrectedHistogram(Int_t i = 0) const { return fdNdEtaPtCutOffCorrected[i]; }
61
62   void SetAnalysisMode(AliPWG0Helper::AnalysisMode mode) { fAnalysisMode = mode; }
63   AliPWG0Helper::AnalysisMode GetAnalysisMode() { return fAnalysisMode; }
64
65   void SetVtxMin(Float_t vtxMin) {fvtxMin = vtxMin;}
66   void SetVtxMax(Float_t vtxMax) {fvtxMax = vtxMax;}
67
68 protected:
69   Float_t GetVtxMin(Float_t eta);
70
71   AliCorrection* fData;     // we store the data in an AliCorrection
72   TH1F* fMult;              // (raw) multiplicity distribution of triggered events
73
74   TH1F* fPtDist; // pt distribution
75
76   TH1F* fdNdEta[kVertexBinning];                   // dndeta results for different vertex bins (0 = full range)
77   TH1F* fdNdEtaPtCutOffCorrected[kVertexBinning];  // dndeta results for different vertex bins (0 = full range), pt cut off corrected
78
79   AliPWG0Helper::AnalysisMode fAnalysisMode;       // detector (combination) used for the analysis
80   TString fTag;                                   // tag saved that describes the applied correction
81
82   Float_t fvtxMin;  // mininum vtx on which to integrate
83   Float_t fvtxMax;  // maximum vtx on which to intgrate
84
85   ClassDef(dNdEtaAnalysis, 3)
86 };
87
88 #endif