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

#include <Doxymodules_field.h>

Inheritance diagram for F04PrimaryGeneratorAction:
G4VUserPrimaryGeneratorAction

Public Member Functions

 F04PrimaryGeneratorAction (F04DetectorConstruction *)
 
 ~F04PrimaryGeneratorAction () override
 
void GeneratePrimaries (G4Event *) override
 
void SetRndmFlag (G4String val)
 
void SetXvertex (G4double x)
 
void SetYvertex (G4double y)
 
void SetZvertex (G4double z)
 

Private Attributes

F04DetectorConstructionfDetector = nullptr
 
G4ParticleGunfParticleGun = nullptr
 
F04PrimaryGeneratorMessengerfGunMessenger = nullptr
 
G4String fRndmFlag ="off"
 
G4bool fFirst = false
 
G4AffineTransform fGlobal2local
 
G4double fXvertex = 0.
 
G4double fYvertex = 0.
 
G4double fZvertex = 0.
 
G4bool fVertexDefined = false
 

Detailed Description

Definition at line 112 of file Doxymodules_field.h.

Constructor & Destructor Documentation

◆ F04PrimaryGeneratorAction()

F04PrimaryGeneratorAction::F04PrimaryGeneratorAction ( F04DetectorConstruction detectorConstruction)

Definition at line 51 of file F04PrimaryGeneratorAction.cc.

53 : fDetector(detectorConstruction)
54{
55 G4int n_particle = 1;
56 fParticleGun = new G4ParticleGun(n_particle);
57
59
60 G4String particleName;
61 G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
62
63 fParticleGun->SetParticleDefinition(particleTable->
64 FindParticle(particleName="proton"));
65 fParticleGun->SetParticleEnergy(500.*MeV);
66 fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.));
67
69 fParticleGun->SetParticlePosition(G4ThreeVector(fXvertex,fYvertex,fZvertex));
70}
F04DetectorConstruction * fDetector
F04PrimaryGeneratorMessenger * fGunMessenger

◆ ~F04PrimaryGeneratorAction()

F04PrimaryGeneratorAction::~F04PrimaryGeneratorAction ( )
override

Definition at line 74 of file F04PrimaryGeneratorAction.cc.

75{
76 delete fParticleGun;
77 delete fGunMessenger;
78}

Member Function Documentation

◆ GeneratePrimaries()

void F04PrimaryGeneratorAction::GeneratePrimaries ( G4Event anEvent)
override

Definition at line 82 of file F04PrimaryGeneratorAction.cc.

83{
84
85 if (!fFirst) {
86
87 fFirst = true;
88 G4ThreeVector direction(0.0,0.0,1.0);
89
90 G4Navigator* theNavigator =
91 G4TransportationManager::GetTransportationManager()->
92 GetNavigatorForTracking();
93 if ( theNavigator->GetWorldVolume() )
94 {
95 auto aNavigator = new G4Navigator();
96 aNavigator->SetWorldVolume(theNavigator->GetWorldVolume());
97
98 G4ThreeVector center(0.,0.,0.);
99 aNavigator->LocateGlobalPointAndSetup(center,nullptr,false);
100
101 G4TouchableHandle touchable = aNavigator->CreateTouchableHistoryHandle();
102
103 // set Global2local transform
104 fGlobal2local = touchable->GetHistory()->GetTopTransform();
105
106 direction = fGlobal2local.Inverse().TransformAxis(direction);
107 delete aNavigator;
108 }
109
110 fParticleGun->SetParticleMomentumDirection(direction);
111 }
112
113 G4double x0,y0,z0 ;
114
116 {
117 x0 = fXvertex ;
118 y0 = fYvertex ;
119 z0 = fZvertex ;
120 }
121 else
122 {
123 x0 = 0. ;
124 y0 = 0. ;
125 z0 = -0.5*(fDetector->GetTargetThickness());
126 }
127
128 G4double r0, phi0;
129
130 if (fRndmFlag == "on")
131 {
132 r0 = (fDetector->GetTargetRadius())*std::sqrt(G4UniformRand());
133 phi0 = twopi*G4UniformRand();
134 x0 = r0*std::cos(phi0);
135 y0 = r0*std::sin(phi0);
136 }
137
138 G4ThreeVector localPosition(x0,y0,z0);
139 G4ThreeVector globalPosition =
140 fGlobal2local.Inverse().TransformPoint(localPosition);
141
142 fParticleGun->SetParticlePosition(globalPosition);
143 fParticleGun->GeneratePrimaryVertex(anEvent);
144}

