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

The primary generator action class with particle gun. More...

#include <Doxymodules_analysis.h>

Inheritance diagram for B1PrimaryGeneratorAction:
G4VUserPrimaryGeneratorAction

Public Member Functions

 B1PrimaryGeneratorAction ()
 
virtual ~B1PrimaryGeneratorAction ()
 
virtual void GeneratePrimaries (G4Event *)
 
const G4ParticleGunGetParticleGun () const
 

Private Attributes

G4ParticleGunfParticleGun
 
G4BoxfEnvelopeBox
 

Detailed Description

The primary generator action class with particle gun.

The default kinematic is a 6 MeV gamma, randomly distribued in front of the phantom across 80% of the (X,Y) phantom size.

Definition at line 50 of file Doxymodules_analysis.h.

Constructor & Destructor Documentation

◆ B1PrimaryGeneratorAction()

B1PrimaryGeneratorAction::B1PrimaryGeneratorAction ( )

Definition at line 44 of file B1PrimaryGeneratorAction.cc.

46 fParticleGun(0),
48{
49 G4int n_particle = 1;
50 fParticleGun = new G4ParticleGun(n_particle);
51
52 // default particle kinematic
53 G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
54 G4String particleName;
55 G4ParticleDefinition* particle
56 = particleTable->FindParticle(particleName="gamma");
57 fParticleGun->SetParticleDefinition(particle);
58 fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.));
59 fParticleGun->SetParticleEnergy(6.*MeV);
60}

◆ ~B1PrimaryGeneratorAction()

B1PrimaryGeneratorAction::~B1PrimaryGeneratorAction ( )
virtual

Definition at line 64 of file B1PrimaryGeneratorAction.cc.

65{
66 delete fParticleGun;
67}

Member Function Documentation

◆ GeneratePrimaries()

void B1PrimaryGeneratorAction::GeneratePrimaries ( G4Event anEvent)
virtual

Definition at line 71 of file B1PrimaryGeneratorAction.cc.

72{
73 //this function is called at the begining of ecah event
74 //
75
76 // In order to avoid dependence of PrimaryGeneratorAction
77 // on DetectorConstruction class we get Envelope volume
78 // from G4LogicalVolumeStore.
79
80 G4double envSizeXY = 0;
81 G4double envSizeZ = 0;
82
83 if (!fEnvelopeBox)
84 {
85 G4LogicalVolume* envLV
86 = G4LogicalVolumeStore::GetInstance()->GetVolume("Envelope");
87 if ( envLV ) fEnvelopeBox = dynamic_cast<G4Box*>(envLV->GetSolid());
88 }
89
90 if ( fEnvelopeBox ) {
91 envSizeXY = fEnvelopeBox->GetXHalfLength()*2.;
92 envSizeZ = fEnvelopeBox->GetZHalfLength()*2.;
93 }
94 else {
95 G4ExceptionDescription msg;
96 msg << "Envelope volume of box shape not found.\n";
97 msg << "Perhaps you have changed geometry.\n";
98 msg << "The gun will be place at the center.";
99 G4Exception("B1PrimaryGeneratorAction::GeneratePrimaries()",
100 "MyCode0002",JustWarning,msg);
101 }
102
103 G4double size = 0.8;
104 G4double x0 = size * envSizeXY * (G4UniformRand()-0.5);
105 G4double y0 = size * envSizeXY * (G4UniformRand()-0.5);
106 G4double z0 = -0.5 * envSizeZ;
107
108 fParticleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0));
109
110 fParticleGun->GeneratePrimaryVertex(anEvent);
111}

◆ GetParticleGun()

const G4ParticleGun * B1PrimaryGeneratorAction::GetParticleGun ( ) const
inline

Definition at line 56 of file B1PrimaryGeneratorAction.hh.

56{ return fParticleGun; }

Member Data Documentation

◆ fParticleGun

G4ParticleGun* B1PrimaryGeneratorAction::fParticleGun
private

Definition at line 59 of file B1PrimaryGeneratorAction.hh.

◆ fEnvelopeBox

G4Box* B1PrimaryGeneratorAction::fEnvelopeBox
private

Definition at line 60 of file B1PrimaryGeneratorAction.hh.


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

Applications | User Support | Publications | Collaboration