Geant4
10.03.p01
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
G4MaxTimeCuts.cc
Go to the documentation of this file.
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
26
//
27
// --------------------------------------------------------------
28
// GEANT 4
29
//
30
// For information related to this code contact: Alex Howard
31
// e-mail: a.s.howard@ic.ac.uk
32
// --------------------------------------------------------------
33
// Comments
34
//
35
// by A. Howard and H. Araujo
36
// (27th November 2001)
37
//
38
// G4MaxTimeCuts program
39
// --------------------------------------------------------------
40
41
#include "
G4MaxTimeCuts.hh
"
42
43
#include "
G4PhysicalConstants.hh
"
44
#include "
G4Step.hh
"
45
#include "
G4UserLimits.hh
"
46
#include "
G4VParticleChange.hh
"
47
#include "
G4EnergyLossTables.hh
"
48
49
50
G4MaxTimeCuts::G4MaxTimeCuts
(
const
G4String
& aName)
51
:
G4SpecialCuts
(aName)
52
{
53
if
(
verboseLevel
>1) {
54
G4cout
<<
GetProcessName
() <<
" is created "
<<
G4endl
;
55
}
56
SetProcessType
(
fUserDefined
);
57
}
58
59
G4MaxTimeCuts::~G4MaxTimeCuts
()
60
{}
61
62
G4MaxTimeCuts::G4MaxTimeCuts
(
G4MaxTimeCuts
& ) :
G4SpecialCuts
()
63
{}
64
65
66
G4double
G4MaxTimeCuts::PostStepGetPhysicalInteractionLength
(
67
const
G4Track
& aTrack,
68
G4double
,
69
G4ForceCondition
*
condition
70
)
71
{
72
// condition is set to "Not Forced"
73
*condition =
NotForced
;
74
75
G4double
proposedStep =
DBL_MAX
;
76
// get the pointer to UserLimits
77
G4UserLimits
* pUserLimits = aTrack.
GetVolume
()->
GetLogicalVolume
()->
GetUserLimits
();
78
const
G4DynamicParticle
* aParticle = aTrack.
GetDynamicParticle
();
79
80
// can apply cuts for specific particles - use if(particleDef):
81
// G4ParticleDefinition* aParticleDef = aTrack.GetDefinition();
82
83
// G4cout << " Time: " << pUserLimits->GetUserMaxTime(aTrack) << G4endl;
84
85
if
(pUserLimits) {
86
G4double
temp =
DBL_MAX
;
87
//max time limit
88
G4double
dTime= (pUserLimits->
GetUserMaxTime
(aTrack) - aTrack.
GetGlobalTime
());
89
if
(dTime < 0. ) {
90
proposedStep = 0.;
91
}
else
{
92
G4double
beta = (aParticle->
GetTotalMomentum
())/(aParticle->
GetTotalEnergy
());
93
temp = beta*
c_light
*dTime;
94
if
(proposedStep > temp) proposedStep = temp;
95
}
96
97
}
98
return
proposedStep;
99
}
condition
G4double condition(const G4ErrorSymMatrix &m)
G4VProcess::verboseLevel
G4int verboseLevel
Definition:
G4VProcess.hh:368
G4MaxTimeCuts::G4MaxTimeCuts
G4MaxTimeCuts(const G4String &processName="G4MaxTimeCuts")
Definition:
G4MaxTimeCuts.cc:50
G4DynamicParticle::GetTotalEnergy
G4double GetTotalEnergy() const
G4Track::GetDynamicParticle
const G4DynamicParticle * GetDynamicParticle() const
fUserDefined
Definition:
G4ProcessType.hh:54
G4DynamicParticle
Definition:
G4DynamicParticle.hh:73
G4MaxTimeCuts::~G4MaxTimeCuts
virtual ~G4MaxTimeCuts()
Definition:
G4MaxTimeCuts.cc:59
G4Step.hh
G4DynamicParticle::GetTotalMomentum
G4double GetTotalMomentum() const
G4UserLimits
Definition:
G4UserLimits.hh:57
G4cout
G4GLOB_DLL std::ostream G4cout
G4MaxTimeCuts
Definition:
G4MaxTimeCuts.hh:50
G4UserLimits::GetUserMaxTime
virtual G4double GetUserMaxTime(const G4Track &)
G4Track::GetGlobalTime
G4double GetGlobalTime() const
G4VProcess::GetProcessName
const G4String & GetProcessName() const
Definition:
G4VProcess.hh:408
G4PhysicalConstants.hh
G4LogicalVolume::GetUserLimits
G4UserLimits * GetUserLimits() const
G4MaxTimeCuts::PostStepGetPhysicalInteractionLength
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
Definition:
G4MaxTimeCuts.cc:66
G4VPhysicalVolume::GetLogicalVolume
G4LogicalVolume * GetLogicalVolume() const
NotForced
Definition:
G4ForceCondition.hh:56
CLHEP::c_light
static constexpr double c_light
Definition:
PhysicalConstants.h:55
G4Track
Definition:
G4Track.hh:76
G4Track::GetVolume
G4VPhysicalVolume * GetVolume() const
G4VParticleChange.hh
G4endl
#define G4endl
Definition:
G4ios.hh:61
G4VProcess::SetProcessType
void SetProcessType(G4ProcessType)
Definition:
G4VProcess.hh:420
G4double
double G4double
Definition:
G4Types.hh:76
G4SpecialCuts
Definition:
G4SpecialCuts.hh:50
G4ForceCondition
G4ForceCondition
Definition:
G4ForceCondition.hh:49
DBL_MAX
#define DBL_MAX
Definition:
templates.hh:83
G4UserLimits.hh
G4EnergyLossTables.hh
G4MaxTimeCuts.hh
G4String
Definition:
G4String.hh:60
geant4.10.03.p01
source
physics_lists
constructors
limiters
src
G4MaxTimeCuts.cc
Generated on Thu Mar 16 2017 22:38:00 for Geant4 by
1.8.5