Giter VIP home page Giter VIP logo

smash's Introduction

SMASH

DOI

SMASH (Simulating Many Accelerated Strongly-interacting Hadrons) is a relativistic hadronic transport approach for the dynamical description of heavy-ion reactions. Please see Phys. Rev. C 94, 054905 (2016) for details and, if you are using SMASH, cite this reference together with the software DOI for the specific code version employed. A BibTeX entry for the software DOI is found on the respective Zenodo pages.

See CONTRIBUTING for development hints. A complete User Guide as well as a more detailed development documentation are available for the latest version of the code. For documentation of older versions, refer to links in the releases pages.

If Pythia is used, please cite the following references (both article and the codebase release you used):

Report issues on GitHub or contact us by ✉️ email.

How to build and install SMASH

In the following you can find a minimal quick start guide. Refer to the INSTALL file for more detailed information.

Prerequisites

SMASH is known to compile and work on 64-bit little endian machines (most CPUs are such) with UNIX-like operating systems (e.g. GNU/Linux, MacOS) and one of the following compilers (which have the required C++17 features):

Compiler Required version
GCC 8.0 or higher
Clang 7.0 or higher
Apple clang 11.0 or higher

Any different operating system and/or compiler and/or endianness is not officially supported and SMASH will ask you to continue at your own risk before compilation.

SMASH requires the following tools and libraries:

Software Required version
CMake 3.16 or higher
GNU Scientific Library (GSL) 2.0 or higher
Eigen3 library 3.0 or higher
Pythia 8.310

Support for ROOT, HepMC3 and Rivet output is automatically enabled if a suitable version is found on the system:

Software Required version
ROOT 5.34 or higher
HepMC3 3.2.3 or higher
Rivet 3.1.4 or higher

Compilation and installation

From within the SMASH repository, use the following commands to build the codebase in a separate directory:

mkdir build
cd build
cmake -DPythia_CONFIG_EXECUTABLE=/path/to/pythia8310/bin/pythia8-config ..
make

Please note that the make command builds everything (executables, tests and libraries) and might take a while. You can use make smash if you are interest in the SMASH executable only or use make smash_shared to exclusively build the libraries (needed e.g. in another project using SMASH as library).

You can run SMASH with specific settings (e.g. at a given collision energy or impact parameter) by modifying the config.yaml file, for example with

vi config.yaml
./smash

Refer to the section below for more information.

If you want to install SMASH system-wide (into /usr/local) use

make install

⚠️ NOTE: All commands above are the bare minimum needed for an installation. It is not guaranteed that this minimum setup is appropriate for your needs or your specific computing environment. For example, several different options can be passed e.g. to the cmake command. We strongly advise you to further refer to the INSTALL file for more guidance, especially if you encounter any issues.

Using the Docker containers

As an alternative to building or installing SMASH, a Docker image of the latest or recently tagged version can be pulled from the Github container registry. Get the newest version with

docker pull ghcr.io/smash-transport/smash:newest

Start the container with

docker run -it ghcr.io/smash-transport/smash:newest

A ready-to-use executable of SMASH is found in the smash_bin directory. Run it as explained below. If needed, SMASH can also be built inside the container as explained in the previous section (the SMASH source files and Pythia are also found in the /SMASH directory).

Two container versions of SMASH are offered:

  • a small version (ghcr.io/smash-transport/smash) with a minimal set of dependencies pre-installed and
  • a large version with all possible external dependencies, e.g. ROOT, HepMC and Rivet, already included (ghcr.io/smash-transport/smash-max).

Note that running SMASH inside of a Docker container might negatively affect performance. More information about containers usage can be found here.

Note for users with ARM CPUs (e.g. Apple M1/M2 chips)

Our Docker images are prepared for the x86-64 CPU architecture. To make them compatible with computers with ARM CPUs (like in the case of Apple M1 and M2 chips), docker must be launched with the --platform=linux/amd64 option. For example:

docker run --platform=linux/amd64 -it ghcr.io/smash-transport/smash:newest

However, this is not always guaranteed to work and it might be necessary to build an image for the ARM architecture, as described here.

Running SMASH with Example Input Files

SMASH ships example configuration files for running in the collider, box, sphere, and list mode (Modus in the configuration jargon). By default, i.e. by running ./smash, the simulation is set up from the collider configuration file, called config.yaml, and using the default particles and decay modes files (particles.txt and decaymodes.txt, respectively). They are located in the repository input folder.

Additionally, example configuration files for the box, sphere and list modus can be found in the respective directories input/{box,sphere,list}. If needed, e.g. in the case of a box simulation, different default particles and decay modes files can be used. Examples for these are also provided in input/box.

Finally, for the list modus, an input list file to be read in is required and an example is provided as input/list/example_list0.

In general, to run SMASH with a non-default configuration file, use the -i command. For example, for the sphere or list example file, from the build folder, use:

    ./smash -i ../input/sphere/config.yaml
    ./smash -i ../input/list/config.yaml

Furthermore, if using non-default particles and decay modes files is necessary, these can be specified through the -p and -d options. In the box and the dileptons example, always from the build folder, this means:

./smash -i ../input/box/config.yaml -p ../input/box/particles.txt -d ../input/box/decaymodes.txt
./smash -i ../input/dileptons/config.yaml -d ../input/dileptons/decaymodes.txt

All available command line options for SMASH can be viewed with

./smash -h

To run SMASH completely silently for production runs, we recommend to suppress the standard output via e.g.

./smash > /dev/null

and it might be useful to redirect warnings and error messages, that will still be displayed, to a file:

./smash > /dev/null 2> /path/to/error-and-warnings-file

License

SMASH is licensed under the terms of the GNU General Public License, Version 3 or above. The build scripts are licensed under terms of the BSD 3-clause license. For more information, see LICENSE.

Projects Using SMASH

SMASH source and documentation are provided to check and reproduce published results of the authors. Cooperation and joint projects with outside researchers are encouraged and comparison to results by experimental collaborations is supported. If you are interested in starting a project, please contact us to avoid interference with current thesis topics. If your project involves changes to the code, please refer to CONTRIBUTING for coding guidelines and helpful tools. SMASH can also be used as a 3rd party library, for examples see the examples folder in the repository.

smash's People

Contributors

amsorens avatar axelkrypton avatar doliinychenko avatar elfnerhannah avatar gabriele-inghirami avatar hendrik1704 avatar juliagroebel avatar justinmohs avatar lgpang avatar markusmayer08 avatar ngoetz avatar nkblr avatar robinsattler avatar sh1r4s3 avatar sleepyfermion avatar stdnmr avatar swryu10 avatar thegarzo avatar triple-s avatar vks avatar void-0ne avatar woolitzer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

smash's Issues

SMASH installation on Macbook with M1 chip

Dear SMASH developers!
I am on transfer from Linux to MacOS with M1 chip and I've faced with the problem: the familiar installation instruction seems to be inoperative on new Apple laptops. Didn't you or anyone else tried to install SMASH on Mac M1 laptop and in case of success can you give an instructions?

