Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // INCL++ intra-nuclear cascade model 26 // INCL++ intra-nuclear cascade model 27 // Alain Boudard, CEA-Saclay, France 27 // Alain Boudard, CEA-Saclay, France 28 // Joseph Cugnon, University of Liege, Belgium 28 // Joseph Cugnon, University of Liege, Belgium 29 // Jean-Christophe David, CEA-Saclay, France 29 // Jean-Christophe David, CEA-Saclay, France 30 // Pekka Kaitaniemi, CEA-Saclay, France, and H 30 // Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland 31 // Sylvie Leray, CEA-Saclay, France 31 // Sylvie Leray, CEA-Saclay, France 32 // Davide Mancusi, CEA-Saclay, France 32 // Davide Mancusi, CEA-Saclay, France 33 // 33 // 34 #define INCLXX_IN_GEANT4_MODE 1 34 #define INCLXX_IN_GEANT4_MODE 1 35 35 36 #include "globals.hh" 36 #include "globals.hh" 37 37 38 #include "G4INCLNNEtaToMultiPionsChannel.hh" 38 #include "G4INCLNNEtaToMultiPionsChannel.hh" 39 #include "G4INCLKinematicsUtils.hh" 39 #include "G4INCLKinematicsUtils.hh" 40 #include "G4INCLBinaryCollisionAvatar.hh" 40 #include "G4INCLBinaryCollisionAvatar.hh" 41 #include "G4INCLRandom.hh" 41 #include "G4INCLRandom.hh" 42 #include "G4INCLGlobals.hh" 42 #include "G4INCLGlobals.hh" 43 #include "G4INCLLogger.hh" 43 #include "G4INCLLogger.hh" 44 #include <algorithm> 44 #include <algorithm> 45 #include "G4INCLPhaseSpaceGenerator.hh" 45 #include "G4INCLPhaseSpaceGenerator.hh" 46 46 47 namespace G4INCL { 47 namespace G4INCL { 48 48 49 const G4double NNEtaToMultiPionsChannel::ang 49 const G4double NNEtaToMultiPionsChannel::angularSlope = 6.; 50 50 51 NNEtaToMultiPionsChannel::NNEtaToMultiPionsC 51 NNEtaToMultiPionsChannel::NNEtaToMultiPionsChannel(const G4int npi, Particle *p1, Particle *p2) 52 : npion(npi), 52 : npion(npi), 53 iso1(0), 53 iso1(0), 54 iso2(0), 54 iso2(0), 55 particle1(p1), 55 particle1(p1), 56 particle2(p2) 56 particle2(p2) 57 { 57 { 58 std::fill(isosp, isosp+4, 0); 58 std::fill(isosp, isosp+4, 0); 59 } 59 } 60 60 61 NNEtaToMultiPionsChannel::~NNEtaToMultiPions 61 NNEtaToMultiPionsChannel::~NNEtaToMultiPionsChannel(){ 62 62 63 } 63 } 64 64 65 void NNEtaToMultiPionsChannel::fillFinalStat 65 void NNEtaToMultiPionsChannel::fillFinalState(FinalState *fs) { 66 // assert(npion > 0 && npion < 5); 66 // assert(npion > 0 && npion < 5); 67 67 68 iso1=ParticleTable::getIsospin(particle1 68 iso1=ParticleTable::getIsospin(particle1->getType()); 69 iso2=ParticleTable::getIsospin(particle2 69 iso2=ParticleTable::getIsospin(particle2->getType()); 70 70 71 ParticleList list; 71 ParticleList list; 72 list.push_back(particle1); 72 list.push_back(particle1); 73 list.push_back(particle2); 73 list.push_back(particle2); 74 fs->addModifiedParticle(particle1); 74 fs->addModifiedParticle(particle1); 75 fs->addModifiedParticle(particle2); 75 fs->addModifiedParticle(particle2); 76 76 77 isospinRepartition(); 77 isospinRepartition(); 78 78 79 const ParticleType tn1=ParticleTable::ge 79 const ParticleType tn1=ParticleTable::getNucleonType(iso1); 80 particle1->setType(tn1); 80 particle1->setType(tn1); 81 const ParticleType tn2=ParticleTable::ge 81 const ParticleType tn2=ParticleTable::getNucleonType(iso2); 82 particle2->setType(tn2); 82 particle2->setType(tn2); 83 const ThreeVector &rcolnucleon1 = partic 83 const ThreeVector &rcolnucleon1 = particle1->getPosition(); 84 const ThreeVector &rcolnucleon2 = partic 84 const ThreeVector &rcolnucleon2 = particle2->getPosition(); 85 const ThreeVector rcol = (rcolnucleon1+r 85 const ThreeVector rcol = (rcolnucleon1+rcolnucleon2)*0.5; 86 const ThreeVector zero; 86 const ThreeVector zero; 87 for(G4int i=0; i<npion; ++i) { 87 for(G4int i=0; i<npion; ++i) { 88 const ParticleType pionType=ParticleTa 88 const ParticleType pionType=ParticleTable::getPionType(isosp[i]); 89 Particle *pion = new Particle(pionType 89 Particle *pion = new Particle(pionType,zero,rcol); 90 list.push_back(pion); 90 list.push_back(pion); 91 fs->addCreatedParticle(pion); 91 fs->addCreatedParticle(pion); 92 } 92 } 93 Particle *eta = new Particle(Eta,zero,rc 93 Particle *eta = new Particle(Eta,zero,rcol); 94 list.push_back(eta); 94 list.push_back(eta); 95 fs->addCreatedParticle(eta); 95 fs->addCreatedParticle(eta); 96 96 97 const G4double sqrtS = KinematicsUtils:: 97 const G4double sqrtS = KinematicsUtils::totalEnergyInCM(particle1, particle2); 98 G4int biasIndex = ((Random::shoot()<0.5) 98 G4int biasIndex = ((Random::shoot()<0.5) ? 0 : 1); 99 PhaseSpaceGenerator::generateBiased(sqrt 99 PhaseSpaceGenerator::generateBiased(sqrtS, list, biasIndex, angularSlope); 100 100 101 } 101 } 102 102 103 void NNEtaToMultiPionsChannel::isospinRepa 103 void NNEtaToMultiPionsChannel::isospinRepartition() { 104 const G4double rjcd=Random::shoot(); 104 const G4double rjcd=Random::shoot(); 105 G4double p; 105 G4double p; 106 const G4int itot=iso1+iso2; 106 const G4int itot=iso1+iso2; 107 107 108 if (npion == 1) { 108 if (npion == 1) { 109 p=3.*rjcd; 109 p=3.*rjcd; 110 if (p < 1.) pn_ppPim(); 110 if (p < 1.) pn_ppPim(); 111 else if (p < 2.) pn_pnPi0(); 111 else if (p < 2.) pn_pnPi0(); 112 else pn_nnPip(); 112 else pn_nnPip(); 113 } 113 } 114 else if (npion == 2) { 114 else if (npion == 2) { 115 if (itot == 2) { 115 if (itot == 2) { 116 p=20.*rjcd; 116 p=20.*rjcd; 117 if (p >= 14.) pp_nnPipPip 117 if (p >= 14.) pp_nnPipPip(); 118 else if (p >= 11.) pp_pnPipPi0 118 else if (p >= 11.) pp_pnPipPi0(); 119 else if (p >= 7.) pp_ppPi0Pi0 119 else if (p >= 7.) pp_ppPi0Pi0(); 120 else pp_ppPipPim( 120 else pp_ppPipPim(); 121 } 121 } 122 else if (itot == -2) { 122 else if (itot == -2) { 123 p=20.*rjcd; 123 p=20.*rjcd; 124 if (p >= 14.) nn_ppPimPim 124 if (p >= 14.) nn_ppPimPim(); 125 else if (p >= 11.) nn_pnPimPi0 125 else if (p >= 11.) nn_pnPimPi0(); 126 else if (p >= 7.) nn_nnPi0Pi0 126 else if (p >= 7.) nn_nnPi0Pi0(); 127 else nn_nnPipPim( 127 else nn_nnPipPim(); 128 } 128 } 129 else { 129 else { 130 G4double pp=Random::shoot(); 130 G4double pp=Random::shoot(); 131 if (pp > 0.5) { 131 if (pp > 0.5) { 132 p=3.*rjcd; 132 p=3.*rjcd; 133 if (p < 2.) { 133 if (p < 2.) { 134 pn_pnPipPim(); 134 pn_pnPipPim(); 135 } 135 } 136 else { 136 else { 137 pn_pnPi0Pi0(); 137 pn_pnPi0Pi0(); 138 } 138 } 139 } 139 } 140 else { 140 else { 141 p=60.*rjcd; 141 p=60.*rjcd; 142 if (p >= 51.) pn_nnPi 142 if (p >= 51.) pn_nnPipPi0(); 143 else if (p >= 33.) pn_pnPi 143 else if (p >= 33.) pn_pnPi0Pi0(); 144 else if (p >= 9.) pn_pnPi 144 else if (p >= 9.) pn_pnPipPim(); 145 else pn_ppPim 145 else pn_ppPimPi0(); 146 } 146 } 147 } 147 } 148 } 148 } 149 else if (npion == 3) { 149 else if (npion == 3) { 150 p=60.*rjcd; 150 p=60.*rjcd; 151 if (itot == 2) { 151 if (itot == 2) { 152 if (p >= 42.) pp_nnPipPip 152 if (p >= 42.) pp_nnPipPipPi0(); 153 else if (p >= 39.) pp_pnPipPi0 153 else if (p >= 39.) pp_pnPipPi0Pi0(); 154 else if (p >= 33.) pp_pnPipPip 154 else if (p >= 33.) pp_pnPipPipPim(); 155 else if (p >= 22.) pp_ppPi0Pi0 155 else if (p >= 22.) pp_ppPi0Pi0Pi0(); 156 else pp_ppPipPimP 156 else pp_ppPipPimPi0(); 157 } 157 } 158 else if (itot == -2) { 158 else if (itot == -2) { 159 if (p >= 42.) nn_ppPimPim 159 if (p >= 42.) nn_ppPimPimPi0(); 160 else if (p >= 39.) nn_pnPimPi0 160 else if (p >= 39.) nn_pnPimPi0Pi0(); 161 else if (p >= 33.) nn_pnPipPim 161 else if (p >= 33.) nn_pnPipPimPim(); 162 else if (p >= 22.) nn_nnPi0Pi0 162 else if (p >= 22.) nn_nnPi0Pi0Pi0(); 163 else nn_nnPipPimP 163 else nn_nnPipPimPi0(); 164 } 164 } 165 else { 165 else { 166 if (p >= 57.) pn_nnPipPi0 166 if (p >= 57.) pn_nnPipPi0Pi0(); 167 else if (p >= 51.) pn_nnPipPip 167 else if (p >= 51.) pn_nnPipPipPim(); 168 else if (p >= 37.) pn_pnPi0Pi0 168 else if (p >= 37.) pn_pnPi0Pi0Pi0(); 169 else if (p >= 9.) pn_pnPi0Pip 169 else if (p >= 9.) pn_pnPi0PipPim(); 170 else if (p >= 6.) pn_ppPimPi0 170 else if (p >= 6.) pn_ppPimPi0Pi0(); 171 else pn_ppPimPimP 171 else pn_ppPimPimPip(); 172 172 173 } 173 } 174 } 174 } 175 else if (npion == 4) { 175 else if (npion == 4) { 176 p=60.*rjcd; 176 p=60.*rjcd; 177 if (itot == 2) { 177 if (itot == 2) { 178 if (p >= 48.) pp_nnPipPip 178 if (p >= 48.) pp_nnPipPipPipPim(); 179 else if (p >= 42.) pp_nnPipPip 179 else if (p >= 42.) pp_nnPipPipPi0Pi0(); 180 else if (p >= 36.) pp_pnPipPip 180 else if (p >= 36.) pp_pnPipPipPi0Pim(); 181 else if (p >= 33.) pp_pnPipPi0 181 else if (p >= 33.) pp_pnPipPi0Pi0Pi0(); 182 else if (p >= 19.) pp_ppPipPip 182 else if (p >= 19.) pp_ppPipPipPimPim(); 183 else if (p >= 4.) pp_ppPipPi0 183 else if (p >= 4.) pp_ppPipPi0Pi0Pim(); 184 else pp_ppPi0Pi0P 184 else pp_ppPi0Pi0Pi0Pi0(); 185 } 185 } 186 else if (itot == -2) { 186 else if (itot == -2) { 187 if (p >= 48.) nn_ppPipPim 187 if (p >= 48.) nn_ppPipPimPimPim(); 188 else if (p >= 42.) nn_ppPi0Pi0 188 else if (p >= 42.) nn_ppPi0Pi0PimPim(); 189 else if (p >= 36.) nn_pnPipPi0 189 else if (p >= 36.) nn_pnPipPi0PimPim(); 190 else if (p >= 33.) nn_pnPi0Pi0 190 else if (p >= 33.) nn_pnPi0Pi0Pi0Pim(); 191 else if (p >= 19.) nn_nnPipPip 191 else if (p >= 19.) nn_nnPipPipPimPim(); 192 else if (p >= 4.) nn_nnPipPi0 192 else if (p >= 4.) nn_nnPipPi0Pi0Pim(); 193 else nn_nnPi0Pi0P 193 else nn_nnPi0Pi0Pi0Pi0(); 194 } 194 } 195 else { 195 else { 196 G4double pp=Random::shoot(); 196 G4double pp=Random::shoot(); 197 if (pp > 0.5) { 197 if (pp > 0.5) { 198 p=9.*rjcd; 198 p=9.*rjcd; 199 if (p < 1.) pn_pnPi0P 199 if (p < 1.) pn_pnPi0Pi0Pi0Pi0(); 200 else if (p < 5.) pn_pnPipP 200 else if (p < 5.) pn_pnPipPi0Pi0Pim(); 201 else pn_pnPipPi 201 else pn_pnPipPipPimPim(); 202 } 202 } 203 else { 203 else { 204 if (p < 3.) pn_ppPi0 204 if (p < 3.) pn_ppPi0Pi0Pi0Pim(); 205 else if (p < 9.) pn_ppPip 205 else if (p < 9.) pn_ppPipPi0PimPim(); 206 else if (p < 15.) pn_pnPi0 206 else if (p < 15.) pn_pnPi0Pi0Pi0Pi0(); 207 else if (p < 35.) pn_pnPip 207 else if (p < 35.) pn_pnPipPi0Pi0Pim(); 208 else if (p < 51.) pn_pnPip 208 else if (p < 51.) pn_pnPipPipPimPim(); 209 else if (p < 54.) pn_nnPip 209 else if (p < 54.) pn_nnPipPi0Pi0Pi0(); 210 else pn_nnPipP 210 else pn_nnPipPipPi0Pim(); 211 } 211 } 212 } 212 } 213 } 213 } 214 214 215 std::shuffle(isosp,isosp+npion,Random: << 215 std::random_shuffle(isosp,isosp+npion,Random::getAdapter()); 216 inter2Part(0.5); 216 inter2Part(0.5); 217 } 217 } 218 218 219 219 220 void NNEtaToMultiPionsChannel::pn_ppPim() 220 void NNEtaToMultiPionsChannel::pn_ppPim() { 221 isosp[0]=-2; 221 isosp[0]=-2; 222 iso1=1; 222 iso1=1; 223 iso2=1; 223 iso2=1; 224 } 224 } 225 void NNEtaToMultiPionsChannel::pn_pnPi0() 225 void NNEtaToMultiPionsChannel::pn_pnPi0() { 226 isosp[0]=0; 226 isosp[0]=0; 227 } 227 } 228 void NNEtaToMultiPionsChannel::pn_nnPip() 228 void NNEtaToMultiPionsChannel::pn_nnPip() { 229 isosp[0]=2; 229 isosp[0]=2; 230 iso1=-1; 230 iso1=-1; 231 iso2=-1; 231 iso2=-1; 232 } 232 } 233 void NNEtaToMultiPionsChannel::pp_nnPipPip 233 void NNEtaToMultiPionsChannel::pp_nnPipPip() { 234 isosp[0]=2; 234 isosp[0]=2; 235 isosp[1]=2; 235 isosp[1]=2; 236 iso1=-1; 236 iso1=-1; 237 iso2=-1; 237 iso2=-1; 238 } 238 } 239 void NNEtaToMultiPionsChannel::nn_ppPimPim 239 void NNEtaToMultiPionsChannel::nn_ppPimPim() { 240 isosp[0]=-2; 240 isosp[0]=-2; 241 isosp[1]=-2; 241 isosp[1]=-2; 242 iso1=1; 242 iso1=1; 243 iso2=1; 243 iso2=1; 244 } 244 } 245 void NNEtaToMultiPionsChannel::pn_pnPipPim 245 void NNEtaToMultiPionsChannel::pn_pnPipPim() { 246 isosp[0]=2; 246 isosp[0]=2; 247 isosp[1]=-2; 247 isosp[1]=-2; 248 } 248 } 249 void NNEtaToMultiPionsChannel::pn_pnPi0Pi0 249 void NNEtaToMultiPionsChannel::pn_pnPi0Pi0() { 250 isosp[0]=0; 250 isosp[0]=0; 251 isosp[1]=0; 251 isosp[1]=0; 252 } 252 } 253 void NNEtaToMultiPionsChannel::pp_ppPipPim 253 void NNEtaToMultiPionsChannel::pp_ppPipPim() { 254 isosp[0]=2; 254 isosp[0]=2; 255 isosp[1]=-2; 255 isosp[1]=-2; 256 } 256 } 257 void NNEtaToMultiPionsChannel::nn_nnPipPim 257 void NNEtaToMultiPionsChannel::nn_nnPipPim() { 258 isosp[0]=2; 258 isosp[0]=2; 259 isosp[1]=-2; 259 isosp[1]=-2; 260 } 260 } 261 void NNEtaToMultiPionsChannel::pp_ppPi0Pi0 261 void NNEtaToMultiPionsChannel::pp_ppPi0Pi0() { 262 isosp[0]=0; 262 isosp[0]=0; 263 isosp[1]=0; 263 isosp[1]=0; 264 } 264 } 265 void NNEtaToMultiPionsChannel::nn_nnPi0Pi0 265 void NNEtaToMultiPionsChannel::nn_nnPi0Pi0() { 266 isosp[0]=0; 266 isosp[0]=0; 267 isosp[1]=0; 267 isosp[1]=0; 268 } 268 } 269 void NNEtaToMultiPionsChannel::pp_pnPipPi0 269 void NNEtaToMultiPionsChannel::pp_pnPipPi0() { 270 isosp[0]=2; 270 isosp[0]=2; 271 isosp[1]=0; 271 isosp[1]=0; 272 iso1=1; 272 iso1=1; 273 iso2=-1; 273 iso2=-1; 274 } 274 } 275 void NNEtaToMultiPionsChannel::pn_ppPimPi0 275 void NNEtaToMultiPionsChannel::pn_ppPimPi0() { 276 isosp[0]=-2; 276 isosp[0]=-2; 277 isosp[1]=0; 277 isosp[1]=0; 278 iso1=1; 278 iso1=1; 279 iso2=1; 279 iso2=1; 280 } 280 } 281 void NNEtaToMultiPionsChannel::pn_nnPipPi0 281 void NNEtaToMultiPionsChannel::pn_nnPipPi0() { 282 isosp[0]=2; 282 isosp[0]=2; 283 isosp[1]=0; 283 isosp[1]=0; 284 iso1=-1; 284 iso1=-1; 285 iso2=-1; 285 iso2=-1; 286 } 286 } 287 void NNEtaToMultiPionsChannel::nn_pnPimPi0 287 void NNEtaToMultiPionsChannel::nn_pnPimPi0() { 288 isosp[0]=-2; 288 isosp[0]=-2; 289 isosp[1]=0; 289 isosp[1]=0; 290 iso1=1; 290 iso1=1; 291 iso2=-1; 291 iso2=-1; 292 } 292 } 293 void NNEtaToMultiPionsChannel::pp_pnPipPi0 293 void NNEtaToMultiPionsChannel::pp_pnPipPi0Pi0() { 294 isosp[0]=2; 294 isosp[0]=2; 295 isosp[1]=0; 295 isosp[1]=0; 296 isosp[2]=0; 296 isosp[2]=0; 297 iso1=1; 297 iso1=1; 298 iso2=-1; 298 iso2=-1; 299 } 299 } 300 void NNEtaToMultiPionsChannel::nn_pnPimPi0 300 void NNEtaToMultiPionsChannel::nn_pnPimPi0Pi0() { 301 isosp[0]=-2; 301 isosp[0]=-2; 302 isosp[1]=0; 302 isosp[1]=0; 303 isosp[2]=0; 303 isosp[2]=0; 304 iso1=1; 304 iso1=1; 305 iso2=-1; 305 iso2=-1; 306 } 306 } 307 void NNEtaToMultiPionsChannel::pn_nnPipPi0 307 void NNEtaToMultiPionsChannel::pn_nnPipPi0Pi0() { 308 isosp[0]=2; 308 isosp[0]=2; 309 isosp[1]=0; 309 isosp[1]=0; 310 isosp[2]=0; 310 isosp[2]=0; 311 iso1=-1; 311 iso1=-1; 312 iso2=-1; 312 iso2=-1; 313 } 313 } 314 void NNEtaToMultiPionsChannel::pp_ppPipPim 314 void NNEtaToMultiPionsChannel::pp_ppPipPimPi0() { 315 isosp[0]=2; 315 isosp[0]=2; 316 isosp[1]=-2; 316 isosp[1]=-2; 317 isosp[2]=0; 317 isosp[2]=0; 318 } 318 } 319 void NNEtaToMultiPionsChannel::nn_nnPipPim 319 void NNEtaToMultiPionsChannel::nn_nnPipPimPi0() { 320 isosp[0]=2; 320 isosp[0]=2; 321 isosp[1]=-2; 321 isosp[1]=-2; 322 isosp[2]=0; 322 isosp[2]=0; 323 } 323 } 324 void NNEtaToMultiPionsChannel::pp_ppPi0Pi0 324 void NNEtaToMultiPionsChannel::pp_ppPi0Pi0Pi0() { 325 isosp[0]=0; 325 isosp[0]=0; 326 isosp[1]=0; 326 isosp[1]=0; 327 isosp[2]=0; 327 isosp[2]=0; 328 } 328 } 329 void NNEtaToMultiPionsChannel::nn_nnPi0Pi0 329 void NNEtaToMultiPionsChannel::nn_nnPi0Pi0Pi0() { 330 isosp[0]=0; 330 isosp[0]=0; 331 isosp[1]=0; 331 isosp[1]=0; 332 isosp[2]=0; 332 isosp[2]=0; 333 } 333 } 334 void NNEtaToMultiPionsChannel::pp_pnPipPip 334 void NNEtaToMultiPionsChannel::pp_pnPipPipPim() { 335 isosp[0]=2; 335 isosp[0]=2; 336 isosp[1]=2; 336 isosp[1]=2; 337 isosp[2]=-2; 337 isosp[2]=-2; 338 iso1=1; 338 iso1=1; 339 iso2=-1; 339 iso2=-1; 340 } 340 } 341 void NNEtaToMultiPionsChannel::pp_nnPipPip 341 void NNEtaToMultiPionsChannel::pp_nnPipPipPi0() { 342 isosp[0]=2; 342 isosp[0]=2; 343 isosp[1]=2; 343 isosp[1]=2; 344 isosp[2]=0; 344 isosp[2]=0; 345 iso1=-1; 345 iso1=-1; 346 iso2=-1; 346 iso2=-1; 347 } 347 } 348 void NNEtaToMultiPionsChannel::pn_ppPimPi0 348 void NNEtaToMultiPionsChannel::pn_ppPimPi0Pi0() { 349 isosp[0]=-2; 349 isosp[0]=-2; 350 isosp[1]=0; 350 isosp[1]=0; 351 isosp[2]=0; 351 isosp[2]=0; 352 iso1=1; 352 iso1=1; 353 iso2=1; 353 iso2=1; 354 } 354 } 355 void NNEtaToMultiPionsChannel::pn_ppPimPim 355 void NNEtaToMultiPionsChannel::pn_ppPimPimPip() { 356 isosp[0]=-2; 356 isosp[0]=-2; 357 isosp[1]=-2; 357 isosp[1]=-2; 358 isosp[2]=2; 358 isosp[2]=2; 359 iso1=1; 359 iso1=1; 360 iso2=1; 360 iso2=1; 361 } 361 } 362 void NNEtaToMultiPionsChannel::pn_pnPi0Pip 362 void NNEtaToMultiPionsChannel::pn_pnPi0PipPim() { 363 isosp[0]=0; 363 isosp[0]=0; 364 isosp[1]=2; 364 isosp[1]=2; 365 isosp[2]=-2; 365 isosp[2]=-2; 366 } 366 } 367 void NNEtaToMultiPionsChannel::pn_pnPi0Pi0 367 void NNEtaToMultiPionsChannel::pn_pnPi0Pi0Pi0() { 368 isosp[0]=0; 368 isosp[0]=0; 369 isosp[1]=0; 369 isosp[1]=0; 370 isosp[2]=0; 370 isosp[2]=0; 371 } 371 } 372 void NNEtaToMultiPionsChannel::pn_nnPipPip 372 void NNEtaToMultiPionsChannel::pn_nnPipPipPim() { 373 isosp[0]=2; 373 isosp[0]=2; 374 isosp[1]=2; 374 isosp[1]=2; 375 isosp[2]=-2; 375 isosp[2]=-2; 376 iso1=-1; 376 iso1=-1; 377 iso2=-1; 377 iso2=-1; 378 } 378 } 379 void NNEtaToMultiPionsChannel::nn_pnPipPim 379 void NNEtaToMultiPionsChannel::nn_pnPipPimPim() { 380 isosp[0]=2; 380 isosp[0]=2; 381 isosp[1]=-2; 381 isosp[1]=-2; 382 isosp[2]=-2; 382 isosp[2]=-2; 383 iso1=1; 383 iso1=1; 384 iso2=-1; 384 iso2=-1; 385 } 385 } 386 void NNEtaToMultiPionsChannel::nn_ppPimPim 386 void NNEtaToMultiPionsChannel::nn_ppPimPimPi0() { 387 isosp[0]=-2; 387 isosp[0]=-2; 388 isosp[1]=-2; 388 isosp[1]=-2; 389 isosp[2]=0; 389 isosp[2]=0; 390 iso1=1; 390 iso1=1; 391 iso2=1; 391 iso2=1; 392 } 392 } 393 void NNEtaToMultiPionsChannel::pp_nnPipPip 393 void NNEtaToMultiPionsChannel::pp_nnPipPipPi0Pi0() { 394 isosp[0]=2; 394 isosp[0]=2; 395 isosp[1]=2; 395 isosp[1]=2; 396 isosp[2]=0; 396 isosp[2]=0; 397 isosp[3]=0; 397 isosp[3]=0; 398 iso1=-1; 398 iso1=-1; 399 iso2=-1; 399 iso2=-1; 400 } 400 } 401 void NNEtaToMultiPionsChannel::pp_nnPipPip 401 void NNEtaToMultiPionsChannel::pp_nnPipPipPipPim() { 402 isosp[0]=2; 402 isosp[0]=2; 403 isosp[1]=2; 403 isosp[1]=2; 404 isosp[2]=2; 404 isosp[2]=2; 405 isosp[3]=-2; 405 isosp[3]=-2; 406 iso1=-1; 406 iso1=-1; 407 iso2=-1; 407 iso2=-1; 408 } 408 } 409 void NNEtaToMultiPionsChannel::nn_ppPi0Pi0 409 void NNEtaToMultiPionsChannel::nn_ppPi0Pi0PimPim() { 410 isosp[0]=0; 410 isosp[0]=0; 411 isosp[1]=0; 411 isosp[1]=0; 412 isosp[2]=-2; 412 isosp[2]=-2; 413 isosp[3]=-2; 413 isosp[3]=-2; 414 iso1=1; 414 iso1=1; 415 iso2=1; 415 iso2=1; 416 } 416 } 417 void NNEtaToMultiPionsChannel::nn_ppPipPim 417 void NNEtaToMultiPionsChannel::nn_ppPipPimPimPim() { 418 isosp[0]=2; 418 isosp[0]=2; 419 isosp[1]=-2; 419 isosp[1]=-2; 420 isosp[2]=-2; 420 isosp[2]=-2; 421 isosp[3]=-2; 421 isosp[3]=-2; 422 iso1=1; 422 iso1=1; 423 iso2=1; 423 iso2=1; 424 } 424 } 425 void NNEtaToMultiPionsChannel::pp_ppPi0Pi0 425 void NNEtaToMultiPionsChannel::pp_ppPi0Pi0Pi0Pi0() { 426 isosp[0]=0; 426 isosp[0]=0; 427 isosp[1]=0; 427 isosp[1]=0; 428 isosp[2]=0; 428 isosp[2]=0; 429 isosp[3]=0; 429 isosp[3]=0; 430 } 430 } 431 void NNEtaToMultiPionsChannel::nn_nnPi0Pi0 431 void NNEtaToMultiPionsChannel::nn_nnPi0Pi0Pi0Pi0() { 432 isosp[0]=0; 432 isosp[0]=0; 433 isosp[1]=0; 433 isosp[1]=0; 434 isosp[2]=0; 434 isosp[2]=0; 435 isosp[3]=0; 435 isosp[3]=0; 436 } 436 } 437 void NNEtaToMultiPionsChannel::pn_pnPi0Pi0 437 void NNEtaToMultiPionsChannel::pn_pnPi0Pi0Pi0Pi0() { 438 isosp[0]=0; 438 isosp[0]=0; 439 isosp[1]=0; 439 isosp[1]=0; 440 isosp[2]=0; 440 isosp[2]=0; 441 isosp[3]=0; 441 isosp[3]=0; 442 } 442 } 443 void NNEtaToMultiPionsChannel::pp_ppPipPi0 443 void NNEtaToMultiPionsChannel::pp_ppPipPi0Pi0Pim() { 444 isosp[0]=2; 444 isosp[0]=2; 445 isosp[1]=0; 445 isosp[1]=0; 446 isosp[2]=0; 446 isosp[2]=0; 447 isosp[3]=-2; 447 isosp[3]=-2; 448 } 448 } 449 void NNEtaToMultiPionsChannel::nn_nnPipPi0 449 void NNEtaToMultiPionsChannel::nn_nnPipPi0Pi0Pim() { 450 isosp[0]=2; 450 isosp[0]=2; 451 isosp[1]=0; 451 isosp[1]=0; 452 isosp[2]=0; 452 isosp[2]=0; 453 isosp[3]=-2; 453 isosp[3]=-2; 454 } 454 } 455 void NNEtaToMultiPionsChannel::pn_pnPipPi0 455 void NNEtaToMultiPionsChannel::pn_pnPipPi0Pi0Pim() { 456 isosp[0]=2; 456 isosp[0]=2; 457 isosp[1]=0; 457 isosp[1]=0; 458 isosp[2]=0; 458 isosp[2]=0; 459 isosp[3]=-2; 459 isosp[3]=-2; 460 } 460 } 461 void NNEtaToMultiPionsChannel::pp_ppPipPip 461 void NNEtaToMultiPionsChannel::pp_ppPipPipPimPim() { 462 isosp[0]=2; 462 isosp[0]=2; 463 isosp[1]=2; 463 isosp[1]=2; 464 isosp[2]=-2; 464 isosp[2]=-2; 465 isosp[3]=-2; 465 isosp[3]=-2; 466 } 466 } 467 void NNEtaToMultiPionsChannel::nn_nnPipPip 467 void NNEtaToMultiPionsChannel::nn_nnPipPipPimPim() { 468 isosp[0]=2; 468 isosp[0]=2; 469 isosp[1]=2; 469 isosp[1]=2; 470 isosp[2]=-2; 470 isosp[2]=-2; 471 isosp[3]=-2; 471 isosp[3]=-2; 472 } 472 } 473 void NNEtaToMultiPionsChannel::pn_pnPipPip 473 void NNEtaToMultiPionsChannel::pn_pnPipPipPimPim() { 474 isosp[0]=2; 474 isosp[0]=2; 475 isosp[1]=2; 475 isosp[1]=2; 476 isosp[2]=-2; 476 isosp[2]=-2; 477 isosp[3]=-2; 477 isosp[3]=-2; 478 } 478 } 479 void NNEtaToMultiPionsChannel::pp_pnPipPi0 479 void NNEtaToMultiPionsChannel::pp_pnPipPi0Pi0Pi0() { 480 isosp[0]=2; 480 isosp[0]=2; 481 isosp[1]=0; 481 isosp[1]=0; 482 isosp[2]=0; 482 isosp[2]=0; 483 isosp[3]=0; 483 isosp[3]=0; 484 iso1=1; 484 iso1=1; 485 iso2=-1; 485 iso2=-1; 486 } 486 } 487 void NNEtaToMultiPionsChannel::pn_nnPipPi0 487 void NNEtaToMultiPionsChannel::pn_nnPipPi0Pi0Pi0() { 488 isosp[0]=2; 488 isosp[0]=2; 489 isosp[1]=0; 489 isosp[1]=0; 490 isosp[2]=0; 490 isosp[2]=0; 491 isosp[3]=0; 491 isosp[3]=0; 492 iso1=-1; 492 iso1=-1; 493 iso2=-1; 493 iso2=-1; 494 } 494 } 495 void NNEtaToMultiPionsChannel::pp_nnPipPi0 495 void NNEtaToMultiPionsChannel::pp_nnPipPi0Pi0Pi0() { 496 isosp[0]=2; 496 isosp[0]=2; 497 isosp[1]=0; 497 isosp[1]=0; 498 isosp[2]=0; 498 isosp[2]=0; 499 isosp[3]=0; 499 isosp[3]=0; 500 iso1=-1; 500 iso1=-1; 501 iso2=-1; 501 iso2=-1; 502 } 502 } 503 void NNEtaToMultiPionsChannel::pp_pnPipPip 503 void NNEtaToMultiPionsChannel::pp_pnPipPipPi0Pim() { 504 isosp[0]=2; 504 isosp[0]=2; 505 isosp[1]=2; 505 isosp[1]=2; 506 isosp[2]=0; 506 isosp[2]=0; 507 isosp[3]=-2; 507 isosp[3]=-2; 508 iso1=1; 508 iso1=1; 509 iso2=-1; 509 iso2=-1; 510 } 510 } 511 void NNEtaToMultiPionsChannel::pn_nnPipPip 511 void NNEtaToMultiPionsChannel::pn_nnPipPipPi0Pim() { 512 isosp[0]=2; 512 isosp[0]=2; 513 isosp[1]=2; 513 isosp[1]=2; 514 isosp[2]=0; 514 isosp[2]=0; 515 isosp[3]=-2; 515 isosp[3]=-2; 516 iso1=-1; 516 iso1=-1; 517 iso2=-1; 517 iso2=-1; 518 } 518 } 519 void NNEtaToMultiPionsChannel::pp_nnPipPip 519 void NNEtaToMultiPionsChannel::pp_nnPipPipPi0Pim() { 520 isosp[0]=2; 520 isosp[0]=2; 521 isosp[1]=2; 521 isosp[1]=2; 522 isosp[2]=0; 522 isosp[2]=0; 523 isosp[3]=-2; 523 isosp[3]=-2; 524 iso1=-1; 524 iso1=-1; 525 iso2=-1; 525 iso2=-1; 526 } 526 } 527 void NNEtaToMultiPionsChannel::nn_pnPi0Pi0 527 void NNEtaToMultiPionsChannel::nn_pnPi0Pi0Pi0Pim() { 528 isosp[0]=0; 528 isosp[0]=0; 529 isosp[1]=0; 529 isosp[1]=0; 530 isosp[2]=0; 530 isosp[2]=0; 531 isosp[3]=-2; 531 isosp[3]=-2; 532 iso1=1; 532 iso1=1; 533 iso2=-1; 533 iso2=-1; 534 } 534 } 535 void NNEtaToMultiPionsChannel::pn_ppPi0Pi0 535 void NNEtaToMultiPionsChannel::pn_ppPi0Pi0Pi0Pim() { 536 isosp[0]=0; 536 isosp[0]=0; 537 isosp[1]=0; 537 isosp[1]=0; 538 isosp[2]=0; 538 isosp[2]=0; 539 isosp[3]=-2; 539 isosp[3]=-2; 540 iso1=1; 540 iso1=1; 541 iso2=1; 541 iso2=1; 542 } 542 } 543 void NNEtaToMultiPionsChannel::nn_pnPipPi0 543 void NNEtaToMultiPionsChannel::nn_pnPipPi0PimPim() { 544 isosp[0]=2; 544 isosp[0]=2; 545 isosp[1]=0; 545 isosp[1]=0; 546 isosp[2]=-2; 546 isosp[2]=-2; 547 isosp[3]=-2; 547 isosp[3]=-2; 548 iso1=1; 548 iso1=1; 549 iso2=-1; 549 iso2=-1; 550 } 550 } 551 void NNEtaToMultiPionsChannel::pn_ppPipPi0 551 void NNEtaToMultiPionsChannel::pn_ppPipPi0PimPim() { 552 isosp[0]=2; 552 isosp[0]=2; 553 isosp[1]=0; 553 isosp[1]=0; 554 isosp[2]=-2; 554 isosp[2]=-2; 555 isosp[3]=-2; 555 isosp[3]=-2; 556 iso1=1; 556 iso1=1; 557 iso2=1; 557 iso2=1; 558 } 558 } 559 559 560 void NNEtaToMultiPionsChannel::inter2Part( 560 void NNEtaToMultiPionsChannel::inter2Part(const G4double p) { 561 561 562 if (Random::shoot() < p) std::swap(iso 562 if (Random::shoot() < p) std::swap(iso1,iso2); 563 563 564 } 564 } 565 565 566 566 567 } 567 } 568 568