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 // 27 28 29 #include "globals.hh" 30 #include "G4CollisionNN.hh" 31 #include "G4CollisionComposite.hh" 32 #include "G4VCollision.hh" 33 #include "G4CollisionVector.hh" 34 #include "G4KineticTrack.hh" 35 #include "G4VCrossSectionSource.hh" 36 #include "G4XNNTotal.hh" 37 #include "G4Proton.hh" 38 #include "G4Neutron.hh" 39 #include "G4CollisionNNElastic.hh" 40 #include "G4CollisionnpElastic.hh" 41 #include "G4CollisionNNToNDelta.hh" 42 #include "G4CollisionNNToDeltaDelta.hh" 43 #include "G4CollisionNNToNDeltastar.hh" 44 #include "G4CollisionNNToDeltaDeltastar.hh" 45 #include "G4CollisionNNToNNstar.hh" 46 #include "G4CollisionNNToDeltaNstar.hh" 47 #include "G4Pair.hh" 48 49 typedef GROUP8(G4CollisionnpElastic, G4Collisi 50 G4CollisionNNToNDelta, G4Collisi 51 G4CollisionNNToNDeltastar, G4Collision 52 G4CollisionNNToNNstar, G4CollisionNNTo 53 54 G4CollisionNN::G4CollisionNN() 55 { 56 components=0; 57 crossSectionSource = new G4XNNTotal(); 58 G4CollisionComposite::Register aR; 59 G4ForEach<theChannels>::Apply(&aR, this); 60 } 61 62 63 G4CollisionNN::~G4CollisionNN() 64 { 65 if (components) { 66 delete components; 67 components=0; 68 } 69 delete crossSectionSource; 70 crossSectionSource = 0; 71 } 72 73 74 const std::vector<G4String>& G4CollisionNN::Ge 75 { 76 throw G4HadronicException(__FILE__, __LINE 77 return colliders1; 78 } 79 80 81 G4double G4CollisionNN::CrossSection(const G4K 82 const G4KineticTrack& aTrk2) const 83 { 84 G4double sigma = 0.; 85 86 // nucleon-nucleon cross-sections made for o 87 // here we take the kinetic energy as the qu 88 // for calculating the scattering cross-sect 89 90 const G4VCrossSectionSource* xSource = GetCr 91 G4LorentzVector p1 = aTrk1.Get4Momentum(); 92 G4LorentzVector p2 = aTrk2.Get4Momentum(); 93 G4double t1 = p1.e()-aTrk1.GetActualMass(); 94 G4double t2 = p2.e()-aTrk2.GetActualMass(); 95 p1.setE(t1+aTrk1.GetDefinition()->GetPDGMass 96 p2.setE(t2+aTrk2.GetDefinition()->GetPDGMass 97 G4KineticTrack trk1(aTrk1); 98 trk1.Set4Momentum(p1); 99 G4KineticTrack trk2(aTrk2); 100 trk2.Set4Momentum(p2); 101 if( (p1+p2).mag()<aTrk1.GetDefinition()->Get 102 { 103 return 0.; 104 } 105 106 if (xSource != 0) 107 { 108 // There is a cross section for this Col 109 sigma = xSource->CrossSection(trk1,trk2) 110 } 111 return sigma; 112 } 113 114