PandaRoot
L1FieldRegion Class Reference

#include <L1Field.h>

Public Member Functions

 L1FieldRegion ()
 
 L1FieldRegion (float reg[10])
 
CAFieldValue Get (const float_v z)
 
void Set (const CAFieldValue &B0, const float_v B0z, const CAFieldValue &B1, const float_v B1z, const CAFieldValue &B2, const float_v B2z)
 
void Set (const CAFieldValue &B0, const float_v B0z, const CAFieldValue &B1, const float_v B1z)
 
void Shift (float_v z)
 
void SetOneEntry (const int i0, const L1FieldRegion &f1, const int i1)
 
void SetOneEntry (const L1FieldRegion &f1, const int i1)
 
void GetOneEntry (float reg[10], const int iVec)
 

Public Attributes

float_v cx0
 
float_v cx1
 
float_v cx2
 
float_v cy0
 
float_v cy1
 
float_v cy2
 
float_v cz0
 
float_v cz1
 
float_v cz2
 
float_v z0
 

Friends

ostream & operator<< (ostream &out, L1FieldRegion &B)
 

Detailed Description

Definition at line 122 of file L1Field.h.

Constructor & Destructor Documentation

◆ L1FieldRegion() [1/2]

L1FieldRegion::L1FieldRegion ( )
inline

Definition at line 125 of file L1Field.h.

125 : cx0(Vc::Zero), cx1(Vc::Zero), cx2(Vc::Zero), cy0(Vc::Zero), cy1(Vc::Zero), cy2(Vc::Zero), cz0(Vc::Zero), cz1(Vc::Zero), cz2(Vc::Zero), z0(Vc::Zero) {}
float_v cy1
Definition: L1Field.h:130
float_v cz1
Definition: L1Field.h:131
float_v cz2
Definition: L1Field.h:131
float_v cx1
Definition: L1Field.h:129
float_v cx0
Definition: L1Field.h:129
float_v cy0
Definition: L1Field.h:130
float_v cy2
Definition: L1Field.h:130
float_v cz0
Definition: L1Field.h:131
float_v cx2
Definition: L1Field.h:129
float_v z0
Definition: L1Field.h:132

◆ L1FieldRegion() [2/2]

L1FieldRegion::L1FieldRegion ( float  reg[10])
inline

Definition at line 127 of file L1Field.h.

127 : cx0(reg[0]), cx1(reg[1]), cx2(reg[2]), cy0(reg[3]), cy1(reg[4]), cy2(reg[5]), cz0(reg[6]), cz1(reg[7]), cz2(reg[8]), z0(reg[9]) {}
float_v cy1
Definition: L1Field.h:130
float_v cz1
Definition: L1Field.h:131
float_v cz2
Definition: L1Field.h:131
float_v cx1
Definition: L1Field.h:129
float_v cx0
Definition: L1Field.h:129
float_v cy0
Definition: L1Field.h:130
float_v cy2
Definition: L1Field.h:130
float_v cz0
Definition: L1Field.h:131
float_v cx2
Definition: L1Field.h:129
float_v z0
Definition: L1Field.h:132

Member Function Documentation

◆ Get()

CAFieldValue L1FieldRegion::Get ( const float_v  z)
inline

Definition at line 134 of file L1Field.h.

135  {
136  float_v dz = (z - z0);
137  float_v dz2 = dz * dz;
138  CAFieldValue B;
139  B.x = cx0 + cx1 * dz + cx2 * dz2;
140  B.y = cy0 + cy1 * dz + cy2 * dz2;
141  B.z = cz0 + cz1 * dz + cz2 * dz2;
142  return B;
143  }
float_v cy1
Definition: L1Field.h:130
float_v cz1
Definition: L1Field.h:131
float_v cz2
Definition: L1Field.h:131
float_v cx1
Definition: L1Field.h:129
float_v cx0
Definition: L1Field.h:129
float_v cy0
Definition: L1Field.h:130
float_v cy2
Definition: L1Field.h:130
float_v cz0
Definition: L1Field.h:131
float_v cx2
Definition: L1Field.h:129
float_v z0
Definition: L1Field.h:132

◆ GetOneEntry()

void L1FieldRegion::GetOneEntry ( float  reg[10],
const int  iVec 
)
inline

Definition at line 234 of file L1Field.h.

235  {
236  reg[0] = cx0[iVec];
237  reg[1] = cx1[iVec];
238  reg[2] = cx2[iVec];
239  reg[3] = cy0[iVec];
240  reg[4] = cy1[iVec];
241  reg[5] = cy2[iVec];
242  reg[6] = cz0[iVec];
243  reg[7] = cz1[iVec];
244  reg[8] = cz2[iVec];
245  reg[9] = z0[iVec];
246  }
float_v cy1
Definition: L1Field.h:130
float_v cz1
Definition: L1Field.h:131
float_v cz2
Definition: L1Field.h:131
float_v cx1
Definition: L1Field.h:129
float_v cx0
Definition: L1Field.h:129
float_v cy0
Definition: L1Field.h:130
float_v cy2
Definition: L1Field.h:130
float_v cz0
Definition: L1Field.h:131
float_v cx2
Definition: L1Field.h:129
float_v z0
Definition: L1Field.h:132

