29 #include "PrimaryGeneratorAction.hh"
30 #include "PrimaryGeneratorMessenger.hh"
78 G4double x0,y0,
z0,theta,phi,xMom0,yMom0,zMom0,e0,de;
82 x0=0; y0=0; z0=0; theta=0; phi=0; e0=0;
92 if (numEvent== 1) {theta = -0.00500; phi = -0.00500; de = -0.0050; }
93 if (numEvent== 2) {theta = -0.005/3; phi = -0.00500; de = -0.0050; }
94 if (numEvent== 3) {theta = 0.005/3; phi = -0.00500; de = -0.0050; }
95 if (numEvent== 4) {theta = 0.00500; phi = -0.00500; de = -0.0050; }
96 if (numEvent== 5) {theta = -0.00500; phi = -0.005/3; de = -0.0050; }
97 if (numEvent== 6) {theta = -0.005/3; phi = -0.005/3; de = -0.0050; }
98 if (numEvent== 7) {theta = 0.005/3; phi = -0.005/3; de = -0.0050; }
99 if (numEvent== 8) {theta = 0.00500; phi = -0.005/3; de = -0.0050; }
100 if (numEvent== 9) {theta = -0.00500; phi = 0.005/3; de = -0.0050; }
101 if (numEvent== 10) {theta = -0.005/3; phi = 0.005/3; de = -0.0050; }
102 if (numEvent== 11) {theta = 0.005/3; phi = 0.005/3; de = -0.0050; }
103 if (numEvent== 12) {theta = 0.00500; phi = 0.005/3; de = -0.0050; }
104 if (numEvent== 13) {theta = -0.00500; phi = 0.00500; de = -0.0050; }
105 if (numEvent== 14) {theta = -0.005/3; phi = 0.00500; de = -0.0050; }
106 if (numEvent== 15) {theta = 0.005/3; phi = 0.00500; de = -0.0050; }
107 if (numEvent== 16) {theta = 0.00500; phi = 0.00500; de = -0.0050; }
108 if (numEvent== 17) {theta = -0.00500; phi = -0.00500; de = 0.0050; }
109 if (numEvent== 18) {theta = -0.005/3; phi = -0.00500; de = 0.0050; }
110 if (numEvent== 19) {theta = 0.005/3; phi = -0.00500; de = 0.0050; }
111 if (numEvent== 20) {theta = 0.00500; phi = -0.00500; de = 0.0050; }
112 if (numEvent== 21) {theta = -0.00500; phi = -0.005/3; de = 0.0050; }
113 if (numEvent== 22) {theta = -0.005/3; phi = -0.005/3; de = 0.0050; }
114 if (numEvent== 23) {theta = 0.005/3; phi = -0.005/3; de = 0.0050; }
115 if (numEvent== 24) {theta = 0.00500; phi = -0.005/3; de = 0.0050; }
116 if (numEvent== 25) {theta = -0.00500; phi = 0.005/3; de = 0.0050; }
117 if (numEvent== 26) {theta = -0.005/3; phi = 0.005/3; de = 0.0050; }
118 if (numEvent== 27) {theta = 0.005/3; phi = 0.005/3; de = 0.0050; }
119 if (numEvent== 28) {theta = 0.00500; phi = 0.005/3; de = 0.0050; }
120 if (numEvent== 29) {theta = -0.00500; phi = 0.00500; de = 0.0050; }
121 if (numEvent== 30) {theta = -0.005/3; phi = 0.00500; de = 0.0050; }
122 if (numEvent== 31) {theta = 0.005/3; phi = 0.00500; de = 0.0050; }
123 if (numEvent== 32) {theta = 0.00500; phi = 0.00500; de = 0.0050; }
142 theta = theta * 1000;
166 fBeamMatrix(numEvent,17) = theta * theta * theta * phi;
167 fBeamMatrix(numEvent,18) = theta * theta * phi * phi;
168 fBeamMatrix(numEvent,19) = theta * phi * phi * phi;
169 fBeamMatrix(numEvent,20) = theta * theta * theta * DE;
170 fBeamMatrix(numEvent,21) = theta * theta * phi * DE;
174 fBeamMatrix(numEvent,24) = theta * theta * theta * phi * phi;
175 fBeamMatrix(numEvent,25) = theta * theta * phi * phi * phi;
176 fBeamMatrix(numEvent,26) = theta * theta * theta * phi * DE;
177 fBeamMatrix(numEvent,27) = theta * theta * phi * phi * DE;
178 fBeamMatrix(numEvent,28) = theta * phi * phi * phi * DE;
180 fBeamMatrix(numEvent,29) = theta * theta * theta * phi * phi * phi;
181 fBeamMatrix(numEvent,30) = theta * theta * theta * phi * phi * DE;
182 fBeamMatrix(numEvent,31) = theta * theta * phi * phi * phi * DE;
184 fBeamMatrix(numEvent,32) = theta * theta * theta * phi * phi * phi * DE;
189 theta = theta / 1000;
219 theta = aR * std::cos(angle);
221 phi = aR * std::sin(angle);
225 x0 = rR*std::cos(angle);
227 y0 = rR*std::sin(angle);
254 G4cout <<
"-> Event= " << numEvent<<
": X0(mm)= " << x0/
mm <<
" X0(mm) = " << y0/
mm <<
" Z0(m) = " << z0/
m
255 <<
" THETA(mrad)= " << theta/
mrad <<
" PHI(mrad)= " << phi/
mrad <<
" E0(MeV)= " << e0/
MeV <<
G4endl;
257 xMom0 = std::sin(theta);
259 yMom0 = std::sin(phi);
261 zMom0 = std::sqrt(1.-xMom0*xMom0-yMom0*yMom0);
292 return std::pow(20000*angle, 13);
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static constexpr double micrometer
CLHEP::Hep3Vector G4ThreeVector
static G4ParticleTable * GetParticleTable()
static constexpr double MeV
static constexpr double mm
G4double XYofAngle(G4double)
CLHEP::HepMatrix fBeamMatrix
void SetParticlePosition(G4ThreeVector aPosition)
static constexpr double m
void SetParticleDefinition(G4ParticleDefinition *aParticleDefinition)
const XML_Char int const XML_Char * value
DetectorConstruction * fDetector
static constexpr double rad
ThreeVector shoot(const G4int Ap, const G4int Af)
PrimaryGeneratorMessenger * fGunMessenger
virtual void GeneratePrimaryVertex(G4Event *evt)
G4GLOB_DLL std::ostream G4cout
G4ParticleGun * fParticleGun
void SetParticleEnergy(G4double aKineticEnergy)
void GeneratePrimaries(G4Event *)
static constexpr double mrad
void SetParticleMomentumDirection(G4ParticleMomentum aMomentumDirection)
~PrimaryGeneratorAction()
Simple detector construction with a box volume placed in a world.
static constexpr double pi