#ifndef ALIDNDETACORRECTION_H
#define ALIDNDETACORRECTION_H
#include <TCollection.h>
#include <TNamed.h>
#include "AliPWG0Helper.h"
class AliCorrection;
class TH1;
class AlidNdEtaCorrection : public TNamed
{
public:
enum CorrectionType {
kNone = 0,
kTrack2Particle,
kVertexReco,
kINEL,
kNSD,
kND,
kOnePart
};
AlidNdEtaCorrection();
AlidNdEtaCorrection(const Char_t* name, const Char_t* title, AliPWG0Helper::AnalysisMode analysis = (AliPWG0Helper::AnalysisMode) (AliPWG0Helper::kTPC | AliPWG0Helper::kFieldOn));
virtual Long64_t Merge(TCollection* list);
~AlidNdEtaCorrection();
void FillMCParticle(Float_t vtx, Float_t eta, Float_t pt, Bool_t trigger, Bool_t vertex, Int_t processType);
void FillTrackedParticle(Float_t vtx, Float_t eta, Float_t pt, Double_t weight=1.);
void FillEvent(Float_t vtx, Float_t n, Bool_t trigger, Bool_t vertex, Int_t processType);
void Finish();
AliCorrection* GetTrack2ParticleCorrection() {return fTrack2ParticleCorrection;}
AliCorrection* GetVertexRecoCorrection() {return fVertexRecoCorrection;}
AliCorrection* GetTriggerBiasCorrectionINEL() {return fTriggerBiasCorrectionMBToINEL;}
AliCorrection* GetTriggerBiasCorrectionNSD() {return fTriggerBiasCorrectionMBToNSD;}
AliCorrection* GetTriggerBiasCorrectionND() {return fTriggerBiasCorrectionMBToND;}
AliCorrection* GetTriggerBiasCorrectionOnePart() {return fTriggerBiasCorrectionMBToOnePart;}
AliCorrection* GetCorrection(CorrectionType correctionType);
void Reset(void);
void Add(AlidNdEtaCorrection* aCorrectionsToAdd, Float_t c=1);
void Scale(Float_t c);
void SaveHistograms();
Bool_t LoadHistograms(const Char_t* dir = 0);
void DrawHistograms();
void DrawOverview(const char* canvasName = 0);
Float_t GetMeasuredFraction(CorrectionType correctionType, Float_t ptCutOff, Float_t eta = -100, Int_t vertexBegin = -1, Int_t vertexEnd = -1, Bool_t debug = kFALSE);
TH1* GetMeasuredEventFraction(CorrectionType correctionType, Int_t multCut);
void ReduceInformation();
protected:
AliCorrection* fTrack2ParticleCorrection;
AliCorrection* fVertexRecoCorrection;
AliCorrection* fTriggerBiasCorrectionMBToINEL;
AliCorrection* fTriggerBiasCorrectionMBToNSD;
AliCorrection* fTriggerBiasCorrectionMBToND;
AliCorrection* fTriggerBiasCorrectionMBToOnePart;
private:
AlidNdEtaCorrection(const AlidNdEtaCorrection&);
AlidNdEtaCorrection& operator=(const AlidNdEtaCorrection&);
ClassDef(AlidNdEtaCorrection, 2)
};
#endif