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 110 of file L1Field.h.

Constructor & Destructor Documentation

◆ L1FieldRegion() [1/2]

L1FieldRegion::L1FieldRegion ( )
inline

Definition at line 113 of file L1Field.h.

113 : 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:118
float_v cz1
Definition: L1Field.h:119
float_v cz2
Definition: L1Field.h:119
float_v cx1
Definition: L1Field.h:117
float_v cx0
Definition: L1Field.h:117
float_v cy0
Definition: L1Field.h:118
float_v cy2
Definition: L1Field.h:118
float_v cz0
Definition: L1Field.h:119
float_v cx2
Definition: L1Field.h:117
float_v z0
Definition: L1Field.h:120

◆ L1FieldRegion() [2/2]

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

Definition at line 115 of file L1Field.h.

115 : 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:118
float_v cz1
Definition: L1Field.h:119
float_v cz2
Definition: L1Field.h:119
float_v cx1
Definition: L1Field.h:117
float_v cx0
Definition: L1Field.h:117
float_v cy0
Definition: L1Field.h:118
float_v cy2
Definition: L1Field.h:118
float_v cz0
Definition: L1Field.h:119
float_v cx2
Definition: L1Field.h:117
float_v z0
Definition: L1Field.h:120

Member Function Documentation

◆ Get()

CAFieldValue L1FieldRegion::Get ( const float_v  z)
inline

Definition at line 122 of file L1Field.h.

123  {
124  float_v dz = (z - z0);
125  float_v dz2 = dz * dz;
126  CAFieldValue B;
127  B.x = cx0 + cx1 * dz + cx2 * dz2;
128  B.y = cy0 + cy1 * dz + cy2 * dz2;
129  B.z = cz0 + cz1 * dz + cz2 * dz2;
130  return B;
131  }
float_v cy1
Definition: L1Field.h:118
float_v cz1
Definition: L1Field.h:119
float_v cz2
Definition: L1Field.h:119
float_v cx1
Definition: L1Field.h:117
float_v cx0
Definition: L1Field.h:117
float_v cy0
Definition: L1Field.h:118
float_v cy2
Definition: L1Field.h:118
float_v cz0
Definition: L1Field.h:119
float_v cx2
Definition: L1Field.h:117
float_v z0
Definition: L1Field.h:120

◆ GetOneEntry()

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

Definition at line 222 of file L1Field.h.

223  {
224  reg[0] = cx0[iVec];
225  reg[1] = cx1[iVec];
226  reg[2] = cx2[iVec];
227  reg[3] = cy0[iVec];
228  reg[4] = cy1[iVec];
229  reg[5] = cy2[iVec];
230  reg[6] = cz0[iVec];
231  reg[7] = cz1[iVec];
232  reg[8] = cz2[iVec];
233  reg[9] = z0[iVec];
234  }
float_v cy1
Definition: L1Field.h:118
float_v cz1
Definition: L1Field.h:119
float_v cz2
Definition: L1Field.h:119
float_v cx1
Definition: L1Field.h:117
float_v cx0
Definition: L1Field.h:117
float_v cy0
Definition: L1Field.h:118
float_v cy2
Definition: L1Field.h:118
float_v cz0
Definition: L1Field.h:119
float_v cx2
Definition: L1Field.h:117
float_v z0
Definition: L1Field.h:120

◆ 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 133 of file L1Field.h.

References f, and rcp().