error from pythia

I have installed smash according to the manu. In the config.yaml, I set 'Sqrtsnn: 7.7', then run ./smash
It gives the following information:

PYTHIA Warning in JunctionSplitting::CheckColours: not-a-number energy/momentum/mass
PYTHIA Error in HadronLevel::next: failed colour/junction check
PYTHIA Error in Pythia::forceHadronLevel: hadronLevel failed; try again
PYTHIA Abort from Pythia::forceHadronLevel: hadronLevel failed; giving up
PYTHIA Error in MiniStringFragmentation::fragment: no 1- or 2-body state found above mass threshold

smash continues to run till the end.

What does this information mean? Does this affect the final results?

SMASH-1.8 fails to build

Dear sir/madam,
My name is Pavlo Panasiuk, I am an user busy with comparing different MC generators, including SMASH-2.2 and SMASH-1.8 .
While I managed to build SMASH-2.2 on SAGA (NRIS HPC), SMASH-1.8 fails to build with same toolkit (except for different pythia version).

Is it possible to ask for technical support? Or is this version considered too old already?
Logfile is a bit over 100 Mb, so I'm not attaching it right away.

Thanks,
Pavlo

Pythia Include Paths

Hi,

I installed SMASH when i found a Problem:

  • If you install SMASH on a system with 2 Pythias, it can happen that the library is taken from one path and the config-executable from another:

//Path to a program.
Pythia_CONFIG_EXECUTABLE:FILEPATH=/location1/pythia8235/bin/pythia8-config
//Path to a library.
Pythia_LIBRARY:FILEPATH=/location2/pythia8235/lib/libpythia8.a

while compiling no errors occurs, but during run-time it crashes.
If both locations are the same no problem occurs.
Maybe an error or warning before compiling would help.

And again thanks to Dmytro for helping.

Crash on out of range integral tabulations

I'm trying to use smash for hadronic rescattering as a part of JETSCAPE framework (integrated). However, it seems to always crash while performing some table look-ups and going out of range (see backtrace below). I'm using the default configuration for smash, and JETSCAPE should also be properly configured for the afterburner stage.

#6  0x00007fffde89a5bd in std::__throw_out_of_range (
    __s=__s@entry=0x7fffe1bf42ae "_Map_base::at")
    at /build/gcc/src/gcc/libstdc++-v3/src/c++11/functexcept.cc:82
#7  0x00007fffe1a1863c in std::__detail::_Map_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, smash::Tabulation>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, smash::Tabulation> >, std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true>, true>::at (this=this@entry=0x7fffe1c480c0 <smash::RK_tabulations>, 
    __k="Δ̅")
    at /usr/include/c++/10.2.0/bits/hashtable_policy.h:433
#8  0x00007fffe1a14935 in std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, smash::Tabulation, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, smash::Tabulation> > >::at (__k=..., 
    this=0x7fffe1c480c0 <smash::RK_tabulations>)
    at /usr/include/c++/10.2.0/bits/unordered_map.h:1000
#9  smash::IsoParticleType::get_integral_RK (
    this=0x555556666ee8, sqrts=2.3692074873141471)
    at JETSCAPE/external_packages/smash/smash_code/src/isoparticletype.cc:324
#10 0x00007fffe195599a in smash::detailed_balance_factor_RK (
    sqrts=<optimized out>, pcm=pcm@entry=0.77111675422546411, 
    a=..., b=..., c=..., d=...)
    at JETSCAPE/external_packages/smash/smash_code/src/include/smash/particletype.h:185
#11 0x00007fffe195c265 in operator() (
    __closure=<optimized out>)
    at JETSCAPE/external_packages/smash/smash_code/src/crosssections.cc:1547
#12 smash::CrossSections::add_channel<smash::CrossSections::deltak_xx(smash::ReactionsBitSet) const::<lambda()> > (type_b=..., 
    type_a=..., sqrts=<optimized out>, get_xsection=..., 
    process_list=std::vector of length 0, capacity 0, 
    this=0x7fffffffdfc0)
    at JETSCAPE/external_packages/smash/smash_code/src/include/smash/crosssections.h:519
#13 smash::CrossSections::deltak_xx (this=0x7fffffffdfc0, 
    included_2to2=...)
    at JETSCAPE/external_packages/smash/smash_code/src/crosssections.cc:1545
#14 0x00007fffe1981244 in smash::CrossSections::two_to_two (
--Type <RET> for more, q to quit, c to continue without paging--
    this=0x7fffffffdfc0, included_2to2=std::bitset = {...})
    at JETSCAPE/external_packages/smash/smash_code/src/crosssections.cc:814
#15 0x00007fffe19876b9 in smash::CrossSections::generate_collision_list (this=this@entry=0x7fffffffdfc0, 
    elastic_parameter=elastic_parameter@entry=-1, 
    two_to_one_switch=two_to_one_switch@entry=true, 
    included_2to2=..., 
    included_2to2@entry=std::bitset = {...}, 
    low_snn_cut=low_snn_cut@entry=1.98, 
    strings_switch=strings_switch@entry=true, 
    use_AQM=use_AQM@entry=true, strings_with_probability=true, 
    nnbar_treatment=smash::NNbarTreatment::Strings, 
    string_process=0x5555566dfca0)
    at JETSCAPE/external_packages/smash/smash_code/src/crosssections.cc:168
#16 0x00007fffe1a69e74 in smash::ScatterAction::add_all_scatterings (this=this@entry=0x55555b8614f0, elastic_parameter=-1, 
    two_to_one=<optimized out>, 
    included_2to2=std::bitset = {...}, 
    low_snn_cut=<optimized out>, 
    strings_switch=<optimized out>, use_AQM=<optimized out>, 
    strings_with_probability=<optimized out>, 
    nnbar_treatment=smash::NNbarTreatment::Strings)
    at JETSCAPE/external_packages/smash/smash_code/src/scatteraction.cc:113
#17 0x00007fffe1a7496f in smash::ScatterActionsFinder::check_collision (this=0x5555565c2cc0, data_a=..., data_b=..., 
    dt=<optimized out>, beam_momentum=..., 
    cell_vol=42.040058809083938)
    at JETSCAPE/external_packages/smash/smash_code/src/scatteractionsfinder.cc:388
#18 0x00007fffe1a74d13 in smash::ScatterActionsFinder::find_actions_in_cell (this=0x5555565c2cc0, 
    search_list=std::vector of length 5, capacity 8 = {...}, 
    dt=0.5, cell_vol=42.040058809083938, 
    beam_momentum=std::vector of length 0, capacity 0)
    at JETSCAPE/external_packages/smash/smash_code/src/scatteractionsfinder.cc:422
