Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/im_r_matrix/src/G4CollisionNN.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /processes/hadronic/models/im_r_matrix/src/G4CollisionNN.cc (Version 11.3.0) and /processes/hadronic/models/im_r_matrix/src/G4CollisionNN.cc (Version 10.6)


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