Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/parton_string/diffraction/src/G4FTFParameters.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/parton_string/diffraction/src/G4FTFParameters.cc (Version 11.3.0) and /processes/hadronic/models/parton_string/diffraction/src/G4FTFParameters.cc (Version 9.1.p2)


  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 <utility>                                
 30                                                   
 31 #include "G4FTFParameters.hh"                     
 32                                                   
 33 #include "G4ios.hh"                               
 34 #include "G4PhysicalConstants.hh"                 
 35 #include "G4SystemOfUnits.hh"                     
 36                                                   
 37 #include "G4ParticleDefinition.hh"                
 38 #include "G4Proton.hh"                            
 39 #include "G4Neutron.hh"                           
 40 #include "G4PionPlus.hh"                          
 41 #include "G4PionMinus.hh"                         
 42 #include "G4KaonPlus.hh"                          
 43 #include "G4KaonMinus.hh"                         
 44                                                   
 45 #include "G4CrossSectionDataSetRegistry.hh"       
 46 #include "G4VComponentCrossSection.hh"            
 47 #include "G4ComponentGGHadronNucleusXsc.hh"       
 48 #include "G4LundStringFragmentation.hh"           
 49                                                   
 50 #include "G4Exp.hh"                               
 51 #include "G4Log.hh"                               
 52 #include "G4Pow.hh"                               
 53                                                   
 54 #include "G4HadronicDeveloperParameters.hh"       
 55 #include "G4HadronicParameters.hh"                
 56                                                   
 57 //============================================    
 58                                                   
 59 //#define debugFTFparams                          
 60                                                   
 61 //============================================    
 62                                                   
 63 G4FTFParameters::G4FTFParameters()                
 64 {                                                 
 65   // Set-up alternative sets of FTF parameters    
 66   // Note that the very first tune (with index    
 67   // set of parameters, which does not need to    
 68   // the for loop below starts from 1 and not     
 69   // The check whether an alternative tune has    
 70   // level of the G4FTFParamCollection::SetTun    
 71   for ( G4int indexTune = 1; indexTune < G4FTF    
 72     fArrayParCollBaryonProj[indexTune].SetTune    
 73     fArrayParCollMesonProj[indexTune].SetTune(    
 74     fArrayParCollPionProj[indexTune].SetTune(i    
 75   }                                               
 76                                                   
 77   StringMass = new G4LundStringFragmentation;     
 78   Reset();                                        
 79   csGGinstance =                                  
 80     G4CrossSectionDataSetRegistry::Instance()-    
 81   if (!csGGinstance) {                            
 82     csGGinstance = new G4ComponentGGHadronNucl    
 83   }                                               
 84                                                   
 85   EnableDiffDissociationForBGreater10 = G4Hadr    
 86                                                   
 87   // Set parameters of a string kink              
 88   SetPt2Kink( 0.0*GeV*GeV );  // To switch off    
 89   G4double Puubar( 1.0/3.0 ), Pddbar( 1.0/3.0     
 90   //G4double Puubar( 0.41 ), Pddbar( 0.41 ), P    
 91   SetQuarkProbabilitiesAtGluonSplitUp( Puubar,    
 92 }                                                 
 93                                                   
 94 //============================================    
 95                                                   
 96 void G4FTFParameters::InitForInteraction( cons    
 97                                           G4in    
 98 {                                                 
 99   Reset();                                        
100                                                   
101   G4int    ProjectilePDGcode    = particle->Ge    
102   G4int    ProjectileabsPDGcode = std::abs( Pr    
103   G4double ProjectileMass       = particle->Ge    
104   G4double ProjectileMass2      = ProjectileMa    
105                                                   
106   G4int ProjectileBaryonNumber( 0 ), AbsProjec    
107   G4bool ProjectileIsNucleus = false;             
108                                                   
109   if ( std::abs( particle->GetBaryonNumber() )    
110     ProjectileIsNucleus       = true;             
111     ProjectileBaryonNumber    = particle->GetB    
112     AbsProjectileBaryonNumber = std::abs( Proj    
113     AbsProjectileCharge       = std::abs( G4in    
114     if ( ProjectileBaryonNumber > 1 ) {           
115       ProjectilePDGcode = 2212; ProjectileabsP    
116     } else {                                      
117       ProjectilePDGcode = -2212; Projectileabs    
118     }                                             
119     ProjectileMass  = G4Proton::Proton()->GetP    
120     ProjectileMass2 = sqr( ProjectileMass );      
121   }                                               
122                                                   
123   G4double TargetMass  = G4Proton::Proton()->G    
124   G4double TargetMass2 = TargetMass * TargetMa    
125                                                   
126   G4double Plab = PlabPerParticle;                
127   G4double Elab = std::sqrt( Plab*Plab + Proje    
128   G4double KineticEnergy = Elab - ProjectileMa    
129                                                   
130   G4double S = ProjectileMass2 + TargetMass2 +    
131                                                   
132   #ifdef debugFTFparams                           
133   G4cout << "--------- FTF Parameters --------    
134          << ProjectilePDGcode << " " << Plab <    
135          << " " << KineticEnergy << G4endl <<     
136   #endif                                          
137                                                   
138   G4double Ylab, Xtotal( 0.0 ), Xelastic( 0.0     
139   G4int NumberOfTargetNucleons;                   
140                                                   
141   Ylab = 0.5 * G4Log( (Elab + Plab)/(Elab - Pl    
142                                                   
143   G4double ECMSsqr = S/GeV/GeV;                   
144   G4double SqrtS   = std::sqrt( S )/GeV;          
145                                                   
146   #ifdef debugFTFparams                           
147   G4cout << "Sqrt(s) " << SqrtS << G4endl;        
148   #endif                                          
149                                                   
150   TargetMass     /= GeV; TargetMass2     /= (G    
151   ProjectileMass /= GeV; ProjectileMass2 /= (G    
152                                                   
153   Plab /= GeV;                                    
154   G4double Xftf = 0.0;                            
155                                                   
156   G4int NumberOfTargetProtons  = theZ;            
157   G4int NumberOfTargetNeutrons = theA - theZ;     
158   NumberOfTargetNucleons = NumberOfTargetProto    
159                                                   
160   // ---------- hadron projectile ------------    
161   if ( AbsProjectileBaryonNumber <= 1 ) {  //     
162                                                   
163     // Interaction on P                           
164     G4double xTtP = csGGinstance->GetTotalIsot    
165     G4double xElP = csGGinstance->GetElasticIs    
166                                                   
167     // Interaction on N                           
168     G4double xTtN = csGGinstance->GetTotalIsot    
169     G4double xElN = csGGinstance->GetElasticIs    
170                                                   
171     // Average properties of h+N interactions     
172     Xtotal   = ( NumberOfTargetProtons * xTtP     
173     Xelastic = ( NumberOfTargetProtons * xElP     
174     Xannihilation = 0.0;                          
175                                                   
176     Xtotal /= millibarn;                          
177     Xelastic /= millibarn;                        
178                                                   
179     #ifdef debugFTFparams                         
180     G4cout<<"Estimated cross sections (total a    
181     #endif                                        
182   }                                               
183                                                   
184   // ---------- nucleus projectile -----------    
185   if ( ProjectileIsNucleus  &&  ProjectileBary    
186                                                   
187     #ifdef debugFTFparams                         
188     G4cout<<"Projectile is a nucleus: A and Z     
189     #endif                                        
190                                                   
191     const G4ParticleDefinition* Proton = G4Pro    
192     // Interaction on P                           
193     G4double XtotPP = csGGinstance->GetTotalIs    
194     G4double XelPP  = csGGinstance->GetElastic    
195                                                   
196     const G4ParticleDefinition* Neutron = G4Ne    
197     // Interaction on N                           
198     G4double XtotPN = csGGinstance->GetTotalIs    
199     G4double XelPN  = csGGinstance->GetElastic    
200                                                   
201     #ifdef debugFTFparams                         
202     G4cout << "XsPP (total and elastic) " << X    
203            << "XsPN (total and elastic) " << X    
204     #endif                                        
205                                                   
206     Xtotal = (                                    
207                   AbsProjectileCharge * Number    
208                   ( AbsProjectileBaryonNumber     
209                       NumberOfTargetNeutrons *    
210                 +                                 
211                   ( AbsProjectileCharge * Numb    
212                     ( AbsProjectileBaryonNumbe    
213                         NumberOfTargetProtons     
214                 ) / ( AbsProjectileBaryonNumbe    
215     Xelastic= (                                   
216                   AbsProjectileCharge * Number    
217                   ( AbsProjectileBaryonNumber     
218                       NumberOfTargetNeutrons *    
219                  +                                
220                   ( AbsProjectileCharge * Numb    
221                     ( AbsProjectileBaryonNumbe    
222                         NumberOfTargetProtons     
223                 ) / ( AbsProjectileBaryonNumbe    
224                                                   
225     Xannihilation = 0.0;                          
226     Xtotal /= millibarn;                          
227     Xelastic /= millibarn;                        
228   }                                               
229                                                   
230   // ---------- The projectile is anti-baryon     
231   //                     anti  Sigma^0_c          
232   if ( ProjectilePDGcode >= -4112  &&  Project    
233     // Only non-strange and strange baryons ar    
234                                                   
235     #ifdef debugFTFparams                         
236     G4cout<<"Projectile is a anti-baryon or an    
237     G4cout<<"(Only non-strange and strange bar    
238     #endif                                        
239                                                   
240     G4double X_a( 0.0 ), X_b( 0.0 ), X_c( 0.0     
241     G4double MesonProdThreshold = ProjectileMa    
242                                   ( 2.0 * 0.14    
243                                                   
244     if ( PlabPerParticle < 40.0*MeV ) { // Low    
245       Xtotal =   1512.9;    // mb                 
246       Xelastic =  473.2;    // mb                 
247       X_a =       625.1;    // mb                 
248       X_b =         9.780;  // mb                 
249       X_c =        49.989;  // mb                 
250       X_d =         6.614;  // mb                 
251     } else { // Total and elastic cross sectio    
252       G4double LogS = G4Log( ECMSsqr / 33.0625    
253       G4double Xasmpt = 36.04 + 0.304*LogS*Log    
254       LogS = G4Log( SqrtS / 20.74 );              
255       G4double Basmpt = 11.92 + 0.3036*LogS*Lo    
256       G4double R0 = std::sqrt( 0.40874044*Xasm    
257                                                   
258       G4double FlowF = SqrtS / std::sqrt( ECMS    
259                                           Targ    
260                                           - 2.    
261                                           - 2.    
262                                                   
263       Xtotal = Xasmpt * ( 1.0 + 13.55*FlowF/R0    
264                                 (1.0 - 4.47/Sq    
265                                                   
266       Xasmpt = 4.4 + 0.101*LogS*LogS;  // mb      
267       Xelastic = Xasmpt * ( 1.0 + 59.27*FlowF/    
268                                   (1.0 - 6.95/    
269                                                   
270       X_a = 25.0*FlowF;  // mb, 3-shirts diagr    
271                                                   
272       if ( SqrtS < MesonProdThreshold ) {         
273         X_b = 3.13 + 140.0*G4Pow::GetInstance(    
274         Xelastic -= 3.0*X_b;  // Xel-X(PbarP->    
275       } else {                                    
276         X_b = 6.8/SqrtS;  // mb anti-quark-qua    
277         Xelastic -= 3.0*X_b;  // Xel-X(PbarP->    
278       }                                           
279                                                   
280       X_c = 2.0*FlowF*sqr( ProjectileMass + Ta    
281                                                   
282       X_d = 23.3/ECMSsqr;  // mb anti-quark-qu    
283     }                                             
284                                                   
285     G4double Xann_on_P( 0.0), Xann_on_N( 0.0 )    
286                                                   
287     if ( ProjectilePDGcode == -2212 ) {           
288       Xann_on_P = X_a + X_b*5.0 + X_c*5.0 + X_    
289       Xann_on_N = X_a + X_b*4.0 + X_c*4.0 + X_    
290     } else if ( ProjectilePDGcode == -2112 ) {    
291       Xann_on_P = X_a + X_b*4.0 + X_c*4.0 + X_    
292       Xann_on_N = X_a + X_b*5.0 + X_c*5.0 + X_    
293     } else if ( ProjectilePDGcode == -3122 ) {    
294       Xann_on_P = X_a + X_b*3.0 + X_c*3.0 + X_    
295       Xann_on_N = X_a + X_b*3.0 + X_c*3.0 + X_    
296     } else if ( ProjectilePDGcode == -3112 ) {    
297       Xann_on_P = X_a + X_b*2.0 + X_c*2.0 + X_    
298       Xann_on_N = X_a + X_b*4.0 + X_c*4.0 + X_    
299     } else if ( ProjectilePDGcode == -3212 ) {    
300       Xann_on_P = X_a + X_b*3.0 + X_c*3.0 + X_    
301       Xann_on_N = X_a + X_b*3.0 + X_c*3.0 + X_    
302     } else if ( ProjectilePDGcode == -3222 ) {    
303       Xann_on_P = X_a + X_b*4.0 + X_c*4.0 + X_    
304       Xann_on_N = X_a + X_b*2.0 + X_c*2.0 + X_    
305     } else if ( ProjectilePDGcode == -3312 ) {    
306       Xann_on_P = X_a + X_b*1.0 + X_c*1.0 + X_    
307       Xann_on_N = X_a + X_b*2.0 + X_c*2.0 + X_    
308     } else if ( ProjectilePDGcode == -3322 ) {    
309       Xann_on_P = X_a + X_b*2.0 + X_c*2.0 + X_    
310       Xann_on_N = X_a + X_b*1.0 + X_c*1.0 + X_    
311     } else if ( ProjectilePDGcode == -3334 ) {    
312       Xann_on_P = X_a + X_b*0.0 + X_c*0.0 + X_    
313       Xann_on_N = X_a + X_b*0.0 + X_c*0.0 + X_    
314     } else {                                      
315       G4cout << "Unknown anti-baryon for FTF a    
316     }                                             
317                                                   
318     //G4cout << "Sum          " << Xann_on_P <    
319                                                   
320     if ( ! ProjectileIsNucleus ) {  // Project    
321       Xannihilation = ( NumberOfTargetProtons     
322                       / NumberOfTargetNucleons    
323     } else {  // Projectile is a nucleus          
324       Xannihilation = (                           
325                         ( AbsProjectileCharge     
326                           ( AbsProjectileBaryo    
327                           NumberOfTargetNeutro    
328                        +                          
329                         ( AbsProjectileCharge     
330                           ( AbsProjectileBaryo    
331                           NumberOfTargetProton    
332                       ) / ( AbsProjectileBaryo    
333     }                                             
334                                                   
335     //G4double Xftf = 0.0;                        
336     MesonProdThreshold = ProjectileMass + Targ    
337     if ( SqrtS > MesonProdThreshold ) {           
338       Xftf = 36.0 * ( 1.0 - MesonProdThreshold    
339     }                                             
340                                                   
341     Xtotal = Xelastic + Xannihilation + Xftf;     
342                                                   
343     #ifdef debugFTFparams                         
344     G4cout << "Plab Xtotal, Xelastic  Xinel Xf    
345            << " " << Xtotal - Xelastic << " "     
346            << "Plab Xelastic/Xtotal,  Xann/Xin    
347            << Xannihilation/(Xtotal - Xelastic    
348     #endif                                        
349                                                   
350   }                                               
351                                                   
352   if ( Xtotal == 0.0 ) {  // Projectile is und    
353                                                   
354     const G4ParticleDefinition* Proton = G4Pro    
355     // Interaction on P                           
356     G4double XtotPP = csGGinstance->GetTotalIs    
357     G4double XelPP  = csGGinstance->GetElastic    
358                                                   
359     // Interaction on N                           
360     G4double XtotPN = csGGinstance->GetTotalIs    
361     G4double XelPN  = csGGinstance->GetElastic    
362                                                   
363     Xtotal   = ( NumberOfTargetProtons  * Xtot    
364                / NumberOfTargetNucleons;          
365     Xelastic = ( NumberOfTargetProtons  * XelP    
366                / NumberOfTargetNucleons;          
367     Xannihilation = 0.0;                          
368     Xtotal /= millibarn;                          
369     Xelastic /= millibarn;                        
370   };                                              
371                                                   
372   // Geometrical parameters                       
373   SetTotalCrossSection( Xtotal );                 
374   SetElasticCrossSection( Xelastic );             
375   SetInelasticCrossSection( Xtotal - Xelastic     
376                                                   
377   // Interactions with elastic and inelastic c    
378   SetProbabilityOfElasticScatt( Xtotal, Xelast    
379                                                   
380   SetRadiusOfHNinteractions2( Xtotal/pi/10.0 )    
381                                                   
382   if ( ( Xtotal - Xelastic ) == 0.0 ) {           
383     SetProbabilityOfAnnihilation( 0.0 );          
384   } else {                                        
385     SetProbabilityOfAnnihilation( Xannihilatio    
386   }                                               
387                                                   
388   if(Xelastic > 0.0) {                            
389     SetSlope( Xtotal*Xtotal/16.0/pi/Xelastic/0    
390                                                   
391     // Parameters of elastic scattering           
392     // Gaussian parametrization of elastic sca    
393     SetAvaragePt2ofElasticScattering( 1.0/( Xt    
394   } else {                                        
395     SetSlope(1.0);                                
396     SetAvaragePt2ofElasticScattering( 0.0);       
397   }                                               
398   SetGamma0( GetSlope()*Xtotal/10.0/2.0/pi );     
399                                                   
400   G4double Xinel = Xtotal - Xelastic;             
401                                                   
402   #ifdef debugFTFparams                           
403   G4cout<< "Slope of hN elastic scattering" <<    
404   G4cout << "AvaragePt2ofElasticScattering " <    
405   G4cout<<"Parameters of excitation for projec    
406   #endif                                          
407                                                   
408   if ( (ProjectilePDGcode == 2212) || (Project    
409                                                   
410     const G4int indexTune = G4FTFTunings::Inst    
411                                                   
412     // A process probability is parameterized     
413     // y is a rapidity of a partcle in the tar    
414                                                   
415     //        Proc#   A1      B1            A2    
416     /* original hadr-string-diff-V10-03-07 (si    
417     SetParams( 0,     13.71, 1.75,          -2    
418     SetParams( 1,      25.0, 1.0,           -5    
419     SetParams( 2, 6.0/Xinel, 0.0 ,-6.0/Xinel*1    
420     SetParams( 3, 6.0/Xinel, 0.0 ,-6.0/Xinel*1    
421     SetParams( 4,       1.0, 0.0 ,          -2    
422     */                                            
423                                                   
424     //         Proc#                              
425     SetParams( 0, fArrayParCollBaryonProj[inde    
426             fArrayParCollBaryonProj[indexTune]    
427       fArrayParCollBaryonProj[indexTune].GetPr    
428             fArrayParCollBaryonProj[indexTune]    
429       fArrayParCollBaryonProj[indexTune].GetPr    
430             fArrayParCollBaryonProj[indexTune]    
431       fArrayParCollBaryonProj[indexTune].GetPr    
432     SetParams( 1, fArrayParCollBaryonProj[inde    
433             fArrayParCollBaryonProj[indexTune]    
434       fArrayParCollBaryonProj[indexTune].GetPr    
435             fArrayParCollBaryonProj[indexTune]    
436       fArrayParCollBaryonProj[indexTune].GetPr    
437             fArrayParCollBaryonProj[indexTune]    
438       fArrayParCollBaryonProj[indexTune].GetPr    
439     if ( Xinel > 0.0 ) {                          
440       SetParams( 2, 6.0/Xinel, 0.0, -6.0/Xinel    
441       SetParams( 3, 6.0/Xinel, 0.0, -6.0/Xinel    
442                                                   
443       SetParams( 4, fArrayParCollBaryonProj[in    
444         fArrayParCollBaryonProj[indexTune].Get    
445         fArrayParCollBaryonProj[indexTune].Get    
446         fArrayParCollBaryonProj[indexTune].Get    
447         fArrayParCollBaryonProj[indexTune].Get    
448         fArrayParCollBaryonProj[indexTune].Get    
449         fArrayParCollBaryonProj[indexTune].Get    
450     } else {  // if Xinel=0., zero everything     
451       SetParams( 2, 0.0, 0.0, 0.0, 0.0, 0.0, 0    
452       SetParams( 3, 0.0, 0.0, 0.0, 0.0, 0.0, 0    
453       SetParams( 4, 0.0, 0.0, 0.0, 0.0, 0.0, 0    
454     }                                             
455                                                   
456     if ( (AbsProjectileBaryonNumber > 10 || Nu    
457       // It is not decided what to do with dif    
458       // For the moment both ProjDiffDisso & T    
459       // so both projectile and target diffrac    
460       if ( ! fArrayParCollBaryonProj[indexTune    
461          SetParams( 2, 0.0, 0.0, 0.0, 0.0, 0.0    
462       if ( ! fArrayParCollBaryonProj[indexTune    
463          SetParams( 3, 0.0, 0.0, 0.0, 0.0, 0.0    
464     }                                             
465                                                   
466     SetDeltaProbAtQuarkExchange( fArrayParColl    
467                                                   
468     if ( NumberOfTargetNucleons > 26 ) {          
469       SetProbOfSameQuarkExchange( 1.0 );          
470     } else {                                      
471       SetProbOfSameQuarkExchange( fArrayParCol    
472     }                                             
473                                                   
474     SetProjMinDiffMass(    fArrayParCollBaryon    
475     SetProjMinNonDiffMass( fArrayParCollBaryon    
476                                                   
477     SetTarMinDiffMass(     fArrayParCollBaryon    
478     SetTarMinNonDiffMass(  fArrayParCollBaryon    
479                                                   
480     SetAveragePt2(         fArrayParCollBaryon    
481     SetProbLogDistrPrD(    fArrayParCollBaryon    
482     SetProbLogDistr(       fArrayParCollBaryon    
483                                                   
484   } else if ( ProjectilePDGcode == -2212  ||      
485                                                   
486     // Below, in the call to the G4FTFTunings:    
487     // as projectile, instead of the real one,    
488     // we assume the same treatment for anti_p    
489     // whereas all other parameters for anti_p    
490     const G4int indexTune = G4FTFTunings::Inst    
491                                                   
492     //        Proc#   A1      B1            A2    
493     SetParams( 0,      0.0 , 0.0 ,           0    
494     SetParams( 1,      0.0 , 0.0 ,           0    
495     if ( Xinel > 0.) {                            
496       SetParams( 2, 6.0/Xinel, 0.0 ,-6.0/Xinel    
497       SetParams( 3, 6.0/Xinel, 0.0 ,-6.0/Xinel    
498       SetParams( 4,       1.0, 0.0 ,              
499     } else {                                      
500       SetParams( 2, 0.0, 0.0, 0.0, 0.0, 0.0, 0    
501       SetParams( 3, 0.0, 0.0, 0.0, 0.0, 0.0, 0    
502       SetParams( 4, 0.0, 0.0, 0.0, 0.0, 0.0, 0    
503     }                                             
504                                                   
505     if ( AbsProjectileBaryonNumber > 10  ||  N    
506       // It is not decided what to do with dif    
507       // For the moment both ProjDiffDisso & T    
508       // so both projectile and target diffrac    
509       if ( ! fArrayParCollBaryonProj[indexTune    
510          SetParams( 2,       0.0, 0.0 ,           
511       if ( ! fArrayParCollBaryonProj[indexTune    
512          SetParams( 3,       0.0, 0.0 ,           
513     }                                             
514                                                   
515     SetDeltaProbAtQuarkExchange( 0.0 );           
516     SetProbOfSameQuarkExchange( 0.0 );            
517     SetProjMinDiffMass( ProjectileMass + 0.22     
518     SetProjMinNonDiffMass( ProjectileMass + 0.    
519     SetTarMinDiffMass( TargetMass + 0.22 );       
520     SetTarMinNonDiffMass( TargetMass + 0.22 );    
521     SetAveragePt2( 0.3 );                         
522     SetProbLogDistrPrD( 0.55 );                   
523     SetProbLogDistr( 0.55 );                      
524                                                   
525   } else if ( ProjectileabsPDGcode == 211  ||     
526                                                   
527     const G4int indexTune = G4FTFTunings::Inst    
528                                                   
529     //        Proc#   A1      B1            A2    
530     /* --> original code                          
531     SetParams( 0,  150.0,    1.8 ,       -247.    
532     SetParams( 1,   5.77,    0.6 ,        -5.7    
533     SetParams( 2,   2.27,    0.5 ,     -98052.    
534     SetParams( 3,    7.0,    0.9,        -85.2    
535     SetParams( 4,    1.0,    0.0 ,       -11.0    
536     */                                            
537     //         Proc#                              
538     SetParams( 0, fArrayParCollPionProj[indexT    
539             fArrayParCollPionProj[indexTune].G    
540       fArrayParCollPionProj[indexTune].GetProc    
541             fArrayParCollPionProj[indexTune].G    
542       fArrayParCollPionProj[indexTune].GetProc    
543             fArrayParCollPionProj[indexTune].G    
544       fArrayParCollPionProj[indexTune].GetProc    
545     SetParams( 1, fArrayParCollPionProj[indexT    
546             fArrayParCollPionProj[indexTune].G    
547       fArrayParCollPionProj[indexTune].GetProc    
548             fArrayParCollPionProj[indexTune].G    
549       fArrayParCollPionProj[indexTune].GetProc    
550             fArrayParCollPionProj[indexTune].G    
551       fArrayParCollPionProj[indexTune].GetProc    
552     SetParams( 2, fArrayParCollPionProj[indexT    
553             fArrayParCollPionProj[indexTune].G    
554       fArrayParCollPionProj[indexTune].GetProc    
555             fArrayParCollPionProj[indexTune].G    
556       fArrayParCollPionProj[indexTune].GetProc    
557             fArrayParCollPionProj[indexTune].G    
558       fArrayParCollPionProj[indexTune].GetProc    
559     SetParams( 3, fArrayParCollPionProj[indexT    
560             fArrayParCollPionProj[indexTune].G    
561       fArrayParCollPionProj[indexTune].GetProc    
562             fArrayParCollPionProj[indexTune].G    
563       fArrayParCollPionProj[indexTune].GetProc    
564             fArrayParCollPionProj[indexTune].G    
565       fArrayParCollPionProj[indexTune].GetProc    
566     SetParams( 4, fArrayParCollPionProj[indexT    
567             fArrayParCollPionProj[indexTune].G    
568       fArrayParCollPionProj[indexTune].GetProc    
569             fArrayParCollPionProj[indexTune].G    
570       fArrayParCollPionProj[indexTune].GetProc    
571             fArrayParCollPionProj[indexTune].G    
572       fArrayParCollPionProj[indexTune].GetProc    
573                                                   
574     // NOTE: how can it be |ProjectileBaryonNu    
575     //                                            
576     if ( AbsProjectileBaryonNumber > 10  ||  N    
577        if ( ! fArrayParCollPionProj[indexTune]    
578           SetParams( 2,      0.0 , 0.0 ,          
579        if ( ! fArrayParCollPionProj[indexTune]    
580           SetParams( 3,      0.0 , 0.0 ,          
581     }                                             
582                                                   
583     /* original code -->                          
584     SetDeltaProbAtQuarkExchange( 0.56 );          
585     SetProjMinDiffMass( 1.0 );            // G    
586     SetProjMinNonDiffMass( 1.0 );         // G    
587     SetTarMinDiffMass( 1.16 );            // G    
588     SetTarMinNonDiffMass( 1.16 );         // G    
589     SetAveragePt2( 0.3 );                 // G    
590     SetProbLogDistrPrD( 0.55 );                   
591     SetProbLogDistr( 0.55 );                      
592     */                                            
593                                                   
594     // JVY update, Aug.8, 2018 --> Feb.14, 201    
595     //                                            
596     SetDeltaProbAtQuarkExchange( fArrayParColl    
597     SetProjMinDiffMass( fArrayParCollPionProj[    
598     SetProjMinNonDiffMass( fArrayParCollPionPr    
599     SetTarMinDiffMass( fArrayParCollPionProj[i    
600     SetTarMinNonDiffMass( fArrayParCollPionPro    
601     SetAveragePt2( fArrayParCollPionProj[index    
602     SetProbLogDistrPrD( fArrayParCollPionProj[    
603     SetProbLogDistr( fArrayParCollPionProj[ind    
604                                                   
605     // ---> end update                            
606                                                   
607   } else if ( ProjectileabsPDGcode == 321  ||     
608               ProjectilePDGcode == 130     ||     
609                                                   
610     //        Proc#   A1      B1            A2    
611     SetParams( 0,     60.0 , 2.5 ,           0    
612     SetParams( 1,      6.0 , 1.0 ,         -24    
613     SetParams( 2,      2.76, 1.2 ,         -22    
614     SetParams( 3,      1.09, 0.5 ,          -8    
615     SetParams( 4,       1.0, 0.0 ,           0    
616     if ( AbsProjectileBaryonNumber > 10  ||  N    
617       SetParams( 2,      0.0 , 0.0 ,              
618       SetParams( 3,      0.0 , 0.0 ,              
619     }                                             
620                                                   
621     SetDeltaProbAtQuarkExchange( 0.6 );           
622     SetProjMinDiffMass( 0.7 );     // GeV         
623     SetProjMinNonDiffMass( 0.7 );  // GeV         
624     SetTarMinDiffMass( 1.16 );     // GeV         
625     SetTarMinNonDiffMass( 1.16 );  // GeV         
626     SetAveragePt2( 0.3 );          // GeV^2       
627     SetProbLogDistrPrD( 0.55 );                   
628     SetProbLogDistr( 0.55 );                      
629                                                   
630   } else {  // Projectile is not p, n, Pi0, Pi    
631                                                   
632     if ( ProjectileabsPDGcode > 1000 ) {  // T    
633       //        Proc#   A1      B1                
634       SetParams( 0,     13.71, 1.75,              
635       SetParams( 1,      25.0, 1.0,          -    
636       if ( Xinel > 0.) {                          
637         SetParams( 2, 6.0/Xinel, 0.0 ,-6.0/Xin    
638         SetParams( 3, 6.0/Xinel, 0.0 ,-6.0/Xin    
639         SetParams( 4,       1.0, 0.0 ,            
640       } else {                                    
641         SetParams( 2, 0.0, 0.0 ,0.0, 0.0 , 0.0    
642         SetParams( 3, 0.0, 0.0 ,0.0, 0.0 , 0.0    
643         SetParams( 4, 0.0, 0.0 ,0.0, 0.0 , 0.0    
644       }                                           
645                                                   
646     } else {  // The projectile is a meson as     
647       //        Proc#   A1      B1                
648       SetParams( 0,     60.0 , 2.5 ,              
649       SetParams( 1,      6.0 , 1.0 ,         -    
650       SetParams( 2,      2.76, 1.2 ,         -    
651       SetParams( 3,      1.09, 0.5 ,              
652       SetParams( 4,       1.0, 0.0 ,              
653     }                                             
654                                                   
655     if ( AbsProjectileBaryonNumber > 10  ||  N    
656       SetParams( 2,      0.0 , 0.0 ,              
657       SetParams( 3,      0.0 , 0.0 ,              
658     }                                             
659                                                   
660     SetDeltaProbAtQuarkExchange( 0.0 );           
661     SetProbOfSameQuarkExchange( 0.0 );            
662                                                   
663     SetProjMinDiffMass(    GetMinMass(particle    
664     SetProjMinNonDiffMass( GetMinMass(particle    
665                                                   
666     const G4ParticleDefinition* Neutron = G4Ne    
667     SetTarMinDiffMass(    GetMinMass(Neutron)/    
668     SetTarMinNonDiffMass( GetMinMass(Neutron)/    
669                                                   
670     SetAveragePt2( 0.3 );  // GeV^2               
671     SetProbLogDistrPrD( 0.55 );                   
672     SetProbLogDistr( 0.55 );                      
673                                                   
674   }                                               
675                                                   
676   #ifdef debugFTFparams                           
677   G4cout<<"DeltaProbAtQuarkExchange "<< GetDel    
678   G4cout<<"ProbOfSameQuarkExchange  "<< GetPro    
679   G4cout<<"ProjMinDiffMass          "<< GetPro    
680   G4cout<<"ProjMinNonDiffMass       "<< GetPro    
681   G4cout<<"TarMinDiffMass           "<< GetTar    
682   G4cout<<"TarMinNonDiffMass        "<< GetTar    
683   G4cout<<"AveragePt2               "<< GetAve    
684   G4cout<<"ProbLogDistrPrD          "<< GetPro    
685   G4cout<<"ProbLogDistrTrD          "<< GetPro    
686   #endif                                          
687                                                   
688   // Set parameters of nuclear destruction        
689                                                   
690   if ( ProjectileabsPDGcode < 1000 ) {  // Mes    
691                                                   
692     const G4int indexTune = G4FTFTunings::Inst    
693                                                   
694     SetMaxNumberOfCollisions( Plab, 2.0 );  //    
695     //                                            
696     // target destruction                         
697     //                                            
698     /* original code --->                         
699     SetCofNuclearDestruction( 0.00481*G4double    
700             G4Exp( 4.0*(Ylab - 2.1) )/( 1.0 +     
701                                                   
702     SetR2ofNuclearDestruction( 1.5*fermi*fermi    
703     SetDofNuclearDestruction( 0.3 );              
704     SetPt2ofNuclearDestruction( ( 0.035 + 0.04    
705                                          ( 1.0    
706     SetMaxPt2ofNuclearDestruction( 1.0*GeV*GeV    
707     SetExcitationEnergyPerWoundedNucleon( 40.0    
708     */                                            
709     double coeff = fArrayParCollMesonProj[inde    
710     //                                            
711     // NOTE (JVY): Set this switch to false/tr    
712     //                                            
713     if ( fArrayParCollMesonProj[indexTune].IsN    
714     {                                             
715       coeff *= G4double(NumberOfTargetNucleons    
716     }                                             
717     double exfactor = G4Exp( fArrayParCollMeso    
718                            * (Ylab-fArrayParCo    
719     coeff *= exfactor;                            
720     coeff /= ( 1.+ exfactor );                    
721                                                   
722     SetCofNuclearDestruction( coeff );            
723                                                   
724     SetR2ofNuclearDestruction( fArrayParCollMe    
725     SetDofNuclearDestruction( fArrayParCollMes    
726     coeff = fArrayParCollMesonProj[indexTune].    
727     exfactor = G4Exp( fArrayParCollMesonProj[i    
728                     * (Ylab-fArrayParCollMeson    
729     coeff *= exfactor;                            
730     coeff /= ( 1. + exfactor );                   
731     SetPt2ofNuclearDestruction( (fArrayParColl    
732                                                   
733     SetMaxPt2ofNuclearDestruction( fArrayParCo    
734     SetExcitationEnergyPerWoundedNucleon( fArr    
735                                                   
736   } else if ( ProjectilePDGcode == -2212  ||      
737                                                   
738     SetMaxNumberOfCollisions( Plab, 2.0 );        
739                                                   
740     SetCofNuclearDestruction( 0.00481*G4double    
741            G4Exp( 4.0*(Ylab - 2.1) )/( 1.0 + G    
742     SetR2ofNuclearDestruction( 1.5*fermi*fermi    
743     SetDofNuclearDestruction( 0.3 );              
744     SetPt2ofNuclearDestruction( ( 0.035 + 0.04    
745                                          ( 1.0    
746     SetMaxPt2ofNuclearDestruction( 1.0*GeV*GeV    
747     SetExcitationEnergyPerWoundedNucleon( 40.0    
748     if ( Plab < 2.0 ) {  // 2 GeV/c               
749       // For slow anti-baryon we have to garan    
750       SetCofNuclearDestruction( 0.0 );            
751       SetR2ofNuclearDestruction( 1.5*fermi*fer    
752                                                   
753       SetDofNuclearDestruction( 0.01 );           
754       SetPt2ofNuclearDestruction( 0.035*GeV*Ge    
755       SetMaxPt2ofNuclearDestruction( 0.04*GeV*    
756     }                                             
757                                                   
758   } else {  // Projectile baryon assumed          
759                                                   
760     // Below, in the call to the G4FTFTunings:    
761     // as projectile, instead of the real one,    
762     // destruction, we assume for this categor    
763     // as for "baryon".                           
764     const G4int indexTune = G4FTFTunings::Inst    
765                                                   
766     // NOTE (JVY) FIXME !!! Will decide later     
767     //                                            
768     SetMaxNumberOfCollisions( Plab, 2.0 );        
769                                                   
770     // projectile destruction - does NOT reall    
771     //                                            
772     double coeff = 0.;                            
773     coeff = fArrayParCollBaryonProj[indexTune]    
774     //                                            
775     // NOTE (JVY): Set this switch to false/tr    
776     //                                            
777     if ( fArrayParCollBaryonProj[indexTune].Is    
778     {                                             
779       coeff *= G4double(AbsProjectileBaryonNum    
780     }                                             
781     double exfactor = G4Exp( fArrayParCollBary    
782            (Ylab-fArrayParCollBaryonProj[index    
783     coeff *= exfactor;                            
784     coeff /= ( 1.+ exfactor );                    
785     SetCofNuclearDestructionPr( coeff );          
786                                                   
787     // target desctruction                        
788     //                                            
789     coeff = fArrayParCollBaryonProj[indexTune]    
790     //                                            
791     // NOTE (JVY): Set this switch to false/tr    
792     //                                            
793     if ( fArrayParCollBaryonProj[indexTune].Is    
794     {                                             
795       coeff *= G4double(NumberOfTargetNucleons    
796     }                                             
797     exfactor = G4Exp( fArrayParCollBaryonProj[    
798           (Ylab-fArrayParCollBaryonProj[indexT    
799     coeff *= exfactor;                            
800     coeff /= ( 1.+ exfactor );                    
801     SetCofNuclearDestruction(   coeff );          
802                                                   
803     SetR2ofNuclearDestruction( fArrayParCollBa    
804     SetDofNuclearDestruction( fArrayParCollBar    
805                                                   
806     coeff = fArrayParCollBaryonProj[indexTune]    
807     exfactor = G4Exp( fArrayParCollBaryonProj[    
808           (Ylab-fArrayParCollBaryonProj[indexT    
809     coeff *= exfactor;                            
810     coeff /= ( 1. + exfactor );                   
811     SetPt2ofNuclearDestruction( (fArrayParColl    
812                                                   
813     SetMaxPt2ofNuclearDestruction( fArrayParCo    
814     SetExcitationEnergyPerWoundedNucleon( fArr    
815                                                   
816   }                                               
817                                                   
818   #ifdef debugFTFparams                           
819   G4cout<<"CofNuclearDestructionPr           "    
820   G4cout<<"CofNuclearDestructionTr           "    
821   G4cout<<"R2ofNuclearDestruction            "    
822   G4cout<<"DofNuclearDestruction             "    
823   G4cout<<"Pt2ofNuclearDestruction           "    
824   G4cout<<"ExcitationEnergyPerWoundedNucleon "    
825   #endif                                          
826                                                   
827   //SetCofNuclearDestruction( 0.47*G4Exp( 2.0*    
828   //SetPt2ofNuclearDestruction( ( 0.035 + 0.1*    
829                                                   
830   //SetMagQuarkExchange( 120.0 );       // 210    
831   //SetSlopeQuarkExchange( 2.0 );                 
832   //SetDeltaProbAtQuarkExchange( 0.6 );           
833   //SetProjMinDiffMass( 0.7 );          // GeV    
834   //SetProjMinNonDiffMass( 0.7 );       // GeV    
835   //SetProbabilityOfProjDiff( 0.0);     // 0.8    
836   //SetTarMinDiffMass( 1.1 );           // GeV    
837   //SetTarMinNonDiffMass( 1.1 );        // GeV    
838   //SetProbabilityOfTarDiff( 0.0 );     // 0.8    
839                                                   
840   //SetAveragePt2( 0.0 );               // GeV    
841   //------------------------------------          
842   //SetProbabilityOfElasticScatt( 1.0, 1.0);      
843   //SetProbabilityOfProjDiff( 1.0*0.62*G4Pow::    
844   //SetProbabilityOfTarDiff( 4.0*0.62*G4Pow::G    
845   //SetAveragePt2( 0.3 );                         
846   //SetAvaragePt2ofElasticScattering( 0.0 );      
847                                                   
848   //SetMaxNumberOfCollisions( Plab, 6.0 ); //(    
849   //SetAveragePt2( 0.15 );                        
850   //SetCofNuclearDestruction(-1.);//( 0.75 );     
851   //SetExcitationEnergyPerWoundedNucleon(0.);/    
852   //SetDofNuclearDestruction(0.);//( 0.2 ); //    
853                                                   
854   /*                                              
855   SetAveragePt2(0.3);                             
856   SetCofNuclearDestructionPr(0.);                 
857   SetCofNuclearDestruction(0.);             //    
858   SetExcitationEnergyPerWoundedNucleon(0.); //    
859   SetDofNuclearDestruction(0.);             //    
860   SetPt2ofNuclearDestruction(0.);           //    
861   */                                              
862                                                   
863   //SetExcitationEnergyPerWoundedNucleon(0.001    
864   //SetPt2Kink( 0.0*GeV*GeV );                    
865                                                   
866   //SetRadiusOfHNinteractions2( Xtotal/pi/10.0    
867   //SetRadiusOfHNinteractions2( (Xtotal - Xela    
868   //SetProbabilityOfElasticScatt( 1.0, 0.0);      
869   /*                                              
870   G4cout << "Pt2 " << GetAveragePt2()<<" "<<Ge    
871   G4cout << "Cnd " << GetCofNuclearDestruction    
872   G4cout << "Dnd " << GetDofNuclearDestruction    
873   G4cout << "Pt2 " << GetPt2ofNuclearDestructi    
874   */                                              
875                                                   
876 }                                                 
877                                                   
878 //============================================    
879                                                   
880 G4double G4FTFParameters::GetMinMass( const G4    
881    // The code is used for estimating the mini    
882    // The indices used for minMassQDiQStr must    
883    // quarks: d, u, s, c and b; enforcing this    
884    G4double EstimatedMass = 0.0;                  
885    G4int partID = std::abs(aParticle->GetPDGEn    
886    G4int Qleft  = std::max(  partID/100,     1    
887    G4int Qright = std::max( (partID/ 10)%10, 1    
888    if        ( Qleft < 6  &&  Qright < 6 ) {      
889      EstimatedMass = StringMass->minMassQQbarS    
890    } else if ( Qleft < 6  &&  Qright > 6 ) {      
891      G4int q1 = std::max( std::min( Qright/10,    
892      G4int q2 = std::max( std::min( Qright%10,    
893      EstimatedMass = StringMass->minMassQDiQSt    
894    } else if ( Qleft > 6  &&  Qright < 6 ) {      
895      G4int q1 = std::max( std::min( Qleft/10,     
896      G4int q2 = std::max( std::min( Qleft%10,     
897      EstimatedMass = StringMass->minMassQDiQSt    
898    }                                              
899    return EstimatedMass;                          
900 }                                                 
901                                                   
902 //============================================    
903                                                   
904 G4double G4FTFParameters::GetProcProb( const G    
905   G4double Prob( 0.0 );                           
906   if ( y < ProcParams[ProcN][6] ) {               
907     Prob = ProcParams[ProcN][5];                  
908     if (Prob < 0.) Prob=0.;                       
909     return Prob;                                  
910   }                                               
911   Prob = ProcParams[ProcN][0] * G4Exp( -ProcPa    
912          ProcParams[ProcN][2] * G4Exp( -ProcPa    
913          ProcParams[ProcN][4];                    
914   if (Prob < 0.) Prob=0.;                         
915   return Prob;                                    
916 }                                                 
917                                                   
918 //============================================    
919                                                   
920 G4FTFParameters::~G4FTFParameters() {             
921   if ( StringMass ) delete StringMass;            
922 }                                                 
923                                                   
924 //============================================    
925                                                   
926 void G4FTFParameters::Reset()                     
927 {                                                 
928   FTFhNcmsEnergy  = 0.0;                          
929   FTFXtotal = 0.0;                                
930   FTFXelastic = 0.0;                              
931   FTFXinelastic = 0.0;                            
932   FTFXannihilation = 0.0;                         
933   ProbabilityOfAnnihilation = 0.0;                
934   ProbabilityOfElasticScatt  = 0.0;               
935   RadiusOfHNinteractions2 = 0.0;                  
936   FTFSlope = 0.0;                                 
937   AvaragePt2ofElasticScattering = 0.0;            
938   FTFGamma0 = 0.0;                                
939   DeltaProbAtQuarkExchange = 0.0;                 
940   ProbOfSameQuarkExchange = 0.0;                  
941   ProjMinDiffMass = 0.0;                          
942   ProjMinNonDiffMass = 0.0;                       
943   ProbLogDistrPrD = 0.0;                          
944   TarMinDiffMass = 0.0;                           
945   TarMinNonDiffMass = 0.0;                        
946   AveragePt2 = 0.0;                               
947   ProbLogDistr  = 0.0;                            
948   Pt2kink = 0.0;                                  
949   MaxNumberOfCollisions = 0.0;                    
950   ProbOfInelInteraction = 0.0;                    
951   CofNuclearDestructionPr = 0.0;                  
952   CofNuclearDestruction = 0.0;                    
953   R2ofNuclearDestruction  = 0.0;                  
954   ExcitationEnergyPerWoundedNucleon  = 0.0;       
955   DofNuclearDestruction  = 0.0;                   
956   Pt2ofNuclearDestruction = 0.0;                  
957   MaxPt2ofNuclearDestruction = 0.0;               
958                                                   
959   for ( G4int i = 0; i < 4; i++ ) {               
960     for ( G4int j = 0; j < 7; j++ ) {             
961       ProcParams[i][j] = 0.0;                     
962     }                                             
963   }                                               
964                                                   
965   return;                                         
966 }                                                 
967                                                   
968