#19 0x00007fffe20b46ce in smash::Experiment<AfterburnerModus>::run_time_evolution()::{lambda(std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&)#1}::operator()(std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&) const (
    search_list=std::vector of length 5, capacity 8 = {...}, 
    this=<optimized out>)
    at /usr/include/c++/10.2.0/bits/unique_ptr.h:421
#20 std::__invoke_impl<void, smash::Experiment<AfterburnerModus>::run_time_evolution()::{lambda(std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&)#1}&, std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&>(std::__invoke_other, smash::Experiment<AfterburnerModus>::run_time_evolution()::{lambda(std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&)#1}&, std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&) (
    __f=...) at /usr/include/c++/10.2.0/bits/invoke.h:60
#21 std::__invoke_r<void, smash::Experiment<AfterburnerModus>::run_time_evolution()::{lambda(std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&)#1}&, std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&>(std::__is_invocable&&, (smash::Experiment<AfterburnerModus>::run_time_evolution()::{lambda(std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&)#1}&)...) (__fn=...)
    at /usr/include/c++/10.2.0/bits/invoke.h:153
#22 std::_Function_handler<void (std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&), smash::Experiment<AfterburnerModus>::run_time_evolution()::{lambda(std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&)#1}>::_M_invoke(std::_Any_data const&, std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&) (
    __functor=..., 
    __args#0=std::vector of length 5, capacity 8 = {...})
--Type <RET> for more, q to quit, c to continue without paging--
    at /usr/include/c++/10.2.0/bits/std_function.h:291
#23 0x00007fffe1a056f6 in std::function<void (std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&)>::operator()(std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&) const (
    __args#0=std::vector of length 5, capacity 8 = {...}, 
    this=0x7fffffffe4f0)
    at /usr/include/c++/10.2.0/bits/std_function.h:617
#24 smash::Grid<(smash::GridOptions)0>::iterate_cells(std::function<void (std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&)> const&, std::function<void (std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&, std::vector<smash::ParticleData, std::allocator<smash::ParticleData> > const&)> const&) const (
    this=this@entry=0x7fffffffe550, search_cell_callback=..., 
    neighbor_cell_callback=...)
    at JETSCAPE/external_packages/smash/smash_code/src/grid.cc:291
#25 0x00007fffe20bfd60 in smash::Experiment<AfterburnerModus>::run_time_evolution (this=0x5555566601e0)
    at /usr/include/c++/10.2.0/bits/std_function.h:87
#26 0x00007fffe20ad7ee in SmashWrapper::ExecuteTask (
    this=0x55555659c770)
    at /usr/include/c++/10.2.0/bits/shared_ptr_base.h:1324
#27 0x00007fffe20235a7 in Jetscape::Afterburner::Exec (
    this=0x55555659c770)
    at JETSCAPE/src/framework/Afterburner.cc:40
#28 0x00007fffe2058f43 in Jetscape::JetScapeTask::ExecuteTasks
    (this=this@entry=0x55555659c620)
    at JETSCAPE/src/framework/JetScapeTask.cc:60
#29 0x00007fffe2044c57 in Jetscape::JetScape::Exec (
    this=0x55555659c620)
    at JETSCAPE/src/framework/JetScape.cc:826
#30 0x00005555555565bb in main (argc=-6128, 
    argv=0x7fffffffe968)
    at JETSCAPE/examples/runJetscape.cc:80

Here's a minimal JETSCAPE config to reproduce. The problem seems to disappear when I remove <TransInputs> section from the Trento configuration. Is this a smash bug or some misconfiguration issue from JETSCAPE side?

<?xml version="1.0"?>
<jetscape>
	<!-- General settings -->
	<nEvents>1</nEvents>
	<setReuseHydro>false</setReuseHydro>
	<outputFilename>out</outputFilename>

	<!-- fix the random seed -->
	<Random>
		<seed>23</seed>
	</Random>

	<!-- Inital State Module  -->
	<IS>
		<!-- Initial condition -->
		<Trento>
			<PhysicsInputs projectile='Pb'
				target='Pb'
				sqrts='5020.'
				cross-section='7.0'
				normalization='18.5'>
			</PhysicsInputs>
			<TransInputs
				reduced-thickness='0.006'
				fluctuation='1.6'
				nucleon-width='0.96'
				nucleon-min-dist='1.28'>
			</TransInputs>
			<CutInputs centrality-low='0'
				centrality-high='60'>
			</CutInputs>
		</Trento>
	</IS>

	<Preequilibrium>
		<NullPreDynamics> </NullPreDynamics>
	</Preequilibrium>

	<!-- Hydro Module -->
	<Hydro>
		<MUSIC>
			<T_dependent_Shear_to_S_ratio>3</T_dependent_Shear_to_S_ratio>
			<eta_over_s_T_kink_in_GeV>0.16</eta_over_s_T_kink_in_GeV>
			<eta_over_s_low_T_slope_in_GeV>0.1</eta_over_s_low_T_slope_in_GeV>
			<eta_over_s_high_T_slope_in_GeV>0.68</eta_over_s_high_T_slope_in_GeV>
			<eta_over_s_at_kink>0.08</eta_over_s_at_kink>
			<temperature_dependent_bulk_viscosity>3</temperature_dependent_bulk_viscosity>
			<zeta_over_s_max>0.1</zeta_over_s_max>
			<zeta_over_s_T_peak_in_GeV>0.16</zeta_over_s_T_peak_in_GeV>
			<zeta_over_s_width_in_GeV>0.01</zeta_over_s_width_in_GeV>
			<zeta_over_s_lambda_asymm>0.0</zeta_over_s_lambda_asymm>
			<Include_second_order_terms>1</Include_second_order_terms>
			<freezeout_temperature>0.152</freezeout_temperature>
		</MUSIC>
	</Hydro>

	<SoftParticlization>
		<iSS>
		<!-- hadron species list  0: PDG 2005; 1: UrQMD; 2: SMASH -->
		<afterburner_type>2</afterburner_type>
		<Perform_resonance_decays>0</Perform_resonance_decays>
		</iSS>
	</SoftParticlization>

	<Afterburner>
		<SMASH>
			<end_time>500.0</end_time>
		</SMASH>
	</Afterburner>
</jetscape>

Feature request: Possibility to save information about initial nucleons (spatial+momentum)

Dear SMASH team,

I would like to ask if it would be possible to add an option to SMASH to save in the simulated output an event-by-event information about the time, spatial position, and 4-momentum of individual initial nucleons from each of the colliding nuclei before their 1st collision. In a special case of non-interacting nucleons (spectators) to save the initial spatial position and 4-momentum (with time=0).

This information will allow to connect different geometrical quantities of the fluctuating initial state (e.g. eccentricities) with the final state azimuthal asymmetries (flow harmonics).

Thank you in advance.

Cheers,
Ilya

Unable to BUILD SMASH

I am following steps to build SMASH on ubuntu.
I build Pythia and eigen3 as well.
But after that when I build SMASH using the commands mentioned, I am getting the following error,
...
CMake Error: The source directory "/home/yash" does not appear to contain CMakeLists.txt.
...
Kindly help me with this. Thank You !!!

