Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
B2::PrimaryGeneratorAction Class Reference
basic » B2 » B2a | basic » B2 » B2b

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

#include <Doxymodules_basic.h>

Inheritance diagram for B2::PrimaryGeneratorAction:
G4VUserPrimaryGeneratorAction

Public Member Functions

 PrimaryGeneratorAction ()
 
 ~PrimaryGeneratorAction () override
 
void GeneratePrimaries (G4Event *) override
 
G4ParticleGunGetParticleGun ()
 

Private Attributes

G4ParticleGunfParticleGun = nullptr
 

Detailed Description

The primary generator action class with particle gum.

It defines a single particle which hits the Tracker perpendicular to the input face. The type of the particle can be changed via the G4 build-in commands of G4ParticleGun class (see the macros provided with this example).

Definition at line 44 of file Doxymodules_basic.h.

Constructor & Destructor Documentation

◆ PrimaryGeneratorAction()

B2::PrimaryGeneratorAction::PrimaryGeneratorAction ( )

Definition at line 47 of file PrimaryGeneratorAction.cc.

48{
49 G4int nofParticles = 1;
50 fParticleGun = new G4ParticleGun(nofParticles);
51
52 // default particle kinematic
53
54 G4ParticleDefinition* particleDefinition
55 = G4ParticleTable::GetParticleTable()->FindParticle("proton");
56
57 fParticleGun->SetParticleDefinition(particleDefinition);
58 fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.));
59 fParticleGun->SetParticleEnergy(3.0*GeV);
60}

◆ ~PrimaryGeneratorAction()

B2::PrimaryGeneratorAction::~PrimaryGeneratorAction ( )
override

Definition at line 64 of file PrimaryGeneratorAction.cc.

65{
66 delete fParticleGun;
67}

Member Function Documentation

◆ GeneratePrimaries()

void B2::PrimaryGeneratorAction::GeneratePrimaries ( G4Event anEvent)
override

Definition at line 71 of file PrimaryGeneratorAction.cc.

72{
73 // This function is called at the begining of event
74
75 // In order to avoid dependence of PrimaryGeneratorAction
76 // on DetectorConstruction class we get world volume
77 // from G4LogicalVolumeStore.
78
79 G4double worldZHalfLength = 0;
80 G4LogicalVolume* worldLV
81 = G4LogicalVolumeStore::GetInstance()->GetVolume("World");
82 G4Box* worldBox = nullptr;
83 if ( worldLV ) worldBox = dynamic_cast<G4Box*>(worldLV->GetSolid());
84 if ( worldBox ) worldZHalfLength = worldBox->GetZHalfLength();
85 else {
86 G4cerr << "World volume of box not found." << G4endl;
87 G4cerr << "Perhaps you have changed geometry." << G4endl;
88 G4cerr << "The gun will be place in the center." << G4endl;
89 }
90
91 // Note that this particular case of starting a primary particle on the world boundary
92 // requires shooting in a direction towards inside the world.
93 fParticleGun->SetParticlePosition(G4ThreeVector(0., 0., -worldZHalfLength));
94
95 fParticleGun->GeneratePrimaryVertex(anEvent);
96}

◆ GetParticleGun()

G4ParticleGun * B2::PrimaryGeneratorAction::GetParticleGun ( )
inline

Definition at line 57 of file PrimaryGeneratorAction.hh.

57{return fParticleGun;}

Member Data Documentation

◆ fParticleGun

G4ParticleGun* B2::PrimaryGeneratorAction::fParticleGun = nullptr
private

Definition at line 60 of file PrimaryGeneratorAction.hh.


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

Applications | User Support | Publications | Collaboration