ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4PhononReflection.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4PhononReflection.cc
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
//
28
//
29
// This process handles the interaction of phonons with
30
// boundaries. Implementation of this class is highly
31
// geometry dependent.Currently, phonons are killed when
32
// they reach a boundary. If the other side of the
33
// boundary was Al, a hit is registered.
34
//
35
//
36
// 20131115 Throw exception if track's polarization state is invalid.
37
38
#include "
G4PhononReflection.hh
"
39
#include "
G4ExceptionSeverity.hh
"
40
#include "
G4GeometryTolerance.hh
"
41
#include "
G4LatticePhysical.hh
"
42
#include "
G4PhononLong.hh
"
43
#include "
G4PhononTransFast.hh
"
44
#include "
G4PhononTransSlow.hh
"
45
#include "
G4PhysicalConstants.hh
"
46
#include "
G4Step.hh
"
47
#include "
G4StepPoint.hh
"
48
#include "
G4SystemOfUnits.hh
"
49
#include "
G4VParticleChange.hh
"
50
51
52
G4PhononReflection::G4PhononReflection
(
const
G4String
& aName)
53
:
G4VPhononProcess
(aName),
54
kCarTolerance
(
G4GeometryTolerance
::
GetInstance
()->GetSurfaceTolerance()) {;}
55
56
G4PhononReflection::~G4PhononReflection
() {;}
57
58
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
59
60
// Always return DBL_MAX and Forced. This ensures that the process is
61
// called at the end of every step. In PostStepDoIt the process
62
// decides whether the step encountered a volume boundary and a
63
// reflection should be applied
64
65
G4double
G4PhononReflection::GetMeanFreePath
(
const
G4Track
&,
G4double
,
66
G4ForceCondition
*
condition
) {
67
*condition =
Forced
;
68
return
DBL_MAX
;
69
}
70
71
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
72
73
// This process handles the interaction of phonons with
74
// boundaries. Implementation of this class is highly geometry
75
// dependent.Currently, phonons are killed when they reach a
76
// boundary. If the other side of the boundary was Al, a hit is
77
// registered.
78
79
G4VParticleChange
*
G4PhononReflection::PostStepDoIt
(
const
G4Track
& aTrack,
80
const
G4Step
& aStep) {
81
aParticleChange
.
Initialize
(aTrack);
82
83
//Check if current step is limited by a volume boundary
84
G4StepPoint
* postStepPoint = aStep.
GetPostStepPoint
();
85
if
(postStepPoint->
GetStepStatus
()!=
fGeomBoundary
) {
86
//make sure that correct phonon velocity is used after the step
87
int
pol =
GetPolarization
(aTrack);
88
if
(pol < 0 || pol > 2) {
89
G4Exception
(
"G4PhononReflection::PostStepDoIt"
,
"Phonon001"
,
90
EventMustBeAborted
,
"Track is not a phonon"
);
91
return
&
aParticleChange
;
// NOTE: Will never get here
92
}
93
94
// FIXME: This should be using wave-vector, shouldn't it?
95
G4double
vg =
theLattice
->
MapKtoV
(pol, aTrack.
GetMomentumDirection
());
96
97
//Since step was not a volume boundary, just set correct phonon velocity and return
98
aParticleChange
.
ProposeVelocity
(vg);
99
return
&
aParticleChange
;
100
}
101
102
// do nothing but return is the step is too short
103
// This is to allow actual reflection where after
104
// the first boundary crossing a second, infinitesimal
105
// step occurs crossing back into the original volume
106
if
(aTrack.
GetStepLength
()<=
kCarTolerance
/2) {
107
return
&
aParticleChange
;
108
}
109
110
G4double
eKin = aTrack.
GetKineticEnergy
();
111
aParticleChange
.
ProposeNonIonizingEnergyDeposit
(eKin);
112
aParticleChange
.
ProposeTrackStatus
(
fStopAndKill
);
113
114
return
&
aParticleChange
;
115
}
116
117
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
118
119
geant4
tree
geant4-10.6-release
source
processes
solidstate
phonon
src
G4PhononReflection.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:52
using
1.8.2 with
ECCE GitHub integration