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

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

update geant4-09-04-beta-cand-01 interfaces-V09-03-09 vis-V09-03-08

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