Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/cross_sections/src/G4ElNucleusSFcs.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/cross_sections/src/G4ElNucleusSFcs.cc (Version 11.3.0) and /processes/hadronic/cross_sections/src/G4ElNucleusSFcs.cc (Version 11.1)


  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 #include <iostream>                                28 #include <iostream>
 29                                                    29 
 30 #include "G4SystemOfUnits.hh"                      30 #include "G4SystemOfUnits.hh"
 31 #include "G4PhysicalConstants.hh"                  31 #include "G4PhysicalConstants.hh"
 32 #include "G4HadTmpUtil.hh"                         32 #include "G4HadTmpUtil.hh"
 33 #include "G4ElNucleusSFcs.hh"                      33 #include "G4ElNucleusSFcs.hh"
 34 #include "G4ElectroNuclearCrossSection.hh"         34 #include "G4ElectroNuclearCrossSection.hh"
 35                                                    35 
 36 // factory                                         36 // factory
 37 #include "G4CrossSectionFactory.hh"                37 #include "G4CrossSectionFactory.hh"
 38 //                                                 38 //
 39 G4_DECLARE_XS_FACTORY(G4ElNucleusSFcs);            39 G4_DECLARE_XS_FACTORY(G4ElNucleusSFcs);
 40                                                    40 
 41                                                    41 
 42 G4ElNucleusSFcs::G4ElNucleusSFcs():G4VCrossSec     42 G4ElNucleusSFcs::G4ElNucleusSFcs():G4VCrossSectionDataSet(Default_Name())
 43 {                                                  43 {
 44   fCHIPScs = new G4ElectroNuclearCrossSection(     44   fCHIPScs = new G4ElectroNuclearCrossSection();  
 45 }                                                  45 }
 46                                                    46 
 47 G4ElNucleusSFcs::~G4ElNucleusSFcs()                47 G4ElNucleusSFcs::~G4ElNucleusSFcs()
 48 {                                                  48 {
 49   if( fCHIPScs != nullptr ) delete fCHIPScs;       49   if( fCHIPScs != nullptr ) delete fCHIPScs;
 50 }                                                  50 }
 51                                                    51 
 52 void                                               52 void
 53 G4ElNucleusSFcs::CrossSectionDescription( std:     53 G4ElNucleusSFcs::CrossSectionDescription( std::ostream& outFile) const
 54 {                                                  54 {
 55     outFile << "G4ElNucleusSFcs provides the i     55     outFile << "G4ElNucleusSFcs provides the inelastic\n"
 56     << "cross section for e- and e+ interactio     56     << "cross section for e- and e+ interactions with nuclei according to the structure function approach."
 57     << "all energies.\n";                          57     << "all energies.\n";
 58 }                                                  58 }
 59                                                    59 
 60 G4bool G4ElNucleusSFcs::IsElementApplicable( c     60 G4bool G4ElNucleusSFcs::IsElementApplicable( const G4DynamicParticle* aPart, G4int Z, const G4Material*)
 61 {                                                  61 {
 62                                                    62 
 63   G4double eKin   = aPart->GetKineticEnergy();     63   G4double eKin   = aPart->GetKineticEnergy();
 64   G4double thTkin = ThresholdEnergy();             64   G4double thTkin = ThresholdEnergy();
 65                                                    65   
 66   return ( Z > 0 && Z < 120 && eKin > thTkin )     66   return ( Z > 0 && Z < 120 && eKin > thTkin );
 67 }                                                  67 }
 68                                                    68 
 69                                                    69 
 70 G4double G4ElNucleusSFcs::GetIsoCrossSection(      70 G4double G4ElNucleusSFcs::GetIsoCrossSection( const G4DynamicParticle* aPart, G4int ZZ, G4int AA,  const G4Isotope* ,
 71                               const G4Element*     71                               const G4Element* , const G4Material* )
 72 {                                                  72 {
 73   G4double xsc(0.), ratio(1.);                     73   G4double xsc(0.), ratio(1.);
 74                                                    74 
 75   xsc = fCHIPScs->GetElementCrossSection( aPar     75   xsc = fCHIPScs->GetElementCrossSection( aPart, ZZ, nullptr ); //, const G4Material*);
 76                                                    76 
 77   ratio = GetRatio(ZZ,AA);                         77   ratio = GetRatio(ZZ,AA);
 78                                                    78 
 79   if( ratio > 0. ) xsc /= ratio;                   79   if( ratio > 0. ) xsc /= ratio;
 80                                                    80   
 81   return xsc;                                      81   return xsc;
 82 }                                                  82 }
 83                                                    83 
 84 //////////////////////////////////////////////     84 /////////////////////////////////////////////////////////////////////////
 85 //                                                 85 //
 86 // Calculate ratio CHIPS-CS/SF-CS, averaged be     86 // Calculate ratio CHIPS-CS/SF-CS, averaged between 200 MeV and 100 GeV
 87                                                    87 
 88 G4double G4ElNucleusSFcs::GetRatio( G4int Z, G     88 G4double G4ElNucleusSFcs::GetRatio( G4int Z, G4int A )
 89 {                                                  89 {
 90   G4double ratio(1.);                              90   G4double ratio(1.);
 91                                                    91 
 92   if      ( Z == 1   && A == 1 )   return 1.51     92   if      ( Z == 1   && A == 1 )   return 1.51;
 93   else if ( Z == 1   && A == 2 )   return 0.33     93   else if ( Z == 1   && A == 2 )   return 0.33;
 94   else if ( Z == 1   && A == 3 )   return 0.27     94   else if ( Z == 1   && A == 3 )   return 0.27;
 95   else if ( Z == 2   && A == 4 )   return 1.81     95   else if ( Z == 2   && A == 4 )   return 1.81;
 96   else if ( Z == 6   && A == 12 )  return 2.26     96   else if ( Z == 6   && A == 12 )  return 2.26;
 97   else if ( Z == 7   && A == 14 )  return 2.47     97   else if ( Z == 7   && A == 14 )  return 2.47;
 98   else if ( Z == 8   && A == 16 )  return 2.61     98   else if ( Z == 8   && A == 16 )  return 2.61;
 99   else if ( Z == 13  && A == 27 )  return 2.57     99   else if ( Z == 13  && A == 27 )  return 2.57;
100   else if ( Z == 14  && A == 28 )  return 2.49    100   else if ( Z == 14  && A == 28 )  return 2.49;
101   else if ( Z == 18  && A == 40 )  return 2.72    101   else if ( Z == 18  && A == 40 )  return 2.72;
102   else if ( Z == 22  && A == 48 )  return 2.71    102   else if ( Z == 22  && A == 48 )  return 2.71;
103   else if ( Z == 26  && A == 56 )  return 2.79    103   else if ( Z == 26  && A == 56 )  return 2.79;
104   else if ( Z == 29  && A == 64 )  return 2.78    104   else if ( Z == 29  && A == 64 )  return 2.78;
105   else if ( Z == 32  && A == 73 )  return 2.87    105   else if ( Z == 32  && A == 73 )  return 2.87;
106   else if ( Z == 42  && A == 96 )  return 3.02    106   else if ( Z == 42  && A == 96 )  return 3.02;
107   else if ( Z == 46  && A == 106 ) return 3.02    107   else if ( Z == 46  && A == 106 ) return 3.02;
108   else if ( Z == 47  && A == 108 ) return 2.99    108   else if ( Z == 47  && A == 108 ) return 2.99;
109   else if ( Z == 48  && A == 112 ) return 3.00    109   else if ( Z == 48  && A == 112 ) return 3.00;
110   else if ( Z == 74  && A == 184 ) return 3.44    110   else if ( Z == 74  && A == 184 ) return 3.44;
111   else if ( Z == 79  && A == 200 ) return 3.49    111   else if ( Z == 79  && A == 200 ) return 3.49;
112   else if ( Z == 82  && A == 207 ) return 3.48    112   else if ( Z == 82  && A == 207 ) return 3.48;
113   else if ( Z == 92  && A == 238 ) return 3.88    113   else if ( Z == 92  && A == 238 ) return 3.88;
114   else                                            114   else
115   {                                               115   {
116     G4int it(0), iMax(19);                        116     G4int it(0), iMax(19);
117     G4double zz = G4double(Z);                    117     G4double zz = G4double(Z);
118                                                   118 
119     for ( it = 0; it < iMax; ++it ) if ( zz <=    119     for ( it = 0; it < iMax; ++it ) if ( zz <= fZZ[it] ) break;
120                                                   120 
121     if     ( it == 0 )    return fRR[0];          121     if     ( it == 0 )    return fRR[0];
122     else if( it == iMax ) return fRR[iMax-1];     122     else if( it == iMax ) return fRR[iMax-1];
123     else                                          123     else
124     {                                             124     {
125       G4double x1 = fZZ[it-1];                    125       G4double x1 = fZZ[it-1];
126       G4double x2 = fZZ[it];                      126       G4double x2 = fZZ[it];
127       G4double y1 = fRR[it-1];                    127       G4double y1 = fRR[it-1];
128       G4double y2 = fRR[it];                      128       G4double y2 = fRR[it];
129                                                   129       
130       if( x1 >= x2 ) return fRR[it];              130       if( x1 >= x2 ) return fRR[it];
131       else                                        131       else
132       {                                           132       {
133         G4double angle = (y2-y1)/(x2-x1);         133         G4double angle = (y2-y1)/(x2-x1);
134   ratio = y1 + ( zz - x1 )*angle;                 134   ratio = y1 + ( zz - x1 )*angle;
135       }                                           135       }
136     }                                             136     } 
137   }                                               137   }
138   return ratio;                                   138   return ratio;
139 }                                                 139 }
140                                                   140 
141 /////////////////////////////////////////         141 /////////////////////////////////////////
142                                                   142 
143 G4double G4ElNucleusSFcs::ThresholdEnergy()       143 G4double G4ElNucleusSFcs::ThresholdEnergy()
144 {                                                 144 {
145   G4double thTkin = 134.9766*CLHEP::MeV; // Pi    145   G4double thTkin = 134.9766*CLHEP::MeV; // Pi0 threshold for the nucleon
146                                                   146   
147   thTkin *= 1.3; // nucleon motion                147   thTkin *= 1.3; // nucleon motion
148                                                   148   
149   return thTkin;                                  149   return thTkin;
150 }                                                 150 }
151                                                   151 
152 /////////////////////////////////////////         152 /////////////////////////////////////////
153                                                   153 
154 const G4double G4ElNucleusSFcs::fZZ[19] =         154 const G4double G4ElNucleusSFcs::fZZ[19] =
155   {                                               155   {
156     2., 6., 7., 8., 13., 14., 18., 22., 26., 2    156     2., 6., 7., 8., 13., 14., 18., 22., 26., 29.,
157     32., 42., 46., 47., 48., 74., 79., 82., 92    157     32., 42., 46., 47., 48., 74., 79., 82., 92.
158   };                                              158   };
159                                                   159 
160 /////////////////////////////////////////         160 /////////////////////////////////////////
161                                                   161 
162 const G4double G4ElNucleusSFcs::fRR[19] =         162 const G4double G4ElNucleusSFcs::fRR[19] =
163   {                                               163   {
164     1.81, 2.26, 2.47, 2.61, 2.57, 2.49, 2.72,     164     1.81, 2.26, 2.47, 2.61, 2.57, 2.49, 2.72, 2.71, 2.79, 2.78,
165     2.87, 3.02, 3.02, 2.99, 3., 3.44, 3.49, 3.    165     2.87, 3.02, 3.02, 2.99, 3., 3.44, 3.49, 3.48, 2.88
166   };                                              166   };
167                                                   167