Geant4  10.01.p03
G4MagInt_Driver Class Reference

#include <G4MagIntegratorDriver.hh>

+ Collaboration diagram for G4MagInt_Driver:

Public Member Functions

G4bool AccurateAdvance (G4FieldTrack &y_current, G4double hstep, G4double eps, G4double hinitial=0.0)
 
G4bool QuickAdvance (G4FieldTrack &y_val, const G4double dydx[], G4double hstep, G4double &dchord_step, G4double &dyerr)
 
G4bool QuickAdvance (G4FieldTrack &y_posvel, const G4double dydx[], G4double hstep, G4double &dchord_step, G4double &dyerr_pos_sq, G4double &dyerr_mom_rel_sq)
 
 G4MagInt_Driver (G4double hminimum, G4MagIntegratorStepper *pItsStepper, G4int numberOfComponents=6, G4int statisticsVerbosity=1)
 
 ~G4MagInt_Driver ()
 
G4double GetHmin () const
 
G4double Hmin () const
 
G4double GetSafety () const
 
G4double GetPshrnk () const
 
G4double GetPgrow () const
 
G4double GetErrcon () const
 
void GetDerivatives (const G4FieldTrack &y_curr, G4double dydx[])
 
void RenewStepperAndAdjust (G4MagIntegratorStepper *pItsStepper)
 
void ReSetParameters (G4double new_safety=0.9)
 
void SetSafety (G4double valS)
 
void SetPshrnk (G4double valPs)
 
void SetPgrow (G4double valPg)
 
void SetErrcon (G4double valEc)
 
G4double ComputeAndSetErrcon ()
 
const G4MagIntegratorStepperGetStepper () const
 
G4MagIntegratorStepperGetStepper ()
 
void OneGoodStep (G4double ystart[], const G4double dydx[], G4double &x, G4double htry, G4double eps, G4double &hdid, G4double &hnext)
 
G4double ComputeNewStepSize (G4double errMaxNorm, G4double hstepCurrent)
 
G4double ComputeNewStepSize_WithinLimits (G4double errMaxNorm, G4double hstepCurrent)
 
G4int GetMaxNoSteps () const
 
void SetMaxNoSteps (G4int val)
 
void SetHmin (G4double newval)
 
void SetVerboseLevel (G4int newLevel)
 
G4double GetVerboseLevel () const
 
G4double GetSmallestFraction () const
 
void SetSmallestFraction (G4double val)
 

Protected Member Functions

void WarnSmallStepSize (G4double hnext, G4double hstep, G4double h, G4double xDone, G4int noSteps)
 
void WarnTooManyStep (G4double x1start, G4double x2end, G4double xCurrent)
 
void WarnEndPointTooFar (G4double endPointDist, G4double hStepSize, G4double epsilonRelative, G4int debugFlag)
 
void PrintStatus (const G4double *StartArr, G4double xstart, const G4double *CurrentArr, G4double xcurrent, G4double requestStep, G4int subStepNo)
 
void PrintStatus (const G4FieldTrack &StartFT, const G4FieldTrack &CurrentFT, G4double requestStep, G4int subStepNo)
 
void PrintStat_Aux (const G4FieldTrack &aFieldTrack, G4double requestStep, G4double actualStep, G4int subStepNo, G4double subStepSize, G4double dotVelocities)
 
void PrintStatisticsReport ()
 

Private Member Functions

 G4MagInt_Driver (const G4MagInt_Driver &)
 
G4MagInt_Driveroperator= (const G4MagInt_Driver &)
 

Private Attributes

G4double fMinimumStep
 
G4double fSmallestFraction
 
const G4int fNoIntegrationVariables
 
const G4int fMinNoVars
 
const G4int fNoVars
 
G4int fMaxNoSteps
 
G4double safety
 
G4double pshrnk
 
G4double pgrow
 
G4double errcon
 
G4int fStatisticsVerboseLevel
 
