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

#include <F06PrimaryGeneratorAction.hh>

Inheritance diagram for F06PrimaryGeneratorAction:
Collaboration diagram for F06PrimaryGeneratorAction:

Public Member Functions

 F06PrimaryGeneratorAction (void)
 
virtual ~F06PrimaryGeneratorAction ()
 
virtual void GeneratePrimaries (G4Event *)
 
- Public Member Functions inherited from G4VUserPrimaryGeneratorAction
 G4VUserPrimaryGeneratorAction ()
 
virtual ~G4VUserPrimaryGeneratorAction ()
 

Detailed Description

Definition at line 46 of file F06PrimaryGeneratorAction.hh.

Constructor & Destructor Documentation

F06PrimaryGeneratorAction::F06PrimaryGeneratorAction ( void  )

Definition at line 49 of file F06PrimaryGeneratorAction.cc.

50 {
51  G4int n_particle = 1;
52  fParticleGun = new G4ParticleGun(n_particle);
53 
55 
56  G4ParticleDefinition* particle = particleTable->FindParticle("proton");
57  G4double mass_proton = particle->GetPDGMass();
58 
60  (mass_proton/CLHEP::c_squared);
61 
62  G4cout << " *** Neutron *** " << G4endl;
63 
64  particle = particleTable->FindParticle("neutron");
65  G4double mass_neutron = particle->GetPDGMass();
66 
67  G4double magneticMoment = particle->GetPDGMagneticMoment();
68  G4cout << " magneticMoment: " << magneticMoment/muN << G4endl;
69 
70  // g_factor for spin 1/2
71 
72  G4double g_factor = 2 * magneticMoment/muN;
73  G4cout << " g_factor: " << g_factor << G4endl;
74 
75  G4double charge = particle->GetPDGCharge();
76  G4cout << " charge: " << charge << G4endl;
77 
78  G4double anomaly = (g_factor - 2.)/2.;
79  G4cout << " anomaly: " << anomaly << G4endl;
80 
81  anomaly = (g_factor * (mass_neutron/mass_proton) - 2.)/2.;
82  G4cout << " corrected anomaly: " << anomaly << G4endl;
83 
84  muN = 0.5*CLHEP::eplus*CLHEP::hbar_Planck/(mass_neutron/CLHEP::c_squared);
85  g_factor = 2 * magneticMoment/muN;
86 
87  anomaly = (g_factor - 2.)/2.;
88  G4cout << " *** anomaly: " << anomaly << G4endl;
89 
90  G4cout << " *** MuonPlus *** " << G4endl;
91 
92  particle = particleTable->FindParticle("mu+");
93  G4double mass_muon = particle->GetPDGMass();
94 
96  (mass_muon/CLHEP::c_squared);
97 
98  magneticMoment = particle->GetPDGMagneticMoment();
99  G4cout << " magneticMoment: " << magneticMoment/muB << G4endl;
100 
101  // g_factor for spin 1/2
102 
103  g_factor = magneticMoment/muB;
104  G4cout << " g_factor: " << g_factor << G4endl;
105 
106  charge = particle->GetPDGCharge();
107  G4cout << " charge: " << charge << G4endl;
108 
109  anomaly = (g_factor - 2.)/2.;
110  G4cout << " anomaly: " << anomaly << G4endl;
111 
112 // anomaly = particle->CalculateAnomaly();
113 // G4cout << " *** anomaly: " << anomaly << G4endl;
114 
115  particle = particleTable->FindParticle("neutron");
116  fParticleGun->SetParticleDefinition(particle);
117 }
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
int G4int
Definition: G4Types.hh:78
G4GLOB_DLL std::ostream G4cout
static constexpr double eplus
static constexpr double c_squared
G4double GetPDGMass() const
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61
G4double GetPDGMagneticMoment() const
double G4double
Definition: G4Types.hh:76
G4double GetPDGCharge() const
static constexpr double hbar_Planck
void SetParticleDefinition(G4ParticleDefinition *aParticleDefinition)

Here is the call graph for this function:

F06PrimaryGeneratorAction::~F06PrimaryGeneratorAction ( )
virtual

Definition at line 121 of file F06PrimaryGeneratorAction.cc.

122 {
123  delete fParticleGun;
124 }

Member Function Documentation

void F06PrimaryGeneratorAction::GeneratePrimaries ( G4Event anEvent)
virtual

Implements G4VUserPrimaryGeneratorAction.

Definition at line 128 of file F06PrimaryGeneratorAction.cc.

129 {
130  //this function is called at the begining of event
131  //
132 
133  fParticleGun->SetParticlePosition(G4ThreeVector(0.0, 0.0, 0.0));
134  fParticleGun->SetParticlePolarization(G4ThreeVector(0,1,0));
135 
136  G4double particleEnergy = G4UniformRand()*1e-7*eV;
137  fParticleGun->SetParticleEnergy(particleEnergy);
138 
139  G4double theta = 2*pi*G4UniformRand();
140  G4double phi = std::acos(1-2*G4UniformRand());
141  if (phi > pi/2 && phi < pi) phi = pi-phi;
142 
143  G4double z = std::sin(phi)*std::cos(theta);
144  G4double x = std::sin(phi)*std::sin(theta);
145  G4double y = std::cos(phi);
146 
147  fParticleGun->SetParticleMomentumDirection(G4ThreeVector(x,y,z));
148 
149  fParticleGun->GeneratePrimaryVertex(anEvent);
150 }
CLHEP::Hep3Vector G4ThreeVector
tuple x
Definition: test.py:50
void SetParticleMomentumDirection(G4ParticleMomentum aMomentumDirection)
virtual void GeneratePrimaryVertex(G4Event *evt)
void SetParticlePolarization(G4ThreeVector aVal)
void SetParticlePosition(G4ThreeVector aPosition)
#define G4UniformRand()
Definition: Randomize.hh:97
static constexpr double eV
Definition: G4SIunits.hh:215
void SetParticleEnergy(G4double aKineticEnergy)
tuple z
Definition: test.py:28
static constexpr double pi
Definition: G4SIunits.hh:75
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: