- // hadronic process
- // G3 default value: 1
- // G4 processes: all defined by TG4PhysicsConstructorHadron
- //
- // Particles: hadrons
- // Physics: Hadron
- // flag = 0 no multiple scattering
- // flag = 1 hadronic interactions, secondaries processed
- // flag = 2 hadronic interactions, no secondaries stored
- // gMC ->SetProcess("HADR",1); // ??? hadronic process
- //Select pure GEANH (HADR 1) or GEANH/NUCRIN (HADR 3) ?????
- else if (strncmp(&sProcessFlag[i][0],"HADR",4) == 0) {
- if (iProcessValue[i] == 1 || iProcessValue[i] == 2) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Hadronic interaction is ON by default in FLUKA";
- AliceInp << endl;
- AliceInp << "*No FLUKA card generated";
- AliceInp << endl;
- }
- else if (iProcessValue[i] == 0) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Hadronic interaction is set OFF";
- AliceInp << endl;
- AliceInp << "*Generated from call: SetProcess('HADR',0);";
- AliceInp << endl;
- AliceInp << setw(10) << "MULSOPT ";
- AliceInp << setiosflags(ios::scientific) << setprecision(5);
- AliceInp << setiosflags(ios::fixed) << setiosflags(ios::showpoint) << setprecision(1);
- AliceInp << setw(10) << 0.0; // ignored
- AliceInp << setw(10) << 3.0; // multiple scattering for hadrons and muons is completely suppressed
- AliceInp << setw(10) << 0.0; // no spin-relativistic corrections
- AliceInp << setw(10) << 3.0; // lower bound of the material indices in which the respective thresholds apply
- AliceInp << setprecision(2);
- AliceInp << setw(10) << fLastMaterial; // upper bound of the material indices in which the respective thresholds apply
- AliceInp << endl;
-
- }
- else {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Illegal flag value in SetProcess('HADR',?) call.";
- AliceInp << endl;
- AliceInp << "*No FLUKA card generated";
- AliceInp << endl;
- }
- } // end of else if (strncmp(&sProcessFlag[i][0],"HADR",4) == 0)
-
-
- // energy loss
- // G3 default value: 2
- // G4 processes: G4eIonisation/G4IeIonization,
- // G4MuIonisation/G4IMuIonization,
- // G4hIonisation/G4IhIonisation
- //
- // Particles: charged
- // Physics: EM
- // flag=0 no energy loss
- // flag=1 restricted energy loss fluctuations
- // flag=2 complete energy loss fluctuations
- // flag=3 same as 1
- // flag=4 no energy loss fluctuations
- // If the value ILOSS is changed, then (in G3) cross-sections and energy
- // loss tables must be recomputed via the command 'PHYSI'
- // gMC ->SetProcess("LOSS",2); // ??? IONFLUCT ? energy loss
- else if (strncmp(&sProcessFlag[i][0],"LOSS",4) == 0) {
- if (iProcessValue[i] == 2) { // complete energy loss fluctuations
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Complete energy loss fluctuations do not exist in FLUKA";
- AliceInp << endl;
- AliceInp << "*Generated from call: SetProcess('LOSS',2);";
- AliceInp << endl;
- AliceInp << "*flag=2=complete energy loss fluctuations";
- AliceInp << endl;
- AliceInp << "*No input card generated";
- AliceInp << endl;
- }
- else if (iProcessValue[i] == 1 || iProcessValue[i] == 3) { // restricted energy loss fluctuations
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Restricted energy loss fluctuations";
- AliceInp << endl;
- AliceInp << "*Generated from call: SetProcess('LOSS',1) or SetProcess('LOSS',3)";
- AliceInp << endl;
- AliceInp << setw(10) << "IONFLUCT ";
- AliceInp << setiosflags(ios::scientific) << setprecision(5);
- AliceInp << setiosflags(ios::fixed) << setiosflags(ios::showpoint) << setprecision(1);
- AliceInp << setw(10) << 1.0; // restricted energy loss fluctuations (for hadrons and muons) switched on
- AliceInp << setw(10) << 1.0; // restricted energy loss fluctuations (for e+ and e-) switched on
- AliceInp << setw(10) << 1.0; // minimal accuracy
- AliceInp << setw(10) << 3.0; // lower bound of the material indices in which the respective thresholds apply
- AliceInp << setprecision(2);
- AliceInp << setw(10) << fLastMaterial; // upper bound of the material indices in which the respective thresholds apply
- AliceInp << endl;
- }
- else if (iProcessValue[i] == 4) { // no energy loss fluctuations
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*No energy loss fluctuations";
- AliceInp << endl;
- AliceInp << "*Generated from call: SetProcess('LOSS',4)";
- AliceInp << endl;
- AliceInp << setw(10) << -1.0; // restricted energy loss fluctuations (for hadrons and muons) switched off
- AliceInp << setw(10) << -1.0; // restricted energy loss fluctuations (for e+ and e-) switched off
- AliceInp << setw(10) << 1.0; // minimal accuracy
- AliceInp << setw(10) << 3.0; // lower bound of the material indices in which the respective thresholds apply
- AliceInp << setprecision(2);
- AliceInp << setw(10) << fLastMaterial; // upper bound of the material indices in which the respective thresholds apply
- AliceInp << endl;
- }
- else {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Illegal flag value in SetProcess('LOSS',?) call.";
- AliceInp << endl;
- AliceInp << "*No FLUKA card generated";
- AliceInp << endl;
- }
- } // end of else if (strncmp(&sProcessFlag[i][0],"LOSS",4) == 0)
-
-
- // multiple scattering
- // G3 default value: 1
- // G4 process: G4MultipleScattering/G4IMultipleScattering
- //
- // Particles: charged
- // Physics: EM
- // flag = 0 no multiple scattering
- // flag = 1 Moliere or Coulomb scattering
- // flag = 2 Moliere or Coulomb scattering
- // flag = 3 Gaussian scattering
- // gMC ->SetProcess("MULS",1); // MULSOPT multiple scattering
- else if (strncmp(&sProcessFlag[i][0],"MULS",4) == 0) {
- if (iProcessValue[i] == 1 || iProcessValue[i] == 2 || iProcessValue[i] == 3) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Multiple scattering is ON by default for e+e- and for hadrons/muons";
- AliceInp << endl;
- AliceInp << "*No FLUKA card generated";
- AliceInp << endl;
- }
- else if (iProcessValue[i] == 0) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Multiple scattering is set OFF";
- AliceInp << endl;
- AliceInp << "*Generated from call: SetProcess('MULS',0);";
- AliceInp << endl;
- AliceInp << setw(10) << "MULSOPT ";
- AliceInp << setiosflags(ios::scientific) << setprecision(5);
- AliceInp << setiosflags(ios::fixed) << setiosflags(ios::showpoint) << setprecision(1);
- AliceInp << setw(10) << 0.0; // ignored
- AliceInp << setw(10) << 3.0; // multiple scattering for hadrons and muons is completely suppressed
- AliceInp << setw(10) << 3.0; // multiple scattering for e+ and e- is completely suppressed
- AliceInp << setw(10) << 3.0; // lower bound of the material indices in which the respective thresholds apply
- AliceInp << setprecision(2);
- AliceInp << setw(10) << fLastMaterial; // upper bound of the material indices in which the respective thresholds apply
- AliceInp << endl;
- }
- else {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Illegal flag value in SetProcess('MULS',?) call.";
- AliceInp << endl;
- AliceInp << "*No FLUKA card generated";
- AliceInp << endl;
- }
- } // end of else if (strncmp(&sProcessFlag[i][0],"MULS",4) == 0)
-
-
- // muon nuclear interaction
- // G3 default value: 0
- // G4 processes: G4MuNuclearInteraction,
- // G4MuonMinusCaptureAtRest
- //
- // Particles: mu
- // Physics: Not set
- // flag = 0 no muon-nuclear interaction
- // flag = 1 nuclear interaction, secondaries processed
- // flag = 2 nuclear interaction, secondaries not processed
- // gMC ->SetProcess("MUNU",1); // MUPHOTON 1. 0. 0. 3. lastmat
- else if (strncmp(&sProcessFlag[i][0],"MUNU",4) == 0) {
- if (iProcessValue[i] == 1) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Muon nuclear interactions with production of secondary hadrons";
- AliceInp << endl;
- AliceInp << "*Generated from call: SetProcess('MUNU',1);";
- AliceInp << endl;
- AliceInp << setw(10) << "MUPHOTON ";
- AliceInp << setiosflags(ios::scientific) << setprecision(5);
- AliceInp << setiosflags(ios::fixed) << setiosflags(ios::showpoint) << setprecision(1);
- AliceInp << setw(10) << 1.0; // full simulation of muon nuclear interactions and production of secondary hadrons
- AliceInp << setw(10) << 0.0; // ratio of longitudinal to transverse virtual photon cross-section - Default = 0.25.
- AliceInp << setw(10) << 0.0; // fraction of rho-like interactions ( must be < 1) - Default = 0.75.
- AliceInp << setprecision(1);
- AliceInp << setw(10) << 3.0; // lower bound of the material indices in which the respective thresholds apply
- AliceInp << setprecision(2);
- AliceInp << setw(10) << fLastMaterial; // upper bound of the material indices in which the respective thresholds apply
- AliceInp << endl;
- }
- else if (iProcessValue[i] == 2) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Muon nuclear interactions without production of secondary hadrons";
- AliceInp << endl;
- AliceInp << "*Generated from call: SetProcess('MUNU',2);";
- AliceInp << endl;
- AliceInp << setw(10) << "MUPHOTON ";
- AliceInp << setiosflags(ios::scientific) << setprecision(5);
- AliceInp << setiosflags(ios::fixed) << setiosflags(ios::showpoint) << setprecision(1);
- AliceInp << setw(10) << 2.0; // full simulation of muon nuclear interactions and production of secondary hadrons
- AliceInp << setw(10) << 0.0; // ratio of longitudinal to transverse virtual photon cross-section - Default = 0.25.
- AliceInp << setw(10) << 0.0; // fraction of rho-like interactions ( must be < 1) - Default = 0.75.
- AliceInp << setprecision(1);
- AliceInp << setw(10) << 3.0; // lower bound of the material indices in which the respective thresholds apply
- AliceInp << setw(10) << fLastMaterial; // upper bound of the material indices in which the respective thresholds apply
- AliceInp << endl;
- }
- else if (iProcessValue[i] == 0) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*No muon nuclear interaction - no FLUKA card generated";
- AliceInp << endl;
- AliceInp << "*Generated from call: SetProcess('MUNU',0)";
- AliceInp << endl;
- }
- else {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Illegal flag value in SetProcess('MUNU',?) call.";
- AliceInp << endl;
- AliceInp << "*No FLUKA card generated";
- AliceInp << endl;
- }
- } // end of else if (strncmp(&sProcessFlag[i][0],"MUNU",4) == 0)
-
-
- // photofission
- // G3 default value: 0
- // G4 process: ??
- //
- // Particles: gamma
- // Physics: ??
- // gMC ->SetProcess("PFIS",0); // PHOTONUC -1. 0. 0. 3. lastmat 0.
- // flag = 0 no photon fission
- // flag = 1 photon fission, secondaries processed
- // flag = 2 photon fission, no secondaries stored
- else if (strncmp(&sProcessFlag[i][0],"PFIS",4) == 0) {
- if (iProcessValue[i] == 0) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*No photonuclear interactions";
- AliceInp << endl;
- AliceInp << "*Generated from call: SetProcess('PFIS',0);";
- AliceInp << endl;
- AliceInp << setw(10) << "PHOTONUC ";
- AliceInp << setiosflags(ios::fixed) << setiosflags(ios::showpoint) << setprecision(1);
- AliceInp << setw(10) << -1.0; // no photonuclear interactions
- AliceInp << setw(10) << 0.0; // not used
- AliceInp << setw(10) << 0.0; // not used
- AliceInp << setw(10) << 3.0; // upper bound of the material indices in which the respective thresholds apply
- AliceInp << setprecision(2);
- AliceInp << setw(10) << fLastMaterial;
- AliceInp << setprecision(1); // upper bound of the material indices in which the respective thresholds apply
- AliceInp << setprecision(1);
- AliceInp << setw(10) << 1.0; // step length in assigning indices
- AliceInp << endl;
- }
- else if (iProcessValue[i] == 1) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Photon nuclear interactions are activated at all energies";
- AliceInp << endl;
- AliceInp << "*Generated from call: SetProcess('PFIS',1);";
- AliceInp << endl;
- AliceInp << setw(10) << "PHOTONUC ";
- AliceInp << setiosflags(ios::fixed) << setiosflags(ios::showpoint) << setprecision(1);
- AliceInp << setw(10) << 1.0; // photonuclear interactions are activated at all energies
- AliceInp << setw(10) << 0.0; // not used
- AliceInp << setw(10) << 0.0; // not used
- AliceInp << setprecision(2);
- AliceInp << setw(10) << 3.0; // upper bound of the material indices in which the respective thresholds apply
- AliceInp << setw(10) << fLastMaterial;
- AliceInp << setprecision(1); // upper bound of the material indices in which the respective thresholds apply
- AliceInp << setprecision(1);
- AliceInp << setw(10) << 1.0; // step length in assigning indices
- AliceInp << endl;
- }
- else if (iProcessValue[i] == 0) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*No photofission - no FLUKA card generated";
- AliceInp << endl;
- AliceInp << "*Generated from call: SetProcess('PFIS',0)";
- AliceInp << endl;
- }
- else {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Illegal flag value in SetProcess('PFIS',?) call.";
- AliceInp << endl;
- AliceInp << "*No FLUKA card generated";
- AliceInp << endl;
- }
- }
-
-
- // photo electric effect
- // G3 default value: 1
- // G4 processes: G4PhotoElectricEffect
- // G4LowEnergyPhotoElectric
- // Particles: gamma
- // Physics: EM
- // flag = 0 no photo electric effect
- // flag = 1 photo electric effect, electron processed
- // flag = 2 photo electric effect, no electron stored
- // gMC ->SetProcess("PHOT",1); // EMFCUT 0. -1. 0. 3. lastmat 0. PHOT-THR
- else if (strncmp(&sProcessFlag[i][0],"PHOT",4) == 0) {
- if (iProcessValue[i] == 1 || iProcessValue[i] == 2) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Photo electric effect is activated";
- AliceInp << endl;
- AliceInp << "*Generated from call: SetProcess('PHOT',1);";
- AliceInp << endl;
- AliceInp << setw(10) << "EMFCUT ";
- AliceInp << setiosflags(ios::fixed) << setiosflags(ios::showpoint) << setprecision(1);
- AliceInp << setw(10) << 0.0; // ignored
- AliceInp << setw(10) << -1.0; // resets to default=0.
- AliceInp << setw(10) << 0.0; // ignored
- AliceInp << setw(10) << 3.0; // upper bound of the material indices in which the respective thresholds apply
- AliceInp << setprecision(2);
- AliceInp << setw(10) << fLastMaterial; // upper bound of the material indices in which the respective thresholds apply
- AliceInp << setprecision(1);
- AliceInp << setw(10) << 1.0; // step length in assigning indices
- AliceInp << setw(8) << "PHOT-THR";
- AliceInp << endl;
- }
- else if (iProcessValue[i] == 0) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*No photo electric effect - no FLUKA card generated";
- AliceInp << endl;
- AliceInp << "*Generated from call: SetProcess('PHOT',0)";
- AliceInp << endl;
- }
- else {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Illegal flag value in SetProcess('PHOT',?) call.";
- AliceInp << endl;
- AliceInp << "*No FLUKA card generated";
- AliceInp << endl;
- }
- } // else if (strncmp(&sProcessFlag[i][0],"PHOT",4) == 0)
-
-
- // Rayleigh scattering
- // G3 default value: 0
- // G4 process: G4OpRayleigh
- //
- // Particles: optical photon
- // Physics: Optical
- // flag = 0 Rayleigh scattering off
- // flag = 1 Rayleigh scattering on
- //xx gMC ->SetProcess("RAYL",1);
- else if (strncmp(&sProcessFlag[i][0],"RAYL",4) == 0) {
- if (iProcessValue[i] == 1) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Rayleigh scattering is ON by default in FLUKA";
- AliceInp << endl;
- AliceInp << "*No FLUKA card generated";
- AliceInp << endl;
- }
- else if (iProcessValue[i] == 0) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Rayleigh scattering is set OFF";
- AliceInp << endl;
- AliceInp << "*Generated from call: SetProcess('RAYL',0);";
- AliceInp << endl;
- AliceInp << setw(10) << "EMFRAY ";
- AliceInp << setiosflags(ios::scientific) << setprecision(5);
- AliceInp << setiosflags(ios::fixed) << setiosflags(ios::showpoint) << setprecision(1);
- AliceInp << setw(10) << -1.0; // no Rayleigh scattering and no binding corrections for Compton
- AliceInp << setw(10) << 3.0; // lower bound of the material indices in which the respective thresholds apply
- AliceInp << setprecision(2);
- AliceInp << setw(10) << fLastMaterial; // upper bound of the material indices in which the respective thresholds apply
- AliceInp << endl;
- }
- else {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Illegal flag value in SetProcess('RAYL',?) call.";
- AliceInp << endl;
- AliceInp << "*No FLUKA card generated";
- AliceInp << endl;
- }
- } // end of else if (strncmp(&sProcessFlag[i][0],"RAYL",4) == 0)
-
-
- // synchrotron radiation in magnetic field
- // G3 default value: 0
- // G4 process: G4SynchrotronRadiation
- //
- // Particles: ??
- // Physics: Not set
- // flag = 0 no synchrotron radiation
- // flag = 1 synchrotron radiation
- //xx gMC ->SetProcess("SYNC",1); // synchrotron radiation generation
- else if (strncmp(&sProcessFlag[i][0],"SYNC",4) == 0) {
- AliceInp << "*";
- AliceInp << endl;
- AliceInp << "*Synchrotron radiation generation is NOT implemented in FLUKA";
- AliceInp << endl;
- AliceInp << "*No FLUKA card generated";
- AliceInp << endl;
- }
-