Geant4  10.03.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
F01PrimaryGeneratorAction Class Reference

#include <F01PrimaryGeneratorAction.hh>

Inheritance diagram for F01PrimaryGeneratorAction:
Collaboration diagram for F01PrimaryGeneratorAction:

Public Member Functions

 F01PrimaryGeneratorAction (F01DetectorConstruction *)
 
virtual ~F01PrimaryGeneratorAction ()
 
virtual void GeneratePrimaries (G4Event *)
 
void SetRndmFlag (G4String val)
 
void SetXVertex (G4double x)
 
void SetYVertex (G4double y)
 
void SetZVertex (G4double z)
 
- Public Member Functions inherited from G4VUserPrimaryGeneratorAction
 G4VUserPrimaryGeneratorAction ()
 
virtual ~G4VUserPrimaryGeneratorAction ()
 

Static Public Member Functions

static G4String GetPrimaryName ()
 

Detailed Description

Definition at line 50 of file F01PrimaryGeneratorAction.hh.

Constructor & Destructor Documentation

F01PrimaryGeneratorAction::F01PrimaryGeneratorAction ( F01DetectorConstruction det)

Definition at line 56 of file F01PrimaryGeneratorAction.cc.

59  fParticleGun(0),
60  fDetector(det),
61  fGunMessenger(0),
62  fRndmFlag("off"),
63  fXVertex(0.),
64  fYVertex(0.),
65  fZVertex(0.),
66  fVertexDefined(false)
67 {
68  G4int n_particle = 1;
69  fParticleGun = new G4ParticleGun(n_particle);
70 
71  // create a messenger for this class
72  fGunMessenger = new F01PrimaryGeneratorMessenger(this);
73 
74  // default particle kinematic
75 
77  G4String particleName;
78  G4ParticleDefinition* particle
79  = particleTable->FindParticle(particleName="e-");
80  fParticleGun->SetParticleDefinition(particle);
81 
82  fgPrimaryParticle = particle;
83 
84  fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,-1.));
85  fParticleGun->SetParticleEnergy(0.5*GeV);
86 
87  fZVertex = fDetector->GetAbsorberZpos() -
88  0.5*(fDetector->GetAbsorberThickness());
89  fParticleGun->SetParticlePosition(G4ThreeVector(fXVertex,fYVertex,fZVertex));
90 
91 }
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
CLHEP::Hep3Vector G4ThreeVector
void SetParticleMomentumDirection(G4ParticleMomentum aMomentumDirection)
int G4int
Definition: G4Types.hh:78
void SetParticlePosition(G4ThreeVector aPosition)
void SetParticleEnergy(G4double aKineticEnergy)
static G4ParticleTable * GetParticleTable()
static constexpr double GeV
Definition: G4SIunits.hh:217
void SetParticleDefinition(G4ParticleDefinition *aParticleDefinition)

Here is the call graph for this function:

F01PrimaryGeneratorAction::~F01PrimaryGeneratorAction ( )
virtual

Definition at line 95 of file F01PrimaryGeneratorAction.cc.

96 {
97  delete fParticleGun;
98  delete fGunMessenger;
99 }

Member Function Documentation

void F01PrimaryGeneratorAction::GeneratePrimaries ( G4Event anEvent)
virtual

Implements G4VUserPrimaryGeneratorAction.

Definition at line 103 of file F01PrimaryGeneratorAction.cc.

104 {
105  // this function is called at the begining of event
106  //
107  fgPrimaryParticle = fParticleGun->GetParticleDefinition();
108 
109  G4double x0,y0,z0;
110  if (fVertexDefined)
111  {
112  x0 = fXVertex;
113  y0 = fYVertex;
114  z0 = fZVertex;
115  }
116  else
117  {
118  x0 = 0.;
119  y0 = 0.;
120  z0 = fDetector->GetAbsorberZpos()-0.5*(fDetector->GetAbsorberThickness());
121  }
122 
123  G4double r0,phi0;
124  if (fRndmFlag == "on")
125  {
126  r0 = (fDetector->GetAbsorberRadius())*std::sqrt(G4UniformRand());
127  phi0 = twopi*G4UniformRand();
128  x0 = r0*std::cos(phi0);
129  y0 = r0*std::sin(phi0);
130  }
131 
132  fParticleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0));
133  fParticleGun->GeneratePrimaryVertex(anEvent);
134 }
CLHEP::Hep3Vector G4ThreeVector
virtual void GeneratePrimaryVertex(G4Event *evt)
static constexpr double twopi
Definition: G4SIunits.hh:76
void SetParticlePosition(G4ThreeVector aPosition)
#define G4UniformRand()
Definition: Randomize.hh:97
G4ParticleDefinition * GetParticleDefinition() const
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

G4String F01PrimaryGeneratorAction::GetPrimaryName ( )
static

Definition at line 138 of file F01PrimaryGeneratorAction.cc.

139 {
140  return fgPrimaryParticle->GetParticleName();
141 }
const G4String & GetParticleName() const

Here is the call graph for this function:

void F01PrimaryGeneratorAction::SetRndmFlag ( G4String  val)
inline

Definition at line 58 of file F01PrimaryGeneratorAction.hh.

58 { fRndmFlag = val; }

Here is the caller graph for this function:

void F01PrimaryGeneratorAction::SetXVertex ( G4double  x)

Definition at line 155 of file F01PrimaryGeneratorAction.cc.

156 {
157  fVertexDefined = true;
158  fXVertex = x;
159  G4cout << " X coordinate of the primary vertex = " << fXVertex/mm <<
160  " mm." << G4endl;
161 }
static constexpr double mm
Definition: G4SIunits.hh:115
tuple x
Definition: test.py:50
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61

Here is the caller graph for this function:

void F01PrimaryGeneratorAction::SetYVertex ( G4double  y)

Definition at line 165 of file F01PrimaryGeneratorAction.cc.

166 {
167  fVertexDefined = true;
168  fYVertex = y;
169  G4cout << " Y coordinate of the primary vertex = " << fYVertex/mm <<
170  " mm." << G4endl;
171 }
static constexpr double mm
Definition: G4SIunits.hh:115
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61

Here is the caller graph for this function:

void F01PrimaryGeneratorAction::SetZVertex ( G4double  z)

Definition at line 145 of file F01PrimaryGeneratorAction.cc.

146 {
147  fVertexDefined = true;
148  fZVertex = z;
149  G4cout << " Z coordinate of the primary vertex = " << fZVertex/mm <<
150  " mm." << G4endl;
151 }
static constexpr double mm
Definition: G4SIunits.hh:115
G4GLOB_DLL std::ostream G4cout
tuple z
Definition: test.py:28
#define G4endl
Definition: G4ios.hh:61

Here is the caller graph for this function:


The documentation for this class was generated from the following files: