120 fKernel_integ =
new TF1(
"GaussIntegral",
GaussIntegral,fLowerEdge,fUpperEdge,4);
129 Log() << kFATAL <<
"<SetKernelType> KDE sigma has invalid value ( <=0 ) !" <<
Endl;
133 if (fIter == kAdaptiveKDE) {
139 fHiddenIteration=
true;
144 for (
Int_t i=1;i<fHist->GetNbinsX();i++) {
146 for (
Int_t j=1;
j<fFirstIterHist->GetNbinsX();
j++) {
148 fFirstIterHist->AddBinContent(
j,fHist->GetBinContent(i)*
149 this->GetBinKernelIntegral(fFirstIterHist->GetBinLowEdge(
j),
150 fFirstIterHist->GetBinLowEdge(
j+1),
151 fHist->GetBinCenter(i),
155 if (fKDEborder == 3) {
160 for (
Int_t j=1;
j<fFirstIterHist->GetNbinsX();
j++) {
162 fFirstIterHist->AddBinContent(
j,fHist->GetBinContent(i)*
163 this->GetBinKernelIntegral(fFirstIterHist->GetBinLowEdge(
j),
164 fFirstIterHist->GetBinLowEdge(
j+1),
170 if (i > 4*fHist->GetNbinsX()/5) {
171 for (
Int_t j=1;
j<fFirstIterHist->GetNbinsX();
j++) {
173 fFirstIterHist->AddBinContent(
j,fHist->GetBinContent(i)*
174 this->GetBinKernelIntegral(fFirstIterHist->GetBinLowEdge(
j),
175 fFirstIterHist->GetBinLowEdge(
j+1),
184 fFirstIterHist->SetEntries(fHist->GetEntries());
188 for (
Int_t j=1;
j<fFirstIterHist->GetNbinsX();
j++)
189 integ+=fFirstIterHist->GetBinContent(
j)*fFirstIterHist->GetBinWidth(
j);
190 fFirstIterHist->Scale(1./
integ);
192 fHiddenIteration=
false;
198 for (
Int_t j=1;
j<fFirstIterHist->GetNbinsX();
j++) {
200 if (fSigma*
TMath::Sqrt(1.0/fFirstIterHist->GetBinContent(
j)) <= 0 ) {
201 Log() << kFATAL <<
"<SetKernelType> KDE sigma has invalid value ( <=0 ) !" <<
Endl;
204 fSigmaHist->SetBinContent(
j,fFineFactor*fSigma/
TMath::Sqrt(fFirstIterHist->GetBinContent(
j)));
208 if (fKernel_integ ==0 ) {
209 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