RE: [fluka-discuss]: determining cross-section- sanity check

From: Anton Lechner <>
Date: Wed, 27 Nov 2013 14:25:25 +0000

Dear Andrew,

If you add a USRYIELD scoring with PHOTON on WHAT(2) and you revert back to the WHAT(4) and WHAT(5) you originally used, then you get the yield of photons (differential in energy) exiting your target at the backside. If you would now have a thick target, this would not be the ideal method to get the photon spectrum from pion-decay since A) photons could interact within the target and hence they can loose energy or they could be absorbed before exiting and B) photons could also emerge from other processes than pion-zero decay. But since you have a very thin target, the exiting photons should be mostly from pi-zero decay and they most likely have no interaction before exiting (but still be aware of my comments above if you once change the target geometry).

Another (more advanced way) to directly look at decay products from pion-zeros is to use the MGDRAW user routine (which then needs to be compiled and linked against FLUKA to get your own FLUKA executable). MGDRAW has different entries, which can be specifically be activated by using the USERDUMP card in your input file. The relevant entry to intercept interaction products is USDRAW. If you are interested to give it a try, look at the sample code below. The idea is to dump the energy of photons created in pi-zero decay in a file (histogramming must be done by yourself at the postprocessing level).

I have just another remark: to avoid running millions of primaries to get high-statistics results, you may want to consider to artificially alter the inelastic nuclear interaction length in your target via LAM-BIAS.

Please send new questions always to the mailing list, so that other people can also profit from the answer (or give another answer by themselves). I take the liberty to forward this message to the mailing list

Cheers, Anton

Sample code:

* The following IF condition is fulfilled if A) the incoming particle (JTRACK=particle ID)
* is a pi-zero (which has particle code 23) and if B) the physical process was a particle decay (ICODE=102):
      IF ( JTRACK .EQ. 23 .AND. ICODE .EQ. 102 ) THEN

* We only look at pion-zero decay in the target## (note that your two target layers have the region number 3 and 4)
         IF( MREG .EQ. 3 .OR. MREG .EQ. 4) THEN

* Here we loop over all secondaries from the decay:
                   DO 199 INMB = 1, NP
* We only look at photons (which have particle code 7) as in rare cases you might get other decay modes (e.g. e^- + e^+ + photon)
                         IF( KPART( INMB ) .EQ. 7) THEN

* Here you might want to include a print statement which dumps TKI (INMB), which is the photon energy
* If you use any biasing technique, you must also consider the statistical weight of the photon ( given by WEI(INMB))

                         END IF

         END IF
      END IF

## The reason why we restrict ourselves to pion-zero decay inside the target is that other particles (kaons, charged pions) can still decay in your surrounding vacuum and some of these decay products are pi-zeros, which we obviously don't want to include (note that USRYIELD scoring does not include these pi-zeros since it only looks at products of inelastic hadronic reactions).

From: taylora []
Sent: 27 November 2013 09:50
To: Anton Lechner
Subject: Re: [fluka-discuss]: determining cross-section- sanity check

Dear Anton,

Many thanks again. I now obtain sensible cross-sections for
pi0 production. Just to check. If I now want to obtain the
gamma-ray spectrum (following the pion decay), should I simply
return to setting WHAT(4) and WHAT(5) to positive values?

Thanks again,

> Dear Andrew,
> There are two key points to be considered when scoring the yield of pi-zeros:
> 1) Pi-zeros have a very short mean lifetime (around 8E-17 seconds) and will
> decay before crossing your boundary to vacuum. For example, considering a 10
> GeV pi-zero, time dilation will give you a mean lifetime of 6E-15 seconds in
> the lab frame which means an average range of ~2E-4 cm. This is much less
> than your target thickness of 0.01 cm. Instead of scoring the yield of
> particles crossing from your target to vacuum, you should consider to score
> directly the yield of particles emerging from inelastic interactions. This is
> also possible with USRYIELD, by setting on the first card WHAT(4)=-1.0 and
> WHAT(5)=-2.0 (other fields can remain the same).
> 2) You define your hydrogen target with a density of 0.8988E-02 g/cm3, which
> results in an inelastic scattering length for protons (at 50 GeV) of 6034 cm
> (you can find this number in the output file). Considering that your target
> is 0.01 cm thick, you would need to run many more primary events: on average,
> less than two protons out of 1 million will have an inelastic nuclear
> interaction. Running 10000 primaries, as specified in your input, is hence
> not sufficient to generate a spectrum with reasonable statistics.
> Just a final remark: when defining a material, it is not recommended to set
> the atomic weight manually (WHAT(2) on the MATERIAL card) but to leave it
> blank (FLUKA internally derives the correct value).
> Cheers, Anton
> ________________________________
> From: [] on
> behalf of Andrew Taylor []
> Sent: 25 November 2013 13:20
> To:
> Subject: [fluka-discuss]: determining cross-section- sanity check
> Dear Fluka People,
> I'm trying to do a sanity check at the moment by determining the
> p-p cross-section for a fixed target set-up. However, using the
> attached input file, I don't seem to get any flux recorded in my
> output file (though the simulation seems to run ok).
> Since I'm a newbie, I suspect my mistake is a trivial one. Could
> someone more experienced take a look + highlight what's wrong?
> Many thanks,
> Andrew
> --
> ------------------------------------------------------------
> Dr. Andrew Taylor-Castillo
> School of Cosmic Physics
> Dublin Institute for Advanced Study
> Ireland
> office: +353 16621333x337
> mob.: +353 877116296
Received on Wed Nov 27 2013 - 17:27:08 CET

This archive was generated by hypermail 2.3.0 : Wed Nov 27 2013 - 17:27:17 CET