Version: SMASH-3.4
input_keys.cc
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2026
4  * SMASH Team
5  *
6  * GNU General Public License (GPLv3 or later)
7  *
8  */
9 
10 #include "smash/input_keys.h"
11 
12 namespace smash {
13 
14 std::optional<InputKeys::key_references_variant> InputKeys::find_key(
15  const KeyLabels& labels) {
16  if (labels.size() == 0)
17  return std::nullopt;
18  const auto& list = InputKeys::all_keys();
19  auto iterator_to_key_references_variant =
20  std::find_if(list.begin(), list.end(), [&labels](const auto& key) {
21  return std::visit(
22  [&labels](auto&& arg) { return arg.get().has_same_labels(labels); },
23  key);
24  });
25  if (iterator_to_key_references_variant == list.end()) {
26  return std::nullopt;
27  } else {
28  return *iterator_to_key_references_variant;
29  }
30 }
31 
32 const std::vector<InputKeys::key_references_variant>& InputKeys::all_keys() {
33  static const std::vector<key_references_variant> list = {
34  std::cref(particles),
35  std::cref(decaymodes),
36  std::cref(gen_endTime),
37  std::cref(gen_modus),
38  std::cref(gen_nevents),
39  std::cref(gen_randomseed),
40  std::cref(gen_minNonEmptyEnsembles_maximumEnsembles),
41  std::cref(gen_minNonEmptyEnsembles_number),
42  std::cref(gen_deltaTime),
43  std::cref(gen_derivativesMode),
44  std::cref(gen_smearingDiscreteWeight),
45  std::cref(gen_ensembles),
46  std::cref(gen_expansionRate),
47  std::cref(gen_fieldDerivativesMode),
48  std::cref(gen_smearingGaussCutoffInSigma),
49  std::cref(gen_smearingGaussianSigma),
50  std::cref(gen_metricType),
51  std::cref(gen_restFrameDensityDerivativeMode),
52  std::cref(gen_smearingMode),
53  std::cref(gen_testparticles),
54  std::cref(gen_timeStepMode),
55  std::cref(gen_smearingTriangularRange),
56  std::cref(gen_useGrid),
57  std::cref(log_default),
58  std::cref(log_box),
59  std::cref(log_collider),
60  std::cref(log_yamlConfiguration),
61  std::cref(log_experiment),
62  std::cref(log_grandcanThermalizer),
63  std::cref(log_initialConditions),
64  std::cref(log_list),
65  std::cref(log_main),
66  std::cref(log_output),
67  std::cref(log_sphere),
68  std::cref(log_action),
69  std::cref(log_clock),
70  std::cref(log_crossSections),
71  std::cref(log_decayModes),
72  std::cref(log_density),
73  std::cref(log_distributions),
74  std::cref(log_findScatter),
75  std::cref(log_fpe),
76  std::cref(log_grid),
77  std::cref(log_hyperSurfaceCrossing),
78  std::cref(log_inputParser),
79  std::cref(log_lattice),
80  std::cref(log_nucleus),
81  std::cref(log_particleType),
82  std::cref(log_pauliBlocking),
83  std::cref(log_potentials),
84  std::cref(log_propagation),
85  std::cref(log_pythia),
86  std::cref(log_resonances),
87  std::cref(log_rootsolver),
88  std::cref(log_scatterAction),
89  std::cref(log_scatterActionMulti),
90  std::cref(log_tmn),
91  std::cref(version),
92  std::cref(collTerm_additionalElasticCrossSection),
93  std::cref(collTerm_charmRescatteringMethod),
94  std::cref(collTerm_collisionCriterion),
95  std::cref(collTerm_crossSectionScaling),
96  std::cref(collTerm_elasticCrossSection),
97  std::cref(collTerm_elasticNNCutoffSqrts),
98  std::cref(collTerm_totXsStrategy),
99  std::cref(collTerm_pseudoresonance),
100  std::cref(collTerm_fixedMinCellLength),
101  std::cref(collTerm_forceDecaysAtEnd),
102  std::cref(collTerm_ignoreDecayWidthAtTheEnd),
103  std::cref(collTerm_includeDecaysAtTheEnd),
104  std::cref(collTerm_decayInitial),
105  std::cref(collTerm_includedTwoToTwo),
106  std::cref(collTerm_isotropic),
107  std::cref(collTerm_maximumCrossSection),
108  std::cref(collTerm_multiParticleReactions),
109  std::cref(collTerm_nnbarTreatment),
110  std::cref(collTerm_noCollisions),
111  std::cref(collTerm_onlyWarnForHighProbability),
112  std::cref(collTerm_resonanceLifetimeModifier),
113  std::cref(collTerm_spinInteractions),
114  std::cref(collTerm_strings),
115  std::cref(collTerm_stringsWithProbability),
116  std::cref(collTerm_twoToOne),
117  std::cref(collTerm_useAQM),
118  std::cref(collTerm_pauliBlocking_gaussianCutoff),
119  std::cref(collTerm_pauliBlocking_momentumAveragingRadius),
120  std::cref(collTerm_pauliBlocking_spatialAveragingRadius),
121  std::cref(collTerm_hardStringTransition_mode),
122  std::cref(collTerm_hardStringTransition_energyRange),
123  std::cref(collTerm_stringTrans_KNOffset),
124  std::cref(collTerm_stringTrans_pipiOffset),
125  std::cref(collTerm_stringTrans_lower),
126  std::cref(collTerm_stringTrans_rangeNN),
127  std::cref(collTerm_stringTrans_rangeNpi),
128  std::cref(collTerm_stringTrans_range_width),
129  std::cref(collTerm_stringParam_diquarkSuppression),
130  std::cref(collTerm_stringParam_formTimeFactor),
131  std::cref(collTerm_stringParam_formationTime),
132  std::cref(collTerm_stringParam_gluonBeta),
133  std::cref(collTerm_stringParam_gluonPMin),
134  std::cref(collTerm_stringParam_mDependentFormationTimes),
135  std::cref(collTerm_stringParam_quarkAlpha),
136  std::cref(collTerm_stringParam_quarkBeta),
137  std::cref(collTerm_stringParam_popcornRate),
138  std::cref(collTerm_stringParam_powerParticleFormation),
139  std::cref(collTerm_stringParam_probabilityPToDUU),
140  std::cref(collTerm_stringParam_separateFragmentBaryon),
141  std::cref(collTerm_stringParam_sigmaPerp),
142  std::cref(collTerm_stringParam_strangeSuppression),
143  std::cref(collTerm_stringParam_stringSigmaT),
144  std::cref(collTerm_stringParam_stringTension),
145  std::cref(collTerm_stringParam_stringZA),
146  std::cref(collTerm_stringParam_stringZALeading),
147  std::cref(collTerm_stringParam_stringZB),
148  std::cref(collTerm_stringParam_stringZBLeading),
149  std::cref(collTerm_stringParam_useMonashTune),
150  std::cref(collTerm_stringParam_dampPopcorn),
151  std::cref(collTerm_stringParam_unformedXsecSuppression),
152  std::cref(collTerm_stringParam_pythiaSettings),
153  std::cref(collTerm_dileptons_decays),
154  std::cref(collTerm_dileptons_bremsstrahlung),
155  std::cref(collTerm_dileptons_pion_form_factor),
156  std::cref(collTerm_photons_twoToTwoScatterings),
157  std::cref(collTerm_photons_bremsstrahlung),
158  std::cref(collTerm_photons_fractionalPhotons),
159  std::cref(collTerm_HF_AQMbSuppression),
160  std::cref(collTerm_HF_AQMcSuppression),
161  std::cref(modi_collider_eKin),
162  std::cref(modi_collider_eTot),
163  std::cref(modi_collider_pLab),
164  std::cref(modi_collider_sqrtSNN),
165  std::cref(modi_collider_calculationFrame),
166  std::cref(modi_collider_collisionWithinNucleus),
167  std::cref(modi_collider_fermiMotion),
168  std::cref(modi_collider_initialDistance),
169  std::cref(modi_collider_projectile_diffusiveness),
170  std::cref(modi_collider_target_diffusiveness),
171  std::cref(modi_collider_projectile_particles),
172  std::cref(modi_collider_target_particles),
173  std::cref(modi_collider_projectile_radius),
174  std::cref(modi_collider_target_radius),
175  std::cref(modi_collider_projectile_saturationDensity),
176  std::cref(modi_collider_target_saturationDensity),
177  std::cref(modi_collider_projectile_eKin),
178  std::cref(modi_collider_target_eKin),
179  std::cref(modi_collider_projectile_eTot),
180  std::cref(modi_collider_target_eTot),
181  std::cref(modi_collider_projectile_pLab),
182  std::cref(modi_collider_target_pLab),
183  std::cref(modi_collider_projectile_custom_fileDirectory),
184  std::cref(modi_collider_target_custom_fileDirectory),
185  std::cref(modi_collider_projectile_custom_fileName),
186  std::cref(modi_collider_target_custom_fileName),
187  std::cref(modi_collider_projectile_deformed_automatic),
188  std::cref(modi_collider_target_deformed_automatic),
189  std::cref(modi_collider_projectile_deformed_beta2),
190  std::cref(modi_collider_target_deformed_beta2),
191  std::cref(modi_collider_projectile_deformed_beta3),
192  std::cref(modi_collider_target_deformed_beta3),
193  std::cref(modi_collider_projectile_deformed_beta4),
194  std::cref(modi_collider_target_deformed_beta4),
195  std::cref(modi_collider_projectile_deformed_gamma),
196  std::cref(modi_collider_target_deformed_gamma),
197  std::cref(modi_collider_projectile_alphaClustered_automatic),
198  std::cref(modi_collider_target_alphaClustered_automatic),
199  std::cref(modi_collider_projectile_alphaClustered_sideLength),
200  std::cref(modi_collider_target_alphaClustered_sideLength),
201  std::cref(modi_collider_projectile_orientation_phi),
202  std::cref(modi_collider_target_orientation_phi),
203  std::cref(modi_collider_projectile_orientation_psi),
204  std::cref(modi_collider_target_orientation_psi),
205  std::cref(modi_collider_projectile_orientation_randRot),
206  std::cref(modi_collider_target_orientation_randRot),
207  std::cref(modi_collider_projectile_orientation_theta),
208  std::cref(modi_collider_target_orientation_theta),
209  std::cref(modi_collider_impact_max),
210  std::cref(modi_collider_impact_randomReactionPlane),
211  std::cref(modi_collider_impact_range),
212  std::cref(modi_collider_impact_sample),
213  std::cref(modi_collider_impact_value),
214  std::cref(modi_collider_impact_values),
215  std::cref(modi_collider_impact_yields),
216  std::cref(modi_collider_initialConditions_eDenThreshold),
217  std::cref(modi_collider_initialConditions_delayInitialElastic),
218  std::cref(modi_collider_initialConditions_fluidCells),
219  std::cref(modi_collider_initialConditions_formTimeFraction),
220  std::cref(modi_collider_initialConditions_fluidProcesses),
221  std::cref(modi_collider_initialConditions_lowerBound),
222  std::cref(modi_collider_initialConditions_scaling),
223  std::cref(modi_collider_initialConditions_maxTime),
224  std::cref(modi_collider_initialConditions_minTime),
225  std::cref(modi_collider_initialConditions_properTime),
226  std::cref(modi_collider_initialConditions_pTCut),
227  std::cref(modi_collider_initialConditions_rapidityCut),
228  std::cref(modi_collider_initialConditions_type),
229  std::cref(modi_sphere_initialMultiplicities),
230  std::cref(modi_sphere_radius),
231  std::cref(modi_sphere_startTime),
232  std::cref(modi_sphere_temperature),
233  std::cref(modi_sphere_accountResonanceWidths),
234  std::cref(modi_sphere_addRadialVelocity),
235  std::cref(modi_sphere_addRadialVelocityExponent),
236  std::cref(modi_sphere_baryonChemicalPotential),
237  std::cref(modi_sphere_chargeChemicalPotential),
238  std::cref(modi_sphere_initialCondition),
239  std::cref(modi_sphere_strangeChemicalPotential),
240  std::cref(modi_sphere_heavyFlavorMultiplier),
241  std::cref(modi_sphere_useThermalMultiplicities),
242  std::cref(modi_sphere_jet_jetPdg),
243  std::cref(modi_sphere_jet_jetMomentum),
244  std::cref(modi_sphere_jet_jetPosition),
245  std::cref(modi_sphere_jet_backToBack),
246  std::cref(modi_sphere_jet_backToBackSeparation),
247  std::cref(modi_box_initialMultiplicities),
248  std::cref(modi_box_initialCondition),
249  std::cref(modi_box_length),
250  std::cref(modi_box_startTime),
251  std::cref(modi_box_temperature),
252  std::cref(modi_box_accountResonanceWidths),
253  std::cref(modi_box_baryonChemicalPotential),
254  std::cref(modi_box_chargeChemicalPotential),
255  std::cref(modi_box_equilibrationTime),
256  std::cref(modi_box_strangeChemicalPotential),
257  std::cref(modi_box_useThermalMultiplicities),
258  std::cref(modi_box_jet_jetMomentum),
259  std::cref(modi_box_jet_jetPdg),
260  std::cref(modi_list_fileDirectory),
261  std::cref(modi_list_filename),
262  std::cref(modi_list_filePrefix),
263  std::cref(modi_list_shiftId),
264  std::cref(modi_list_optionalQuantities),
265  std::cref(modi_listBox_fileDirectory),
266  std::cref(modi_listBox_filename),
267  std::cref(modi_listBox_filePrefix),
268  std::cref(modi_listBox_length),
269  std::cref(modi_listBox_shiftId),
270  std::cref(modi_listBox_optionalQuantities),
271  std::cref(output_densityType),
272  std::cref(output_outputInterval),
273  std::cref(output_outputTimes),
274  std::cref(output_particles_format),
275  std::cref(output_collisions_format),
276  std::cref(output_dileptons_format),
277  std::cref(output_photons_format),
278  std::cref(output_initialConditions_format),
279  std::cref(output_rivet_format),
280  std::cref(output_coulomb_format),
281  std::cref(output_thermodynamics_format),
282  std::cref(output_particles_extended),
283  std::cref(output_particles_quantities),
284  std::cref(output_particles_onlyFinal),
285  std::cref(output_collisions_extended),
286  std::cref(output_collisions_quantities),
287  std::cref(output_collisions_printStartEnd),
288  std::cref(output_dileptons_extended),
289  std::cref(output_dileptons_quantities),
290  std::cref(output_photons_extended),
291  std::cref(output_photons_quantities),
292  std::cref(output_initialConditions_extended),
293  std::cref(output_initialConditions_quantities),
294  std::cref(output_initialConditions_lowerBound),
295  std::cref(output_initialConditions_properTime),
296  std::cref(output_initialConditions_pTCut),
297  std::cref(output_initialConditions_rapidityCut),
298  std::cref(output_rivet_analyses),
299  std::cref(output_rivet_crossSection),
300  std::cref(output_rivet_ignoreBeams),
301  std::cref(output_rivet_logging),
302  std::cref(output_rivet_paths),
303  std::cref(output_rivet_preloads),
304  std::cref(output_rivet_weights_cap),
305  std::cref(output_rivet_weights_deselect),
306  std::cref(output_rivet_weights_nloSmearing),
307  std::cref(output_rivet_weights_noMulti),
308  std::cref(output_rivet_weights_nominal),
309  std::cref(output_rivet_weights_select),
310  std::cref(output_thermodynamics_onlyParticipants),
311  std::cref(output_thermodynamics_ignoreUnformed),
312  std::cref(output_thermodynamics_position),
313  std::cref(output_thermodynamics_quantites),
314  std::cref(output_thermodynamics_smearing),
315  std::cref(output_thermodynamics_type),
316  std::cref(lattice_automatic),
317  std::cref(lattice_cellNumber),
318  std::cref(lattice_origin),
319  std::cref(lattice_periodic),
320  std::cref(lattice_potentialsAffectThreshold),
321  std::cref(lattice_sizes),
322  std::cref(potentials_use_potentials_outside_lattice),
323  std::cref(potentials_skyrme_skyrmeA),
324  std::cref(potentials_skyrme_skyrmeB),
325  std::cref(potentials_skyrme_skyrmeTau),
326  std::cref(potentials_symmetry_gamma),
327  std::cref(potentials_symmetry_sPot),
328  std::cref(potentials_vdf_coeffs),
329  std::cref(potentials_vdf_powers),
330  std::cref(potentials_vdf_satRhoB),
331  std::cref(potentials_coulomb_rCut),
332  std::cref(potentials_momentum_dependence_C),
333  std::cref(potentials_momentum_dependence_Lambda),
334  std::cref(forcedThermalization_cellNumber),
335  std::cref(forcedThermalization_criticalEDensity),
336  std::cref(forcedThermalization_startTime),
337  std::cref(forcedThermalization_timestep),
338  std::cref(forcedThermalization_algorithm),
339  std::cref(forcedThermalization_latticeSizes),
340  std::cref(forcedThermalization_microcanonical)};
341  return list;
342 }
343 
344 } // namespace smash
Definition: action.h:24
std::vector< std::string_view > KeyLabels
Descriptive alias for storing key labels, i.e.
Definition: key.h:46
static const std::vector< key_references_variant > & all_keys()
Get list of references to all existing SMASH keys.
Definition: input_keys.cc:32
static std::optional< key_references_variant > find_key(const KeyLabels &labels)
Find a Key in the database given its labels.
Definition: input_keys.cc:14