Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PrimaryGeneratorAction0 Class Reference

#include <PrimaryGeneratorAction0.hh>

Public Member Functions

 PrimaryGeneratorAction0 (G4ParticleGun *)
 
 ~PrimaryGeneratorAction0 ()
 
void GeneratePrimaries (G4Event *)
 

Detailed Description

Definition at line 46 of file PrimaryGeneratorAction0.hh.

Constructor & Destructor Documentation

PrimaryGeneratorAction0::PrimaryGeneratorAction0 ( G4ParticleGun gun)

Definition at line 45 of file PrimaryGeneratorAction0.cc.

46 : fParticleGun(gun)
47 {
48  //solid angle
49  //
50  G4double alphaMin = 0*deg; //alpha in [0,pi]
51  G4double alphaMax = 60*deg;
52  fCosAlphaMin = std::cos(alphaMin);
53  fCosAlphaMax = std::cos(alphaMax);
54 
55  fPsiMin = 0*deg; //psi in [0, 2*pi]
56  fPsiMax = 360*deg;
57 }
double G4double
Definition: G4Types.hh:76
static constexpr double deg
Definition: G4SIunits.hh:152
PrimaryGeneratorAction0::~PrimaryGeneratorAction0 ( )

Definition at line 61 of file PrimaryGeneratorAction0.cc.

62 { }

Member Function Documentation

void PrimaryGeneratorAction0::GeneratePrimaries ( G4Event anEvent)

Definition at line 66 of file PrimaryGeneratorAction0.cc.

67 {
68  //vertex position fixed
69  //
70  G4double x0 = 0*mm, y0 = 0*mm, z0 = 0*mm;
71  fParticleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0));
72 
73  //direction uniform in solid angle
74  //
75  G4double cosAlpha = fCosAlphaMin-G4UniformRand()*(fCosAlphaMin-fCosAlphaMax);
76  G4double sinAlpha = std::sqrt(1. - cosAlpha*cosAlpha);
77  G4double psi = fPsiMin + G4UniformRand()*(fPsiMax - fPsiMin);
78 
79  G4double ux = sinAlpha*std::cos(psi),
80  uy = sinAlpha*std::sin(psi),
81  uz = cosAlpha;
82 
83  fParticleGun->SetParticleMomentumDirection(G4ThreeVector(ux,uy,uz));
84 
85  fParticleGun->GeneratePrimaryVertex(anEvent);
86 }
static constexpr double mm
Definition: G4SIunits.hh:115
CLHEP::Hep3Vector G4ThreeVector
void SetParticleMomentumDirection(G4ParticleMomentum aMomentumDirection)
virtual void GeneratePrimaryVertex(G4Event *evt)
void SetParticlePosition(G4ThreeVector aPosition)
#define G4UniformRand()
Definition: Randomize.hh:97
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:


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