13 #ifndef ROOT_TUnfoldDensity
14 #define ROOT_TUnfoldDensity
48 class TUnfoldDensity :
public TUnfoldSys {
51 const TUnfoldBinning * fConstOutputBins;
53 const TUnfoldBinning * fConstInputBins;
55 TUnfoldBinning *fOwnedOutputBins;
57 TUnfoldBinning *fOwnedInputBins;
59 TUnfoldBinning *fRegularisationConditions;
67 kDensityModeBinWidth=1,
71 kDensityModeBinWidthAndUser=3
75 virtual TString GetOutputBinName(Int_t iBinX)
const;
77 Double_t GetDensityFactor(EDensityMode densityMode,Int_t iBin)
const;
78 void RegularizeDistributionRecursive
79 (
const TUnfoldBinning *binning,ERegMode regmode,
80 EDensityMode densityMode,
const char *distribution,
81 const char *axisSteering);
82 void RegularizeOneDistribution
83 (
const TUnfoldBinning *binning,ERegMode regmode,
84 EDensityMode densityMode,
const char *axisSteering);
89 TUnfoldDensity(
const TH2 *hist_A, EHistMap histmap,
90 ERegMode regmode = kRegModeCurvature,
91 EConstraint constraint=kEConstraintArea,
92 EDensityMode densityMode=kDensityModeBinWidthAndUser,
93 const TUnfoldBinning *outputBins=0,
94 const TUnfoldBinning *inputBins=0,
95 const char *regularisationDistribution=0,
96 const char *regularisationAxisSteering=
"*[UOB]");
98 virtual ~ TUnfoldDensity(
void);
100 void RegularizeDistribution(ERegMode regmode,EDensityMode densityMode,
101 const char *distribution,
102 const char *axisSteering);
111 kEScanTauRhoAvgSys =2,
113 kEScanTauRhoMaxSys =3,
115 kEScanTauRhoSquareAvg =4,
117 kEScanTauRhoSquareAvgSys =5
120 virtual Int_t ScanTau(Int_t nPoint,Double_t tauMin,Double_t tauMax,
121 TSpline **scanResult,Int_t mode=kEScanTauRhoAvg,
122 const char *distribution=0,
const char *projectionMode=0,TGraph **lCurvePlot=0,TSpline **logTauXPlot=0,TSpline **logTauYPlot=0);
123 virtual Double_t GetScanVariable(Int_t mode,
const char *distribution,
const char *projectionMode);
125 TH1 *GetOutput(
const char *histogramName,
126 const char *histogramTitle=0,
const char *distributionName=0,
127 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE)
const;
128 TH1 *GetBias(
const char *histogramName,
129 const char *histogramTitle=0,
const char *distributionName=0,
130 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE)
const;
131 TH1 *GetFoldedOutput(
const char *histogramName,
132 const char *histogramTitle=0,
133 const char *distributionName=0,
134 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE,
135 Bool_t addBgr=kFALSE)
const;
136 TH1 *GetBackground(
const char *histogramName,
const char *bgrSource=0,
137 const char *histogramTitle=0,
138 const char *distributionName=0,
139 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE,Int_t includeError=3)
const;
140 TH1 *GetInput(
const char *histogramName,
const char *histogramTitle=0,
141 const char *distributionName=0,
142 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE)
const;
143 TH1 *GetDeltaSysSource(
const char *source,
144 const char *histogramName,
145 const char *histogramTitle=0,
146 const char *distributionName=0,
147 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE);
148 TH1 *GetDeltaSysBackgroundScale(
const char *bgrSource,
149 const char *histogramName,
150 const char *histogramTitle=0,
151 const char *distributionName=0,
152 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE);
153 TH1 *GetDeltaSysTau(
const char *histogramName,
154 const char *histogramTitle=0,
155 const char *distributionName=0,
156 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE);
157 TH2 *GetEmatrixSysUncorr(
const char *histogramName,
158 const char *histogramTitle=0,
159 const char *distributionName=0,
160 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE);
161 TH2 *GetEmatrixSysBackgroundUncorr(
const char *bgrSource,
162 const char *histogramName,
163 const char *histogramTitle=0,
164 const char *distributionName=0,
165 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE);
166 TH2 *GetEmatrixInput(
const char *histogramName,
167 const char *histogramTitle=0,
168 const char *distributionName=0,
169 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE);
170 TH2 *GetEmatrixTotal(
const char *histogramName,
171 const char *histogramTitle=0,
172 const char *distributionName=0,
173 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE);
174 TH1 *GetRhoIstatbgr(
const char *histogramName,
const char *histogramTitle=0,
175 const char *distributionName=0,
176 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE,
178 TH1 *GetRhoItotal(
const char *histogramName,
const char *histogramTitle=0,
179 const char *distributionName=0,
180 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE,
182 TH2 *GetRhoIJtotal(
const char *histogramName,
183 const char *histogramTitle=0,
184 const char *distributionName=0,
185 const char *projectionMode=0,Bool_t useAxisBinning=kTRUE);
186 TH2 *GetL(
const char *histogramName,
187 const char *histogramTitle=0,
188 Bool_t useAxisBinning=kTRUE);
189 TH1 *GetLxMinusBias(
const char *histogramName,
const char *histogramTitle=0);
191 TH2 *GetProbabilityMatrix(
const char *histogramName,
192 const char *histogramTitle=0,Bool_t useAxisBinning=kTRUE)
const;
194 const TUnfoldBinning *GetInputBinning(
const char *distributionName=0)
const;
195 const TUnfoldBinning *GetOutputBinning(
const char *distributionName=0)
const;
197 TUnfoldBinning *GetLBinning(
void)
const {
return fRegularisationConditions; }
198 ClassDef(TUnfoldDensity, TUnfold_CLASS_VERSION)