◆ Set() [1/2]

void L1FieldRegion::Set ( const CAFieldValue B0,
const float_v  B0z,
const CAFieldValue B1,
const float_v  B1z,
const CAFieldValue B2,
const float_v  B2z 
)
inline

Definition at line 145 of file L1Field.h.

References f, and rcp().

146  {
147  z0 = B0z;
148  float_v dz1 = B1z - B0z, dz2 = B2z - B0z;
149 
150  float_v deti = dz1 * dz2 * (dz2 - dz1);
151  float_m mask = abs(deti) > float_v(1.e-8f);
152 
153  float_v det = rcp(float_v(dz1 * dz2 * (dz2 - dz1)));
154  float_v w21 = -dz2 * det;
155  float_v w22 = dz1 * det;
156  float_v w11 = -dz2 * w21;
157  float_v w12 = -dz1 * w22;
158 
159  float_v dB1 = B1.x - B0.x;
160  float_v dB2 = B2.x - B0.x;
161  cx0(mask) = B0.x;
162  cx1(mask) = dB1 * w11 + dB2 * w12;
163  cx2(mask) = dB1 * w21 + dB2 * w22;
164 
165  dB1 = B1.y - B0.y;
166  dB2 = B2.y - B0.y;
167  cy0(mask) = B0.y;
168  cy1(mask) = dB1 * w11 + dB2 * w12;
169  cy2(mask) = dB1 * w21 + dB2 * w22;
170 
171  dB1 = B1.z - B0.z;
172  dB2 = B2.z - B0.z;
173  cz0(mask) = B0.z;
174  cz1(mask) = dB1 * w11 + dB2 * w12;
175  cz2(mask) = dB1 * w21 + dB2 * w22;
176  }
float_v cy1
Definition: L1Field.h:130
float_v cz1
Definition: L1Field.h:131
float_v cz2
Definition: L1Field.h:131
float_v cx1
Definition: L1Field.h:129
T rcp(T val)
Definition: PndFTSCADef.h:67
float_v cx0
Definition: L1Field.h:129
float_v cy0
Definition: L1Field.h:130
float_v cy2
Definition: L1Field.h:130
float f
Definition: P4_F32vec4.h:32
float_v cz0
Definition: L1Field.h:131
float_v cx2
Definition: L1Field.h:129
float_v z0
Definition: L1Field.h:132

◆ Set() [2/2]

void L1FieldRegion::Set ( const CAFieldValue B0,
const float_v  B0z,
const CAFieldValue B1,
const float_v  B1z 
)
inline

Definition at line 178 of file L1Field.h.

References rcp().

179  {
180  z0 = B0z[0];
181  float_v dzi = rcp(float_v(B1z - B0z));
182  cx0 = B0.x;
183  cy0 = B0.y;
184  cz0 = B0.z;
185  cx1 = (B1.x - B0.x) * dzi;
186  cy1 = (B1.y - B0.y) * dzi;
187  cz1 = (B1.z - B0.z) * dzi;
188  cx2 = cy2 = cz2 = 0;
189  }
float_v cy1
Definition: L1Field.h:130
float_v cz1
Definition: L1Field.h:131
float_v cz2
Definition: L1Field.h:131
float_v cx1
Definition: L1Field.h:129
T rcp(T val)
Definition: PndFTSCADef.h:67
float_v cx0
Definition: L1Field.h:129
float_v cy0
Definition: L1Field.h:130
float_v cy2
Definition: L1Field.h:130
float_v cz0
Definition: L1Field.h:131
float_v cx2
Definition: L1Field.h:129
float_v z0
Definition: L1Field.h:132

◆ SetOneEntry() [1/2]

void L1FieldRegion::SetOneEntry ( const int  i0,
const L1FieldRegion f1,
const int  i1 
)
inline

Definition at line 206 of file L1Field.h.

References cx0, cx1, cx2, cy0, cy1, cy2, cz0, cz1, cz2, and z0.

207  {
208  cx0[i0] = f1.cx0[i1];
209  cx1[i0] = f1.cx1[i1];
210  cx2[i0] = f1.cx2[i1];
211  cy0[i0] = f1.cy0[i1];
212  cy1[i0] = f1.cy1[i1];
213  cy2[i0] = f1.cy2[i1];
214  cz0[i0] = f1.cz0[i1];
215  cz1[i0] = f1.cz1[i1];
216  cz2[i0] = f1.cz2[i1];
217  z0[i0] = f1.z0[i1];
218  }
float_v cy1
Definition: L1Field.h:130
float_v cz1
Definition: L1Field.h:131
float_v cz2
Definition: L1Field.h:131
float_v cx1
Definition: L1Field.h:129
float_v cx0
Definition: L1Field.h:129
float_v cy0
Definition: L1Field.h:130
float_v cy2
Definition: L1Field.h:130
float_v cz0
Definition: L1Field.h:131
float_v cx2
Definition: L1Field.h:129
float_v z0
Definition: L1Field.h:132