G4MagIntegratorStepperpIntStepper
 
G4int fNoTotalSteps
 
G4int fNoBadSteps
 
G4int fNoSmallSteps
 
G4int fNoInitialSmallSteps
 
G4double fDyerr_max
 
G4double fDyerr_mx2
 
G4double fDyerrPos_smTot
 
G4double fDyerrPos_lgTot
 
G4double fDyerrVel_lgTot
 
G4double fSumH_sm
 
G4double fSumH_lg
 
G4int fVerboseLevel
 

Static Private Attributes

static const G4int fMaxStepBase = 250
 
static const G4double max_stepping_increase = 5.0
 
static const G4double max_stepping_decrease = 0.1
 

Detailed Description

Definition at line 48 of file G4MagIntegratorDriver.hh.

Constructor & Destructor Documentation

G4MagInt_Driver::G4MagInt_Driver ( G4double  hminimum,
G4MagIntegratorStepper pItsStepper,
G4int  numberOfComponents = 6,
G4int  statisticsVerbosity = 1 
)

Definition at line 69 of file G4MagIntegratorDriver.cc.

References fMaxNoSteps, fMaxStepBase, fMinimumStep, fStatisticsVerboseLevel, fVerboseLevel, G4cout, G4endl, G4MagIntegratorStepper::IntegratorOrder(), pIntStepper, and RenewStepperAndAdjust().

+ Here is the call graph for this function:

G4MagInt_Driver::~G4MagInt_Driver ( )

Definition at line 112 of file G4MagIntegratorDriver.cc.

References fStatisticsVerboseLevel, and PrintStatisticsReport().

+ Here is the call graph for this function:

G4MagInt_Driver::G4MagInt_Driver ( const G4MagInt_Driver )
private

Member Function Documentation

G4double G4MagInt_Driver::ComputeAndSetErrcon ( )
inline
G4double G4MagInt_Driver::ComputeNewStepSize ( G4double  errMaxNorm,
G4double  hstepCurrent 
)

Definition at line 762 of file G4MagIntegratorDriver.cc.

References GetPgrow(), GetPshrnk(), GetSafety(), and max_stepping_increase.

Referenced by AccurateAdvance(), G4ChordFinderSaf::FindNextChord(), G4ChordFinder::FindNextChord(), and QuickAdvance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4MagInt_Driver::ComputeNewStepSize_WithinLimits ( G4double  errMaxNorm,
G4double  hstepCurrent 
)

Definition at line 792 of file G4MagIntegratorDriver.cc.

References errcon, GetPgrow(), GetPshrnk(), GetSafety(), max_stepping_decrease, and max_stepping_increase.

+ Here is the call graph for this function:

void G4MagInt_Driver::GetDerivatives ( const G4FieldTrack y_curr,
G4double  dydx[] 
)
inline
G4double G4MagInt_Driver::GetErrcon ( ) const
inline
G4double G4MagInt_Driver::GetHmin ( ) const
inline
G4int G4MagInt_Driver::GetMaxNoSteps ( ) const
inline
G4double G4MagInt_Driver::GetPgrow ( ) const
inline

Referenced by ComputeNewStepSize(), ComputeNewStepSize_WithinLimits(), and OneGoodStep().

+ Here is the caller graph for this function:

G4double G4MagInt_Driver::GetPshrnk ( ) const
inline

Referenced by ComputeNewStepSize(), ComputeNewStepSize_WithinLimits(), and OneGoodStep().

+ Here is the caller graph for this function:

G4double G4MagInt_Driver::GetSafety ( ) const
inline

Referenced by ComputeNewStepSize(), ComputeNewStepSize_WithinLimits(), and OneGoodStep().

+ Here is the caller graph for this function:

