BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
FTWire.h
Go to the documentation of this file.
1#pragma once
2
3#define FTWireHit 1 // ---- ---- ---- ---- ---- ---- ---- ---x
4#define FTWireHitInvalid 2 // ---- ---- ---- ---- ---- ---- ---- --x-
5#define FTWireHitAppended 4 // ---- ---- ---- ---- ---- ---- ---- -x--
6#define FTWireHitAppendedOrInvalid 6 // ---- ---- ---- ---- ---- ---- ---- -xx-
7#define FTWireNeighbor0 8 // ---- ---- ---- ---- ---- ---- ---- x---
8#define FTWireNeighbor1 16 // ---- ---- ---- ---- ---- ---- ---x ----
9#define FTWireNeighbor2 32 // ---- ---- ---- ---- ---- ---- --x- ----
10#define FTWireNeighbor3 64 // ---- ---- ---- ---- ---- ---- -x-- ----
11#define FTWireNeighbor4 128 // ---- ---- ---- ---- ---- ---- x--- ----
12#define FTWireNeighbor5 256 // ---- ---- ---- ---- ---- ---x ---- ----
13#define FTWireHitSegment 16384 // ---- ---- ---- ---- -x-- ---- ---- ----
14#define FTWireHitRight 32768 // ---- ---- ---- ---- x--- ---- ---- ----
15#define FTWireHitLeft 65536 // ---- ---- ---- ---x ---- ---- ---- ----
16#define FTWireHitLinked 131072 // ---- ---- ---- --x- ---- ---- ---- ----
17#define FTWireFittingInvalid 0x10000000 // ---x ---- ---- ---- ---- ---- ---- ----
18#define FTWireInvalid 0x20000000 // --x- ---- ---- ---- ---- ---- ---- ----
19#define FTWireStateMask 0xf0000000 // xxxx ---- ---- ---- ---- ---- ---- ----
20
21#ifndef M_PI
22# define M_PI 3.14159265358979323846
23#endif
24
25#include "FTLayer.h"
26#include "TrackUtil/Lpav.h"
27
28#include <array>
29using std::array;
30
31using namespace CLHEP;
32
33class FTWire {
34public:
35 /// constructors
36 FTWire( const float x, const float y, const float dx, const float dy, const int wireId,
37 FTLayer* layer, const float phi );
38 FTWire();
39
40 /// destructor
42
43public: // Selectors
44 /// initNeighbor
45 void initNeighbor();
46
47 /// returns position x
48 const float x() const { return _x; }
49
50 /// returns position y
51 const float y() const { return _y; }
52
53 /// returns phi
54 float phi() const { return _phi; }
55
56 /// returns local ID
57 const int localId() const;
58
59 /// returns layer
60 FTLayer* layer() const { return _layer; }
61
62 /// returns pointer of neighbor array
63 array<FTWire*, 6>& getNeighbors() { return _neighbor; }
64
65 /// returns drift distance
66 float distance() const { return _distance; }
67
68 /// returns z_distance from the center of wire by drift distance
69 float distance_z() const;
70
71 /// returns t0 read at begin run
72 float t0() const { return _t0; }
73
74 /// returns pedestal read at begin run
75 float pedestal() const { return _pedestal; }
76
77 /// returns state
78 unsigned state() const { return _state; }
79
80 /// returns state bit
81 unsigned stateAND( const unsigned mask ) const { return _state & mask; }
82
83 /// returns z for track la
84 int z( const Lpav& la, double& z ) const;
85
86 /// rerurns TDC time(after t0 subtraction)
87 float time() const { return _time; }
88
89 // wangdy add:return ADC value
90 float getAdc() const { return m_adc; }
91
92 // max add:return residual
93 float getChi2() const { return m_chi2; }
94
95public: // Modifires
96 /// clear
97 void clear();
98
99 /// set drift distance
100 float distance( const float distance ) { return _distance = distance; }
101
102 /// set t0 at begin-run
103 float t0( const float t0 ) { return _t0 = t0; }
104
105 /// set pedestal at begin-run
106 float pedestal( const float ped ) { return _pedestal = ped; }
107
108 /// set state
109 unsigned state( const unsigned state ) {
110 return _state = ( _state & FTWireStateMask ) | state;
111 }
112
113 /// set state directly
114 void setState( const unsigned state ) { _state = state; }
115
116 /// set state bit
117 void stateOR( const unsigned mask ) { _state |= mask; }
118
119 /// invert state bit
120 void stateXOR( const unsigned mask ) { _state ^= mask; }
121
122 /// reset state bit
123 void stateORXOR( const unsigned mask ) { _state = ( _state | mask ) ^ mask; }
124
125 /// check neighbors of phi-side and raise invalid flag if both hits
126 void chk_left_and_right();
127
128 /// reset time
129 float time( float t ) { return _time = t; }
130
131 /// set wireId
132 void wireId( int wireID ) { _wireId = wireID; }
133
134 /// get wireId
135 int getWireId() { return _wireId; }
136
137 /// wangdy add:set Adc value
138 void setAdc( float adc ) { m_adc = adc; }
139
140 /// set residual fit chi2
141 void setChi2( float chi2 ) { m_chi2 = chi2; }
142
143private: // private member functions
144 /// returns left wire;
145 const FTWire* left() const;
146
147 /// returns left wire;
148 const FTWire* right() const;
149
150 /// compute inner Neighbor
151 void getInnerNeighbor();
152
153 /// compute outer Neighbor
154 void getOuterNeighbor();
155
156 /// compute mid Neighbor
157 void getMidNeighbor();
158
159private: // private data members
160 const float _x;
161 const float _y;
162 const float _dx;
163 const float _dy;
164 const float _phi;
165 int _wireId;
166 float _distance;
167 float _t0;
168 float _time;
169 float _pedestal;
170 unsigned int _state;
171 float m_posx;
172 float m_posy;
173 float m_posz;
174 float m_adc; // wangdy adds
175 float m_chi2; // max adds
176
177 FTLayer* _layer;
178 array<FTWire*, 6> _neighbor;
179};
#define FTWireStateMask
Definition FTWire.h:19
NTuple::Array< double > m_adc
NTuple::Item< double > m_chi2
const int localId() const
returns local ID
Definition FTWire.cxx:42
float getAdc() const
Definition FTWire.h:90
void initNeighbor()
initNeighbor
Definition FTWire.cxx:48
int getWireId()
get wireId
Definition FTWire.h:135
float pedestal(const float ped)
set pedestal at begin-run
Definition FTWire.h:106
~FTWire()
destructor
Definition FTWire.h:41
int z(const Lpav &la, double &z) const
returns z for track la
Definition FTWire.cxx:157
float time() const
rerurns TDC time(after t0 subtraction)
Definition FTWire.h:87
unsigned stateAND(const unsigned mask) const
returns state bit
Definition FTWire.h:81
array< FTWire *, 6 > & getNeighbors()
returns pointer of neighbor array
Definition FTWire.h:63
float distance(const float distance)
set drift distance
Definition FTWire.h:100
void clear()
clear
Definition FTWire.cxx:148
void chk_left_and_right()
check neighbors of phi-side and raise invalid flag if both hits
Definition FTWire.cxx:189
FTLayer * layer() const
returns layer
Definition FTWire.h:60
float t0() const
returns t0 read at begin run
Definition FTWire.h:72
void stateORXOR(const unsigned mask)
reset state bit
Definition FTWire.h:123
void setAdc(float adc)
wangdy add:set Adc value
Definition FTWire.h:138
FTWire(const float x, const float y, const float dx, const float dy, const int wireId, FTLayer *layer, const float phi)
constructors
Definition FTWire.cxx:8
float t0(const float t0)
set t0 at begin-run
Definition FTWire.h:103
float pedestal() const
returns pedestal read at begin run
Definition FTWire.h:75
void wireId(int wireID)
set wireId
Definition FTWire.h:132
float distance_z() const
returns z_distance from the center of wire by drift distance
Definition FTWire.cxx:46
void stateXOR(const unsigned mask)
invert state bit
Definition FTWire.h:120
void stateOR(const unsigned mask)
set state bit
Definition FTWire.h:117
unsigned state(const unsigned state)
set state
Definition FTWire.h:109
const float x() const
returns position x
Definition FTWire.h:48
float getChi2() const
Definition FTWire.h:93
void setState(const unsigned state)
set state directly
Definition FTWire.h:114
FTWire()
Definition FTWire.cxx:26
float distance() const
returns drift distance
Definition FTWire.h:66
unsigned state() const
returns state
Definition FTWire.h:78
float time(float t)
reset time
Definition FTWire.h:129
float phi() const
returns phi
Definition FTWire.h:54
void setChi2(float chi2)
set residual fit chi2
Definition FTWire.h:141
const float y() const
returns position y
Definition FTWire.h:51
int t()
Definition t.c:1