Geant4.10
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
geant4.10.00.p01
examples
advanced
ChargeExchangeMC
include
CexmcStudiedPhysics.hh
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
*
29
* Filename: CexmcStudiedPhysics.hh
30
*
31
* Description: studied physics in the target
32
*
33
* Version: 1.0
34
* Created: 18.10.2009 16:10:52
35
* Revision: none
36
* Compiler: gcc
37
*
38
* Author: Alexey Radkov (),
39
* Company: PNPI
40
*
41
* =============================================================================
42
*/
43
44
#ifndef CEXMC_STUDIED_PHYSICS_HH
45
#define CEXMC_STUDIED_PHYSICS_HH
46
47
#include <
G4VPhysicsConstructor.hh
>
48
#include <
G4ProcessManager.hh
>
49
#include <
G4ParticleDefinition.hh
>
50
#include "
CexmcFakeCrossSectionData.hh
"
51
#include "
CexmcStudiedProcess.hh
"
52
#include "
CexmcPhysicsManager.hh
"
53
#include "
CexmcProductionModel.hh
"
54
55
class
G4VProcess
;
56
57
58
template
<
typename
Process >
59
class
CexmcStudiedPhysics
:
public
G4VPhysicsConstructor
60
{
61
public
:
62
explicit
CexmcStudiedPhysics
(
CexmcPhysicsManager
*
physicsManager
);
63
64
virtual
~CexmcStudiedPhysics
();
65
66
public
:
67
void
ConstructParticle
(
void
);
68
69
void
ConstructProcess
(
void
);
70
71
public
:
72
CexmcProductionModel
*
GetProductionModel
(
void
);
73
74
protected
:
75
virtual
void
ApplyInteractionModel
(
G4VProcess
* process );
76
77
protected
:
78
CexmcPhysicsManager
*
physicsManager
;
79
80
CexmcProductionModel
*
productionModel
;
81
82
private
:
83
G4bool
wasActivated;
84
};
85
86
87
template
<
typename
Process >
88
CexmcStudiedPhysics< Process >::CexmcStudiedPhysics
(
89
CexmcPhysicsManager
* physicsManager ) :
90
G4VPhysicsConstructor
(
"studiedPhysics"
), physicsManager( physicsManager ),
91
productionModel( NULL ), wasActivated( false )
92
{
93
}
94
95
96
template
<
typename
Process >
97
CexmcStudiedPhysics< Process >::~CexmcStudiedPhysics
()
98
{
99
}
100
101
102
template
<
typename
Process >
103
void
CexmcStudiedPhysics< Process >::ConstructParticle
(
void
)
104
{
105
if
( productionModel )
106
productionModel->GetIncidentParticle();
107
}
108
109
110
template
<
typename
Process >
111
void
CexmcStudiedPhysics< Process >::ConstructProcess
(
void
)
112
{
113
if
( wasActivated )
114
return
;
115
116
wasActivated =
true
;
117
118
Process * process(
new
Process );
119
120
process->AddDataSet(
new
CexmcFakeCrossSectionData
);
121
122
CexmcStudiedProcess
* studiedProcess(
new
CexmcStudiedProcess
(
123
physicsManager, process->GetProcessType() ) );
124
125
ApplyInteractionModel( process );
126
127
studiedProcess->
RegisterProcess
( process );
128
129
G4ParticleDefinition
* particle( NULL );
130
131
if
( productionModel )
132
particle = productionModel->GetIncidentParticle();
133
134
if
( particle )
135
{
136
G4ProcessManager
* processManager( particle->
GetProcessManager
() );
137
processManager->
AddDiscreteProcess
( studiedProcess );
138
}
139
}
140
141
142
template
<
typename
Process >
143
CexmcProductionModel
*
CexmcStudiedPhysics< Process >::GetProductionModel
(
144
void
)
145
{
146
return
productionModel;
147
}
148
149
150
template
<
typename
Process >
151
void
CexmcStudiedPhysics< Process >::ApplyInteractionModel
(
G4VProcess
* )
152
{
153
}
154
155
156
#endif
157
CexmcPhysicsManager
Definition:
CexmcPhysicsManager.hh:58
CexmcStudiedPhysics::CexmcStudiedPhysics
CexmcStudiedPhysics(CexmcPhysicsManager *physicsManager)
Definition:
CexmcStudiedPhysics.hh:88
CexmcFakeCrossSectionData
Definition:
CexmcFakeCrossSectionData.hh:54
CexmcStudiedProcess.hh
CexmcStudiedPhysics::productionModel
CexmcProductionModel * productionModel
Definition:
CexmcStudiedPhysics.hh:80
G4WrapperProcess::RegisterProcess
virtual void RegisterProcess(G4VProcess *)
Definition:
G4WrapperProcess.cc:161
G4ProcessManager::AddDiscreteProcess
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
CexmcStudiedProcess
Definition:
CexmcStudiedProcess.hh:54
CexmcProductionModel.hh
CexmcStudiedPhysics::ConstructParticle
void ConstructParticle(void)
Definition:
CexmcStudiedPhysics.hh:103
G4ParticleDefinition
Definition:
G4ParticleDefinition.hh:111
CexmcStudiedPhysics::~CexmcStudiedPhysics
virtual ~CexmcStudiedPhysics()
Definition:
CexmcStudiedPhysics.hh:97
G4ParticleDefinition::GetProcessManager
G4ProcessManager * GetProcessManager() const
G4VProcess
Definition:
G4VProcess.hh:75
CexmcStudiedPhysics::ConstructProcess
void ConstructProcess(void)
Definition:
CexmcStudiedPhysics.hh:111
G4VPhysicsConstructor.hh
G4bool
bool G4bool
Definition:
G4Types.hh:79
CexmcPhysicsManager.hh
G4ProcessManager.hh
G4ParticleDefinition.hh
CexmcProductionModel
Definition:
CexmcProductionModel.hh:60
CexmcStudiedPhysics::physicsManager
CexmcPhysicsManager * physicsManager
Definition:
CexmcStudiedPhysics.hh:78
CexmcFakeCrossSectionData.hh
G4ProcessManager
Definition:
G4ProcessManager.hh:106
CexmcStudiedPhysics
Definition:
CexmcStudiedPhysics.hh:59
G4VPhysicsConstructor
Definition:
G4VPhysicsConstructor.hh:121
CexmcStudiedPhysics::ApplyInteractionModel
virtual void ApplyInteractionModel(G4VProcess *process)
Definition:
CexmcStudiedPhysics.hh:151
CexmcStudiedPhysics::GetProductionModel
CexmcProductionModel * GetProductionModel(void)
Definition:
CexmcStudiedPhysics.hh:143
Generated on Wed Apr 30 2014 15:54:28 for Geant4.10 by
1.8.7