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 22 of file FTSCAHitsV.h.

Constructor & Destructor Documentation

◆ FTSCAHitV() [1/4]

FTSCAHitV::FTSCAHitV ( )
inline

Definition at line 24 of file FTSCAHitsV.h.

Referenced by FTSCAHitsV::FTSCAHitsV().

25  : fIStation(-1), fId(Vc::Zero), fX0(Vc::Zero), fX1(Vc::Zero), fX2(Vc::Zero), fErr2X1(Vc::Zero), fErrX12(Vc::Zero), fErr2X2(Vc::Zero),
26 #ifdef DRIFT_TUBES
27  fR(Vc::Zero), fErr2R(Vc::Zero), fErr2A(Vc::Zero), fBeta(Vc::Zero), fIsLeft(true),
28 #endif
29  fAngle(Vc::Zero)
30  {
31  }

◆ FTSCAHitV() [2/4]

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

Definition at line 181 of file FTSCAHitsV.h.

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

181  : fId(ids)
182 {
183  int_v::Memory mIStation;
184  mIStation = int_v(-1);
185 
186  float_v::Memory mX1, mX2, mX0;
187  float_v::Memory mErr2X1, mErrX12, mErr2X2;
188 
189 #ifdef DRIFT_TUBES
190  float_v::Memory mR, mErr2R, mErr2A, mBeta, mIsLeft;
191 #endif
192  float_v::Memory mAlpha;
193 
194  foreach_bit(unsigned short iV, valid)
195  {
196  const PndFTSCAGBHit &h = *(hits[iV]);
197 
198  mIStation[iV] = h.IRow();
199  h.GetLocalX0X1X2(mX0[iV], mX1[iV], mX2[iV]);
200 
201  mErr2X1[iV] = h.Err2X1();
202  mErrX12[iV] = h.ErrX12();
203  mErr2X2[iV] = h.Err2X2();
204 #ifdef DRIFT_TUBES
205  mR[iV] = h.R();
206  mErr2R[iV] = h.Err2R();
207  mErr2A[iV] = h.Err2A();
208  mBeta[iV] = h.Beta();
209  mIsLeft[iV] = h.IsLeft() ? 1.f : 0.f;
210 #endif
211  mAlpha[iV] = h.Angle();
212  fFStripP[iV] = h.FStripP();
213  fBStripP[iV] = h.BStripP();
214  }
215 
216  fIStation = int_v(mIStation);
217  fX1 = float_v(mX1);
218  fX2 = float_v(mX2);
219  fX0 = float_v(mX0);
220  fErr2X1 = float_v(mErr2X1);
221  fErrX12 = float_v(mErrX12);
222  fErr2X2 = float_v(mErr2X2);
223 #ifdef DRIFT_TUBES
224  fR = float_v(mR);
225  fErr2R = float_v(mErr2R);
226  fErr2A = float_v(mErr2A);
227  fBeta = float_v(mBeta);
228  fIsLeft = (float_v(mIsLeft) == 1.f);
229 #endif
230  fAngle = float_v(mAlpha);
231 }
float Err2X1() const
Definition: PndFTSCAGBHit.h:51
float Err2X2() const
Definition: PndFTSCAGBHit.h:53
FTSCAStrip * FStripP() const
Definition: PndFTSCAGBHit.h:86
float ErrX12() const
Definition: PndFTSCAGBHit.h:52
void GetLocalX0X1X2(float &x0, float &x1, float &x2) const
int IRow() const
Definition: PndFTSCAGBHit.h:55
float Angle() const
FTSCAStrip * BStripP() const
Definition: PndFTSCAGBHit.h:85

◆ FTSCAHitV() [3/4]

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

Definition at line 267 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().

