Geant4
10.03
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
TransitionRadiationPhysics.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
// $Id: TransitionRadiationPhysics.cc 85047 2014-10-23 13:06:38Z maire $
27
//
28
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
29
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
30
31
#include "
TransitionRadiationPhysics.hh
"
32
#include "DetectorConstruction.hh"
33
#include "
G4VXTRenergyLoss.hh
"
34
#include "
G4ProcessManager.hh
"
35
#include "
G4Electron.hh
"
36
#include "
G4Positron.hh
"
37
38
#include "
G4VXTRenergyLoss.hh
"
39
#include "
G4RegularXTRadiator.hh
"
40
#include "
G4TransparentRegXTRadiator.hh
"
41
#include "
G4GammaXTRadiator.hh
"
42
#include "
G4StrawTubeXTRadiator.hh
"
43
44
#include "
G4XTRGammaRadModel.hh
"
45
#include "
G4XTRRegularRadModel.hh
"
46
#include "
G4XTRTransparentRegRadModel.hh
"
47
#include "
XTRTransparentRegRadModel.hh
"
48
49
G4ThreadLocal
50
G4VXTRenergyLoss
*
TransitionRadiationPhysics::fXTRProcess
=
nullptr
;
51
52
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
53
54
TransitionRadiationPhysics::TransitionRadiationPhysics
(
G4int
verb,
55
DetectorConstruction
* ptr)
56
:
G4VPhysicsConstructor
(
"XTR"
),
57
fDetector(ptr),
58
fVerbose(verb),
59
fXTRModel(
"transpM"
)
60
{}
61
62
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
63
64
TransitionRadiationPhysics::~TransitionRadiationPhysics
()
65
{}
66
67
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
68
69
void
TransitionRadiationPhysics::ConstructProcess
()
70
{
71
if
(
"dummy"
==
fXTRModel
) {
return
; }
72
if
(0 <
fVerbose
) {
73
G4cout
<<
"TransitionRadiationPhysics: XTR model <"
<<
fXTRModel
74
<<
">"
<<
G4endl
;
75
}
76
RadiatorDescription
* rDescription =
fDetector
->
GetRadiatorDescription
();
77
78
if
(
fXTRModel
==
"gammaR"
) {
79
80
fXTRProcess
=
new
G4GammaXTRadiator
(rDescription->
fLogicalVolume
,
81
100., 100.,
82
rDescription->
fFoilMaterial
,
83
rDescription->
fGasMaterial
,
84
rDescription->
fFoilThickness
,
85
rDescription->
fGasThickness
,
86
rDescription->
fFoilNumber
,
87
"GammaXTRadiator"
);
88
}
89
else
if
(
fXTRModel
==
"gammaM"
)
90
{
91
fXTRProcess
=
new
G4XTRGammaRadModel
(rDescription->
fLogicalVolume
,
92
100., 100.,
93
rDescription->
fFoilMaterial
,
94
rDescription->
fGasMaterial
,
95
rDescription->
fFoilThickness
,
96
rDescription->
fGasThickness
,
97
rDescription->
fFoilNumber
,
98
"GammaXTRadiator"
);
99
}
100
else
if
(
fXTRModel
==
"strawR"
)
101
{
102
fXTRProcess
=
new
G4StrawTubeXTRadiator
(rDescription->
fLogicalVolume
,
103
rDescription->
fFoilMaterial
,
104
rDescription->
fGasMaterial
,
105
0.53,
106
3.14159,
107
fDetector
->
GetAbsorberMaterial
(),
108
true
,
109
"strawXTRadiator"
);
110
}
111
else
if
(
fXTRModel
==
"regR"
)
112
{
113
fXTRProcess
=
new
G4RegularXTRadiator
(rDescription->
fLogicalVolume
,
114
rDescription->
fFoilMaterial
,
115
rDescription->
fGasMaterial
,
116
rDescription->
fFoilThickness
,
117
rDescription->
fGasThickness
,
118
rDescription->
fFoilNumber
,
119
"RegularXTRadiator"
);
120
}
121
else
if
(
fXTRModel
==
"transpR"
)
122
{
123
// G4TransparentRegXTRadiator*
124
fXTRProcess
=
new
G4TransparentRegXTRadiator
(rDescription->
fLogicalVolume
,
125
rDescription->
fFoilMaterial
,
126
rDescription->
fGasMaterial
,
127
rDescription->
fFoilThickness
,
128
rDescription->
fGasThickness
,
129
rDescription->
fFoilNumber
,
130
"RegularXTRadiator"
);
131
}
132
else
if
(
fXTRModel
==
"regM"
)
133
{
134
fXTRProcess
=
new
G4XTRRegularRadModel
(rDescription->
fLogicalVolume
,
135
rDescription->
fFoilMaterial
,
136
rDescription->
fGasMaterial
,
137
rDescription->
fFoilThickness
,
138
rDescription->
fGasThickness
,
139
rDescription->
fFoilNumber
,
140
"RegularXTRadiator"
);
141
142
}
143
else
if
(
fXTRModel
==
"transpM"
)
144
{
145
fXTRProcess
=
new
XTRTransparentRegRadModel
(rDescription->
fLogicalVolume
,
146
rDescription->
fFoilMaterial
,
147
rDescription->
fGasMaterial
,
148
rDescription->
fFoilThickness
,
149
rDescription->
fGasThickness
,
150
rDescription->
fFoilNumber
,
151
"RegularXTRadiator"
);
152
}
153
if
(!
fXTRProcess
) {
154
if
(0 <
fVerbose
) {
155
G4cout
<<
"TransitionRadiationPhysics: XTR model <"
<<
fXTRModel
156
<<
"> is not known - no XTR process defined"
<<
G4endl
;
157
}
158
return
;
159
}
160
161
fXTRProcess
->
SetVerboseLevel
(
fVerbose
);
162
163
G4Electron
* elec =
G4Electron::Electron
();
164
G4ProcessManager
* manager = elec->
GetProcessManager
();
165
manager->
AddDiscreteProcess
(
fXTRProcess
);
166
167
G4Positron
* posi =
G4Positron::Positron
();
168
manager = posi->
GetProcessManager
();
169
manager->
AddDiscreteProcess
(
fXTRProcess
);
170
}
171
172
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
173
TransitionRadiationPhysics::TransitionRadiationPhysics
TransitionRadiationPhysics(G4int verb, DetectorConstruction *ptr)
Definition:
TransitionRadiationPhysics.cc:54
RadiatorDescription::fGasThickness
G4double fGasThickness
Definition:
RadiatorDescription.hh:52
TransitionRadiationPhysics::fXTRModel
G4String fXTRModel
Definition:
TransitionRadiationPhysics.hh:65
DetectorConstruction::GetRadiatorDescription
RadiatorDescription * GetRadiatorDescription() const
Definition:
DetectorConstruction.cc:142
G4VXTRenergyLoss.hh
G4ProcessManager::AddDiscreteProcess
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
XTRTransparentRegRadModel
Definition:
XTRTransparentRegRadModel.hh:53
G4GammaXTRadiator.hh
G4XTRGammaRadModel.hh
G4GammaXTRadiator
Definition:
G4GammaXTRadiator.hh:57
XTRTransparentRegRadModel.hh
Definition of the XTRTransparentRegRadModel class.
G4ThreadLocal
#define G4ThreadLocal
Definition:
tls.hh:89
G4int
int G4int
Definition:
G4Types.hh:78
G4Positron
Definition:
G4Positron.hh:51
G4StrawTubeXTRadiator.hh
TransitionRadiationPhysics::fXTRProcess
static G4ThreadLocal G4VXTRenergyLoss * fXTRProcess
Definition:
TransitionRadiationPhysics.hh:67
G4RegularXTRadiator
Definition:
G4RegularXTRadiator.hh:50
RadiatorDescription::fFoilNumber
G4int fFoilNumber
Definition:
RadiatorDescription.hh:53
G4cout
G4GLOB_DLL std::ostream G4cout
TransitionRadiationPhysics::fVerbose
G4int fVerbose
Definition:
TransitionRadiationPhysics.hh:64
G4RegularXTRadiator.hh
DetectorConstruction::GetAbsorberMaterial
G4Material * GetAbsorberMaterial()
Definition:
DetectorConstruction.hh:83
G4TransparentRegXTRadiator.hh
G4Positron.hh
RadiatorDescription
Definition:
RadiatorDescription.hh:42
G4XTRTransparentRegRadModel.hh
TransitionRadiationPhysics::ConstructProcess
virtual void ConstructProcess()
Definition:
TransitionRadiationPhysics.cc:69
G4ProcessManager.hh
G4XTRRegularRadModel.hh
G4Positron::Positron
static G4Positron * Positron()
Definition:
G4Positron.cc:94
G4Electron.hh
TransitionRadiationPhysics::fDetector
DetectorConstruction * fDetector
Definition:
TransitionRadiationPhysics.hh:59
G4StrawTubeXTRadiator
Definition:
G4StrawTubeXTRadiator.hh:53
G4ParticleDefinition::GetProcessManager
G4ProcessManager * GetProcessManager() const
Definition:
G4ParticleDefinition.cc:247
G4XTRRegularRadModel
Definition:
G4XTRRegularRadModel.hh:49
G4VXTRenergyLoss
Definition:
G4VXTRenergyLoss.hh:74
RadiatorDescription::fFoilMaterial
G4Material * fFoilMaterial
Definition:
RadiatorDescription.hh:49
G4Electron::Electron
static G4Electron * Electron()
Definition:
G4Electron.cc:94
DetectorConstruction
Detector construction class to demonstrate various ways of placement.
Definition:
DetectorConstruction.hh:46
G4endl
#define G4endl
Definition:
G4ios.hh:61
G4ProcessManager
Definition:
G4ProcessManager.hh:106
G4XTRGammaRadModel
Definition:
G4XTRGammaRadModel.hh:56
TransitionRadiationPhysics::~TransitionRadiationPhysics
virtual ~TransitionRadiationPhysics()
Definition:
TransitionRadiationPhysics.cc:64
RadiatorDescription::fFoilThickness
G4double fFoilThickness
Definition:
RadiatorDescription.hh:51
G4TransparentRegXTRadiator
Definition:
G4TransparentRegXTRadiator.hh:51
TransitionRadiationPhysics.hh
Definition of the TransitionRadiationPhysics class.
RadiatorDescription::fLogicalVolume
G4LogicalVolume * fLogicalVolume
Definition:
RadiatorDescription.hh:48
RadiatorDescription::fGasMaterial
G4Material * fGasMaterial
Definition:
RadiatorDescription.hh:50
G4VPhysicsConstructor
Definition:
G4VPhysicsConstructor.hh:121
G4VProcess::SetVerboseLevel
void SetVerboseLevel(G4int value)
Definition:
G4VProcess.hh:437
G4Electron
Definition:
G4Electron.hh:50
geant4.10.03
examples
extended
electromagnetic
TestEm10
src
TransitionRadiationPhysics.cc
Generated on Thu Feb 14 2002 02:27:45 for Geant4 by
1.8.8