36 ClassImp(RooDataHistSliceIter);
45 RooDataHistSliceIter::RooDataHistSliceIter(RooDataHist& hist, RooAbsArg& sliceArg) : _hist(&hist), _sliceArg(&sliceArg)
48 RooAbsArg* sliceArgInt = hist.get()->find(sliceArg.GetName()) ;
49 dynamic_cast<RooAbsLValue&
>(*sliceArgInt).setBin(0) ;
51 if (hist._vars.getSize()>1) {
52 _baseIndex = hist.calcTreeIndex() ;
57 _nStep =
dynamic_cast<RooAbsLValue&
>(*sliceArgInt).numBins() ;
64 for (
const auto arg : hist._vars) {
65 if (arg==sliceArgInt) break ;
68 _stepSize = hist._idxMult[i] ;
78 RooDataHistSliceIter::RooDataHistSliceIter(
const RooDataHistSliceIter& other) :
81 _sliceArg(other._sliceArg),
82 _baseIndex(other._baseIndex),
83 _stepSize(other._stepSize),
85 _curStep(other._curStep)
94 RooDataHistSliceIter::~RooDataHistSliceIter()
103 const TCollection* RooDataHistSliceIter::GetCollection()
const
114 TObject* RooDataHistSliceIter::Next()
116 if (_curStep==_nStep) {
121 _hist->get(_baseIndex + _curStep*_stepSize) ;
134 void RooDataHistSliceIter::Reset()
144 TObject *RooDataHistSliceIter::operator*()
const
146 Int_t step = _curStep == 0 ? _curStep : _curStep - 1;
148 _hist->get(_baseIndex + step*_stepSize) ;
158 bool RooDataHistSliceIter::operator!=(
const TIterator &aIter)
const
160 if ((aIter.IsA() == RooDataHistSliceIter::Class())) {
161 const RooDataHistSliceIter &iter(dynamic_cast<const RooDataHistSliceIter &>(aIter));
162 return (_curStep != iter._curStep);