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