37 : fIStation(-1), fId(Vc::Zero), fX0(Vc::Zero), fX1(Vc::Zero), fX2(Vc::Zero), fErr2X1(Vc::Zero), fErrX12(Vc::Zero), fErr2X2(Vc::Zero),
39 fR(Vc::Zero), fErr2R(Vc::Zero), fErr2A(Vc::Zero), fBeta(Vc::Zero), fIsLeft(true),
51 float_m
IsValid()
const {
return fIStation >= 0; }
57 return fIStation[v.firstOne()];
61 uint_v
Id()
const {
return fId; };
63 float_v
X0()
const {
return fX0; }
64 float_v
X1()
const {
return fX1; }
65 float_v
X2()
const {
return fX2; }
67 float_v
FStrip()
const {
return GetStripsValue(fFStripP); };
68 float_v
BStrip()
const {
return GetStripsValue(fBStripP); };
70 float_v
Err2X1()
const {
return fErr2X1; }
71 float_v
ErrX12()
const {
return fErrX12; }
72 float_v
Err2X2()
const {
return fErr2X2; }
75 float_v XWire0()
const {
return fX0; }
76 float_v XWire1()
const {
return fX1; }
77 float_v XWire2()
const {
return fX2; }
79 float_v R()
const {
return fR; }
80 float_v RSigned()
const 86 float_v Err2R()
const {
return fErr2R; }
87 float_v Err2A()
const {
return fErr2A; }
88 float_v Beta()
const {
return fBeta; }
89 float_m IsLeft()
const {
return fIsLeft; }
92 float_v
Angle()
const {
return fAngle; }
102 float_v GetStripsValue(
FTSCAStrip *
const strip[float_v::Size])
const 105 foreach_bit(
unsigned short iV,
IsValid()) { r[iV] = *(strip[iV]); }
115 float_v fX0, fX1, fX2;
116 float_v fErr2X1, fErrX12, fErr2X2;
129 template <
typename T>
148 assert((
unsigned char)i < fElement.size());
153 assert((
unsigned char)i < fElement.size());
158 assert((
unsigned char)i < fElement.size());
163 assert((
unsigned char)i < fElement.size());
171 fElement.resize(nSta);
172 for (
int i = 0;
i < nSta; ++
i)
184 fElement[iSta].push_back(hit);
195 int_v::Memory mIStation;
196 mIStation = int_v(-1);
198 float_v::Memory mX1, mX2, mX0;
199 float_v::Memory mErr2X1, mErrX12, mErr2X2;
202 float_v::Memory mR, mErr2R, mErr2A, mBeta, mIsLeft;
204 float_v::Memory mAlpha;
206 foreach_bit(
unsigned short iV, valid)
210 mIStation[iV] = h.
IRow();
218 mErr2R[iV] = h.Err2R();
219 mErr2A[iV] = h.Err2A();
220 mBeta[iV] = h.Beta();
221 mIsLeft[iV] = h.IsLeft() ? 1.f : 0.f;
223 mAlpha[iV] = h.
Angle();
228 fIStation = int_v(mIStation);
232 fErr2X1 = float_v(mErr2X1);
233 fErrX12 = float_v(mErrX12);
234 fErr2X2 = float_v(mErr2X2);
237 fErr2R = float_v(mErr2R);
238 fErr2A = float_v(mErr2A);
239 fBeta = float_v(mBeta);
240 fIsLeft = (float_v(mIsLeft) == 1.f);
242 fAngle = float_v(mAlpha);
248 float_v::Memory mIsLeft;
249 foreach_bit(
unsigned short iV, valid)
264 fErr2R[iV] = h.Err2R();
265 fErr2A[iV] = h.Err2A();
266 fBeta[iV] = h.Beta();
267 mIsLeft[iV] = h.IsLeft() ? 1.f : 0.f;
269 fAngle[iV] = h.
Angle();
274 fIsLeft = (float_v(mIsLeft) == 1.f);
283 float_v::Memory mIsLeft;
284 foreach_bit(
unsigned short iV, valid)
299 fErr2R[iV] = h.Err2R();
300 fErr2A[iV] = h.Err2A();
301 fBeta[iV] = h.Beta();
302 mIsLeft[iV] = h.IsLeft() ? 1.f : 0.f;
304 fAngle[iV] = h.
Angle();
309 fIsLeft = (float_v(mIsLeft) == 1.f);
373 fIsLeft =
static_cast<float_m
>(
true);
381 fElement[
i].IStation() =
i;
383 for (
unsigned int iH = 0; iH < hs.size(); iH += float_v::Size) {
384 float_m valid =
static_cast<float_m
>(uint_v::IndexesFromZero() < uint_v(hs.size() - iH));
385 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