34 #define INCLXX_IN_GEANT4_MODE 1
52 : particle1(p1), particle2(p2)
66 G4int available_iso = 0;
73 G4int nbr_particle = 3;
82 else if((iso == 0 && rdm < 0.55) || rdm < 0.5){
99 available_iso += nbr_pions*2;
100 nbr_particle += nbr_pions;
108 for(
Int_t i=0; i<nbr_pions; i++){
110 if(available_iso-std::abs(iso-iso_system) >= 4){
112 if(((iso == 0) && rdm < 0.3) || ((iso == -2) && rdm < 0.40) || rdm < 0.25){
117 else if(((iso == 0) && rdm < 0.7) || ((iso == -2) && rdm < 0.75) || rdm < 0.60){
127 else if(available_iso-std::abs(iso-iso_system) == 2){
130 if(((iso == 0) && (rdm*0.7 < 0.3)) || ((rdm*0.60 < 0.25) && (
Math::sign(iso-iso_system)*2-iso != 0)) || ((rdm*0.75 < 0.40) && (
Math::sign(iso-iso_system)*2+iso != 0) && (iso != 0))){
140 else if(available_iso-std::abs(iso-iso_system) == 0){
145 else INCL_ERROR(
"Pion Generation Problem in NNToMissingStrangenessChannel" <<
'\n');
146 list.push_back(pion);
151 if(std::abs(iso-iso_system) == 2){
155 else if(std::abs(iso-iso_system) == 0){
160 else INCL_ERROR(
"Isospin non-conservation in NNToMissingStrangenessChannel" <<
'\n');
162 else if(min_pions == 1){
165 if(std::abs(iso-iso_system) == 4){
171 else if(std::abs(iso-iso_system) == 2){
178 else if(std::abs(iso-iso_system) == 0){
186 else INCL_ERROR(
"Isospin non-conservation in NNToMissingStrangenessChannel" <<
'\n');
187 list.push_back(antikaon);
192 if(std::abs(iso-iso_system) == 4){
197 else if(std::abs(iso-iso_system) == 2){
200 if(((iso == 0) && (rdm*0.77 < 0.23)) || ((rdm*0.58 < 0.07) && (
Math::sign(iso-iso_system)*2-iso != 0)) || ((rdm*0.93 < 0.42) && (
Math::sign(iso-iso_system)*2+iso != 0) && (iso != 0))){
212 else if(std::abs(iso-iso_system) == 0){
213 if(((iso == 0) && rdm < 0.23) || ((iso == 2) && rdm < 0.42) || rdm < 0.07){
218 else if(((iso == 0) && rdm < 0.77) || ((iso == 2) && rdm < 0.93) || rdm < 0.58){
230 else INCL_ERROR(
"Isospin non-conservation in NNToMissingStrangenessChannel" <<
'\n');
235 list.push_back(kaon);
void generateBiased(const G4double sqrtS, ParticleList &particles, const size_t index, const G4double slope)
Generate a biased event in the CM system.
T max(const T t1, const T t2)
brief Return the largest of the two arguments
void addModifiedParticle(Particle *p)
const G4INCL::ThreeVector & getPosition() const
NNToMissingStrangenessChannel(Particle *, Particle *)
ParticleType getNucleonType(const G4int isosp)
Get the type of nucleon.
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)
ParticleType getAntiKaonType(const G4int isosp)
Get the type of antikaon.
virtual ~NNToMissingStrangenessChannel()
G4bool isLambda() const
Is this a Lambda?
G4double getINCLMass(const G4int A, const G4int Z)
Get INCL nuclear mass (in MeV/c^2)
void fillFinalState(FinalState *fs)
ParticleType getKaonType(const G4int isosp)
Get the type of kaon.
void setType(ParticleType t)
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
G4INCL::ParticleType getType() const
ParticleType getSigmaType(const G4int isosp)
Get the type of sigma.
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
void addCreatedParticle(Particle *p)
G4double gauss(G4double sigma=1.)
static const G4double angularSlope
ParticleType getPionType(const G4int isosp)
Get the type of pion.
T min(const T t1, const T t2)
brief Return the smallest of the two arguments