Skip to content

DPMJETIII Tabulated Cross Sections not reachable for nuclear target #242

@StFroese

Description

@StFroese

In the DPMJETIII _cross_section function the following check is done (after checking if cs should be calculated with glauber):

if (kin.p1.is_nucleus and kin.p1.A > 1) or (kin.p2.is_nucleus and kin.p2.A > 1):
glxs = self._lib.dtglxs
return CrossSectionData(
prod=glxs.xspro[0, 0, 0],
)
if kin.p1 == 22 and kin.p2.A == 1:
stot, sine, _ = self._lib.dt_siggp(photon_x, kin.virt_p1, kin.ecm, 0)
return CrossSectionData(total=stot, inelastic=sine, elastic=stot - sine)
stot, sela = self._lib.dt_xshn(
self._lib.idt_icihad(kin.p1), self._lib.idt_icihad(kin.p2), 0.0, kin.ecm
)
return CrossSectionData(total=stot, elastic=sela, inelastic=stot - sela)

So for a proton-Oxygen kinematic the first if is reached but no calculation is done, this only accesses the xspro entry in the dtglxs fortran common block.

I think the last there lines here are what we actually want to run inside this condition.
But in this case there is no prod cross section, since only tot and elastic are returned.

Maybe max_info should just default to True for DPMJET, so Glauber is always run for nuclei target or projectiles?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions