Import Geant4 9.2.0 source tree
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.142 2007/11/27 18:32:16 japost Exp $
|
||||
$Id: History,v 1.151 2008/11/26 13:03:28 japost Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -16,56 +16,94 @@ committal in the CVS repository !
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
November 26th, 2008, J.Apostolakis transport-V09-01-03
|
||||
----------------------------------
|
||||
- G4CoupledTransportation:
|
||||
o Fix: initialise new data member (in constructor) - found by STT
|
||||
|
||||
Nov 27th, 2007, J.Apostolakis transport-V09-00-05a
|
||||
------------------------------
|
||||
G4CoupledTransportation
|
||||
- Added updating of particle-looping flag (was commented out.)
|
||||
November 21st, 2008, J.Apostolakis transport-V09-01-02
|
||||
----------------------------------
|
||||
- G4Transportation & G4CoupledTransportation:
|
||||
o Performance improvement/correction
|
||||
Avoid to compute safety at end of step for neutral particles
|
||||
|
||||
Nov 8th, 2007, J.Apostolakis transport-V09-00-05
|
||||
------------------------------
|
||||
G4Transportation:
|
||||
- Create new method (and class member) for flag on Short StepOptimisation.
|
||||
* When it is true, the optimisation is 'on' steps shorter than the
|
||||
safety will not call G4Navigator - so long as the particle goes straight
|
||||
ie it is not charged or there is no field.
|
||||
* Retained the default value as 'off' - as since changed in
|
||||
transport-V09-00-02 following Alex's suggestion.
|
||||
November 21st, 2008, J.Apostolakis transport-V09-01-01
|
||||
----------------------------------
|
||||
|
||||
Nov 8th, 2007, J.Apostolakis transport-V09-00-04
|
||||
------------------------------
|
||||
G4Transportation (AlongStepGPIL)
|
||||
- Moved the call to ConfigureForTrack before the check whether
|
||||
- G4Transportation & G4CoupledTransportation:
|
||||
o Push value & origin of safety to SafetyHelper
|
||||
only when its value comes from ComputeSafety
|
||||
|
||||
January 17th, 2008, J.Apostolakis transport-V09-01-00
|
||||
---------------------------------
|
||||
- G4Transportation & G4CoupledTransportation:
|
||||
o Clear state of all Chord Finders using G4FieldManagerStore.
|
||||
- Syncronised with files on the HEAD.
|
||||
- Requires co-working tag "field-V09-01-00" (or "field-V09-00-03").
|
||||
Functionality corresponding to tag "transport-V09-00-52".
|
||||
|
||||
November 27th, 2007, J.Apostolakis transport-V09-00-08
|
||||
----------------------------------
|
||||
- G4CoupledTransportation
|
||||
o Added updating of particle-looping flag (was commented out.).
|
||||
|
||||
November 10th, 2007, J.Apostolakis transport-V09-00-07
|
||||
----------------------------------
|
||||
- G4Transportation:
|
||||
o Put back the default for short step optimisation to 'on'.
|
||||
|
||||
November 9th, 2007, J.Apostolakis transport-V09-00-06
|
||||
---------------------------------
|
||||
- G4Transportation:
|
||||
o Update the SafetyHelper using the safety calculated by Navigator.
|
||||
|
||||
November 27th, 2007, J.Apostolakis transport-V09-00-05a
|
||||
----------------------------------
|
||||
- G4CoupledTransportation
|
||||
o Added updating of particle-looping flag (was commented out.)
|
||||
- Also called "transport-V09-00-51" to make it canonical.
|
||||
|
||||
November 8th, 2007, J.Apostolakis transport-V09-00-05
|
||||
---------------------------------
|
||||
- G4Transportation:
|
||||
o Created new method (and class member) for flag on Short StepOptimisation.
|
||||
* When it is true, the optimisation is 'on' steps shorter than the
|
||||
safety will not call G4Navigator - so long as the particle goes straight
|
||||
ie it is not charged or there is no field.
|
||||
* Retained the default value as 'off' - as since changed in
|
||||
transport-V09-00-02 following Alex's suggestion.
|
||||
|
||||
November 8th, 2007, J.Apostolakis transport-V09-00-04
|
||||
---------------------------------
|
||||
- G4Transportation (AlongStepGPIL):
|
||||
o Moved the call to ConfigureForTrack before the check whether
|
||||
fieldMgr has 0 field ptr, in order to enable it to be called
|
||||
even if the field manager points to a zero field.
|
||||
Needed to enable a user to switch a global field on (off was possible),
|
||||
as a track goes between volume (or regions) of a setup.
|
||||
[ Response to request of Atlas/ZM. ]
|
||||
Note: this ordering already existed in G4CoupledTransportation.
|
||||
|
||||
Needed to enable a user to switch a global field on (off was possible), as a
|
||||
track goes between volume (or regions) of a setup.
|
||||
[ Response to request of Atlas/ZM. ]
|
||||
|
||||
Note: this ordering already existed in G4CoupledTransportation.
|
||||
|
||||
|
||||
Oct 12th, 2007, J.Apostolakis transport-V09-00-03
|
||||
------------------------------
|
||||
G4CoupledTransportation
|
||||
- Improves condition for flag that regulates Relocating when only
|
||||
October 12th, 2007, J.Apostolakis transport-V09-00-03
|
||||
---------------------------------
|
||||
- G4CoupledTransportation:
|
||||
o Improves condition for flag that regulates Relocating when only
|
||||
any geometry (including a parallel geometry) limits the step.
|
||||
New PathFinder method required.
|
||||
-> Requires and co-works with tag geomnav-V09-00-03
|
||||
- Requires and co-works with tag geomnav-V09-00-03
|
||||
|
||||
Oct 4th, 2007, J.Apostolakis transport-V09-00-02
|
||||
------------------------------
|
||||
G4CoupledTransportation
|
||||
- First fix for problem in condition for Relocating when only a parallel
|
||||
October 4th, 2007, J.Apostolakis transport-V09-00-02
|
||||
--------------------------------
|
||||
- G4CoupledTransportation:
|
||||
o First fix for problem in condition for Relocating when only a parallel
|
||||
geometry limited the step.
|
||||
- Change of condition for recalculation safety (from Alex Howard) used,
|
||||
o Change of condition for recalculation safety (from Alex Howard) used,
|
||||
as currently it improves stability.
|
||||
|
||||
Sept 25th, 2007, J.Apostolakis transport-V09-00-01
|
||||
------------------------------
|
||||
G4Transportation
|
||||
- Modification to disable 'optimisation' in G4Navigator for small linear
|
||||
September 25th, 2007, J.Apostolakis transport-V09-00-01
|
||||
-----------------------------------
|
||||
- G4Transportation:
|
||||
Modification to disable 'optimisation' in G4Navigator for small linear
|
||||
step (ie when a track does less than the safety).
|
||||
* Relevant only if there is no field, or the particle is neutral
|
||||
* Temporary measure (in current form) to improve comparison
|
||||
@@ -74,7 +112,7 @@ G4Transportation
|
||||
July 12th, 2007, J.Apostolakis transport-V09-00-00
|
||||
------------------------------
|
||||
- Retagged to enable testing of new developments
|
||||
(which were not included in release 9.0)
|
||||
(which were not included in release 9.0)
|
||||
|
||||
June 6th, 2007, G.Cosmo transport-V08-03-14
|
||||
-----------------------
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4CoupledTransportation.hh,v 1.6 2007/05/29 13:50:14 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4CoupledTransportation.hh,v 1.7 2008/11/21 18:27:42 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
@@ -60,6 +60,7 @@
|
||||
#include "G4Track.hh"
|
||||
#include "G4Step.hh"
|
||||
#include "G4ParticleChangeForTransport.hh"
|
||||
class G4SafetyHelper;
|
||||
|
||||
class G4CoupledTransportation : public G4VProcess
|
||||
{
|
||||
@@ -215,6 +216,8 @@ class G4CoupledTransportation : public G4VProcess
|
||||
G4double fSumEnergyKilled;
|
||||
G4double fMaxEnergyKilled;
|
||||
|
||||
G4SafetyHelper* fpSafetyHelper; // To pass it the safety value obtained
|
||||
|
||||
// Verbosity
|
||||
G4int fVerboseLevel;
|
||||
// Verbosity level for warnings
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4CoupledTransportation.icc,v 1.4 2007/05/29 13:50:15 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
|
||||
//
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4NeutronKiller.hh,v 1.1 2006/11/17 15:53:04 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4NeutronKiller.hh,v 1.2 2007/06/01 07:53:26 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4NeutronKillerMessenger.hh,v 1.1 2006/11/17 15:53:04 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4NeutronKillerMessenger.hh,v 1.2 2007/06/01 07:53:26 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4StepLimiter.hh,v 1.3 2006/06/29 21:10:28 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4StepLimiter.hh,v 1.4 2007/06/01 07:53:26 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// class description
|
||||
//
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4TrackTerminator.hh,v 1.3 2006/06/29 21:10:30 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4TrackTerminator.hh,v 1.4 2007/06/01 07:53:26 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4TrackTerminator
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4Transportation.hh,v 1.16 2007/11/08 17:59:38 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4Transportation.hh,v 1.17 2007/11/09 15:39:20 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
@@ -54,6 +54,7 @@
|
||||
#include "G4Track.hh"
|
||||
#include "G4Step.hh"
|
||||
#include "G4ParticleChangeForTransport.hh"
|
||||
class G4SafetyHelper;
|
||||
|
||||
class G4Transportation : public G4VProcess
|
||||
{
|
||||
@@ -204,6 +205,8 @@ class G4Transportation : public G4VProcess
|
||||
// If using it, the safety estimate for endpoint will likely be smaller.
|
||||
G4bool fShortStepOptimisation;
|
||||
|
||||
G4SafetyHelper* fpSafetyHelper; // To pass it the safety value obtained
|
||||
|
||||
// Verbosity
|
||||
G4int fVerboseLevel;
|
||||
// Verbosity level for warnings
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4Transportation.icc,v 1.11 2007/11/08 17:59:52 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
|
||||
//
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4UserSpecialCuts.hh,v 1.10 2006/06/29 21:10:36 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4UserSpecialCuts.hh,v 1.11 2007/06/01 07:53:26 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// class description
|
||||
//
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4VTrackTerminator.hh,v 1.7 2007/05/11 14:13:20 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4VTrackTerminator.hh,v 1.8 2007/06/01 07:53:26 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4VTrackTerminator
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4CoupledTransportation.cc,v 1.23 2007/11/27 18:25:41 japost Exp $
|
||||
// $Id: G4CoupledTransportation.cc,v 1.27 2008/11/26 13:01:28 japost Exp $
|
||||
// --> Merged with 1.60.4.2.2.3 2007/05/09 09:30:28 japost
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class implementation
|
||||
// =======================================================================
|
||||
@@ -49,6 +49,7 @@
|
||||
#include "G4ProductionCutsTable.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ChordFinder.hh"
|
||||
#include "G4FieldManagerStore.hh"
|
||||
class G4VSensitiveDetector;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -84,6 +85,7 @@ G4CoupledTransportation::G4CoupledTransportation( G4int verboseLevel )
|
||||
<< fNavigatorId << G4endl;
|
||||
}
|
||||
fPathFinder= G4PathFinder::GetInstance();
|
||||
fpSafetyHelper = transportMgr->GetSafetyHelper(); // New
|
||||
|
||||
// Following assignment is to fix small memory leak from simple use of 'new'
|
||||
static G4TouchableHandle nullTouchableHandle; // Points to (G4VTouchable*) 0
|
||||
@@ -287,7 +289,7 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track,
|
||||
fPreviousSftOrigin = startPosition ;
|
||||
fPreviousMassSafety = newMassSafety ;
|
||||
fPreviousFullSafety = newFullSafety ;
|
||||
// fSafetyHelper->SetCurrentSafety( newFullSafety, startPosition);
|
||||
// fpSafetyHelper->SetCurrentSafety( newFullSafety, startPosition);
|
||||
|
||||
#ifdef G4DEBUG_TRANSPORT
|
||||
if( fVerboseLevel > 1 ){
|
||||
@@ -395,8 +397,10 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track,
|
||||
// Changed to accomodate processes that cannot update the safety -- JA 22 Nov 06
|
||||
|
||||
// Update safety for the end-point, if becomes negative at the end-point.
|
||||
// To-Try: No safety update if at a boundary
|
||||
if( startFullSafety < endpointDistance ) // && !fAnyGeometryLimitedStep )
|
||||
|
||||
if( (startFullSafety < endpointDistance )
|
||||
&& ( particleCharge != 0.0 ) ) // Only needed to prepare for Mult Scat.
|
||||
// && !fAnyGeometryLimitedStep ) // To-Try: No safety update if at a boundary
|
||||
{
|
||||
G4double endFullSafety =
|
||||
fPathFinder->ComputeSafety( fTransportEndPosition);
|
||||
@@ -406,6 +410,9 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track,
|
||||
// currently revise the safety
|
||||
// ==> so we use the all-geometry safety as a precaution
|
||||
|
||||
fpSafetyHelper->SetCurrentSafety( endFullSafety, fTransportEndPosition);
|
||||
// Pushing safety to Helper avoids recalculation at this point
|
||||
|
||||
G4ThreeVector centerPt= G4ThreeVector(0.0, 0.0, 0.0); // Used for return value
|
||||
G4double endMassSafety= fPathFinder->ObtainSafety( fNavigatorId, centerPt);
|
||||
// Retrieves the mass value from PathFinder (it calculated it)
|
||||
@@ -413,7 +420,6 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track,
|
||||
fPreviousMassSafety = endMassSafety ;
|
||||
fPreviousFullSafety = endFullSafety;
|
||||
fPreviousSftOrigin = fTransportEndPosition ;
|
||||
// fSafetyHelper->SetCurrentSafety( endFullSafety, fTransportEndPosition);
|
||||
|
||||
// The convention (Stepping Manager's) is safety from the start point
|
||||
//
|
||||
@@ -829,8 +835,10 @@ G4CoupledTransportation::StartTracking(G4Track* aTrack)
|
||||
|
||||
G4ChordFinder* chordF= fFieldPropagator->GetChordFinder();
|
||||
if( chordF ) chordF->ResetStepEstimate();
|
||||
// Should also do this for the chord finders of local field managers - TODO
|
||||
}
|
||||
// Clear the chord finders of all fields (ie managers) derived objects
|
||||
static G4FieldManagerStore* fieldMgrStore= G4FieldManagerStore::GetInstance();
|
||||
fieldMgrStore->ClearAllChordFindersState();
|
||||
|
||||
#ifdef G4DEBUG_TRANSPORT
|
||||
if( fVerboseLevel > 1 ){
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4NeutronKiller.cc,v 1.1 2006/11/17 15:53:04 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4NeutronKiller.cc,v 1.2 2007/06/01 07:53:27 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4NeutronKillerMessenger.cc,v 1.1 2006/11/17 15:53:04 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4NeutronKillerMessenger.cc,v 1.2 2007/06/01 07:53:27 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4StepLimiter.cc,v 1.3 2006/11/14 09:11:18 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4StepLimiter.cc,v 1.4 2007/06/01 07:53:27 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
// History
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4Transportation.cc,v 1.72 2007/11/08 17:55:57 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4Transportation.cc,v 1.72.2.3 2008/11/21 18:35:15 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 include file implementation
|
||||
@@ -36,20 +36,23 @@
|
||||
// a particle, ie the geometrical propagation that encounters the
|
||||
// geometrical sub-volumes of the detectors.
|
||||
//
|
||||
// It is also tasked with part of updating the "safety".
|
||||
// It is also tasked with the key role of proposing the "isotropic safety",
|
||||
// which will be used to update the post-step point's safety.
|
||||
//
|
||||
// =======================================================================
|
||||
// Modified:
|
||||
// 19 Jan 2006, P.MoraDeFreitas: Fix for suspended tracks (StartTracking)
|
||||
// 11 Aug 2004, M.Asai: Add G4VSensitiveDetector* for updating stepPoint.
|
||||
// 21 June 2003, J.Apostolakis: Calling field manager with
|
||||
// track, to enable it to configure its accuracy
|
||||
// 13 May 2003, J.Apostolakis: Zero field areas now taken into
|
||||
// account correclty in all cases (thanks to W Pokorski).
|
||||
// 29 June 2001, J.Apostolakis, D.Cote-Ahern, P.Gumplinger:
|
||||
// correction for spin tracking
|
||||
// 20 Febr 2001, J.Apostolakis: update for new FieldTrack
|
||||
// 22 Sept 2000, V.Grichine: update of Kinetic Energy
|
||||
// 20 Nov 2008, J.Apostolakis: Push safety to helper - after ComputeSafety
|
||||
// 9 Nov 2007, J.Apostolakis: Flag for short steps, push safety to helper
|
||||
// 19 Jan 2006, P.MoraDeFreitas: Fix for suspended tracks (StartTracking)
|
||||
// 11 Aug 2004, M.Asai: Add G4VSensitiveDetector* for updating stepPoint.
|
||||
// 21 June 2003, J.Apostolakis: Calling field manager with
|
||||
// track, to enable it to configure its accuracy
|
||||
// 13 May 2003, J.Apostolakis: Zero field areas now taken into
|
||||
// account correclty in all cases (thanks to W Pokorski).
|
||||
// 29 June 2001, J.Apostolakis, D.Cote-Ahern, P.Gumplinger:
|
||||
// correction for spin tracking
|
||||
// 20 Febr 2001, J.Apostolakis: update for new FieldTrack
|
||||
// 22 Sept 2000, V.Grichine: update of Kinetic Energy
|
||||
// Created: 19 March 1997, J. Apostolakis
|
||||
// =======================================================================
|
||||
|
||||
@@ -57,6 +60,8 @@
|
||||
#include "G4ProductionCutsTable.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ChordFinder.hh"
|
||||
#include "G4SafetyHelper.hh"
|
||||
#include "G4FieldManagerStore.hh"
|
||||
class G4VSensitiveDetector;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -87,7 +92,7 @@ G4Transportation::G4Transportation( G4int verboseLevel )
|
||||
|
||||
fFieldPropagator = transportMgr->GetPropagatorInField() ;
|
||||
|
||||
// fpSafetyHelper = fpTransportManager->GetSafetyHelper(); // New
|
||||
fpSafetyHelper = transportMgr->GetSafetyHelper(); // New
|
||||
|
||||
// Cannot determine whether a field exists here,
|
||||
// because it would only work if the field manager has informed
|
||||
@@ -95,14 +100,6 @@ G4Transportation::G4Transportation( G4int verboseLevel )
|
||||
// is constructed.
|
||||
// Instead later the method DoesGlobalFieldExist() is called
|
||||
|
||||
// Small memory leak from this new
|
||||
// fCurrentTouchableHandle = new G4TouchableHistory();
|
||||
// Fixes:
|
||||
// 1) static G4TouchableHistory sfNullTouchableHistory = new G4TouchableHistory();
|
||||
// fCurrentTouchableHandle = new G4TouchableHandle( sfNullTouchableHistory );
|
||||
// 2) set it to (G4TouchableHistory*) 0
|
||||
// fCurrentTouchableHandle = new G4TouchableHandle( (G4TouchableHistory*) 0 );
|
||||
// 3) Below:
|
||||
static G4TouchableHandle nullTouchableHandle; // Points to (G4VTouchable*) 0
|
||||
fCurrentTouchableHandle = nullTouchableHandle;
|
||||
|
||||
@@ -114,15 +111,6 @@ G4Transportation::G4Transportation( G4int verboseLevel )
|
||||
|
||||
G4Transportation::~G4Transportation()
|
||||
{
|
||||
|
||||
// --- Alternative code to delete 'junk data' in touchable handle
|
||||
// ** Corresponds to the case that the constructor has
|
||||
// fCurrentTouchableHandle = new G4TouchableHistory();
|
||||
// ** Likely incorrect - as at the end of the simulation
|
||||
// the handle no longer holds the original 'null' history
|
||||
// G4VTouchable* pTouchable= fCurrentTouchableHandle(); // Incorrect
|
||||
// delete pTouchable; // Incorrect
|
||||
|
||||
if( (fVerboseLevel > 0) && (fSumEnergyKilled > 0.0 ) ){
|
||||
G4cout << " G4Transportation: Statistics for looping particles " << G4endl;
|
||||
G4cout << " Sum of energy of loopers killed: " << fSumEnergyKilled << G4endl;
|
||||
@@ -239,7 +227,7 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track,
|
||||
//
|
||||
fPreviousSftOrigin = startPosition ;
|
||||
fPreviousSafety = newSafety ;
|
||||
// fSafetyHelper->SetCurrentSafety( newSafety, startPosition);
|
||||
// fpSafetyHelper->SetCurrentSafety( newSafety, startPosition);
|
||||
|
||||
// The safety at the initial point has been re-calculated:
|
||||
//
|
||||
@@ -318,7 +306,7 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track,
|
||||
//
|
||||
fPreviousSftOrigin = startPosition ;
|
||||
fPreviousSafety = currentSafety ;
|
||||
// fSafetyHelper->SetCurrentSafety( newSafety, startPosition);
|
||||
// fpSafetyHelper->SetCurrentSafety( newSafety, startPosition);
|
||||
|
||||
// Get the End-Position and End-Momentum (Dir-ection)
|
||||
//
|
||||
@@ -421,26 +409,32 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track,
|
||||
//
|
||||
if( currentSafety < endpointDistance )
|
||||
{
|
||||
G4double endSafety =
|
||||
fLinearNavigator->ComputeSafety( fTransportEndPosition) ;
|
||||
currentSafety = endSafety ;
|
||||
fPreviousSftOrigin = fTransportEndPosition ;
|
||||
fPreviousSafety = currentSafety ;
|
||||
// fSafetyHelper->SetCurrentSafety( currentSafety, fTransportEndPosition);
|
||||
// if( particleCharge == 0.0 )
|
||||
// G4cout << " Avoiding call to ComputeSafety : charge = 0.0 " << G4endl;
|
||||
|
||||
if( particleCharge != 0.0 ) {
|
||||
|
||||
// Because the Stepping Manager assumes it is from the start point,
|
||||
// add the StepLength
|
||||
//
|
||||
currentSafety += endpointDistance ;
|
||||
G4double endSafety =
|
||||
fLinearNavigator->ComputeSafety( fTransportEndPosition) ;
|
||||
currentSafety = endSafety ;
|
||||
fPreviousSftOrigin = fTransportEndPosition ;
|
||||
fPreviousSafety = currentSafety ;
|
||||
fpSafetyHelper->SetCurrentSafety( currentSafety, fTransportEndPosition);
|
||||
|
||||
// Because the Stepping Manager assumes it is from the start point,
|
||||
// add the StepLength
|
||||
//
|
||||
currentSafety += endpointDistance ;
|
||||
|
||||
#ifdef G4DEBUG_TRANSPORT
|
||||
G4cout.precision(12) ;
|
||||
G4cout << "***G4Transportation::AlongStepGPIL ** " << G4endl ;
|
||||
G4cout << " Called Navigator->ComputeSafety at " << fTransportEndPosition
|
||||
<< " and it returned safety= " << endSafety << G4endl ;
|
||||
G4cout << " Adding endpoint distance " << endpointDistance
|
||||
<< " to obtain pseudo-safety= " << currentSafety << G4endl ;
|
||||
G4cout.precision(12) ;
|
||||
G4cout << "***G4Transportation::AlongStepGPIL ** " << G4endl ;
|
||||
G4cout << " Called Navigator->ComputeSafety at " << fTransportEndPosition
|
||||
<< " and it returned safety= " << endSafety << G4endl ;
|
||||
G4cout << " Adding endpoint distance " << endpointDistance
|
||||
<< " to obtain pseudo-safety= " << currentSafety << G4endl ;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
fParticleChange.ProposeTrueStepLength(geometryStepLength) ;
|
||||
@@ -723,12 +717,17 @@ G4Transportation::StartTracking(G4Track* aTrack)
|
||||
//
|
||||
if( DoesGlobalFieldExist() ) {
|
||||
fFieldPropagator->ClearPropagatorState();
|
||||
// Resets safety values, in case of overlaps.
|
||||
// Resets all state of field propagator class (ONLY)
|
||||
// including safety values (in case of overlaps and to wipe for first track).
|
||||
|
||||
G4ChordFinder* chordF= fFieldPropagator->GetChordFinder();
|
||||
if( chordF ) chordF->ResetStepEstimate();
|
||||
// G4ChordFinder* chordF= fFieldPropagator->GetChordFinder();
|
||||
// if( chordF ) chordF->ResetStepEstimate();
|
||||
}
|
||||
|
||||
|
||||
// Make sure to clear the chord finders of all fields (ie managers)
|
||||
static G4FieldManagerStore* fieldMgrStore= G4FieldManagerStore::GetInstance();
|
||||
fieldMgrStore->ClearAllChordFindersState();
|
||||
|
||||
// Update the current touchable handle (from the track's)
|
||||
//
|
||||
fCurrentTouchableHandle = aTrack->GetTouchableHandle();
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4UserSpecialCuts.cc,v 1.16 2006/11/14 09:11:18 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4UserSpecialCuts.cc,v 1.17 2007/06/01 07:53:27 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
// History
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4VTrackTerminator.cc,v 1.6 2007/05/11 14:13:20 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4VTrackTerminator.cc,v 1.7 2007/06/01 07:53:27 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// GEANT 4 class source file
|
||||
|
||||
Reference in New Issue
Block a user