BmnRoot
26.10.0-210-gc52d34b0
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnDataFilters.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.int
7
8
Data selection policy for the ROOT file iterator
9
*/
10
11
#ifndef BMNDATAFILTERS_H
12
#define BMNDATAFILTERS_H
13
14
#include "
BmnDetectorModel.h
"
15
#include "
CbmStsHit.h
"
16
#include "
CbmStsTrack.h
"
17
18
#include <functional>
19
20
// USER DEFINED:
21
// Definition of trakcs and hits selection criteria
22
// ================================================
23
24
inline
constexpr
Int_t
BMN_MIN_HITS_PER_TRACK
{5};
// minimum allowed number of hits in a track
25
inline
constexpr
Double_t
BMN_MAX_CHI2_PER_NDF
{5.0};
// maximum allowed chi2 per NDF in a track
26
27
inline
constexpr
const
char
*
BMN_TRACKS_CUT_STR
{
"at least 5 hits, max Chi2/NDF = 5.0"
};
28
inline
constexpr
const
char
*
BMN_HITS_CUT_STR
{
"no hit cuts applied"
};
29
inline
constexpr
const
char
*
BMN_VERTEX_CUT_STR
{
"one SiBT hit per station, then the residual test in Align()"
};
30
31
// CAUTION: BmnAlignTestTask rewrites hit positions, and hit errors when it is
32
// given its own StdDev. A cut on either would let a test task keep other tracks
33
// than its source data, and so give its vertex hits other weights.
34
inline
Bool_t
BmnAcceptHit
(
const
CbmStsHit
& hit,
const
BmnDetectorModel
& model)
35
{
36
return
!model.
IgnoreHit
(hit.GetDetectorID());
37
}
38
39
inline
Bool_t
BmnAcceptTrack
(
const
CbmStsTrack
& track,
Int_t
usableHits,
Bool_t
wholeTrackOnly =
kTRUE
)
40
{
41
if
(wholeTrackOnly && usableHits != track.
GetNStsHits
())
42
return
kFALSE
;
43
if
(usableHits <
BMN_MIN_HITS_PER_TRACK
)
44
return
kFALSE
;
45
if
(track.
GetNDF
() <= 0)
46
return
kFALSE
;
47
if
(track.
GetChi2
() / track.
GetNDF
() >
BMN_MAX_CHI2_PER_NDF
)
48
return
kFALSE
;
49
50
return
kTRUE
;
51
}
52
53
// ROOT iterator filter functions
54
// ==============================
55
56
typedef
std::function<
Bool_t
(
const
CbmStsHit
&)>
HitFilter_t
;
57
typedef
std::function<
Bool_t
(
const
CbmStsTrack
&,
Int_t
usableHits)>
TrackFilter_t
;
58
59
inline
HitFilter_t
BmnDefaultHitFilter
(
const
BmnDetectorModel
& model)
60
{
61
return
[&model](
const
CbmStsHit
& hit) {
return
BmnAcceptHit
(hit, model); };
62
}
63
64
inline
TrackFilter_t
BmnDefaultTrackFilter
(
Bool_t
wholeTrackOnly =
kTRUE
)
65
{
66
return
[wholeTrackOnly](
const
CbmStsTrack
& track,
Int_t
usableHits) {
67
return
BmnAcceptTrack
(track, usableHits, wholeTrackOnly);
68
};
69
}
70
71
#endif
// BMNDATAFILTERS_H
BmnDefaultTrackFilter
TrackFilter_t BmnDefaultTrackFilter(Bool_t wholeTrackOnly=kTRUE)
Definition
BmnDataFilters.h:64
BMN_MIN_HITS_PER_TRACK
constexpr Int_t BMN_MIN_HITS_PER_TRACK
Definition
BmnDataFilters.h:24
BMN_VERTEX_CUT_STR
constexpr const char * BMN_VERTEX_CUT_STR
Definition
BmnDataFilters.h:29
HitFilter_t
std::function< Bool_t(const CbmStsHit &)> HitFilter_t
Definition
BmnDataFilters.h:56
BmnAcceptHit
Bool_t BmnAcceptHit(const CbmStsHit &hit, const BmnDetectorModel &model)
Definition
BmnDataFilters.h:34
BmnDefaultHitFilter
HitFilter_t BmnDefaultHitFilter(const BmnDetectorModel &model)
Definition
BmnDataFilters.h:59
BmnAcceptTrack
Bool_t BmnAcceptTrack(const CbmStsTrack &track, Int_t usableHits, Bool_t wholeTrackOnly=kTRUE)
Definition
BmnDataFilters.h:39
BMN_HITS_CUT_STR
constexpr const char * BMN_HITS_CUT_STR
Definition
BmnDataFilters.h:28
BMN_TRACKS_CUT_STR
constexpr const char * BMN_TRACKS_CUT_STR
Definition
BmnDataFilters.h:27
TrackFilter_t
std::function< Bool_t(const CbmStsTrack &, Int_t usableHits)> TrackFilter_t
Definition
BmnDataFilters.h:57
BMN_MAX_CHI2_PER_NDF
constexpr Double_t BMN_MAX_CHI2_PER_NDF
Definition
BmnDataFilters.h:25
BmnDetectorModel.h
CbmStsHit.h
CbmStsTrack.h
Bool_t
bool Bool_t
Int_t
int Int_t
kFALSE
constexpr Bool_t kFALSE
Double_t
double Double_t
kTRUE
constexpr Bool_t kTRUE
BmnDetectorModel
Definition
BmnDetectorModel.h:28
BmnDetectorModel::IgnoreHit
virtual Bool_t IgnoreHit(Int_t) const
Definition
BmnDetectorModel.h:76
CbmStsHit
Definition
CbmStsHit.h:27
CbmStsTrack
Definition
CbmStsTrack.h:28
CbmStsTrack::GetNStsHits
Int_t GetNStsHits() const
Accessors.
Definition
CbmStsTrack.h:60
CbmStsTrack::GetChi2
Double_t GetChi2() const
Definition
CbmStsTrack.h:66
CbmStsTrack::GetNDF
Int_t GetNDF() const
Definition
CbmStsTrack.h:67
align_new
src
BmnDataFilters.h
Generated on
for BmnRoot by
1.17.0