12#ifndef BMNRAMITERATOR_H
13#define BMNRAMITERATOR_H
22template<
typename HitType = BmnHitRecord>
28 const Int_t* pFirstHits,
31 Float_t progressPart = 1.0f);
39 virtual void NextHit()
override;
40 virtual Double_t
HitX()
const override;
41 virtual Double_t
HitY()
const override;
42 virtual Double_t
HitZ()
const override;
43 virtual Double_t
HitWx()
const override;
44 virtual Double_t
HitWy()
const override;
50 const Int_t *fpFirstHits, fTracksCount;
51 Int_t fTrackIdx, fHitIdx, fHitsInTrack, fNextFirstHit;
53 const Float_t fProgressPart;
55 void CountHitsInTrack() noexcept;
62 const Int_t* pFirstHits,
68 , fpFirstHits{pFirstHits}
69 , fTracksCount{nTracks}
70 , fProgressPart{progressPart}
76template<
typename HitType>
79 if (firstTrack >= fTracksCount)
80 throw std::invalid_argument(
"BmnRamIterator::Slice: invalid track index");
81 if (tracksCount > fTracksCount - firstTrack)
82 throw std::invalid_argument(
"BmnRamIterator::Slice: invalid tracks count");
84 static_cast<Float_t
>(tracksCount) /
static_cast<Float_t
>(fTracksCount) * fProgressPart);
void SetTickProgress(Float_t progress)
BmnSimpleProgressBar * GetProgressBar() const noexcept
virtual Double_t HitWy() const override
virtual Int_t HitDetectorID() const override
virtual Double_t HitWx() const override
virtual Int_t HitsInTrack() const override
virtual void NextHit() override
virtual Double_t HitY() const override
virtual Double_t HitZ() const override
BmnRamIterator(const BmnRamIterator &other)=default
virtual Double_t HitX() const override
BmnRamIterator(const HitType *pHits, const Int_t *pFirstHits, Int_t nTracks, BmnSimpleProgressBar *pb=nullptr, Float_t progressPart=1.0f)
BmnRamIterator Slice(Int_t firstTrack, Int_t tracksCount) const
virtual void ResetAll() override
virtual ~BmnRamIterator()=default
virtual void ResetHits() override
virtual void NextTrack() override