◆ SetRndmFlag()

void F04PrimaryGeneratorAction::SetRndmFlag ( G4String  val)
inline

Definition at line 57 of file F04PrimaryGeneratorAction.hh.

57{ fRndmFlag = val;}

◆ SetXvertex()

void F04PrimaryGeneratorAction::SetXvertex ( G4double  x)

Definition at line 148 of file F04PrimaryGeneratorAction.cc.

149{
150 fVertexDefined = true;
151 fXvertex = x;
152 G4cout << " X coordinate of the primary vertex = " << fXvertex/mm <<
153 " mm." << G4endl;
154}

◆ SetYvertex()

void F04PrimaryGeneratorAction::SetYvertex ( G4double  y)

Definition at line 158 of file F04PrimaryGeneratorAction.cc.

159{
160 fVertexDefined = true;
161 fYvertex = y;
162 G4cout << " Y coordinate of the primary vertex = " << fYvertex/mm <<
163 " mm." << G4endl;
164}

◆ SetZvertex()

void F04PrimaryGeneratorAction::SetZvertex ( G4double  z)

Definition at line 168 of file F04PrimaryGeneratorAction.cc.

169{
170 fVertexDefined = true;
171 fZvertex = z;
172 G4cout << " Z coordinate of the primary vertex = " << fZvertex/mm <<
173 " mm." << G4endl;
174}

Member Data Documentation

◆ fDetector

F04DetectorConstruction* F04PrimaryGeneratorAction::fDetector = nullptr
private

Definition at line 65 of file F04PrimaryGeneratorAction.hh.

◆ fParticleGun

G4ParticleGun* F04PrimaryGeneratorAction::fParticleGun = nullptr
private

Definition at line 67 of file F04PrimaryGeneratorAction.hh.

◆ fGunMessenger

F04PrimaryGeneratorMessenger* F04PrimaryGeneratorAction::fGunMessenger = nullptr
private

Definition at line 69 of file F04PrimaryGeneratorAction.hh.

◆ fRndmFlag

G4String F04PrimaryGeneratorAction::fRndmFlag ="off"
private

Definition at line 71 of file F04PrimaryGeneratorAction.hh.

◆ fFirst

G4bool F04PrimaryGeneratorAction::fFirst = false
private

Definition at line 73 of file F04PrimaryGeneratorAction.hh.

◆ fGlobal2local

G4AffineTransform F04PrimaryGeneratorAction::fGlobal2local
private

Definition at line 75 of file F04PrimaryGeneratorAction.hh.

◆ fXvertex

G4double F04PrimaryGeneratorAction::fXvertex = 0.
private

Definition at line 77 of file F04PrimaryGeneratorAction.hh.

◆ fYvertex

G4double F04PrimaryGeneratorAction::fYvertex = 0.
private

Definition at line 78 of file F04PrimaryGeneratorAction.hh.

◆ fZvertex

G4double F04PrimaryGeneratorAction::fZvertex = 0.
private

Definition at line 79 of file F04PrimaryGeneratorAction.hh.

◆ fVertexDefined

G4bool F04PrimaryGeneratorAction::fVertexDefined = false
private

Definition at line 80 of file F04PrimaryGeneratorAction.hh.


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

Applications | User Support | Publications | Collaboration