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

Last change on this file since 846 was 831, checked in by garnier, 16 years ago

import all except CVS

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