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
CexmcParticleGun.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file CexmcParticleGun.hh
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: CexmcParticleGun.hh
30
*
31
* Description: particle gun
32
*
33
* Version: 1.0
34
* Created: 15.12.2009 00:41:16
35
* Revision: none
36
* Compiler: gcc
37
*
38
* Author: Alexey Radkov (),
39
* Company: PNPI
40
*
41
* =============================================================================
42
*/
43
44
#ifndef CEXMC_PARTICLE_GUN_HH
45
#define CEXMC_PARTICLE_GUN_HH
46
47
#include <
G4ParticleGun.hh
>
48
#include <
G4ThreeVector.hh
>
49
#include "
CexmcPhysicsManager.hh
"
50
#include "
CexmcException.hh
"
51
52
class
CexmcParticleGunMessenger
;
53
54
55
class
CexmcParticleGun
:
public
G4ParticleGun
56
{
57
public
:
58
explicit
CexmcParticleGun
(
CexmcPhysicsManager
*
physicsManager
,
59
G4int
nmbOfParticles = 1 );
60
61
~CexmcParticleGun
();
62
63
public
:
64
void
PrepareForNewEvent
(
void
);
65
66
public
:
67
const
G4ThreeVector
&
GetOrigPosition
(
void
)
const
;
68
69
const
G4ThreeVector
&
GetOrigDirection
(
void
)
const
;
70
71
G4double
GetOrigMomentumAmp
(
void
)
const
;
72
73
void
SetOrigPosition
(
const
G4ThreeVector
&
position
,
74
G4bool
fromMessenger =
true
);
75
76
void
SetOrigDirection
(
const
G4ThreeVector
& direction,
77
G4bool
fromMessenger =
true
);
78
79
void
SetOrigMomentumAmp
(
G4double
momentumAmp,
80
G4bool
fromMessenger =
true
);
81
82
void
SetBeamParticle
(
G4ParticleDefinition
* particleDefinition,
83
G4bool
fromMessenger =
true
);
84
85
private
:
86
CexmcPhysicsManager
*
physicsManager
;
87
88
G4ThreeVector
origPos
;
89
90
G4ThreeVector
origDir
;
91
92
G4double
origMomentumAmp
;
93
94
private
:
95
CexmcParticleGunMessenger
*
messenger
;
96
};
97
98
99
inline
void
CexmcParticleGun::PrepareForNewEvent
(
void
)
100
{
101
/* this will prevent G4ParticleGun spam about kinetic energy redefinition */
102
particle_energy
= 0.0;
103
particle_momentum
= 0.0;
104
}
105
106
107
inline
const
G4ThreeVector
&
CexmcParticleGun::GetOrigPosition
(
void
)
const
108
{
109
return
origPos
;
110
}
111
112
113
inline
const
G4ThreeVector
&
CexmcParticleGun::GetOrigDirection
(
void
)
const
114
{
115
return
origDir
;
116
}
117
118
119
inline
G4double
CexmcParticleGun::GetOrigMomentumAmp
(
void
)
const
120
{
121
return
origMomentumAmp
;
122
}
123
124
125
inline
void
CexmcParticleGun::SetOrigPosition
(
126
const
G4ThreeVector
&
position
,
G4bool
fromMessenger )
127
{
128
if
( fromMessenger )
129
ThrowExceptionIfProjectIsRead
(
CexmcCmdIsNotAllowed
);
130
131
origPos
=
position
;
132
}
133
134
135
inline
void
CexmcParticleGun::SetOrigDirection
(
136
const
G4ThreeVector
& direction,
G4bool
fromMessenger )
137
{
138
if
( fromMessenger )
139
ThrowExceptionIfProjectIsRead
(
CexmcCmdIsNotAllowed
);
140
141
origDir
= direction;
142
143
physicsManager
->
SetMaxIL
( direction );
144
}
145
146
147
inline
void
CexmcParticleGun::SetOrigMomentumAmp
(
G4double
momentumAmp,
148
G4bool
fromMessenger )
149
{
150
if
( fromMessenger )
151
ThrowExceptionIfProjectIsRead
(
CexmcCmdIsNotAllowed
);
152
153
origMomentumAmp
= momentumAmp;
154
}
155
156
157
inline
void
CexmcParticleGun::SetBeamParticle
(
158
G4ParticleDefinition
* particleDefinition,
G4bool
fromMessenger )
159
{
160
if
( fromMessenger )
161
ThrowExceptionIfProjectIsRead
(
CexmcCmdIsNotAllowed
);
162
163
SetParticleDefinition
( particleDefinition );
164
}
165
166
167
#endif
168
geant4
tree
geant4-10.6-release
examples
advanced
ChargeExchangeMC
include
CexmcParticleGun.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:56
using
1.8.2 with
ECCE GitHub integration