DataMedSci / pymchelper

Python toolkit for SHIELD-HIT12A and FLUKA
http://datamedsci.github.io/pymchelper/
15 stars 7 forks source link

spotsize definion in pld2sobp #233

Open grzanka opened 7 years ago

grzanka commented 7 years ago

it looks that spot size saved in PLD file is not exactly the same as the sigma of beam position at virtual source.

PLD file description says that Spot1 or SpotID item (second item in Layer line in PLD file) is just a tag used to differentiate spot sizes (for the same beam energy there may be different machine settings). It looks that it cannot be interpreted as the beam sigma in milimeters as it is done currently in pld2sobp script and in MC generators:

https://github.com/DataMedSci/pymchelper/blob/v0.6.10/pymchelper/utils/pld2sobp.py#L105 self.layers.append(Layer(token[1].strip(), # Spot1

class Layer(object):
    def __init__(self, spotsize, energy, meterset, elsum, repaints, elements):
        self.spotsize = float(spotsize)

Looking at several PLD files available to me I see that spottag is always set to 3 (for wide range of energies). Assuming 2 meters of air between virtual source position and isocenter, point-like beam will get size (in terms of sigma), following Lynch-Dahl formula:

I will also cross-checked measured spot sizes at different energy levels, but I don't expect them to be equal to 3mm. It would be necessary to cross-check simulated spot-sizes with what is measured.

It would suggest avoid naming this parameters as spotsize and use rather spottag name.

grzanka commented 7 years ago

From some materials available on the web I see that Proteus cyclotron installed at IFJ delivers beam with 2 settings: sigma=2.7 mm and 4 mm (at highest energy). See i.e.: https://ccb.ifj.edu.pl/en.dla_przemyslu.html

Does it mean that spottag=3 means the first settings ("sigma=2.7mm at 220 MeV") ?

See also page 37 in https://comex5.ifj.edu.pl/slides/olko.pdf Beam spot shape is sometimes more elliptical than circular.

I think that this issue can be resolved in following way: pld2sobp file takes as input an optional file with description of beam model. In this additional file a lookup table (or dictionary will be saved) which will define size of beam source for given spottag (and/or energy). Also energy dispersion can be saved there. Finally this values could go into sobp.dat

If beam model file is missing, then deltae=0 (or fixed value provided by user) and spotsize=0 (or fixed value provided by user).

grzanka commented 7 years ago

It looks from correspondence with @NatMoj that beam spot sizes shouldn't be taken as spottag value.

To clarify what sobp.dat includes:

The proposition is to to introduce another file, with some simplified beam model description, including i.e.:

For each value of spottag there should be a separate beam configuration file.

In pld2dat if user provides the file, then spotsize (and energy spread) would be transferred into sobp.dat, otherwise spotsizes would be assumed to be zero at virtual source (point-like beamlet).

grzanka commented 7 years ago

Suggested beam model file template:

energy spread is optional.

{
 "model" : [
   {
     "spottag" : 3,
     "layers" : [
       {
         "mean_energy" : 60.0 ,
         "energy_spread" : 60.0 ,
         "spot_x" : 1.1,
         "spot_y" : 1.2
       },
       {
         "mean_energy" : 150.0 ,
         "spot_x" : 1.3,
         "spot_y" : 1.4
       }
     ]
   }
  ]
}