Pulse Height Tally (F8 tally)

Hey, I have a question on the tally capabilities of OpenMC. Maybe some of you can help me with this.

I would like to model Gamma-detectors in OpenMC. In MCNP this is usually done by the Pulse Height Tally (F8 tally) - (which is used in the cell of the scintillation or semiconductive material). The Pulse Height Tally determines how much energy a particle releases in total a cell.

For this particular kind of tally, the particle’s entire track must be calculated before the tally’s value can be determined.

In my understanding, the heating function is not capable of this. It returns all different interactions’ energy.

Is there any way or ‘‘trick’’ of determining the value of the Pulse Height Tally?

If OpenMC does not have this capability, maybe some could estimate how much work it would be to implement such a feature and where to start?

I thank a lot again.

Christopher

Hi @cp-f and welcome to the forum. You are correct that heating tallies in OpenMC are normal volume-integrated tallies and won’t give you the information that a pulse-height tally would. I don’t believe there’s any easy trick for obtaining such information either.

If you wanted to implement something like this in OpenMC, I would probably recommend ignoring the current tally classes – pulse-height tallies are so fundamentally different that it doesn’t make sense to shoehorn them into the same hierarchy. I don’t really know how they are implemented in other codes, but it seems like the Particle class itself would have to keep track of how much energy has entered/left a cell and then score the appropriate value when the particle is terminated. Accounting for secondary particles makes this even more difficult because that information has to be shared/combined for any secondaries. Another complication is how this would work in the presence of threading. If the code were serial only, you could separate the information from the particle itself, but with multiple threads simulating multiple particles, that information needs to stay with the particle itself. All in all, this is a non-trivial task if you wanted to have an implementation worthy of inclusion in the main branch of the code. You might want to first try doing “quick and dirty” implementation (i.e., get it working in serial, hard coded for a cell you’re interested in) and then slowly build it from there.

Hey Paul,

Thanks a lot for your answer and the information! I will try to work on that but can not promise anything. I will keep you updated.

Thanks again.

Best
Christopher