Problem while configuring HADRON-SAMPLER

I have compiled SMASH onto my system, now i want to compile Smash-hybrid-vhlle also which required various others packages also.
I have done with most of them but when i try to configure Hadron-sampler onto my system it ends up with an error which i tried a lot but i don't succeed. I am currently running smash without any errors and all of my variable paths are adjusted. Ihave attached the screen shot of my problems that appeared.
i am running these commands:

  1. export SMASH_DIR=/home/junaid/Smash/smash-master
    now i copy the cmake from the SMASH_DIR to hadron_sampler_master directory:
  2. cd smash_hadron_sampler
  3. cp -r $SMASH_DIR/cmake ./
  4. cd build
  5. cmake .. -DPythia_CONFIG_EXECUTABLE=/home/junaid/Pythia8/Pythia_install/bin/pythia8-config -DCMAKE_CXX_STANDARD=14
  6. which end up with error showing in picture 1.
  7. I have also attached cache file here.
    CMakeCache.txt

picture 1

Various fixes - mainly to enable using SMASH as a callable library in 3rd party code

Hi,

I attach a patch which address a few tings in SMASH

  • The macro source_location conflicts with boost::source_location. That is, if defined, it will make the compiler choke on bad syntax when source_location is expanded in boost::source_location. The patch fixes this by renaming the macro to _source_location (it should probably be SMASH_source_location to make it more distinct)
  • Install all headers, libraries, and binaries in ${CMAKE_INSTALL_PREFIX}/{include,lib,bin} as well as example inputs in ${CMAKE_INSTALL_PREFIX}/share/smash. This makes it possible for 3rd partiy applications to use the code from predictable locations.
  • Add Pythia_LIBDIR to link directories (otherwise the linker may not find lpythia8)
  • Remove explicit -std=c++11 from CXXFLAGS. This can make it difficult to link with other libraries in 3rd party applicaitons. The ABI of GNU C++11 isn't compatible with the C++14+ ABI, and one may want to pass -std=c++17 to link with other libraries (e.g., HepMC3 or Rivet). Users can set CMAKE_CXX_COMPILER_FLAGS as needed. Another option would be to define a CMake Variable (say CMAKE_CXX_STANDARD_VERSION) by default set to c++11 but overwritable by the user.
  • Always initialize Experiment<T>::nucleon_has_interacted_ in Experiment<T>::initialize_new_event - otherwise later stages may SIGSEGV. I know that you do this expicitly in Experiment<T>::run but if one wants to use SMASH as an external library, then that is not an option since the member is private. In any case, it does not hurt to explicitly initialize it.

All these changes mainly aim at enabling the use of SMASH in thrid party applications. For example, one can define a program that let's SMASH generate an HepMC3 event in memory which Rivet then analyses directly from memory. This avoids the very costly I/O of HepMC events to disk or FIFO (at least a factor 10 speed up)

. I attach an example of such a program (it works - try it with your favorite Rivet Analysis).

Yours,

Christian
smash_patch_and_rivet.tar.gz

Issues with installing SMASH on Ubuntu

I am trying to install SMASH with Ubuntu (on windows) and I'm running into a problem when I try to run make in the build directory. I have all the prerequisites installed, I use the following cmake options:

$ cmake .. -DGSL_ROOT_DIR=gsl-2.7.1 -DPythia_CONFIG_EXECUTABLE=/home/ejduck3744/pythia8307/bin/pythia8-config -DBoost_INCLUDE_DIR=/boost_1_81_0 -DCMAKE_CXX_STANDARD=14 -DCMAKE_CXX_COMPILER=g++

and that works without a hitch, but when I try:
$ make

I get a long string of similar errors starting with:

In file included from /usr/include/c++/10/iomanip:43,
from /home/ejduck3744/smash-SMASH-2.2/3rdparty/einhard/einhard.hpp:63,
from /home/ejduck3744/smash-SMASH-2.2/src/include/smash/logging.h:17,
from /home/ejduck3744/smash-SMASH-2.2/src/include/smash/lattice.h:21,
from /home/ejduck3744/smash-SMASH-2.2/src/include/smash/action.h:17,
from /home/ejduck3744/smash-SMASH-2.2/src/action.cc:10:
/usr/bin/locale:1:1: error: stray ‘\177’ in program
{list of random characters}
/usr/bin/locale:1:5: error: stray ‘\2’ in program
....
and so on, essentially continuing on with a similar error for every few characters in /usr/bin/locale. I think it has to do with character encoding, but trying to convert /usr/bin/locale to UTF-8 doesn't solve the issue. Do you know what is going on?

Thanks for your help!

Box is too small for the grid

Dear maintainers,
I have faced an error message in SMASH-2.2 that I did not expect.

Given that I did not need any specific potentials enabled, I followed instruction on http://theory.gsi.de/~smash/userguide/2.2/input_general_.html regarding delta time, and set time_step_mode to none. It worked fine for Au+Au simulation in SMASH-1.8 and SMASH-2.2.

However, when I tried same approach in the infinite matter (box) simulation, I got rather different behaviour. SMASH-1.8 ate same instruction just fine (at least so it looks), while SMASH-2.2 threw an error

SMASH failed with the following error:
Input error: Your box is too small for the grid.
The minimal length of the box is given by: 20.000000 fm with the given timestep size.
If you have large timesteps please reduce them.
A larger box or the use of testparticles also helps.
Please take a look at your config.

This confuses me, since I haven't explicitly declared any potential. Here is my config:

Version: 1.8 # minimal SMASH version to use with this config file

Logging:
    default: INFO

General:
    Modus:          Box
    Time_Step_Mode: None
#    Delta_Time:     0.1
    End_Time:       1000.0
    Randomseed:     342002906
    Nevents:        25

Output:
#    Output_Interval: 1.0
    Output_Times: [700.0]
    Particles:
        Only_Final: No
        Format:          ["Root"]

Modi:
    Box:
        Length: 10
        Initial_Condition: "peaked momenta"
        Start_Time: 0.0
        Temperature: 0.5661475236840086
        Init_Multiplicities:
            3122: 0
            2112: 593

I can clearly tell it argues about this time_step_mode, however if it shouldn't be none, should I be concerned regarding my other results? I tried to look into changelogs between 1.8 and 2.2, but I am not as good in the lookup. Could you please point out what does it mean and what should I do to 'fix' my simulation?

Please don't hurry, holidays are more important.

Thanks for your time,
Pavlo Panasiuk

Feature request: inclusion of information about time of last collision in .root-data file

Dear SMASH team!

I would like to ask if it would be possible to add an option to SMASH to save the info about time of last collision of a single particle in .root file (such as it realized in .oscar file).

It can provide us an ability to separate particles-participants and particles-spectators, which can give us some usefull information for physical analysis.

Fixed plane of reaction

Hi!

