ECCE @ EIC Software
 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 
53 
54 
56 {
57  public:
59  G4int nmbOfParticles = 1 );
60 
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 
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:
87 
89 
91 
93 
94  private:
96 };
97 
98 
100 {
101  /* this will prevent G4ParticleGun spam about kinetic energy redefinition */
102  particle_energy = 0.0;
103  particle_momentum = 0.0;
104 }
105 
106 
108 {
109  return origPos;
110 }
111 
112 
114 {
115  return origDir;
116 }
117 
118 
120 {
121  return origMomentumAmp;
122 }
123 
124 
126  const G4ThreeVector & position, G4bool fromMessenger )
127 {
128  if ( fromMessenger )
130 
131  origPos = position;
132 }
133 
134 
136  const G4ThreeVector & direction, G4bool fromMessenger )
137 {
138  if ( fromMessenger )
140 
141  origDir = direction;
142 
143  physicsManager->SetMaxIL( direction );
144 }
145 
146 
148  G4bool fromMessenger )
149 {
150  if ( fromMessenger )
152 
153  origMomentumAmp = momentumAmp;
154 }
155 
156 
158  G4ParticleDefinition * particleDefinition, G4bool fromMessenger )
159 {
160  if ( fromMessenger )
162 
163  SetParticleDefinition( particleDefinition );
164 }
165 
166 
167 #endif
168