#ifndef __AliAnaChargedJetResponseMaker_h__
#define __AliAnaChargedJetResponseMaker_h__
#include "Rtypes.h"
#include "TH1.h"
#include "TCanvas.h"
#include "TMath.h"
#include "TH2.h"
#include "TProfile.h"
#include "THnSparse.h"
class TGraph;
class TGraphErrors;
class AliAnaChargedJetResponseMaker {
public:
AliAnaChargedJetResponseMaker();
AliAnaChargedJetResponseMaker(const AliAnaChargedJetResponseMaker& obj);
AliAnaChargedJetResponseMaker& operator=(const AliAnaChargedJetResponseMaker& other);
virtual ~AliAnaChargedJetResponseMaker() {;}
enum ResolutionType {kParam,kResiduals,kResidualsErr};
virtual void SetDebugMode(Bool_t b) {fDebug=b;}
virtual void SetResolutionType(ResolutionType r) {fResolutionType=r;}
virtual void SetDeltaPtJetsFunc(TF1 *f1) {fDeltaPt=f1;}
virtual void SetDeltaPtJetsHist(TH1D *h1) {fhDeltaPt=h1;}
virtual void SetNDimensions(Int_t dim) {fDimensions = dim;}
virtual void SetMeasuredSpectrum(TH1D *hPtMeasured);
virtual void SetMeasuredSpectrumTruncated(TH1D *h1) {fh1MeasuredTruncated=h1;}
virtual void SetDetectorResponse(TH2 *h2) {fh2DetectorResponse=(TH2D*)h2;}
virtual void SetDetectorEfficiency(TH1D *h1) {fhEfficiencyDet=h1;}
virtual void SetFlatEfficiency(Double_t eff);
virtual void SetEfficiency(TGraphErrors *grEff);
virtual void SetPtMinUnfolded(Double_t ptmin) {fPtMinUnfolded = ptmin;}
virtual void SetPtMaxUnfolded(Double_t ptmax) {fPtMaxUnfolded = ptmax;}
virtual void SetPtMaxUnfoldedHigh(Double_t ptmaxh) {fPtMaxUnfoldedHigh = ptmaxh;}
virtual void SetBinWidthFactorUnfolded(Int_t fac) {fBinWidthFactorUnfolded = fac;}
virtual void SetSkipBinsUnfolded(Int_t skip) {fSkipBinsUnfolded=skip;}
virtual void SetExtraBinsUnfolded(Int_t extra) {fExtraBinsUnfolded=extra;}
virtual void SetVariableBinning(Bool_t b, double ptmax) {
fbVariableBinning=b;
fPtMaxUnfVarBinning=ptmax;
}
virtual void SetCalcErrors(Bool_t b) {fbCalcErrors=b;}
virtual void SetFineFrac(Int_t i = 10) {fFineFrac = i;}
virtual void SetRMMergeWeightFunction(TF1 *f1) {f1MergeFunction = f1;}
virtual TF1 *GetDeltaPtJetsFunc() {return fDeltaPt;}
virtual TH1D *GetDeltaPtJetsHist() {return fhDeltaPt;}
virtual THnSparse *GetMeasuredSpectrum() {return fPtMeasured;}
virtual THnSparse *GetEfficiency() {return fEfficiency;}
virtual THnSparse *GetEfficiencyFine() {return fEfficiencyFine;}
virtual THnSparse *GetResponseMatrix() {return fResponseMatrix;}
virtual THnSparse *GetResponseMatrixFine() {return fResponseMatrixFine;}
virtual TH2D *GetDetectorResponseRebin() {return fh2DetectorResponseRebin;}
virtual Bool_t CheckInputForCombinedResponse();
virtual TH2D *GetResponseCombinedFineFull() {return fh2ResponseMatrixCombinedFineFull;}
virtual TH2D *GetResponseCombinedFull() {return fh2ResponseMatrixCombinedFull;}
virtual TH2D *GetResponseCombined() {return fh2ResponseMatrixCombined;}
virtual TH1D *GetEfficiencyCombined() {return fhEfficiencyCombined;}
static Double_t GetBetaPerDOFValue(Int_t betaColl = 0, Int_t betaOpt= 0);
virtual Double_t InterpolateFast(TGraph *gr, Double_t x);
virtual Double_t InterpolateFast(TH1 *h, Double_t x);
virtual TH1D *MultiplyResponseGenerated(TH1 *hGen=0, TH2 *hResponse=0,TH1 *hEfficiency=0,Bool_t bDrawSlices=kFALSE);
virtual TH1D *MultiplyResponseGenerated(TF1 *fGen, TH2 *hResponse,TH1 *hEfficiency);
virtual void MakeResponseMatrixCombined(Int_t skipBins =0, Int_t binWidthFactor = 2, Int_t extraBins = 0, Bool_t bVariableBinning = kFALSE, Double_t ptmin = 0.);
virtual void MakeResponseMatrixJetsFineMerged(Int_t skipBins =0, Int_t binWidthFactor = 2, Int_t extraBins = 0, Bool_t bVariableBinning = kFALSE, Double_t ptmin = 0.);
virtual void InitializeResponseMatrix();
virtual void InitializeResponseMatrixFine();
virtual void InitializeEfficiency();
virtual void InitializeEfficiencyFine();
virtual void FillResponseMatrixFineAndMerge();
virtual TH2* MakeResponseMatrixRebin(TH2 *hRMFine = 0, TH2 *hRM = 0, Bool_t useFunctionWeight = kFALSE);
virtual TH2* CreateTruncated2DHisto(TH2 *h2=0, Double_t xmin=-1, Double_t xmax=-1, Double_t ymin=-1, Double_t ymax=-1);
virtual TH2* TruncateAxisRangeResponseMatrix(TH2 *hRMOrig=0, Double_t xmin=-1, Double_t xmax=-1, Double_t ymin=-1, Double_t ymax=-1);
virtual TH2* MultiplityResponseMatrices(TH2 *h2RMDeltaPt, TH2 *h2RMDetector);
virtual TH2* GetTransposeResponsMatrix(TH2 *h2RM);
virtual TH2* NormalizeResponsMatrixYaxisWithPrior(TH2 *h2RM, TH1 *hPrior);
protected:
Bool_t fDebug;
ResolutionType fResolutionType;
TF1 *fDeltaPt;
TH1D *fhDeltaPt;
TH1D *fh1MeasuredTruncated;
TH2D *fh2DetectorResponse;
TH2D *fh2DetectorResponseRebin;
TH1D *fhEfficiencyDet;
TH2D *fh2ResponseMatrixCombinedFineFull;
TH2D *fh2ResponseMatrixCombinedFull;
TH2D *fh2ResponseMatrixCombined;
TH1D *fhEfficiencyCombined;
Int_t fDimensions;
Int_t fDimRec;
Int_t fDimGen;
Double_t fPtMin;
Double_t fPtMax;
Int_t fNbins;
Double_t *fBinArrayPtRec;
THnSparse *fPtMeasured;
Double_t fEffFlat;
THnSparse *fEfficiency;
THnSparse *fEfficiencyFine;
THnSparse *fResponseMatrix;
THnSparse *fResponseMatrixFine;
Double_t fPtMinUnfolded;
Double_t fPtMaxUnfolded;
Double_t fPtMaxUnfoldedHigh;
Int_t fBinWidthFactorUnfolded;
Int_t fSkipBinsUnfolded;
Int_t fExtraBinsUnfolded;
Bool_t fbVariableBinning;
Double_t fPtMaxUnfVarBinning;
TF1 *f1MergeFunction;
Int_t fFineFrac;
Bool_t fbCalcErrors;
ClassDef(AliAnaChargedJetResponseMaker,0);
};
#endif
AliAnaChargedJetResponseMaker.h:1 AliAnaChargedJetResponseMaker.h:2 AliAnaChargedJetResponseMaker.h:3 AliAnaChargedJetResponseMaker.h:4 AliAnaChargedJetResponseMaker.h:5 AliAnaChargedJetResponseMaker.h:6 AliAnaChargedJetResponseMaker.h:7 AliAnaChargedJetResponseMaker.h:8 AliAnaChargedJetResponseMaker.h:9 AliAnaChargedJetResponseMaker.h:10 AliAnaChargedJetResponseMaker.h:11 AliAnaChargedJetResponseMaker.h:12 AliAnaChargedJetResponseMaker.h:13 AliAnaChargedJetResponseMaker.h:14 AliAnaChargedJetResponseMaker.h:15 AliAnaChargedJetResponseMaker.h:16 AliAnaChargedJetResponseMaker.h:17 AliAnaChargedJetResponseMaker.h:18 AliAnaChargedJetResponseMaker.h:19 AliAnaChargedJetResponseMaker.h:20 AliAnaChargedJetResponseMaker.h:21 AliAnaChargedJetResponseMaker.h:22 AliAnaChargedJetResponseMaker.h:23 AliAnaChargedJetResponseMaker.h:24 AliAnaChargedJetResponseMaker.h:25 AliAnaChargedJetResponseMaker.h:26 AliAnaChargedJetResponseMaker.h:27 AliAnaChargedJetResponseMaker.h:28 AliAnaChargedJetResponseMaker.h:29 AliAnaChargedJetResponseMaker.h:30 AliAnaChargedJetResponseMaker.h:31 AliAnaChargedJetResponseMaker.h:32 AliAnaChargedJetResponseMaker.h:33 AliAnaChargedJetResponseMaker.h:34 AliAnaChargedJetResponseMaker.h:35 AliAnaChargedJetResponseMaker.h:36 AliAnaChargedJetResponseMaker.h:37 AliAnaChargedJetResponseMaker.h:38 AliAnaChargedJetResponseMaker.h:39 AliAnaChargedJetResponseMaker.h:40 AliAnaChargedJetResponseMaker.h:41 AliAnaChargedJetResponseMaker.h:42 AliAnaChargedJetResponseMaker.h:43 AliAnaChargedJetResponseMaker.h:44 AliAnaChargedJetResponseMaker.h:45 AliAnaChargedJetResponseMaker.h:46 AliAnaChargedJetResponseMaker.h:47 AliAnaChargedJetResponseMaker.h:48 AliAnaChargedJetResponseMaker.h:49 AliAnaChargedJetResponseMaker.h:50 AliAnaChargedJetResponseMaker.h:51 AliAnaChargedJetResponseMaker.h:52 AliAnaChargedJetResponseMaker.h:53 AliAnaChargedJetResponseMaker.h:54 AliAnaChargedJetResponseMaker.h:55 AliAnaChargedJetResponseMaker.h:56 AliAnaChargedJetResponseMaker.h:57 AliAnaChargedJetResponseMaker.h:58 AliAnaChargedJetResponseMaker.h:59 AliAnaChargedJetResponseMaker.h:60 AliAnaChargedJetResponseMaker.h:61 AliAnaChargedJetResponseMaker.h:62 AliAnaChargedJetResponseMaker.h:63 AliAnaChargedJetResponseMaker.h:64 AliAnaChargedJetResponseMaker.h:65 AliAnaChargedJetResponseMaker.h:66 AliAnaChargedJetResponseMaker.h:67 AliAnaChargedJetResponseMaker.h:68 AliAnaChargedJetResponseMaker.h:69 AliAnaChargedJetResponseMaker.h:70 AliAnaChargedJetResponseMaker.h:71 AliAnaChargedJetResponseMaker.h:72 AliAnaChargedJetResponseMaker.h:73 AliAnaChargedJetResponseMaker.h:74 AliAnaChargedJetResponseMaker.h:75 AliAnaChargedJetResponseMaker.h:76 AliAnaChargedJetResponseMaker.h:77 AliAnaChargedJetResponseMaker.h:78 AliAnaChargedJetResponseMaker.h:79 AliAnaChargedJetResponseMaker.h:80 AliAnaChargedJetResponseMaker.h:81 AliAnaChargedJetResponseMaker.h:82 AliAnaChargedJetResponseMaker.h:83 AliAnaChargedJetResponseMaker.h:84 AliAnaChargedJetResponseMaker.h:85 AliAnaChargedJetResponseMaker.h:86 AliAnaChargedJetResponseMaker.h:87 AliAnaChargedJetResponseMaker.h:88 AliAnaChargedJetResponseMaker.h:89 AliAnaChargedJetResponseMaker.h:90 AliAnaChargedJetResponseMaker.h:91 AliAnaChargedJetResponseMaker.h:92 AliAnaChargedJetResponseMaker.h:93 AliAnaChargedJetResponseMaker.h:94 AliAnaChargedJetResponseMaker.h:95 AliAnaChargedJetResponseMaker.h:96 AliAnaChargedJetResponseMaker.h:97 AliAnaChargedJetResponseMaker.h:98 AliAnaChargedJetResponseMaker.h:99 AliAnaChargedJetResponseMaker.h:100 AliAnaChargedJetResponseMaker.h:101 AliAnaChargedJetResponseMaker.h:102 AliAnaChargedJetResponseMaker.h:103 AliAnaChargedJetResponseMaker.h:104 AliAnaChargedJetResponseMaker.h:105 AliAnaChargedJetResponseMaker.h:106 AliAnaChargedJetResponseMaker.h:107 AliAnaChargedJetResponseMaker.h:108 AliAnaChargedJetResponseMaker.h:109 AliAnaChargedJetResponseMaker.h:110 AliAnaChargedJetResponseMaker.h:111 AliAnaChargedJetResponseMaker.h:112 AliAnaChargedJetResponseMaker.h:113 AliAnaChargedJetResponseMaker.h:114 AliAnaChargedJetResponseMaker.h:115 AliAnaChargedJetResponseMaker.h:116 AliAnaChargedJetResponseMaker.h:117 AliAnaChargedJetResponseMaker.h:118 AliAnaChargedJetResponseMaker.h:119 AliAnaChargedJetResponseMaker.h:120 AliAnaChargedJetResponseMaker.h:121 AliAnaChargedJetResponseMaker.h:122 AliAnaChargedJetResponseMaker.h:123 AliAnaChargedJetResponseMaker.h:124 AliAnaChargedJetResponseMaker.h:125 AliAnaChargedJetResponseMaker.h:126 AliAnaChargedJetResponseMaker.h:127 AliAnaChargedJetResponseMaker.h:128 AliAnaChargedJetResponseMaker.h:129 AliAnaChargedJetResponseMaker.h:130 AliAnaChargedJetResponseMaker.h:131 AliAnaChargedJetResponseMaker.h:132 AliAnaChargedJetResponseMaker.h:133 AliAnaChargedJetResponseMaker.h:134 AliAnaChargedJetResponseMaker.h:135 AliAnaChargedJetResponseMaker.h:136 AliAnaChargedJetResponseMaker.h:137 AliAnaChargedJetResponseMaker.h:138 AliAnaChargedJetResponseMaker.h:139 AliAnaChargedJetResponseMaker.h:140 AliAnaChargedJetResponseMaker.h:141 AliAnaChargedJetResponseMaker.h:142 AliAnaChargedJetResponseMaker.h:143 AliAnaChargedJetResponseMaker.h:144 AliAnaChargedJetResponseMaker.h:145 AliAnaChargedJetResponseMaker.h:146 AliAnaChargedJetResponseMaker.h:147 AliAnaChargedJetResponseMaker.h:148 AliAnaChargedJetResponseMaker.h:149 AliAnaChargedJetResponseMaker.h:150 AliAnaChargedJetResponseMaker.h:151 AliAnaChargedJetResponseMaker.h:152 AliAnaChargedJetResponseMaker.h:153 AliAnaChargedJetResponseMaker.h:154 AliAnaChargedJetResponseMaker.h:155 AliAnaChargedJetResponseMaker.h:156