The charge collection efficiency of pixels

Excuse me, I don’t quite understand the problem.

I am trying to get the seed pixelhit, i.e. the pixelhit with the largest charge. I run 100,000 events and found that there were only over 4,6900 events of seed pixelhit(). I don’t know if it’s a problem with my parameter settings or something else. I think this amount is much less than expected. I don’t know if other undetected event particles missed pixels or something else.
I would be very grateful if you could tell me what caused this.

The relevant configuration files are as follows:
main.conf (3.9 KB)
Supix_geometry.conf (298 Bytes)
supix1.conf (853 Bytes)
modules.root (326.6 KB)


I think x-ray physics is the culprit here; as I understand it, you have a beam of 5.9 keV photons incident on an 18 µm thick silicon sensor, and I believe that around half of the x-rays will just pass through the sensor without interacting in this configuration. As opposed to a minimum ionising particle, an x-ray does not deposit energy all the way along its track, so if it passes clean through the sensor it will leave no trace and thus no PixelHit.
You can check the numbers in x-ray attenuation tables however, and see what is expected. What I found is just from a quick and approximate look, and memories of doing similar things with thin sensors.

Kind regards,

Hi! Thanks for your help~
I still have some problem.
Can I get the names of all the physical volumes that the particles pass through in an event? Or can I get all the tracking information for the particles in an event?


We don’t have the possibility to get all the volumes that are passed through without interaction, but the start- and end-volumes can be found from the MCTrack object. To get all the tracks, even the ones that do not interact, you can use record_all_tracks = true in the [DepositionGeant4] module.

Kind regards,

Thank you very much for your help, I’ll try.

@Newyean Sorry for bothering.
Can you please tell me how are you calculating the charge collection efficiency?
Is there a simple way or a macro for example?

Thank you and best regards,


Sorry, my problem is that the number of Entries in the resulting histogram is too small, which means particles are not being deposited in the sensor. I don’t think it has anything to do with charge collection efficiency. However, I think the charge collection efficiency can be obtained by the ratio of the collected charge to the deposited charge, but I am not sure whether my method is reasonable, just for reference.

Sorry, I have a small question I’d like to consult.
I used a Gamma with 5.9keV as the particle source to hit a 55um pixel wafer with a thickness of 5um epitaxial layer and 50um substrate. By observing the position distribution of deposited charge, I found that deposited charge mostly concentrated in epitaxial layer. But when I send a high energy proton, it’s distributed over the entire thickness of the pixel wafer. What are the possible reasons for this distribution?


How are you extracting these values?
To me, it looks like you only log the deposited charge positions when you collect some charge in the detector.
This effect then comes back to the different energy deposits of photons and high energy protons; a photon will deposit its energy around a single point in the detector, while a proton will deposit energy along a full line through the detector.
Now, for a photon interacting far outside of the epitaxial layer, very little charge will make it to collection in your pixel as the generated charge carriers will “get stuck” in the substrate. For a proton however, charge carriers are created in both the substrate and the epitaxial layer, and thus some charge will be collected in most events.
If you only plot the deposited charge for events where some charge is collected, the photons interacting deep in the substrate will thus not show up, whereas the protons will.

Kind regards,


Just trying to make sure.
Doesn’t your explanation depend on the parameter max_depth_distance in the SimpleTrfansfer module?
I see that he put this parameter to 18 um, which means that charge within the 18um depth will be collected, which means not only from the epitaxial layer. If I understand this parameter correctly.



Hi @Newyean

isn’t this expected given the absorption length of 5keV gammas in silicon? They enter from the surface and a significant fraction is absorbed in the first ~10-20um. Also, you might have a support layer configured that absorbs some more? You may want to check in a visualization.

Also, @hdarwish thanks for your observation, this should indeed not set to such a large depth because that essentially will just collect all generated charges in the given volume instead of relying on charge transport. This might explain the rather shard drop-off at around 18um depth :slight_smile:

On a side note: your detector seems to be thicker than 55um since it extends up to larger than z = 30um in your plots, maybe this is an additional clue?