source: trunk/source/geometry/magneticfield/History @ 1300

Last change on this file since 1300 was 1231, checked in by garnier, 14 years ago

update from CVS

File size: 44.6 KB
Line 
1$Id: History,v 1.147 2009/11/12 18:45:02 japost Exp $
2-------------------------------------------------------------------
3
4     =========================================================
5     Geant4 - an Object-Oriented Toolkit for Simulation in HEP
6     =========================================================
7
8                      Category History file
9                      ---------------------
10This file should be used by G4 developers and category coordinators
11to briefly summarize all major modifications introduced in the code
12and keep track of all category-tags.
13It DOES NOT substitute the  CVS log-message one should put at every
14committal in the CVS repository !
15
16     ----------------------------------------------------------
17     * Reverse chronological order (last date on top), please *
18     ----------------------------------------------------------
19
20Nov 12th,  2009 J.Apostolakis - field-V09-02-09
21-----------------------------
22- G4MagIntegratorDriver:  Activate Peter Gumplinger's check on integration
23                          error for spin.
24
25Nov 12th,  2009 J.Apostolakis - field-V09-02-08
26-----------------------------  (fix only)
27- G4Nystrom:  Corrected interface method getField: array now has explicit dimension[4]
28                (Problem found by gcc 4.3 - it checked indices used in inline method! )
29
30Nov 6th,  2009 P.Gumplinger - field-V09-02-07
31---------------------------
32- bug fix in G4EqEMFieldWithSpin and G4EqEMFieldWithEDM
33  thanks to Hiromi Iinuma (KEK) see:
34  http://hypernews.slac.stanford.edu/HyperNews/geant4/get/emfields/161.html
35
36Nov 5th,  2009 J.Apostolakis - field-V09-02-06
37----------------------------
38- G4MagIntegratorDriver.cc : Enabled call to ComputeRightHandSide
39- G4NystromRK4.cc          : Disabled auxiliary code in Stepper (needed if
40                              ComputeRightHandSide is not called.)
41
42Nov 5th,  2009 J.Apostolakis - field-V09-02-05
43----------------------------
44- Added new virtual method CalculateRightHandSide to G4MagIntegratorStepper for use
45      in caching momentum (and field value) by G4NystromRK4
46      Default implementation in G4MagIntegratorStepper calls RightHandSide inline method.
47- G4Nystrom:  New Set/Get method for cache distance.
48              Changed private data members in G4NystromRK4.
49- G4MagIntegratorDriver:  alternative call to ComputeRightHandSide is not used (in comment)
50              As a result G4NystromRK4 operates without reusing
51
52Nov 5th,  2009 J.Apostolakis - field-V09-02-04
53----------------------------
54- G4CachedMagneticField: New Simple class to cache value of Magnetic Field.
55     Speeds up code when calculation of field value is complex.
56- G4NystromRK4 :         New Stepper with Nystrom for magnetic field
57     with analytic estimation of integration error. 
58     Greatly reduces number of field value per step.
59- Revised testPropagateMagField to use Cached Quadrupole field,
60     and to cover G4NystromRK4 and G4ConstRK4.
61
62Nov 4th,  2009 P.Gumplinger - field-V09-02-03
63---------------------------
64- (minor change) remove comment from G4EqEMFieldWithSpin.cc
65  add G4EqEMFieldWithEDM class: this is the RHS of EofM in a combined
66  electric and magnetic field, with spin tracking for both MDM and EDM terms.
67  Thanks to Kevin Lynch, Phys. Dept. at Boston University.
68
69May 18th, 2009 T.Nikitina - field-V09-02-02
70-------------------------
71- Enhanced algorithm G4ChordFinder::ApproxCurvePointS() in order to speedup
72  BrentLocator.
73
74March 25th, 2009 G.Cosmo - field-V09-02-01
75------------------------
76- Some code cleanup and formatting...
77
78March 6th, 2009 P.Gumplinger - field-V09-02-00
79----------------------------
80- Added 3rd term of BMT equation (Spin x Beta x Efield) to G4EqEMFieldWithSpin,
81  addresses emfields forum posting #155 (bug report). Thanks to Kevin Lynch,
82  Phys. Dept. at Boston University.
83- Moved renormalization of spin from G4EqEMFieldWithSpin and G4Mag_SpinEqRhs to
84  G4ClassicalRK4 and G4SimpleHeum.
85- Added Spin propagation errors to the criteria for 'OneGoodStep' in
86  G4MagIntegratorDriver but actually don't add it (yet) to the decision logic.
87
88November, 19th, 2008  P.Gumplinger - field-V09-01-05
89----------------------------------
90- Renormalized the spin to 1 in G4EqEMFieldWithSpin and G4Mag_SpinEqRhs.
91
92November, 7th, 2008   P.Gumplinger - field-V09-01-04
93----------------------------------
94- Added SetAnomaly() and GetAnomaly() accessors to G4EqEMFieldWithSpin.
95
96October, 28th, 2008   T.Nikitina - field-V09-01-03
97--------------------------------
98- Added 'ApproxCurveV' to method G4ChordFinder::ApproxCurvePointS() in
99  order to better calculate the curve length.
100- Some code cleanup.
101
102September, 18th, 2008   T.Nikitina
103----------------------------------
104- Added new stepper class G4ConstRK4, performing integration of one step
105  with error calculation in constant magnetic field; implementation derived
106  from G4ClassicalRK4.
107
108July, 15th, 2008   J.Apostolakis - field-V09-01-02
109--------------------------------
110- Revised signature of G4ChordFinder::FinderNextChord(), making 'FieldTrack'
111  argument passed a reference.
112
113May, 28th, 2008   T.Nikitina
114----------------------------
115- G4ChordFinder: added new method ApproxCurvePointS() using Brent second order
116  location mechanism.
117
118April 24th, 2008   T.Nikitina - field-V09-01-01
119-----------------------------
120- Fix 'unused' non-initialized values of dydx in G4EqMagElectricField
121  and G4EqEMFieldWithSpin.
122
123January 17th, 2008   G.Cosmo - field-V09-01-00
124----------------------------
125- G4CashKarpRKF45: deleted un-needed duplicate (and unused) instance variable
126 'fNumberOfVariables', already defined in G4MagIntegratorStepper. (J.Ap.)
127- Some code cleanup.
128
129December 7th, 2007   J.Apostolakis & T.Nikitina - field-V09-00-03
130-----------------------------------------------
131- New class G4FieldManagerStore. It enables resetting of all chord
132  finders' state. Needed to address problem reported by user.
133
134September 9th, 2007  G.Cosmo - field-V09-00-02a
135----------------------------
136- Some code cleanup in G4MagHelicalStepper.cc.
137
138August 30th, 2007    P.Gumplinger - field-V09-00-02
139---------------------------------
140- Add G4EqEMFieldWithSpin class to allow tracking of spin also in
141  G4ElectroMagneticFields
142
143August 21st, 2007    T.Nikitina - field-V09-00-01
144-------------------------------
145- Fix to DistChord() method for Helical Steppers: adopt 'special' case
146  also for Ang<2pi not only for Ang<pi; use cos() in place of tan(), to
147  improve CPU performance.
148- Improved AdvanceHelix() to be able to make half step and full step
149  in one call.
150- In G4HelixMixedStepper added possibility to call different steppers for
151  small steps and add some statistics how offen different steppers are called.
152- G4RKG3_Stepper: improved internal algorithm to use pre-computed values;
153  the stepper now gives comparable CPU performance as ClassicalRK4.
154- Updated unit tests.
155
156August 17th, 2007    G.Cosmo - field-V09-00-00
157----------------------------
158- Changed FatalException to EventMustBeAborted in AccurateAdvance()
159  if proposed integration step is negative.
160
161June 8th, 2007    T.Nikitina - field-V08-03-03
162----------------------------
163- Relaxed FatalException to Warning in G4MagIntegratorDriver::AccurateAdvance()
164  for case of step zero and return previous value. This fixes problem
165  observed by ATLAS in release 8.3 when requiring very accurate propagation
166  -- ie using very small values for acceptable integration error.
167
168May 18th, 2007    T.Nikitina - field-V08-03-02
169----------------------------
170- New class G4HelixMixedStepper, mixing helical stepper and RK
171  G4MagHelicalStepper
172- Keep values of  inverse Radius, ..
173- New calculation of DistChord for SteppingAngle > pi
174  G4RKG3Stepper
175- New calculation of DistChord for SteppingAngle > pi
176
177May 16th, 2007    G.Cosmo - field-V08-03-01
178-------------------------
179- Introduced new class G4ErrorMag_UsualEqRhs used to reverse the magnetic
180  field when propagation is backwards for error propagation (by P.Arce).
181- Coworks with tag "global-V08-03-02".
182
183May 11th, 2007    G.Cosmo - field-V08-03-00
184-------------------------
185- Use call to G4GeometryTolerance instead of kCarTolerance constant in
186  G4MagIntegratorDriver.
187- Requires tag "global-V08-03-00" and related tag set.
188
189May 10th, 2007    J.Apostolakis - field-V08-02-01
190-------------------------------
191- G4MagIntegratorDriver:
192    * added protections against zero initial or internal step h=0, (exceptions)
193    * revised (re)calculation of h, and quit loop if h/length < smallest-fraction (~ 10^-12)
194
195April 26th, 2007  T.Nikitina - field-V08-02-00
196----------------------------
197- Corrected integration constants in G4MagHelicalStepper
198- Added implementation of G4RKG3_Stepper, stepper derived from Geant3.
199- Updated NTST unit test. New unit test "field06" for comparison of steppers.
200
201November 14th, 2006  J.Apostolakis - field-V08-01-02
202----------------------------------
203- G4MagIntegratorDriver
204  * Made first argument of GetDerivatives a reference - avoid copy
205- G4MagIntegratorStepper
206  * Include the SetEquationOfMotion() method in G4MagIntegratorStepper
207    (for Geant4e, as in field-V08-01-00)
208  * Update of disclaimers.
209
210November 13th, 2006  G.Cosmo - field-V08-01-01
211----------------------------
212- G4FieldTrack:
213  o Implemented missing definition for GetCharge().
214  o Corrected 'const' qualifier for accessors in the subclass.
215  o Cleanup ...
216- NOTE: this tag is NOT including the change below in G4MagIntegratorStepper.
217
218June 21st, 2006  J.Apostolakis - field-V08-01-00
219------------------------------
220- Including the SetEquationOfMotion() method in G4MagIntegratorStepper
221
222June 22nd, 2006  J.Apostolakis - field-V08-00-07
223-----------------------------
224- G4ExactHelixStepper: reintroduced corrected class
225    --> testPropagateMagField now tests it also (added)
226- G4MagHelicalStepper: made Stepper virtual (for now)
227             to enable G4ExactHelixStepper to override it
228
229June 21st, 2006  J.Apostolakis - field-V08-00-06
230-----------------------------
231- G4ExactHelixStepper: taking out class
232   (provisional tag in case of difficulties with class, revisions)
233
234--- The field-V08-00-0x , x > 6, tags do not include the change below
235
236May 27th, 2006  J.Apostolakis - field-V08-00-05
237-----------------------------
238- G4FieldTrack: Fix for simple compilation error on Sun.
239
240May 23rd, 2006  J.Apostolakis - field-V08-00-04
241-----------------------------
242- G4FieldTrack: Fix for memory leak for ChargeState
243   Made G4ChargeState a data member (has an instance)
244
245May 18th, 2006  J.Apostolakis - field-V08-00-03
246-----------------------------
247- G4FieldTrack: Fix for issue with gcc 4.0  (mac)
248
249May 16th, 2006  J.Apostolakis - field-V08-00-02
250-----------------------------
251- G4ExactHelixStepper
252   Taken out alpha version - it was included in error
253
254May 11th, 2006  J.Apostolakis - field-V08-00-01
255-----------------------------
256- G4FieldTrack
257   Significant, provisional change:
258     * Added charge and moments to FieldTrack
259         (SetMethods,  and pointer to embedded class G4ChargeState)
260   Technical revisions:
261     * New constructor, with charge and without velocity
262     * New almost-default constructor (taking a character)
263   Also:
264     * New constructor to take const reference to Spin
265     * New implementation method UpdateFourMomentum
266     * Streaming operator takes const reference,
267         and outputs momentum magnitude & direction magn.
268
269- G4ExactHelixStepper
270   Included in error
271
272Apr 6th, 2006  J.Apostolakis - field-V08-00-00
273----------------------------
274- In G4FieldManager
275 Added missing  const GetChordFinder() method -- Problem report #847
276 Corrected description (at top of include file hh):
277  - It is possible to set the field manager of a logical volume (since long)
278
279
280Nov 9th, 2005  G.Cosmo - field-V07-01-00
281----------------------
282- Archived source code of field01 unit test, now moved to examples/extended.
283- Migrated unit test NTST to use <sstream> and std:: namespace. Up-to-date
284  with G4VParticleChange new interface.
285
286Dec 2nd, 2004  G.Cosmo - field-V06-02-02
287----------------------
288- Implemented migration to <cmath> for standard mathematical functions.
289
290Dec 2nd, 2004  J.Apostolakis - field-V06-02-01
291----------------------------
292- Improvements to comments in key Field classes
293- Changes to test/NTST, renaming 'main()' file & modifying input files
294- Several improvements to test files
295   testProElectroMagField.cc
296     * updating for new Electric Field inheritance (& need for
297       different ChordFinder creation )
298     * adding columns to print-outs in spin case for better diagnosis
299   testPropagateMagField.cc
300     * Added verbosity level 1 to field Propagator, relabelled old method.
301   testPropagateSpin.cc
302     * Added more printout of parameters (state) of G4PropagatorInField
303       and G4FieldManager before running each test.
304   test/NTST
305     * Renamed main() file to testNTST.cc and added G4UItcsh terminal.
306
307
308Oct 20th, 2004  P.Gumplinger - field-V06-02-00
309----------------------------
310- Added Set/GetAnomaly() methods in G4Mag_SpinEqRhs.
311
312Feb 9th, 2004  G.Cosmo - field-V06-00-00
313----------------------
314- G4UniformMagField.cc: added missing implementation for
315  GetConstantFieldValue(). Fixes bug report #575.
316
317Nov 13th, 2003  J.Apostolakis - field-V05-02-08
318-----------------------------
319- G4ChordFinder: 
320  o extended the arguments of AdvanceChordLimited  and  FindNextChord
321    adding the current safety sphere (origin, radius), for use in optimising.
322  o fixed set functions which had side effect (on first fraction.)
323- Added new class G4ChordFinderSaf (using above)
324  o which uses safety to create longer chords, so enabling
325      propagation in fewer steps --> performance optimisation
326- G4FieldManager:
327    Changed default accuracy parameters to much better values:
328        Epsilon Min Default  to 5.0e-5  from 5.0e-7  (too small)
329        Epsilon Max Default  to 0.001   from 0.05    (far too big)
330
331Nov  7th, 2003  J.Apostolakis - field-V05-02-07
332-----------------------------
333- G4ChordFinder
334  o Made this a base class
335    * to enable specialised implementations
336    * virtual methods: FindNextChord, PrintStatistics)
337    * new method AccumulateStatistics to aid in this
338
339  o New default value of                                      Accuracy!!
340      Delta Chord        to  0.25 mm    (from 3.00 mm)     <-----
341                                                                 
342- G4FieldManager
343  o Changed default values of
344      Delta One Step     to  0.010 mm   (from 0.25 mm)     <-----
345      Delta Intersection to  0.001 mm   (from 0.10 mm)     <-----
346    for increased default accuracy
347  o Use field's DoesFieldChangesEnergy method to set relevant member variable
348
349Nov 7th, 2003  J.Apostolakis - field-V05-02-06
350----------------------------
351- G4ChordFinder
352   Created new class members for parameters used in heuristics:
353       fFirstFraction            for first step
354       fFractionLast             fraction of last step, if redoing
355       fFractionNextEstimate     confidence in step est from chord
356       fMultipleRadius           for small radii of curve
357   New method to Print Statistics.
358   Verbosity to enable optional printing of stats in destructor.
359
360Nov 7th, 2003  J.Apostolakis - field-V05-02-05
361----------------------------
362- G4ChordFinder
363  o Added simple statistics (with access methods)
364- test/NTST
365  o Added new test, taken from D. Williams' exampleNTST
366     modified and maintained by J. Apostolakis
367
368Nov 5th, 2003  J.Apostolakis - field-V05-02-04
369----------------------------
370- G4FieldManager
371  o Added Get/Set Min/Max imumEpsilonStep
372  o Added fEpsilonMin fEpsilonMax & default to member variables.
373   >> Now these can be tailored for different parts of a detector or setup
374
375- G4Field G4ElectroMagneticField G4MagneticField
376  o Adding the virtual method   DoesFieldChangeEnergy()  [to be used later]
377  o So that G4ElectroMagneticField derives from G4Field
378    and G4MagneticField derives from G4ElectroMagneticField
379
380- G4MagErrorStepper and derived classes
381    (G4ClassicalRK4 G4SimpleRunge G4ExplicitEuler G4ImplicitEuler G4SimpleHeum)
382  o the constructors take G4EquationOfMotion in place of a G4Mag_EqRhs
383    as it these applicable to all types of equations
384     (not just ones for Magnetic field)
385
386- G4EqMagElectricField
387  o derives from G4EquationOfMotion
388
389- G4ChordFinder
390  o Moved simple constructor to .cc file (together with 'complex' one)
391  o Changed fDefaultDeltaChord to a constant member variable (from class var.)
392
393Nov 4th, 2003  G.Cosmo - field-V05-02-03
394----------------------
395Undocumented.
396
397Nov 4th, 2003  G.Cosmo - field-V05-02-02
398----------------------
399- G4ChordFinder.cc:
400  o Fixed compilation problem occuring when G4DEBUG_FIELD was set.
401
402Oct 31st, 2003  G.Cosmo - field-V05-02-01
403-----------------------
404- Code cleanup and removal of redundant header includes, replaced
405  where necessary by forward declarations.
406
407Oct 24th, 2003  G.Cosmo - field-V05-02-00
408-----------------------
409- Migrated to use new G4Exception scheme.
410- Updated outputs of unit tests.
411
412Jun 25th, 2003  J.Apostolakis - field-V05-01-06
413-----------------------------
414- Suppressed printing of statistics (by default) in MagIntegrationDriver.
415- Fix for unused variables warning in ChordFinder.
416
417Jun 24th, 2003  J.Apostolakis - field-V05-01-05
418-----------------------------
419- Fix for problems introduced in field-V05-01-03:
420  o G4ChordFinder:
421    - Fixed unitialised variable for next step (now used for optimisation).
422    - Protected assignment of 'fLastStepEstimate_Unconstrained' in case of
423      unitialised value.
424
425Jun 21st, 2003  J.Apostolakis - field-V05-01-04
426-----------------------------
427- G4FieldManager:
428  o Revised into 'slightly' abstract class with one (new) virtual method:
429      ConfigureForTrack( const G4Track *)
430    to enable the user to configure it with different accuracy parameters
431    depending on energy, particle id, volume, or other track state.
432    Currently by default, no such configuration action is undertaken.
433
434Jun 21st, 2003  J.Apostolakis - field-V05-01-03
435-----------------------------
436- Revised G4ChordFinder:
437  * FindNextChord now provides next Step estimate (for accuracy in Integr.)
438  * AdvanceChordLimited to use
439    - above extra argument to FindNextChord
440    - the next Step argument as initial-step suggested to Accurate Advance
441- G4MagIntegratorDriver:
442  * Added extra argument to Accurate Advance:
443    hinitial: suggested initial step size
444- Note:
445  * Purpose:  performance boost with small/limited changes,
446    including minor revisions of interfaces.
447
448Jun 20th, 2003  J.Apostolakis - field-V05-01-02
449-----------------------------
450- G4MagIntegratorDriver Quick Advance:
451  o Took out two unneccessary square roots and two divisions.
452- Notes:
453  1) Pure magnetic, electric, spin field test are completed.
454  2) Purpose:  performance boost with small changes.
455
456Jun 20th, 2003  J.Apostolakis - field-V05-01-01
457-----------------------------
458- G4MagIntegratorDriver:
459  o Corrected neglected conversion to <std> from "G4std".
460- Migrated unit tests to <std>.
461
462Jun 19th, 2003  J.Apostolakis - field-V05-01-00
463-----------------------------
464- G4ChordFinder:
465  o Corrected simple constructor to initialise several member variables
466    including LastStepEstimate_Unconstrained.
467- G4MagIntegratorDriver:
468  o Keep simple statistics on number of steps, total error and step size.
469  o Took out an unneccessary square root (in loop).
470- NOTE:    tests field0X are to be migrated.
471  Purpose: fixes, small performance boost, simple statistics.
472
473Apr 2nd, 2003      G. Cosmo - field-V05-00-01
474---------------------------
475- Created .cc files for G4MagneticField and G4ElecroMagneticField.
476- Fixed definition of copy constructors in fields inheritance chain.
477- Moved obsolete method StepWithEst() to private in G4RKG3_Stepper,
478  G4CashKarpRKF45 and G4ClassicalRK4.
479- Cleared strict pedantic warnings.
480
481Feb 5th, 2003      G. Cosmo - field-V05-00-00
482---------------------------
483- Removed redundant inclusions of PhysicalConstants.h or SystemOfUnits.h.
484  Now using directly CLHEP's headers.
485
486Dec 12th, 2002     G. Cosmo - field-V04-01-06
487---------------------------
488- Moved unused variable 'nStpPr' to debug section in G4MagIntegratorDriver.cc,
489  method AccurateAdvance().
490
491Dec 06th, 2002     G. Cosmo - field-V04-01-05
492---------------------------
493- Merged changes by Makoto for migration to new G4ApplicationState in
494  messengers of unit tests.
495
496Nov 29th, 2002     J. Apostolakis - field-V04-01-04
497---------------------------------
498Further fixes for unitialised variable - in other steppers:
499G4ExplicitEuler, G4ImplicitEuler, G4ImplicitEuler
500
501Large memory leak fix for G4ImplicitEuler, small for ExplicitEuler.
502Test accuracy requirements for spin adjusted.
503
504Nov 20th, 2002     J. Apostolakis - field-V04-01-03
505---------------------------------
506Further fixes for unitialised variables:
507
508* G4MagIntegratorStepper
509  -  Created instance variables for number of Integration, State variables
510
511* G4MagErrorStepper
512  -  Utilise number of State variables to initialise full state of Output.
513
514* G4Mag_SpinEqRhs
515  -  Initialise the values of dydx that we do not update.
516
517Note: Undoing these changes and the ones below would enable the user to see
518        if undefined values are used in variables that he/she expects to
519        have integrated.
520      BUT the fix assists us to find truly undefined values elsewhere
521        -- if they exist -- using valgrind.
522
523Nov  9th, 2002     J. Apostolakis - field-V04-01-02
524---------------------------------
525Fixes to address use of uninitialised variable in seting values of FieldTrack
526(this was done by design, but was neither ideal or always well-behaved.)
527Changed:
528
529* G4MagIntegratorDriver
530  - Added instance variables for number of Integration, State variables
531  - Initialise all State variables of Output with values from initial variables.
532  - Only the Integration variables will be integrated
533
534* G4ClassicalRK4 and G4MagErrorStepper
535  - Copy the initial time to intermediate and output C-vectors,
536     in order to provide a zero-eth estimate value.
537  Note1: Should clean-up this fix, making it similar to Driver (above)
538  Note2: Should *not* be used for time varying field unless created
539           with at least 8 integration variables
540--------------------------------- 
541G4ChordFinder.cc
542  - Correction from zero dChord
543      which is does not update the Unconstrained step estimate (state)
544  - Added instance variables to store number of calls and chord-trials
545      and new print method for 'debugging'
546
547G4Mag_UsualEqRhs.cc
548  - Attempted approximations for speedup  *overwritten* by full inverse sqrt.
549
550
551Oct  29th, 2002   J. Apostolakis - test-V04-01-02
552--------------------------------
553- Changed output of tests for small output change (GeV->MeV)
554
555Oct  29th, 2002   J. Apostolakis - test-V04-01-02
556--------------------------------
557- (Only changed and tagged test subdirectory)
558  Changed tests to use the new method SetChargeMomentumMass of
559  PropagatorInField in order to be ready for its full use in
560  G4PropagatorInField.
561  (A key problem at end-July was this non-preparedness of the unit tests.)
562
563Jul  24th, 2002   G. Cosmo - field-V04-01-01
564--------------------------
565- G4FieldManager[.hh.cc]: made fDefault_Delta_One_Step_Value and
566  fDefault_Delta_Intersection_Val normal constants (not static) to
567  resolve initialisation problems. Coworks with tag "geomvol-V04-01-01".
568  Fixes problem report #383.
569
570Jul  23rd, 2002   G. Cosmo - field-V04-01-00
571--------------------------
572- G4MagIntegratorDriver.cc: cleared warning of unused variable.
573  Protected variable 'nStpPr' with G4DEBUG_FIELD.
574- Updated reference outputs and some other updates to unit tests.
575
576Jun  25th, 2002   J. Apostolakis - field-V04-00-05
577--------------------------------
578- G4ChordFinder.cc
579  In NewStep:  fixed case of stepTrial >> stepTrialOld, to take large multiple - not small;
580       (it was treated the same as stepTrial << old)
581  Added guard for stepTrial==0.0 in FindNextChord
582- G4MagIntegratorDriver.cc
583  Added protection against error of 0.0 in ComputeNewStepSize.
584
585- G4EquationOfMotion
586  Made RightHandSide an inline method
587  In GetFieldValue signature of Point is double[4], instead of double[3]
588  Defined G4maximum_number_of_field_components as enum
589
590Jun   7th, 2002   J. Apostolakis - field-V04-00-04
591--------------------------------
592 - G4Mag_SpinEqRhs.cc
593    o Fix to momentum component of Rhs.
594
595May  31st, 2002   J. Apostolakis - field-V04-00-03
596--------------------------------
597 - G4MagHelicalStepper.icc
598    o Fix to LinearStep (correcting previous fix/cosmetic)
599 - G4ChordFinder.cc
600    o Corrective behaviour for very small or large changes of 'new step'
601       [observed in complex 3-d fields (purging magnet),  or
602                    approximate equations of motion ]
603 - G4MagIntegratorDriver
604    o More information in debug printing (tangent cosine, norm)
605
606May   7th, 2002   J. Apostolakis
607--------------------------------
608- G4MagIntegratorDriver  -  ( on trunk )
609  * Fix to update the field track for steps smaller than the chord finder's
610minstep.
611
612
613April 19th, 2002  J. Apostolakis   (not included in tag field-V04-00-02)
614--------------------------------
615- G4MagIntegratorDriver.hh,cc     (on trunk)
616  * Bug fix:  last step can now only be triggerred if x+h > x2.
617  * Debugging methods improved.
618
619May   7th, 2002   J. Apostolakis - field-V04-00-02
620--------------------------------
621 Tag including only two changes below:
622  - Putting aside the other fixes/changes (as the one above) to
623G4MagIntegratorDriver, tagging only the fix to update the field track
624for steps smaller than the chord finder's minstep.
625
626May   7th, 2002   J. Apostolakis
627--------------------------------
628- G4MagIntegratorDriver  -  **  branch ** on 1.20 **
629  * Fix to update the field track for steps smaller than the chord finder's
630minstep.
631
632May   7th, 2002   J. Apostolakis
633--------------------------------
634- G4MagIntegratorStepper
635  * Changed RightHandSide from a virtual method to an inline (non-virtual)
636      method -- it is not and should not be changed by derived classes.
637
638Mar 28th, 2002  J. Apostolakis - field-V04-00-01
639-----------------------
640- Fixed LinearStep in G4MagHelicalStepper (expected unit direction),
641    that had not been updated for new integration variable (momentum).
642    --> found in testing helical steppers in BaBar setup,
643         in region of negligible field.
644
645- Changed maximum number of steps in driver,
646    halving from 500/order to 250/order.
647
648Mar 28th, 2002  J. Apostolakis
649-----------------------
650- Committed directory "OtherField" with examples of fields,
651    Delphi, Quadropole etc.
652
653- Updated outputs of testPropagateMagField for new version of source,
654    that has 3rd test case.
655
656- Added new runs and outputs for testProElectroMagField, with
657    several steppers, and modified test script test.sh accordingly.
658
659
660Feb  2nd, 2002   V. Grichine
661------------------------
662Update of test/field02 to utilise new features
663  - for Electric Field, to signal that a field modifies the energy;
664  - updating of time by integration, for time dependent fields.
665
666Jan 10th, 2002  G. Cosmo - field-V04-00-00
667------------------------
668- Activated G4DEBUG_FIELD in GNUmakefile.
669
670Jan 7th, 2002  J. Apostolakis
671-----------------------------
672- G4MagHelicalStepper.cc: renamed local variables "*Momentum*" to "*Velocity*".
673
674Dec 4th, 2001  G. Cosmo - field-V03-02-08
675-----------------------
676- Fixed interface to virtual functions in the inheritance chain.
677  Added 'virtual' qualifier to destructor and GetFieldValue() for subclasses
678  of G4Field which may act as base class for user-defined fields.
679  Modified files: G4MagneticField.hh, G4UniformElectricField[.hh.cc],
680                  G4UniformMagField.hh.
681- G4ChordFinder.cc: the unphysical curve length exception has been moved to
682  inside #ifdef G4DEBUG_FIELD. Other #ifdef renamed to G4DEBUG_FIELD.
683- G4LineSection[.hh.cc]: correction for A=B when the distance from P to A
684  is returned (V.Grichine).
685
686Nov 28th, 2001  J. Apostolakis - field-V03-02-07
687------------------------------
688G4FieldManager
689- Added fFieldChangesEnergy data member and get/set methods
690 ( required to allow transportation to know how to calculate end-time,
691   enabling the integration of time only for electric fields. )
692
693Nov 28th, 2001  J. Apostolakis - field-V03-02-06
694------------------------------
695Small fixes only:
696
697G4CashKarpRKF45
698- fixed deletion of unassigned pointer/array in destructor. (-> Volodya Velev)
699
700G4EqMagElectricField
701- bug fixed in the formula for inverse velocity             (-> V. Grichine)
702
703Nov 21st, 2001  G. Cosmo - field-V03-02-05
704------------------------
705- Protected verbose warnings with G4FIELD_DEBUG flag in G4ChordFinder.cc
706  (V.Grichine).
707- Replaced G4DEBUG with G4DEBUG_FIELD in G4MagIntegratorDriver.cc.
708- Updates to unit test field02.
709
710Nov 13th, 2001  G. Cosmo - field-V03-02-04
711------------------------
712- Removed warnings on gcc-2.95.2.
713- Included unit tests field01, field02, field03.
714
715Nov 9th, 2001  J. Apostolakis - field-V03-02-03
716-----------------------------
717Motivated by the use case of an Electric Field,
718 - in order to achieve reasonable accuracy in time integration,
719 - and to enable fields that vary with the global time)
720we (John Ap. and V. Grichine) changed the following:
721
722- Modified G4Field to allow the time in the GetFieldValue method
723     - as 4th component of the "position" array.
724
725- Modified EquationOfMotion to provide the time to the GetFieldValue method
726   of G4Field
727      * as the 4th component of a position / time  4-array
728      * in place of only position as a 3-arry
729
730- Added the global time as variable to be integrated over in the
731   case of an Electric Field
732
733Support for these modifications is required in G4Transportation.
734
735(Better support will require either
736 - a modification in G4FieldTrack to indicate whether the time has been
737    integrated or not. 
738 - or additionally making the time calculation a property of G4FieldTrack,
739    bring in code to do it in from G4Transportation.)
740
741
742Nov  8th, 2001  J. Apostolakis - field-V03-02-02
743------------------------
744- Introduced several changes in G4MagIntegratorDriver.
745
746   It now respects its minimum driver step size in AccurateAdvance.
747     * whereas before it did not.
748
749   Modified maximum number of steps, lowering by factor of 10.
750     -> it should reduce the time spent integrating low energy particles,
751         in some cases where it is unneccessary.
752
753   Protected printing of (nearly?) all warnings with a G4DEBUG_FIELD  #ifdef.
754
755
756Nov 05th, 2001  G. Cosmo - field-V03-02-01
757------------------------
758- Fixed trivial warnings on Linux-g++.
759
760Aug 27th, 2001  J. Apostolakis - field-V03-02-00
761------------------------------
762Tagged last change.
763This tag is utilised in transport-V03-02-01 (which requires it).
764
765Aug 16th, 2001  J. Apostolakis
766------------------------------
767G4ChordFinder:
768 Added method to erase/reset the state of the StepEstimate.
769 This is unwanted internal state that was carried between tracks and
770     events as a side effect.
771
772 Calling this at the start of each track, it is now possible to
773 eliminate a non-repeatability that was possible due to this.
774    ( It has been observed in particular in vaccuum. )
775
776May 23rd, 2001  J. Apostolakis - field-V03-01-02
777------------------------------
778- Added Exception to G4RKG3Stepper constructor: the class does not work
779
780May 23rd, 2001  J. Apostolakis - field-V03-01-01
781------------------------------
782- Fixed G4FieldManager constructors to give default values to delta
783  parameters.
784
785- Updated testPropagateSpin (it now compiles),
786   and some outputs of testPropagateMagField (1 to 5)
787
788
789Apr 12th, 2001  P. Gumplinger - field-V03-01-00
790-----------------------------
791- Updated G4Mag_SpinEqRhs.hh and G4Mag_SpinEqRhs.cc for correction
792  to spin tracking.
793
794Apr 04th, 2001  G. Cosmo - field-V03-00-05
795------------------------
796- G4FieldTrack.icc: fixed pedantic warnings on Linux-g++.
797
798Mar 23rd, 2001  J. Apostolakis - field-V03-00-04
799------------------------------
800- Electric Field unit test now works: test runs until completion.
801   Test outputs saved (on Linux).
802
803- Fixed src/G4UniformElectricField.cc to set correct field components
804                                      (compatible with Equation of Motion
805                                       G4EqMagElectricField )
806
807- Tidied G4FieldTrack
808   * deleted obsolete methods Set/Get MomentumModulus() and its data member.
809   * in constructor to set the value of the spin to (0.0, 0.0, 0.0)
810          if pSpin is null.  (It was undefined.)
811
812Mar 23rd, 2001  J. Apostolakis - field-V03-00-03
813------------------------------
814- Fixed (hacked) CashKarp to work using Auxiliary Stepper.   
815
816- Modified G4MagIntegratorStepper
817     to use pointer to G4EquationOfMotion
818            instead of G4Mag_EqRhs
819
820- Design iteration appears neccessary
821
822Mar 23rd, 2001  J. Apostolakis - field-V03-00-02
823------------------------------
824- Fixed G4MagHelicalStepper::AdvanceHelix for momentum, allowing
825    the possibility of (correct) use of all Helical Steppers.
826
827- test/testProElectroMagField.cc updated for momentum.
828    (Not yet updated: Spin tests)
829
830
831Mar 19th, 2001  J. Apostolakis - field-V03-00-01
832------------------------------
833- Tagging the modification of several classes to integrate in momentum*c_light
834    instead of velocity. 
835  Reason for change:  Velocity integration can result in superluminar
836    velocities,  due to arithmetic inaccuracies.
837  Classes modified:
838    G4FieldTrack,   (Changed components 3,4,5 of SixVector to Momentum,
839    G4Mag_EqRhs, G4Mag_UsualEqRhs, G4EqMagElectricField
840
841Feb 20th, 2001  J. Apostolakis
842
843- Modified several classes to integrate in momentum instead of velocity.
844
845 G4FieldTrack:
846     Changed components 3,4,5 of SixVector to Momentum,
847     Modified constructor
848     Added energy calculation to "LoadFromArray" method
849     GetEnergy method is now implemented.
850     Deleted obsolete (old) method names for Curve and Position. New have "Get"
851
852 G4ChordFinder
853     Renamed old-method names of Field Track to new ones.
854
855Jan 29th, 2001  G. Cosmo - field-V03-00-00
856-------------------------
857
858- Minor fix to G4MagneticField.hh: added explicit call to G4Field() in
859  copy constructor. Fixes report #205.
860
861Nov 20th, 2000  G. Cosmo - field-V02-00-02
862
863- Fixes to remove warnings from "-Wall -ansi -pedantic" g++ compiler options:
864  o commented out variables declared and not used.
865  o fixed declaration of variables used before being initialised.
866  o fixed order of initialisation of member data in constructors.
867  o fixed usage of unsigned-int (size_t) for array indeces.
868
869Nov 9th, 2000  G. Cosmo - field-V02-00-01
870
871- G4FieldManager: added check on existence of allocated fChordFinder
872  in CreateChordFinder(G4MagneticField*) method.
873
874Nov 1st, 2000  G. Cosmo - field-V02-00-00
875
876- QA code revision and cleanup (+fixes from CodeWizard filtering):
877  o Added (private) declarations of copy constructor and assignment operator
878    where needed.
879  o Added "const" qualifier to accessor methods, wherever needed.
880  o Added equality check on operator= where needed.
881  o Made destructor "virtual" for classes having virtual methods,
882    wherever missing.
883  o Changed virtual functions to non-inline wherever's the case.
884  o Changed return value to be "const" pointer to functions:
885    - G4EquationOfMotion::GetFieldObj()
886    - G4FieldManager::GetDetectorField()
887    - G4MagIntegratorDriver::GetStepper()
888  o Fixed and corrected signature to G4MagIntegratorDriver::SetHmin().
889  o Added "inline" qualifier to methods' declarations.
890  o General cosmetics
891
892Jun 2nd, 2000  J. Apostolakis
893- G4FieldManager[.hh.icc]
894  o Added DeltaIntersection and DeltaOneStep to FieldManager: added
895    Get/Set methods and SetAccuraciesWithDeltaOneStep().
896
897May 31st, 2000  J. Apostolakis - field-V01-01-03
898
899include/G4FieldManager.hh,icc
900  o Moved Delta Intersection and Delta One Step to FieldManager
901     (from Propagator in Field),  to allow them to differ over the detector.
902
903May 11th, 2000  J. Apostolakis - field-V01-01-02
904
905- G4ChordFinder[.hh.cc]
906  o Modified method for finding new trial step.
907    New method assumes a quadratic relationship between step-length and d_chord:
908            d_chord  proportional  to  step-lenght ^ 2
909  o Added two small refinement in order to avoid unneccesary extra step due to
910    small numerical inaccuracies in estimation:
911      FindNextChord
912          to first step       use  (1-0.001) * last-step-estimate
913      New Step:
914          to subsequent step  use    trial_step = 0.98 * estimate
915
916May 10th, 2000  G. Cosmo
917
918- G4MagneticField.hh: minor fix to dummy implementation of assignment
919  operator.
920
921May    9th, 2000   J. Apostolakis - field-V01-01-01
922
923- G4MagErrorStepper:
924    Modified DistChord to check whether the chord endpoint are the same point.
925
926- G4RKG3_Stepper:
927    Deleted error message from StepNoErr, as it is used in Stepper.
928
929- G4MagIntegratorDriver:
930    Changed the condition for the debug output  (~cosmetic)
931
932
933April 27th, 2000   G. Cosmo
934
935- Reorganised comments for the Software Reference Manual.
936- Moved inlined definition to .icc files, where needed.
937  Created: G4ChordFinder.icc and G4FieldManager.icc.
938
939April 13th, 2000   J. Apostolakis - field-V01-01-00
940
941- Modified signature to function DumbStepper() in classes:
942  G4HelixExplicitEuler, G4HelixHeum, G4HelixImplicitEuler,
943  G4HelixSimpleRunge and G4MagHelicalStepper.
944- Modified signature and implementation of function MagFieldEvaluate()
945  in G4MagHelicalStepper, to use Field (as ThreeVector) in place of dydx.
946- Made Richardson extrapolation optional (it is unclear if
947  it offers benefit) in G4MagHelicalStepper.
948- Updated unit test testPropagateMagField and reference output.
949- G4LineSection: fixes to prevent divisions by 0. and sqrt(<0)
950  (V.Grichine).
951
952January  19th, 2000   G. Cosmo - field-V01-00-00
953
954Syncronized versioning of files with HEAD after ISO-C++ migration
955(essentially CVS header changes).
956
957December  7th, 1999   J. Apostolakis - field-V00-01-01a
958
959For negative or very small curve lengths (h) we suppress writing an error
960(about the distance of endpoints being further than the curve length),
961as it is meaningless.
962
963November 23rd, 1999   J. Apostolakis - field-V00-01-01
964
965Tagged this sub-category's state in geometry-V00-01-01
966
967
968July      6th, 1999   J. Apostolakis - field-01-00-07
969
970These fixes and those in field-01-00-06 and field-01-00-06a all come
971from the need to cope with the imprecision of the integration, and its
972interaction with paths that are rather straight.
973
974G4MagIntegrationDriver:
975 i) AccurateAdvance now that the chord distance is smaller than the curve len-
976gth (times 1+epsilon).
977
978ii) OneGoodStep and QuickAdvance considers the error of the velocity as well as
979the error of the position - and ensure that both relative errors are within
980the "eps" maximum given.
981
982G4ChordFinder:
983  Having found that the curve_length vs ABdist disrepancy has its basis in
984the imprecision of the integration:
985  i) Modified the exception in this case to happen only for very large
986   relative disrepancies ( 10 * eps ).
987 ii) Undertaken a default corrective action in all other cases
988Note that this disrepancy only happens for very straight sections of track -
989ie step lengths much smaller than the curvature of the track.
990
991July      1st, 1999   J. Apostolakis - field-01-00-06a
992
993In order to cope with the anomalous condition created by candidate fix
994in G4PropagatorInField,  we ensure that the fraction_AE is always between
9950 and 1.0.  (giving it a default value of 0.5 whenever it is wrong).
996( in G4ChordFinder::ApproxCurvePointV )
997
998June     29th, 1999   J. Apostolakis - field-01-00-06
999
1000  I re-instated a check on whether the input distance along the curve between
1001the two input curve points is truly greater than their linear distance.
1002( in G4ChordFinder::ApproxCurvePointV )
1003
1004The condition that prints out a warning message has been altered to
1005take into account the case of a very small final interval.
1006( in G4MagInt_Driver::AccurateAdvance )
1007
1008June     ??th, 1999   J. Apostolakis - field-01-00-05
1009
1010The condition that prints out a warning message was changed to delete
1011an incorrect comparison.
1012( in G4MagInt_Driver::AccurateAdvance )
1013
1014April    19th, 1999   J. Apostolakis - field-01-00-04
1015
1016G4MagErrorStepper: Cosmetic changes to name of data members
1017
1018March     4th, 1999   J. Apostolakis - field-01-00-03
1019
1020Corrected delete statement of arrays to use 'delete[]' instead of simple delete
1021in destructors of 2 steppers (G4CashKarpRKF45, G4SimpleHeum)
1022
1023February 17th, 1999   J. Apostolakis -  field-01-00-02
1024
1025 Moved G4PropagatorInField files to geometry/volumes.
1026 Updated GNUmakefile not to depend on geometry/volumes anymore.
1027   -> the known circular dependency is removed
1028
1029
1030February 12th, 1999   J. Apostolakis -  field-spin1-works1     (act Feb17)
1031
1032  A tag that contains the first version that worked with spin (in Peter G.'s
1033directory).   G4PropagateInSpin is still in this version.  A small change
1034in a branch of the header file was needed.
1035
1036
1037February 10th, 1999   J. Apostolakis
1038
1039All the following changes are needed for energy integration also:
1040
1041G4ChordFinder now passes to the constructed driver the number of variables.
1042Because of the need for the stepper to know about it in its Abstract interface
1043
1044-> Moved theNumberOfVariables  from derived class G4MagErrorStepper
1045                               to base class G4MagIntegratorStepper
1046
1047As a consequense the classes that derived from G4MagIntegratorStepper directly
1048were changed: G4CashKarpRKF45, G4MagHelicalStepper,
1049
1050
1051February  9th, 1999    J. Apostolakis
1052
1053Equation of Motion:
1054G4MagEqRhs.hh  Made SetChargeMomentumMass virtual, so that G4Mag_SpinEqRhs
1055                 can initialise its constants too.
1056
1057
1058February  9th, 1999   P. Gumplinger
1059
1060Added Equation of Motion for Spin in Magnetic Field.
1061
1062
1063February 17th, 1999   J. Apostolakis  -  field-01-00-01
1064  --->  date is correct, made sure that tag does not include above fixes!
1065 
1066 Moved G4PropagatorInField files to geometry/volumes.
1067 Updated GNUmakefile not to depend on geometry/volumes anymore.
1068   -> the known circular dependency is removed
1069
1070
1071---------------------------------------------------------------------------
1072    ------    Geant 4  Production Release   ------------
1073--------------------------------------------------------------------------
1074Nov   19th, 1998   J. Apostolakis  -  field-00-04-01head ===> R+D version only
1075
1076 G4PropagatorInField files modified:
1077
1078   - to store the last safety computed and its origin.
1079   - to give them to a requester
1080------------------------------------------------------------------
1081
1082Nov   19th, 1998   J. Apostolakis  -  field-00-03-03b
1083
1084 Subtle fix to interface of G4UniformMagField::GetFieldValue 
1085         ( that tripped Visual C++ )
1086
1087 G4PropagatorInField:  added printing method for verboseness.
1088
1089Nov   19th, 1998   J. Apostolakis  -  field-00-03-03a
1090
1091   Steppers:  Fixed instance variables construction (SimpleRunge)
1092              and clash of names in CashKarp::StepWithEstimate
1093
1094   Added post-const to all Field classes for
1095           void GetFieldValue(const G4double yTrack[] ,
1096                                 G4double B[]      ) const ;
1097
1098   Added SetFieldValue methods to UniformMagField
1099
1100   Added GetConstantFieldValue() methods to Uniform Mag & Electric Fields
1101
1102
1103Nov   19th, 1998   J. Apostolakis  -  field-00-03-03
1104
1105   Fixes to Propagate and Steppers
1106
1107Nov   19th, 1998   J. Apostolakis  -  field-00-03-02
1108
1109   Minor corrections  (???)
1110
1111Nov   19th, 1998   J. Apostolakis  -  field-00-03-02
1112 
1113   Major development to allow Electric Field
1114   
1115
1116
1117June  17th, 1998   J. Apostolakis  -  magfield-06-03
1118
1119 Modified Files:
1120        include/G4PropagatorInField.hh
1121            src/G4PropagatorInField.cc
1122           test/testPropagateInField.cc
1123----------------------------------------------------------------------
1124
1125 1)  Added an assertion after each call to LocateGlobalPointAndSetup.
1126     It checks that the located volume is equal to the current volume.
1127     If this check fails, the Propagator does not know how to continue.
1128
1129 2)  Added an argument  to ComputeStep method of G4PropagatorInField.
1130  The new volume argument is used to check the current volume during the step.
1131
1132 3)  When G4Navigator's ComputeStep returned  stepLength==stepRequested,  this
1133used to be treated as a failure to intersect.  This is incorrect.
1134
1135    stepLength==stepRequested is an intersection,
1136      so I am now treating it as such in each comparison (of 3).
1137      Ignoring it causes problems, including volume being skipped.
1138      --> but treating it as an intersection used to cause problems too ??
1139
1140
1141May    7th, 1998    J. Apostolakis  -  magfield-06-02-helix01
1142
1143- Tag includes new version of G4ChordFinder (not used by W.Wander).
1144
1145
1146May    7th, 1998    W. Wander     (recorded/commited by  J. Apostolakis)
1147
1148- New "helical" RK steppers that move in helical segments, not linear.
1149    * Several changes to add steppers
1150
1151 Modified Files:
1152        G4MagErrorStepper.hh
1153        G4MagErrorStepper.cc
1154           added Helical stepping methods to this general ABC.
1155       
1156        G4MagIntegratorStepper.hh
1157           made RightHandSide virtual   (this will be reversed very soon)
1158
1159        testPropagateMagField.cc
1160           Test of Helical stepping functionality added.
1161           
1162 Added Files for new Helical RK steppers, deriving from G4MagErrorStepper:
1163        G4HelixExplicitEuler.cc  ( and .hh )
1164        G4HelixHeum.cc
1165        G4HelixImplicitEuler.cc
1166        G4HelixSimpleRunge.cc 
1167
1168 Added File for implementation:
1169        G4MagErrorStepper.icc
1170
1171
1172May    7th, 1998    J. Apostolakis   -  magfield-06-01
1173
1174- added small changes to
1175    * G4ChordFinder:           methods to get/set IntegratorDriver
1176    * G4MagIntegratorDriver:   made OneGoodStep method public
1177- created the file.
1178
Note: See TracBrowser for help on using the repository browser.