Ignore:
Timestamp:
Sep 10, 2008, 5:40:37 PM (17 years ago)
Author:
garnier
Message:

geant4.8.2 beta

Location:
trunk/source/geometry/magneticfield
Files:
85 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/geometry/magneticfield/History

    r831 r850  
    1 $Id: History,v 1.129.2.1 2008/04/24 12:43:57 gcosmo Exp $
     1$Id: History,v 1.130 2008/04/24 12:40:50 gcosmo Exp $
    22-------------------------------------------------------------------
    33
     
    1717     * Reverse chronological order (last date on top), please *
    1818     ----------------------------------------------------------
    19 
    20 April 24th, 2008   G.Cosmo - field-V09-00-04
    21 --------------------------
    22 - Tag for release 9.1.p02.
    2319
    2420April 24th, 2008   T.Nikitina - field-V09-01-01
  • trunk/source/geometry/magneticfield/include/G4CashKarpRKF45.hh

    r831 r850  
    2626//
    2727// $Id: G4CashKarpRKF45.hh,v 1.11 2008/01/11 15:23:54 japost Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4ChordFinder.hh

    r831 r850  
    2525//
    2626//
    27 // $Id: G4ChordFinder.hh,v 1.17 2006/06/29 18:21:02 gunter Exp $
    28 // GEANT4 tag $Name: $
     27// $Id: G4ChordFinder.hh,v 1.19 2008/07/15 14:02:06 japost Exp $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
     
    7272        // the chord criterion: that d_chord < delta_chord
    7373        // -> Returns Length of Step taken.
    74 
     74     
     75      G4FieldTrack ApproxCurvePointS(const  G4FieldTrack&  curveAPointVelocity,
     76                                      const  G4FieldTrack&  curveBPointVelocity,
     77                                      const  G4ThreeVector& currentEPoint,
     78                                      const  G4ThreeVector& currentFPoint,
     79                                      const  G4ThreeVector& PointG,
     80                                             G4bool first,G4double      epsStep);
     81 
    7582      G4FieldTrack ApproxCurvePointV(const  G4FieldTrack&  curveAPointVelocity,
    7683                                     const  G4FieldTrack&  curveBPointVelocity,
    7784                                     const  G4ThreeVector& currentEPoint,
    7885                                            G4double      epsStep);
     86
     87      inline G4double InvParabolic( const G4double xa, const G4double ya,
     88                                    const G4double xb, const G4double yb,
     89                             const G4double xc, const G4double yc );
    7990
    8091      inline G4double  GetDeltaChord() const;
     
    115126                        G4double& stepEstimate_Unconstrained ) ; 
    116127     
    117       virtual G4double FindNextChord( const  G4FieldTrack  yStart,
     128      virtual G4double FindNextChord( const  G4FieldTrack& yStart,
    118129                              G4double     stepMax,
    119130                              G4FieldTrack& yEnd,
  • trunk/source/geometry/magneticfield/include/G4ChordFinder.icc

    r831 r850  
    2525//
    2626//
    27 // $Id: G4ChordFinder.icc,v 1.12 2006/06/29 18:21:32 gunter Exp $
    28 // GEANT4 tag $Name: $
     27// $Id: G4ChordFinder.icc,v 1.13 2008/05/28 09:20:03 tnikitin Exp $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// G4ChordFinder inline implementations
     
    123123  // }
    124124}
     125// A  member that calculates the inverse parabolic through
     126// the three points (x,y) and returns the value x that, for the
     127// inverse parabolic, corresponds to y=0.
     128//
     129inline G4double G4ChordFinder::InvParabolic ( const G4double xa, const G4double ya,
     130                                    const G4double xb, const G4double yb,
     131                                    const G4double xc, const G4double yc )
     132{       const G4double R = yb/yc,
     133                       S = yb/ya,
     134                       T = ya/yc;
     135        const G4double Q = (T-1)*(R-1)*(S-1);
     136        if (fabs(Q) <DBL_MIN ) return  DBL_MAX;
     137       
     138        const G4double P = S*(T*(R-T)*(xc-xb) - (1-R)*(xb-xa));
     139        return xb + P/Q;
     140}
  • trunk/source/geometry/magneticfield/include/G4ChordFinderSaf.hh

    r831 r850  
    2525//
    2626// $Id: G4ChordFinderSaf.hh,v 1.3 2006/06/29 18:21:52 gunter Exp $
    27 // GEANT4 tag $Name: $
     27// GEANT4 tag $Name: HEAD $
    2828//
    2929//
  • trunk/source/geometry/magneticfield/include/G4ClassicalRK4.hh

    r831 r850  
    2626//
    2727// $Id: G4ClassicalRK4.hh,v 1.10 2006/06/29 18:21:55 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4DELPHIMagField.hh

    r831 r850  
    2626//
    2727// $Id: G4DELPHIMagField.hh,v 1.4 2006/06/29 18:21:57 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4ElectricField.hh

    r831 r850  
    2626//
    2727// $Id: G4ElectricField.hh,v 1.2 2006/06/29 18:21:59 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4ElectroMagneticField.hh

    r831 r850  
    2626//
    2727// $Id: G4ElectroMagneticField.hh,v 1.11 2006/06/29 18:22:01 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4EqEMFieldWithSpin.hh

    r831 r850  
    2626//
    2727// $Id: G4EqEMFieldWithSpin.hh,v 1.1 2007/08/30 23:34:01 gum Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4EqMagElectricField.hh

    r831 r850  
    2626//
    2727// $Id: G4EqMagElectricField.hh,v 1.9 2006/06/29 18:22:03 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4EquationOfMotion.hh

    r831 r850  
    2626//
    2727// $Id: G4EquationOfMotion.hh,v 1.10 2006/06/29 18:22:05 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4EquationOfMotion.icc

    r831 r850  
    2626//
    2727// $Id: G4EquationOfMotion.icc,v 1.9 2006/06/29 18:22:07 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4ErrorMag_UsualEqRhs.hh

    r831 r850  
    2626//
    2727// $Id: G4ErrorMag_UsualEqRhs.hh,v 1.1 2007/05/16 12:54:02 gcosmo Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4ExactHelixStepper.hh

    r831 r850  
    2525//
    2626// $Id: G4ExactHelixStepper.hh,v 1.5 2007/05/18 12:50:31 tnikitin Exp $
    27 // GEANT4 tag $Name: $
     27// GEANT4 tag $Name: HEAD $
    2828//
    2929//
  • trunk/source/geometry/magneticfield/include/G4ExplicitEuler.hh

    r831 r850  
    2626//
    2727// $Id: G4ExplicitEuler.hh,v 1.9 2006/06/29 18:22:11 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4Field.hh

    r831 r850  
    2626//
    2727// $Id: G4Field.hh,v 1.10 2006/06/29 18:22:13 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4FieldManager.hh

    r831 r850  
    2626//
    2727// $Id: G4FieldManager.hh,v 1.16 2006/06/29 18:22:15 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// 
  • trunk/source/geometry/magneticfield/include/G4FieldManager.icc

    r831 r850  
    2626//
    2727// $Id: G4FieldManager.icc,v 1.12 2006/06/29 18:22:18 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4FieldManagerStore.hh

    r831 r850  
    2626//
    2727// $Id: G4FieldManagerStore.hh,v 1.3 2008/01/17 09:39:08 gcosmo Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// class G4FieldManagerStore
  • trunk/source/geometry/magneticfield/include/G4FieldTrack.hh

    r831 r850  
    2626//
    2727// $Id: G4FieldTrack.hh,v 1.21 2006/11/13 18:24:35 gcosmo Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4FieldTrack.icc

    r831 r850  
    2626//
    2727// $Id: G4FieldTrack.icc,v 1.21 2006/11/13 18:24:35 gcosmo Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// -------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/include/G4HarmonicPolMagField.hh

    r831 r850  
    2626//
    2727// $Id: G4HarmonicPolMagField.hh,v 1.4 2006/06/29 18:22:24 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// class G4HarmonicPolMagField
  • trunk/source/geometry/magneticfield/include/G4HelixExplicitEuler.hh

    r831 r850  
    2626//
    2727// $Id: G4HelixExplicitEuler.hh,v 1.9 2007/08/21 08:52:00 tnikitin Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4HelixHeum.hh

    r831 r850  
    2626//
    2727// $Id: G4HelixHeum.hh,v 1.8 2006/06/29 18:22:36 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4HelixImplicitEuler.hh

    r831 r850  
    2626//
    2727// $Id: G4HelixImplicitEuler.hh,v 1.8 2006/06/29 18:22:38 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4HelixSimpleRunge.hh

    r831 r850  
    2626//
    2727// $Id: G4HelixSimpleRunge.hh,v 1.7 2006/06/29 18:22:41 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4ImplicitEuler.hh

    r831 r850  
    2626//
    2727// $Id: G4ImplicitEuler.hh,v 1.8 2006/06/29 18:22:44 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4LineCurrentMagField.hh

    r831 r850  
    2626//
    2727// $Id: G4LineCurrentMagField.hh,v 1.4 2006/06/29 18:22:46 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4LineSection.hh

    r831 r850  
    2626//
    2727// $Id: G4LineSection.hh,v 1.9 2006/06/29 18:22:48 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4MagErrorStepper.hh

    r831 r850  
    2626//
    2727// $Id: G4MagErrorStepper.hh,v 1.11 2006/06/29 18:22:50 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4MagErrorStepper.icc

    r831 r850  
    2626//
    2727// $Id: G4MagErrorStepper.icc,v 1.13 2006/06/29 18:22:52 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// --------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/include/G4MagHelicalStepper.hh

    r831 r850  
    2727//
    2828// $Id: G4MagHelicalStepper.hh,v 1.15 2007/08/21 08:48:28 tnikitin Exp $
    29 // GEANT4 tag $Name: $
     29// GEANT4 tag $Name: HEAD $
    3030//
    3131//
  • trunk/source/geometry/magneticfield/include/G4MagHelicalStepper.icc

    r831 r850  
    2626//
    2727// $Id: G4MagHelicalStepper.icc,v 1.13 2007/05/18 15:45:15 tnikitin Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// Linear Step in regions of no field
  • trunk/source/geometry/magneticfield/include/G4MagIntegratorDriver.hh

    r831 r850  
    2626//
    2727// $Id: G4MagIntegratorDriver.hh,v 1.20 2007/05/10 10:10:05 japost Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4MagIntegratorDriver.icc

    r831 r850  
    2626//
    2727// $Id: G4MagIntegratorDriver.icc,v 1.13 2007/05/10 10:10:48 japost Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// --------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/include/G4MagIntegratorStepper.hh

    r831 r850  
    2525//
    2626// $Id: G4MagIntegratorStepper.hh,v 1.12 2006/09/20 09:31:01 japost Exp $
    27 // GEANT4 tag $Name: $
     27// GEANT4 tag $Name: HEAD $
    2828//
    2929//
  • trunk/source/geometry/magneticfield/include/G4MagIntegratorStepper.icc

    r831 r850  
    2525//
    2626// $Id: G4MagIntegratorStepper.icc,v 1.10 2006/09/20 09:31:46 japost Exp $
    27 // GEANT4 tag $Name: $
     27// GEANT4 tag $Name: HEAD $
    2828//
    2929
  • trunk/source/geometry/magneticfield/include/G4Mag_EqRhs.hh

    r831 r850  
    2626//
    2727// $Id: G4Mag_EqRhs.hh,v 1.9 2006/06/29 18:23:07 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4Mag_SpinEqRhs.hh

    r831 r850  
    2626//
    2727// $Id: G4Mag_SpinEqRhs.hh,v 1.11 2006/06/29 18:23:09 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4Mag_UsualEqRhs.hh

    r831 r850  
    2626//
    2727// $Id: G4Mag_UsualEqRhs.hh,v 1.7 2006/06/29 18:23:12 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4MagneticField.hh

    r831 r850  
    2626//
    2727// $Id: G4MagneticField.hh,v 1.14 2006/06/29 18:23:14 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4QuadrupoleMagField.hh

    r831 r850  
    2626//
    2727// $Id: G4QuadrupoleMagField.hh,v 1.4 2006/06/29 18:23:16 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4RKG3_Stepper.hh

    r831 r850  
    2727//
    2828// $Id: G4RKG3_Stepper.hh,v 1.13 2007/05/18 12:44:02 tnikitin Exp $
    29 // GEANT4 tag $Name: $
     29// GEANT4 tag $Name: HEAD $
    3030//
    3131//
  • trunk/source/geometry/magneticfield/include/G4SimpleHeum.hh

    r831 r850  
    2626//
    2727// $Id: G4SimpleHeum.hh,v 1.8 2006/06/29 18:23:20 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4SimpleRunge.hh

    r831 r850  
    2626//
    2727// $Id: G4SimpleRunge.hh,v 1.8 2006/06/29 18:23:23 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4UniformElectricField.hh

    r831 r850  
    2626//
    2727// $Id: G4UniformElectricField.hh,v 1.9 2006/06/29 18:23:25 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/include/G4UniformMagField.hh

    r831 r850  
    2626//
    2727// $Id: G4UniformMagField.hh,v 1.9 2006/06/29 18:23:27 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/src/G4CashKarpRKF45.cc

    r831 r850  
    2626//
    2727// $Id: G4CashKarpRKF45.cc,v 1.15 2008/01/11 18:11:44 japost Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// The Cash-Karp Runge-Kutta-Fehlberg 4/5 method is an embedded fourth
  • trunk/source/geometry/magneticfield/src/G4ChordFinder.cc

    r831 r850  
    2525//
    2626//
    27 // $Id: G4ChordFinder.cc,v 1.47 2006/06/29 18:23:32 gunter Exp $
    28 // GEANT4 tag $Name: $
     27// $Id: G4ChordFinder.cc,v 1.49 2008/07/15 14:02:06 japost Exp $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
     
    185185  G4FieldTrack yEnd( yCurrent);
    186186  G4double  startCurveLen= yCurrent.GetCurveLength();
    187 
    188187  G4double nextStep;
    189188  //            *************
     
    192191                             );
    193192  //            *************
     193  //  G4cout<<"Exit Find Next Chord Err= "<<dyErr<<" eps=  "<<epsStep<<"stepPos=  "<<stepPossible<<G4endl;
    194194  G4bool good_advance;
     195
    195196  if ( dyErr < epsStep * stepPossible )
    196   {
     197 
     198      {   //G4cout<<"err comparison = "<<dyErr<<" eps=  "<<epsStep<<G4endl;
    197199     // Accept this accuracy.
    198200     yCurrent = yEnd;
     
    200202  }
    201203  else
    202   {
     204  { 
     205    // G4cout<<"Entering Accurate Advance"<<G4endl;
    203206     // Advance more accurately to "end of chord"
    204207     //                           ***************
     
    212215
    213216#ifdef G4DEBUG_FIELD
    214   G4cout << "Exiting FindNextChord Limited with:" << G4endl
    215          << "   yCurrent: " << yCurrent<< G4endl;
     217  //G4cout << "Exiting FindNextChord Limited with:" << G4endl
     218  //       << "   yCurrent: " << yCurrent<< G4endl;
    216219#endif
    217220
     
    224227
    225228G4double
    226 G4ChordFinder::FindNextChord( const  G4FieldTrack  yStart,
     229G4ChordFinder::FindNextChord( const  G4FieldTrack& yStart,
    227230                                     G4double     stepMax,
    228231                                     G4FieldTrack&   yEnd, // Endpoint
     
    235238  // Returns Length of Step taken
    236239{
     240  //G4cout<<"Inter Find Next Chord with step="<<stepMax<<G4endl; 
    237241  // G4int       stepRKnumber=0;
    238242  G4FieldTrack yCurrent=  yStart; 
     
    248252
    249253  fIntgrDriver-> GetDerivatives( yCurrent, dydx )  ;
    250 
     254  //for (G4int i=0;i<G4FieldTrack::ncompSVEC;i++){
     255  //  dydx[i]=0.;
     256  //}
    251257  G4int     noTrials=0;
    252258  const G4double safetyFactor= fFirstFraction; //  0.975 or 0.99 ? was 0.999
     
    260266     G4double stepForChord; 
    261267     yCurrent = yStart;    // Always start from initial point
    262 
     268   
    263269     //            ************
    264270     fIntgrDriver->QuickAdvance( yCurrent, dydx, stepTrial,
     
    266272     //            ************
    267273
    268      // We check whether the criterion is met here.
    269      validEndPoint = AcceptableMissDist(dChordStep);
    270                       //  && (dyErrPos < eps) ;
     274     // G4cout<<"AfterQuickAdv step="<<stepTrial<<"  dC="<<dChordStep<<" yErr="<<dyErrPos<<G4endl;
     275     
     276      //  We check whether the criterion is met here.
     277     validEndPoint = AcceptableMissDist(dChordStep);
     278     // if(validEndPoint){G4cout<<"validEndPoint"<<fDeltaChord<<G4endl;}
     279     // else{G4cout<<"No__validEndPoint"<<G4endl;}
     280
     281
     282     //&& (dyErrPos < eps) ;
     283     //   validEndPoint = AcceptableMissDist(dChordStep) && (dyErrPos < epsStep) ;
    271284
    272285     lastStepLength = stepTrial;
     
    322335           << " StepForGoodChord=" << std::setw(10) << stepTrial << G4endl;
    323336#endif
    324 
     337  //G4cout << "ChordF/FindNextChord:  NoTrials= " << noTrials
     338  //         << " StepForGoodChord=" << std::setw(10) << stepTrial << G4endl;
    325339  yEnd=  yCurrent; 
    326340  return stepTrial;
     
    419433}
    420434
    421 //
    422 //  Given a starting curve point A (CurveA_PointVelocity),  a later
    423 //  curve point B (CurveB_PointVelocity) and a point E which is (generally)
    424 //  not on the curve, find and return a point F which is on the curve and
    425 //  which is close to E. While advancing towards F utilise eps_step
     435//  ApproxCurvePointS is 2nd implementation of ApproxCurvePoint.
     436//  Use Brent Algorithm(or InvParabolic) when it possible.
     437//  Given a starting curve point A (CurveA_PointVelocity), 
     438//  curve point B (CurveB_PointVelocity), a point E which is (generally)
     439//  not on the curve  and  a point F which is on the curve(first approximation)
     440//  From this information find new point S on the curve closer to point E.
     441//  While advancing towards S utilise eps_step
    426442//  as a measure of the relative accuracy of each Step.
    427  
     443G4FieldTrack
     444G4ChordFinder::ApproxCurvePointS( const G4FieldTrack& CurveA_PointVelocity,
     445                                  const G4FieldTrack& CurveB_PointVelocity,
     446                                  const G4ThreeVector& CurrentE_Point,
     447                                  const G4ThreeVector& CurrentF_Point,
     448                                  const G4ThreeVector& PointG,
     449                                       G4bool first, G4double eps_step)
     450{
     451
     452 
     453  G4FieldTrack EndPoint( CurveA_PointVelocity);
     454  G4ThreeVector Point_A=CurveA_PointVelocity.GetPosition();
     455  G4ThreeVector Point_B=CurveB_PointVelocity.GetPosition();
     456  G4double xa,xb,xc,ya,yb,yc;
     457 
     458//InverseParabolic
     459//AF Intersects (First Part of Curve)
     460  if(first){
     461      xa=0.;
     462      ya=(PointG-Point_A).mag();
     463      xb=(Point_A-CurrentF_Point).mag();
     464      yb=-(PointG-CurrentF_Point).mag();
     465      xc=(Point_A-Point_B).mag();
     466      yc=-(CurrentE_Point-Point_B).mag();
     467  }   
     468  else{
     469     xa=0.;
     470     ya=(Point_A-PointG).mag();
     471     xb=(Point_B-Point_A).mag();
     472     yb=-(PointG-Point_B).mag();
     473     xc=-(Point_A-CurrentF_Point).mag();
     474     yc=-(Point_A-CurrentE_Point).mag();
     475   
     476  }
     477  const G4double tolerance= 1.e-12;
     478  if(ya<=tolerance||std::abs(yc)<=tolerance){
     479    ; //What to do for the moment return the same point as in begin
     480     //Then PropagatorInField will take care
     481   }
     482   else{
     483         
     484      G4double test_step  =InvParabolic(xa,ya,xb,yb,xc,yc);
     485      G4double curve=std::abs(EndPoint.GetCurveLength()-CurveB_PointVelocity.GetCurveLength());
     486      G4double dist= (EndPoint.GetPosition()-Point_B).mag();
     487      if(test_step<=0) { test_step=0.1*xb;}
     488      if(test_step>=xb){ test_step=0.5*xb;}
     489       
     490
     491      if(curve*(1.+eps_step)<dist){
     492        test_step=0.5*dist;
     493       }
     494
     495       G4bool goodAdvance;
     496       goodAdvance=
     497             fIntgrDriver->AccurateAdvance(EndPoint,test_step, eps_step);
     498            //            ***************
     499     
     500       #ifdef G4DEBUG_FIELD
     501        G4cout<<"G4ChordFinder:: test-step ShF="<<test_step<<"  EndPoint="<<EndPoint<<G4endl;
     502      //    Test Track
     503       G4FieldTrack TestTrack( CurveA_PointVelocity);
     504       TestTrack = ApproxCurvePointV( CurveA_PointVelocity,
     505                                                  CurveB_PointVelocity,
     506                                                  CurrentE_Point,
     507                                                  eps_step );
     508       G4cout.precision(14);
     509       G4cout<<"G4ChordFinder:: BrentApprox="<<EndPoint<<G4endl;
     510       G4cout<<"G4ChordFinder::LinearApprox="<<TestTrack<<G4endl;
     511       #endif
     512  }
     513return EndPoint;
     514
     515
    428516G4FieldTrack
    429517G4ChordFinder::ApproxCurvePointV( const G4FieldTrack& CurveA_PointVelocity,
     
    435523  //    if r=|AE|/|AB|, and s=true path lenght (AB)
    436524  //    return the point that is r*s along the curve!
    437 
    438   G4FieldTrack    Current_PointVelocity= CurveA_PointVelocity;
     525  /////////////////////////////
     526  //
     527  //2st implementation : Inverse Parabolic Extrapolation by D.C.Williams
     528  //
     529  //    Uses InvParabolic (xa,ya,xb,yb,xc,yc)
     530
     531  G4FieldTrack    Current_PointVelocity = CurveA_PointVelocity;
    439532
    440533  G4ThreeVector  CurveA_Point= CurveA_PointVelocity.GetPosition();
     
    520613  // If there was a memory of the step_length actually require at the start
    521614  // of the integration Step, this could be re-used ...
    522 
     615   G4cout.precision(14);
     616     
     617   //     G4cout<<"G4ChordFinder::LinearApprox="<<Current_PointVelocity<<G4endl;
    523618  return Current_PointVelocity;
    524619}
  • trunk/source/geometry/magneticfield/src/G4ClassicalRK4.cc

    r831 r850  
    2626//
    2727// $Id: G4ClassicalRK4.cc,v 1.12 2006/06/29 18:23:37 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// -------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/src/G4DELPHIMagField.cc

    r831 r850  
    2626//
    2727// $Id: G4DELPHIMagField.cc,v 1.6 2006/06/29 18:23:39 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929// -------------------------------------------------------------------
    3030
  • trunk/source/geometry/magneticfield/src/G4ElectricField.cc

    r831 r850  
    2626//
    2727// $Id: G4ElectricField.cc,v 1.2 2006/06/29 18:23:42 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// --------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/src/G4ElectroMagneticField.cc

    r831 r850  
    2626//
    2727// $Id: G4ElectroMagneticField.cc,v 1.3 2006/06/29 18:23:44 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// --------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/src/G4EqEMFieldWithSpin.cc

    r831 r850  
    2525//
    2626//
    27 // $Id: G4EqEMFieldWithSpin.cc,v 1.1.2.1 2008/04/24 12:43:57 gcosmo Exp $
    28 // GEANT4 tag $Name: geant4-09-01-patch-02 $
     27// $Id: G4EqEMFieldWithSpin.cc,v 1.2 2008/04/24 12:33:08 tnikitin Exp $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/src/G4EqMagElectricField.cc

    r831 r850  
    2525//
    2626//
    27 // $Id: G4EqMagElectricField.cc,v 1.13.4.1 2008/04/24 12:43:57 gcosmo Exp $
    28 // GEANT4 tag $Name: geant4-09-01-patch-02 $
     27// $Id: G4EqMagElectricField.cc,v 1.14 2008/04/24 12:33:35 tnikitin Exp $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/src/G4EquationOfMotion.cc

    r831 r850  
    2626//
    2727// $Id: G4EquationOfMotion.cc,v 1.9 2006/06/29 18:23:48 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// -------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/src/G4ErrorMag_UsualEqRhs.cc

    r831 r850  
    2626//
    2727// $Id: G4ErrorMag_UsualEqRhs.cc,v 1.1 2007/05/16 12:54:02 gcosmo Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/src/G4ExactHelixStepper.cc

    r831 r850  
    2626//
    2727// $Id: G4ExactHelixStepper.cc,v 1.8 2007/12/10 16:29:47 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//  Helix a-la-Explicity Euler: x_1 = x_0 + helix(h)
  • trunk/source/geometry/magneticfield/src/G4ExplicitEuler.cc

    r831 r850  
    2626//
    2727// $Id: G4ExplicitEuler.cc,v 1.8 2006/06/29 18:23:53 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/src/G4FieldManager.cc

    r831 r850  
    2626//
    2727// $Id: G4FieldManager.cc,v 1.15 2007/12/07 15:34:10 japost Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// -------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/src/G4FieldManagerStore.cc

    r831 r850  
    2626//
    2727// $Id: G4FieldManagerStore.cc,v 1.4 2008/01/17 10:56:23 gcosmo Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// G4FieldManagerStore
  • trunk/source/geometry/magneticfield/src/G4FieldTrack.cc

    r831 r850  
    2626//
    2727// $Id: G4FieldTrack.cc,v 1.14 2007/10/03 15:34:42 japost Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// -------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/src/G4HarmonicPolMagField.cc

    r831 r850  
    2626//
    2727// $Id: G4HarmonicPolMagField.cc,v 1.6 2006/06/29 18:24:00 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// -------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/src/G4HelixExplicitEuler.cc

    r831 r850  
    2626//
    2727// $Id: G4HelixExplicitEuler.cc,v 1.8 2007/12/10 16:29:49 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/src/G4HelixHeum.cc

    r831 r850  
    2626//
    2727// $Id: G4HelixHeum.cc,v 1.6 2006/06/29 18:24:04 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/src/G4HelixImplicitEuler.cc

    r831 r850  
    2626//
    2727// $Id: G4HelixImplicitEuler.cc,v 1.6 2006/06/29 18:24:06 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/src/G4HelixSimpleRunge.cc

    r831 r850  
    2626//
    2727// $Id: G4HelixSimpleRunge.cc,v 1.7 2006/06/29 18:24:08 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/src/G4ImplicitEuler.cc

    r831 r850  
    2626//
    2727// $Id: G4ImplicitEuler.cc,v 1.9 2006/06/29 18:24:11 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/src/G4LineCurrentMagField.cc

    r831 r850  
    2525//
    2626// $Id: G4LineCurrentMagField.cc,v 1.6 2006/06/29 18:24:13 gunter Exp $
    27 // GEANT4 tag $Name: $
     27// GEANT4 tag $Name: HEAD $
    2828// -------------------------------------------------------------------
    2929
  • trunk/source/geometry/magneticfield/src/G4LineSection.cc

    r831 r850  
    2626//
    2727// $Id: G4LineSection.cc,v 1.10 2006/06/29 18:24:16 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// --------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/src/G4MagErrorStepper.cc

    r831 r850  
    2626//
    2727// $Id: G4MagErrorStepper.cc,v 1.13 2006/06/29 18:24:18 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// --------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/src/G4MagHelicalStepper.cc

    r831 r850  
    2626//
    2727// $Id: G4MagHelicalStepper.cc,v 1.23 2007/09/05 12:20:17 gcosmo Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// --------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/src/G4MagIntegratorDriver.cc

    r831 r850  
    2626//
    2727// $Id: G4MagIntegratorDriver.cc,v 1.49 2007/08/17 12:30:33 gcosmo Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/src/G4MagIntegratorStepper.cc

    r831 r850  
    2626//
    2727// $Id: G4MagIntegratorStepper.cc,v 1.11 2006/06/29 18:24:34 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// --------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/src/G4Mag_EqRhs.cc

    r831 r850  
    2626//
    2727// $Id: G4Mag_EqRhs.cc,v 1.11 2006/06/29 18:24:36 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//  This is the standard right-hand side for equation of motion 
  • trunk/source/geometry/magneticfield/src/G4Mag_SpinEqRhs.cc

    r831 r850  
    2626//
    2727// $Id: G4Mag_SpinEqRhs.cc,v 1.12 2006/06/29 18:24:39 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// This is the standard right-hand side for equation of motion.
  • trunk/source/geometry/magneticfield/src/G4Mag_UsualEqRhs.cc

    r831 r850  
    2626//
    2727// $Id: G4Mag_UsualEqRhs.cc,v 1.12 2006/06/29 18:24:42 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/src/G4MagneticField.cc

    r831 r850  
    2626//
    2727// $Id: G4MagneticField.cc,v 1.3 2006/06/29 18:24:44 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// --------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/src/G4QuadrupoleMagField.cc

    r831 r850  
    2626//
    2727// $Id: G4QuadrupoleMagField.cc,v 1.4 2006/06/29 18:24:46 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// -------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/src/G4RKG3_Stepper.cc

    r831 r850  
    2626//
    2727// $Id: G4RKG3_Stepper.cc,v 1.15 2007/08/21 10:17:41 tnikitin Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030// -------------------------------------------------------------------
  • trunk/source/geometry/magneticfield/src/G4SimpleHeum.cc

    r831 r850  
    2626//
    2727// $Id: G4SimpleHeum.cc,v 1.8 2006/06/29 18:24:51 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//  Simple Heum:
  • trunk/source/geometry/magneticfield/src/G4SimpleRunge.cc

    r831 r850  
    2626//
    2727// $Id: G4SimpleRunge.cc,v 1.10 2006/06/29 18:24:53 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//  Simple Runge:
  • trunk/source/geometry/magneticfield/src/G4UniformElectricField.cc

    r831 r850  
    2626//
    2727// $Id: G4UniformElectricField.cc,v 1.12 2006/06/29 18:24:56 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
  • trunk/source/geometry/magneticfield/src/G4UniformMagField.cc

    r831 r850  
    2626//
    2727// $Id: G4UniformMagField.cc,v 1.11 2006/06/29 18:24:58 gunter Exp $
    28 // GEANT4 tag $Name: $
     28// GEANT4 tag $Name: HEAD $
    2929//
    3030//
Note: See TracChangeset for help on using the changeset viewer.