Geant4 Cross Reference

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


  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 // ClassName:      G4FTFTunings                   
 30 //                                                
 31 // Author:         2022 Alberto Ribon             
 32 //                                                
 33 // Description:    Singleton to keep sets of p    
 34 //                 for the FTF model.             
 35 //                                                
 36 //                 Please NOTE that, as of now    
 37 //                 can be selected/applied; at    
 38 //                 will not results in any err    
 39 //                 down the workflow only the     
 40 //                 will be used.                  
 41 //                                                
 42 //                 To use one of the tunes of     
 43 //                 change anything in this cla    
 44 //                 following two UI commands,     
 45 //                     /process/had/models/ftf    
 46 //                 or  /process/had/models/ftf    
 47 //                 for instance:                  
 48 //                     /process/had/models/ftf    
 49 //                     or                         
 50 //                     /process/had/models/ftf    
 51 //                     or                         
 52 //                     /process/had/models/ftf    
 53 //                 or                             
 54 //                     /process/had/models/ftf    
 55 //                     or                         
 56 //                     /process/had/models/ftf    
 57 //                     or                         
 58 //                     /process/had/models/ftf    
 59 //                                                
 60 //                 If you want to create a new    
 61 //                 this class as follows: look    
 62 //                 available; if you find it,     
 63 //                 std::array fNameOfTunes and    
 64 //                 in the methods: G4FTFParamC    
 65 //                                 G4FTFParamC    
 66 //                                 G4FTFParamC    
 67 //                                 G4FTFParamC    
 68 //                 Note that you need to set e    
 69 //                 with non-default values - a    
 70 //                 corresponding default value    
 71 //                 If you don't find available    
 72 //                 to increase by (at least) 1    
 73 //                 the corresponding "SetTuneN    
 74 //                   G4FTFParamCollection, G4F    
 75 //                   G4FTFParamCollMesonProj,     
 76 //                                                
 77 //                 In order to explore some va    
 78 //                 (for instance to find out a    
 79 //                 (via UI command, as explain    
 80 //                 from which you want to star    
 81 //                 then set the values of the     
 82 //                 via the following C++ code     
 83 //                   G4HadronicDeveloperParame    
 84 //                                                
 85 //                 Note: in its current, first    
 86 //                       any FTF tune is appli    
 87 //                       projectile hadrons an    
 88 //                       energy.                  
 89 //                       In future versions, w    
 90 //                       are meant for specifi    
 91 //                       intervals of kinetic     
 92 //                       medium-energy, high-e    
 93 //                                                
 94 //                 Note: a few classes (writte    
 95 //                       G4FTFParameters, rela    
 96 //                       the FTF models, have     
 97 //                       source files of the c    
 98 //                       (G4FTFTunings) class,    
 99 //                                                
