PandaRoot
FTSCAHitV Class Reference

#include <FTSCAHitsV.h>

Public Member Functions

 FTSCAHitV ()
 
 FTSCAHitV (const PndFTSCAGBHit **hits, const uint_v &ids, const float_m &valid)
 
 FTSCAHitV (const FTSCAHit *hits, const float_m &valid)
 
 FTSCAHitV (const FTSCAHit *hits, const float_m &valid, bool OneHit)
 
float_m IsValid () const
 
char IStation () const
 
int_v IStations () const
 
uint_v Id () const
 
float_v X0 () const
 
float_v X1 () const
 
float_v X2 () const
 
float_v FStrip () const
 
float_v BStrip () const
 
float_v Err2X1 () const
 
float_v ErrX12 () const
 
float_v Err2X2 () const
 
float_v Angle () const
 
void GetGlobalCoor (int iV, float &x, float &y, float &z) const
 
void InitValuesByZeros ()
 

Detailed Description

Definition at line 34 of file FTSCAHitsV.h.

Constructor & Destructor Documentation

◆ FTSCAHitV() [1/4]

FTSCAHitV::FTSCAHitV ( )
inline

Definition at line 36 of file FTSCAHitsV.h.

Referenced by FTSCAHitsV::FTSCAHitsV().

37  : fIStation(-1), fId(Vc::Zero), fX0(Vc::Zero), fX1(Vc::Zero), fX2(Vc::Zero), fErr2X1(Vc::Zero), fErrX12(Vc::Zero), fErr2X2(Vc::Zero),
38 #ifdef DRIFT_TUBES
39  fR(Vc::Zero), fErr2R(Vc::Zero), fErr2A(Vc::Zero), fBeta(Vc::Zero), fIsLeft(true),
40 #endif
41  fAngle(Vc::Zero)
42  {
43  }

◆ FTSCAHitV() [2/4]

FTSCAHitV::FTSCAHitV ( const PndFTSCAGBHit **  hits,
const uint_v &  ids,
const float_m &  valid 
)
inline

Definition at line 193 of file FTSCAHitsV.h.

References PndFTSCAGBHit::Angle(), PndFTSCAGBHit::BStripP(), PndFTSCAGBHit::Err2X1(), PndFTSCAGBHit::Err2X2(), PndFTSCAGBHit::ErrX12(), PndFTSCAGBHit::FStripP(), PndFTSCAGBHit::GetLocalX0X1X2(), and PndFTSCAGBHit::IRow().

193  : fId(ids)
194 {
195  int_v::Memory mIStation;
196  mIStation = int_v(-1);
197 
198  float_v::Memory mX1, mX2, mX0;
199  float_v::Memory mErr2X1, mErrX12, mErr2X2;
200 
201 #ifdef DRIFT_TUBES
202  float_v::Memory mR, mErr2R, mErr2A, mBeta, mIsLeft;
203 #endif
204  float_v::Memory mAlpha;
205 
206  foreach_bit(unsigned short iV, valid)
207  {
208  const PndFTSCAGBHit &h = *(hits[iV]);
209 
210  mIStation[iV] = h.IRow();
211  h.GetLocalX0X1X2(mX0[iV], mX1[iV], mX2[iV]);
212 
213  mErr2X1[iV] = h.Err2X1();
214  mErrX12[iV] = h.ErrX12();
215  mErr2X2[iV] = h.Err2X2();
216 #ifdef DRIFT_TUBES
217  mR[iV] = h.R();
218  mErr2R[iV] = h.Err2R();
219  mErr2A[iV] = h.Err2A();
220  mBeta[iV] = h.Beta();
221  mIsLeft[iV] = h.IsLeft() ? 1.f : 0.f;
222 #endif
223  mAlpha[iV] = h.Angle();
224  fFStripP[iV] = h.FStripP();
225  fBStripP[iV] = h.BStripP();
226  }
227 
228  fIStation = int_v(mIStation);
229  fX1 = float_v(mX1);
230  fX2 = float_v(mX2);
231  fX0 = float_v(mX0);
232  fErr2X1 = float_v(mErr2X1);
233  fErrX12 = float_v(mErrX12);
234  fErr2X2 = float_v(mErr2X2);
235 #ifdef DRIFT_TUBES
236  fR = float_v(mR);
237  fErr2R = float_v(mErr2R);
238  fErr2A = float_v(mErr2A);
239  fBeta = float_v(mBeta);
240  fIsLeft = (float_v(mIsLeft) == 1.f);
241 #endif
242  fAngle = float_v(mAlpha);
243 }
float Err2X1() const
Definition: PndFTSCAGBHit.h:63
float Err2X2() const
Definition: PndFTSCAGBHit.h:65
FTSCAStrip * FStripP() const
Definition: PndFTSCAGBHit.h:98
float ErrX12() const
Definition: PndFTSCAGBHit.h:64
void GetLocalX0X1X2(float &x0, float &x1, float &x2) const
int IRow() const
Definition: PndFTSCAGBHit.h:67
float Angle() const
FTSCAStrip * BStripP() const
Definition: PndFTSCAGBHit.h:97

