BmnRoot 26.10.0-210-gc52d34b0
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
L1HitPoint.h
Go to the documentation of this file.
1#ifndef _L1HitPoint_h_
2#define _L1HitPoint_h_
3
4#include "CbmL1Def.h"
5
6/// contain strips positions and coordinates of hit
7#if 1
9{
11 : x(0.)
12 , y(0.)
13 , z(0.)
14 , u(0.)
15 , v(0.)
16 , du(0.)
17 , dv(0.)
18 , n(0) {};
20 fscal y_,
21 fscal z_,
22 fscal v_,
23 fscal u_,
24 fscal dv_ = 0.0,
25 fscal du_ = 0.0,
26 unsigned short int n_ = 0)
27 : x(x_)
28 , y(y_)
29 , z(z_)
30 , u(u_)
31 , v(v_)
32 , du(du_)
33 , dv(dv_)
34 , n(n_) {};
35
36 fscal Xs() const { return X() / Z(); }
37 fscal Ys() const { return Y() / Z(); } // value to sort hits by
38
39 fscal X() const { return x; }
40 fscal Y() const { return y; }
41 fscal Z() const { return z; }
42 fscal U() const { return u; }
43 fscal V() const { return v; }
44 fscal DU() const { return du; }
45 fscal DV() const { return dv; }
46
47 unsigned short int N() const { return n; }
48
49 private:
50 float x, y;
51 float z; // TODO: may be we should use iz
52 float u, v; // x\u, v - front and back strips; x, y, z - coordinates of hits
53 float du, dv; // du, dv - front and back coordinate errors
54
55 unsigned short int n; // number of event
56};
57#else
58
59static const float R = 60;
60static const float shortPackingConstant = 2 * R / 65535.f;
61static const float MZ = 110;
62static const float shortPackingConstantZ = MZ / 65535.f;
63
64/// contain strips positions and coordinates of hit
65struct L1HitPoint
66{
67 L1HitPoint() {};
68 L1HitPoint(fscal x_, fscal y_, fscal z_, fscal v_, fscal u_, unsigned short int n_ = 0)
69 : x(f2s(x_))
70 , y(f2s(y_))
71 , z(f2sZ(z_))
72 , u(f2s(u_))
73 , v(f2s(v_))
74 , n(n_) {};
75
76 fscal Xs() const { return X() / Z(); }
77 fscal Ys() const { return Y() / Z(); } // value to sort hits by
78
79 fscal X() const { return s2f(x); }
80 fscal Y() const { return s2f(y); }
81 fscal Z() const { return s2fZ(z); }
82 fscal U() const { return s2f(u); }
83 fscal V() const { return s2f(v); }
84
85 unsigned short int N() const { return n; }
86
87 private:
88 // unsigned short int
89 unsigned short int f2s(float f) const { return (f + R) / shortPackingConstant; }
90 float s2f(unsigned short int f) const { return (float(f) + 0.5) * shortPackingConstant - R; }
91
92 unsigned short int f2sZ(float f) const { return (f) / shortPackingConstantZ; }
93 float s2fZ(unsigned short int f) const { return (float(f) + 0.5) * shortPackingConstantZ; }
94
95 unsigned short int x, y;
96 unsigned short int z; // TODO: may be we should use iz
97 unsigned short int u, v; // x\u, v - front and back strips; x, y, z - coordinates of hits
98
99 unsigned short int n; // number of event
100};
101
102#endif
103
104#endif
float fscal
Definition P4_F32vec4.h:232
constexpr Double_t R()
contain strips positions and coordinates of hit
Definition L1HitPoint.h:9
fscal Ys() const
Definition L1HitPoint.h:37
fscal V() const
Definition L1HitPoint.h:43
fscal DU() const
Definition L1HitPoint.h:44
fscal U() const
Definition L1HitPoint.h:42
fscal Xs() const
Definition L1HitPoint.h:36
unsigned short int n
Definition L1HitPoint.h:55
fscal Z() const
Definition L1HitPoint.h:41
unsigned short int N() const
Definition L1HitPoint.h:47
fscal Y() const
Definition L1HitPoint.h:40
fscal X() const
Definition L1HitPoint.h:39
L1HitPoint(fscal x_, fscal y_, fscal z_, fscal v_, fscal u_, fscal dv_=0.0, fscal du_=0.0, unsigned short int n_=0)
Definition L1HitPoint.h:19
fscal DV() const
Definition L1HitPoint.h:45