G4double G4MagInt_Driver::GetSmallestFraction ( ) const
inline
const G4MagIntegratorStepper* G4MagInt_Driver::GetStepper ( ) const
inline
G4MagIntegratorStepper* G4MagInt_Driver::GetStepper ( )
inline
G4double G4MagInt_Driver::GetVerboseLevel ( ) const
inline
G4double G4MagInt_Driver::Hmin ( ) const
inline

Referenced by AccurateAdvance(), and WarnSmallStepSize().

+ Here is the caller graph for this function:

void G4MagInt_Driver::OneGoodStep ( G4double  ystart[],
const G4double  dydx[],
G4double x,
G4double  htry,
G4double  eps,
G4double hdid,
G4double hnext 
)

Definition at line 515 of file G4MagIntegratorDriver.cc.

References errcon, fDyerrPos_lgTot, fDyerrVel_lgTot, fMinimumStep, fNoIntegrationVariables, fSumH_lg, G4cerr, G4endl, G4ThreadLocal, GetPgrow(), GetPshrnk(), GetSafety(), G4INCL::Math::max(), max_stepping_increase, G4FieldTrack::ncompSVEC, pIntStepper, and sqr().

Referenced by AccurateAdvance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4MagInt_Driver& G4MagInt_Driver::operator= ( const G4MagInt_Driver )
private
void G4MagInt_Driver::PrintStat_Aux ( const G4FieldTrack aFieldTrack,
G4double  requestStep,
G4double  actualStep,
G4int  subStepNo,
G4double  subStepSize,
G4double  dotVelocities 
)
protected

Definition at line 927 of file G4MagIntegratorDriver.cc.

References G4cout, G4endl, G4ThreadLocal, G4FieldTrack::GetCurveLength(), G4FieldTrack::GetKineticEnergy(), G4FieldTrack::GetMomentumDir(), and G4FieldTrack::GetPosition().

Referenced by PrintStatus().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4MagInt_Driver::PrintStatisticsReport ( )
protected

Definition at line 993 of file G4MagIntegratorDriver.cc.

References fDyerr_max, fDyerr_mx2, fDyerrPos_lgTot, fDyerrPos_smTot, fDyerrVel_lgTot, fMinimumStep, fNoBadSteps, fNoInitialSmallSteps, fNoSmallSteps, fNoTotalSteps, fSumH_lg, fSumH_sm, G4cout, and G4endl.

Referenced by ~G4MagInt_Driver().

+ Here is the caller graph for this function:

void G4MagInt_Driver::PrintStatus ( const G4double StartArr,
G4double  xstart,
const G4double CurrentArr,
G4double  xcurrent,
G4double  requestStep,
G4int  subStepNo 
)
protected

Definition at line 824 of file G4MagIntegratorDriver.cc.

References fNoIntegrationVariables, G4FieldTrack::LoadFromArray(), and G4FieldTrack::SetCurveLength().

Referenced by AccurateAdvance(), and QuickAdvance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4MagInt_Driver::PrintStatus ( const G4FieldTrack StartFT,
const G4FieldTrack CurrentFT,
G4double  requestStep,
G4int  subStepNo 
)
protected

Definition at line 849 of file G4MagIntegratorDriver.cc.

References fVerboseLevel, G4cout, G4endl, G4ThreadLocal, G4FieldTrack::GetCurveLength(), G4FieldTrack::GetMomentumDir(), G4FieldTrack::GetPosition(), and PrintStat_Aux().

+ Here is the call graph for this function:

G4bool G4MagInt_Driver::QuickAdvance ( G4FieldTrack y_val,
const G4double  dydx[],
G4double  hstep,
G4double dchord_step,
G4double dyerr 
)

Definition at line 661 of file G4MagIntegratorDriver.cc.

References ComputeNewStepSize(), G4FieldTrack::DumpToArray(), eps, fNoIntegrationVariables, fVerboseLevel, G4cout, G4endl, G4ThreadLocal, G4FieldTrack::GetCurveLength(), G4FieldTrack::LoadFromArray(), G4FieldTrack::ncompSVEC, pIntStepper, PrintStatus(), G4FieldTrack::SetCurveLength(), and sqr().