◆ FTSCAHitV() [3/4]

FTSCAHitV::FTSCAHitV ( const FTSCAHit hits,
const float_m &  valid 
)
inline

Definition at line 279 of file FTSCAHitsV.h.

References FTSCAHit::Angle(), FTSCAHit::BStripP(), FTSCAHit::Err2X1(), FTSCAHit::Err2X2(), FTSCAHit::ErrX12(), FTSCAHit::FStripP(), FTSCAHit::Id(), InitValuesByZeros(), FTSCAHit::IStation(), FTSCAHit::X0(), FTSCAHit::X1(), and FTSCAHit::X2().

280 {
282 
283  float_v::Memory mIsLeft;
284  foreach_bit(unsigned short iV, valid)
285  {
286  const FTSCAHit &h = hits[iV];
287 
288  fId[iV] = h.Id();
289  fIStation[iV] = h.IStation();
290  fX1[iV] = h.X1();
291  fX2[iV] = h.X2();
292  fX0[iV] = h.X0();
293 
294  fErr2X1[iV] = h.Err2X1();
295  fErrX12[iV] = h.ErrX12();
296  fErr2X2[iV] = h.Err2X2();
297 
298  fR[iV] = h.R();
299  fErr2R[iV] = h.Err2R();
300  fErr2A[iV] = h.Err2A();
301  fBeta[iV] = h.Beta();
302  mIsLeft[iV] = h.IsLeft() ? 1.f : 0.f;
303 
304  fAngle[iV] = h.Angle();
305  fFStripP[iV] = h.FStripP();
306  fBStripP[iV] = h.BStripP();
307  // mIsUsed[iV] = h.IsUsed() ? 1.f : 0.f;
308  }
309  fIsLeft = (float_v(mIsLeft) == 1.f);
310 
311  /*int_v::Memory mIStation;
312  mIStation = int_v( -1 );
313 
314  uint_v::Memory mId;
315  float_v::Memory mX1, mX2, mX0;
316  float_v::Memory mErr2X1, mErrX12, mErr2X2;
317 #ifdef DRIFT_TUBES
318  float_v::Memory mR, mErr2R, mErr2A, mBeta, mIsLeft;
319 #endif
320  float_v::Memory mAlpha;
321  //float_v::Memory mIsUsed;
322 
323  foreach_bit(unsigned short iV, valid) {
324  const FTSCAHit& h = hits[iV];
325 
326  mId[iV] = h.Id();
327  mIStation[iV] = h.IStation();
328  mX1[iV] = h.X1();
329  mX2[iV] = h.X2();
330  mX0[iV] = h.X0();
331 
332  mErr2X1[iV] = h.Err2X1();
333  mErrX12[iV] = h.ErrX12();
334  mErr2X2[iV] = h.Err2X2();
335 #ifdef DRIFT_TUBES
336  mR[iV] = h.R();
337  mErr2R[iV] = h.Err2R();
338  mErr2A[iV] = h.Err2A();
339  mBeta[iV] = h.Beta();
340  mIsLeft[iV] = h.IsLeft() ? 1.f : 0.f;
341 #endif
342  mAlpha[iV] = h.Angle();
343  fFStripP[iV] = h.FStripP();
344  fBStripP[iV] = h.BStripP();
345  //mIsUsed[iV] = h.IsUsed() ? 1.f : 0.f;
346  }
347  fId = uint_v(mId);
348  fIStation = int_v(mIStation);
349  fX1 = float_v(mX1); fX2 = float_v(mX2); fX0 = float_v(mX0);
350  fErr2X1 = float_v(mErr2X1); fErrX12 = float_v(mErrX12); fErr2X2 = float_v(mErr2X2);
351 #ifdef DRIFT_TUBES
352  fR = float_v(mR); fErr2R = float_v(mErr2R); fErr2A = float_v(mErr2A); fBeta = float_v(mBeta); fIsLeft = ( float_v(mIsLeft) == 1.f );
353 #endif
354  fAngle = float_v(mAlpha);
355  */
356  // fIsUsed = ( float_v(mIsUsed) == 1.f ); // CHECKME what to do with isUsed?
357 }
int Id() const
Definition: FTSCAHits.h:49
FTSCAStrip * BStripP() const
Definition: FTSCAHits.h:62
FTSCAStrip * FStripP() const
Definition: FTSCAHits.h:61
float X2() const
Definition: FTSCAHits.h:57
float X1() const
Definition: FTSCAHits.h:56
float Angle() const
Definition: FTSCAHits.h:84
float Err2X2() const
Definition: FTSCAHits.h:66
float ErrX12() const
Definition: FTSCAHits.h:65
char IStation() const
Definition: FTSCAHits.h:47
float X0() const
Definition: FTSCAHits.h:55
float Err2X1() const
Definition: FTSCAHits.h:64
void InitValuesByZeros()
Definition: FTSCAHitsV.h:359

