Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions
F01PrimaryGeneratorAction Class Reference

#include <F01PrimaryGeneratorAction.hh>

Inheritance diagram for F01PrimaryGeneratorAction:
G4VUserPrimaryGeneratorAction

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.

References G4ParticleTable::FindParticle(), F01DetectorConstruction::GetAbsorberThickness(), F01DetectorConstruction::GetAbsorberZpos(), G4ParticleTable::GetParticleTable(), python.hepunit::GeV, G4ParticleGun::SetParticleDefinition(), G4ParticleGun::SetParticleEnergy(), G4ParticleGun::SetParticleMomentumDirection(), and G4VPrimaryGenerator::SetParticlePosition().

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()
void SetParticleDefinition(G4ParticleDefinition *aParticleDefinition)
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.

References G4UniformRand, G4ParticleGun::GeneratePrimaryVertex(), F01DetectorConstruction::GetAbsorberRadius(), F01DetectorConstruction::GetAbsorberThickness(), F01DetectorConstruction::GetAbsorberZpos(), G4ParticleGun::GetParticleDefinition(), G4VPrimaryGenerator::SetParticlePosition(), python.hepunit::twopi, and G4InuclParticleNames::z0.

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)
void SetParticlePosition(G4ThreeVector aPosition)
#define G4UniformRand()
Definition: Randomize.hh:87
G4ParticleDefinition * GetParticleDefinition() const
double G4double
Definition: G4Types.hh:76
G4String F01PrimaryGeneratorAction::GetPrimaryName ( )
static

Definition at line 138 of file F01PrimaryGeneratorAction.cc.

References G4ParticleDefinition::GetParticleName().

139 {
140  return fgPrimaryParticle->GetParticleName();
141 }
const G4String & GetParticleName() const
void F01PrimaryGeneratorAction::SetRndmFlag ( G4String  val)
inline

Definition at line 58 of file F01PrimaryGeneratorAction.hh.

Referenced by F01PrimaryGeneratorMessenger::SetNewValue().

58 { fRndmFlag = val; }
void F01PrimaryGeneratorAction::SetXVertex ( G4double  x)

Definition at line 155 of file F01PrimaryGeneratorAction.cc.

References G4cout, G4endl, python.hepunit::mm, and test::x.

Referenced by F01PrimaryGeneratorMessenger::SetNewValue().

156 {
157  fVertexDefined = true;
158  fXVertex = x;
159  G4cout << " X coordinate of the primary vertex = " << fXVertex/mm <<
160  " mm." << G4endl;
161 }
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
void F01PrimaryGeneratorAction::SetYVertex ( G4double  y)

Definition at line 165 of file F01PrimaryGeneratorAction.cc.

References G4cout, G4endl, and python.hepunit::mm.

Referenced by F01PrimaryGeneratorMessenger::SetNewValue().

166 {
167  fVertexDefined = true;
168  fYVertex = y;
169  G4cout << " Y coordinate of the primary vertex = " << fYVertex/mm <<
170  " mm." << G4endl;
171 }
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
void F01PrimaryGeneratorAction::SetZVertex ( G4double  z)

Definition at line 145 of file F01PrimaryGeneratorAction.cc.

References G4cout, G4endl, python.hepunit::mm, and z.

Referenced by F01PrimaryGeneratorMessenger::SetNewValue().

146 {
147  fVertexDefined = true;
148  fZVertex = z;
149  G4cout << " Z coordinate of the primary vertex = " << fZVertex/mm <<
150  " mm." << G4endl;
151 }
G4double z
Definition: TRTMaterials.hh:39
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61

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