Referenced by AccurateAdvance(), G4ChordFinderSaf::FindNextChord(), and G4ChordFinder::FindNextChord().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4bool G4MagInt_Driver::QuickAdvance ( G4FieldTrack y_posvel,
const G4double  dydx[],
G4double  hstep,
G4double dchord_step,
G4double dyerr_pos_sq,
G4double dyerr_mom_rel_sq 
)

Definition at line 642 of file G4MagIntegratorDriver.cc.

References FatalException, G4Exception(), and G4FieldTrack::GetPosition().

+ Here is the call graph for this function:

void G4MagInt_Driver::RenewStepperAndAdjust ( G4MagIntegratorStepper pItsStepper)
inline

Referenced by G4MagInt_Driver().

+ Here is the caller graph for this function:

void G4MagInt_Driver::ReSetParameters ( G4double  new_safety = 0.9)
inline
void G4MagInt_Driver::SetErrcon ( G4double  valEc)
inline
void G4MagInt_Driver::SetHmin ( G4double  newval)
inline
void G4MagInt_Driver::SetMaxNoSteps ( G4int  val)
inline
void G4MagInt_Driver::SetPgrow ( G4double  valPg)
inline
void G4MagInt_Driver::SetPshrnk ( G4double  valPs)
inline
void G4MagInt_Driver::SetSafety ( G4double  valS)
inline
void G4MagInt_Driver::SetSmallestFraction ( G4double  val)

Definition at line 1041 of file G4MagIntegratorDriver.cc.

References fSmallestFraction, G4cerr, and G4endl.

void G4MagInt_Driver::SetVerboseLevel ( G4int  newLevel)
inline

Referenced by G4PropagatorInField::SetVerboseLevel().

+ Here is the caller graph for this function:

void G4MagInt_Driver::WarnEndPointTooFar ( G4double  endPointDist,
G4double  hStepSize,
G4double  epsilonRelative,
G4int  debugFlag 
)
protected

Definition at line 479 of file G4MagIntegratorDriver.cc.

References eps, G4endl, G4Exception(), G4ThreadLocal, G4GeometryTolerance::GetInstance(), G4GeometryTolerance::GetSurfaceTolerance(), and JustWarning.

Referenced by AccurateAdvance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4MagInt_Driver::WarnSmallStepSize ( G4double  hnext,
G4double  hstep,
G4double  h,
G4double  xDone,
G4int  noSteps 
)
protected

Definition at line 430 of file G4MagIntegratorDriver.cc.

References fVerboseLevel, G4endl, G4Exception(), G4ThreadLocal, Hmin(), and JustWarning.

Referenced by AccurateAdvance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4MagInt_Driver::WarnTooManyStep ( G4double  x1start,
G4double  x2end,
G4double  xCurrent 
)
protected

Definition at line 462 of file G4MagIntegratorDriver.cc.

References G4endl, G4Exception(), and JustWarning.

Referenced by AccurateAdvance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

G4double G4MagInt_Driver::errcon
private

Definition at line 227 of file G4MagIntegratorDriver.hh.

Referenced by ComputeNewStepSize_WithinLimits(), and OneGoodStep().

G4double G4MagInt_Driver::fDyerr_max
private

Definition at line 244 of file G4MagIntegratorDriver.hh.

Referenced by AccurateAdvance(), and PrintStatisticsReport().

G4double G4MagInt_Driver::fDyerr_mx2
private

Definition at line 244 of file G4MagIntegratorDriver.hh.

Referenced by PrintStatisticsReport().

G4double G4MagInt_Driver::fDyerrPos_lgTot
private

Definition at line 245 of file G4MagIntegratorDriver.hh.

Referenced by OneGoodStep(), and PrintStatisticsReport().

G4double G4MagInt_Driver::fDyerrPos_smTot
private

Definition at line 245 of file G4MagIntegratorDriver.hh.

Referenced by AccurateAdvance(), and PrintStatisticsReport().

G4double G4MagInt_Driver::fDyerrVel_lgTot
private

Definition at line 245 of file G4MagIntegratorDriver.hh.

Referenced by OneGoodStep(), and PrintStatisticsReport().

G4int G4MagInt_Driver::fMaxNoSteps
private

Definition at line 221 of file G4MagIntegratorDriver.hh.

Referenced by AccurateAdvance(), and G4MagInt_Driver().

const G4int G4MagInt_Driver::fMaxStepBase = 250
staticprivate

Definition at line 222 of file G4MagIntegratorDriver.hh.

Referenced by G4MagInt_Driver().

G4double G4MagInt_Driver::fMinimumStep
private
const G4int G4MagInt_Driver::fMinNoVars
private

Definition at line 218 of file G4MagIntegratorDriver.hh.

G4int G4MagInt_Driver::fNoBadSteps
private

Definition at line 243 of file G4MagIntegratorDriver.hh.

Referenced by AccurateAdvance(), and PrintStatisticsReport().

G4int G4MagInt_Driver::fNoInitialSmallSteps
private

Definition at line 243 of file G4MagIntegratorDriver.hh.

Referenced by AccurateAdvance(), and PrintStatisticsReport().

const G4int G4MagInt_Driver::fNoIntegrationVariables
private

Definition at line 217 of file G4MagIntegratorDriver.hh.

Referenced by AccurateAdvance(), OneGoodStep(), PrintStatus(), and QuickAdvance().

G4int G4MagInt_Driver::fNoSmallSteps
private

Definition at line 243 of file G4MagIntegratorDriver.hh.

Referenced by AccurateAdvance(), and PrintStatisticsReport().

G4int G4MagInt_Driver::fNoTotalSteps
private

Definition at line 243 of file G4MagIntegratorDriver.hh.

Referenced by AccurateAdvance(), and PrintStatisticsReport().

const G4int G4MagInt_Driver::fNoVars
private

Definition at line 219 of file G4MagIntegratorDriver.hh.

Referenced by AccurateAdvance().

G4double G4MagInt_Driver::fSmallestFraction
private

Definition at line 213 of file G4MagIntegratorDriver.hh.

Referenced by AccurateAdvance(), and SetSmallestFraction().

G4int G4MagInt_Driver::fStatisticsVerboseLevel
private

Definition at line 234 of file G4MagIntegratorDriver.hh.

Referenced by G4MagInt_Driver(), and ~G4MagInt_Driver().

G4double G4MagInt_Driver::fSumH_lg
private

Definition at line 246 of file G4MagIntegratorDriver.hh.

Referenced by OneGoodStep(), and PrintStatisticsReport().

G4double G4MagInt_Driver::fSumH_sm
private

Definition at line 246 of file G4MagIntegratorDriver.hh.

Referenced by AccurateAdvance(), and PrintStatisticsReport().

G4int G4MagInt_Driver::fVerboseLevel
private
const G4double G4MagInt_Driver::max_stepping_decrease = 0.1
staticprivate

Definition at line 231 of file G4MagIntegratorDriver.hh.

Referenced by ComputeNewStepSize_WithinLimits().

const G4double G4MagInt_Driver::max_stepping_increase = 5.0
staticprivate
G4double G4MagInt_Driver::pgrow
private

Definition at line 226 of file G4MagIntegratorDriver.hh.

G4MagIntegratorStepper* G4MagInt_Driver::pIntStepper
private
G4double G4MagInt_Driver::pshrnk
private

Definition at line 225 of file G4MagIntegratorDriver.hh.

G4double G4MagInt_Driver::safety
private

Definition at line 224 of file G4MagIntegratorDriver.hh.


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