25 #include "G4ParticleGun.hh"
26 #include "G4ParticleTable.hh"
27 #include "Randomize.hh"
40 G4cout <<
"###### Calling QweakSimPrimaryGeneratorAction::QweakSimPrimaryGeneratorAction " << G4endl;
66 G4cout <<
"###### Leaving QweakSimPrimaryGeneratorAction::QweakSimPrimaryGeneratorAction " << G4endl;
74 G4cout <<
"###### Calling/Leaving QweakSimPrimaryGeneratorAction::~QweakSimPrimaryGeneratorAction " << G4endl;
93 if (myEventCounter%1000==0) G4cout <<
"*=== Event number = " << myEventCounter <<
" ===*" << G4endl;
95 G4double myPositionX, myPositionY, myPositionZ, myVertexZ;
96 G4double myNormMomentumX, myNormMomentumY, myNormMomentumZ;
99 if (myEventCounter%2 == 0) {
108 myNormMomentumZ = sqrt(1.0 - myNormMomentumX * myNormMomentumX - myNormMomentumY * myNormMomentumY);
130 myVertexZ = myPositionZ;
135 myPositionX += (myPositionZ-myVertexZ)*myNormMomentumX/myNormMomentumZ;
136 myPositionY += (myPositionZ-myVertexZ)*myNormMomentumY/myNormMomentumZ;
157 particleGun->SetParticlePosition(G4ThreeVector(myPositionX,
161 particleGun->SetParticleMomentumDirection(G4ThreeVector(myNormMomentumX,
167 particleGun->SetParticlePolarization((G4ThreeVector(myNormMomentumX,
173 particleGun->SetParticlePolarization(G4ThreeVector(myNormMomentumX,
176 .cross(G4ThreeVector(1,0,0)));
180 particleGun->SetParticlePolarization(G4ThreeVector(myNormMomentumX,
183 .cross(G4ThreeVector(0,1,0)));
void StoreOriginVertexPositionZ(G4double vz)
G4double TargetCenterPositionZ
G4double GetOriginVertexKineticEnergy() const
G4double GetOriginVertexPositionX() const
void SetScatteredParticleType(G4String type="e-")
void SetParticleType(G4ParticleDefinition *particle)
G4double GetOriginVertexMomentumDirectionX() const
G4int GetPrimaryEventNumber() const
G4double GetBeamPositionY() const
QweakSimUserInformation * myUserInfo
void SetBeamParticleType(G4String type="e-")
G4ParticleDefinition * beamParticle
void GeneratePrimaries(G4Event *anEvent)
QweakSimEPEvent * myEvent
virtual ~QweakSimPrimaryGeneratorAction()
QweakSimPrimaryGeneratorActionMessenger * myMessenger
G4double GetOriginVertexPositionZ() const
G4double GetBeamEnergy() const
G4double GetNormMomentumY() const
void SetBeamEnergy(G4double energy=1.160 *GeV)
void StorePrimaryEventNumber(G4int pen)
G4ParticleDefinition * scatteredParticle
void SetNtupleEventCounter(G4int cnt)
G4double GetNormMomentumX() const
G4double GetOriginVertexPositionY() const
G4double TargetExitWindowThickness
G4double GetBeamPositionX() const
G4double GetOriginVertexMomentumDirectionZ() const
void ResetNtupleEventCounter()
G4ParticleGun * particleGun
Scans the input file for ...
G4double GetOriginVertexMomentumDirectionY() const
QweakSimPrimaryGeneratorAction(QweakSimUserInformation *myUI, QweakSimEPEvent *myEPEvent)