◆ FTSCAHitV() [4/4]

FTSCAHitV::FTSCAHitV ( const FTSCAHit hits,
const float_m &  valid,
bool  OneHit 
)
inline

Definition at line 245 of file FTSCAHitsV.h.

References FTSCAHit::Angle(), FTSCAHit::BStripP(), FTSCAHit::Err2X1(), FTSCAHit::Err2X2(), FTSCAHit::ErrX12(), FTSCAHit::FStripP(), FTSCAHit::Id(), InitValuesByZeros(), FTSCAHit::IStation(), FTSCAHit::X0(), FTSCAHit::X1(), and FTSCAHit::X2().

246 {
248  float_v::Memory mIsLeft;
249  foreach_bit(unsigned short iV, valid)
250  {
251  const FTSCAHit &h = hits[0];
252 
253  fId[iV] = h.Id();
254  fIStation[iV] = h.IStation();
255  fX1[iV] = h.X1();
256  fX2[iV] = h.X2();
257  fX0[iV] = h.X0();
258 
259  fErr2X1[iV] = h.Err2X1();
260  fErrX12[iV] = h.ErrX12();
261  fErr2X2[iV] = h.Err2X2();
262 
263  fR[iV] = h.R();
264  fErr2R[iV] = h.Err2R();
265  fErr2A[iV] = h.Err2A();
266  fBeta[iV] = h.Beta();
267  mIsLeft[iV] = h.IsLeft() ? 1.f : 0.f;
268 
269  fAngle[iV] = h.Angle();
270  fFStripP[iV] = h.FStripP();
271  fBStripP[iV] = h.BStripP();
272  // mIsUsed[iV] = h.IsUsed() ? 1.f : 0.f;
273  }
274  fIsLeft = (float_v(mIsLeft) == 1.f);
275  // cout<<"FTSCAHitV constructor\n";
276  // cout<<"fX0 "<<fX0<<" fX1 "<<fX1<<endl;
277 }
int Id() const
Definition: FTSCAHits.h:49
FTSCAStrip * BStripP() const
Definition: FTSCAHits.h:62
FTSCAStrip * FStripP() const
Definition: FTSCAHits.h:61
float X2() const
Definition: FTSCAHits.h:57
float X1() const
Definition: FTSCAHits.h:56
float Angle() const
Definition: FTSCAHits.h:84
float Err2X2() const
Definition: FTSCAHits.h:66
float ErrX12() const
Definition: FTSCAHits.h:65
char IStation() const
Definition: FTSCAHits.h:47
float X0() const
Definition: FTSCAHits.h:55
float Err2X1() const
Definition: FTSCAHits.h:64
void InitValuesByZeros()
Definition: FTSCAHitsV.h:359

Member Function Documentation

◆ Angle()

float_v FTSCAHitV::Angle ( ) const
inline

Definition at line 92 of file FTSCAHitsV.h.

Referenced by GetGlobalCoor().

92 { return fAngle; }

◆ BStrip()

float_v FTSCAHitV::BStrip ( ) const
inline

