]>
Commit | Line | Data |
---|---|---|
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 | protected: | |
66 | Float_t GetVtxMin(Float_t eta); | |
67 | ||
68 | AliCorrection* fData; // we store the data in an AliCorrection | |
69 | TH1F* fMult; // (raw) multiplicity distribution of triggered events | |
70 | ||
71 | TH1F* fPtDist; // pt distribution | |
72 | ||
73 | TH1F* fdNdEta[kVertexBinning]; // dndeta results for different vertex bins (0 = full range) | |
74 | TH1F* fdNdEtaPtCutOffCorrected[kVertexBinning]; // dndeta results for different vertex bins (0 = full range), pt cut off corrected | |
75 | ||
76 | AliPWG0Helper::AnalysisMode fAnalysisMode; // detector (combination) used for the analysis | |
77 | TString fTag; // tag saved that describes the applied correction | |
78 | ||
79 | ClassDef(dNdEtaAnalysis, 2) | |
80 | }; | |
81 | ||
82 | #endif |