◆ SetOneEntry() [2/2]

void L1FieldRegion::SetOneEntry ( const L1FieldRegion f1,
const int  i1 
)
inline

Definition at line 220 of file L1Field.h.

References cx0, cx1, cx2, cy0, cy1, cy2, cz0, cz1, cz2, and z0.

221  {
222  cx0 = f1.cx0[i1];
223  cx1 = f1.cx1[i1];
224  cx2 = f1.cx2[i1];
225  cy0 = f1.cy0[i1];
226  cy1 = f1.cy1[i1];
227  cy2 = f1.cy2[i1];
228  cz0 = f1.cz0[i1];
229  cz1 = f1.cz1[i1];
230  cz2 = f1.cz2[i1];
231  z0 = f1.z0[i1];
232  }
float_v cy1
Definition: L1Field.h:130
float_v cz1
Definition: L1Field.h:131
float_v cz2
Definition: L1Field.h:131
float_v cx1
Definition: L1Field.h:129
float_v cx0
Definition: L1Field.h:129
float_v cy0
Definition: L1Field.h:130
float_v cy2
Definition: L1Field.h:130
float_v cz0
Definition: L1Field.h:131
float_v cx2
Definition: L1Field.h:129
float_v z0
Definition: L1Field.h:132

◆ Shift()

void L1FieldRegion::Shift ( float_v  z)
inline

Definition at line 191 of file L1Field.h.

192  {
193  float_v dz = z - z0;
194  float_v cx2dz = cx2 * dz;
195  float_v cy2dz = cy2 * dz;
196  float_v cz2dz = cz2 * dz;
197  z0 = float_v(z[0]);
198  cx0 += (cx1 + cx2dz) * dz;
199  cy0 += (cy1 + cy2dz) * dz;
200  cz0 += (cz1 + cz2dz) * dz;
201  cx1 += cx2dz + cx2dz;
202  cy1 += cy2dz + cy2dz;
203  cz1 += cz2dz + cz2dz;
204  }
float_v cy1
Definition: L1Field.h:130
float_v cz1
Definition: L1Field.h:131
float_v cz2
Definition: L1Field.h:131
float_v cx1
Definition: L1Field.h:129
float_v cx0
Definition: L1Field.h:129
float_v cy0
Definition: L1Field.h:130
float_v cy2
Definition: L1Field.h:130
float_v cz0
Definition: L1Field.h:131
float_v cx2
Definition: L1Field.h:129
float_v z0
Definition: L1Field.h:132

Friends And Related Function Documentation

◆ operator<<

ostream& operator<< ( ostream &  out,
L1FieldRegion B 
)
friend

Definition at line 248 of file L1Field.h.

249  {
250  return out << " FieldRegion " << endl
251  << B.cx0 << endl
252  << B.cx1 << endl
253  << B.cx2 << endl
254  << B.cy0 << endl
255  << B.cy1 << endl
256  << B.cy2 << endl
257  << B.cz0 << endl
258  << B.cz1 << endl
259  << B.cz2 << endl
260  << B.z0 << endl;
261  };
float_v cy1
Definition: L1Field.h:130
float_v cz1
Definition: L1Field.h:131
float_v cz2
Definition: L1Field.h:131
float_v cx1
Definition: L1Field.h:129
float_v cx0
Definition: L1Field.h:129
float_v cy0
Definition: L1Field.h:130
float_v cy2
Definition: L1Field.h:130
float_v cz0
Definition: L1Field.h:131
float_v cx2
Definition: L1Field.h:129
float_v z0
Definition: L1Field.h:132

Member Data Documentation

◆ cx0

float_v L1FieldRegion::cx0

Definition at line 129 of file L1Field.h.

Referenced by SetOneEntry().

◆ cx1

float_v L1FieldRegion::cx1

Definition at line 129 of file L1Field.h.

Referenced by SetOneEntry().

◆ cx2

float_v L1FieldRegion::cx2

Definition at line 129 of file L1Field.h.

Referenced by SetOneEntry().

◆ cy0

float_v L1FieldRegion::cy0

Definition at line 130 of file L1Field.h.

Referenced by SetOneEntry().

◆ cy1

float_v L1FieldRegion::cy1

Definition at line 130 of file L1Field.h.

Referenced by SetOneEntry().

◆ cy2

float_v L1FieldRegion::cy2

Definition at line 130 of file L1Field.h.

Referenced by SetOneEntry().

◆ cz0

float_v L1FieldRegion::cz0

Definition at line 131 of file L1Field.h.

Referenced by SetOneEntry().

◆ cz1

float_v L1FieldRegion::cz1

Definition at line 131 of file L1Field.h.

Referenced by SetOneEntry().

◆ cz2

float_v L1FieldRegion::cz2

Definition at line 131 of file L1Field.h.

Referenced by SetOneEntry().

◆ z0

float_v L1FieldRegion::z0

Definition at line 132 of file L1Field.h.

Referenced by SetOneEntry().


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