27 #include "G4RunManager.hh" 29 #include "G4ParticleGun.hh" 30 #include "G4ThreeVector.hh" 32 #include "G4Geantino.hh" 34 #include "Randomize.hh" 36 #include "G4ParticleDefinition.hh" 37 #include "G4PhysicalConstants.hh" 38 #include "G4SystemOfUnits.hh" 48 :gasDetector(0), incidentIon(0),targetIon(0),scatteredIon(0),recoilIon(0),
49 beamInteractionFlag(
"off"),
50 realisticBeamFlag(
"off"), reactionFromEvGenFlag(
"off"), reactionFromCrossSectionFlag(
"off"),
51 reactionFromFileFlag(
"off"),reactionFromCineFlag(
"off"),
52 randomThetaFlag(
"off"),reactionFile(
"He8onC12_100MeV_Elastic.dat"),reactionFromKineFlag(
"off"),
57 ionTable = G4IonTable::GetIonTable();
65 G4ParticleDefinition* pd =
particleTable->FindParticle(
"proton");
73 particleGun->SetParticleMomentumDirection(G4ThreeVector(0.0,0.0,1.0));
145 const G4int verboseLevel = G4RunManager::GetRunManager()->GetVerboseLevel();
147 G4cout << G4endl <<
" _____ G4RunManager VerboseLevel = " <<verboseLevel<< G4endl;
156 (G4RunManager::GetRunManager()->GetUserDetectorConstruction());
167 G4cout <<
"##################################################################" << G4endl
168 <<
"##### ActarSimPrimaryGeneratorAction::GeneratePrimaries() #######" << G4endl
169 <<
"##### Information: Length of gas volume = " <<
lengthParameter <<
" ######" << G4endl;
170 G4cout <<
"##################################################################" << G4endl;
196 <<
" *************************************************** " << G4endl
197 <<
" * ActarSimPrimaryGeneratorAction::GeneratePrimaries() " << G4endl
198 <<
" * beamInteractionFlag=on, beam.Status>1 ... " << G4endl
199 <<
" * Moving to status 0 and continuing with reaction!" << G4endl;
200 G4cout <<
" *************************************************** "<< G4endl;
212 <<
" *************************************************** " << G4endl
213 <<
" * ActarSimPrimaryGeneratorAction::GeneratePrimaries() " << G4endl
214 <<
" * ERROR STATUS! beamInteractionFlag=on, beam.Status=1 ... " << G4endl
215 <<
" * Moving to status 0 and ABORTING! " << G4endl;
216 G4cout <<
" *************************************************** "<< G4endl;
218 anEvent->SetEventAborted();
225 <<
" *************************************************** " << G4endl
226 <<
" * ActarSimPrimaryGeneratorAction::GeneratePrimaries() " << G4endl
227 <<
" * beamInteractionFlag=on, beam.Status=0 ... " << G4endl
228 <<
" * Moving to status 1 and tracking the beam!" << G4endl;
229 G4cout <<
" *************************************************** "<< G4endl;
235 <<
" *************************************************** " << G4endl
236 <<
" * ActarSimPrimaryGeneratorAction::GeneratePrimaries() " << G4endl
237 <<
" * No incident ion selected: using 8He as incident beam" << G4endl;
238 G4cout <<
" *************************************************** "<< G4endl;
251 G4double vertex_z0 = 0;
274 G4double thetaAtEntrance = thetaWidth * G4UniformRand() * mrad;
275 G4double phiAtEntrance = G4UniformRand() * twopi;
276 G4double phi2AtEntrance = G4UniformRand() * twopi;
278 G4ThreeVector directionAtEntrance = G4ThreeVector(sin(thetaAtEntrance)*cos(phiAtEntrance),
279 sin(thetaAtEntrance)*sin(phiAtEntrance),
280 cos(thetaAtEntrance));
283 G4double x0 =
beamPosition.x() + radiusAtEntrance*cos(phi2AtEntrance);
284 G4double y0 =
beamPosition.y() + radiusAtEntrance*sin(phi2AtEntrance);
289 <<
" *************************************************** " << G4endl
290 <<
" * ActarSimPrimaryGeneratorAction::GeneratePrimaries() " << G4endl
291 <<
" * beamInteractionFlag=on, beam.Status=0, realisticBeamFlag=on " << G4endl
292 <<
" * Beam with entrance emittance:" << G4endl
293 <<
" * ThetaWidth: " << thetaWidth << G4endl
294 <<
" * RadiusAtEntrance: " << radiusAtEntrance << G4endl;
295 G4cout <<
" *************************************************** "<< G4endl;
297 particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0));
298 particleGun->SetParticleMomentumDirection(directionAtEntrance);
329 G4double phi2AtEntrance = G4UniformRand() * twopi;
332 G4double vertex_x0 = radiusAtEntrance*cos(phi2AtEntrance)+
beamPosition.x();
333 G4double vertex_y0 = radiusAtEntrance*sin(phi2AtEntrance)+
beamPosition.y();
334 G4double vertex_z0 = 0.;
346 <<
" *************************************************** " << G4endl
347 <<
" * ActarSimPrimaryGeneratorAction::GeneratePrimaries() " << G4endl
348 <<
" * beamInteractionFlag=off but realisticBeamFlag=on " << G4endl
349 <<
" * No beam interaction, but vertex generated with some emittance effects:" << G4endl
350 <<
" * RadiusAtVertex: " << radiusAtEntrance << G4endl;
351 G4cout <<
" *************************************************** "<< G4endl;
367 <<
" *************************************************** " << G4endl
368 <<
" * WARNING: THIS IS NOT IMPLEMENTED!!!" << G4endl
369 <<
" * ActarSimPrimaryGeneratorAction::GeneratePrimaries() " << G4endl
370 <<
" * reactionFromEvGenFlag=on " << G4endl
371 <<
" * An external event generator is used..." << G4endl
372 <<
" * WARNING: THIS IS NOT IMPLEMENTED!!!" << G4endl;
373 G4cout <<
" *************************************************** "<< G4endl;
471 <<
" *************************************************** " << G4endl
472 <<
" * ActarSimPrimaryGeneratorAction::GeneratePrimaries() " << G4endl
473 <<
" * reactionFromFileFlag = on " << G4endl
474 <<
" * An external file with products information is used." << G4endl;
475 G4cout <<
" *************************************************** "<< G4endl;
480 G4double cine[91*4+1];
481 G4int ion1Z, ion1A, ion1Charge;
482 G4int ion2Z, ion2A, ion2Charge;
484 inputFile >> ion1Z; inputFile >> ion1A; inputFile >> ion1Charge;
485 inputFile >> ion2Z; inputFile >> ion2A; inputFile >> ion2Charge;
489 <<
" First ion Z, A and Charge: " 490 << ion1Z <<
" " << ion1A <<
" " << ion1Charge << G4endl
491 <<
" Second ion Z, A and Charge: " 492 << ion2Z <<
" " << ion2A <<
" " << ion2Charge << G4endl;
496 inputFile >> cine[i];
498 }
while(!inputFile.eof());
500 G4int rowsInputFile = (G4int) i/4;
502 G4int randomRow = (G4int)(G4UniformRand()*rowsInputFile);
503 theta1 = pi*cine[randomRow*4]/180;
504 theta2 = pi*cine[randomRow*4+2]/180;
505 energy1 = cine[randomRow*4+1];
506 energy2 = cine[randomRow*4+3];
507 G4double phi = twopi *G4UniformRand();
508 G4ThreeVector direction1 = G4ThreeVector(sin(theta1)*cos(phi),
509 sin(theta1)*sin(phi),
511 G4ThreeVector direction2 = G4ThreeVector(sin(theta2)*cos(phi+pi),
512 sin(theta2)*sin(phi+pi),
514 if(ion1Z==1 && ion1A==1 && ion1Charge==1){
515 G4ParticleDefinition* pd =
particleTable->FindParticle(
"proton");
516 if(pd != 0)
particleGun->SetParticleDefinition(pd);
520 ion1 = (G4Ions*)
ionTable->GetIon(ion1Z, ion1A, 0.0);
538 particleGun->SetParticleMomentumDirection(direction1);
543 if(ion2Z==1 && ion2A==1 && ion2Charge==1){
544 G4ParticleDefinition* pd =
particleTable->FindParticle(
"proton");
545 if(pd != 0)
particleGun->SetParticleDefinition(pd);
549 ion2 = (G4Ions*)
ionTable->GetIon(ion2Z, ion2Z, 0.0);
567 particleGun->SetParticleMomentumDirection(direction2);
573 G4cout <<
" *************************************************** " << G4endl
575 G4cout <<
" *************************************************** "<< G4endl;
584 <<
" *************************************************** " << G4endl
585 <<
" * ActarSimPrimaryGeneratorAction::GeneratePrimaries() " << G4endl
586 <<
" * reactionFromCineFlag = on " << G4endl
587 <<
" * Using CINE for the kinematics of reaction products." << G4endl;
588 G4cout <<
" *************************************************** "<< G4endl;
623 <<
" *************************************************** " << G4endl
624 <<
" * ActarSimPrimaryGeneratorAction::GeneratePrimaries() " << G4endl
625 <<
" * reactionFromCineFlag = on, randomThetaFlag = on " << G4endl
626 <<
" * Using CINE with random angle theta " << G4endl
627 <<
" * with limits in theta between [" 641 G4cout <<
" *************************************************** "<< G4endl;
647 <<
" *************************************************** " << G4endl
648 <<
" * ActarSimPrimaryGeneratorAction::GeneratePrimaries() " << G4endl
649 <<
" * CINE: Setting masses to the following values: " << G4endl
650 <<
" * incident ion (atomic) mass: " <<
GetIncidentIon()->GetAtomicMass() << G4endl
651 <<
" * target ion (atomic) mass: " <<
GetTargetIon()->GetAtomicMass() << G4endl
652 <<
" * scattered ion (atomic) mass: " <<
GetScatteredIon()->GetAtomicMass() << G4endl
653 <<
" * recoil ion (atomic) mass: " <<
GetRecoilIon()->GetAtomicMass() << G4endl;
654 G4cout <<
" * Setting reaction Q to:" <<
GetReactionQ() << G4endl;
655 G4cout <<
" * Setting labEnergy to:" <<
GetLabEnergy() << G4endl;
656 G4cout <<
" * Setting targetExcitationEnergy to:" 658 G4cout <<
" * Setting projectileExcitationEnergy to:" 660 G4cout <<
" * Setting labAngle to:" <<
GetThetaLabAngle() <<
" deg" << G4endl;
661 G4cout <<
" *************************************************** "<< G4endl;
666 G4cout <<
" CINE: Checking parameters..." << CINE->
GetS1()
667 <<
" " << CINE->
GetS2() <<
" " << CINE->
GetS3()
668 <<
" " << CINE->
GetS4() <<
" " << CINE->
GetQM()
669 <<
" " << CINE->
GetEI() <<
" " << CINE->
GetEN()
674 G4cout <<
" " << G4endl;
675 G4cout <<
" CINE: Checking... parameters are introduced in CINE..." << G4endl;
677 G4cout <<
" mass of the incident particle = " << CINE->
GetS1()<< G4endl;
678 G4cout <<
" mass of the target = " << CINE->
GetS2() << G4endl;
679 G4cout <<
" mass of the scattered particle = " << CINE->
GetS3()<< G4endl;
680 G4cout <<
" mass of the recoil = " << CINE->
GetS4() << G4endl;
681 G4cout <<
" Reaction Q = " << CINE->
GetQM()<< G4endl;
682 G4cout <<
" LAB energy (total Lab energy in MeV) = " << CINE->
GetEI() << G4endl;
683 G4cout <<
" Target excitation energy (positive) = " << CINE->
GetEN()<< G4endl;
684 G4cout <<
" Projectile excitation energy (positive) = " << CINE->
GetENI() << G4endl;
685 G4cout <<
" CINE->GetThetaLabAngle = " << CINE->
GetThetaLabAngle() << G4endl;
686 G4cout <<
" " << G4endl;
693 G4cout <<
" *************************************************** "<< G4endl;
694 G4cout <<
" ***** CINE: Relativistic calculation invoked ****** "<< G4endl;
695 G4cout <<
" *************************************************** "<< G4endl;
700 while( CINE->
GetANGAV(1)<0 && stillNoSol<50) {
701 G4cout <<
" *************************************************** "<< G4endl;
702 G4cout <<
" * There is no CINE solution" << G4endl;
703 G4cout <<
" * Trying again with CINE and other scattered angle..." << G4endl;
707 if(verboseLevel>1) G4cout <<
" *** random Theta = " 715 <<
" ####################################################### "<< G4endl
716 <<
" ERROR in ActarSimPrimaryGeneratorAction::GeneratePrimaries()" << G4endl
717 <<
" There is no CINE solution for any angle" << G4endl
718 <<
" A dummy solution is used: DO NOT RELY ON THE RESULTS!" << G4endl
719 <<
" ####################################################### "<< G4endl;
723 <<
" ####################################################### "<< G4endl
724 <<
" ERROR in ActarSimPrimaryGeneratorAction::GeneratePrimaries()" << G4endl
725 <<
" There is no CINE solution for this angle" << G4endl
726 <<
" A dummy solution is used: DO NOT RELY ON THE RESULTS!" << G4endl
727 <<
" ####################################################### "<< G4endl;
732 else if( CINE->
GetANGAR(1)<0 && stillNoSol<50) {
734 G4cout <<
" One solution:" << G4endl;
744 G4cout <<
" Two solutions" << G4endl;
745 G4cout <<
" First solution:" << G4endl;
747 G4cout <<
" Second solution:" << G4endl;
750 if((G4int)(2*G4UniformRand()) == 0){
764 G4cout <<
" *************************************************** "<< G4endl;
765 G4cout <<
" At least one solution found... generating primaries." << G4endl;
766 G4cout <<
" " << G4endl;
769 G4double phi = twopi * G4UniformRand();
770 G4ThreeVector direction1 = G4ThreeVector(sin(theta1)*cos(phi),
771 sin(theta1)*sin(phi),
773 G4ThreeVector direction2 = G4ThreeVector(sin(theta2)*cos(phi+pi),
774 sin(theta2)*sin(phi+pi),
792 particleGun->SetParticleMomentumDirection(direction1);
813 particleGun->SetParticleMomentumDirection(direction2);
823 <<
" *************************************************** " << G4endl
824 <<
" * ActarSimPrimaryGeneratorAction::GeneratePrimaries() " << G4endl
825 <<
" * reactionFromKineFlag = on " << G4endl
826 <<
" * Using KINE for the kinematics of reaction products." << G4endl;
827 G4cout <<
" *************************************************** "<< G4endl;
877 G4cout <<
" KINE: Setting (atomic) masses to :" <<
GetIncidentIon()->GetAtomicMass()
881 G4cout <<
" KINE: Setting labEnergy to:" << KINE->
GetLabEnergy() << G4endl;
882 G4cout <<
" KINE: Setting targetExcitationEnergy to:" 884 G4cout <<
" KINE: Setting projectileExcitationEnergy to:" 886 G4cout <<
" Kine: Setting excitation energy of Scattered particle to:" 888 G4cout <<
" KINE: Setting CM Angle to:" << KINE->
GetThetaCMAngle() <<
" deg" << G4endl;
893 if(KINE->
GetNoSolution()) G4cout <<
"Kine NO solution, check your input!" << G4endl;
896 G4cout <<
" *************************************************** "<< G4endl;
897 G4cout <<
" ***** KINE: Relativistic calculation invoked ****** "<< G4endl;
898 G4cout <<
" *************************************************** "<< G4endl;
901 G4double thetaBeam1, thetaBeam2;
909 G4cout <<
"Kine: Scattered energy:" << KINE->
GetANGAs(1) <<
" MeV" << G4endl;
910 G4cout <<
"Kine: Recoiled energy:" << KINE->
GetANGAr(1) <<
" MeV" << G4endl;
911 G4cout <<
"Kine: Scattered angle:" << KINE->
GetANGAs(0)/deg <<
" deg" << G4endl;
912 G4cout <<
"Kine: recoiled angle:" << KINE->
GetANGAr(0)/deg <<
" deg" << G4endl;
913 G4cout <<
"Kine: passed Scattered energy:" << energy1 <<
" MeV" << G4endl;
914 G4cout <<
"Kine: passed Recoil energy:" << energy2 <<
" MeV" << G4endl;
915 G4cout <<
"Kine: passed Scattered angle:" << theta1/deg <<
" deg" << G4endl;
916 G4cout <<
"Kine: passed Recoil angle:" << theta2/deg <<
" deg" << G4endl;
917 G4cout <<
"deg=" << deg <<
", MeV=" << MeV << G4endl;
919 G4double phiBeam1=0., phiBeam2=0.;
920 phiBeam1 = twopi * G4UniformRand();
921 phiBeam2 = phiBeam1 + pi;
924 G4double thetaLab1, phiLab1, thetaLab2, phiLab2;
941 G4ThreeVector direction1 = G4ThreeVector(sin(thetaLab1)*cos(phiLab1),
942 sin(thetaLab1)*sin(phiLab1),
953 G4ThreeVector direction2 = G4ThreeVector(sin(thetaLab2)*cos(phiLab2),
954 sin(thetaLab2)*sin(phiLab2),
956 delete EulerTransformer;
974 particleGun->SetParticleMomentumDirection(direction1);
995 particleGun->SetParticleMomentumDirection(direction2);
1002 if(ExEnergyScattered>0){
1003 G4double cosTheta_gamma;
1004 G4double phi_gamma = twopi*G4UniformRand();
1005 G4double sinTheta_gamma;
1006 cosTheta_gamma = -1.0 + 2.0*G4UniformRand();
1007 sinTheta_gamma = sqrt(1 - cosTheta_gamma*cosTheta_gamma);
1009 G4String particleName;
1011 particleGun->SetParticleMomentumDirection(G4ThreeVector(sinTheta_gamma*cos(phi_gamma),
1012 sinTheta_gamma*sin(phi_gamma),
1014 if(ExEnergyScattered<1.500 && ExEnergyScattered>.86)
1015 particleGun->SetParticleEnergy(ExEnergyScattered-0.854);
1017 particleGun->SetParticleEnergy(ExEnergyScattered);
1021 if(ExEnergyScattered<1.5&&ExEnergyScattered>.86){
1023 phi_gamma = twopi*G4UniformRand();
1024 cosTheta_gamma = -1.0 + 2.0*G4UniformRand();
1025 sinTheta_gamma = sqrt(1 - cosTheta_gamma*cosTheta_gamma);
1027 sinTheta_gamma*sin(phi_gamma),
1040 <<
" *************************************************** " << G4endl
1041 <<
" * ActarSimPrimaryGeneratorAction::GeneratePrimaries() " << G4endl
1042 <<
" * No particular event generator or kinematics code... " << G4endl
1043 <<
" * A single particle is thrown using messenger commands." << G4endl;
1044 G4cout <<
" *************************************************** "<< G4endl;
1048 G4ParticleDefinition* pd =
particleTable->FindParticle(
"proton");
1049 if(pd != 0)
particleGun->SetParticleDefinition(pd);
1058 if(CosRandomThetaMin==1. && CosRandomThetaMax==0. ) {
1059 theta=2*pi*G4UniformRand();
1076 if(CosRandomPhiMin==1. && CosRandomPhiMax==1.)
1077 phi=2*pi*G4UniformRand();
1086 G4ParticleDefinition* pd =
particleTable->FindParticle(
"alpha");
1087 if(pd != 0)
particleGun->SetParticleDefinition(pd);
1089 G4double alpha_energy[3]={5.15,5.48,5.8};
1090 particleGun->SetParticleEnergy(alpha_energy[i]*MeV);
1101 G4double phi2AtEntrance = G4UniformRand() * twopi;
1104 G4double x0 =
beamPosition.x() + radiusAtEntrance*cos(phi2AtEntrance);
1105 G4double y0 =
beamPosition.y() + radiusAtEntrance*sin(phi2AtEntrance);
1109 particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0));
void SetBeamMomentumDirection(G4ParticleMomentum aMomentumDirection)
G4String randomThetaFlag
Flag for a random theta angle in CINE.
Double_t GetTimeVertex() const
Double_t GetXVertex() const
G4double GetMassOfTarget()
void SetIncidentMass(G4double value)
void SetThetaLabAngle(G4double val)
G4String reactionFromCineFlag
Flag for a reaction calculated using Cine.
void GeneratePrimaries(const G4Event *, G4double, G4double, G4double, G4double)
G4bool beamDirectionFlag
Flag for a beam direction defined by angles (0) or vector (1)
void SetMassOfScattered(G4double value)
G4String reactionFromFileFlag
Flag for a reaction taken from a file.
void SetMassOfRecoiled(G4double value)
G4double lengthParameter
Parameter coming from the geometry selection.
void SetMassOfTarget(G4double value)
void SetExEnergyOfScattered(G4double value)
G4bool GetNoSolution(void)
void SetCharge(Double_t c)
Double_t GetYVertex() const
void SetExEnergyOfRecoiled(G4double value)
G4IonTable * ionTable
Pointer to the G4IonTable.
void SetTargetExcitationEnergy(G4double value)
void SetLabEnergy(G4double value)
void SetEnergyEntrance(Double_t e)
void SetThetaCMAngle(G4double value)
G4Ions * GetIncidentIon()
Double_t GetZVertex() const
G4double thetaLabAngle
Polar angle in the laboratory system.
G4double GetIncidentEnergy()
G4double incidentEnergy
Total incident ion energy.
void SetBeamInteractionFlag(G4String val)
G4double randomThetaMax
Maximum random theta angle in CINE.
void SetExEnergyOfTarget(G4double value)
G4double randomPhiMin
Minimum random phi angle in CINE.
G4double GetThetaCMAngle()
G4String reactionFromEvGenFlag
Flag for a reaction taken from the tabulated Ev Generator.
G4String randomPhiFlag
Flag for a random phi angle in CINE.
~ActarSimPrimaryGeneratorAction()
Simple destructor.
G4double GetMassOfRecoiled()
G4ParticleMomentum beamMomentumDirection
Beam (momentum) direction.
void GeneratePrimaries(G4Event *anEvent)
void printResults(G4int sel)
Print the results for each solution.
void RelativisticKinematics()
G4double targetIonCharge
Charge of target ion.
G4double GetExEnergyOfRecoiled()
G4String GetDetectorGeometry()
G4double GetANGAr(G4int place)
G4double randomThetaMin
Minimum random theta angle in CINE.
G4double randomVertexZPositionMax
Maximum value for the (random) Z position of the vertex.
void SetThetaCMAngle(G4double val)
G4ThreeVector vertexPosition
Position of the vertex.
G4ThreeVector beamPosition
Beam position at the entrance.
G4double GetANGAV(G4int place)
G4ParticleGun * particleGun
Pointer to G4particleGun object initialized in constructor.
void SetExEnergyOfProjectile(G4double value)
G4double reactionQ
Reaction Q.
G4Ions * incidentIon
Pointer to incident ion.
G4double randomVertexZPositionMin
Minimum value for the (random) Z position of the vertex.
G4double GetMassOfScattered()
void SetLabEnergy(G4double value)
G4double GetExEnergyOfTarget()
G4String reactionFromKineFlag
Flag for using KINE.
G4double GetExEnergyOfProjectile()
Double_t GetPhiVertex() const
ActarSimGasDetectorConstruction * GetGasDetector()
G4double GetLabEnergy(void)
G4double GetANGAs(G4int place)
void SetLabEnergy(G4double val)
G4ParticleTable * particleTable
Pointer to the G4ParticleTable.
G4Ions * GetScatteredIon()
G4String reactionFile
File definition for a reaction.
G4double GetThetaLabAngle()
void SetReactionQ(G4double value)
ActarSimROOTAnalysis * gActarSimROOTAnalysis
Global pointer to this soliton.
void SetTargetMass(G4double value)
G4Ions * recoilIon
Pointer to recoil ion.
void GenerateBeam(const G4Event *)
Defining any beam related histogram or information in the output file.
void SetAnglesEntrance(Double_t, Double_t)
Sets the angles at entrance.
Double_t GetEnergyVertex() const
G4double incidentIonCharge
Charge of incident ion.
void SetPositionEntrance(Double_t, Double_t, Double_t)
Sets the position at entrance of the chamber.
ActarSimPrimaryGeneratorAction()
Constructor: init values are filled.
G4double GetUserThetaAngle()
void SetProjectileExcitationEnergy(G4double value)
G4double GetThetaLabAngle(void)
G4double recoilIonCharge
Charge of recoil ion.
G4double emittance
Beam emittance.
G4double GetThetaCMAngle(void)
G4double GetANGAR(G4int place)
G4Ions * targetIon
Pointer to target ion.
ActarSimGasDetectorConstruction * gasDetector
Pointer to gas detector constructor, to get some geometrical info.
G4double labEnergy
Laboratory energy.
G4Ions * scatteredIon
Pointer to scattered ion.
ActarSimBeamInfo * GetBeamInfo()
G4String realisticBeamFlag
Flag for realistic beam interaction.
G4double GetUserPhiAngle()
G4double GetExEnergyOfScattered()
void SetZVertex(Double_t z)
void SetRecoilMass(G4double value)
Double_t GetThetaVertex() const
void SetScatteredMass(G4double value)
G4double GetMassOfProjectile()
G4String alphaSourceFlag
Flag for a alpha source emitter.
G4double GetLengthGasTub(void)
ActarSimPrimaryGeneratorMessenger * gunMessenger
Pointer to messenger.
G4double vertexZPosition
Value for the (random) Z position of the vertex.
G4String randomVertexZPositionFlag
Flag to control the (random) Z position of the vertex.
G4double GetGasBoxSizeZ(void)
void SetMassOfProjectile(G4double value)
G4double scatteredIonCharge
Charge of scattered ion.
G4String randomPhiAngleFlag
Flag for a random phi angle.
G4double beamRadiusAtEntrance
Beam radius at the entrance point.
G4double randomPhiMax
Maximum random phi angle in CINE.
void SetParticleMomentumDirection(G4ParticleMomentum aMomentumDirection)
void SetThetaLabAngle(G4double value)
G4String beamInteractionFlag
Flag for beam interaction mode.