#ifndef ALIDNDPTCORRECTION_H
#define ALIDNDPTCORRECTION_H
class iostream;
class TFile;
class TCint;
class TFolder;
class TObjArray;
class TString;
class THnSparse;
class AliESDtrackCuts;
class AliVertexerTracks;
class AliESD;
class AliESDfriend;
class AliESDfriendTrack;
class AlidNdPtEventCuts;
class AlidNdPtAcceptanceCuts;
class AlidNdPtCorrection;
class AlidNdPt;
class AlidNdPtHelper;
#include "AlidNdPt.h"
class AlidNdPtCorrection : public AlidNdPt {
public :
AlidNdPtCorrection();
AlidNdPtCorrection(Char_t* name, Char_t* title, TString corrMatrixFileName="ala.root");
~AlidNdPtCorrection();
virtual void Init();
virtual void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0);
virtual Long64_t Merge(TCollection* const list);
virtual void Analyse();
virtual TFolder *ExportToFolder(TObjArray * const array=0);
TFolder* GetCorrectionFolder() const {return fCorrectionFolder;}
TFolder *CreateFolder(TString folder = "folderdNdPtCorrection",TString title = "Analysed dNdPt histograms");
void FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, AlidNdPtHelper::TrackObject trackObj, Double_t zv, Int_t multRec, Int_t trueMult) const;
void FillHistograms(AliStack *const stack, Int_t label, AlidNdPtHelper::TrackObject trackObj, Int_t multRec) const;
void FillHistograms(AlidNdPtHelper::EventObject eventObj, Double_t zv, Int_t multMBRec) const;
Double_t GetCorrFactZvPtEta(THnSparse *const hist=0, Double_t zv =0, Double_t pt=0, Double_t eta=0) const;
Double_t GetContFactZvPtEta(THnSparse *const hist=0, Double_t zv =0, Double_t pt=0, Double_t eta=0) const;
Double_t GetCorrFactZvMult(THnSparse *const hist=0, Double_t zv =0, Int_t mult=0) const;
Double_t GetContFactZvMult(THnSparse *const hist=0, Double_t zv =0, Int_t mult=0) const;
THnSparseF *GetMCEventHist1() const { return fMCEventHist1;};
THnSparseF *GetRecEventHist1() const { return fRecEventHist1;};
THnSparseF *GetRecEventMultHist1() const { return fRecEventMultHist1;};
THnSparseF *GetMCAllEventMultHist1() const {return fMCAllEventMultHist1;};
THnSparseF *GetMCAllNDEventMultHist1() const {return fMCAllNDEventMultHist1;};
THnSparseF *GetMCAllNSDEventMultHist1() const {return fMCAllNSDEventMultHist1;};
THnSparseF *GetMCTriggerMultHist1() const {return fMCTriggerMultHist1;};
THnSparseF *GetMCEventMultHist1() const {return fMCEventMultHist1;};
THnSparseF *GetMCAllPrimTrackMultHist1() const {return fMCAllPrimTrackMultHist1;};
THnSparseF *GetMCNDEventAllPrimTrackMultHist1() const {return fMCNDEventAllPrimTrackMultHist1;};
THnSparseF *GetMCNSDEventAllPrimTrackMultHist1() const {return fMCNSDEventAllPrimTrackMultHist1;};
THnSparseF *GetMCTriggerPrimTrackMultHist1() const {return fMCTriggerPrimTrackMultHist1;};
THnSparseF *GetMCEventPrimTrackMultHist1() const {return fMCEventPrimTrackMultHist1;};
THnSparseF *GetMCAllPrimTrackTrueMultHist1() const {return fMCAllPrimTrackTrueMultHist1;};
THnSparseF *GetMCNDEventAllPrimTrackTrueMultHist1() const {return fMCNDEventAllPrimTrackTrueMultHist1;};
THnSparseF *GetMCNSDEventAllPrimTrackTrueMultHist1() const {return fMCNSDEventAllPrimTrackTrueMultHist1;};
THnSparseF *GetMCTriggerPrimTrackTrueMultHist1() const {return fMCTriggerPrimTrackTrueMultHist1;};
THnSparseF *GetMCEventPrimTrackTrueMultHist1() const {return fMCEventPrimTrackTrueMultHist1;};
THnSparseF *GetMCAllPrimTrackTrueMultHist2() const {return fMCAllPrimTrackTrueMultHist2;};
THnSparseF *GetMCNDEventAllPrimTrackTrueMultHist2() const {return fMCNDEventAllPrimTrackTrueMultHist2;};
THnSparseF *GetMCNSDEventAllPrimTrackTrueMultHist2() const {return fMCNSDEventAllPrimTrackTrueMultHist2;};
THnSparseF *GetMCTriggerPrimTrackTrueMultHist2() const {return fMCTriggerPrimTrackTrueMultHist2;};
THnSparseF *GetMCEventPrimTrackTrueMultHist2() const {return fMCEventPrimTrackTrueMultHist2;};
THnSparseF *GetMCAllPrimTrackMeanPtMult1() const {return fMCAllPrimTrackMeanPtMult1;};
THnSparseF *GetMCNDEventAllPrimTrackMeanPtMult1() const {return fMCNDEventAllPrimTrackMeanPtMult1;};
THnSparseF *GetMCNSDEventAllPrimTrackMeanPtMult1() const {return fMCNSDEventAllPrimTrackMeanPtMult1;};
THnSparseF *GetMCTriggerPrimTrackMeanPtMult1() const {return fMCTriggerPrimTrackMeanPtMult1;};
THnSparseF *GetMCEventPrimTrackMeanPtMult1() const {return fMCEventPrimTrackMeanPtMult1;};
THnSparseF *GetMCAllPrimTrackMeanPtTrueMult1() const {return fMCAllPrimTrackMeanPtTrueMult1;};
THnSparseF *GetMCNDEventAllPrimTrackMeanPtTrueMult1() const {return fMCNDEventAllPrimTrackMeanPtTrueMult1;};
THnSparseF *GetMCNSDEventAllPrimTrackMeanPtTrueMult1() const {return fMCNSDEventAllPrimTrackMeanPtTrueMult1;};
THnSparseF *GetMCTriggerPrimTrackMeanPtTrueMult1() const {return fMCTriggerPrimTrackMeanPtTrueMult1;};
THnSparseF *GetMCEventPrimTrackMeanPtTrueMult1() const {return fMCEventPrimTrackMeanPtTrueMult1;};
THnSparseF *GetCorrRecTrackMultHist1(Int_t i) const {return fCorrRecTrackMultHist1[i];}
THnSparseF *GetCorrRecTrackTrueMultHist1(Int_t i) const {return fCorrRecTrackTrueMultHist1[i];}
THnSparseF *GetCorrRecTrackTrueMultHist2(Int_t i) const {return fCorrRecTrackTrueMultHist2[i];}
THnSparseF *GetCorrRecTrackMeanPtMultHist1(Int_t i) const {return fCorrRecTrackMeanPtMultHist1[i];}
THnSparseF *GetCorrRecTrackMeanPtTrueMultHist1(Int_t i) const {return fCorrRecTrackMeanPtTrueMultHist1[i];}
THnSparseF *GetCorrRecTrackPt1(Int_t i) const {return fCorrRecTrackPt1[i];}
THnSparseF *GetCorrRecEventHist1(Int_t i) const {return fCorrRecEventHist1[i];}
THnSparseF *GetCorrRecEventHist2(Int_t i) const {return fCorrRecEventHist2[i];}
THnSparseF *GetEventCount() const {return fEventCount;}
void SetEventMultCorrelationMatrix(THnSparseF *const matrix=0) {fEventMultCorrelationMatrix = matrix;}
THnSparseF *GetEventMultCorrelationMatrix() const {return fEventMultCorrelationMatrix;}
void SetZvNorm(TH1D *const matrix=0) {fZvNorm = matrix;}
TH1D *GetZvNorm() const {return fZvNorm;}
void SetZvEmptyEventsNorm(TH1D *const matrix=0) {fZvEmptyEventsNorm = matrix;}
TH1D *GetZvEmptyEventsNorm() const {return fZvEmptyEventsNorm;}
void SetLHCBin0Background(TH1D *const matrix=0) {fLHCBin0Background = matrix;}
TH1D *GetLHCBin0Background() const {return fLHCBin0Background;}
void SetCorrEventMatrix(THnSparseF *const matrix=0) {fCorrEventMatrix = matrix;}
THnSparseF *GetCorrEventMatrix() const {return fCorrEventMatrix;}
void SetCorrTriggerMBtoInelEventMatrix(THnSparseF *const matrix=0) {fCorrTriggerMBtoInelEventMatrix = matrix;}
THnSparseF *GetCorrTriggerMBtoInelEventMatrix() const {return fCorrTriggerMBtoInelEventMatrix;}
void SetCorrTriggerMBtoNDEventMatrix(THnSparseF *const matrix=0) {fCorrTriggerMBtoNDEventMatrix = matrix;}
THnSparseF *GetCorrTriggerMBtoNDEventMatrix() const {return fCorrTriggerMBtoNDEventMatrix;}
void SetCorrTriggerMBtoNSDEventMatrix(THnSparseF *const matrix=0) {fCorrTriggerMBtoNSDEventMatrix = matrix;}
THnSparseF *GetCorrTriggerMBtoNSDEventMatrix() const {return fCorrTriggerMBtoNSDEventMatrix;}
void SetCorrTrackEventMatrix(THnSparseF *const matrix=0) {fCorrTrackEventMatrix = matrix;}
THnSparseF *GetCorrTrackEventMatrix() const {return fCorrTrackEventMatrix;}
void SetCorrTriggerMBtoInelTrackEventMatrix(THnSparseF *const matrix=0) {fCorrTriggerMBtoInelTrackEventMatrix = matrix;}
THnSparseF *GetCorrTriggerMBtoInelTrackEventMatrix() const {return fCorrTriggerMBtoInelTrackEventMatrix;}
void SetCorrTriggerMBtoNDTrackEventMatrix(THnSparseF *const matrix=0) {fCorrTriggerMBtoNDTrackEventMatrix = matrix;}
THnSparseF *GetCorrTriggerMBtoNDTrackEventMatrix() const {return fCorrTriggerMBtoNDTrackEventMatrix;}
void SetCorrTriggerMBtoNSDTrackEventMatrix(THnSparseF *const matrix=0) {fCorrTriggerMBtoNSDTrackEventMatrix = matrix;}
THnSparseF *GetCorrTriggerMBtoNSDTrackEventMatrix() const {return fCorrTriggerMBtoNSDTrackEventMatrix;}
void SetCorrTrackMatrix(THnSparseF *const matrix=0) {fCorrTrackMatrix = matrix;}
THnSparseF *GetCorrTrackMatrix() const {return fCorrTrackMatrix;}
void SetCorrHighPtTrackMatrix(THnSparseF *const matrix=0) {fCorrHighPtTrackMatrix = matrix;}
THnSparseF *GetCorrHighPtTrackMatrix() const {return fCorrHighPtTrackMatrix;}
void SetContTrackMatrix(THnSparseF *const matrix=0) {fContTrackMatrix = matrix;}
THnSparseF *GetContTrackMatrix() const {return fContTrackMatrix;}
void SetContMultTrackMatrix(THnSparseF *const matrix=0) {fContMultTrackMatrix = matrix;}
THnSparseF *GetContMultTrackMatrix() const {return fContMultTrackMatrix;}
void SetCorrMatrixFileName(TString name="") { fCorrMatrixFileName = name; }
Int_t GetTrueMult(THnSparse *const hist=0, Int_t mult=0) const;
private:
TFolder *fCorrectionFolder;
THnSparseF *fMCEventHist1;
THnSparseF *fRecEventHist1;
THnSparseF *fRecEventMultHist1;
THnSparseF *fMCAllEventMultHist1;
THnSparseF *fMCAllNDEventMultHist1;
THnSparseF *fMCAllNSDEventMultHist1;
THnSparseF *fMCTriggerMultHist1;
THnSparseF *fMCEventMultHist1;
THnSparseF *fMCAllPrimTrackMultHist1;
THnSparseF *fMCNDEventAllPrimTrackMultHist1;
THnSparseF *fMCNSDEventAllPrimTrackMultHist1;
THnSparseF *fMCTriggerPrimTrackMultHist1;
THnSparseF *fMCEventPrimTrackMultHist1;
THnSparseF *fMCAllPrimTrackTrueMultHist1;
THnSparseF *fMCNDEventAllPrimTrackTrueMultHist1;
THnSparseF *fMCNSDEventAllPrimTrackTrueMultHist1;
THnSparseF *fMCTriggerPrimTrackTrueMultHist1;
THnSparseF *fMCEventPrimTrackTrueMultHist1;
THnSparseF *fMCAllPrimTrackTrueMultHist2;
THnSparseF *fMCNDEventAllPrimTrackTrueMultHist2;
THnSparseF *fMCNSDEventAllPrimTrackTrueMultHist2;
THnSparseF *fMCTriggerPrimTrackTrueMultHist2;
THnSparseF *fMCEventPrimTrackTrueMultHist2;
THnSparseF *fMCAllPrimTrackMeanPtMult1;
THnSparseF *fMCNDEventAllPrimTrackMeanPtMult1;
THnSparseF *fMCNSDEventAllPrimTrackMeanPtMult1;
THnSparseF *fMCTriggerPrimTrackMeanPtMult1;
THnSparseF *fMCEventPrimTrackMeanPtMult1;
THnSparseF *fMCAllPrimTrackMeanPtTrueMult1;
THnSparseF *fMCNDEventAllPrimTrackMeanPtTrueMult1;
THnSparseF *fMCNSDEventAllPrimTrackMeanPtTrueMult1;
THnSparseF *fMCTriggerPrimTrackMeanPtTrueMult1;
THnSparseF *fMCEventPrimTrackMeanPtTrueMult1;
THnSparseF *fRecTrackHist1[AlidNdPtHelper::kCutSteps];
THnSparseF *fCorrRecTrackMultHist1[8];
THnSparseF *fCorrRecTrackTrueMultHist1[8];
THnSparseF *fCorrRecTrackTrueMultHist2[8];
THnSparseF *fCorrRecTrackMeanPtMultHist1[8];
THnSparseF *fCorrRecTrackMeanPtTrueMultHist1[8];
THnSparseF *fCorrRecTrackPt1[8];
THnSparseF *fCorrRecEventHist1[5];
THnSparseF *fCorrRecEventHist2[5];
THnSparseF *fEventMultCorrelationMatrix;
TH1D *fZvNorm;
TH1D *fZvEmptyEventsNorm;
TH1D *fLHCBin0Background;
THnSparseF *fCorrTriggerMBtoInelEventMatrix;
THnSparseF *fCorrTriggerMBtoNDEventMatrix;
THnSparseF *fCorrTriggerMBtoNSDEventMatrix;
THnSparseF *fCorrEventMatrix;
THnSparseF *fCorrTriggerMBtoInelTrackEventMatrix;
THnSparseF *fCorrTriggerMBtoNDTrackEventMatrix;
THnSparseF *fCorrTriggerMBtoNSDTrackEventMatrix;
THnSparseF *fCorrTrackEventMatrix;
THnSparseF *fCorrTrackMatrix;
THnSparseF *fCorrHighPtTrackMatrix;
THnSparseF *fContTrackMatrix;
THnSparseF *fContMultTrackMatrix;
TString fCorrMatrixFileName;
THnSparseF *fCosmicsHisto;
THnSparseF *fEventCount;
AlidNdPtCorrection(const AlidNdPtCorrection&);
AlidNdPtCorrection& operator=(const AlidNdPtCorrection&);
ClassDef(AlidNdPtCorrection,3);
};
#endif