$Id: History,v 1.33 2001/04/04 10:43:11 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= Geant4 - an Object-Oriented Toolkit for Simulation in HEP ========================================================= Category History file --------------------- This file should be used by G4 developers and category coordinators to briefly summarize all major modifications introduced in the code and keep track of all category-tags. It DOES NOT substitute the CVS log-message one should put at every committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- Apr 04th, 2001 G. Cosmo - field-V03-00-05 ------------------------ - G4FieldTrack.icc: fixed pedantic warnings on Linux-g++. Mar 23rd, 2001 J. Apostolakis - field-V03-00-04 ------------------------------ - Electric Field unit test now works: test runs until completion. Test outputs saved (on Linux). - Fixed src/G4UniformElectricField.cc to set correct field components (compatible with Equation of Motion G4EqMagElectricField ) - Tidied G4FieldTrack * deleted obsolete methods Set/Get MomentumModulus() and its data member. * in constructor to set the value of the spin to (0.0, 0.0, 0.0) if pSpin is null. (It was undefined.) Mar 23rd, 2001 J. Apostolakis - field-V03-00-03 ------------------------------ - Fixed (hacked) CashKarp to work using Auxiliary Stepper. - Modified G4MagIntegratorStepper to use pointer to G4EquationOfMotion instead of G4Mag_EqRhs - Design iteration appears neccessary Mar 23rd, 2001 J. Apostolakis - field-V03-00-02 ------------------------------ - Fixed G4MagHelicalStepper::AdvanceHelix for momentum, allowing the possibility of (correct) use of all Helical Steppers. - test/testProElectroMagField.cc updated for momentum. (Not yet updated: Spin tests) Mar 19th, 2001 J. Apostolakis - field-V03-00-01 ------------------------------ - Tagging the modification of several classes to integrate in momentum*c_light instead of velocity. Reason for change: Velocity integration can result in superluminar velocities, due to arithmetic inaccuracies. Classes modified: G4FieldTrack, (Changed components 3,4,5 of SixVector to Momentum, G4Mag_EqRhs, G4Mag_UsualEqRhs, G4EqMagElectricField Feb 20th, 2001 J. Apostolakis - Modified several classes to integrate in momentum instead of velocity. G4FieldTrack: Changed components 3,4,5 of SixVector to Momentum, Modified constructor Added energy calculation to "LoadFromArray" method GetEnergy method is now implemented. Deleted obsolete (old) method names for Curve and Position. New have "Get" G4ChordFinder Renamed old-method names of Field Track to new ones. Jan 29th, 2001 G. Cosmo - field-V03-00-00 ------------------------- - Minor fix to G4MagneticField.hh: added explicit call to G4Field() in copy constructor. Fixes report #205. Nov 20th, 2000 G. Cosmo - field-V02-00-02 - Fixes to remove warnings from "-Wall -ansi -pedantic" g++ compiler options: o commented out variables declared and not used. o fixed declaration of variables used before being initialised. o fixed order of initialisation of member data in constructors. o fixed usage of unsigned-int (size_t) for array indeces. Nov 9th, 2000 G. Cosmo - field-V02-00-01 - G4FieldManager: added check on existence of allocated fChordFinder in CreateChordFinder(G4MagneticField*) method. Nov 1st, 2000 G. Cosmo - field-V02-00-00 - QA code revision and cleanup (+fixes from CodeWizard filtering): o Added (private) declarations of copy constructor and assignment operator where needed. o Added "const" qualifier to accessor methods, wherever needed. o Added equality check on operator= where needed. o Made destructor "virtual" for classes having virtual methods, wherever missing. o Changed virtual functions to non-inline wherever's the case. o Changed return value to be "const" pointer to functions: - G4EquationOfMotion::GetFieldObj() - G4FieldManager::GetDetectorField() - G4MagIntegratorDriver::GetStepper() o Fixed and corrected signature to G4MagIntegratorDriver::SetHmin(). o Added "inline" qualifier to methods' declarations. o General cosmetics Jun 2nd, 2000 J. Apostolakis - G4FieldManager[.hh.icc] o Added DeltaIntersection and DeltaOneStep to FieldManager: added Get/Set methods and SetAccuraciesWithDeltaOneStep(). May 11th, 2000 J. Apostolakis - field-V01-01-02 - G4ChordFinder[.hh.cc] o Modified method for finding new trial step. New method assumes a quadratic relationship between step-length and d_chord: d_chord proportional to step-lenght ^ 2 o Added two small refinement in order to avoid unneccesary extra step due to small numerical inaccuracies in estimation: FindNextChord to first step use (1-0.001) * last-step-estimate New Step: to subsequent step use trial_step = 0.98 * estimate May 10th, 2000 G. Cosmo - G4MagneticField.hh: minor fix to dummy implementation of assignment operator. May 9th, 2000 J. Apostolakis - field-V01-01-01 - G4MagErrorStepper: Modified DistChord to check whether the chord endpoint are the same point. - G4RKG3_Stepper: Deleted error message from StepNoErr, as it is used in Stepper. - G4MagIntegratorDriver: Changed the condition for the debug output (~cosmetic) April 27th, 2000 G. Cosmo - Reorganised comments for the Software Reference Manual. - Moved inlined definition to .icc files, where needed. Created: G4ChordFinder.icc and G4FieldManager.icc. April 13th, 2000 J. Apostolakis - field-V01-01-00 - Modified signature to function DumbStepper() in classes: G4HelixExplicitEuler, G4HelixHeum, G4HelixImplicitEuler, G4HelixSimpleRunge and G4MagHelicalStepper. - Modified signature and implementation of function MagFieldEvaluate() in G4MagHelicalStepper, to use Field (as ThreeVector) in place of dydx. - Made Richardson extrapolation optional (it is unclear if it offers benefit) in G4MagHelicalStepper. - Updated unit test testPropagateMagField and reference output. - G4LineSection: fixes to prevent divisions by 0. and sqrt(<0) (V.Grichine). January 19th, 2000 G. Cosmo - field-V01-00-00 Syncronized versioning of files with HEAD after ISO-C++ migration (essentially CVS header changes). December 7th, 1999 J. Apostolakis - field-V00-01-01a For negative or very small curve lengths (h) we suppress writing an error (about the distance of endpoints being further than the curve length), as it is meaningless. November 23rd, 1999 J. Apostolakis - field-V00-01-01 Tagged this sub-category's state in geometry-V00-01-01 July 6th, 1999 J. Apostolakis - field-01-00-07 These fixes and those in field-01-00-06 and field-01-00-06a all come from the need to cope with the imprecision of the integration, and its interaction with paths that are rather straight. G4MagIntegrationDriver: i) AccurateAdvance now that the chord distance is smaller than the curve len- gth (times 1+epsilon). ii) OneGoodStep and QuickAdvance considers the error of the velocity as well as the error of the position - and ensure that both relative errors are within the "eps" maximum given. G4ChordFinder: Having found that the curve_length vs ABdist disrepancy has its basis in the imprecision of the integration: i) Modified the exception in this case to happen only for very large relative disrepancies ( 10 * eps ). ii) Undertaken a default corrective action in all other cases Note that this disrepancy only happens for very straight sections of track - ie step lengths much smaller than the curvature of the track. July 1st, 1999 J. Apostolakis - field-01-00-06a In order to cope with the anomalous condition created by candidate fix in G4PropagatorInField, we ensure that the fraction_AE is always between 0 and 1.0. (giving it a default value of 0.5 whenever it is wrong). ( in G4ChordFinder::ApproxCurvePointV ) June 29th, 1999 J. Apostolakis - field-01-00-06 I re-instated a check on whether the input distance along the curve between the two input curve points is truly greater than their linear distance. ( in G4ChordFinder::ApproxCurvePointV ) The condition that prints out a warning message has been altered to take into account the case of a very small final interval. ( in G4MagInt_Driver::AccurateAdvance ) June ??th, 1999 J. Apostolakis - field-01-00-05 The condition that prints out a warning message was changed to delete an incorrect comparison. ( in G4MagInt_Driver::AccurateAdvance ) April 19th, 1999 J. Apostolakis - field-01-00-04 G4MagErrorStepper: Cosmetic changes to name of data members March 4th, 1999 J. Apostolakis - field-01-00-03 Corrected delete statement of arrays to use 'delete[]' instead of simple delete in destructors of 2 steppers (G4CashKarpRKF45, G4SimpleHeum) February 17th, 1999 J. Apostolakis - field-01-00-02 Moved G4PropagatorInField files to geometry/volumes. Updated GNUmakefile not to depend on geometry/volumes anymore. -> the known circular dependency is removed February 12th, 1999 J. Apostolakis - field-spin1-works1 (act Feb17) A tag that contains the first version that worked with spin (in Peter G.'s directory). G4PropagateInSpin is still in this version. A small change in a branch of the header file was needed. February 10th, 1999 J. Apostolakis All the following changes are needed for energy integration also: G4ChordFinder now passes to the constructed driver the number of variables. Because of the need for the stepper to know about it in its Abstract interface -> Moved theNumberOfVariables from derived class G4MagErrorStepper to base class G4MagIntegratorStepper As a consequense the classes that derived from G4MagIntegratorStepper directly were changed: G4CashKarpRKF45, G4MagHelicalStepper, February 9th, 1999 J. Apostolakis Equation of Motion: G4MagEqRhs.hh Made SetChargeMomentumMass virtual, so that G4Mag_SpinEqRhs can initialise its constants too. February 9th, 1999 P. Gumplinger Added Equation of Motion for Spin in Magnetic Field. February 17th, 1999 J. Apostolakis - field-01-00-01 ---> date is correct, made sure that tag does not include above fixes! Moved G4PropagatorInField files to geometry/volumes. Updated GNUmakefile not to depend on geometry/volumes anymore. -> the known circular dependency is removed --------------------------------------------------------------------------- ------ Geant 4 Production Release ------------ -------------------------------------------------------------------------- Nov 19th, 1998 J. Apostolakis - field-00-04-01head ===> R+D version only G4PropagatorInField files modified: - to store the last safety computed and its origin. - to give them to a requester ------------------------------------------------------------------ Nov 19th, 1998 J. Apostolakis - field-00-03-03b Subtle fix to interface of G4UniformMagField::GetFieldValue ( that tripped Visual C++ ) G4PropagatorInField: added printing method for verboseness. Nov 19th, 1998 J. Apostolakis - field-00-03-03a Steppers: Fixed instance variables construction (SimpleRunge) and clash of names in CashKarp::StepWithEstimate Added post-const to all Field classes for void GetFieldValue(const G4double yTrack[] , G4double B[] ) const ; Added SetFieldValue methods to UniformMagField Added GetConstantFieldValue() methods to Uniform Mag & Electric Fields Nov 19th, 1998 J. Apostolakis - field-00-03-03 Fixes to Propagate and Steppers Nov 19th, 1998 J. Apostolakis - field-00-03-02 Minor corrections (???) Nov 19th, 1998 J. Apostolakis - field-00-03-02 Major development to allow Electric Field June 17th, 1998 J. Apostolakis - magfield-06-03 Modified Files: include/G4PropagatorInField.hh src/G4PropagatorInField.cc test/testPropagateInField.cc ---------------------------------------------------------------------- 1) Added an assertion after each call to LocateGlobalPointAndSetup. It checks that the located volume is equal to the current volume. If this check fails, the Propagator does not know how to continue. 2) Added an argument to ComputeStep method of G4PropagatorInField. The new volume argument is used to check the current volume during the step. 3) When G4Navigator's ComputeStep returned stepLength==stepRequested, this used to be treated as a failure to intersect. This is incorrect. stepLength==stepRequested is an intersection, so I am now treating it as such in each comparison (of 3). Ignoring it causes problems, including volume being skipped. --> but treating it as an intersection used to cause problems too ?? May 7th, 1998 J. Apostolakis - magfield-06-02-helix01 - Tag includes new version of G4ChordFinder (not used by W.Wander). May 7th, 1998 W. Wander (recorded/commited by J. Apostolakis) - New "helical" RK steppers that move in helical segments, not linear. * Several changes to add steppers Modified Files: G4MagErrorStepper.hh G4MagErrorStepper.cc added Helical stepping methods to this general ABC. G4MagIntegratorStepper.hh made RightHandSide virtual (this will be reversed very soon) testPropagateMagField.cc Test of Helical stepping functionality added. Added Files for new Helical RK steppers, deriving from G4MagErrorStepper: G4HelixExplicitEuler.cc ( and .hh ) G4HelixHeum.cc G4HelixImplicitEuler.cc G4HelixSimpleRunge.cc Added File for implementation: G4MagErrorStepper.icc May 7th, 1998 J. Apostolakis - magfield-06-01 - added small changes to * G4ChordFinder: methods to get/set IntegratorDriver * G4MagIntegratorDriver: made OneGoodStep method public - created the file.