Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 #include "G4MesonSplitter.hh" 27 #include "Randomize.hh" 28 29 G4bool G4MesonSplitter::SplitMeson(G4int PDGco 30 { 31 G4int absPDGcode = std::abs(PDGcode); 32 if (absPDGcode >= 1000) return false; 33 if (absPDGcode == 22) // For gamma -> 4 (u 34 { 35 G4int it=1; 36 if(G4UniformRand()<0.8) it++; 37 aEnd = it; 38 bEnd = -it; 39 } 40 else 41 { 42 G4int heavy = absPDGcode/100; 43 G4int light = (absPDGcode%100)/10; 44 G4int anti = 1 - 2*(std::max(heavy, light 45 if (PDGcode < 0 ) anti = -anti; 46 heavy *= anti; 47 light *= -anti; 48 if ( anti < 0) G4SwapObj(&heavy, &light); 49 aEnd = heavy; 50 bEnd = light; 51 } 52 return true; 53 } 54