FieldComputation Class Reference

List of all members.

Public Member Functions

 FieldComputation (BLCMDfieldexpr *_expr)
G4bool DoesFieldChangeEnergy () const
void GetFieldValue (const G4double point[4], G4double *field) const

Private Attributes

BLCMDfieldexprexpr


Constructor & Destructor Documentation

FieldComputation::FieldComputation ( BLCMDfieldexpr _expr  )  [inline]

References expr.

00140                                                 : G4ElectroMagneticField() 
00141                 { expr=_expr; }


Member Function Documentation

G4bool FieldComputation::DoesFieldChangeEnergy (  )  const [inline]

00142 { return true; }

void FieldComputation::GetFieldValue ( const G4double  point[4],
G4double *  field 
) const

References BLCMDfieldexpr::Br, BLCMDfieldexpr::Bx, BLCMDfieldexpr::By, BLCMDfieldexpr::Bz, BLCMDfieldexpr::Er, BLEvaluator::evaluate(), BLCMDfieldexpr::Ex, expr, BLCMDfieldexpr::Ey, BLCMDfieldexpr::Ez, and BLCMDfieldexpr::radius.

Referenced by BLCMDfieldexpr::maxError().

00498 {
00499         BLEvaluator e;
00500 
00501         if(expr->radius > 0.0) {
00502                 assert(fabs(point[1]) < 0.000001);
00503                 e.setVariable("r",point[0]);
00504                 e.setVariable("z",point[2]);
00505                 field[0] = (expr->Br.size()>0 ? e.evaluate(expr->Br.c_str()) :
00506                                                         0.0) * tesla;
00507                 field[1] = 0.0;
00508                 field[3] = (expr->Er.size()>0 ? e.evaluate(expr->Er.c_str()) :
00509                                                         0.0) * (megavolt/meter);
00510                 field[4] = 0.0;
00511         } else {
00512                 e.setVariable("x",point[0]);
00513                 e.setVariable("y",point[1]);
00514                 e.setVariable("z",point[2]);
00515                 field[0] = (expr->Bx.size()>0 ? e.evaluate(expr->Bx.c_str()) :
00516                                                         0.0) * tesla;
00517                 field[1] = (expr->By.size()>0 ? e.evaluate(expr->By.c_str()) :
00518                                                         0.0) * tesla;
00519                 field[3] = (expr->Ex.size()>0 ? e.evaluate(expr->Ex.c_str()) :
00520                                                         0.0) * (megavolt/meter);
00521                 field[4] = (expr->Ey.size()>0 ? e.evaluate(expr->Ey.c_str()) :
00522                                                         0.0) * (megavolt/meter);
00523         }
00524         field[2] = (expr->Bz.size()>0 ? e.evaluate(expr->Bz.c_str()) :
00525                                                         0.0) * tesla;
00526         field[5] = (expr->Ez.size()>0 ? e.evaluate(expr->Ez.c_str()) :
00527                                                         0.0) * (megavolt/meter);
00528 
00529 //printf("FieldComputation::GetFieldValue(%.1f,%.1f,%.1f,%.1f)=%.4f %.4f %.4f %.4f %.4f %.4f\n",point[0],point[1],point[2],point[3], field[0]/tesla,field[1]/tesla,field[2]/tesla,field[3]/(megavolt/meter),field[4]/(megavolt/meter),field[5]/(megavolt/meter));
00530         return;
00531 }


Member Data Documentation

Referenced by FieldComputation(), and GetFieldValue().


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