1 #ifndef __AliAnaChargedJetResponseMaker_h__
2 #define __AliAnaChargedJetResponseMaker_h__
15 // Measured spectrum defines minimum and maximum pT on the reconstructed axis of the response matrix. To be set with SetMeasuredSpectrum(TH1D *hPtMeasured);
18 class AliAnaChargedJetResponseMaker {
20 AliAnaChargedJetResponseMaker();
21 AliAnaChargedJetResponseMaker(const AliAnaChargedJetResponseMaker& obj); // copy constructor
22 AliAnaChargedJetResponseMaker& operator=(const AliAnaChargedJetResponseMaker& other); // assignment
23 virtual ~AliAnaChargedJetResponseMaker() {;}
25 // kParam = use parametrization of response
26 // kResiduals = use response as measured, w/o statistical error propagation
27 // kResidualsErr = use response as measured, with statistical error propagation
28 enum ResolutionType {kParam,kResiduals,kResidualsErr};
31 virtual void SetDebugMode(Bool_t b) {fDebug=b;}
33 virtual void SetResolutionType(ResolutionType r) {fResolutionType=r;}
35 virtual void SetDeltaPtJetsFunc(TF1 *f1) {fDeltaPt=f1;}
36 virtual void SetDeltaPtJetsHist(TH1D *h1) {fhDeltaPt=h1;}
37 virtual void SetNDimensions(Int_t dim) {fDimensions = dim;}
38 virtual void SetMeasuredSpectrum(TH1D *hPtMeasured);
40 virtual void SetFlatEfficiency(Double_t eff);
41 virtual void SetEfficiency(TGraphErrors *grEff);
43 virtual void SetPtMinUnfolded(Double_t ptmin) {fPtMinUnfolded = ptmin;}
44 virtual void SetPtMaxUnfolded(Double_t ptmax) {fPtMaxUnfolded = ptmax;}
45 virtual void SetPtMaxUnfoldedHigh(Double_t ptmaxh) {fPtMaxUnfoldedHigh = ptmaxh;}
46 virtual void SetBinWidthFactorUnfolded(Int_t fac) {fBinWidthFactorUnfolded = fac;}
47 virtual void SetSkipBinsUnfolded(Int_t skip) {fSkipBinsUnfolded=skip;}
48 virtual void SetExtraBinsUnfolded(Int_t extra) {fExtraBinsUnfolded=extra;}
49 virtual void SetVariableBinning(Bool_t b, double ptmax) {
51 fPtMaxUnfVarBinning=ptmax;
53 virtual void SetCalcErrors(Bool_t b) {fbCalcErrors=b;}
55 //Setters for merging fine to normal response matrix
56 virtual void SetFineFrac(Int_t i = 10) {fFineFrac = i;}
57 virtual void SetRMMergeWeightFunction(TF1 *f1) {f1MergeFunction = f1;}
60 virtual TF1 *GetDeltaPtJetsFunc() {return fDeltaPt;}
61 virtual TH1D *GetDeltaPtJetsHist() {return fhDeltaPt;}
62 virtual THnSparse *GetMeasuredSpectrum() {return fPtMeasured;}
63 virtual THnSparse *GetEfficiency() {return fEfficiency;}
64 virtual THnSparse *GetEfficiencyFine() {return fEfficiencyFine;}
65 virtual THnSparse *GetResponseMatrix() {return fResponseMatrix;}
66 virtual THnSparse *GetResponseMatrixFine() {return fResponseMatrixFine;}
69 virtual Double_t InterpolateFast(TGraph *gr, Double_t x);
70 virtual Double_t InterpolateFast(TH1 *h, Double_t x);
72 virtual TH1D *MultiplyResponseGenerated(TH1 *hGen=0, TH2 *hResponse=0,TH1 *hEfficiency=0,Bool_t bDrawSlices=kFALSE);
73 virtual TH1D *MultiplyResponseGenerated(TF1 *fGen, TH2 *hResponse,TH1 *hEfficiency);
75 virtual void MakeResponseMatrixJetsFineMerged(Int_t skipBins =0, Int_t binWidthFactor = 2, Int_t extraBins = 0, Bool_t bVariableBinning = kFALSE, Double_t ptmin = 0.);
77 virtual void InitializeResponseMatrix();
78 virtual void InitializeResponseMatrixFine();
80 virtual void InitializeEfficiency();
81 virtual void InitializeEfficiencyFine();
83 virtual void FillResponseMatrixFineAndMerge();
85 virtual TH2* MakeResponseMatrixRebin(TH2 *hRMFine, TH2 *hRM);
89 ResolutionType fResolutionType;
92 Int_t fDimensions; //number of dimensions to unfold (class only prepared for 1 dimension -> 2D response matrix)
98 Double_t *fBinArrayPtRec;
99 THnSparse *fPtMeasured;
101 THnSparse *fEfficiency;
102 THnSparse *fEfficiencyFine;
103 THnSparse *fResponseMatrix;
104 THnSparse *fResponseMatrixFine;
105 Double_t fPtMinUnfolded; //Minimum pt for unfolded spectrum
106 Double_t fPtMaxUnfolded; //Maximum pt for unfolded spectrum
107 Double_t fPtMaxUnfoldedHigh; //Extend last bin of unfolded axis up to fPtMaxUnfoldedHigh
108 Int_t fBinWidthFactorUnfolded; //Unfolded bins x times wider than measured
109 Int_t fSkipBinsUnfolded; //#unfolded bins to be skipped starting from fPtMinUnfolded
110 Int_t fExtraBinsUnfolded; //Extra unfolded bins for pTUnf>pTMeas
111 Bool_t fbVariableBinning; //Unfolded bins 2x narrower for pTUnf<pTMaxUnfVarBinning compared to bin width for pTUnf>pTMaxUnfVarBinning
112 Double_t fPtMaxUnfVarBinning;
113 TF1 *f1MergeFunction;
117 ClassDef(AliAnaChargedJetResponseMaker,0);