268 {
270 
271  float_v::Memory mIsLeft;
272  foreach_bit(unsigned short iV, valid)
273  {
274  const FTSCAHit &h = hits[iV];
275 
276  fId[iV] = h.Id();
277  fIStation[iV] = h.IStation();
278  fX1[iV] = h.X1();
279  fX2[iV] = h.X2();
280  fX0[iV] = h.X0();
281 
282  fErr2X1[iV] = h.Err2X1();
283  fErrX12[iV] = h.ErrX12();
284  fErr2X2[iV] = h.Err2X2();
285 
286  fR[iV] = h.R();
287  fErr2R[iV] = h.Err2R();
288  fErr2A[iV] = h.Err2A();
289  fBeta[iV] = h.Beta();
290  mIsLeft[iV] = h.IsLeft() ? 1.f : 0.f;
291 
292  fAngle[iV] = h.Angle();
293  fFStripP[iV] = h.FStripP();
294  fBStripP[iV] = h.BStripP();
295  // mIsUsed[iV] = h.IsUsed() ? 1.f : 0.f;
296  }
297  fIsLeft = (float_v(mIsLeft) == 1.f);
298 
299  /*int_v::Memory mIStation;
300  mIStation = int_v( -1 );
301 
302  uint_v::Memory mId;
303  float_v::Memory mX1, mX2, mX0;
304  float_v::Memory mErr2X1, mErrX12, mErr2X2;
305 #ifdef DRIFT_TUBES
306  float_v::Memory mR, mErr2R, mErr2A, mBeta, mIsLeft;
307 #endif
308  float_v::Memory mAlpha;
309  //float_v::Memory mIsUsed;
310 
311  foreach_bit(unsigned short iV, valid) {
312  const FTSCAHit& h = hits[iV];
313 
314  mId[iV] = h.Id();
315  mIStation[iV] = h.IStation();
316  mX1[iV] = h.X1();
317  mX2[iV] = h.X2();
318  mX0[iV] = h.X0();
319 
320  mErr2X1[iV] = h.Err2X1();
321  mErrX12[iV] = h.ErrX12();
322  mErr2X2[iV] = h.Err2X2();
323 #ifdef DRIFT_TUBES
324  mR[iV] = h.R();
325  mErr2R[iV] = h.Err2R();
326  mErr2A[iV] = h.Err2A();
327  mBeta[iV] = h.Beta();
328  mIsLeft[iV] = h.IsLeft() ? 1.f : 0.f;
329 #endif
330  mAlpha[iV] = h.Angle();
331  fFStripP[iV] = h.FStripP();
332  fBStripP[iV] = h.BStripP();
333  //mIsUsed[iV] = h.IsUsed() ? 1.f : 0.f;
334  }
335  fId = uint_v(mId);
336  fIStation = int_v(mIStation);
337  fX1 = float_v(mX1); fX2 = float_v(mX2); fX0 = float_v(mX0);
338  fErr2X1 = float_v(mErr2X1); fErrX12 = float_v(mErrX12); fErr2X2 = float_v(mErr2X2);
339 #ifdef DRIFT_TUBES
340  fR = float_v(mR); fErr2R = float_v(mErr2R); fErr2A = float_v(mErr2A); fBeta = float_v(mBeta); fIsLeft = ( float_v(mIsLeft) == 1.f );
341 #endif
342  fAngle = float_v(mAlpha);
343  */
344  // fIsUsed = ( float_v(mIsUsed) == 1.f ); // CHECKME what to do with isUsed?
345 }
int Id() const
Definition: FTSCAHits.h:37
FTSCAStrip * BStripP() const
Definition: FTSCAHits.h:50
FTSCAStrip * FStripP() const
Definition: FTSCAHits.h:49
float X2() const
Definition: FTSCAHits.h:45
float X1() const
Definition: FTSCAHits.h:44
float Angle() const
Definition: FTSCAHits.h:72
float Err2X2() const
Definition: FTSCAHits.h:54
float ErrX12() const
Definition: FTSCAHits.h:53
char IStation() const
Definition: FTSCAHits.h:35
float X0() const
Definition: FTSCAHits.h:43
float Err2X1() const
Definition: FTSCAHits.h:52
void InitValuesByZeros()
Definition: FTSCAHitsV.h:347

◆ FTSCAHitV() [4/4]

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

Definition at line 233 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().

234 {
236  float_v::Memory mIsLeft;
237  foreach_bit(unsigned short iV, valid)
238  {
239  const FTSCAHit &h = hits[0];
240 
241  fId[iV] = h.Id();
242  fIStation[iV] = h.IStation();
243  fX1[iV] = h.X1();
244  fX2[iV] = h.X2();
245  fX0[iV] = h.X0();
246 
247  fErr2X1[iV] = h.Err2X1();
248  fErrX12[iV] = h.ErrX12();
249  fErr2X2[iV] = h.Err2X2();
250 
251  fR[iV] = h.R();
252  fErr2R[iV] = h.Err2R();
253  fErr2A[iV] = h.Err2A();
254  fBeta[iV] = h.Beta();
255  mIsLeft[iV] = h.IsLeft() ? 1.f : 0.f;
256 
257  fAngle[iV] = h.Angle();
258  fFStripP[iV] = h.FStripP();
259  fBStripP[iV] = h.BStripP();
260  // mIsUsed[iV] = h.IsUsed() ? 1.f : 0.f;
261  }
262  fIsLeft = (float_v(mIsLeft) == 1.f);
263  // cout<<"FTSCAHitV constructor\n";
264  // cout<<"fX0 "<<fX0<<" fX1 "<<fX1<<endl;
265 }
int Id() const
Definition: FTSCAHits.h:37
FTSCAStrip * BStripP() const
Definition: FTSCAHits.h:50
FTSCAStrip * FStripP() const
Definition: FTSCAHits.h:49
float X2() const
Definition: FTSCAHits.h:45
float X1() const
Definition: FTSCAHits.h:44
float Angle() const
Definition: FTSCAHits.h:72
float Err2X2() const
Definition: FTSCAHits.h:54
float ErrX12() const
Definition: FTSCAHits.h:53
char IStation() const
Definition: FTSCAHits.h:35
float X0() const
Definition: FTSCAHits.h:43
float Err2X1() const
Definition: FTSCAHits.h:52
void InitValuesByZeros()
Definition: FTSCAHitsV.h:347

