Geant4 Cross Reference

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


  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 // $Id: G4ComponentSAIDTotalXS.cc 83409 2014-08-21 15:16:07Z gcosmo $
 26 //                                                 27 //
 27 // -------------------------------------------     28 // -------------------------------------------------------------------
 28 //                                                 29 //
 29 // GEANT4 Class file                               30 // GEANT4 Class file
 30 //                                                 31 //
 31 //                                                 32 //
 32 // File name:    G4ComponentSAIDTotalXS            33 // File name:    G4ComponentSAIDTotalXS
 33 //                                                 34 //
 34 // Authors:  G.Folger, V.Ivanchenko, D.Wright      35 // Authors:  G.Folger, V.Ivanchenko, D.Wright
 35 //                                                 36 //
 36 // Modifications:                                  37 // Modifications:
 37 //                                                 38 //
 38                                                    39 
 39 #include "G4ComponentSAIDTotalXS.hh"               40 #include "G4ComponentSAIDTotalXS.hh"
 40 #include "G4PhysicsVector.hh"                      41 #include "G4PhysicsVector.hh"
 41 #include "G4PhysicsFreeVector.hh"              <<  42 #include "G4LPhysicsFreeVector.hh"
 42                                                    43 
 43 const G4String G4ComponentSAIDTotalXS::fnames[     44 const G4String G4ComponentSAIDTotalXS::fnames[13] = {
 44   "","pp","np","pip","pim",                        45   "","pp","np","pip","pim",
 45   "pin","pie",                                     46   "pin","pie",
 46   "gp_pi0p","gp_pi+n","gn_pi-p","gn_pi0n","gp_     47   "gp_pi0p","gp_pi+n","gn_pi-p","gn_pi0n","gp_etap","gp_etapp"
 47 };                                                 48 };
 48                                                    49 
 49 #ifdef G4MULTITHREADED                         << 
 50   G4Mutex G4ComponentSAIDTotalXS::saidXSMutex  << 
 51 #endif                                         << 
 52                                                << 
 53 G4ComponentSAIDTotalXS::G4ComponentSAIDTotalXS     50 G4ComponentSAIDTotalXS::G4ComponentSAIDTotalXS() 
 54   : G4VComponentCrossSection("xsSAID")             51   : G4VComponentCrossSection("xsSAID")
 55 {                                                  52 {
 56   for(G4int i=0; i<numberOfSaidXS; ++i) {          53   for(G4int i=0; i<numberOfSaidXS; ++i) {
 57     elastdata[i] = nullptr;                    <<  54     elastdata[i] = 0;
 58     inelastdata[i] = nullptr;                  <<  55     inelastdata[i] = 0;
 59   }                                                56   }
 60 }                                                  57 }
 61                                                    58 
 62 G4ComponentSAIDTotalXS::~G4ComponentSAIDTotalX     59 G4ComponentSAIDTotalXS::~G4ComponentSAIDTotalXS()
 63 {                                                  60 {
 64   for(G4int i=0; i<numberOfSaidXS; ++i) {          61   for(G4int i=0; i<numberOfSaidXS; ++i) {
 65     if(elastdata[i]) {                             62     if(elastdata[i]) {
 66       delete elastdata[i];                         63       delete elastdata[i];
 67       elastdata[i] = nullptr;                  <<  64       elastdata[i] = 0;
 68     }                                              65     }
 69     if(inelastdata[i]) {                           66     if(inelastdata[i]) {
 70       delete inelastdata[i];                       67       delete inelastdata[i];
 71       inelastdata[i] = nullptr;                <<  68       inelastdata[i] = 0;
 72     }                                              69     }
 73   }                                                70   }
 74 }                                                  71 }
 75                                                    72 
 76 G4double                                           73 G4double 
 77 G4ComponentSAIDTotalXS::GetTotalElementCrossSe     74 G4ComponentSAIDTotalXS::GetTotalElementCrossSection(
 78       const G4ParticleDefinition* part,            75       const G4ParticleDefinition* part,
 79       G4double, G4int Z, G4double N)               76       G4double, G4int Z, G4double N)
 80 {                                                  77 {
 81   PrintWarning(part,0,Z,G4lrint(N),                78   PrintWarning(part,0,Z,G4lrint(N),
 82          "G4ComponentSAIDTotalXS::GetTotalElem     79          "G4ComponentSAIDTotalXS::GetTotalElementCrossSection",
 83          "Method is not implemented");             80          "Method is not implemented");
 84   return 0.0;                                      81   return 0.0; 
 85 }                                                  82 }
 86                                                    83 
 87 G4double                                           84 G4double 
 88 G4ComponentSAIDTotalXS::GetTotalIsotopeCrossSe     85 G4ComponentSAIDTotalXS::GetTotalIsotopeCrossSection(
 89       const G4ParticleDefinition* part,            86       const G4ParticleDefinition* part,
 90       G4double kinEnergy, G4int Z, G4int N)        87       G4double kinEnergy, G4int Z, G4int N)
 91 {                                                  88 {
 92   return GetInelasticIsotopeCrossSection(part,     89   return GetInelasticIsotopeCrossSection(part,kinEnergy,Z,N)
 93     + GetElasticIsotopeCrossSection(part,kinEn     90     + GetElasticIsotopeCrossSection(part,kinEnergy,Z,N);
 94 }                                                  91 }
 95                                                    92 
 96 G4double                                           93 G4double 
 97 G4ComponentSAIDTotalXS::GetInelasticElementCro     94 G4ComponentSAIDTotalXS::GetInelasticElementCrossSection(
 98       const G4ParticleDefinition* part,            95       const G4ParticleDefinition* part,
 99       G4double, G4int Z, G4double N)               96       G4double, G4int Z, G4double N)
100 {                                                  97 {
101   PrintWarning(part,0,Z,G4lrint(N),                98   PrintWarning(part,0,Z,G4lrint(N),
102          "G4ComponentSAIDTotalXS::GetTotalElem     99          "G4ComponentSAIDTotalXS::GetTotalElementCrossSection",
103          "Method is not implemented");            100          "Method is not implemented");
104   return 0.0;                                     101   return 0.0; 
105 }                                                 102 }
106                                                   103 
107 G4double                                          104 G4double 
108 G4ComponentSAIDTotalXS::GetInelasticIsotopeCro    105 G4ComponentSAIDTotalXS::GetInelasticIsotopeCrossSection(
109       const G4ParticleDefinition* part,           106       const G4ParticleDefinition* part,
110       G4double kinEnergy, G4int Z, G4int N)       107       G4double kinEnergy, G4int Z, G4int N)
111 {                                                 108 {
112   G4double cross = 0.0;                           109   G4double cross = 0.0;
113   G4SAIDCrossSectionType tp = GetType(part,0,Z    110   G4SAIDCrossSectionType tp = GetType(part,0,Z,N);
114   if(saidUnknown != tp) {                         111   if(saidUnknown != tp) {
115     G4int idx = G4int(tp);                        112     G4int idx = G4int(tp);
116     if(!inelastdata[idx]) { Initialise(tp); }     113     if(!inelastdata[idx]) { Initialise(tp); }
117     if(inelastdata[idx]) {                        114     if(inelastdata[idx]) { 
118       cross = (inelastdata[idx])->Value(kinEne    115       cross = (inelastdata[idx])->Value(kinEnergy);
119     }                                             116     }
120   }                                               117   }
121   return cross;                                   118   return cross;
122 }                                                 119 }
123                                                   120 
124 G4double                                          121 G4double 
125 G4ComponentSAIDTotalXS::GetElasticElementCross    122 G4ComponentSAIDTotalXS::GetElasticElementCrossSection(
126       const G4ParticleDefinition* part,           123       const G4ParticleDefinition* part,
127       G4double, G4int Z, G4double N)              124       G4double, G4int Z, G4double N)
128 {                                                 125 {
129   PrintWarning(part,0,Z,G4lrint(N),               126   PrintWarning(part,0,Z,G4lrint(N),
130          "G4ComponentSAIDTotalXS::GetTotalElem    127          "G4ComponentSAIDTotalXS::GetTotalElementCrossSection",
131          "Method is not implemented");            128          "Method is not implemented");
132   return 0.0;                                     129   return 0.0; 
133 }                                                 130 }
134                                                   131 
135 G4double                                          132 G4double 
136 G4ComponentSAIDTotalXS::GetElasticIsotopeCross    133 G4ComponentSAIDTotalXS::GetElasticIsotopeCrossSection(
137       const G4ParticleDefinition* part,           134       const G4ParticleDefinition* part,
138       G4double kinEnergy, G4int Z, G4int N)       135       G4double kinEnergy, G4int Z, G4int N)
139 {                                                 136 {
140   G4double cross = 0.0;                           137   G4double cross = 0.0;
141   G4SAIDCrossSectionType tp = GetType(part,0,Z    138   G4SAIDCrossSectionType tp = GetType(part,0,Z,N);
142   if(saidUnknown != tp) {                         139   if(saidUnknown != tp) {
143     G4int idx = G4int(tp);                        140     G4int idx = G4int(tp);
144     if(!elastdata[idx]) { Initialise(tp); }       141     if(!elastdata[idx]) { Initialise(tp); }
145     if(elastdata[idx]) {                          142     if(elastdata[idx]) { 
146       cross = (elastdata[idx])->Value(kinEnerg    143       cross = (elastdata[idx])->Value(kinEnergy); 
147     }                                             144     }
148   }                                               145   }
149   return cross;                                   146   return cross;
150 }                                                 147 }
151                                                   148 
152 G4double                                          149 G4double 
153 G4ComponentSAIDTotalXS::GetChargeExchangeCross    150 G4ComponentSAIDTotalXS::GetChargeExchangeCrossSection(
154      const G4ParticleDefinition* prim,            151      const G4ParticleDefinition* prim,
155      const G4ParticleDefinition* sec,             152      const G4ParticleDefinition* sec,
156      G4double kinEnergy, G4int Z, G4int N)        153      G4double kinEnergy, G4int Z, G4int N)
157 {                                                 154 {
158   G4double cross = 0.0;                           155   G4double cross = 0.0;
159   G4SAIDCrossSectionType tp = GetType(prim,sec    156   G4SAIDCrossSectionType tp = GetType(prim,sec,Z,N);
160   if(saidUnknown != tp) {                         157   if(saidUnknown != tp) {
161     G4int idx = G4int(tp);                        158     G4int idx = G4int(tp);
162     if(!inelastdata[idx]) { Initialise(tp); }     159     if(!inelastdata[idx]) { Initialise(tp); }
163     if(inelastdata[idx]) {                        160     if(inelastdata[idx]) { 
164       cross = (inelastdata[idx])->Value(kinEne    161       cross = (inelastdata[idx])->Value(kinEnergy); 
165     }                                             162     }
166   }                                               163   }
167   return cross;                                   164   return cross;
168 }                                                 165 }
169                                                   166 
170 void G4ComponentSAIDTotalXS::Description(std:: << 167 void 
                                                   >> 168 G4ComponentSAIDTotalXS::Description() const
171 {                                                 169 {
172 }                                                 170 }
173                                                   171 
174 G4SAIDCrossSectionType                            172 G4SAIDCrossSectionType 
175 G4ComponentSAIDTotalXS::GetType(const G4Partic    173 G4ComponentSAIDTotalXS::GetType(const G4ParticleDefinition* prim,
176         const G4ParticleDefinition* sec,          174         const G4ParticleDefinition* sec,
177         G4int Z, G4int N)                         175         G4int Z, G4int N)
178 {                                                 176 {
179   G4SAIDCrossSectionType type = saidUnknown;      177   G4SAIDCrossSectionType type = saidUnknown;
180   if(1 == N && prim) {                            178   if(1 == N && prim) {
181     G4int code = prim->GetPDGEncoding();          179     G4int code = prim->GetPDGEncoding();
182                                                   180 
183     // only gamma + N x-sections available        181     // only gamma + N x-sections available
184     if(0 == Z && sec && 22 == code) {             182     if(0 == Z && sec && 22 == code) {
185       G4int code1 = sec->GetPDGEncoding();        183       G4int code1 = sec->GetPDGEncoding();
186       if(-211 == code1)     { type = saidGN_PI    184       if(-211 == code1)     { type = saidGN_PINP; }
187       else if(111 == code1) { type = saidGN_PI    185       else if(111 == code1) { type = saidGN_PI0N; }
188                                                   186 
189       // x-sections off proton                    187       // x-sections off proton
190     } else if(1 == Z) {                           188     } else if(1 == Z) {
191       if(sec) {                                   189       if(sec) {
192   G4int code1 = sec->GetPDGEncoding();            190   G4int code1 = sec->GetPDGEncoding();
193         if(-211 == code) {                        191         if(-211 == code) {
194           if(111 == code1)      { type = saidP    192           if(111 == code1)      { type = saidPINP_PI0N; }
195           else if(221 == code1) { type = saidP    193           else if(221 == code1) { type = saidPINP_ETAN; }
196                                                   194 
197   } else if(22 == code) {                         195   } else if(22 == code) {
198           if(111 == code1)      { type = saidG    196           if(111 == code1)      { type = saidGP_PI0P; }
199           else if(211 == code1) { type = saidG    197           else if(211 == code1) { type = saidGP_PIPN; }
200           else if(221 == code1) { type = saidG    198           else if(221 == code1) { type = saidGP_ETAP; }
201           else if(331 == code1) { type = saidG    199           else if(331 == code1) { type = saidGP_ETAPP; }
202   }                                               200   }
203       } else {                                    201       } else {
204         if(2212 == code)        { type = saidP    202         if(2212 == code)        { type = saidPP; } 
205         else if(2112 == code)   { type = saidN    203         else if(2112 == code)   { type = saidNP; } 
206         else if(211 == code)    { type = saidP    204         else if(211 == code)    { type = saidPIPP; } 
207         else if(-211 == code)   { type = saidP    205         else if(-211 == code)   { type = saidPINP; } 
208       }                                           206       }
209     }                                             207     }
210   }                                               208   }
211   //G4cout << "G4ComponentSAIDTotalXS::Type= "    209   //G4cout << "G4ComponentSAIDTotalXS::Type= " << type << G4endl;
212   return type;                                    210   return type;
213 }                                                 211 }
214                                                   212 
215 void G4ComponentSAIDTotalXS::Initialise(G4SAID    213 void G4ComponentSAIDTotalXS::Initialise(G4SAIDCrossSectionType tp)
216 {                                                 214 {
217   G4int idx = G4int(tp);                          215   G4int idx = G4int(tp);
218 #ifdef G4MULTITHREADED                         << 216   // check environment variable 
219   G4MUTEXLOCK(&saidXSMutex);                   << 217   // Build the complete string identifying the file with the data set
220   if(!inelastdata[idx]) {                      << 218   char* path = getenv("G4SAIDXSDATA");
221 #endif                                         << 219   if (!path){
222     // check environment variable              << 220     G4Exception("G4ComponentSAIDTotalXS::Initialise(..)","had013",
223     // Build the complete string identifying t << 221     FatalException,
224     const char* path = G4FindDataDir("G4SAIDXS << 222     "Environment variable G4SAIDXSDATA is not defined");
225     if (!path){                                << 223     return;
226       G4Exception("G4ComponentSAIDTotalXS::Ini << 224   }
227       FatalException,                          << 225   if(idx <= 4) {
228       "Environment variable G4SAIDXSDATA is no << 226     elastdata[idx] = new G4LPhysicsFreeVector();
229       return;                                  << 227     inelastdata[idx] = new G4LPhysicsFreeVector();
230     }                                          << 228     ReadData(idx,elastdata[idx],path,"_el.dat");
231     if(idx <= 4) {                             << 229     ReadData(idx,inelastdata[idx],path,"_in.dat");
232       elastdata[idx] = new G4PhysicsFreeVector << 230   } else {
233       inelastdata[idx] = new G4PhysicsFreeVect << 231     inelastdata[idx] = new G4LPhysicsFreeVector();
234       ReadData(idx,elastdata[idx],path,"_el.da << 232     ReadData(idx,inelastdata[idx],path,".dat");
235       ReadData(idx,inelastdata[idx],path,"_in. << 
236     } else {                                   << 
237       inelastdata[idx] = new G4PhysicsFreeVect << 
238       ReadData(idx,inelastdata[idx],path,".dat << 
239     }                                          << 
240 #ifdef G4MULTITHREADED                         << 
241   }                                               233   }
242   G4MUTEXUNLOCK(&saidXSMutex);                 << 
243 #endif                                         << 
244 }                                                 234 }
245                                                   235 
246 void G4ComponentSAIDTotalXS::ReadData(G4int in    236 void G4ComponentSAIDTotalXS::ReadData(G4int index, 
247               G4PhysicsVector* v,                 237               G4PhysicsVector* v,
248               const G4String& ss1,                238               const G4String& ss1, 
249               const G4String& ss2)                239               const G4String& ss2)
250 {                                                 240 {
251   std::ostringstream ost;                         241   std::ostringstream ost;
252   ost << ss1 << "/" << fnames[index] << ss2;      242   ost << ss1 << "/" << fnames[index] << ss2;
253   std::ifstream filein(ost.str().c_str());        243   std::ifstream filein(ost.str().c_str());
254   if (!(filein)) {                                244   if (!(filein)) {
255     G4ExceptionDescription ed;                    245     G4ExceptionDescription ed;
256     ed << "Data file <" << ost.str().c_str()      246     ed << "Data file <" << ost.str().c_str()
257        << "> is not opened!";                     247        << "> is not opened!";
258     G4Exception("G4ComponentSAIDTotalXS::ReadD    248     G4Exception("G4ComponentSAIDTotalXS::ReadData(..)","had014",
259                 FatalException, ed, "Check G4S    249                 FatalException, ed, "Check G4SAIDXSDATA");
260   } else {                                        250   } else {
261     if(GetVerboseLevel() > 1) {                   251     if(GetVerboseLevel() > 1) {
262       G4cout << "File " << ost.str()              252       G4cout << "File " << ost.str() 
263              << " is opened by G4ComponentSAID    253              << " is opened by G4ComponentSAIDTotalXS" << G4endl;
264     }                                             254     }
265     // retrieve data from DB                      255     // retrieve data from DB
266     v->Retrieve(filein, true);                    256     v->Retrieve(filein, true);
267     v->ScaleVector(CLHEP::MeV,CLHEP::millibarn    257     v->ScaleVector(CLHEP::MeV,CLHEP::millibarn);
268     v->FillSecondDerivatives();                << 258     v->SetSpline(true);
269   }                                               259   } 
270 }                                                 260 }
271                                                   261 
272 void                                              262 void 
273 G4ComponentSAIDTotalXS::PrintWarning(const G4P    263 G4ComponentSAIDTotalXS::PrintWarning(const G4ParticleDefinition* prim,
274              const G4ParticleDefinition* sec,     264              const G4ParticleDefinition* sec,
275              G4int Z, G4int N,                    265              G4int Z, G4int N,
276              const G4String& ss1,                 266              const G4String& ss1,
277              const G4String& ss2)                 267              const G4String& ss2)
278 {                                                 268 {
279   G4cout << ss1 << ": " << ss2 << G4endl;         269   G4cout << ss1 << ": " << ss2 << G4endl;
280   G4cout << "For Z= " << Z << " N= " << N << "    270   G4cout << "For Z= " << Z << " N= " << N << " of ";
281   if(prim) { G4cout << prim->GetParticleName()    271   if(prim) { G4cout << prim->GetParticleName() << " "; }
282   if(sec) { G4cout << " x-section to " << sec-    272   if(sec) { G4cout << " x-section to " << sec->GetParticleName(); }
283   G4cout << G4endl;                               273   G4cout << G4endl;
284 }                                                 274 }
285                                                   275