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