Member Function Documentation

◆ Angle()

float_v FTSCAHitV::Angle ( ) const
inline

Definition at line 80 of file FTSCAHitsV.h.

Referenced by GetGlobalCoor().

80 { return fAngle; }

◆ BStrip()

float_v FTSCAHitV::BStrip ( ) const
inline

Definition at line 56 of file FTSCAHitsV.h.

56 { return GetStripsValue(fBStripP); };

◆ Err2X1()

float_v FTSCAHitV::Err2X1 ( ) const
inline

Definition at line 58 of file FTSCAHitsV.h.

58 { return fErr2X1; }

◆ Err2X2()

float_v FTSCAHitV::Err2X2 ( ) const
inline

Definition at line 60 of file FTSCAHitsV.h.

60 { return fErr2X2; }

◆ ErrX12()

float_v FTSCAHitV::ErrX12 ( ) const
inline

Definition at line 59 of file FTSCAHitsV.h.

59 { return fErrX12; }

◆ FStrip()

float_v FTSCAHitV::FStrip ( ) const
inline

Definition at line 55 of file FTSCAHitsV.h.

55 { return GetStripsValue(fFStripP); };

◆ GetGlobalCoor()

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

Definition at line 82 of file FTSCAHitsV.h.

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

83  {
84  PndFTSCAParameters::CALocalToGlobal(float(X0()[iV]), float(X1()[iV]), float(X2()[iV]), float(Angle()[iV]), x, y, z);
85  }
float_v X2() const
Definition: FTSCAHitsV.h:53
float_v Angle() const
Definition: FTSCAHitsV.h:80
float_v X0() const
Definition: FTSCAHitsV.h:51
static void CALocalToGlobal(T x0, T x1, T angle, T &x, T &y)
float_v X1() const
Definition: FTSCAHitsV.h:52

◆ Id()

uint_v FTSCAHitV::Id ( ) const
inline

Definition at line 49 of file FTSCAHitsV.h.

49 { return fId; };

◆ InitValuesByZeros()

void FTSCAHitV::InitValuesByZeros ( )
inline

Definition at line 347 of file FTSCAHitsV.h.

Referenced by FTSCAHitV(), and GetGlobalCoor().

348 {
349  fIStation = -1;
350  fId = Vc::Zero;
351  fX0 = Vc::Zero;
352  fX1 = Vc::Zero;
353  fX2 = Vc::Zero;
354  fErr2X1 = Vc::Zero;
355  fErrX12 = Vc::Zero;
356  fErr2X2 = Vc::Zero;
357  fR = Vc::Zero;
358  fErr2R = Vc::Zero;
359  fErr2A = Vc::Zero;
360  fBeta = Vc::Zero;
361  fIsLeft = static_cast<float_m>(true);
362  fAngle = Vc::Zero;
363 }

◆ IStation()

char FTSCAHitV::IStation ( ) const
inline

Definition at line 41 of file FTSCAHitsV.h.

References IsValid(), and v.

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

42  {
43  const float_m v = IsValid();
44  assert(!v.isEmpty());
45  return fIStation[v.firstOne()];
46  }
__m128 v
Definition: P4_F32vec4.h:3
float_m IsValid() const
Definition: FTSCAHitsV.h:39

◆ IStations()

int_v FTSCAHitV::IStations ( ) const
inline

Definition at line 47 of file FTSCAHitsV.h.

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

◆ IsValid()

float_m FTSCAHitV::IsValid ( ) const
inline

Definition at line 39 of file FTSCAHitsV.h.

Referenced by GetGlobalCoor(), and IStation().

39 { return fIStation >= 0; }

◆ X0()

float_v FTSCAHitV::X0 ( ) const
inline

Definition at line 51 of file FTSCAHitsV.h.

Referenced by GetGlobalCoor().

51 { return fX0; }

◆ X1()

float_v FTSCAHitV::X1 ( ) const
inline

Definition at line 52 of file FTSCAHitsV.h.

Referenced by GetGlobalCoor().

52 { return fX1; }

◆ X2()

float_v FTSCAHitV::X2 ( ) const
inline

Definition at line 53 of file FTSCAHitsV.h.

Referenced by GetGlobalCoor().

53 { return fX2; }

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