Square source issue

Dear Developers,
I’m currently working on a monolithic detector made of a 3x3 pixel matrix with a pixel pitch of 50um and a thickness of 50um. I’m experiencing some problems with the collected charge when I use a square beam to have a uniform illumination of a pixel (e.g. central pixel of the matrix). The square side of the source is 50um, the divergence 0mrad and the position (0,0,-1mm).

I’m using the following 3x3 weighting potential (field maps are imported from TCAD and converted into the regular mesh):

As you can see from the following picture, the deposited charge simulated with the module [DepositionGeant4] follows the Landau distribution:

And the parameters in my configuration file are the following:
physics_list = FTFP_BERT_EMZ
particle_type = “Mu-”
enable_pai = true
number_of_particles = 1
source_energy = 200MeV
source_position = 0um 0um -1mm
source_type = “square”
square_side = 1mm
square_angle = 0mrad
max_step_length = 1um

However, when I check the histogram with the total charge per event I obtain a very large number of events with 0 collected charge:

This is consistent with the large majority of signals from the central pixel of the matrix (the one with the electrode on unit potential):

Do you have any suggestions concerning what I should check? It seems something related to the charge sharing because when the square side is enough smaller (i.e. the particle is impinging in the centre of the pixel) this does not happen.

Thank you in advance for your support!
Kind regards,

Hi @gretand ,

could you maybe specify on your question. What’s the actual issue you’re facing? What’s the unexpected behaviour you’re seeing?

From your text and your pasted configuration snippet, I can see the following inconsistency: you mentioned a square with a side length of 50 um. In your config file however a 1 mm side length is defined. Could this have something to do with your issue?


Just to add:

  • with a beam larger than your detector you would expect many empty events - so that might be the reason for the peak.
  • Your statement “[…] from the central pixel of the matrix (the one with the electrode on unit potential) […]” makes me think that there is some misinterpretation how the charge induction works. Maybe have a look at this thread here and check if that makes things more clear. TL;DR: the weighting potential is shifted around to calculate the induced current for all pixels, depending on your setting in the TransientPropagation.
  • Could you maybe attach the full configuration file of the simulation for us to read?
  • Which version of Allpix Squared are you using (output of allpix --version would be very handy!)


Dear @pschutze,
I’m sorry, my bad. The side length defined in the config file and related to these results is 50um. I have wrongly copied and pasted the parameters from another try with a square side of 1mm.

What I’m not understanding is why I have so many events where the collected charge is 0. I chose a square side of 50um to have a uniform illumination of the pixel with a pixel pitch of 50um (as described here).

Thank you for your support.

Best regards,

Dear @simonspa ,

  • I’m sorry, my bad. The side length defined in the config file and related to these results is 50um. I have wrongly copied and pasted the parameters from another try with a square side of 1mm. (As you said there are many empty events in that case).

  • Thank you for this useful thread; yes, my statement is not accurate. Things are very clear thanks to your detailed explanation. I’m interested in seed pixel signal only and I have tried to simulate events both with 1x1 weighting potential and 1x1 induction matrix and with 3x3 weighting potential and 3x3 induction matrix, but I still do not understand why I obtain so many events with 0 collected charge.

  • Sure, in the attachment is the configuration file.
    tcad_field_simulation_pixel.conf (5.6 KB)

  • I’m using Allpix with cvmfs and I have tried the latest (v2.0.0-619-g3f73ba43), the 2.0.2 and the 1.6.0 to see if there was something different in the results.

Thank you again for your support!
Kind regards,


Hi @gretand ,

what puzzles me a bit, still, is that in the induced current plot you show, you have 181 e collected, but the mean total signal is more than 3000 e.

It is a bit hard to judge without the corresponding fields, as we can’t really reproduce your scenario. So I currently have two hints:

  • You choose the induction_matrix to be 1,1, maybe you can extend this. Note that since version 2.0 you’d call distance=2, which is similar to induction_matrix=3,3.
  • You are currently not defining a threshold. If indeed you have a lot of events with charges in the order of few hundreds of electrons, the default threshold of 300 e might be a hint.
  • From the fact that the zero-charge events disappear when the size of the square is reduced: could it be simply your detector that is inefficient at the pixel edges/corners? This is nothing unusual, especially at thresholds of 300 e. You could check on that by …
    • explicitly shooting into that region of the sensor and checking e.g. the line graphs of the GenericPropagation module.
    • lowering the threshold
    • looking at the efficiency map of the DetectorHistogrammer
    • looking at earlier histograms. Meaning, check how much charge appears in the PulseTransfer, the DefaultDigitizer, …

I hope this helps a bit.


…and just to add to @pschutze - if you find yourself still stuck with the same issue, feel free to contact us directly to provide us your fields and configurations so we can try to reproduce the issue.