Definition at line 68 of file FTSCAHitsV.h.

68 { return GetStripsValue(fBStripP); };

◆ Err2X1()

float_v FTSCAHitV::Err2X1 ( ) const
inline

Definition at line 70 of file FTSCAHitsV.h.

70 { return fErr2X1; }

◆ Err2X2()

float_v FTSCAHitV::Err2X2 ( ) const
inline

Definition at line 72 of file FTSCAHitsV.h.

72 { return fErr2X2; }

◆ ErrX12()

float_v FTSCAHitV::ErrX12 ( ) const
inline

Definition at line 71 of file FTSCAHitsV.h.

71 { return fErrX12; }

◆ FStrip()

float_v FTSCAHitV::FStrip ( ) const
inline

Definition at line 67 of file FTSCAHitsV.h.

67 { return GetStripsValue(fFStripP); };

◆ GetGlobalCoor()

void FTSCAHitV::GetGlobalCoor ( int  iV,
float &  x,
float &  y,
float &  z 
) const
inline

Definition at line 94 of file FTSCAHitsV.h.

References Angle(), PndFTSCAParameters::CALocalToGlobal(), InitValuesByZeros(), IsValid(), X0(), X1(), and X2().

95  {
96  PndFTSCAParameters::CALocalToGlobal(float(X0()[iV]), float(X1()[iV]), float(X2()[iV]), float(Angle()[iV]), x, y, z);
97  }
float_v X2() const
Definition: FTSCAHitsV.h:65
float_v Angle() const
Definition: FTSCAHitsV.h:92
float_v X0() const
Definition: FTSCAHitsV.h:63
static void CALocalToGlobal(T x0, T x1, T angle, T &x, T &y)
float_v X1() const
Definition: FTSCAHitsV.h:64

◆ Id()

uint_v FTSCAHitV::Id ( ) const
inline

Definition at line 61 of file FTSCAHitsV.h.

61 { return fId; };

◆ InitValuesByZeros()

void FTSCAHitV::InitValuesByZeros ( )
inline

Definition at line 359 of file FTSCAHitsV.h.

Referenced by FTSCAHitV(), and GetGlobalCoor().

360 {
361  fIStation = -1;
362  fId = Vc::Zero;
363  fX0 = Vc::Zero;
364  fX1 = Vc::Zero;
365  fX2 = Vc::Zero;
366  fErr2X1 = Vc::Zero;
367  fErrX12 = Vc::Zero;
368  fErr2X2 = Vc::Zero;
369  fR = Vc::Zero;
370  fErr2R = Vc::Zero;
371  fErr2A = Vc::Zero;
372  fBeta = Vc::Zero;
373  fIsLeft = static_cast<float_m>(true);
374  fAngle = Vc::Zero;
375 }

◆ IStation()

char FTSCAHitV::IStation ( ) const
inline

Definition at line 53 of file FTSCAHitsV.h.

References IsValid(), and v.

Referenced by FTSCAHitsV::Add(), and FTSCAHitsV::FTSCAHitsV().

54  {
55  const float_m v = IsValid();
56  assert(!v.isEmpty());
57  return fIStation[v.firstOne()];
58  }
__m128 v
Definition: P4_F32vec4.h:15
float_m IsValid() const
Definition: FTSCAHitsV.h:51

◆ IStations()

int_v FTSCAHitV::IStations ( ) const
inline

Definition at line 59 of file FTSCAHitsV.h.

59 { return fIStation; } // is not needed by tracker

◆ IsValid()

float_m FTSCAHitV::IsValid ( ) const
inline

Definition at line 51 of file FTSCAHitsV.h.

Referenced by GetGlobalCoor(), and IStation().

51 { return fIStation >= 0; }

◆ X0()

float_v FTSCAHitV::X0 ( ) const
inline

Definition at line 63 of file FTSCAHitsV.h.

Referenced by GetGlobalCoor().

63 { return fX0; }

◆ X1()

float_v FTSCAHitV::X1 ( ) const
inline

Definition at line 64 of file FTSCAHitsV.h.

Referenced by GetGlobalCoor().

64 { return fX1; }

◆ X2()

float_v FTSCAHitV::X2 ( ) const
inline

Definition at line 65 of file FTSCAHitsV.h.

Referenced by GetGlobalCoor().

65 { return fX2; }

The documentation for this class was generated from the following file: