BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnMeasureModel.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
BmnMeasureModel class header-only implementation
9
Parametrized model of linear track
10
*/
11
12
#ifndef BMNMEASUREMODEL_H
13
#define BMNMEASUREMODEL_H
14
15
#include "
BmnAlignDefines.h
"
16
#include "FairHit.h"
17
18
/*
19
* This class is intended to be the only place where the sign selection and rotation
20
* sequence scheme of alignment is defined. Namely, the scheme is as follows:
21
*
22
* | x_m | | x | | s_x |
23
* | y_m | = | y | + | s_y |
24
* | z_0 | | z | | s_z |
25
*
26
* where:
27
* x, y, z : true values of particle hit coordinates in lab frame of reference
28
* x_m, y_m : measured values of x and y
29
* z_0 : nominal z coordinate of detector plane
30
* s_x, s_y, s_z : shift placement errors of detector plane
31
* R_zyx : combined rotation matrix of detector plane in sequence
32
* over z, over y, over x, composed of rotation placement errors
33
*/
34
35
class
BmnMeasureModel
36
{
37
public
:
38
BmnMeasureModel
() =
default
;
39
inline
Double_t
X
(
Double_t
z0,
const
SVectGL
& gl,
const
SVectLC
& lc)
const
;
40
inline
Double_t
Y
(
Double_t
z0,
const
SVectGL
& gl,
const
SVectLC
& lc)
const
;
41
inline
SVectLC
GradXlocal
(
Double_t
z0,
const
SVectGL
& gl,
const
SVectLC
& lc)
const
;
42
inline
SVectLC
GradYlocal
(
Double_t
z0,
const
SVectGL
& gl,
const
SVectLC
& lc)
const
;
43
inline
SVectGL
GradXglobal
(
Double_t
z0,
const
SVectGL
& gl,
const
SVectLC
& lc)
const
;
44
inline
SVectGL
GradYglobal
(
Double_t
z0,
const
SVectGL
& gl,
const
SVectLC
& lc)
const
;
45
inline
void
AlignHit
(
FairHit
& hit,
SVectGL
& alignValues)
const
;
46
};
47
48
inline
Double_t
BmnMeasureModel::X
(
Double_t
z0,
const
SVectGL
& gl,
const
SVectLC
& lc)
const
49
{
50
return
lc(
iX0
) + lc(
iX1
) * (z0 - gl(
iZ
)) + gl(
iX
);
51
}
52
53
inline
Double_t
BmnMeasureModel::Y
(
Double_t
z0,
const
SVectGL
& gl,
const
SVectLC
& lc)
const
54
{
55
return
lc(
iY0
) + lc(
iY1
) * (z0 - gl(
iZ
)) + gl(
iY
);
56
}
57
58
inline
SVectLC
BmnMeasureModel::GradXlocal
(
Double_t
z0,
const
SVectGL
& gl,
const
SVectLC
& lc)
const
59
{
60
return
SVectLC
{1.0, z0 - gl(
iZ
), 0.0, 0.0};
61
}
62
63
inline
SVectLC
BmnMeasureModel::GradYlocal
(
Double_t
z0,
const
SVectGL
& gl,
const
SVectLC
& lc)
const
64
{
65
return
SVectLC
{0.0, 0.0, 1.0, z0 - gl(
iZ
)};
66
}
67
68
inline
SVectGL
BmnMeasureModel::GradXglobal
(
Double_t
z0,
const
SVectGL
& gl,
const
SVectLC
& lc)
const
69
{
70
return
SVectGL
{1.0, 0.0, -lc(
iX1
)};
71
}
72
73
inline
SVectGL
BmnMeasureModel::GradYglobal
(
Double_t
z0,
const
SVectGL
& gl,
const
SVectLC
& lc)
const
74
{
75
return
SVectGL
{0.0, 1.0, -lc(
iY1
)};
76
}
77
78
inline
void
BmnMeasureModel::AlignHit
(
FairHit
& hit,
SVectGL
& alignValues)
const
79
{
80
hit.SetX(hit.GetX() - alignValues(
iX
));
81
hit.SetY(hit.GetY() - alignValues(
iY
));
82
hit.SetZ(hit.GetZ() - alignValues(
iZ
));
83
}
84
85
#endif
// BMNMEASUREMODEL_H
Double_t
double Double_t
BmnAlignDefines.h
iY1
@ iY1
Definition
BmnAlignDefines.h:95
iY0
@ iY0
Definition
BmnAlignDefines.h:94
iX1
@ iX1
Definition
BmnAlignDefines.h:93
iX0
@ iX0
Definition
BmnAlignDefines.h:92
SVectGL
ROOT::Math::SVector< Double_t, BMN_GLOBAL_PARAMS_PD > SVectGL
Definition
BmnAlignDefines.h:73
SVectLC
ROOT::Math::SVector< Double_t, BMN_LOCAL_PARAMS_PT > SVectLC
Definition
BmnAlignDefines.h:72
iZ
@ iZ
Definition
BmnAlignDefines.h:87
iX
@ iX
Definition
BmnAlignDefines.h:85
iY
@ iY
Definition
BmnAlignDefines.h:86
BmnMeasureModel::GradYglobal
SVectGL GradYglobal(Double_t z0, const SVectGL &gl, const SVectLC &lc) const
Definition
BmnMeasureModel.h:73
BmnMeasureModel::BmnMeasureModel
BmnMeasureModel()=default
BmnMeasureModel::Y
Double_t Y(Double_t z0, const SVectGL &gl, const SVectLC &lc) const
Definition
BmnMeasureModel.h:53
BmnMeasureModel::X
Double_t X(Double_t z0, const SVectGL &gl, const SVectLC &lc) const
Definition
BmnMeasureModel.h:48
BmnMeasureModel::GradXlocal
SVectLC GradXlocal(Double_t z0, const SVectGL &gl, const SVectLC &lc) const
Definition
BmnMeasureModel.h:58
BmnMeasureModel::AlignHit
void AlignHit(FairHit &hit, SVectGL &alignValues) const
Definition
BmnMeasureModel.h:78
BmnMeasureModel::GradXglobal
SVectGL GradXglobal(Double_t z0, const SVectGL &gl, const SVectLC &lc) const
Definition
BmnMeasureModel.h:68
BmnMeasureModel::GradYlocal
SVectLC GradYlocal(Double_t z0, const SVectGL &gl, const SVectLC &lc) const
Definition
BmnMeasureModel.h:63
FairHit
align_new
src
BmnMeasureModel.h
Generated on
for BmnRoot by
1.17.0