100 // Modified:                                      
101 //                                                
102 //--------------------------------------------    
103                                                   
104 #include "G4FTFTunings.hh"                        
105 #include <CLHEP/Units/PhysicalConstants.h>        
106 #include "G4ApplicationState.hh"                  
107 #include "G4StateManager.hh"                      
108 #include "G4HadronicDeveloperParameters.hh"       
109 #include "G4ParticleDefinition.hh"                
110 #include "G4FTFTuningsMessenger.hh"               
111 #include "G4Threading.hh"                         
112 #include "G4AutoLock.hh"                          
113                                                   
114                                                   
115                                                   
116 G4FTFTunings* G4FTFTunings::sInstance = nullpt    
117                                                   
118 namespace { G4Mutex paramMutex = G4MUTEX_INITI    
119                                                   
120                                                   
121 G4FTFTunings* G4FTFTunings::Instance() {          
122   if ( sInstance == nullptr ) {                   
123     G4AutoLock l( &paramMutex );                  
124     if ( sInstance == nullptr ) {                 
125       static G4FTFTunings theFTFTuningsObject;    
126       sInstance = &theFTFTuningsObject;           
127     }                                             
128     l.unlock();                                   
129   }                                               
130   return sInstance;                               
131 }                                                 
132                                                   
133                                                   
134 G4FTFTunings::~G4FTFTunings() {                   
135   delete fMessenger;                              
136 }                                                 
137                                                   
138                                                   
139 G4FTFTunings::G4FTFTunings() {                    
140   fMessenger = new G4FTFTuningsMessenger;         
141 }                                                 
142                                                   
143                                                   
144 G4bool G4FTFTunings::IsLocked() const {           
145   return ( ! G4Threading::IsMasterThread() ||     
146            G4StateManager::GetStateManager()->    
147 }                                                 
148                                                   
149                                                   
150 void G4FTFTunings::SetTuneApplicabilityState(     
151   if ( IsLocked() || index < 0 || index >= sNu    
152   fApplicabilityOfTunes[index] = state;           
153 }                                                 
154                                                   
155                                                   
156 G4int G4FTFTunings::GetIndexTune( const G4Part    
157   // For the time being, select the first alte    
158   // If nothing is found, then returns 0 (whic    
159   G4int indexTune = 0;                            
160   for ( G4int i = 1; i < sNumberOfTunes; ++i )    
161     if ( GetTuneApplicabilityState(i) != 0 ) {    
162       indexTune = i;                              
163       break;                                      
164     }                                             
165   }                                               
166                                                   
167   /* For the future                               
168   G4int pdgCode = std::abs( particleDef->GetPD    
169   if ( particleDef != nullptr  &&  ekin >= 0.0    
170     G4bool isLowEnergy = ( ekin < fLowEnergyTh    
171     G4bool isHighEnergy = ( ekin > fHighEnergy    
172     G4bool isMediumEnergy = ( ( ! isLowEnergy     
173     G4bool isMeson = ( pdgCode < 1000 );          
174     G4bool isPion = ( pdgCode == 211 || pdgCod    
175     G4bool isKaon = ( pdgCode == 321 || pdgCod    
176     G4bool isBaryon = ( pdgCode > 1000 );         
177     G4bool isNucleon = ( pdgCode == 2212 || pd    
178     G4bool isAntiBaryon = particleDef->GetBary    
179     // Based on the projectile type, its kinet    
180     // of each tune, find the right tune to be    
181     // ...                                        
182   }                                               
183   */                                              
184                                                   
185   //G4cout << "G4FTFTunings::GetIndexTune : pr    
186   //       << "  ekin[MeV]=" << ekin << " -> i    
187   //       << "  " << fNameOfTunes[indexTune]     
188                                                   
189   return indexTune;                               
190 }                                                 
191                                                   
192                                                   
193 //============================================    
194                                                   
195 G4HadronicDeveloperParameters& HDP = G4Hadroni    
196                                                   
197                                                   
198 class G4FTFSettingDefaultHDP {                    
199   public:                                         
200     G4FTFSettingDefaultHDP() {                    
201       // Cross sections for elementary process    
202       //                                          
203       // these are for Inelastic interactions,    
204       // for elastic, all the A's & B's, Atop     
205       // general formula: Pp = A1*exp(B1*Y) +     
206       // but if Y<Ymin, then Pp=max(0.,Atop)      
207       // for details, see also G4FTFParameters    
208       //                                          
209       // Baryons                                  
210       /* JVY, Oct. 31, 2017: Per Alberto R. &     
211       /* JVY, June 11, 2020: try to open up...    
212       // Process=0 --> Qexchg w/o excitation      
213       HDP.SetDefault( "FTF_BARYON_PROC0_A1",      
214       HDP.SetDefault( "FTF_BARYON_PROC0_B1",      
215       HDP.SetDefault( "FTF_BARYON_PROC0_A2", -    
216       HDP.SetDefault( "FTF_BARYON_PROC0_B2",      
217       HDP.SetDefault( "FTF_BARYON_PROC0_A3",      
218       HDP.SetDefault( "FTF_BARYON_PROC0_ATOP",    
219       HDP.SetDefault( "FTF_BARYON_PROC0_YMIN",    
220       // Process=1 --> Qexchg w/excitation        
221       HDP.SetDefault( "FTF_BARYON_PROC1_A1",      
222       HDP.SetDefault( "FTF_BARYON_PROC1_B1",      
223       HDP.SetDefault( "FTF_BARYON_PROC1_A2", -    
224       HDP.SetDefault( "FTF_BARYON_PROC1_B2",      
225       HDP.SetDefault( "FTF_BARYON_PROC1_A3",      
226       HDP.SetDefault( "FTF_BARYON_PROC1_ATOP",    
227       HDP.SetDefault( "FTF_BARYON_PROC1_YMIN",    
228       // Note: Process #2 & 3 are projectile &    
229       //       they have more complex definiti    
230       //      (see example below)                 
231       // SetParams( 2, 6.0/Xinel, 0.0 ,-6.0/Xi    
232       // SetParams( 3, 6.0/Xinel, 0.0 ,-6.0/Xi    
233       // Also, for ( AbsProjectileBaryonNumber    
234       // projectile and/or target diffraction     
235       HDP.SetDefault( "FTF_BARYON_DIFF_DISSO_P    
236       HDP.SetDefault( "FTF_BARYON_DIFF_DISSO_T    
237       /* JVY, Oct. 31, 2017: Per Alberto R. &     
238       /* JVY, June 11, 2020: try to open up...    
239       // Process=4 --> Qexchg w/additional mul    
240       HDP.SetDefault( "FTF_BARYON_PROC4_A1",      
241       HDP.SetDefault( "FTF_BARYON_PROC4_B1",      
242       HDP.SetDefault( "FTF_BARYON_PROC4_A2",      
243       HDP.SetDefault( "FTF_BARYON_PROC4_B2",      
244       HDP.SetDefault( "FTF_BARYON_PROC4_A3",      
245       HDP.SetDefault( "FTF_BARYON_PROC4_ATOP",    
246       HDP.SetDefault( "FTF_BARYON_PROC4_YMIN",    
247       // Parameters of participating hadron (b    
248       HDP.SetDefault( "FTF_BARYON_DELTA_PROB_Q    
249       HDP.SetDefault( "FTF_BARYON_PROB_SAME_QE    
250       HDP.SetDefault( "FTF_BARYON_DIFF_M_PROJ"    
251                                                   
252       HDP.SetDefault( "FTF_BARYON_NONDIFF_M_PR    
253       HDP.SetDefault( "FTF_BARYON_DIFF_M_TGT",    
254       HDP.SetDefault( "FTF_BARYON_NONDIFF_M_TG    
255       HDP.SetDefault( "FTF_BARYON_AVRG_PT2", 0    
256       // JVY, Oct. 6, 2017: Per Alberto R., ke    
257       // HDP.SetDefault( "FTF_BARYON_PROB_DIST    
258       // HDP.SetDefault( "FTF_BARYON_PROB_DIST    
259       // Pions                                    
260       // JVY, Aug.8, 2018 --> Feb.14, 2019 -->    
261       // Parameters of participating hadron (p    
262       /* JVY, June 25, 2019: For now, keep thi    
263       // Process=0 --> Qexchg w/o excitation      
264       HDP.SetDefault( "FTF_PION_PROC0_A1",  15    
265       HDP.SetDefault( "FTF_PION_PROC0_B1",        
266       HDP.SetDefault( "FTF_PION_PROC0_A2", -24    
267       HDP.SetDefault( "FTF_PION_PROC0_B2",        
268       HDP.SetDefault( "FTF_PION_PROC0_A3",        
269       HDP.SetDefault( "FTF_PION_PROC0_ATOP",      
270       HDP.SetDefault( "FTF_PION_PROC0_YMIN",      
271       // Process=1 --> Qexchg w/excitation        
272       HDP.SetDefault( "FTF_PION_PROC1_A1",   5    
273       HDP.SetDefault( "FTF_PION_PROC1_B1",   0    
274       HDP.SetDefault( "FTF_PION_PROC1_A2",  -5    
275       HDP.SetDefault( "FTF_PION_PROC1_B2",   0    
276       HDP.SetDefault( "FTF_PION_PROC1_A3",   0    
277       HDP.SetDefault( "FTF_PION_PROC1_ATOP", 0    
278       HDP.SetDefault( "FTF_PION_PROC1_YMIN", 0    
279       /*                                          
280       // Note: Process #2 & 3 are projectile &    
281       // Process=2 --> Projectile diffraction     
282       // Q: Would it even make sense to make t    
283       //    The following is hadrcoded:           
284       //    Projectile Baryon Number > 10 (Abs    
285       //    ... which is "strange" because pro    
286       //    (see also lines 1007-1016)            
287       HDP.SetDefault( "FTF_PION_PROC2_A1",        
288       HDP.SetDefault( "FTF_PION_PROC2_B1",        
289       HDP.SetDefault( "FTF_PION_PROC2_A2", -98    
290       HDP.SetDefault( "FTF_PION_PROC2_B2",        
291       HDP.SetDefault( "FTF_PION_PROC2_A3",        
292       HDP.SetDefault( "FTF_PION_PROC2_ATOP",      
293       HDP.SetDefault( "FTF_PION_PROC2_YMIN",      
294       */                                          
295       // Process=3 --> Target diffraction         
296       HDP.SetDefault( "FTF_PION_PROC3_A1",        
297       HDP.SetDefault( "FTF_PION_PROC3_B1",        
298       HDP.SetDefault( "FTF_PION_PROC3_A2",  -8    
299       HDP.SetDefault( "FTF_PION_PROC3_B2",        
300       HDP.SetDefault( "FTF_PION_PROC3_A3",        
301       HDP.SetDefault( "FTF_PION_PROC3_ATOP",      
302       HDP.SetDefault( "FTF_PION_PROC3_YMIN",      
303       // projectile and/or target diffraction     
304       // Note: Both projectile and target diff    
305       // a) Number of Target Nucleons > 10 (Nu    
306       //    OR                                    
307       // b) Projectile Baryon Number > 10 (Abs    
308       //    ... which is "strange" because pro    
309       HDP.SetDefault( "FTF_PION_DIFF_DISSO_PRO    
310       HDP.SetDefault( "FTF_PION_DIFF_DISSO_TGT    
311       /* JVY, June 25, 2019: For now keep this    
312       /* JVY, June 11, 2020: try to open up...    
313       // Process=4 --> Qexchg w/additional mul    
314       HDP.SetDefault( "FTF_PION_PROC4_A1",   1    
315       HDP.SetDefault( "FTF_PION_PROC4_B1",   0    
316       HDP.SetDefault( "FTF_PION_PROC4_A2", -11    
317       HDP.SetDefault( "FTF_PION_PROC4_B2",   1    
318       HDP.SetDefault( "FTF_PION_PROC4_A3",   0    
319       HDP.SetDefault( "FTF_PION_PROC4_ATOP", 0    
320       HDP.SetDefault( "FTF_PION_PROC4_YMIN", 2    
321       //                                          
322       HDP.SetDefault( "FTF_PION_DELTA_PROB_QEX    
323       HDP.SetDefault( "FTF_PION_DIFF_M_PROJ",     
324       HDP.SetDefault( "FTF_PION_NONDIFF_M_PROJ    
325       HDP.SetDefault( "FTF_PION_DIFF_M_TGT", 1    
326                                                   
327       HDP.SetDefault( "FTF_PION_NONDIFF_M_TGT"    
328       HDP.SetDefault( "FTF_PION_AVRG_PT2", 0.3    
329       // Nuclear destruction                      
330       // Note: Settings of most of these param    
331       //       for different types of projecti    
332       //       However, we decided to introduc    
333       //       and configuration cards for eac    
334       // Baryons                                  
335       // Projectile destruction                   
336       HDP.SetDefault( "FTF_BARYON_NUCDESTR_P1_    
337       HDP.SetDefault( "FTF_BARYON_NUCDESTR_P1_    
338       // for now, keep fixed p2 & p3 for the p    
339       // they're defined explicitly in G4FTFPa    
340       // Target destruction                       
341       HDP.SetDefault( "FTF_BARYON_NUCDESTR_P1_    
342       HDP.SetDefault( "FTF_BARYON_NUCDESTR_P1_    
343       HDP.SetDefault( "FTF_BARYON_NUCDESTR_P2_    
344       HDP.SetDefault( "FTF_BARYON_NUCDESTR_P3_    
345       //                                          
346       HDP.SetDefault( "FTF_BARYON_PT2_NUCDESTR    
347       HDP.SetDefault( "FTF_BARYON_PT2_NUCDESTR    
348       HDP.SetDefault( "FTF_BARYON_PT2_NUCDESTR    
349       HDP.SetDefault( "FTF_BARYON_PT2_NUCDESTR    
350       //                                          
351       HDP.SetDefault( "FTF_BARYON_NUCDESTR_R2"    
352       HDP.SetDefault( "FTF_BARYON_EXCI_E_PER_W    
353       HDP.SetDefault( "FTF_BARYON_NUCDESTR_DIS    
354       // JVY, Oct. 6, 2017: Per Alberto R., th    
355       //                    and it should NOT     
356       // HDP.SetDefault( "FTF_BARYON_NUCDESTR_    
357       // Mesons - these parameters are common     
358       // Note: *NO* projectile destruction for    
359       // Target destruction                       
360       HDP.SetDefault( "FTF_MESON_NUCDESTR_P1_T    
361       HDP.SetDefault( "FTF_MESON_NUCDESTR_P1_A    
362       HDP.SetDefault( "FTF_MESON_NUCDESTR_P2_T    
363       HDP.SetDefault( "FTF_MESON_NUCDESTR_P3_T    
364       //                                          
365       HDP.SetDefault( "FTF_MESON_PT2_NUCDESTR_    
366       HDP.SetDefault( "FTF_MESON_PT2_NUCDESTR_    
367       HDP.SetDefault( "FTF_MESON_PT2_NUCDESTR_    
368       HDP.SetDefault( "FTF_MESON_PT2_NUCDESTR_    
369       //                                          
370       HDP.SetDefault( "FTF_MESON_NUCDESTR_R2",    
371                                                   
372                      2.0*CLHEP::fermi*CLHEP::f    
373       HDP.SetDefault( "FTF_MESON_EXCI_E_PER_WN    
374       HDP.SetDefault( "FTF_MESON_NUCDESTR_DISP    
375     }                                             
376 };                                                
377                                                   
378                                                   
379 G4FTFSettingDefaultHDP FTFDefaultsHDP;            
380                                                   
381                                                   
382 G4FTFParamCollection::G4FTFParamCollection() {    
383   // Zero out everything                          
384   // Parameters of excitation                     
385   // Proc=0 --> Qexchg w/o excitation             
386   fProc0A1 = 0.0;                                 
387   fProc0B1 = 0.0;                                 
388   fProc0A2 = 0.0;                                 
389   fProc0B2 = 0.0;                                 
390   fProc0A3 = 0.0;                                 
391   fProc0Atop = 0.0;                               
392   fProc0Ymin = 0.0;                               
393   // Proc=1 --> Qexchg w/excitation               
394   fProc1A1 = 0.0;                                 
395   fProc1B1 = 0.0;                                 
396   fProc1A2 = 0.0;                                 
397   fProc1B2 = 0.0;                                 
398   fProc1A3 = 0.0;                                 
399   fProc1Atop = 0.0;                               
400   fProc1Ymin = 0.0;                               
401   //                                              
402   fProjDiffDissociation = false;                  
403   fTgtDiffDissociation = false;                   
404   // Proc=2 --> Projectile diffraction            
405   fProc2A1 = 0.0;                                 
406   fProc2B1 = 0.0;                                 
407   fProc2A2 = 0.0;                                 
408   fProc2B2 = 0.0;                                 
409   fProc2A3 = 0.0;                                 
410   fProc2Atop = 0.0;                               
411   fProc2Ymin = 0.0;                               
412   // Proc=3 --> Target diffraction                
413   fProc3A1 = 0.0;                                 
414   fProc3B1 = 0.0;                                 
415   fProc3A2 = 0.0;                                 
416   fProc3B2 = 0.0;                                 
417   fProc3A3 = 0.0;                                 
418   fProc3Atop = 0.0;                               
419   fProc3Ymin = 0.0;                               
420   // Proc=4 --> Qexchg w/additional multiplier    
421   fProc4A1 = 0.0;                                 
422   fProc4B1 = 0.0;                                 
423   fProc4A2 = 0.0;                                 
424   fProc4B2 = 0.0;                                 
425   fProc4A3 = 0.0;                                 
426   fProc4Atop = 0.0;                               
427   fProc4Ymin = 0.0;                               
428   // Parameters of participating baryon excita    
429   fDeltaProbAtQuarkExchange = 0.0;                
430   fProbOfSameQuarkExchange = 0.0;                 
431   fProjMinDiffMass = 0.0;                         
432   fProjMinNonDiffMass = 0.0;                      
433   fTgtMinDiffMass = 0.0;                          
434   fTgtMinNonDiffMass = 0.0;                       
435   fAveragePt2 = 0.0;                              
436   fProbLogDistrPrD = 0.0;                         
437   fProbLogDistr = 0.0;                            
438   // Parameters of nuclear distruction            
439   // COMMONs                                      
440   fNuclearProjDestructP1 = 0.0;                   
441   fNuclearProjDestructP1_NBRNDEP = false;         
442   fNuclearTgtDestructP1 = 0.0;                    
443   fNuclearTgtDestructP1_ADEP = false;             
444   fNuclearProjDestructP2 = 0.0;                   
445   fNuclearProjDestructP3 = 0.0;                   
446   fNuclearTgtDestructP2 = 0.0;                    
447   fNuclearTgtDestructP3 = 0.0;                    
448   fPt2NuclearDestructP1 = 0.0;                    
449   fPt2NuclearDestructP2 = 0.0;                    
450   fPt2NuclearDestructP3 = 0.0;                    
451   fPt2NuclearDestructP4 = 0.0;                    
452   // Baryons                                      
453   fR2ofNuclearDestruct = 0.0;                     
454   fExciEnergyPerWoundedNucleon = 0.0;             
455   fDofNuclearDestruct = 0.0;                      
456   fMaxPt2ofNuclearDestruct = 0.0;                 
457   // Keep the 2 parameters below fixed for now    
458   fNuclearProjDestructP2 = 4.0;                   
459   fNuclearProjDestructP3 = 2.1;                   
460 }                                                 
461                                                   
462                                                   
463 G4FTFParamCollBaryonProj::G4FTFParamCollBaryon    
464   // Parameters of participating hadron (baryo    
465   // Baryons projectile                           
466   // Proc=0 --> Qexchg w/o excitation             
467   HDP.DeveloperGet( "FTF_BARYON_PROC0_A1",   f    
468   HDP.DeveloperGet( "FTF_BARYON_PROC0_B1",   f    
469   HDP.DeveloperGet( "FTF_BARYON_PROC0_A2",   f    
470   HDP.DeveloperGet( "FTF_BARYON_PROC0_B2",   f    
471   HDP.DeveloperGet( "FTF_BARYON_PROC0_A3",   f    
472   HDP.DeveloperGet( "FTF_BARYON_PROC0_ATOP", f    
473   HDP.DeveloperGet( "FTF_BARYON_PROC0_YMIN", f    
474   // Proc=1 --> Qexchg w/excitation               
475   HDP.DeveloperGet( "FTF_BARYON_PROC1_A1",   f    
476   HDP.DeveloperGet( "FTF_BARYON_PROC1_B1",   f    
477   HDP.DeveloperGet( "FTF_BARYON_PROC1_A2",   f    
478   HDP.DeveloperGet( "FTF_BARYON_PROC1_B2",   f    
479   HDP.DeveloperGet( "FTF_BARYON_PROC1_A3",   f    
480   HDP.DeveloperGet( "FTF_BARYON_PROC1_ATOP", f    
481   HDP.DeveloperGet( "FTF_BARYON_PROC1_YMIN", f    
482   // Proc=2 & Proc=3 for the case ( AbsProject    
483   // (diffraction dissociation)                   
484   // Note-1: used to be ( AbsProjectileBaryonN    
485   // Note-2: As of 10.5, both are set to false    
486   HDP.DeveloperGet( "FTF_BARYON_DIFF_DISSO_PRO    
487   HDP.DeveloperGet( "FTF_BARYON_DIFF_DISSO_TGT    
488   // Proc=4 --> Qexchg "w/additional multiplie    
489   HDP.DeveloperGet( "FTF_BARYON_PROC4_A1",   f    
490   HDP.DeveloperGet( "FTF_BARYON_PROC4_B1",   f    
491   HDP.DeveloperGet( "FTF_BARYON_PROC4_A2",   f    
492   HDP.DeveloperGet( "FTF_BARYON_PROC4_B2",   f    
493   HDP.DeveloperGet( "FTF_BARYON_PROC4_A3",   f    
494   HDP.DeveloperGet( "FTF_BARYON_PROC4_ATOP", f    
495   HDP.DeveloperGet( "FTF_BARYON_PROC4_YMIN", f    
496   //                                              
497   HDP.DeveloperGet( "FTF_BARYON_DELTA_PROB_QEX    
498   HDP.DeveloperGet( "FTF_BARYON_PROB_SAME_QEXC    
499   HDP.DeveloperGet( "FTF_BARYON_DIFF_M_PROJ",     
500   HDP.DeveloperGet( "FTF_BARYON_NONDIFF_M_PROJ    
501   HDP.DeveloperGet( "FTF_BARYON_DIFF_M_TGT", f    
502   HDP.DeveloperGet( "FTF_BARYON_NONDIFF_M_TGT"    
503   HDP.DeveloperGet( "FTF_BARYON_AVRG_PT2", fAv    
504   // JVY - Per Alberto R., we're curretly keep    
505   // thus they're defined here explicitly, rat    
506   // HDP.DeveloperGet( "FTF_BARYON_PROB_DISTR_    
507   // HDP.DeveloperGet( "FTF_BARYON_PROB_DISTR_    
508   fProbLogDistrPrD = 0.55;                        
509   fProbLogDistr    = 0.55;                        
510   // Nuclear destruction                          
511   // ---> LATER !!! ---> fBaryonMaxNumberOfCol    
512   HDP.DeveloperGet( "FTF_BARYON_NUCDESTR_P1_PR    
513   HDP.DeveloperGet( "FTF_BARYON_NUCDESTR_P1_NB    
514   // Keep the 2 parameters below fixed for now    
515   fNuclearProjDestructP2 = 4.0;                   
516   fNuclearProjDestructP3 = 2.1;                   
517   //                                              
518   HDP.DeveloperGet( "FTF_BARYON_NUCDESTR_P1_TG    
519   HDP.DeveloperGet( "FTF_BARYON_NUCDESTR_P1_AD    
520   HDP.DeveloperGet( "FTF_BARYON_NUCDESTR_P2_TG    
521   HDP.DeveloperGet( "FTF_BARYON_NUCDESTR_P3_TG    
522   //                                              
523   HDP.DeveloperGet( "FTF_BARYON_PT2_NUCDESTR_P    
524   HDP.DeveloperGet( "FTF_BARYON_PT2_NUCDESTR_P    
525   HDP.DeveloperGet( "FTF_BARYON_PT2_NUCDESTR_P    
526   HDP.DeveloperGet( "FTF_BARYON_PT2_NUCDESTR_P    
527   //                                              
528   HDP.DeveloperGet( "FTF_BARYON_NUCDESTR_R2",     
529   HDP.DeveloperGet( "FTF_BARYON_EXCI_E_PER_WND    
530   //                                              
531   HDP.DeveloperGet( "FTF_BARYON_NUCDESTR_DISP"    
532   //                                              
533   // Note-1: this parameter has changed from 1    
534   //         ... then it went back to 1. for t    
535   // Note-2: this is a "technical" parameter,     
536   //         it is defined explicitly rather t    
537   // --> HDP.DeveloperGet( "FTF_BARYON_NUCDEST    
538   fMaxPt2ofNuclearDestruct = 9.0 * CLHEP::GeV*    
539 }                                                 
540                                                   
541                                                   
542 G4FTFParamCollMesonProj::G4FTFParamCollMesonPr    
543   // Nuclear destruction                          
544   // These parameters are common for all meson    
545   HDP.DeveloperGet( "FTF_MESON_NUCDESTR_P1_TGT    
546   HDP.DeveloperGet( "FTF_MESON_NUCDESTR_P1_ADE    
547   HDP.DeveloperGet( "FTF_MESON_NUCDESTR_P2_TGT    
548   HDP.DeveloperGet( "FTF_MESON_NUCDESTR_P3_TGT    
549   //                                              
550   HDP.DeveloperGet( "FTF_MESON_PT2_NUCDESTR_P1    
551   HDP.DeveloperGet( "FTF_MESON_PT2_NUCDESTR_P2    
552   HDP.DeveloperGet( "FTF_MESON_PT2_NUCDESTR_P3    
553   HDP.DeveloperGet( "FTF_MESON_PT2_NUCDESTR_P4    
554   //                                              
555   HDP.DeveloperGet( "FTF_MESON_NUCDESTR_R2", f    
556   HDP.DeveloperGet( "FTF_MESON_EXCI_E_PER_WNDN    
557   HDP.DeveloperGet( "FTF_MESON_NUCDESTR_DISP",    
558   // Note: it is a "technical" parameter, it s    
559   //       this is why it is defined explicitl    
560   fMaxPt2ofNuclearDestruct = 1.0 * CLHEP::GeV*    
561 }                                                 
562                                                   
563                                                   
564 G4FTFParamCollPionProj::G4FTFParamCollPionProj    
565   // Parameters of participating pion excitati    
566   // Proc=0 --> Qexchg w/o excitation             
567   HDP.DeveloperGet( "FTF_PION_PROC0_A1",   fPr    
568   HDP.DeveloperGet( "FTF_PION_PROC0_B1",   fPr    
569   HDP.DeveloperGet( "FTF_PION_PROC0_A2",   fPr    
570   HDP.DeveloperGet( "FTF_PION_PROC0_B2",   fPr    
571   HDP.DeveloperGet( "FTF_PION_PROC0_A3",   fPr    
572   HDP.DeveloperGet( "FTF_PION_PROC0_ATOP", fPr    
573   HDP.DeveloperGet( "FTF_PION_PROC0_YMIN", fPr    
574   // Proc=1 --> Qexchg w/excitation               
575   HDP.DeveloperGet( "FTF_PION_PROC1_A1",   fPr    
576   HDP.DeveloperGet( "FTF_PION_PROC1_B1",   fPr    
577   HDP.DeveloperGet( "FTF_PION_PROC1_A2",   fPr    
578   HDP.DeveloperGet( "FTF_PION_PROC1_B2",   fPr    
579   HDP.DeveloperGet( "FTF_PION_PROC1_A3",   fPr    
580   HDP.DeveloperGet( "FTF_PION_PROC1_ATOP", fPr    
581   HDP.DeveloperGet( "FTF_PION_PROC1_YMIN", fPr    
582   // Proc=2 --> Projectile diffraction            
583   // Q: Would it even make sense to make these    
584   //    The following is hadrcoded:               
585   //    Projectile Baryon Number > 10 (AbsProj    
586   //    ... which is "strange" because project    
587   //    (see also lines 1007-1016)                
588   /* As of Oct. 31, 2017 keep these fixed         
589   HDP.DeveloperGet( "FTF_PION_PROC2_A1",   fPr    
590   HDP.DeveloperGet( "FTF_PION_PROC2_B1",   fPr    
591   HDP.DeveloperGet( "FTF_PION_PROC2_A2",   fPr    
592   HDP.DeveloperGet( "FTF_PION_PROC2_B2",   fPr    
593   HDP.DeveloperGet( "FTF_PION_PROC2_A3",   fPr    
594   HDP.DeveloperGet( "FTF_PION_PROC2_ATOP", fPr    
595   HDP.DeveloperGet( "FTF_PION_PROC2_YMIN", fPr    
596   */                                              
597   // Keep fixed so far; see note above            
598   fProc2A1 =      2.27;                           
599   fProc2B1 =      0.5;                            
600   fProc2A2 = -98052.0;                            
601   fProc2B2 =      4.0;                            
602   fProc2A3 =      0.0;                            
603   fProc2Atop =    0.0;                            
604   fProc2Ymin =    3.0;                            
605   //                                              
606   // Proc=3 --> Target diffraction                
607   HDP.DeveloperGet( "FTF_PION_PROC3_A1",   fPr    
608   HDP.DeveloperGet( "FTF_PION_PROC3_B1",   fPr    
609   HDP.DeveloperGet( "FTF_PION_PROC3_A2",   fPr    
610   HDP.DeveloperGet( "FTF_PION_PROC3_B2",   fPr    
611   HDP.DeveloperGet( "FTF_PION_PROC3_A3",   fPr    
612   HDP.DeveloperGet( "FTF_PION_PROC3_ATOP", fPr    
613   HDP.DeveloperGet( "FTF_PION_PROC3_YMIN", fPr    
614   // For Proc2 & Proc3, pprojectile or target     
615   // if num.baryons >10 (which is strange for     
616   HDP.DeveloperGet( "FTF_PION_DIFF_DISSO_PROJ"    
617   HDP.DeveloperGet( "FTF_PION_DIFF_DISSO_TGT",    
618   // Proc=4 --> Qexchg "w/additional multiplie    
619   HDP.DeveloperGet( "FTF_PION_PROC4_A1",   fPr    
620   HDP.DeveloperGet( "FTF_PION_PROC4_B1",   fPr    
621   HDP.DeveloperGet( "FTF_PION_PROC4_A2",   fPr    
622   HDP.DeveloperGet( "FTF_PION_PROC4_B2",   fPr    
623   HDP.DeveloperGet( "FTF_PION_PROC4_A3",   fPr    
624   HDP.DeveloperGet( "FTF_PION_PROC4_ATOP", fPr    
625   HDP.DeveloperGet( "FTF_PION_PROC4_YMIN", fPr    
626   //                                              
627   HDP.DeveloperGet( "FTF_PION_DELTA_PROB_QEXCH    
628   HDP.DeveloperGet( "FTF_PION_DIFF_M_PROJ", fP    
629   HDP.DeveloperGet( "FTF_PION_NONDIFF_M_PROJ",    
630   HDP.DeveloperGet( "FTF_PION_DIFF_M_TGT", fTg    
631   HDP.DeveloperGet( "FTF_PION_NONDIFF_M_TGT",     
632   HDP.DeveloperGet( "FTF_PION_AVRG_PT2", fAver    
633   //                                              
634   fProbOfSameQuarkExchange = 0.0; // This does    
635   // Currently keep these two parameters fixed    
636   // thus they're defined here explicitly, rat    
637   fProbLogDistrPrD = 0.55;                        
638   fProbLogDistr    = 0.55;                        
639 }                                                 
640                                                   
641                                                   
642 void G4FTFParamCollection::SetTune( const G4in    
643   if ( tuneIndex <= 0 || tuneIndex >= G4FTFTun    
644   switch ( tuneIndex ) {                          
645     case 1 :                                      
646       if ( G4FTFTunings::Instance()->GetTuneAp    
647       break;                                      
648     case 2 :                                      
649       if ( G4FTFTunings::Instance()->GetTuneAp    
650       break;                                      
651     case 3 :                                      
652       if ( G4FTFTunings::Instance()->GetTuneAp    
653       break;                                      
654     case 4 :                                      
655       if ( G4FTFTunings::Instance()->GetTuneAp    
656       break;                                      
657     case 5 :                                      
658       if ( G4FTFTunings::Instance()->GetTuneAp    
659       break;                                      
660     case 6 :                                      
661       if ( G4FTFTunings::Instance()->GetTuneAp    
662       break;                                      
663     case 7 :                                      
664       if ( G4FTFTunings::Instance()->GetTuneAp    
665       break;                                      
666     case 8 :                                      
667       if ( G4FTFTunings::Instance()->GetTuneAp    
668       break;                                      
669     case 9 :                                      
670       if ( G4FTFTunings::Instance()->GetTuneAp    
671       break;                                      
672     // Add here other cases                       
673     default:                                      
674       G4ExceptionDescription ed;                  
675       ed << " tuneIndex= " << tuneIndex << G4e    
676       G4Exception( "G4FTFParamCollection::SetT    
677                    "Not present corresponding     
678   }                                               
679   //G4cout << "Called G4FTFParamCollection::Se    
680   //     << "  " <<  G4FTFTunings::Instance()-    
681 }                                                 
682                                                   
683                                                   
684 //============================================    
685 //    1st (alternative) TUNE (i.e. indexTune =    
686 //                                                
687 // This realistic, alternative tune has been d    
688 // and presented at the hadronic group meeting    
689 //                                                
690 // Note: the 0th tune, i.e. indexTune == 0, co    
691 //       set of FTF parameters.                   
692 //                                                
693 //============================================    
694                                                   
695 void G4FTFParamCollection::SetTune1() {           
696   // An empty method implies the take the defa    
697   // i.e. as set in G4FTFParamCollection::G4FT    
698 }                                                 
699                                                   
700                                                   
701 void G4FTFParamCollBaryonProj::SetTune1() {       
702   G4FTFParamCollection::SetTune1();               
703   /*                                              
704   // Parameters of participating hadron (baryo    
705   // Baryons projectile                           
706   // Proc=0 --> Qexchg w/o excitation             
707   fProc0A1 = ???;    // FTF_BARYON_PROC0_A1       
708   fProc0B1 = ???;    // FTF_BARYON_PROC0_B1       
709   fProc0A2 = ???;    // FTF_BARYON_PROC0_A2       
710   fProc0B2 = ???;    // FTF_BARYON_PROC0_B2       
711   fProc0A3 = ???;    // FTF_BARYON_PROC0_A3       
712   fProc0Atop = ???;  // FTF_BARYON_PROC0_ATOP     
713   fProc0Ymin = ???;  // FTF_BARYON_PROC0_YMIN     
714   // Proc=1 --> Qexchg w/excitation               
715   fProc1A1 = ???;    // FTF_BARYON_PROC1_A1       
716   fProc1B1 = ???;    // FTF_BARYON_PROC1_B1       
717   fProc1A2 = ???;    // FTF_BARYON_PROC1_A2       
718   fProc1B2 = ???;    // FTF_BARYON_PROC1_B2       
719   fProc1A3 = ???;    // FTF_BARYON_PROC1_A3       
720   fProc1Atop = ???;  // FTF_BARYON_PROC1_ATOP     
721   fProc1Ymin = ???;  // FTF_BARYON_PROC1_YMIN     
722   // Proc=2 & Proc=3 for the case (diffraction    
723   fProjDiffDissociation = ???;  // FTF_BARYON_    
724   fTgtDiffDissociation = ???;   // FTF_BARYON_    
725   // Proc=4 --> Qexchg "w/additional multiplie    
726   fProc4A1 = ???;    // FTF_BARYON_PROC4_A1       
727   fProc4B1 = ???;    // FTF_BARYON_PROC4_B1       
728   fProc4A2 = ???;    // FTF_BARYON_PROC4_A2       
729   fProc4B2 = ???;    // FTF_BARYON_PROC4_B2       
730   fProc4A3 = ???;    // FTF_BARYON_PROC4_A3       
731   fProc4Atop = ???;  // FTF_BARYON_PROC4_ATOP     
732   fProc4Ymin = ???;  // FTF_BARYON_PROC4_YMIN     
733   //                                              
734   fDeltaProbAtQuarkExchange = ???;  // FTF_BAR    
735   fProbOfSameQuarkExchange = ???;   // FTF_BAR    
736   fProjMinDiffMass = ???;           // FTF_BAR    
737   fProjMinNonDiffMass = ???;        // FTF_BAR    
738   fTgtMinDiffMass = ???;            // FTF_BAR    
739   fTgtMinNonDiffMass = ???;         // FTF_BAR    
740   fAveragePt2 = ???;                // FTF_BAR    
741   // Nuclear destruction                          
742   fNuclearProjDestructP1 = ???;          // FT    
743   fNuclearProjDestructP1_NBRNDEP = ???;  // FT    
744   //                                              
745   fNuclearTgtDestructP1 = ???;       // FTF_BA    
746   fNuclearTgtDestructP1_ADEP = ???;  // FTF_BA    
747   fNuclearTgtDestructP2 = ???;       // FTF_BA    
748   fNuclearTgtDestructP3 = ???;       // FTF_BA    
749   //                                              
750   fPt2NuclearDestructP1 = ???;  // FTF_BARYON_    
751   fPt2NuclearDestructP2 = ???;  // FTF_BARYON_    
752   fPt2NuclearDestructP3 = ???;  // FTF_BARYON_    
753   fPt2NuclearDestructP4 = ???;  // FTF_BARYON_    
754   //                                              
755   fR2ofNuclearDestruct = ???;          // FTF_    
756   fExciEnergyPerWoundedNucleon = ???;  // FTF_    
757   //                                              
758   fDofNuclearDestruct = ???;  // FTF_BARYON_NU    
759   */                                              
760   // Values below from Julia Yarba's slides at    
761   fExciEnergyPerWoundedNucleon = 26.1;  // +/-    
762   fNuclearTgtDestructP1 = 0.00173;      // +/-    
763   fNuclearTgtDestructP1_ADEP = true;              
764   fProc1A1 = 23.6;                      // +/-    
765   fProc1A2 = -99.3;                     // +/-    
766   fProc1B1 = 0.815;                     // +/-    
767   fProc1B2 = 1.98;                      // +/-    
768 }                                                 
769                                                   
770                                                   
771 void G4FTFParamCollMesonProj::SetTune1() {        
772   G4FTFParamCollection::SetTune1();               
773   /*                                              
774   // Nuclear destruction                          
775   fNuclearTgtDestructP1 = ???;         // FTF_    
776   fNuclearTgtDestructP1_ADEP = ???;    // FTF_    
777   fNuclearTgtDestructP2 = ???;         // FTF_    
778   fNuclearTgtDestructP3 = ???;         // FTF_    
779   //                                              
780   fPt2NuclearDestructP1 = ???;         // FTF_    
781   fPt2NuclearDestructP2 = ???;         // FTF_    
782   fPt2NuclearDestructP3 = ???;         // FTF_    
783   fPt2NuclearDestructP4 = ???;         // FTF_    
784   //                                              
785   fR2ofNuclearDestruct = ???;          // FTF_    
786   fExciEnergyPerWoundedNucleon = ???;  // FTF_    
787   fDofNuclearDestruct = ???;           // FTF_    
788   */                                              
789 }                                                 
790                                                   
791                                                   
792 void G4FTFParamCollPionProj::SetTune1( ) {        
793   G4FTFParamCollMesonProj::SetTune1();            
794   /*                                              
795   // Parameters of participating pion excitati    
796   // Proc=0 --> Qexchg w/o excitation             
797   fProc0A1 = ???;    // FTF_PION_PROC0_A1         
798   fProc0B1 = ???;    // FTF_PION_PROC0_B1         
799   fProc0A2 = ???;    // FTF_PION_PROC0_A2         
800   fProc0B2 = ???;    // FTF_PION_PROC0_B2         
801   fProc0A3 = ???;    // FTF_PION_PROC0_A3         
802   fProc0Atop = ???;  // FTF_PION_PROC0_ATOP       
803   fProc0Ymin = ???;  // FTF_PION_PROC0_YMIN       
804   // Proc=1 --> Qexchg w/excitation               
805   fProc1A1 = ???;    // FTF_PION_PROC1_A1         
806   fProc1B1 = ???;    // FTF_PION_PROC1_B1         
807   fProc1A2 = ???;    // FTF_PION_PROC1_A2         
808   fProc1B2 = ???;    // FTF_PION_PROC1_B2         
809   fProc1A3 = ???;    // FTF_PION_PROC1_A3         
810   fProc1Atop = ???;  // FTF_PION_PROC1_ATOP       
811   fProc1Ymin = ???;  // FTF_PION_PROC1_YMIN       
812   // Proc=2 --> Projectile diffraction : keep     
813   //Fixed  fProc2A1 = ???;    // FTF_PION_PROC    
814   //Fixed  fProc2B1 = ???;    // FTF_PION_PROC    
815   //Fixed  fProc2A2 = ???;    // FTF_PION_PROC    
816   //Fixed  fProc2B2 = ???;    // FTF_PION_PROC    
817   //Fixed  fProc2A3 = ???;    // FTF_PION_PROC    
818   //Fixed  fProc2Atop = ???;  // FTF_PION_PROC    
819   //Fixed  fProc2Ymin = ???;  // FTF_PION_PROC    
820   // Proc=3 --> Target diffraction                
821   fProc3A1 = ???;    // FTF_PION_PROC3_A1         
822   fProc3B1 = ???;    // FTF_PION_PROC3_B1         
823   fProc3A2 = ???;    // FTF_PION_PROC3_A2         
824   fProc3B2 = ???;    // FTF_PION_PROC3_B2         
825   fProc3A3 = ???;    // FTF_PION_PROC3_A3         
826   fProc3Atop = ???;  // FTF_PION_PROC3_ATOP       
827   fProc3Ymin = ???;  // FTF_PION_PROC3_YMIN       
828   //                                              
829   fProjDiffDissociation = ???;  // FTF_PION_DI    
830   fTgtDiffDissociation = ???;   // FTF_PION_DI    
831   //                                              
832   // Proc=4 --> Qexchg "w/additional multiplie    
833   fProc4A1 = ???;    // FTF_PION_PROC4_A1         
834   fProc4B1 = ???;    // FTF_PION_PROC4_B1         
835   fProc4A2 = ???;    // FTF_PION_PROC4_A2         
836   fProc4B2 = ???;    // FTF_PION_PROC4_B2         
837   fProc4A3 = ???;    // FTF_PION_PROC4_A3         
838   fProc4Atop = ???;  // FTF_PION_PROC4_ATOP       
839   fProc4Ymin = ???;  // FTF_PION_PROC4_YMIN       
840   //                                              
841   fDeltaProbAtQuarkExchange = ???;  // FTF_PIO    
842   fProjMinDiffMass = ???;           // FTF_PIO    
843   fProjMinNonDiffMass = ???;        // FTF_PIO    
844   fTgtMinDiffMass = ???;            // FTF_PIO    
845   fTgtMinNonDiffMass = ???;         // FTF_PIO    
846   fAveragePt2 = ???;                // FTF_PIO    
847   */                                              
848 }                                                 
849                                                   
850 //============================================    
851 //    2nd (alternative) TUNE (i.e. indexTune =    
852 //                                                
853 // This is work-in-progress, very preliminary     
854 // has been outlined by Julia Yarba presented     
855 // The nuclear destruction parameters that are    
856 // (see G4FTFParamCollMesonProj::SetTune2)        
857 // while the Qexchg with excitationn of partic    
858 // for *pion" projectile only (see G4FTFParamC    
859 //                                                
860 //============================================    
861                                                   
862 void G4FTFParamCollection::SetTune2() {           
863   // An empty method implies the take the defa    
864   // i.e. as set in G4FTFParamCollection::G4FT    
865 }                                                 
866                                                   
867                                                   
868 void G4FTFParamCollBaryonProj::SetTune2() {       
869   G4FTFParamCollection::SetTune2();               
870   //...                                           
871 }                                                 
872                                                   
873                                                   
874 void G4FTFParamCollMesonProj::SetTune2() {        
875   G4FTFParamCollection::SetTune2();               
876   // Nuclear destruction                          
877   // Note: these values are the same for all m    
878   //       (although bear in mind that they've    
879   //        via fits against experimaental dat    
880   fExciEnergyPerWoundedNucleon = 58.1;  // +/-    
881   fNuclearTgtDestructP1 = 0.001026;     // +/-    
882   fNuclearTgtDestructP1_ADEP = true;              
883 }                                                 
884                                                   
885                                                   
886 void G4FTFParamCollPionProj::SetTune2( ) {        
887   G4FTFParamCollMesonProj::SetTune2();            
888   // Proc=1 --> Qexchg w/excitation               
889   fProc1A1 = 5.84;       // +/- 0.12     // FT    
890   fProc1B1 = 0.337;      // +/- 0.006    // FT    
891   fProc1A2 = -7.57;      // +/- 0.08     // FT    
892   fProc1B2 = 0.44;       // +/- 0.008    // FT    
893 }                                                 
894                                                   
895 //============================================    
896 //    3rd (alternative) TUNE (i.e. indexTune =    
897 //                                                
898 //    Combination of the 1st (baryon) and 2nd     
899 //                                                
900 //============================================    
901                                                   
902 void G4FTFParamCollection::SetTune3() {           
903   // An empty method implies the take the defa    
904   // i.e. as set in G4FTFParamCollection::G4FT    
905 }                                                 
906                                                   
907                                                   
908 void G4FTFParamCollBaryonProj::SetTune3() {       
909   G4FTFParamCollection::SetTune3();               
910   // Values below from Julia Yarba's slides at    
911   fExciEnergyPerWoundedNucleon = 26.1;  // +/-    
912   fNuclearTgtDestructP1 = 0.00173;      // +/-    
913   fNuclearTgtDestructP1_ADEP = true;              
914   fProc1A1 = 23.6;                      // +/-    
915   fProc1A2 = -99.3;                     // +/-    
916   fProc1B1 = 0.815;                     // +/-    
917   fProc1B2 = 1.98;                      // +/-    
918 }                                                 
919                                                   
920                                                   
921 void G4FTFParamCollMesonProj::SetTune3() {        
922   G4FTFParamCollection::SetTune3();               
923   // Nuclear destruction                          
924   // Note: These values are the same for all m    
925   //       (although bear in mind that they've    
926   //        via fits against experimaental dat    
927   //                                              
928   fExciEnergyPerWoundedNucleon = 58.1;  // +/-    
929   fNuclearTgtDestructP1 = 0.001026;     // +/-    
930   fNuclearTgtDestructP1_ADEP = true;              
931 }                                                 
932                                                   
933                                                   
934 void G4FTFParamCollPionProj::SetTune3( ) {        
935   G4FTFParamCollMesonProj::SetTune3();            
936   // Proc=1 --> Qexchg w/excitation               
937   fProc1A1 = 5.84;       // +/- 0.12     // FT    
938   fProc1B1 = 0.337;      // +/- 0.006    // FT    
939   fProc1A2 = -7.57;      // +/- 0.08     // FT    
940   fProc1B2 = 0.44;       // +/- 0.008    // FT    
941 }                                                 
942                                                   
943 //============================================    
944 //    4th (alternative) TUNE (i.e. indexTune =    
945 //                                                
946 // Tune meant to overcome the too narrow (i.e.    
947 // energy resolutions in ATLAS calorimeters wi    
948 // data.                                          
949 //                                                
950 //============================================    
951                                                   
952 void G4FTFParamCollection::SetTune4() {           
953   // An empty method implies the take the defa    
954   // i.e. as set in G4FTFParamCollection::G4FT    
955 }                                                 
956                                                   
957                                                   
958 void G4FTFParamCollBaryonProj::SetTune4() {       
959   G4FTFParamCollection::SetTune4();               
960 }                                                 
961                                                   
962                                                   
963 void G4FTFParamCollMesonProj::SetTune4() {        
964   G4FTFParamCollection::SetTune4();               
965   // Nuclear destruction                          
966   // Note: these values are the same for all m    
967   fExciEnergyPerWoundedNucleon = 50.0;  // FTF    
968   fNuclearTgtDestructP1 = 1.0;          // FTF    
969   fNuclearTgtDestructP1_ADEP = false;   // FTF    
970 }                                                 
971                                                   
972                                                   
973 void G4FTFParamCollPionProj::SetTune4( ) {        
974   G4FTFParamCollMesonProj::SetTune4();            
975   // Proc=0 --> Quark exchange without excitat    
976   fProc0A1 =    720.0;  // FTF_PION_PROC0_A1      
977   fProc0B1 =      2.5;  // FTF_PION_PROC0_B1      
978   fProc0A2 =      2.3;  // FTF_PION_PROC0_A2      
979   fProc0B2 =      1.0;  // FTF_PION_PROC0_B2      
980   fProc0A3 =      0.0;  // FTF_PION_PROC0_A3      
981   fProc0Atop =    1.0;  // FTF_PION_PROC0_Atop    
982   fProc0Ymin =    2.7;  // FTF_PION_PROC0_Ymin    
983   // Proc=1 --> Quark exchange with excitation    
984   fProc1A1 =    12.87;  // FTF_PION_PROC1_A1      
985   fProc1B1 =     0.5;   // FTF_PION_PROC1_B1      
986   fProc1A2 =   -44.91;  // FTF_PION_PROC1_A2      
987   fProc1B2 =     1.0;   // FTF_PION_PROC1_B2      
988   fProc1A3 =     0.0;   // FTF_PION_PROC1_A3      
989   fProc1Atop =   0.0;   // FTF_PION_PROC1_Atop    
990   fProc1Ymin =   2.5;   // FTF_PION_PROC1_Ymin    
991   // Proc=4 --> Quark exchange with excitation    
992   fProc4A1 =     1.0;   // FTF_PION_PROC4_A1      
993   fProc4B1 =     0.0;   // FTF_PION_PROC4_B1      
994   fProc4A2 =    -3.49;  // FTF_PION_PROC4_A2      
995   fProc4B2 =     0.5;   // FTF_PION_PROC4_B2      
996   fProc4A3 =     0.0;   // FTF_PION_PROC4_A3      
997   fProc4Atop =   0.0;   // FTF_PION_PROC4_Atop    
998   fProc4Ymin =   2.5;   // FTF_PION_PROC4_Ymin    
999 }                                                 
1000                                                  
1001 //===========================================    
1002 //    5th (alternative) TUNE (i.e. indexTune     
1003 //                                               
1004 //    DUMMY tune: identical to the default se    
1005 //                You can replace it with a "    
1006 //                only the non-default parame    
1007 //===========================================    
1008                                                  
1009 void G4FTFParamCollection::SetTune5() {          
1010   // An empty method implies the take the def    
1011   // i.e. as set in G4FTFParamCollection::G4F    
1012 }                                                
1013                                                  
1014                                                  
1015 void G4FTFParamCollBaryonProj::SetTune5() {      
1016   G4FTFParamCollection::SetTune5();              
1017   //...                                          
1018 }                                                
1019                                                  
1020                                                  
1021 void G4FTFParamCollMesonProj::SetTune5() {       
1022   G4FTFParamCollection::SetTune5();              
1023   //...                                          
1024 }                                                
1025                                                  
1026                                                  
1027 void G4FTFParamCollPionProj::SetTune5( ) {       
1028   G4FTFParamCollMesonProj::SetTune5();           
1029   //...                                          
1030 }                                                
1031                                                  
1032 //===========================================    
1033 //    6th (alternative) TUNE (i.e. indexTune     
1034 //                                               
1035 //    DUMMY tune: identical to the default se    
1036 //                You can replace it with a "    
1037 //                only the non-default parame    
1038 //===========================================    
1039                                                  
1040 void G4FTFParamCollection::SetTune6() {          
1041   // An empty method implies the take the def    
1042   // i.e. as set in G4FTFParamCollection::G4F    
1043 }                                                
1044                                                  
1045                                                  
1046 void G4FTFParamCollBaryonProj::SetTune6() {      
1047   G4FTFParamCollection::SetTune6();              
1048   //...                                          
1049 }                                                
1050                                                  
1051                                                  
1052 void G4FTFParamCollMesonProj::SetTune6() {       
1053   G4FTFParamCollection::SetTune6();              
1054   //...                                          
1055 }                                                
1056                                                  
1057                                                  
1058 void G4FTFParamCollPionProj::SetTune6( ) {       
1059   G4FTFParamCollMesonProj::SetTune6();           
1060   //...                                          
1061 }                                                
1062                                                  
1063 //===========================================    
1064 //    7th (alternative) TUNE (i.e. indexTune     
1065 //                                               
1066 //    DUMMY tune: identical to the default se    
1067 //                You can replace it with a "    
1068 //                only the non-default parame    
1069 //===========================================    
1070                                                  
1071 void G4FTFParamCollection::SetTune7() {          
1072   // An empty method implies the take the def    
1073   // i.e. as set in G4FTFParamCollection::G4F    
1074 }                                                
1075                                                  
1076                                                  
1077 void G4FTFParamCollBaryonProj::SetTune7() {      
1078   G4FTFParamCollection::SetTune7();              
1079   //...                                          
1080 }                                                
1081                                                  
1082                                                  
1083 void G4FTFParamCollMesonProj::SetTune7() {       
1084   G4FTFParamCollection::SetTune7();              
1085   //...                                          
1086 }                                                
1087                                                  
1088                                                  
1089 void G4FTFParamCollPionProj::SetTune7( ) {       
1090   G4FTFParamCollMesonProj::SetTune7();           
1091   //...                                          
1092 }                                                
1093                                                  
1094 //===========================================    
1095 //    8th (alternative) TUNE (i.e. indexTune     
1096 //                                               
1097 //    DUMMY tune: identical to the default se    
1098 //                You can replace it with a "    
1099 //                only the non-default parame    
1100 //===========================================    
1101                                                  
1102 void G4FTFParamCollection::SetTune8() {          
1103   // An empty method implies the take the def    
1104   // i.e. as set in G4FTFParamCollection::G4F    
1105 }                                                
1106                                                  
1107                                                  
1108 void G4FTFParamCollBaryonProj::SetTune8() {      
1109   G4FTFParamCollection::SetTune8();              
1110   //...                                          
1111 }                                                
1112                                                  
1113                                                  
1114 void G4FTFParamCollMesonProj::SetTune8() {       
1115   G4FTFParamCollection::SetTune8();              
1116   //...                                          
1117 }                                                
1118                                                  
1119                                                  
1120 void G4FTFParamCollPionProj::SetTune8( ) {       
1121   G4FTFParamCollMesonProj::SetTune8();           
1122   //...                                          
1123 }                                                
1124                                                  
1125 //===========================================    
1126 //    9th (alternative) TUNE (i.e. indexTune     
1127 //                                               
1128 //    DUMMY tune: identical to the default se    
1129 //                You can replace it with a "    
1130 //                only the non-default parame    
1131 //===========================================    
1132                                                  
1133 void G4FTFParamCollection::SetTune9() {          
1134   // An empty method implies the take the def    
1135   // i.e. as set in G4FTFParamCollection::G4F    
1136 }                                                
1137                                                  
1138                                                  
1139 void G4FTFParamCollBaryonProj::SetTune9() {      
1140   G4FTFParamCollection::SetTune9();              
1141   //...                                          
1142 }                                                
1143                                                  
1144                                                  
1145 void G4FTFParamCollMesonProj::SetTune9() {       
1146   G4FTFParamCollection::SetTune9();              
1147   //...                                          
1148 }                                                
1149                                                  
1150                                                  
1151 void G4FTFParamCollPionProj::SetTune9( ) {       
1152   G4FTFParamCollMesonProj::SetTune9();           
1153   //...                                          
1154 }                                                
1155                                                  
1156 //...                                            
1157