BmnRoot
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
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
48inline 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
53inline 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
58inline 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
63inline 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
68inline 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
73inline 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
78inline 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
@ iY1
@ iY0
@ iX1
@ iX0
ROOT::Math::SVector< Double_t, BMN_GLOBAL_PARAMS_PD > SVectGL
ROOT::Math::SVector< Double_t, BMN_LOCAL_PARAMS_PT > SVectLC
@ iZ
@ iX
@ iY
const Float_t z0
Definition BmnMwpcHit.cxx:6
SVectGL GradYglobal(Double_t z0, const SVectGL &gl, const SVectLC &lc) const
BmnMeasureModel()=default
Double_t Y(Double_t z0, const SVectGL &gl, const SVectLC &lc) const
Double_t X(Double_t z0, const SVectGL &gl, const SVectLC &lc) const
SVectLC GradXlocal(Double_t z0, const SVectGL &gl, const SVectLC &lc) const
void AlignHit(FairHit &hit, SVectGL &alignValues) const
SVectGL GradXglobal(Double_t z0, const SVectGL &gl, const SVectLC &lc) const
SVectLC GradYlocal(Double_t z0, const SVectGL &gl, const SVectLC &lc) const