BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnRamIterator.h
Go to the documentation of this file.
1
/*
2
BM@N alignment routine
3
BM@N experiment at NICA complex, JINR, 2025
4
5
Department: Math & Soft Group of HEP lab
6
Author: Igor Polev, polev@jinr.ru
7
8
BmnRamIterator class declaration
9
Iterator for tracks and hits stored in RAM
10
*/
11
12
#ifndef BMNRAMITERATOR_H
13
#define BMNRAMITERATOR_H
14
15
#include "
BmnDataIterator.h
"
16
#include "
BmnHitRecord.h
"
17
#include "
BmnSimpleProgressBar.h
"
18
19
#include <stdexcept>
20
21
// different types of hits to be used in test tasks and real tasks
22
template
<
typename
HitType = BmnHitRecord>
23
class
BmnRamIterator
:
public
BmnDataIterator
24
{
25
public
:
26
BmnRamIterator
() =
delete
;
27
inline
BmnRamIterator
(
const
HitType* pHits,
28
const
Int_t
* pFirstHits,
29
Int_t
nTracks,
30
BmnSimpleProgressBar
* pb =
nullptr
,
31
Float_t
progressPart = 1.0f);
32
virtual
~BmnRamIterator
() =
default
;
33
BmnRamIterator
(
const
BmnRamIterator
& other) =
default
;
34
BmnRamIterator
Slice
(
Int_t
firstTrack,
Int_t
tracksCount)
const
;
35
36
virtual
void
ResetHits
()
override
;
37
virtual
void
ResetAll
()
override
;
38
virtual
void
NextTrack
()
override
;
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
;
45
virtual
Int_t
HitDetectorID
()
const override
;
46
virtual
Int_t
HitsInTrack
()
const override
;
47
48
private
:
49
const
HitType*
fpHits
;
50
const
Int_t
*
fpFirstHits
,
fTracksCount
;
51
Int_t
fTrackIdx
,
fHitIdx
,
fHitsInTrack
,
fNextFirstHit
;
52
53
const
Float_t
fProgressPart
;
54
55
void
CountHitsInTrack
() noexcept;
56
};
57
58
// inline implementation
59
60
template<typename HitType>
61
inline
BmnRamIterator
<HitType>::
BmnRamIterator
(const HitType* pHits,
62
const
Int_t
* pFirstHits,
63
Int_t
nTracks,
64
BmnSimpleProgressBar
* pb,
65
Float_t
progressPart)
66
:
BmnDataIterator
(pb)
67
,
fpHits
{pHits}
68
,
fpFirstHits
{pFirstHits}
69
,
fTracksCount
{nTracks}
70
,
fProgressPart
{progressPart}
71
{
72
fInitialized
=
kTRUE
;
73
SetTickProgress
(
fProgressPart
/
static_cast<
Float_t
>
(
fTracksCount
));
74
};
75
76
template
<
typename
HitType>
77
inline
BmnRamIterator<HitType>
BmnRamIterator<HitType>::Slice
(
Int_t
firstTrack,
Int_t
tracksCount)
const
78
{
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"
);
83
return
BmnRamIterator
(
fpHits
,
fpFirstHits
+ firstTrack, tracksCount,
GetProgressBar
(),
84
static_cast<
Float_t
>
(tracksCount) /
static_cast<
Float_t
>
(
fTracksCount
) *
fProgressPart
);
85
}
86
87
#endif
Int_t
int Int_t
Float_t
float Float_t
Double_t
double Double_t
kTRUE
constexpr Bool_t kTRUE
BmnDataIterator.h
BmnHitRecord.h
BmnSimpleProgressBar.h
BmnDataIterator::BmnDataIterator
BmnDataIterator(BmnSimpleProgressBar *pb=nullptr)
Definition
BmnDataIterator.h:21
BmnDataIterator::fInitialized
Bool_t fInitialized
Definition
BmnDataIterator.h:43
BmnDataIterator::SetTickProgress
void SetTickProgress(Float_t progress)
Definition
BmnDataIterator.h:53
BmnDataIterator::GetProgressBar
BmnSimpleProgressBar * GetProgressBar() const noexcept
Definition
BmnDataIterator.h:51
BmnRamIterator::HitWy
virtual Double_t HitWy() const override
Definition
BmnRamIterator.cxx:90
BmnRamIterator::HitDetectorID
virtual Int_t HitDetectorID() const override
Definition
BmnRamIterator.cxx:98
BmnRamIterator::fTracksCount
const Int_t fTracksCount
Definition
BmnRamIterator.h:50
BmnRamIterator::fHitsInTrack
Int_t fHitsInTrack
Definition
BmnRamIterator.h:51
BmnRamIterator::HitWx
virtual Double_t HitWx() const override
Definition
BmnRamIterator.cxx:82
BmnRamIterator::fNextFirstHit
Int_t fNextFirstHit
Definition
BmnRamIterator.h:51
BmnRamIterator::BmnRamIterator
BmnRamIterator()=delete
BmnRamIterator::HitsInTrack
virtual Int_t HitsInTrack() const override
Definition
BmnRamIterator.cxx:107
BmnRamIterator::NextHit
virtual void NextHit() override
Definition
BmnRamIterator.cxx:39
BmnRamIterator::fHitIdx
Int_t fHitIdx
Definition
BmnRamIterator.h:51
BmnRamIterator::HitY
virtual Double_t HitY() const override
Definition
BmnRamIterator.cxx:66
BmnRamIterator::HitZ
virtual Double_t HitZ() const override
Definition
BmnRamIterator.cxx:74
BmnRamIterator::BmnRamIterator
BmnRamIterator(const BmnRamIterator &other)=default
BmnRamIterator::fProgressPart
const Float_t fProgressPart
Definition
BmnRamIterator.h:53
BmnRamIterator::HitX
virtual Double_t HitX() const override
Definition
BmnRamIterator.cxx:58
BmnRamIterator::Slice
BmnRamIterator Slice(Int_t firstTrack, Int_t tracksCount) const
Definition
BmnRamIterator.h:77
BmnRamIterator::fpFirstHits
const Int_t * fpFirstHits
Definition
BmnRamIterator.h:50
BmnRamIterator::fTrackIdx
Int_t fTrackIdx
Definition
BmnRamIterator.h:51
BmnRamIterator::ResetAll
virtual void ResetAll() override
Definition
BmnRamIterator.cxx:21
BmnRamIterator::CountHitsInTrack
void CountHitsInTrack() noexcept
Definition
BmnRamIterator.cxx:45
BmnRamIterator::~BmnRamIterator
virtual ~BmnRamIterator()=default
BmnRamIterator::ResetHits
virtual void ResetHits() override
Definition
BmnRamIterator.cxx:14
BmnRamIterator::fpHits
const HitType * fpHits
Definition
BmnRamIterator.h:49
BmnRamIterator::NextTrack
virtual void NextTrack() override
Definition
BmnRamIterator.cxx:30
BmnSimpleProgressBar
Definition
BmnSimpleProgressBar.h:20
align_new
src
BmnRamIterator.h
Generated on
for BmnRoot by
1.17.0