Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
PrimaryGeneratorAction Class Reference

#include <PrimaryGeneratorAction.hh>

Inheritance diagram for PrimaryGeneratorAction:
G4VUserPrimaryGeneratorAction

Public Member Functions

 PrimaryGeneratorAction (DetectorConstruction *)
 
 ~PrimaryGeneratorAction () override
 
void SetDefaultKinematic (G4int)
 
void SetRndmBeam (G4double val)
 
void GeneratePrimaries (G4Event *) override
 
G4ParticleGunGetParticleGun ()
 

Private Attributes

G4ParticleGunfParticleGun = nullptr
 
DetectorConstructionfDetector = nullptr
 
G4double fRndmBeam = 0.
 
PrimaryGeneratorMessengerfGunMessenger = nullptr
 

Detailed Description

Definition at line 46 of file PrimaryGeneratorAction.hh.

Constructor & Destructor Documentation

◆ PrimaryGeneratorAction()

PrimaryGeneratorAction::PrimaryGeneratorAction ( DetectorConstruction det)

Definition at line 47 of file PrimaryGeneratorAction.cc.

48 :fDetector(det)
49{
52
53 //create a messenger for this class
55}
PrimaryGeneratorMessenger * fGunMessenger
DetectorConstruction * fDetector

◆ ~PrimaryGeneratorAction()

PrimaryGeneratorAction::~PrimaryGeneratorAction ( )
override

Definition at line 59 of file PrimaryGeneratorAction.cc.

60{
61 delete fParticleGun;
62 delete fGunMessenger;
63}

Member Function Documentation

◆ SetDefaultKinematic()

void PrimaryGeneratorAction::SetDefaultKinematic ( G4int  front)

Definition at line 67 of file PrimaryGeneratorAction.cc.

68{
69 G4ParticleDefinition* particle
70 = G4ParticleTable::GetParticleTable()->FindParticle("e-");
71 fParticleGun->SetParticleDefinition(particle);
72 fParticleGun->SetParticleMomentumDirection(G4ThreeVector(1.,0.,0.));
73 fParticleGun->SetParticleEnergy(100*MeV);
74 G4double position = 0.*cm;
75 if (front) position = -0.5*(fDetector->GetSize());
76 fParticleGun->SetParticlePosition(G4ThreeVector(position,0.*cm,0.*cm));
77}

◆ SetRndmBeam()

void PrimaryGeneratorAction::SetRndmBeam ( G4double  val)
inline

Definition at line 54 of file PrimaryGeneratorAction.hh.

◆ GeneratePrimaries()

void PrimaryGeneratorAction::GeneratePrimaries ( G4Event anEvent)
override

Definition at line 81 of file PrimaryGeneratorAction.cc.

82{
83 //this function is called at the begining of event
84 //
85 //randomize the beam, if requested.
86 if (fRndmBeam > 0.)
87 {
88 G4ThreeVector oldPosition = fParticleGun->GetParticlePosition();
89 G4double rbeam = 0.5*(fDetector->GetSize())*fRndmBeam;
90 G4double x0 = oldPosition.x();
91 G4double y0 = oldPosition.y() + (2*G4UniformRand()-1.)*rbeam;
92 G4double z0 = oldPosition.z() + (2*G4UniformRand()-1.)*rbeam;
93 fParticleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0));
94 fParticleGun->GeneratePrimaryVertex(anEvent);
95 fParticleGun->SetParticlePosition(oldPosition);
96 }
97 else fParticleGun->GeneratePrimaryVertex(anEvent);
98}

◆ GetParticleGun()

G4ParticleGun * PrimaryGeneratorAction::GetParticleGun ( )
inline

Definition at line 57 of file PrimaryGeneratorAction.hh.

57{return fParticleGun;}

Member Data Documentation

◆ fParticleGun

G4ParticleGun* PrimaryGeneratorAction::fParticleGun = nullptr
private

Definition at line 60 of file PrimaryGeneratorAction.hh.

◆ fDetector

DetectorConstruction* PrimaryGeneratorAction::fDetector = nullptr
private

Definition at line 61 of file PrimaryGeneratorAction.hh.

◆ fRndmBeam

G4double PrimaryGeneratorAction::fRndmBeam = 0.
private

Definition at line 62 of file PrimaryGeneratorAction.hh.

◆ fGunMessenger

PrimaryGeneratorMessenger* PrimaryGeneratorAction::fGunMessenger = nullptr
private

Definition at line 63 of file PrimaryGeneratorAction.hh.


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