I have found out that plane of reaction (plane which impact-parameter vector lead in) is XZ plane always. Of course, it is very useful for flows studies, but it leads to anisotropy of phi-distribution in event-by-event analysis.

Снимок экрана от 2019-11-17 20-10-34

Can plane reaction be variable by some settings on or can it become variable in the next versions of SMASH?

SMASH - Trouble with Root?

Hi,

we tried to run SMASH on our cluster and it failed, but not always...
If we run 10 instances of SMASH at once no problem occurs, while when we run 100/1000 instances around 1/3 crashed.

This is the stack trace:

*** Break *** illegal instruction
###############################################################################

        :::s.
   ....  ''ss::                                                  ah:
 a::''.   ..:sss                                                .HH.

mss'.. ...s'm. sSA##As mAhh##hsh##s. .hA##ASa sS###As hMAh##h.
:a':'. .'':as sM#' .HHm''HMS''AMs mMA' .AMs aMA. 'HHa..HM:
.a:s'. ..''ss 'h#H#S. mMm 'M#' .HH. 'MH. :MA 'h#H#S. hMm :M#
.::ss'. .... 'SMm .HH. SMa hMm sM#..mHMs 'AMa 'MH. SMa
.s::' #SMASHh aMS .MH: HM: #MMMmMM. #SMASHh aMS .MM.

###############################################################################
This is SMASH version: SMASH-1.6
Simulating Many Accelerated Strongly-interacting Hadrons

Distributed under the GNU General Public License 3.0 (GPLv3 or later).
See LICENSE for details.
For the full list of contributors see AUTHORS.

When using SMASH, please cite
J. Weil et al., Phys.Rev. C94 (2016) no.5, 054905
and in addition, if Pythia is used please cite
T. Sjöstrand, S. Mrenna and P. Skands, JHEP05 (2006) 026,
Comput. Phys. Comm. 178 (2008) 852.

Webpage: https://smash-transport.github.io

Report issues at https://github.com/smash-transport/smash
or contact us by email at [email protected]

###############################################################################

===========================================================
There was a crash.
This is the entire stack trace of all threads:

#0 0x00007fea92ca9dbc in waitpid () from /usr/lib64/libc.so.6
#1 0x00007fea92c2ccc2 in do_system () from /usr/lib64/libc.so.6
#2 0x00007fea981728d9 in TUnixSystem::StackTrace (this=0x12472b0) at /home/software/root/download/5.34-36/core/unix/src/TUnixSystem.cxx:2419
#3 0x00007fea9817451c in TUnixSystem::DispatchSignals (this=0x12472b0, sig=kSigIllegalInstruction) at /home/software/root/download/5.34-36/core/unix/src/TUnixSystem.cxx:1294
#4
#5 0x0000000000563d6a in _M_gen_rand (this=) at /usr/include/c++/4.8.2/bits/random.tcc:408
#6 std::mersenne_twister_engine<unsigned long, 64ul, 312ul, 156ul, 31ul, 13043109905998158313ul, 29ul, 6148914691236517205ul, 17ul, 8202884508482404352ul, 37ul, 18444473444759240704ul, 43ul, 6364136223846793005ul>::operator() (this=) at /usr/include/c++/4.8.2/bits/random.tcc:459
#7 0x000000000057ce37 in advance () at /home/gu92yiv/workspace/smash/smash_1.6/src/include/smash/random.h:78
#8 smash::Experimentsmash::ColliderModus::initialize_new_event (this=this
entry=0x1643f00) at /home/gu92yiv/workspace/smash/smash_1.6/src/include/smash/experiment.h:1210
#9 0x0000000000587a1c in smash::Experimentsmash::ColliderModus::run (this=0x1643f00) at /home/gu92yiv/workspace/smash/smash_1.6/src/include/smash/experiment.h:1794
#10 0x00000000004c623f in main (argc=, argv=0x7ffeab5e1ef8) at /home/gu92yiv/workspace/smash/smash_1.6/src/smash.cc:659

The lines below might hint at the cause of the crash.
If they do not help you then please submit a bug report at
http://root.cern.ch/bugs. Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.

#5 0x0000000000563d6a in _M_gen_rand (this=) at /usr/include/c++/4.8.2/bits/random.tcc:408
#6 std::mersenne_twister_engine<unsigned long, 64ul, 312ul, 156ul, 31ul, 13043109905998158313ul, 29ul, 6148914691236517205ul, 17ul, 8202884508482404352ul, 37ul, 18444473444759240704ul, 43ul, 6364136223846793005ul>::operator() (this=) at /usr/include/c++/4.8.2/bits/random.tcc:459
#7 0x000000000057ce37 in advance () at /home/gu92yiv/workspace/smash/smash_1.6/src/include/smash/random.h:78
#8 smash::Experimentsmash::ColliderModus::initialize_new_event (this=this
entry=0x1643f00) at /home/gu92yiv/workspace/smash/smash_1.6/src/include/smash/experiment.h:1210
#9 0x0000000000587a1c in smash::Experimentsmash::ColliderModus::run (this=0x1643f00) at /home/gu92yiv/workspace/smash/smash_1.6/src/include/smash/experiment.h:1794
#10 0x00000000004c623f in main (argc=, argv=0x7ffeab5e1ef8) at /home/gu92yiv/workspace/smash/smash_1.6/src/smash.cc:659

*** Break *** segmentation violation

===========================================================
There was a crash.
This is the entire stack trace of all threads:

