Dear Allpix2 experts,
I am using Allpix2 to do some research about charge sharing. There are some questions:
we use “cluster size” to determine whether charge sharing has occurred. Specificially, When a particle interacts with the detector, we consider that charge sharing has occurred if the cluster size is greater than 1. Is this method of judgment correct?
If the first statement is correct, when the input count rate is high and multiple particles interact with the detector at the same time, does the cluster size record the total number of pixels hit by these particles at that moment, or does it record a separate cluster size for each particle? Which determines whether we can still use cluster size to determine whether charge sharing has occurred.
It is almost correct, I’d say and depends on your definition of charge sharing. It also depends on your configuration, but you will most likely have set a threshold when digitising the signal in your front-end. This means, that there could be cases where the charge is shared among several pixels, but for some of them the signal/charge could be below the threshold and thus there’s no PixelHit from these and the cluster size remains smaller. Example: threshold=100e, Pixel A collects 42e, Pixel B collects 715e. Pixel A will not have a hit and hence your cluster size is 1 although there was charge sharing.
I assume you are referring to the graphs generated by the DetectorHistogrammer module? Here, all pixel hits will be treated independently of their original primary particle. Hence, with a high density of primary particles the cluster size plot will not be the optimal way to judge on the charge sharing performance of your sensor.
If you provide us with more information on your setup and your goals, we can maybe help you to identify a better way of quantifying the charge sharing performance.
Dear @pschutze
Thank you for you relpy! It is very helpful for me.
The problem i want to solve is shown in the figure below:
In Situation 1, charge sharing has occurred;
In Situation 2, when the input count rate is very high, two photons interact with the detector almost simultaneously and hit two pixels at the same time. In this case, charge sharing does not occur.
If we don’t know the energy of the input X-rays, does Allpix2 provide any method to distinguish between Situation 1 and Situation 2? (Maybe the shape of pixel pulses is different between these two situations? I don’t know…)
Currently, my method of discrimination is that I can obtain the cluster size (number of pixel hit) in each event here. Situation 1 will be identified as an event with a cluster size = 2, while Situation 2 will be identified as two events with a cluster size = 1.
I’m not sure if this discrimination method is correct, and I wonder if there are any better methods?
yes, Allpix Squared does allow to distinguish these situations and there are multiple ways to do so.
What is puzzling me, is that you say that using the constructComparisonTree script you see two events with a cluster size of 1 already, isn’t that what you would like to see?
I would argue that that two best options to reach your goal are the following:
Define the gun such that you get only a single gamma particle per event. In that case you get your direct answer through the cluster_size graph, assuming that there’s negligible effects that may lead to the generation of secondary particles impinging on the detector at a different position. Now it depends on your setup and your studies, whether this is feasible for you or whether you need to have multiple particles per event. If that is the case I suggest option no. …
Use as many x-rays as you like per event, but store simulation data (include MCParticle, PixelHit and if you like PixelCharge and PropagatedCharge) to ROOT files using the ROOTObjectWriter. Following the syntax of the script you posted (also possible in python) you can analyse the history of each PixelHit and e.g. find out how many particles contributed to a hit (hit->getMCParticles.size(), see here) or even learn more about how much of the collected charge belongs to which primary particle (by looping over hit->getPixelCharge()->getPropagatedCharges() and then again identifying which primary particles is parent to this propagated charge via prop_charge->getMCParticle()). All that is possible when storing the full simulation data.
I hope this information is of help for you. If you need any further directions, please let us know!
In fact, I am not a physics major and lack knowledge about physics, so I may ask some very basic questions.
My goal is to use image analysis methods to analyze the pulse shapes output by the CSADigitizer (as what we would get in a real experiment) to distinguish between case 1 and case 2.
However, the prerequisite for doing this is that the CSADigitizer outputs for the two situations are different. To this end, I simulated case 1 by setting the particle type = “gamma” and the source energy = 3 keV, and case 2 by setting the particle type = “gamma” and the source energy = 5 keV.
The results are shown below:
The experimental results showed that the pulse shape in both situations were essentially the same. I would like to know if this is because, in an actual physics experiment, the spectra should indeed be identical, or if it is because I used the same and single response function in the CSADigitizer, which resulted in an inability to simulate the subtle differences between the two.
if your detector output is the same in the cases, you will have a hard time distinguishing them
However, in simulations you can have a look where these hits (and the energy) originates from using the Monte Carlo history. E.g. you could check on whether the two hits come from the same primary particle. Have a look at the documentation her:
actually, this depends on whether you expect the two x-rays in case 2 to arrive at the same time. If this is the case, I don’t expect a significant difference between the two cases. If these particles arrive at a time difference of about 15 ns or more (for this E-Field & CSA configuration), I’d expect to see a difference indeed.
It’s not super straight forward to test this, as we currently don’t have a good way of defining two different gamma energies in the same event - it would however not bee too difficult to set this up for one of our next releases. It is possible to have two particle sources via a Geant4 macro, using
For some reason only in some cases I get the combination of these two particles, and some 1 MeV particles in between. You could however filter these events via Simon’s recommendations. However, those particles are generated at the same time and I’m not sure whether it’s possible to use this feature to delay them.
I am wondering when a single photon hits mutiple pixels(charge sharing occurs), is it possible to see the crosstalk in adjacent pixels from the output of CSADigitizer?
Thank you very much!
The photon will have interacted only in a single position, but the generated charge carriers could indeed be shared between multiple pixels. In this case you can check if the pixels share any common primary MCParticles: