20 constexpr
const int ROOT::Experimental::RAxisBase::kNOverflowBins[4];
25 int ROOT::Experimental::RAxisEquidistant::GetBinIndexForLowEdge(
double x)
const noexcept
29 double fracBinIdx = (x - GetMinimum()) * fInvBinWidth;
32 int binIdx = std::round(fracBinIdx + 0.5);
33 double binOffset = fracBinIdx - binIdx;
34 if (std::fabs(binOffset) > x * 1E-6)
39 if (IsUnderflowBin(binIdx))
43 if (IsOverflowBin(binIdx - 1))
50 ROOT::Experimental::EAxisCompatibility ROOT::Experimental::CanMap(RAxisEquidistant &target,
51 RAxisEquidistant &source) noexcept
54 return EAxisCompatibility::kIdentical;
56 int idxTargetLow = target.GetBinIndexForLowEdge(source.GetMinimum());
57 int idxTargetHigh = target.GetBinIndexForLowEdge(source.GetMaximum());
58 if (idxTargetLow < 0 || idxTargetHigh < 0)
59 return EAxisCompatibility::kIncompatible;
63 if (source.GetInverseBinWidth() == target.GetInverseBinWidth())
64 return EAxisCompatibility::kContains;
71 if (std::fabs(target.GetInverseBinWidth() * source.GetNBinsNoOver() -
72 source.GetInverseBinWidth() * (idxTargetHigh - idxTargetLow)) > 1E-6 * target.GetInverseBinWidth())
73 return EAxisCompatibility::kIncompatible;
76 return EAxisCompatibility::kSampling;