#0 0x00007fea92ca9dbc in waitpid () from /usr/lib64/libc.so.6
#1 0x00007fea92c2ccc2 in do_system () from /usr/lib64/libc.so.6
#2 0x00007fea981728d9 in TUnixSystem::StackTrace (this=0x12472b0) at /home/software/root/download/5.34-36/core/unix/src/TUnixSystem.cxx:2419
#3 0x00007fea9817451c in TUnixSystem::DispatchSignals (this=0x12472b0, sig=kSigSegmentationViolation) at /home/software/root/download/5.34-36/core/unix/src/TUnixSystem.cxx:1294
#4
#5 0x00007fea9772ee7f in G__destroy_upto (var=0x9999999999999999, global=global
entry=1, index=-1717986919) at /home/software/root/download/5.34-36/cint/cint/src/scrupto.cxx:854
#6 0x00007fea9772fa8c in G__scratch_globals_upto (dictpos=0x124dc18) at /home/software/root/download/5.34-36/cint/cint/src/scrupto.cxx:1279
#7 0x00007fea98133db0 in TCint::ResetGlobals (this=0x124db20) at /home/software/root/download/5.34-36/core/meta/src/TCint.cxx:733
#8 0x00007fea981bd511 in TROOT::EndOfProcessCleanups (this=0x7fea988abdc0 ROOT::GetROOT()::root, altInterpreter=) at /home/software/root/download/5.34-36/core/base/src/TROOT.cxx:751
#9 0x00007fea9816f250 in TUnixSystem::Exit (this=, code=4, mode=) at /home/software/root/download/5.34-36/core/unix/src/TUnixSystem.cxx:2207
#10 0x00007fea98174624 in TUnixSystem::DispatchSignals (this=0x12472b0, sig=kSigIllegalInstruction) at /home/software/root/download/5.34-36/core/unix/src/TUnixSystem.cxx:1298
#11
#12 0x0000000000563d6a in _M_gen_rand (this=) at /usr/include/c++/4.8.2/bits/random.tcc:408
#13 std::mersenne_twister_engine<unsigned long, 64ul, 312ul, 156ul, 31ul, 13043109905998158313ul, 29ul, 6148914691236517205ul, 17ul, 8202884508482404352ul, 37ul, 18444473444759240704ul, 43ul, 6364136223846793005ul>::operator() (this=) at /usr/include/c++/4.8.2/bits/random.tcc:459
#14 0x000000000057ce37 in advance () at /home/gu92yiv/workspace/smash/smash_1.6/src/include/smash/random.h:78
#15 smash::Experimentsmash::ColliderModus::initialize_new_event (this=this
entry=0x1643f00) at /home/gu92yiv/workspace/smash/smash_1.6/src/include/smash/experiment.h:1210
#16 0x0000000000587a1c in smash::Experimentsmash::ColliderModus::run (this=0x1643f00) at /home/gu92yiv/workspace/smash/smash_1.6/src/include/smash/experiment.h:1794
#17 0x00000000004c623f in main (argc=, argv=0x7ffeab5e1ef8) at /home/gu92yiv/workspace/smash/smash_1.6/src/smash.cc:659

It seems like this is an issue with root.
Is there some kind of limit for smash instances?

Thanks a lot for your help!
Greetings,
Steffen

Number of final interactions in output files

Hi! I have a little question/wish about .root files and Number of final interactions in this files.

I am interested about the information about number of interactions in the single one collisions, and I've tried to get this number from .root files - "Particles.root" and "Collisions.root". Nevertheless, I've found that there is no such brunch in trees of this files. Yes, there is the "ev" branch in "Particles.root" with # of events as histogram X-axis and with number of interactions as bin contents. But if we use TChain-class (instead the only one file's tree), the method "find bin and get its content" doesn't work, because all trees are merging when we use TChain. Of course, there is a few methods from which we can extract the necessary information, but all this methods seem to be inaccurate and slow.

So my question is: can we extract the number of interactions of the concrete event if we read TChain of files by some simple way?
Also I think that it would be much more conveniently to have the branch with number of interactions in event in the same fashion as the "impact" branch constructed (the "Entry" of histo is the number of event and X-axis is the "Impact"-parameter).

Thank you in advance for your reply.

Cannot compile smash-hadron-sampler when updating SMASH-2.0.2 -> SMASH-2.1

So far I used SMASH-2.0.2 with smash-hadron-sampler and everything worked well. When I tried to update to SMASH-2.1, I got 2 errors. I can compile SMASH itself, but then when building Makefile of smash-hadron-sampler using cmake I get
-- SMASH found: FALSE
I was able to resolve this - I found that SMASH updated Cuba-4.2 to Cuba-4.2.1, but this was not updated in cmake/FindSMASH.cmake. After updating this I was able to build Makefile, but it would be useful to update it also on your GitHub.
The second error I couldn't fix, it pops up during the compilation of gen.cpp, but it seems to be an error of SMASH:

smash/pdgcode.h:292:20: error: 'const struct smash::PdgCode::<unnamed union>::<unnamed>' has no member named 'is_nucleus_'; did you mean 'is_nucleus'?
     assert(digits_.is_nucleus_ == nucleus_.is_nucleus_);
smash/pdgcode.h:845:48: error: 'struct smash::PdgCode::<unnamed union>::<unnamed>' has no member named 'is_nucleus_'; did you mean 'is_nucleus'?
         digits_.n_q3_ = digits_.n_J_ = digits_.is_nucleus_ = 0;
                                                ^~~~~~~~~~~
                                                is_nucleus

I hope you find this useful.
Cheers

Facing issues while generating events with SMASH

Dear SMASH development team,
We wanted to generate events in Pb-Pb collisions in the TeV range,
however, it takes more than 160 hours to produce 4K events at 200 GeV.
Is this a result of the event generators' nature or are there any settings that we are overlooking?
Would you kindly offer any suggestions on how to produce Pb-Pb collision events at the TeV scale?

Another problem we have is that when we try to build SMASH by incorporating ROOT software, an error occurs.

Thanks and regards,
Sonali

Trouble in building smash

I installed all Prerequisites and when i try to build smash as followed by instructions i get this after "cmake .. -DPythia_CONFIG_EXECUTABLE=[...]/pythia8303/bin/pythia8-config" command

Untitled 1.pdf

Bug in pdgcode.h

Obvious, but annoying bug, here is the fix.

