It appears that EPOS works in the latest version of C8, but there is something wrong. The validation relative to C7 and MCEq indicates major problems. Maybe a wrong cross section.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
I generated the following cross section (getInteractionLength) output with C8:
p-p at lgE/GeV=0 -> 1e+09 eV is 54.7267 g/cm2 p-p at lgE/GeV=1 -> 1e+10 eV is 54.6954 g/cm2 p-p at lgE/GeV=2 -> 1e+11 eV is 52.5978 g/cm2 p-p at lgE/GeV=3 -> 1e+12 eV is 47.0699 g/cm2 p-p at lgE/GeV=4 -> 1e+13 eV is 41.3565 g/cm2 p-p at lgE/GeV=5 -> 1e+14 eV is 35.9293 g/cm2 p-p at lgE/GeV=6 -> 1e+15 eV is 30.5427 g/cm2 p-p at lgE/GeV=7 -> 1e+16 eV is 24.8582 g/cm2 p-p at lgE/GeV=8 -> 1e+17 eV is 20.5731 g/cm2 p-p at lgE/GeV=9 -> 1e+18 eV is 17.3671 g/cm2
and also
p-O at lgE/GeV=0 -> 1e+09 eV is 94.5062 g/cm2 p-O at lgE/GeV=1 -> 1e+10 eV is 94.6836 g/cm2 p-O at lgE/GeV=2 -> 1e+11 eV is 92.4992 g/cm2 p-O at lgE/GeV=3 -> 1e+12 eV is 85.805 g/cm2 p-O at lgE/GeV=4 -> 1e+13 eV is 79.0019 g/cm2 p-O at lgE/GeV=5 -> 1e+14 eV is 72.6877 g/cm2 p-O at lgE/GeV=6 -> 1e+15 eV is 66.0671 g/cm2 p-O at lgE/GeV=7 -> 1e+16 eV is 58.5674 g/cm2 p-O at lgE/GeV=8 -> 1e+17 eV is 52.417 g/cm2 p-O at lgE/GeV=9 -> 1e+18 eV is 47.4972 g/cm2
@pierog@riehn can you verify that those number look good? They don't seem to be very wrong.... If this is OK, we have to look at secondary products in the output...
Jup that looks wrong. Maybe its the event initialization. I moved that around some times. Maybe it is not called when only getInteractionLength is called.
Seems to be a general problem. The interaction length in air is correct, that is the sibyll result corresponds to the interaction length in the sibyll paper (label: 'lambda_sibyll.txt').
But the proton-proton interaction length is too small, both for sibyll and epos..
. So the proton-proton interaction length is indeed smaller. In other words the higher number density of protons for the same mass density overcompensates the cross section. Wieder was gelernt
Looking again at the interfaces was not a pleasure though.. its quite horrible actually. We implement getInteractionLength for each model separately. Then the getCrossSection routine has a different signature for each model. We really need to clean that up. After ICRC of course..
Thanks for the checks. This is very nice, however, it does not support the original idea for a problem with EPOS. Thus, we still have to search for other problems.
This brings us to your second point: we really want to cleanup the model interfaces. Felix, maybe we should have a discussion between a few people to write down what we really need.
The great thing afterwards will be that we can finally run CORSIKA 8 in "air-shower mode", but also in "CRMC mode" when we have the interfaces clean. We could finally start to have meaningful physics validation on the level of interaction models.
I agree the interface needs an overhaul. I will be away the next weeks, so a meeting would have to wait until September. I will start an issue though to collect problems and ideas.
Maybe we should take this opportunity to design our first validation tests. @rulrich do you have an idea for the "basic rules" we want to follow. I presume there will be validation of individual modules which should be mostly independent of other modules, i.e. in the epos case testing the cross sections, maybe particle multiplicities at a fixed energy etc. And then there would be validation of the framework, like comparing showers to C7/conex.
In general, validation should become quite flexible, since different physics modules will certainly need different validation logic/tools. Thus, we cannot entirely and exclusively rely on RIVET. Validation probably has to run like unit-tests, but generating output in different ways -- also human readable plots/pdf.
@riehn maybe we can have a skype call about the interface stuff on Thursday 2:30? I would be glad to go through the details with you. I think, we better cleanup the interfaces, which will directly allow us to run e.g. hepmc output or rivet, as an intermediate step to understand EPOS (and all the models) much better.