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 11.2.2)


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