134  {
135  z0 = B0z;
136  float_v dz1 = B1z - B0z, dz2 = B2z - B0z;
137 
138  float_v deti = dz1 * dz2 * (dz2 - dz1);
139  float_m mask = abs(deti) > float_v(1.e-8f);
140 
141  float_v det = rcp(float_v(dz1 * dz2 * (dz2 - dz1)));
142  float_v w21 = -dz2 * det;
143  float_v w22 = dz1 * det;
144  float_v w11 = -dz2 * w21;
145  float_v w12 = -dz1 * w22;
146 
147  float_v dB1 = B1.x - B0.x;
148  float_v dB2 = B2.x - B0.x;
149  cx0(mask) = B0.x;
150  cx1(mask) = dB1 * w11 + dB2 * w12;
151  cx2(mask) = dB1 * w21 + dB2 * w22;
152 
153  dB1 = B1.y - B0.y;
154  dB2 = B2.y - B0.y;
155  cy0(mask) = B0.y;
156  cy1(mask) = dB1 * w11 + dB2 * w12;
157  cy2(mask) = dB1 * w21 + dB2 * w22;
158 
159  dB1 = B1.z - B0.z;
160  dB2 = B2.z - B0.z;
161  cz0(mask) = B0.z;
162  cz1(mask) = dB1 * w11 + dB2 * w12;
163  cz2(mask) = dB1 * w21 + dB2 * w22;
164  }
float_v cy1
Definition: L1Field.h:118
float_v cz1
Definition: L1Field.h:119
float_v cz2
Definition: L1Field.h:119
float_v cx1
Definition: L1Field.h:117
T rcp(T val)
Definition: PndFTSCADef.h:55
float_v cx0
Definition: L1Field.h:117
float_v cy0
Definition: L1Field.h:118
float_v cy2
Definition: L1Field.h:118
float f
Definition: P4_F32vec4.h:20
float_v cz0
Definition: L1Field.h:119
float_v cx2
Definition: L1Field.h:117
float_v z0
Definition: L1Field.h:120

◆ Set() [2/2]

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

Definition at line 166 of file L1Field.h.

References rcp().

167  {
168  z0 = B0z[0];
169  float_v dzi = rcp(float_v(B1z - B0z));
170  cx0 = B0.x;
171  cy0 = B0.y;
172  cz0 = B0.z;
173  cx1 = (B1.x - B0.x) * dzi;
174  cy1 = (B1.y - B0.y) * dzi;
175  cz1 = (B1.z - B0.z) * dzi;
176  cx2 = cy2 = cz2 = 0;
177  }
float_v cy1
Definition: L1Field.h:118
float_v cz1
Definition: L1Field.h:119
float_v cz2
Definition: L1Field.h:119
float_v cx1
Definition: L1Field.h:117
T rcp(T val)
Definition: PndFTSCADef.h:55
float_v cx0
Definition: L1Field.h:117
float_v cy0
Definition: L1Field.h:118
float_v cy2
Definition: L1Field.h:118
float_v cz0
Definition: L1Field.h:119
float_v cx2
Definition: L1Field.h:117
float_v z0
Definition: L1Field.h:120

◆ SetOneEntry() [1/2]

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

Definition at line 194 of file L1Field.h.

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

195  {
196  cx0[i0] = f1.cx0[i1];
197  cx1[i0] = f1.cx1[i1];
198  cx2[i0] = f1.cx2[i1];
199  cy0[i0] = f1.cy0[i1];
200  cy1[i0] = f1.cy1[i1];
201  cy2[i0] = f1.cy2[i1];
202  cz0[i0] = f1.cz0[i1];
203  cz1[i0] = f1.cz1[i1];
204  cz2[i0] = f1.cz2[i1];
205  z0[i0] = f1.z0[i1];
206  }
float_v cy1
Definition: L1Field.h:118
float_v cz1
Definition: L1Field.h:119
float_v cz2
Definition: L1Field.h:119
float_v cx1
Definition: L1Field.h:117
float_v cx0
Definition: L1Field.h:117
float_v cy0
Definition: L1Field.h:118
float_v cy2
Definition: L1Field.h:118
float_v cz0
Definition: L1Field.h:119
float_v cx2
Definition: L1Field.h:117
float_v z0
Definition: L1Field.h:120

◆ SetOneEntry() [2/2]

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

Definition at line 208 of file L1Field.h.

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