diff --git a/src/include/smash/pdgcode.h b/src/include/smash/pdgcode.h
index 86c2fc1..acf26f6 100644
--- a/src/include/smash/pdgcode.h
+++ b/src/include/smash/pdgcode.h
@@ -737,7 +737,7 @@ class PdgCode {
       bool antiparticle_ : 1;
 #else  // reverse ordering
       bool antiparticle_ : 1;
-      bool is_nucleus : 1, : 2;
+      bool is_nucleus_ : 1, : 2;
       std::uint32_t n_ : 4;
       std::uint32_t n_R_ : 4;
       std::uint32_t n_L_ : 4;

Error while building SMASH with ROOT on the System?

Hi all,
we have tried to build the model, running into an issue, which seems to be related to something in the code. As far as the configuration of pythia and eigen goes, it seems to work fine (although we had to download pythia 8.303 from pythia's site, because the link in the instruction has not worked at the time we tried to make it).

We used
git clone https://github.com/smash-transport/smash
to get the repository and set up eigen and pythia as described in the README file. Those programs did not complain.

After some trouble with the exact cmake command,

cmake -DCMAKE_PREFIX_PATH=/home/user/eigen-3.4.0/ .. .. -DPythia_CONFIG_EXECUTABLE=/home/user/pythia8303/bin/pythia8-config

produced the build files in the folder we made via mkdir smash/build. Is this command correct? The ReadMe is a bit confusing for us, as it wants to go to the folder smash/build/ while setting up eigen before this folder has been made in the next step setting the pythia path.

We get the error on the 'make' command, related to the "experimental" class after roughly 17 to 25 % of building:

In file included from /home/user/root/include/TString.h:29,
from /home/user/root/include/TNamed.h:26,
from /home/user/root/include/TDirectory.h:24,
from /home/user/root/include/TDirectoryFile.h:25,
from /home/user/root/root/include/TFile.h:28,
from /home/user/root/smash/src/include/smash/rootoutput.h:18,
from /home/user/root/smash/src/include/smash/experiment.h:50,
from /home/user/root/smash/src/experiment.cc:10:
/home/user/root/include/ROOT/RStringView.hxx:32:37: error: ‘experimental’ in namespace ‘std’ does not name a type
32 | using basic_string_view = ::std::experimental::basic_string_view<_CharT,_Traits>;
| ^~~~~~~~~~~~
/home/user/root/include/ROOT/RStringView.hxx:35:12: error: ‘basic_string_view’ does not name a type
35 | typedef basic_string_view string_view;
| ^~~~~~~~~~~~~~~~~

We use ROOT 6 (6.24/02), so is it possible this error might be somehow ROOT version dependent?

System: Ubuntu 20.04.03 LTS, focal on WSL 2. The same issue persists on a system with ROOT 6 and Mint 20.2 MATE.

In case you need any further information, please let us know.

Best regards,

Mateusz and Max

Troubles with SMASH building

Hello!

Trying to build SMASH, I've faced with the problem (see below). What can cause this and how can I fix it??? Thanks for future answer.

My terminal:

[ 22%] Building CXX object src/CMakeFiles/objlib.dir/configuration.cc.o In file included from /home/vlad/HEP/SMASH_generator/boost_1_49_0/boost/filesystem.hpp:35:0, from /home/vlad/HEP/smash_1.6/src/configuration.cc:17: /home/vlad/HEP/SMASH_generator/boost_1_49_0/boost/filesystem/v3/path.hpp:732:24: error: ‘path’ is already declared in this scope using filesystem3::path; ^~~~ /home/vlad/HEP/smash_1.6/src/configuration.cc:89:1: error: prototype for ‘smash::Configuration::Configuration(const boost::filesystem3::path&)’ does not match any in class ‘smash::Configuration’ Configuration::Configuration(const bf::path &path) ^~~~~~~~~~~~~ In file included from /home/vlad/HEP/smash_1.6/src/configuration.cc:10:0: /home/vlad/HEP/smash_1.6/src/include/smash/configuration.h:969:3: error: candidates are: smash::Configuration::Configuration(const YAML::Node&) Configuration(const YAML::Node &node) // NOLINT(runtime/explicit) : see above ^~~~~~~~~~~~~ /home/vlad/HEP/smash_1.6/src/include/smash/configuration.h:823:3: error: smash::Configuration::Configuration(smash::Configuration&&) Configuration(Configuration &&) = default; ^~~~~~~~~~~~~ /home/vlad/HEP/smash_1.6/src/include/smash/configuration.h:818:3: error: smash::Configuration::Configuration(const smash::Configuration&) Configuration(const Configuration &) = default; ^~~~~~~~~~~~~ /home/vlad/HEP/smash_1.6/src/include/smash/configuration.h:803:12: error: smash::Configuration::Configuration(const boost::filesystem::path&, const boost::filesystem::path&) explicit Configuration(const bf::path &path, const bf::path &filename); ^~~~~~~~~~~~~ /home/vlad/HEP/smash_1.6/src/include/smash/configuration.h:794:12: error: smash::Configuration::Configuration(const boost::filesystem::path&) explicit Configuration(const bf::path &path); ^~~~~~~~~~~~~ /home/vlad/HEP/smash_1.6/src/configuration.cc:93:1: error: prototype for ‘smash::Configuration::Configuration(const boost::filesystem3::path&, const boost::filesystem3::path&)’ does not match any in class ‘smash::Configuration’ Configuration::Configuration(const bf::path &path, const bf::path &filename) { ^~~~~~~~~~~~~ In file included from /home/vlad/HEP/smash_1.6/src/configuration.cc:10:0: /home/vlad/HEP/smash_1.6/src/include/smash/configuration.h:969:3: error: candidates are: smash::Configuration::Configuration(const YAML::Node&) Configuration(const YAML::Node &node) // NOLINT(runtime/explicit) : see above ^~~~~~~~~~~~~ /home/vlad/HEP/smash_1.6/src/include/smash/configuration.h:823:3: error: smash::Configuration::Configuration(smash::Configuration&&) Configuration(Configuration &&) = default; ^~~~~~~~~~~~~ /home/vlad/HEP/smash_1.6/src/include/smash/configuration.h:818:3: error: smash::Configuration::Configuration(const smash::Configuration&) Configuration(const Configuration &) = default; ^~~~~~~~~~~~~ /home/vlad/HEP/smash_1.6/src/include/smash/configuration.h:803:12: error: smash::Configuration::Configuration(const boost::filesystem::path&, const boost::filesystem::path&) explicit Configuration(const bf::path &path, const bf::path &filename); ^~~~~~~~~~~~~ /home/vlad/HEP/smash_1.6/src/include/smash/configuration.h:794:12: error: smash::Configuration::Configuration(const boost::filesystem::path&) explicit Configuration(const bf::path &path); ^~~~~~~~~~~~~ src/CMakeFiles/objlib.dir/build.make:190: recipe for target 'src/CMakeFiles/objlib.dir/configuration.cc.o' failed make[2]: *** [src/CMakeFiles/objlib.dir/configuration.cc.o] Error 1 CMakeFiles/Makefile2:1561: recipe for target 'src/CMakeFiles/objlib.dir/all' failed make[1]: *** [src/CMakeFiles/objlib.dir/all] Error 2 Makefile:140: recipe for target 'all' failed make: *** [all] Error 2

output Npart and Ncoll

Hi there, I wonder if it is possible to output "number of participant" and
"number of binary collisions" in the final output?
Thanks
Yu

Feature request: Event regeneration in case of it is empty

Hi!

Generating events with quadratic distributed impact-parameter in range [0,20] fm I found out that about 46% of events are empty. I think that it will very convenient and practical if there is ability to REgenerate event if it is empty right in the generation process. At least, it will save the disk space, decrease time of data analysis code flow and allow us have so good statistic as we need (instead 1/2 of this).

Thank you in advance.

Light nuclei in SMASH

Hi!
Exploring file "particles.txt.h" I've found the ability of SMASH to produce light nuclei (deuterons). It is very nice for my purposes, but I some questions about it.

Why deuterons productions "commented" by default? What does it means that "These are normally represented by neutrons and protons" and "should be uncommented only for SPECIFIC studies"? And how does SMASH separate deuteron and just close-located neutron and proton? Or more general - what is "deuteron" from the point of view of SMASH?

Thank you in advance for your reply.

SMASH runs slowly on a new system

Dear experts

I have been running SMASH on a Ubuntu 18 system with an 9th generation intel i7 chip. The performance of SMASH on this machine is reasonably good (1000 events in ~3 hours for central Au+Au collisions at 39 GeV). Recently I moved to a newer PC with a 12th gen intel i9 chipset running Ubuntu 22. The speed of SMASH has gone down drastically, I was able to reach close to a hundred events in 3 hours for the same collision system. This is compared on the single core performance of both systems. I even checked if the new chipset was running on lower clock-speeds but that does not seem to be the case (3800 MHz vs 4900 MHz). Is this a limitation of the new generation processors which use a mix of performance + efficiency cores, or am I overlooking any missing detail?

Thanks a lot in advance

Smash_new_user

Iam asking is there is any documentation file (User guide) for the functions that used to buildup code to reproduce some of the figures in your site.
like the Pythia documentation

Cannot compile SMASH due to issue with Pythia ver. 8.303

Greetings all,
I have a problem compiling SMASH ver. 2.1.1 (namely smash/src/stringprocess.cc causes errors) because of the missing member of Pythia classes:

smash/src/stringprocess.cc:69:20: error: ‘class Pythia8::SigmaTotal’ has no member named ‘initInfoPtr’
/src/stringprocess.cc:71:25: error: no matching function for call to ‘Pythia8::SigmaTotal::init()’
/src/stringprocess.cc:597:60: error: no matching function for call to ‘Pythia8::Pythia::next(double&)’

I'm sure I'm using the correct version of Pythia8 (ver. 8.303).
I'm using gcc ver. 4.8.5, GSL ver. 2.5, eigen ver. 3.4.0, boost ver. 1.68.0, and root ver. 6.16.

I've tried SMASH ver. 2.1.2 - the issue remains.

A couple of unit tests fail

Dear sir/madam,
My name is Pavlo Panasiuk, I am busy with comparing several MC generators. Recently we discussed an issue related to SMASH-1.8 installation (thanks for helping with that). Now that I ran unit tests on both SMASH-2.2, SMASH-1.8, I have encountered a few fails, namely

  1. 2.2 : 29 - integrate failed
  2. 1.8 : 29 - integrate , 48 - photons failed

It does not seem like much, but I want to be sure these are either unimportant or fixable. To be precise, I am going to run the models in two ways:

  1. Au+Au collider on low energies, with default interaction constants etc
  2. Infinite matter simulation on about same densities, with default interaction constants etc.

Please let me know if these are known issues (and whether they are severe) and whether I can/need to do something about them.
If you need any test outputs, please let me know how do I extract them.

Thanks in advance.

SMASH data - (how to) extract particle charge from .root file?

Hello!

I've generated some data and saved it as .root file. I can extract momenta, coordinates and PID's of final particles and use it to find (pseudo)rapidities, pT, phi, etc. But I also don't understand how to extract electric charge. How can I do it?

Example of .cxx file I use to get some histograms is below:
`
#include "TRandom3.h"
#include "TFile.h"

#include "TH1.h"
#include "TH1D.h"
#include "TH2D.h"
#include "TH3.h"
#include "TTree.h"

#include "TF1.h"
#include "TCanvas.h"
#include "TPad.h"
#include "TMath.h"
#include "TStyle.h"
#include "TLegend.h"
#include "TRandom3.h"
#include "TString.h"

#include "TStyle.h"
#include "TGraphAsymmErrors.h"
#include "TGraphErrors.h"
#include "TLatex.h"

#include "TH1.h"
#include "TH1D.h"

#include
using namespace std;

double Pt(Double_t a, Double_t b) // func. for abs. value of particle pT
{
double c=sqrt(aa+bb);
return c;
}

double P_abs(Double_t a, Double_t b, Double_t c) // func. for abs. value of particle momentum
{
double p = sqrt(aa+bb+c*c);
return p;
}

double Y_Eta(Double_t a, Double_t b) // func. for particle rapidity and/or pseudorapidity
{
double c=0.5*log((a+b)/(a-b));
return c;
}

double Phi(Double_t a, Double_t b) // func. for particle azimuth angle in momenta space
{
double c = atan2(b, a);
return c;
}

void extract_events_tracks()
{
// ##### open file and get tree, get branches
TFile *file = new TFile( "/home/vlad/HEP/smash/smash_build/data/26/Particles.root" ); //path to data file
TTree tree = (TTree)file->Get("particles");

const int NMaxTrack = 15000;
Double_t p0[NMaxTrack];
Double_t px[NMaxTrack];
Double_t py[NMaxTrack];
Double_t pz[NMaxTrack]; //
Int_t pdgcode[NMaxTrack];
Int_t npart = 0;

tree->SetBranchAddress( "npart",       &npart   );
tree->SetBranchAddress( "p0",          p0       );
tree->SetBranchAddress( "px",          px       );
tree->SetBranchAddress( "py",          py       );
tree->SetBranchAddress( "pz",          pz       );
tree->SetBranchAddress( "pdgcode",     pdgcode  );

// ##### prepare some histos to fill:
TH1D *fHistPt = new TH1D("fHistPt", "p_{T} distribution;p_{T} (GeV/c);dN/dp_{T}", 100, 0, 5 );
TH1D *fHistEta = new TH1D("fHistEta", "#eta distribution;#eta (GeV/c);dN/d#eta", 100, -5, 5 );
TH1D *fHistY = new TH1D("fHistY", "Y distribution;Y (GeV/c);dN/dY", 100, -5, 5 );
TH1D *fHistP_abs = new TH1D("fHistP_abs", "P_abs distribution;P_abs (GeV/c);dN/dP_abs", 100, 0, 5 );
TH1D *fHistPhi = new TH1D("fHistPhi", "#phi distribution;#phi (GeV/c);dN/d#phi", 100, -4, 4 );

// ##### event loop
int nEvents = tree->GetEntries();

// int nEvents = 20000;
for ( int iEvent = 0; iEvent < nEvents; iEvent++)
{
tree->GetEntry(iEvent);

    if ( iEvent % 100 == 0 )
        cout << "processing " << (int)iEvent << "\r"; cout.flush();

    for ( int iTrack = 0; iTrack < npart; iTrack++ )
    {
        //int id = iTrack;
        double p_abs;
        double pt;
        double phi;
        double y;
        double eta;
        int charge;

        p_abs=P_abs(px[iTrack] , py[iTrack] , pz[iTrack] );
        pt = Pt(px[iTrack], py[iTrack]);
        eta = Y_Eta(p_abs, pz[iTrack]);
        y = Y_Eta(p0[iTrack], pz[iTrack]);
        phi=Phi(px[iTrack], py[iTrack]);

        fHistPt->Fill(pt);
        fHistEta ->Fill(eta);
        fHistY ->Fill(y);
        fHistP_abs ->Fill(p_abs);
        fHistPhi->Fill(phi);

          } // end of track loop

}//end of event loop

//  output lists:
TFile *fileOutput = new TFile( "SMASH_output_histograms.root", "RECREATE" );
fHistPt->Write();
fHistEta ->Write();
fHistY ->Write();
fHistP_abs ->Write();
fHistPhi->Write();

fileOutput->Close();

}
`

Using a multicore processors in generation process

Hi!

Can I speed up a SMASH generation process via using more then 1 core of my processor? Of course, I can use few terminals to generate data files simultaneously , but it leads to increasing of data files numbers and a little chaos in data-directory. So I am trying to find out more elegant way to speed up calculations than the above.

Thank you in advance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.