]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG0/dNdEta/dNdEtaAnalysis.h
Update
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / dNdEtaAnalysis.h
index 818ba196aba693176a22d281d21ca16b379782f5..07760f28cfc74ba5ce184e4ab06faf3485041251 100644 (file)
@@ -1,3 +1,5 @@
+/* $Id$ */
+
 #ifndef DNDETANALYSIS_H
 #define DNDETANALYSIS_H
 
 // - figure out correct way to treat the errors
 // - add functionality to make dn/deta for different mult classes?
 
-#ifndef ROOT_TObject
-#include "TObject.h"
-#endif
-#ifndef ROOT_TFile
-#include "TFile.h"
-#endif
-#ifndef ROOT_TH2
-#include "TH2.h"
-#endif
-#ifndef ROOT_TMath
-#include "TMath.h"
-#endif
+#include <TNamed.h>
+#include "AlidNdEtaCorrection.h"
+#include "AliPWG0Helper.h"
+#include <TString.h>
+
+class TH1F;
+class TCollection;
 
-class dNdEtaAnalysis : public TObject 
+class AliCorrection;
+
+class dNdEtaAnalysis : public TNamed
 {
-protected:    
+public:
+  enum { kVertexBinning = 1+2 }; // the first is for the whole vertex range, the others divide the vertex range
 
-  TString  fName; 
+  dNdEtaAnalysis();
+  dNdEtaAnalysis(const Char_t* name, const Char_t* title, AliPWG0Helper::AnalysisMode analysisMode = (AliPWG0Helper::AnalysisMode) (AliPWG0Helper::kTPC | AliPWG0Helper::kFieldOn));
+  virtual ~dNdEtaAnalysis();
 
-  TH2F* hEtaVsVtx;
-  TH1F* hVtx;
-  TH1F* hdNdEta;
+  dNdEtaAnalysis(const dNdEtaAnalysis &c);
+  dNdEtaAnalysis &operator=(const dNdEtaAnalysis &c);
+  virtual void Copy(TObject &c) const;
 
-public:
-  dNdEtaAnalysis(Char_t* name="dndeta_correction");
+  void FillTrack(Float_t vtx, Float_t eta, Float_t pt);
+  void FillEvent(Float_t vtx, Float_t n);
+  void FillTriggeredEvent(Float_t n);
 
-  void FillTrack(Float_t vtx, Float_t eta, Float_t weight);
-  void FillEvent(Float_t vtx);
-  
-  void Finish();
-  
+  void Finish(AlidNdEtaCorrection* correction, Float_t ptCut, AlidNdEtaCorrection::CorrectionType correctionType, const char* tag = "", Int_t backgroundSubtraction = 0, TH1* combinatoricsCorrection = 0);
+
+  void DrawHistograms(Bool_t simple = kFALSE);
+  void LoadHistograms(const Char_t* dir = 0);
   void SaveHistograms();
-  
-  ClassDef(dNdEtaAnalysis,0)
+
+  virtual Long64_t Merge(TCollection* list);
+
+  AliCorrection* GetData() const { return fData; }
+
+  TH1F* GetPtHistogram() const { return fPtDist; }
+
+  TH1F* GetdNdEtaHistogram(Int_t i = 0) const { return fdNdEta[i]; }
+  TH1F* GetdNdEtaPtCutOffCorrectedHistogram(Int_t i = 0) const { return fdNdEtaPtCutOffCorrected[i]; }
+
+  void SetAnalysisMode(AliPWG0Helper::AnalysisMode mode) { fAnalysisMode = mode; }
+  AliPWG0Helper::AnalysisMode GetAnalysisMode() { return fAnalysisMode; }
+
+  void SetVtxMin(Float_t vtxMin) {fvtxMin = vtxMin;}
+  void SetVtxMax(Float_t vtxMax) {fvtxMax = vtxMax;}
+
+protected:
+  Float_t GetVtxMin(Float_t eta);
+
+  AliCorrection* fData;     // we store the data in an AliCorrection
+  TH1F* fMult;              // (raw) multiplicity distribution of triggered events
+
+  TH1F* fPtDist; // pt distribution
+
+  TH1F* fdNdEta[kVertexBinning];                   // dndeta results for different vertex bins (0 = full range)
+  TH1F* fdNdEtaPtCutOffCorrected[kVertexBinning];  // dndeta results for different vertex bins (0 = full range), pt cut off corrected
+
+  AliPWG0Helper::AnalysisMode fAnalysisMode;       // detector (combination) used for the analysis
+  TString fTag;                                   // tag saved that describes the applied correction
+
+  Float_t fvtxMin;  // mininum vtx on which to integrate
+  Float_t fvtxMax;  // maximum vtx on which to intgrate
+
+  ClassDef(dNdEtaAnalysis, 3)
 };
 
 #endif