17 #include "G4UIdirectory.hh" 18 #include "G4UIcommand.hh" 19 #include "G4UIcmdWithoutParameter.hh" 20 #include "G4UIcmdWith3Vector.hh" 21 #include "G4UIcmdWith3VectorAndUnit.hh" 22 #include "G4UIcmdWithAnInteger.hh" 23 #include "G4UIcmdWithAString.hh" 24 #include "G4UIcmdWithADoubleAndUnit.hh" 25 #include "G4UIcmdWithADouble.hh" 28 #include "G4Tokenizer.hh" 30 #include "G4PhysicalConstants.hh" 31 #include "G4SystemOfUnits.hh" 88 : actarSimActionGun(actarSimGun) {
91 ionTable = G4IonTable::GetIonTable();
94 G4UIparameter* parameter;
96 gunDir =
new G4UIdirectory(
"/ActarSim/gun/");
97 gunDir->SetGuidance(
"PrimaryGenerator control");
99 listCmd =
new G4UIcmdWithoutParameter(
"/ActarSim/gun/List",
this);
100 listCmd->SetGuidance(
"List available particles.");
101 listCmd->SetGuidance(
" Invoke G4ParticleTable.");
103 particleCmd =
new G4UIcmdWithAString(
"/ActarSim/gun/particle",
this);
104 particleCmd->SetGuidance(
"Select the incident particle.");
106 particleCmd->SetGuidance(
" (ion can be specified for shooting ions)");
109 G4String candidateList;
111 for(G4int i=0;i<nPtcl;i++) {
114 candidateList +=
" ";
117 candidateList +=
"ion ";
120 realisticBeamCmd =
new G4UIcmdWithAString(
"/ActarSim/gun/realisticBeam",
this);
121 realisticBeamCmd->SetGuidance(
"Simulates beam emittance according to emittance parameters.");
136 emittanceCmd =
new G4UIcmdWithADouble(
"/ActarSim/gun/emittance",
this);
137 emittanceCmd->SetGuidance(
"Selects the value of the emittance [in mm mrad].");
138 emittanceCmd->SetGuidance(
" Default value is 1 mm mrad. ");
141 emittanceCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
143 beamDirectionCmd =
new G4UIcmdWith3Vector(
"/ActarSim/gun/beamDirection",
this);
149 beamThetaCmd =
new G4UIcmdWithADoubleAndUnit(
"/ActarSim/gun/beamTheta",
this);
150 beamThetaCmd->SetGuidance(
"Sets theta angle for beam (in degrees)");
155 beamThetaCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
157 beamPhiCmd =
new G4UIcmdWithADoubleAndUnit(
"/ActarSim/gun/beamPhi",
this);
158 beamPhiCmd->SetGuidance(
"Sets phi angle for beam (in degrees)");
159 beamPhiCmd->SetParameterName(
"beamPhi",
false);
163 beamPhiCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
165 beamPositionCmd =
new G4UIcmdWith3VectorAndUnit(
"/ActarSim/gun/beamPosition",
this);
184 reactionFromEvGenCmd->SetGuidance(
"DO NOT USE. Simulates beam/target from event generator. DO NOT USE.");
209 reactionFileCmd =
new G4UIcmdWithAString(
"/ActarSim/gun/reactionFile",
this);
223 CineDir =
new G4UIdirectory(
"/ActarSim/gun/Cine/");
224 CineDir->SetGuidance(
"Cine generator control");
227 CinerandomThetaCmd->SetGuidance(
"Select a random Theta angle for the scattered particle.");
234 randomThetaCmd =
new G4UIcmdWithAString(
"/ActarSim/gun/randomTheta",
this);
235 randomThetaCmd->SetGuidance(
"Select a random Theta angle for the scattered particle.");
242 randomPhiCmd =
new G4UIcmdWithAString(
"/ActarSim/gun/randomPhi",
this);
243 randomPhiCmd->SetGuidance(
"Select a random Phi angle for the scattered particle.");
244 randomPhiCmd->SetGuidance(
" Choice : on(default), off");
248 randomPhiCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
250 alphaSourceCmd =
new G4UIcmdWithAString(
"/ActarSim/gun/alphaSource",
this);
259 randomThetaValCmd->SetGuidance(
"Sets the limits in the Theta angle for the scattered particle.");
260 randomThetaValCmd->SetGuidance(
"The value is randomly chosen between the limits.");
261 parameter =
new G4UIparameter(
"thetaMin",
'd', omitable =
true);
262 parameter->SetDefaultValue(0.);
264 parameter =
new G4UIparameter(
"thetaMax",
'd', omitable =
true);
265 parameter->SetDefaultValue(180.);
267 parameter =
new G4UIparameter(
"unit",
's', omitable =
true);
268 parameter->SetDefaultValue(
"deg");
272 randomPhiValCmd->SetGuidance(
"Sets the limits in the Phi angle for the scattered particle.");
273 randomPhiValCmd->SetGuidance(
"The value is randomly chosen between the limits.");
274 parameter =
new G4UIparameter(
"phiMin",
'd', omitable =
true);
275 parameter->SetDefaultValue(0.);
277 parameter =
new G4UIparameter(
"phiMax",
'd', omitable =
true);
278 parameter->SetDefaultValue(180.);
280 parameter =
new G4UIparameter(
"unit",
's', omitable =
true);
281 parameter->SetDefaultValue(
"deg");
285 CinerandomThetaValCmd->SetGuidance(
"Sets the limist in the Theta angle for the scattered particle.");
287 parameter =
new G4UIparameter(
"thetaMin",
'd', omitable =
true);
288 parameter->SetDefaultValue(0.);
290 parameter =
new G4UIparameter(
"thetaMax",
'd', omitable =
true);
291 parameter->SetDefaultValue(180.);
293 parameter =
new G4UIparameter(
"unit",
's', omitable =
true);
294 parameter->SetDefaultValue(
"deg");
297 incidentIonCmd =
new G4UIcommand(
"/ActarSim/gun/Cine/incidentIon",
this);
298 incidentIonCmd->SetGuidance(
"Set properties of incident ion to be generated.");
299 incidentIonCmd->SetGuidance(
"[usage] /ActarSim/gun/Cine/incidentIon Z A Q E");
302 incidentIonCmd->SetGuidance(
" Q:(int) Charge of ion (in unit of e)");
303 incidentIonCmd->SetGuidance(
" E:(double) Excitation energy (in keV)");
305 G4UIparameter* incidentParam;
306 incidentParam =
new G4UIparameter(
"Z",
'i',
false);
307 incidentParam->SetDefaultValue(
"1");
309 incidentParam =
new G4UIparameter(
"A",
'i',
false);
310 incidentParam->SetDefaultValue(
"1");
312 incidentParam =
new G4UIparameter(
"Q",
'i',
false);
313 incidentParam->SetDefaultValue(
"0");
315 incidentParam =
new G4UIparameter(
"E",
'd',
true);
316 incidentParam->SetDefaultValue(
"0.0");
319 targetIonCmd =
new G4UIcommand(
"/ActarSim/gun/Cine/targetIon",
this);
320 targetIonCmd->SetGuidance(
"Set properties of target ion to be generated.");
321 targetIonCmd->SetGuidance(
"[usage] /ActarSim/gun/Cine/targetIon Z A Q E");
324 targetIonCmd->SetGuidance(
" Q:(int) Charge of ion (in unit of e)");
325 targetIonCmd->SetGuidance(
" E:(double) Excitation energy (in keV)");
327 G4UIparameter* targetParam;
328 targetParam =
new G4UIparameter(
"Z",
'i',
false);
329 targetParam->SetDefaultValue(
"1");
331 targetParam =
new G4UIparameter(
"A",
'i',
false);
332 targetParam->SetDefaultValue(
"1");
334 targetParam =
new G4UIparameter(
"Q",
'i',
false);
335 targetParam->SetDefaultValue(
"0");
337 targetParam =
new G4UIparameter(
"E",
'd',
true);
338 targetParam->SetDefaultValue(
"0.0");
341 scatteredIonCmd =
new G4UIcommand(
"/ActarSim/gun/Cine/scatteredIon",
this);
342 scatteredIonCmd->SetGuidance(
"Set properties of scattered ion to be generated.");
343 scatteredIonCmd->SetGuidance(
"[usage] /ActarSim/gun/Cine/scatteredIon Z A Q E");
347 scatteredIonCmd->SetGuidance(
" E:(double) Excitation energy (in keV)");
349 G4UIparameter* scatteredParam;
350 scatteredParam =
new G4UIparameter(
"Z",
'i',
false);
351 scatteredParam->SetDefaultValue(
"1");
353 scatteredParam =
new G4UIparameter(
"A",
'i',
false);
354 scatteredParam->SetDefaultValue(
"1");
356 scatteredParam =
new G4UIparameter(
"Q",
'i',
false);
357 scatteredParam->SetDefaultValue(
"0");
359 scatteredParam =
new G4UIparameter(
"E",
'd',
true);
360 scatteredParam->SetDefaultValue(
"0.0");
363 recoilIonCmd =
new G4UIcommand(
"/ActarSim/gun/Cine/recoilIon",
this);
364 recoilIonCmd->SetGuidance(
"Set properties of recoil ion to be generated.");
365 recoilIonCmd->SetGuidance(
"[usage] /ActarSim/gun/Cine/recoilIon Z A Q E");
368 recoilIonCmd->SetGuidance(
" Q:(int) Charge of ion (in unit of e)");
369 recoilIonCmd->SetGuidance(
" E:(double) Excitation energy (in keV)");
371 G4UIparameter* recoilParam;
372 recoilParam =
new G4UIparameter(
"Z",
'i',
false);
373 recoilParam->SetDefaultValue(
"1");
375 recoilParam =
new G4UIparameter(
"A",
'i',
false);
376 recoilParam->SetDefaultValue(
"1");
378 recoilParam =
new G4UIparameter(
"Q",
'i',
false);
379 recoilParam->SetDefaultValue(
"0");
381 recoilParam =
new G4UIparameter(
"E",
'd',
true);
382 recoilParam->SetDefaultValue(
"0.0");
385 reactionQCmd =
new G4UIcmdWithADoubleAndUnit(
"/ActarSim/gun/Cine/reactionQ",
this);
391 reactionQCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
393 labEnergyCmd =
new G4UIcmdWithADoubleAndUnit(
"/ActarSim/gun/Cine/labEnergy",
this);
394 labEnergyCmd->SetGuidance(
"Sets the laboratory energy ");
399 labEnergyCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
401 thetaLabAngleCmd =
new G4UIcmdWithADoubleAndUnit(
"/ActarSim/gun/Cine/thetaLabAngle",
this);
402 thetaLabAngleCmd->SetGuidance(
"Sets theta lab angle for the scattered particle (degrees)");
418 KineDir =
new G4UIdirectory(
"/ActarSim/gun/Kine/");
419 KineDir->SetGuidance(
"Kine generator control");
440 parameter =
new G4UIparameter(
"thetaMin",
'd', omitable =
true);
441 parameter->SetDefaultValue(0.);
443 parameter =
new G4UIparameter(
"thetaMax",
'd', omitable =
true);
444 parameter->SetDefaultValue(180.);
446 parameter =
new G4UIparameter(
"unit",
's', omitable =
true);
447 parameter->SetDefaultValue(
"deg");
452 KineIncidentIonCmd->SetGuidance(
"[usage] /ActarSim/gun/Kine/incidentIon Z A Q E Mass");
459 G4UIparameter* KineIncidentParam;
460 KineIncidentParam =
new G4UIparameter(
"Z",
'i',
false);
461 KineIncidentParam->SetDefaultValue(
"1");
463 KineIncidentParam =
new G4UIparameter(
"A",
'i',
false);
464 KineIncidentParam->SetDefaultValue(
"1");
466 KineIncidentParam =
new G4UIparameter(
"Q",
'i',
false);
467 KineIncidentParam->SetDefaultValue(
"0");
469 KineIncidentParam =
new G4UIparameter(
"E",
'd',
true);
470 KineIncidentParam->SetDefaultValue(
"0.0");
472 KineIncidentParam =
new G4UIparameter(
"Mass",
'd',
true);
473 KineIncidentParam->SetDefaultValue(
"1.0");
477 KineTargetIonCmd->SetGuidance(
"Set properties of target ion to be generated.");
478 KineTargetIonCmd->SetGuidance(
"[usage] /ActarSim/gun/Cine/targetIon Z A Q E Mass");
485 G4UIparameter* KineTargetParam;
486 KineTargetParam =
new G4UIparameter(
"Z",
'i',
false);
487 KineTargetParam->SetDefaultValue(
"1");
489 KineTargetParam =
new G4UIparameter(
"A",
'i',
false);
490 KineTargetParam->SetDefaultValue(
"1");
492 KineTargetParam =
new G4UIparameter(
"Q",
'i',
false);
493 KineTargetParam->SetDefaultValue(
"0");
495 KineTargetParam =
new G4UIparameter(
"E",
'd',
true);
496 KineTargetParam->SetDefaultValue(
"0.0");
498 KineTargetParam =
new G4UIparameter(
"Mass",
'd',
true);
499 KineTargetParam->SetDefaultValue(
"1.0");
511 G4UIparameter* KineScatteredParam;
512 KineScatteredParam =
new G4UIparameter(
"Z",
'i',
false);
513 KineScatteredParam->SetDefaultValue(
"1");
515 KineScatteredParam =
new G4UIparameter(
"A",
'i',
false);
516 KineScatteredParam->SetDefaultValue(
"1");
518 KineScatteredParam =
new G4UIparameter(
"Q",
'i',
false);
519 KineScatteredParam->SetDefaultValue(
"0");
521 KineScatteredParam =
new G4UIparameter(
"E",
'd',
true);
522 KineScatteredParam->SetDefaultValue(
"0.0");
524 KineScatteredParam =
new G4UIparameter(
"Mass",
'd',
true);
525 KineScatteredParam->SetDefaultValue(
"1.0");
529 KineRecoilIonCmd->SetGuidance(
"Set properties of recoil ion to be generated.");
530 KineRecoilIonCmd->SetGuidance(
"[usage] /ActarSim/gun/Cine/recoilIon Z A Q E Mass");
537 G4UIparameter* KineRecoilParam;
538 KineRecoilParam =
new G4UIparameter(
"Z",
'i',
false);
539 KineRecoilParam->SetDefaultValue(
"1");
541 KineRecoilParam =
new G4UIparameter(
"A",
'i',
false);
542 KineRecoilParam->SetDefaultValue(
"1.");
544 KineRecoilParam =
new G4UIparameter(
"Q",
'i',
false);
545 KineRecoilParam->SetDefaultValue(
"0");
547 KineRecoilParam =
new G4UIparameter(
"E",
'd',
true);
548 KineRecoilParam->SetDefaultValue(
"0.0");
550 KineRecoilParam =
new G4UIparameter(
"Mass",
'd',
true);
551 KineRecoilParam->SetDefaultValue(
"1.0");
554 KineLabEnergyCmd =
new G4UIcmdWithADoubleAndUnit(
"/ActarSim/gun/Kine/labEnergy",
this);
562 KineUserThetaCMCmd =
new G4UIcmdWithADoubleAndUnit(
"/ActarSim/gun/Kine/userThetaCM",
this);
563 KineUserThetaCMCmd->SetGuidance(
"Sets theta CM angle for scattered particle (in degrees)");
571 KineUserPhiAngleCmd =
new G4UIcmdWithADoubleAndUnit(
"/ActarSim/gun/Kine/userPhiAngle",
this);
572 KineUserPhiAngleCmd->SetGuidance(
"User set phi angle for outgoing particle in the Lab system (in degrees)");
579 vertexPositionCmd =
new G4UIcmdWith3VectorAndUnit(
"/ActarSim/gun/Kine/vertexPosition",
this);
585 energyCmd =
new G4UIcmdWithADoubleAndUnit(
"/ActarSim/gun/energy",
this);
586 energyCmd->SetGuidance(
"Sets the kinetic energy of the primary particle");
587 energyCmd->SetParameterName(
"energy",
false);
591 energyCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
593 directionCmd =
new G4UIcmdWith3Vector(
"/ActarSim/gun/direction",
this);
595 directionCmd->SetGuidance(
"Direction does not need to be a unit vector.");
596 directionCmd->SetParameterName(
"Px",
"Py",
"Pz",
true,
true);
597 directionCmd->SetRange(
"Px != 0 || Py != 0 || Pz != 0");
599 positionCmd =
new G4UIcmdWith3VectorAndUnit(
"/ActarSim/gun/position",
this);
600 positionCmd->SetGuidance(
"Set starting position of the particle.");
601 positionCmd->SetParameterName(
"X",
"Y",
"Z",
true,
true);
606 timeCmd =
new G4UIcmdWithADoubleAndUnit(
"/ActarSim/gun/time",
this);
607 timeCmd->SetGuidance(
"Set initial time of the particle.");
608 timeCmd->SetParameterName(
"t0",
true,
true);
624 parameter =
new G4UIparameter(
"randomVertexZMin",
'd', omitable =
true);
625 parameter->SetDefaultValue(0.);
627 parameter =
new G4UIparameter(
"randomVertexZMax",
'd', omitable =
true);
628 parameter->SetDefaultValue(300.);
630 parameter =
new G4UIparameter(
"unit",
's', omitable =
true);
631 parameter->SetDefaultValue(
"mm");
634 vertexZPositionCmd =
new G4UIcmdWithADoubleAndUnit(
"/ActarSim/gun/vertexZPosition",
this);
642 polCmd =
new G4UIcmdWith3Vector(
"/ActarSim/gun/polarization",
this);
643 polCmd->SetGuidance(
"Set polarization.");
644 polCmd->SetParameterName(
"Px",
"Py",
"Pz",
true,
true);
645 polCmd->SetRange(
"Px>=-1.&&Px<=1.&&Py>=-1.&&Py<=1.&&Pz>=-1.&&Pz<=1.");
647 numberCmd =
new G4UIcmdWithAnInteger(
"/ActarSim/gun/number",
this);
648 numberCmd->SetGuidance(
"Set number of particles to be generated in a single event.");
649 numberCmd->SetParameterName(
"N",
true,
true);
652 ionCmd =
new G4UIcommand(
"/ActarSim/gun/ion",
this);
653 ionCmd->SetGuidance(
"Set properties of ion to be generated.");
654 ionCmd->SetGuidance(
"[usage] /ActarSim/gun/ion Z A Q E");
655 ionCmd->SetGuidance(
" Z:(int) AtomicNumber");
656 ionCmd->SetGuidance(
" A:(int) AtomicMass");
657 ionCmd->SetGuidance(
" Q:(int) Charge of Ion (in unit of e)");
658 ionCmd->SetGuidance(
" E:(double) Excitation energy (in keV)");
660 G4UIparameter* param;
661 param =
new G4UIparameter(
"Z",
'i',
false);
662 param->SetDefaultValue(
"1");
663 ionCmd->SetParameter(param);
664 param =
new G4UIparameter(
"A",
'i',
false);
665 param->SetDefaultValue(
"1");
666 ionCmd->SetParameter(param);
667 param =
new G4UIparameter(
"Q",
'i',
true);
668 param->SetDefaultValue(
"0");
669 ionCmd->SetParameter(param);
670 param =
new G4UIparameter(
"E",
'd',
true);
671 param->SetDefaultValue(
"0.0");
672 ionCmd->SetParameter(param);
737 G4String newValues) {
742 if (newValues ==
"ion") {
746 G4ParticleDefinition* pd =
particleTable->FindParticle(newValues);
766 SetUserThetaAngle(
beamThetaCmd->GetNewDoubleValue(newValues));
770 SetUserPhiAngle(
beamPhiCmd->GetNewDoubleValue(newValues));
806 G4double thetaMax, thetaMin;
811 std::istringstream is(newValues);
812 is >> x >> y >> unts;
815 thetaMin = x*G4UIcommand::ValueOf(unt);
816 thetaMax = y*G4UIcommand::ValueOf(unt);
822 G4double phiMax, phiMin;
827 std::istringstream is(newValues);
828 is >> x >> y >> unts;
831 phiMin = x*G4UIcommand::ValueOf(unt);
832 phiMax = y*G4UIcommand::ValueOf(unt);
838 G4double thetaMax, thetaMin;
843 std::istringstream is(newValues);
844 is >> x >> y >> unts;
847 thetaMin = x*G4UIcommand::ValueOf(unt);
848 thetaMax = y*G4UIcommand::ValueOf(unt);
875 G4double thetaMax, thetaMin;
879 std::istringstream is(newValues);
880 is >> x >> y >> unts;
883 thetaMin = x*G4UIcommand::ValueOf(unt);
884 thetaMax = y*G4UIcommand::ValueOf(unt);
902 G4double incidentEnergyTmp;
925 SetReactionQ(
reactionQCmd->GetNewDoubleValue(newValues));
929 SetLabEnergy(
labEnergyCmd->GetNewDoubleValue(newValues));
953 G4double vertexZMin, vertexZMax;
957 std::istringstream is(newValues);
958 is >> x >> y >> unts;
961 vertexZMin = x*G4UIcommand::ValueOf(unt);
962 vertexZMax = y*G4UIcommand::ValueOf(unt);
998 else if( command==
polCmd) {
1004 else if( command==
ionCmd) {
1019 G4Tokenizer next( newValues );
1023 G4String sQ = next();
1036 G4ParticleDefinition* ion;
1039 G4cout <<
"##################################################################" 1041 <<
"####### ActarSimPrimaryGeneratorMessenger::IonCommand() #######" 1043 <<
" A=" <<
fAtomicMass <<
"can not be defined" << G4endl;
1044 G4cout <<
"##################################################################" 1065 G4Tokenizer next( newValues );
1069 G4String sQ = next();
1087 G4cout <<
"##################################################################" 1089 <<
"#### ActarSimPrimaryGeneratorMessenger::incidentIonCommand() ####" 1091 <<
" A=" <<
fAtomicMass <<
"can not be defined" << G4endl;
1092 G4cout <<
"##################################################################" 1104 G4Tokenizer next( newValues );
1117 G4cout <<
"##################################################################" 1119 <<
"#### ActarSimPrimaryGeneratorMessenger::KineIncidentIonCommand() ####" 1121 <<
" A=" <<
fAtomicMass <<
"can not be defined" << G4endl;
1122 G4cout <<
"##################################################################" 1136 G4Tokenizer next( newValues );
1140 G4String sQ = next();
1158 G4cout <<
"##################################################################" 1160 <<
"##### ActarSimPrimaryGeneratorMessenger::targetIonCommand() ####" 1162 <<
" A=" <<
fAtomicMass <<
"can not be defined" << G4endl;
1163 G4cout <<
"##################################################################" 1175 G4Tokenizer next( newValues );
1188 G4cout <<
"##################################################################" 1190 <<
"##### ActarSimPrimaryGeneratorMessenger::KineTargetIonCommand() ####" 1192 <<
" A=" <<
fAtomicMass <<
"can not be defined" << G4endl;
1193 G4cout <<
"##################################################################" 1208 G4Tokenizer next( newValues );
1212 G4String sQ = next();
1230 G4cout <<
"##################################################################" 1232 <<
"### ActarSimPrimaryGeneratorMessenger::scatteredIonCommand() ###" 1234 <<
" A=" <<
fAtomicMass <<
"can not be defined" << G4endl;
1235 G4cout <<
"##################################################################" 1248 G4Tokenizer next( newValues );
1261 G4cout <<
"##################################################################" 1263 <<
"### ActarSimPrimaryGeneratorMessenger::KineScatteredIonCommand() ###" 1265 <<
" A=" <<
fAtomicMass <<
"can not be defined" << G4endl;
1266 G4cout <<
"##################################################################" 1281 G4Tokenizer next( newValues );
1285 G4String sQ = next();
1303 G4cout <<
"##################################################################" 1305 <<
"##### ActarSimPrimaryGeneratorMessenger::recoilIonCommand() ####" 1307 <<
" A=" <<
fAtomicMass <<
"can not be defined" << G4endl;
1308 G4cout <<
"##################################################################" 1320 G4Tokenizer next( newValues );
1333 G4cout <<
"##################################################################" 1335 <<
"##### ActarSimPrimaryGeneratorMessenger::KineRecoilIonCommand() ####" 1337 <<
" A=" <<
fAtomicMass <<
"can not be defined" << G4endl;
1338 G4cout <<
"##################################################################" G4UIcommand * KineTargetIonCmd
Set properties of target ion to be generated.
G4bool fShootIon
Internal variables for ion creation.
void SetBeamMomentumDirection(G4ParticleMomentum aMomentumDirection)
G4UIcmdWithADoubleAndUnit * beamPhiCmd
Sets phi angle for beam (in degrees)
G4UIcmdWith3Vector * beamDirectionCmd
Set beam momentum direction.
G4UIcmdWithADoubleAndUnit * timeCmd
Set initial time of the particle.
G4UIcommand * CinerandomThetaValCmd
Sets the limist in the Theta angle for the scattered particle.
void SetNumberOfParticles(G4int i)
void SetReactionFromCineFlag(G4String val)
void SetRandomPhiAngleFlag(G4String val)
G4UIcommand * recoilIonCmd
Set properties of recoil ion to be generated.
G4UIcmdWithAString * reactionFromCineCmd
Select a reaction using Cine.
void SetAlphaSourceFlag(G4String val)
G4UIcmdWithAnInteger * numberCmd
Set number of particles to be generated in a single event.
void SetIncidentIon(G4Ions *aIonDef)
void SetScatteredIon(G4Ions *aIonDef)
G4UIcmdWithAString * reactionFromCrossSectionCmd
DO NOT USE. Simulates beam/target from the cross-sections. DO NOT USE.
G4UIcmdWithADoubleAndUnit * energyCmd
Sets the kinetic energy of the primary particle.
void SetRandomThetaVal(G4double min, G4double max)
void SetExEnergyOfScattered(G4double val)
G4UIcmdWithAString * KineRandomThetaCmd
Randomize Theta_CM of outgoing particles.
G4UIdirectory * KineDir
Directory for CINE commands.
void SetExEnergyOfProjectile(G4double val)
G4UIcmdWithADoubleAndUnit * vertexZPositionCmd
Set the Z-value of the reaction vertex.
G4double GetParticleEnergy()
G4UIcommand * randomThetaValCmd
Sets the limits in the Theta angle for the scattered particle.
void KineTargetIonCommand(G4String newValues)
Particular behavior of the (KINE) target ion command. Ion state should be selected.
G4ThreeVector GetParticlePosition()
G4UIcommand * scatteredIonCmd
Set properties of scattered ion to be generated.
void SetRecoilIonCharge(G4double aCharge)
G4UIcmdWith3Vector * polCmd
Set polarization.
G4UIcmdWithADoubleAndUnit * KineUserThetaCMCmd
Sets theta CM angle for scattered particle (in degrees)
G4UIcommand * KineRecoilIonCmd
Set properties of recoil ion to be generated.
void SetBeamRadiusAtEntrance(G4double val)
G4UIcmdWithADoubleAndUnit * labEnergyCmd
Sets the laboratory energy.
void KineRecoilIonCommand(G4String newValues)
Particular behavior of the (KINE) recoil ion command. Ion state should be selected.
G4String GetCurrentValue(G4UIcommand *command)
Get current value from commands.
G4UIcommand * KineScatteredIonCmd
Set properties of scattered ion to be generated.
G4UIcommand * randomVertexZPositionRangeCmd
Set the min and max Z-value of random vertex position.
G4UIcommand * KineRandomThetaRangeCmd
Sets the limits in the Theta angle for the scattered particle.
G4UIcommand * incidentIonCmd
Set properties of incident ion to be generated.
G4IonTable * ionTable
Pointer to the global particle table.
void SetVertexPosition(G4ThreeVector apos)
void SetReactionFromEvGenFlag(G4String val)
void SetVertexZPosition(G4double val)
void SetRandomThetaFlag(G4String val)
void SetReactionFromKineFlag(G4String val)
G4int fIonCharge
Internal variables for ion creation: ion charge.
void SetIncidentEnergy(G4double val)
void SetNewValue(G4UIcommand *, G4String)
Setting the values using the interface.
void SetParticleCharge(G4double aCharge)
ActarSimPrimaryGeneratorAction * actarSimActionGun
Pointer to main primary generator class.
void KineIncidentIonCommand(G4String newValues)
Particular behavior of the (KINE) incident ion command. Ion state should be selected.
G4UIcmdWithADoubleAndUnit * beamRadiusAtEntranceCmd
Selects the beam radius at entrance of ACTAR.
ActarSimPrimaryGeneratorMessenger(ActarSimPrimaryGeneratorAction *)
void SetParticleTime(G4double aTime)
G4UIcmdWithADoubleAndUnit * beamThetaCmd
Sets theta angle for beam (in degrees)
void scatteredIonCommand(G4String newValues)
Particular behavior of the scattered ion command. Ion state should be selected.
G4UIcmdWithAString * particleCmd
Select the incident particle.
void SetParticlePosition(G4ThreeVector aPos)
void recoilIonCommand(G4String newValues)
Particular behavior of the recoil ion command. Ion state should be selected.
G4UIcommand * randomPhiValCmd
Sets the limits in the Phi angle for the scattered particle.
void SetRandomPhiFlag(G4String val)
G4UIcmdWithADoubleAndUnit * thetaLabAngleCmd
Sets theta lab angle for the scattered particle (degrees)
~ActarSimPrimaryGeneratorMessenger()
Destructor.
G4UIcommand * KineIncidentIonCmd
Set properties of incident ion to be generated.
void SetExEnergyOfTarget(G4double val)
void SetTargetIon(G4Ions *aIonDef)
G4UIcmdWithoutParameter * listCmd
List available particles.
G4UIcmdWithADoubleAndUnit * KineLabEnergyCmd
Sets the laboratory energy.
G4UIcmdWith3VectorAndUnit * vertexPositionCmd
Set the position of the vertex.
void SetEmittance(G4double val)
void SetRandomVertexZPositionFlag(G4String val)
void SetBeamPosition(G4ThreeVector aPos)
void SetRandomVertexZPositionVal(G4double min, G4double max)
G4UIcmdWithADoubleAndUnit * reactionQCmd
Sets the reaction Q.
G4double fIonExciteEnergy
Internal variables for ion creation: ion excitation energy.
void SetParticlePolarization(G4ThreeVector aVal)
void SetLabEnergy(G4double val)
G4UIcmdWithAString * realisticBeamCmd
Simulates beam emittance according to emittance parameters.
G4UIcmdWithADouble * emittanceCmd
Selects the value of the emittance [in mm mrad].
void KineScatteredIonCommand(G4String newValues)
Particular behavior of the (KINE) scattered ion command. Ion state should be selected.
void SetRealisticBeamFlag(G4String val)
void SetParticleDefinition(G4ParticleDefinition *aParticleDefinition)
G4UIdirectory * CineDir
Directory for CINE commands.
G4ThreeVector GetParticlePolarization()
G4UIcmdWithAString * reactionFileCmd
Select the reaction definition file.
void SetReactionFromCrossSectionFlag(G4String val)
G4UIcmdWithAString * beamInteractionCmd
Simulates the beam energy loss in gas.
G4UIcmdWithAString * randomPhiCmd
Select a random Phi angle for the scattered particle.
void SetReactionFile(G4String val)
void SetMassOfScattered(G4double val)
void SetScatteredIonCharge(G4double aCharge)
G4UIcmdWith3Vector * directionCmd
Set momentum direction.
G4ParticleMomentum GetParticleMomentumDirection()
G4UIcommand * targetIonCmd
Set properties of target ion to be generated.
void SetMassOfRecoiled(G4double val)
void incidentIonCommand(G4String newValues)
Particular behavior of the incident ion command. Ion state should be selected.
G4UIcmdWithAString * KineRandomPhiAngleCmd
Randomize Lab Phi angles of out-going particles.
void SetReactionFromFileFlag(G4String val)
G4ParticleTable * particleTable
Pointer to the global particle table.
G4int GetNumberOfParticles()
G4UIcmdWithAString * reactionFromFileCmd
Select a reaction from an input file.
G4UIcmdWithAString * CinerandomThetaCmd
Select a random Theta angle for the scattered particle.
void SetMassOfTarget(G4double val)
G4UIcmdWithAString * alphaSourceCmd
NOT VALIDATED. CHECK THIS COMMAND!
G4int fAtomicNumber
Internal variables for ion creation: atomic number.
G4UIcmdWithAString * reactionFromKineCmd
Select a reaction using Kine.
void SetBeamInteractionFlag(G4String val)
G4UIcmdWithAString * reactionFromEvGenCmd
DO NOT USE. Simulates beam/target from event generator. DO NOT USE.
void IonCommand(G4String newValues)
Particular behavior of the ion command. Ion state should be selected.
G4int fAtomicMass
Internal variables for ion creation: atomic mass.
void SetTargetIonCharge(G4double aCharge)
G4UIdirectory * gunDir
Directory for gun commands.
void SetExEnergyOfRecoiled(G4double val)
G4double fIonMass
Internal variables for ion creation: ion mass in atomic mass unit u.
void targetIonCommand(G4String newValues)
Particular behavior of the target ion command. Ion state should be selected.
G4UIcmdWith3VectorAndUnit * positionCmd
Set starting position of the particle.
G4UIcommand * ionCmd
Set properties of ion to be generated.
G4double GetParticleTime()
void SetRandomPhiVal(G4double min, G4double max)
void SetMassOfProjectile(G4double val)
void SetIncidentIonCharge(G4double aCharge)
G4UIcmdWithAString * randomThetaCmd
Select a random Theta angle for the scattered particle.
void SetParticleEnergy(G4double aKineticEnergy)
G4ParticleDefinition * GetParticleDefinition()
G4UIcmdWithADoubleAndUnit * KineUserPhiAngleCmd
User set phi angle for outgoing particle in the Lab system (in degrees)
void SetParticleMomentumDirection(G4ParticleMomentum aMomentumDirection)
void SetRecoilIon(G4Ions *aIonDef)
G4UIcmdWithAString * randomVertexZPositionCmd
Randomize the reaction vertex Z position.
G4UIcmdWith3VectorAndUnit * beamPositionCmd
Set beam starting position.