209  {
210  cx0 = f1.cx0[i1];
211  cx1 = f1.cx1[i1];
212  cx2 = f1.cx2[i1];
213  cy0 = f1.cy0[i1];
214  cy1 = f1.cy1[i1];
215  cy2 = f1.cy2[i1];
216  cz0 = f1.cz0[i1];
217  cz1 = f1.cz1[i1];
218  cz2 = f1.cz2[i1];
219  z0 = f1.z0[i1];
220  }
float_v cy1
Definition: L1Field.h:118
float_v cz1
Definition: L1Field.h:119
float_v cz2
Definition: L1Field.h:119
float_v cx1
Definition: L1Field.h:117
float_v cx0
Definition: L1Field.h:117
float_v cy0
Definition: L1Field.h:118
float_v cy2
Definition: L1Field.h:118
float_v cz0
Definition: L1Field.h:119
float_v cx2
Definition: L1Field.h:117
float_v z0
Definition: L1Field.h:120

◆ Shift()

void L1FieldRegion::Shift ( float_v  z)
inline

Definition at line 179 of file L1Field.h.

180  {
181  float_v dz = z - z0;
182  float_v cx2dz = cx2 * dz;
183  float_v cy2dz = cy2 * dz;
184  float_v cz2dz = cz2 * dz;
185  z0 = float_v(z[0]);
186  cx0 += (cx1 + cx2dz) * dz;
187  cy0 += (cy1 + cy2dz) * dz;
188  cz0 += (cz1 + cz2dz) * dz;
189  cx1 += cx2dz + cx2dz;
190  cy1 += cy2dz + cy2dz;
191  cz1 += cz2dz + cz2dz;
192  }
float_v cy1
Definition: L1Field.h:118
float_v cz1
Definition: L1Field.h:119
float_v cz2
Definition: L1Field.h:119
float_v cx1
Definition: L1Field.h:117
float_v cx0
Definition: L1Field.h:117
float_v cy0
Definition: L1Field.h:118
float_v cy2
Definition: L1Field.h:118
float_v cz0
Definition: L1Field.h:119
float_v cx2
Definition: L1Field.h:117
float_v z0
Definition: L1Field.h:120

Friends And Related Function Documentation

◆ operator<<

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

Definition at line 236 of file L1Field.h.

237  {
238  return out << " FieldRegion " << endl
239  << B.cx0 << endl
240  << B.cx1 << endl
241  << B.cx2 << endl
242  << B.cy0 << endl
243  << B.cy1 << endl
244  << B.cy2 << endl
245  << B.cz0 << endl
246  << B.cz1 << endl
247  << B.cz2 << endl
248  << B.z0 << endl;
249  };
float_v cy1
Definition: L1Field.h:118
float_v cz1
Definition: L1Field.h:119
float_v cz2
Definition: L1Field.h:119
float_v cx1
Definition: L1Field.h:117
float_v cx0
Definition: L1Field.h:117
float_v cy0
Definition: L1Field.h:118
float_v cy2
Definition: L1Field.h:118
float_v cz0
Definition: L1Field.h:119
float_v cx2
Definition: L1Field.h:117
float_v z0
Definition: L1Field.h:120

Member Data Documentation

◆ cx0

float_v L1FieldRegion::cx0

Definition at line 117 of file L1Field.h.

Referenced by SetOneEntry().

◆ cx1

float_v L1FieldRegion::cx1

Definition at line 117 of file L1Field.h.

Referenced by SetOneEntry().

◆ cx2

float_v L1FieldRegion::cx2

Definition at line 117 of file L1Field.h.

Referenced by SetOneEntry().

◆ cy0

float_v L1FieldRegion::cy0

Definition at line 118 of file L1Field.h.

Referenced by SetOneEntry().

◆ cy1

float_v L1FieldRegion::cy1

Definition at line 118 of file L1Field.h.

Referenced by SetOneEntry().

◆ cy2

float_v L1FieldRegion::cy2

Definition at line 118 of file L1Field.h.

Referenced by SetOneEntry().

◆ cz0

float_v L1FieldRegion::cz0

Definition at line 119 of file L1Field.h.

Referenced by SetOneEntry().

◆ cz1

float_v L1FieldRegion::cz1

Definition at line 119 of file L1Field.h.

Referenced by SetOneEntry().

◆ cz2

float_v L1FieldRegion::cz2

Definition at line 119 of file L1Field.h.

Referenced by SetOneEntry().

◆ z0

float_v L1FieldRegion::z0

Definition at line 120 of file L1Field.h.

Referenced by SetOneEntry().


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