121 fKernel_integ =
new TF1(
"GaussIntegral",
GaussIntegral,fLowerEdge,fUpperEdge,4);
130 Log() << kFATAL <<
"<SetKernelType> KDE sigma has invalid value ( <=0 ) !" <<
Endl;
134 if (fIter == kAdaptiveKDE) {
140 fHiddenIteration=
true;
145 for (
Int_t i=1;i<fHist->GetNbinsX();i++) {
147 for (
Int_t j=1;
j<fFirstIterHist->GetNbinsX();
j++) {
149 fFirstIterHist->AddBinContent(
j,fHist->GetBinContent(i)*
150 this->GetBinKernelIntegral(fFirstIterHist->GetBinLowEdge(
j),
151 fFirstIterHist->GetBinLowEdge(
j+1),
152 fHist->GetBinCenter(i),
156 if (fKDEborder == 3) {
161 for (
Int_t j=1;
j<fFirstIterHist->GetNbinsX();
j++) {
163 fFirstIterHist->AddBinContent(
j,fHist->GetBinContent(i)*
164 this->GetBinKernelIntegral(fFirstIterHist->GetBinLowEdge(
j),
165 fFirstIterHist->GetBinLowEdge(
j+1),
171 if (i > 4*fHist->GetNbinsX()/5) {
172 for (
Int_t j=1;
j<fFirstIterHist->GetNbinsX();
j++) {
174 fFirstIterHist->AddBinContent(
j,fHist->GetBinContent(i)*
175 this->GetBinKernelIntegral(fFirstIterHist->GetBinLowEdge(
j),
176 fFirstIterHist->GetBinLowEdge(
j+1),
185 fFirstIterHist->SetEntries(fHist->GetEntries());
189 for (
Int_t j=1;
j<fFirstIterHist->GetNbinsX();
j++)
190 integ+=fFirstIterHist->GetBinContent(
j)*fFirstIterHist->GetBinWidth(
j);
191 fFirstIterHist->Scale(1./
integ);
193 fHiddenIteration=
false;
199 for (
Int_t j=1;
j<fFirstIterHist->GetNbinsX();
j++) {
201 if (fSigma*
TMath::Sqrt(1.0/fFirstIterHist->GetBinContent(
j)) <= 0 ) {
202 Log() << kFATAL <<
"<SetKernelType> KDE sigma has invalid value ( <=0 ) !" <<
Endl;
205 fSigmaHist->SetBinContent(
j,fFineFactor*fSigma/
TMath::Sqrt(fFirstIterHist->GetBinContent(
j)));
209 if (fKernel_integ ==0 ) {
210 Log() << kFATAL <<
"KDE kernel not correctly initialized!" <<
Endl;
KDEKernel(EKernelIter kiter=kNonadaptiveKDE, const TH1 *hist=nullptr, Float_t lower_edge=0., Float_t upper_edge=1., EKernelBorder kborder=kNoTreatment, Float_t FineFactor=1.)
constructor sanity check