25 : fIStation(-1), fId(Vc::Zero), fX0(Vc::Zero), fX1(Vc::Zero), fX2(Vc::Zero), fErr2X1(Vc::Zero), fErrX12(Vc::Zero), fErr2X2(Vc::Zero),
27 fR(Vc::Zero), fErr2R(Vc::Zero), fErr2A(Vc::Zero), fBeta(Vc::Zero), fIsLeft(true),
39 float_m
IsValid()
const {
return fIStation >= 0; }
45 return fIStation[v.firstOne()];
49 uint_v
Id()
const {
return fId; };
51 float_v
X0()
const {
return fX0; }
52 float_v
X1()
const {
return fX1; }
53 float_v
X2()
const {
return fX2; }
55 float_v
FStrip()
const {
return GetStripsValue(fFStripP); };
56 float_v
BStrip()
const {
return GetStripsValue(fBStripP); };
58 float_v
Err2X1()
const {
return fErr2X1; }
59 float_v
ErrX12()
const {
return fErrX12; }
60 float_v
Err2X2()
const {
return fErr2X2; }
63 float_v XWire0()
const {
return fX0; }
64 float_v XWire1()
const {
return fX1; }
65 float_v XWire2()
const {
return fX2; }
67 float_v R()
const {
return fR; }
68 float_v RSigned()
const 74 float_v Err2R()
const {
return fErr2R; }
75 float_v Err2A()
const {
return fErr2A; }
76 float_v Beta()
const {
return fBeta; }
77 float_m IsLeft()
const {
return fIsLeft; }
80 float_v
Angle()
const {
return fAngle; }
90 float_v GetStripsValue(
FTSCAStrip *
const strip[float_v::Size])
const 93 foreach_bit(
unsigned short iV,
IsValid()) { r[iV] = *(strip[iV]); }
103 float_v fX0, fX1, fX2;
104 float_v fErr2X1, fErrX12, fErr2X2;
117 template <
typename T>
136 assert((
unsigned char)i < fElement.size());
141 assert((
unsigned char)i < fElement.size());
146 assert((
unsigned char)i < fElement.size());
151 assert((
unsigned char)i < fElement.size());
159 fElement.resize(nSta);
160 for (
int i = 0;
i < nSta; ++
i)
172 fElement[iSta].push_back(hit);
183 int_v::Memory mIStation;
184 mIStation = int_v(-1);
186 float_v::Memory mX1, mX2, mX0;
187 float_v::Memory mErr2X1, mErrX12, mErr2X2;
190 float_v::Memory mR, mErr2R, mErr2A, mBeta, mIsLeft;
192 float_v::Memory mAlpha;
194 foreach_bit(
unsigned short iV, valid)
198 mIStation[iV] = h.
IRow();
206 mErr2R[iV] = h.Err2R();
207 mErr2A[iV] = h.Err2A();
208 mBeta[iV] = h.Beta();
209 mIsLeft[iV] = h.IsLeft() ? 1.f : 0.f;
211 mAlpha[iV] = h.
Angle();
216 fIStation = int_v(mIStation);
220 fErr2X1 = float_v(mErr2X1);
221 fErrX12 = float_v(mErrX12);
222 fErr2X2 = float_v(mErr2X2);
225 fErr2R = float_v(mErr2R);
226 fErr2A = float_v(mErr2A);
227 fBeta = float_v(mBeta);
228 fIsLeft = (float_v(mIsLeft) == 1.f);
230 fAngle = float_v(mAlpha);
236 float_v::Memory mIsLeft;
237 foreach_bit(
unsigned short iV, valid)
252 fErr2R[iV] = h.Err2R();
253 fErr2A[iV] = h.Err2A();
254 fBeta[iV] = h.Beta();
255 mIsLeft[iV] = h.IsLeft() ? 1.f : 0.f;
257 fAngle[iV] = h.
Angle();
262 fIsLeft = (float_v(mIsLeft) == 1.f);
271 float_v::Memory mIsLeft;
272 foreach_bit(
unsigned short iV, valid)
287 fErr2R[iV] = h.Err2R();
288 fErr2A[iV] = h.Err2A();
289 fBeta[iV] = h.Beta();
290 mIsLeft[iV] = h.IsLeft() ? 1.f : 0.f;
292 fAngle[iV] = h.
Angle();
297 fIsLeft = (float_v(mIsLeft) == 1.f);
361 fIsLeft =
static_cast<float_m
>(
true);
369 fElement[
i].IStation() =
i;
371 for (
unsigned int iH = 0; iH < hs.size(); iH += float_v::Size) {
372 float_m valid =
static_cast<float_m
>(uint_v::IndexesFromZero() < uint_v(hs.size() - iH));
373 fElement[
i].push_back(
FTSCAHitV(&(hs[iH]), valid));
FTSCAHitsV(const FTSCAHits &hits)
vector< FTSCAElementsOnStation< T > > fElement
FTSCAStrip * BStripP() const
const FTSCAElementsOnStation< T > & OnStation(char i) const
FTSCAStrip * FStripP() const
FTSCAElementsOnStation< T > & operator[](char i)
const T & operator[](TES i) const
const char & IStation() const
FTSCAStrip * FStripP() const
void GetLocalX0X1X2(float &x0, float &x1, float &x2) const
FTSCAElementsOnStation< T > & OnStation(char i)
const FTSCAElementsOnStation< T > & operator[](char i) const
FTSCAElementsOnStation< T > & OnStation(char i)
static void CALocalToGlobal(T x0, T x1, T angle, T &x, T &y)
void GetGlobalCoor(int iV, float &x, float &y, float &z) const
FTSCAStrip * BStripP() const