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 "G4INCLNNToMultiPionsChannel.hh" 38 #include "G4INCLNNToMultiPionsChannel.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 NNToMultiPionsChannel::angula 49 const G4double NNToMultiPionsChannel::angularSlope = 6.; 50 50 51 NNToMultiPionsChannel::NNToMultiPionsChannel 51 NNToMultiPionsChannel::NNToMultiPionsChannel(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 NNToMultiPionsChannel::~NNToMultiPionsChanne 61 NNToMultiPionsChannel::~NNToMultiPionsChannel(){ 62 62 63 } 63 } 64 64 65 void NNToMultiPionsChannel::fillFinalState(F 65 void NNToMultiPionsChannel::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 93 94 const G4double sqrtS = KinematicsUtils:: 94 const G4double sqrtS = KinematicsUtils::totalEnergyInCM(particle1, particle2); 95 G4int biasIndex = ((Random::shoot()<0.5) 95 G4int biasIndex = ((Random::shoot()<0.5) ? 0 : 1); 96 PhaseSpaceGenerator::generateBiased(sqrt 96 PhaseSpaceGenerator::generateBiased(sqrtS, list, biasIndex, angularSlope); 97 97 98 } 98 } 99 99 100 void NNToMultiPionsChannel::isospinReparti 100 void NNToMultiPionsChannel::isospinRepartition() { 101 const G4double rjcd=Random::shoot(); 101 const G4double rjcd=Random::shoot(); 102 G4double p; 102 G4double p; 103 const G4int itot=iso1+iso2; 103 const G4int itot=iso1+iso2; 104 104 105 if (npion == 1) { 105 if (npion == 1) { 106 p=3.*rjcd; 106 p=3.*rjcd; 107 if (p < 1.) pn_ppPim(); 107 if (p < 1.) pn_ppPim(); 108 else if (p < 2.) pn_pnPi0(); 108 else if (p < 2.) pn_pnPi0(); 109 else pn_nnPip(); 109 else pn_nnPip(); 110 } 110 } 111 else if (npion == 2) { 111 else if (npion == 2) { 112 if (itot == 2) { 112 if (itot == 2) { 113 p=20.*rjcd; 113 p=20.*rjcd; 114 if (p >= 14.) pp_nnPipPip 114 if (p >= 14.) pp_nnPipPip(); 115 else if (p >= 11.) pp_pnPipPi0 115 else if (p >= 11.) pp_pnPipPi0(); 116 else if (p >= 7.) pp_ppPi0Pi0 116 else if (p >= 7.) pp_ppPi0Pi0(); 117 else pp_ppPipPim( 117 else pp_ppPipPim(); 118 } 118 } 119 else if (itot == -2) { 119 else if (itot == -2) { 120 p=20.*rjcd; 120 p=20.*rjcd; 121 if (p >= 14.) nn_ppPimPim 121 if (p >= 14.) nn_ppPimPim(); 122 else if (p >= 11.) nn_pnPimPi0 122 else if (p >= 11.) nn_pnPimPi0(); 123 else if (p >= 7.) nn_nnPi0Pi0 123 else if (p >= 7.) nn_nnPi0Pi0(); 124 else nn_nnPipPim( 124 else nn_nnPipPim(); 125 } 125 } 126 else { 126 else { 127 G4double pp=Random::shoot(); 127 G4double pp=Random::shoot(); 128 if (pp > 0.5) { 128 if (pp > 0.5) { 129 p=3.*rjcd; 129 p=3.*rjcd; 130 if (p < 2.) { 130 if (p < 2.) { 131 pn_pnPipPim(); 131 pn_pnPipPim(); 132 } 132 } 133 else { 133 else { 134 pn_pnPi0Pi0(); 134 pn_pnPi0Pi0(); 135 } 135 } 136 } 136 } 137 else { 137 else { 138 p=60.*rjcd; 138 p=60.*rjcd; 139 if (p >= 51.) pn_nnPi 139 if (p >= 51.) pn_nnPipPi0(); 140 else if (p >= 33.) pn_pnPi 140 else if (p >= 33.) pn_pnPi0Pi0(); 141 else if (p >= 9.) pn_pnPi 141 else if (p >= 9.) pn_pnPipPim(); 142 else pn_ppPim 142 else pn_ppPimPi0(); 143 } 143 } 144 } 144 } 145 } 145 } 146 else if (npion == 3) { 146 else if (npion == 3) { 147 p=60.*rjcd; 147 p=60.*rjcd; 148 if (itot == 2) { 148 if (itot == 2) { 149 if (p >= 42.) pp_nnPipPip 149 if (p >= 42.) pp_nnPipPipPi0(); 150 else if (p >= 39.) pp_pnPipPi0 150 else if (p >= 39.) pp_pnPipPi0Pi0(); 151 else if (p >= 33.) pp_pnPipPip 151 else if (p >= 33.) pp_pnPipPipPim(); 152 else if (p >= 22.) pp_ppPi0Pi0 152 else if (p >= 22.) pp_ppPi0Pi0Pi0(); 153 else pp_ppPipPimP 153 else pp_ppPipPimPi0(); 154 } 154 } 155 else if (itot == -2) { 155 else if (itot == -2) { 156 if (p >= 42.) nn_ppPimPim 156 if (p >= 42.) nn_ppPimPimPi0(); 157 else if (p >= 39.) nn_pnPimPi0 157 else if (p >= 39.) nn_pnPimPi0Pi0(); 158 else if (p >= 33.) nn_pnPipPim 158 else if (p >= 33.) nn_pnPipPimPim(); 159 else if (p >= 22.) nn_nnPi0Pi0 159 else if (p >= 22.) nn_nnPi0Pi0Pi0(); 160 else nn_nnPipPimP 160 else nn_nnPipPimPi0(); 161 } 161 } 162 else { 162 else { 163 if (p >= 57.) pn_nnPipPi0 163 if (p >= 57.) pn_nnPipPi0Pi0(); 164 else if (p >= 51.) pn_nnPipPip 164 else if (p >= 51.) pn_nnPipPipPim(); 165 else if (p >= 37.) pn_pnPi0Pi0 165 else if (p >= 37.) pn_pnPi0Pi0Pi0(); 166 else if (p >= 9.) pn_pnPi0Pip 166 else if (p >= 9.) pn_pnPi0PipPim(); 167 else if (p >= 6.) pn_ppPimPi0 167 else if (p >= 6.) pn_ppPimPi0Pi0(); 168 else pn_ppPimPimP 168 else pn_ppPimPimPip(); 169 169 170 } 170 } 171 } 171 } 172 else if (npion == 4) { 172 else if (npion == 4) { 173 p=60.*rjcd; 173 p=60.*rjcd; 174 if (itot == 2) { 174 if (itot == 2) { 175 if (p >= 48.) pp_nnPipPip 175 if (p >= 48.) pp_nnPipPipPipPim(); 176 else if (p >= 42.) pp_nnPipPip 176 else if (p >= 42.) pp_nnPipPipPi0Pi0(); 177 else if (p >= 36.) pp_pnPipPip 177 else if (p >= 36.) pp_pnPipPipPi0Pim(); 178 else if (p >= 33.) pp_pnPipPi0 178 else if (p >= 33.) pp_pnPipPi0Pi0Pi0(); 179 else if (p >= 19.) pp_ppPipPip 179 else if (p >= 19.) pp_ppPipPipPimPim(); 180 else if (p >= 4.) pp_ppPipPi0 180 else if (p >= 4.) pp_ppPipPi0Pi0Pim(); 181 else pp_ppPi0Pi0P 181 else pp_ppPi0Pi0Pi0Pi0(); 182 } 182 } 183 else if (itot == -2) { 183 else if (itot == -2) { 184 if (p >= 48.) nn_ppPipPim 184 if (p >= 48.) nn_ppPipPimPimPim(); 185 else if (p >= 42.) nn_ppPi0Pi0 185 else if (p >= 42.) nn_ppPi0Pi0PimPim(); 186 else if (p >= 36.) nn_pnPipPi0 186 else if (p >= 36.) nn_pnPipPi0PimPim(); 187 else if (p >= 33.) nn_pnPi0Pi0 187 else if (p >= 33.) nn_pnPi0Pi0Pi0Pim(); 188 else if (p >= 19.) nn_nnPipPip 188 else if (p >= 19.) nn_nnPipPipPimPim(); 189 else if (p >= 4.) nn_nnPipPi0 189 else if (p >= 4.) nn_nnPipPi0Pi0Pim(); 190 else nn_nnPi0Pi0P 190 else nn_nnPi0Pi0Pi0Pi0(); 191 } 191 } 192 else { 192 else { 193 G4double pp=Random::shoot(); 193 G4double pp=Random::shoot(); 194 if (pp > 0.5) { 194 if (pp > 0.5) { 195 p=9.*rjcd; 195 p=9.*rjcd; 196 if (p < 1.) pn_pnPi0P 196 if (p < 1.) pn_pnPi0Pi0Pi0Pi0(); 197 else if (p < 5.) pn_pnPipP 197 else if (p < 5.) pn_pnPipPi0Pi0Pim(); 198 else pn_pnPipPi 198 else pn_pnPipPipPimPim(); 199 } 199 } 200 else { 200 else { 201 if (p < 3.) pn_ppPi0 201 if (p < 3.) pn_ppPi0Pi0Pi0Pim(); 202 else if (p < 9.) pn_ppPip 202 else if (p < 9.) pn_ppPipPi0PimPim(); 203 else if (p < 15.) pn_pnPi0 203 else if (p < 15.) pn_pnPi0Pi0Pi0Pi0(); 204 else if (p < 35.) pn_pnPip 204 else if (p < 35.) pn_pnPipPi0Pi0Pim(); 205 else if (p < 51.) pn_pnPip 205 else if (p < 51.) pn_pnPipPipPimPim(); 206 else if (p < 54.) pn_nnPip 206 else if (p < 54.) pn_nnPipPi0Pi0Pi0(); 207 else pn_nnPipP 207 else pn_nnPipPipPi0Pim(); 208 } 208 } 209 } 209 } 210 } 210 } 211 211 212 std::shuffle(isosp,isosp+npion,Random: << 212 std::random_shuffle(isosp,isosp+npion,Random::getAdapter()); 213 inter2Part(0.5); 213 inter2Part(0.5); 214 } 214 } 215 215 216 216 217 void NNToMultiPionsChannel::pn_ppPim() { 217 void NNToMultiPionsChannel::pn_ppPim() { 218 isosp[0]=-2; 218 isosp[0]=-2; 219 iso1=1; 219 iso1=1; 220 iso2=1; 220 iso2=1; 221 } 221 } 222 void NNToMultiPionsChannel::pn_pnPi0() { 222 void NNToMultiPionsChannel::pn_pnPi0() { 223 isosp[0]=0; 223 isosp[0]=0; 224 } 224 } 225 void NNToMultiPionsChannel::pn_nnPip() { 225 void NNToMultiPionsChannel::pn_nnPip() { 226 isosp[0]=2; 226 isosp[0]=2; 227 iso1=-1; 227 iso1=-1; 228 iso2=-1; 228 iso2=-1; 229 } 229 } 230 void NNToMultiPionsChannel::pp_nnPipPip() 230 void NNToMultiPionsChannel::pp_nnPipPip() { 231 isosp[0]=2; 231 isosp[0]=2; 232 isosp[1]=2; 232 isosp[1]=2; 233 iso1=-1; 233 iso1=-1; 234 iso2=-1; 234 iso2=-1; 235 } 235 } 236 void NNToMultiPionsChannel::nn_ppPimPim() 236 void NNToMultiPionsChannel::nn_ppPimPim() { 237 isosp[0]=-2; 237 isosp[0]=-2; 238 isosp[1]=-2; 238 isosp[1]=-2; 239 iso1=1; 239 iso1=1; 240 iso2=1; 240 iso2=1; 241 } 241 } 242 void NNToMultiPionsChannel::pn_pnPipPim() 242 void NNToMultiPionsChannel::pn_pnPipPim() { 243 isosp[0]=2; 243 isosp[0]=2; 244 isosp[1]=-2; 244 isosp[1]=-2; 245 } 245 } 246 void NNToMultiPionsChannel::pn_pnPi0Pi0() 246 void NNToMultiPionsChannel::pn_pnPi0Pi0() { 247 isosp[0]=0; 247 isosp[0]=0; 248 isosp[1]=0; 248 isosp[1]=0; 249 } 249 } 250 void NNToMultiPionsChannel::pp_ppPipPim() 250 void NNToMultiPionsChannel::pp_ppPipPim() { 251 isosp[0]=2; 251 isosp[0]=2; 252 isosp[1]=-2; 252 isosp[1]=-2; 253 } 253 } 254 void NNToMultiPionsChannel::nn_nnPipPim() 254 void NNToMultiPionsChannel::nn_nnPipPim() { 255 isosp[0]=2; 255 isosp[0]=2; 256 isosp[1]=-2; 256 isosp[1]=-2; 257 } 257 } 258 void NNToMultiPionsChannel::pp_ppPi0Pi0() 258 void NNToMultiPionsChannel::pp_ppPi0Pi0() { 259 isosp[0]=0; 259 isosp[0]=0; 260 isosp[1]=0; 260 isosp[1]=0; 261 } 261 } 262 void NNToMultiPionsChannel::nn_nnPi0Pi0() 262 void NNToMultiPionsChannel::nn_nnPi0Pi0() { 263 isosp[0]=0; 263 isosp[0]=0; 264 isosp[1]=0; 264 isosp[1]=0; 265 } 265 } 266 void NNToMultiPionsChannel::pp_pnPipPi0() 266 void NNToMultiPionsChannel::pp_pnPipPi0() { 267 isosp[0]=2; 267 isosp[0]=2; 268 isosp[1]=0; 268 isosp[1]=0; 269 iso1=1; 269 iso1=1; 270 iso2=-1; 270 iso2=-1; 271 } 271 } 272 void NNToMultiPionsChannel::pn_ppPimPi0() 272 void NNToMultiPionsChannel::pn_ppPimPi0() { 273 isosp[0]=-2; 273 isosp[0]=-2; 274 isosp[1]=0; 274 isosp[1]=0; 275 iso1=1; 275 iso1=1; 276 iso2=1; 276 iso2=1; 277 } 277 } 278 void NNToMultiPionsChannel::pn_nnPipPi0() 278 void NNToMultiPionsChannel::pn_nnPipPi0() { 279 isosp[0]=2; 279 isosp[0]=2; 280 isosp[1]=0; 280 isosp[1]=0; 281 iso1=-1; 281 iso1=-1; 282 iso2=-1; 282 iso2=-1; 283 } 283 } 284 void NNToMultiPionsChannel::nn_pnPimPi0() 284 void NNToMultiPionsChannel::nn_pnPimPi0() { 285 isosp[0]=-2; 285 isosp[0]=-2; 286 isosp[1]=0; 286 isosp[1]=0; 287 iso1=1; 287 iso1=1; 288 iso2=-1; 288 iso2=-1; 289 } 289 } 290 void NNToMultiPionsChannel::pp_pnPipPi0Pi0 290 void NNToMultiPionsChannel::pp_pnPipPi0Pi0() { 291 isosp[0]=2; 291 isosp[0]=2; 292 isosp[1]=0; 292 isosp[1]=0; 293 isosp[2]=0; 293 isosp[2]=0; 294 iso1=1; 294 iso1=1; 295 iso2=-1; 295 iso2=-1; 296 } 296 } 297 void NNToMultiPionsChannel::nn_pnPimPi0Pi0 297 void NNToMultiPionsChannel::nn_pnPimPi0Pi0() { 298 isosp[0]=-2; 298 isosp[0]=-2; 299 isosp[1]=0; 299 isosp[1]=0; 300 isosp[2]=0; 300 isosp[2]=0; 301 iso1=1; 301 iso1=1; 302 iso2=-1; 302 iso2=-1; 303 } 303 } 304 void NNToMultiPionsChannel::pn_nnPipPi0Pi0 304 void NNToMultiPionsChannel::pn_nnPipPi0Pi0() { 305 isosp[0]=2; 305 isosp[0]=2; 306 isosp[1]=0; 306 isosp[1]=0; 307 isosp[2]=0; 307 isosp[2]=0; 308 iso1=-1; 308 iso1=-1; 309 iso2=-1; 309 iso2=-1; 310 } 310 } 311 void NNToMultiPionsChannel::pp_ppPipPimPi0 311 void NNToMultiPionsChannel::pp_ppPipPimPi0() { 312 isosp[0]=2; 312 isosp[0]=2; 313 isosp[1]=-2; 313 isosp[1]=-2; 314 isosp[2]=0; 314 isosp[2]=0; 315 } 315 } 316 void NNToMultiPionsChannel::nn_nnPipPimPi0 316 void NNToMultiPionsChannel::nn_nnPipPimPi0() { 317 isosp[0]=2; 317 isosp[0]=2; 318 isosp[1]=-2; 318 isosp[1]=-2; 319 isosp[2]=0; 319 isosp[2]=0; 320 } 320 } 321 void NNToMultiPionsChannel::pp_ppPi0Pi0Pi0 321 void NNToMultiPionsChannel::pp_ppPi0Pi0Pi0() { 322 isosp[0]=0; 322 isosp[0]=0; 323 isosp[1]=0; 323 isosp[1]=0; 324 isosp[2]=0; 324 isosp[2]=0; 325 } 325 } 326 void NNToMultiPionsChannel::nn_nnPi0Pi0Pi0 326 void NNToMultiPionsChannel::nn_nnPi0Pi0Pi0() { 327 isosp[0]=0; 327 isosp[0]=0; 328 isosp[1]=0; 328 isosp[1]=0; 329 isosp[2]=0; 329 isosp[2]=0; 330 } 330 } 331 void NNToMultiPionsChannel::pp_pnPipPipPim 331 void NNToMultiPionsChannel::pp_pnPipPipPim() { 332 isosp[0]=2; 332 isosp[0]=2; 333 isosp[1]=2; 333 isosp[1]=2; 334 isosp[2]=-2; 334 isosp[2]=-2; 335 iso1=1; 335 iso1=1; 336 iso2=-1; 336 iso2=-1; 337 } 337 } 338 void NNToMultiPionsChannel::pp_nnPipPipPi0 338 void NNToMultiPionsChannel::pp_nnPipPipPi0() { 339 isosp[0]=2; 339 isosp[0]=2; 340 isosp[1]=2; 340 isosp[1]=2; 341 isosp[2]=0; 341 isosp[2]=0; 342 iso1=-1; 342 iso1=-1; 343 iso2=-1; 343 iso2=-1; 344 } 344 } 345 void NNToMultiPionsChannel::pn_ppPimPi0Pi0 345 void NNToMultiPionsChannel::pn_ppPimPi0Pi0() { 346 isosp[0]=-2; 346 isosp[0]=-2; 347 isosp[1]=0; 347 isosp[1]=0; 348 isosp[2]=0; 348 isosp[2]=0; 349 iso1=1; 349 iso1=1; 350 iso2=1; 350 iso2=1; 351 } 351 } 352 void NNToMultiPionsChannel::pn_ppPimPimPip 352 void NNToMultiPionsChannel::pn_ppPimPimPip() { 353 isosp[0]=-2; 353 isosp[0]=-2; 354 isosp[1]=-2; 354 isosp[1]=-2; 355 isosp[2]=2; 355 isosp[2]=2; 356 iso1=1; 356 iso1=1; 357 iso2=1; 357 iso2=1; 358 } 358 } 359 void NNToMultiPionsChannel::pn_pnPi0PipPim 359 void NNToMultiPionsChannel::pn_pnPi0PipPim() { 360 isosp[0]=0; 360 isosp[0]=0; 361 isosp[1]=2; 361 isosp[1]=2; 362 isosp[2]=-2; 362 isosp[2]=-2; 363 } 363 } 364 void NNToMultiPionsChannel::pn_pnPi0Pi0Pi0 364 void NNToMultiPionsChannel::pn_pnPi0Pi0Pi0() { 365 isosp[0]=0; 365 isosp[0]=0; 366 isosp[1]=0; 366 isosp[1]=0; 367 isosp[2]=0; 367 isosp[2]=0; 368 } 368 } 369 void NNToMultiPionsChannel::pn_nnPipPipPim 369 void NNToMultiPionsChannel::pn_nnPipPipPim() { 370 isosp[0]=2; 370 isosp[0]=2; 371 isosp[1]=2; 371 isosp[1]=2; 372 isosp[2]=-2; 372 isosp[2]=-2; 373 iso1=-1; 373 iso1=-1; 374 iso2=-1; 374 iso2=-1; 375 } 375 } 376 void NNToMultiPionsChannel::nn_pnPipPimPim 376 void NNToMultiPionsChannel::nn_pnPipPimPim() { 377 isosp[0]=2; 377 isosp[0]=2; 378 isosp[1]=-2; 378 isosp[1]=-2; 379 isosp[2]=-2; 379 isosp[2]=-2; 380 iso1=1; 380 iso1=1; 381 iso2=-1; 381 iso2=-1; 382 } 382 } 383 void NNToMultiPionsChannel::nn_ppPimPimPi0 383 void NNToMultiPionsChannel::nn_ppPimPimPi0() { 384 isosp[0]=-2; 384 isosp[0]=-2; 385 isosp[1]=-2; 385 isosp[1]=-2; 386 isosp[2]=0; 386 isosp[2]=0; 387 iso1=1; 387 iso1=1; 388 iso2=1; 388 iso2=1; 389 } 389 } 390 void NNToMultiPionsChannel::pp_nnPipPipPi0 390 void NNToMultiPionsChannel::pp_nnPipPipPi0Pi0() { 391 isosp[0]=2; 391 isosp[0]=2; 392 isosp[1]=2; 392 isosp[1]=2; 393 isosp[2]=0; 393 isosp[2]=0; 394 isosp[3]=0; 394 isosp[3]=0; 395 iso1=-1; 395 iso1=-1; 396 iso2=-1; 396 iso2=-1; 397 } 397 } 398 void NNToMultiPionsChannel::pp_nnPipPipPip 398 void NNToMultiPionsChannel::pp_nnPipPipPipPim() { 399 isosp[0]=2; 399 isosp[0]=2; 400 isosp[1]=2; 400 isosp[1]=2; 401 isosp[2]=2; 401 isosp[2]=2; 402 isosp[3]=-2; 402 isosp[3]=-2; 403 iso1=-1; 403 iso1=-1; 404 iso2=-1; 404 iso2=-1; 405 } 405 } 406 void NNToMultiPionsChannel::nn_ppPi0Pi0Pim 406 void NNToMultiPionsChannel::nn_ppPi0Pi0PimPim() { 407 isosp[0]=0; 407 isosp[0]=0; 408 isosp[1]=0; 408 isosp[1]=0; 409 isosp[2]=-2; 409 isosp[2]=-2; 410 isosp[3]=-2; 410 isosp[3]=-2; 411 iso1=1; 411 iso1=1; 412 iso2=1; 412 iso2=1; 413 } 413 } 414 void NNToMultiPionsChannel::nn_ppPipPimPim 414 void NNToMultiPionsChannel::nn_ppPipPimPimPim() { 415 isosp[0]=2; 415 isosp[0]=2; 416 isosp[1]=-2; 416 isosp[1]=-2; 417 isosp[2]=-2; 417 isosp[2]=-2; 418 isosp[3]=-2; 418 isosp[3]=-2; 419 iso1=1; 419 iso1=1; 420 iso2=1; 420 iso2=1; 421 } 421 } 422 void NNToMultiPionsChannel::pp_ppPi0Pi0Pi0 422 void NNToMultiPionsChannel::pp_ppPi0Pi0Pi0Pi0() { 423 isosp[0]=0; 423 isosp[0]=0; 424 isosp[1]=0; 424 isosp[1]=0; 425 isosp[2]=0; 425 isosp[2]=0; 426 isosp[3]=0; 426 isosp[3]=0; 427 } 427 } 428 void NNToMultiPionsChannel::nn_nnPi0Pi0Pi0 428 void NNToMultiPionsChannel::nn_nnPi0Pi0Pi0Pi0() { 429 isosp[0]=0; 429 isosp[0]=0; 430 isosp[1]=0; 430 isosp[1]=0; 431 isosp[2]=0; 431 isosp[2]=0; 432 isosp[3]=0; 432 isosp[3]=0; 433 } 433 } 434 void NNToMultiPionsChannel::pn_pnPi0Pi0Pi0 434 void NNToMultiPionsChannel::pn_pnPi0Pi0Pi0Pi0() { 435 isosp[0]=0; 435 isosp[0]=0; 436 isosp[1]=0; 436 isosp[1]=0; 437 isosp[2]=0; 437 isosp[2]=0; 438 isosp[3]=0; 438 isosp[3]=0; 439 } 439 } 440 void NNToMultiPionsChannel::pp_ppPipPi0Pi0 440 void NNToMultiPionsChannel::pp_ppPipPi0Pi0Pim() { 441 isosp[0]=2; 441 isosp[0]=2; 442 isosp[1]=0; 442 isosp[1]=0; 443 isosp[2]=0; 443 isosp[2]=0; 444 isosp[3]=-2; 444 isosp[3]=-2; 445 } 445 } 446 void NNToMultiPionsChannel::nn_nnPipPi0Pi0 446 void NNToMultiPionsChannel::nn_nnPipPi0Pi0Pim() { 447 isosp[0]=2; 447 isosp[0]=2; 448 isosp[1]=0; 448 isosp[1]=0; 449 isosp[2]=0; 449 isosp[2]=0; 450 isosp[3]=-2; 450 isosp[3]=-2; 451 } 451 } 452 void NNToMultiPionsChannel::pn_pnPipPi0Pi0 452 void NNToMultiPionsChannel::pn_pnPipPi0Pi0Pim() { 453 isosp[0]=2; 453 isosp[0]=2; 454 isosp[1]=0; 454 isosp[1]=0; 455 isosp[2]=0; 455 isosp[2]=0; 456 isosp[3]=-2; 456 isosp[3]=-2; 457 } 457 } 458 void NNToMultiPionsChannel::pp_ppPipPipPim 458 void NNToMultiPionsChannel::pp_ppPipPipPimPim() { 459 isosp[0]=2; 459 isosp[0]=2; 460 isosp[1]=2; 460 isosp[1]=2; 461 isosp[2]=-2; 461 isosp[2]=-2; 462 isosp[3]=-2; 462 isosp[3]=-2; 463 } 463 } 464 void NNToMultiPionsChannel::nn_nnPipPipPim 464 void NNToMultiPionsChannel::nn_nnPipPipPimPim() { 465 isosp[0]=2; 465 isosp[0]=2; 466 isosp[1]=2; 466 isosp[1]=2; 467 isosp[2]=-2; 467 isosp[2]=-2; 468 isosp[3]=-2; 468 isosp[3]=-2; 469 } 469 } 470 void NNToMultiPionsChannel::pn_pnPipPipPim 470 void NNToMultiPionsChannel::pn_pnPipPipPimPim() { 471 isosp[0]=2; 471 isosp[0]=2; 472 isosp[1]=2; 472 isosp[1]=2; 473 isosp[2]=-2; 473 isosp[2]=-2; 474 isosp[3]=-2; 474 isosp[3]=-2; 475 } 475 } 476 void NNToMultiPionsChannel::pp_pnPipPi0Pi0 476 void NNToMultiPionsChannel::pp_pnPipPi0Pi0Pi0() { 477 isosp[0]=2; 477 isosp[0]=2; 478 isosp[1]=0; 478 isosp[1]=0; 479 isosp[2]=0; 479 isosp[2]=0; 480 isosp[3]=0; 480 isosp[3]=0; 481 iso1=1; 481 iso1=1; 482 iso2=-1; 482 iso2=-1; 483 } 483 } 484 void NNToMultiPionsChannel::pn_nnPipPi0Pi0 484 void NNToMultiPionsChannel::pn_nnPipPi0Pi0Pi0() { 485 isosp[0]=2; 485 isosp[0]=2; 486 isosp[1]=0; 486 isosp[1]=0; 487 isosp[2]=0; 487 isosp[2]=0; 488 isosp[3]=0; 488 isosp[3]=0; 489 iso1=-1; 489 iso1=-1; 490 iso2=-1; 490 iso2=-1; 491 } 491 } 492 void NNToMultiPionsChannel::pp_nnPipPi0Pi0 492 void NNToMultiPionsChannel::pp_nnPipPi0Pi0Pi0() { 493 isosp[0]=2; 493 isosp[0]=2; 494 isosp[1]=0; 494 isosp[1]=0; 495 isosp[2]=0; 495 isosp[2]=0; 496 isosp[3]=0; 496 isosp[3]=0; 497 iso1=-1; 497 iso1=-1; 498 iso2=-1; 498 iso2=-1; 499 } 499 } 500 void NNToMultiPionsChannel::pp_pnPipPipPi0 500 void NNToMultiPionsChannel::pp_pnPipPipPi0Pim() { 501 isosp[0]=2; 501 isosp[0]=2; 502 isosp[1]=2; 502 isosp[1]=2; 503 isosp[2]=0; 503 isosp[2]=0; 504 isosp[3]=-2; 504 isosp[3]=-2; 505 iso1=1; 505 iso1=1; 506 iso2=-1; 506 iso2=-1; 507 } 507 } 508 void NNToMultiPionsChannel::pn_nnPipPipPi0 508 void NNToMultiPionsChannel::pn_nnPipPipPi0Pim() { 509 isosp[0]=2; 509 isosp[0]=2; 510 isosp[1]=2; 510 isosp[1]=2; 511 isosp[2]=0; 511 isosp[2]=0; 512 isosp[3]=-2; 512 isosp[3]=-2; 513 iso1=-1; 513 iso1=-1; 514 iso2=-1; 514 iso2=-1; 515 } 515 } 516 void NNToMultiPionsChannel::pp_nnPipPipPi0 516 void NNToMultiPionsChannel::pp_nnPipPipPi0Pim() { 517 isosp[0]=2; 517 isosp[0]=2; 518 isosp[1]=2; 518 isosp[1]=2; 519 isosp[2]=0; 519 isosp[2]=0; 520 isosp[3]=-2; 520 isosp[3]=-2; 521 iso1=-1; 521 iso1=-1; 522 iso2=-1; 522 iso2=-1; 523 } 523 } 524 void NNToMultiPionsChannel::nn_pnPi0Pi0Pi0 524 void NNToMultiPionsChannel::nn_pnPi0Pi0Pi0Pim() { 525 isosp[0]=0; 525 isosp[0]=0; 526 isosp[1]=0; 526 isosp[1]=0; 527 isosp[2]=0; 527 isosp[2]=0; 528 isosp[3]=-2; 528 isosp[3]=-2; 529 iso1=1; 529 iso1=1; 530 iso2=-1; 530 iso2=-1; 531 } 531 } 532 void NNToMultiPionsChannel::pn_ppPi0Pi0Pi0 532 void NNToMultiPionsChannel::pn_ppPi0Pi0Pi0Pim() { 533 isosp[0]=0; 533 isosp[0]=0; 534 isosp[1]=0; 534 isosp[1]=0; 535 isosp[2]=0; 535 isosp[2]=0; 536 isosp[3]=-2; 536 isosp[3]=-2; 537 iso1=1; 537 iso1=1; 538 iso2=1; 538 iso2=1; 539 } 539 } 540 void NNToMultiPionsChannel::nn_pnPipPi0Pim 540 void NNToMultiPionsChannel::nn_pnPipPi0PimPim() { 541 isosp[0]=2; 541 isosp[0]=2; 542 isosp[1]=0; 542 isosp[1]=0; 543 isosp[2]=-2; 543 isosp[2]=-2; 544 isosp[3]=-2; 544 isosp[3]=-2; 545 iso1=1; 545 iso1=1; 546 iso2=-1; 546 iso2=-1; 547 } 547 } 548 void NNToMultiPionsChannel::pn_ppPipPi0Pim 548 void NNToMultiPionsChannel::pn_ppPipPi0PimPim() { 549 isosp[0]=2; 549 isosp[0]=2; 550 isosp[1]=0; 550 isosp[1]=0; 551 isosp[2]=-2; 551 isosp[2]=-2; 552 isosp[3]=-2; 552 isosp[3]=-2; 553 iso1=1; 553 iso1=1; 554 iso2=1; 554 iso2=1; 555 } 555 } 556 556 557 void NNToMultiPionsChannel::inter2Part(con 557 void NNToMultiPionsChannel::inter2Part(const G4double p) { 558 558 559 if (Random::shoot() < p) std::swap(iso 559 if (Random::shoot() < p) std::swap(iso1,iso2); 560 560 561 } 561 } 562 562 563 563 564 } 564 } 565 565