Wide distribution of PropagatedXPosition at electrodes

Dear all,
using the same setup described here plus a 2T magnetic field in the +y direction I get the following plot for PropagatedXPosition vs PropagatedZPosition:

The sensor is 100 um thick and I am depositing charge at x=y=z=0 mm.
My question is the following: why the carriers spread out so much at the electrode?
I suspect this is a feature of the simulation and I am looking for a suggestion to get a more narrow /close to reality distribution at the electrodes.

Thanks and regards,
Marco Bomben

Hi @mbomben

you mean the vertical sharp lines at the upper and lower sensor boundary?

My guess would be that the field is very low there. Charge carriers are drawn towards the surface but never reach it actually. Over the time of your simulation the charge carriers then start diffusing towards the sides, perpendicular to the sensor surface, and are kept close to the surface by the field.

Do you by any chance have a plot of the z-dependence of your electric field?

Cheers,
Simon

Hello @simonspa ,
here is the field projection

I see, thanks. Is there a way to stop the drift (simulation?) if the distance to the collecting electrode is smaller than a certain value, please?

Thanks and cheers,
Marco

Hi @mbomben

in your version v2.3 not without code changes, even though they are very minor. The criterion for stopping the propagation is here: src/modules/TransientPropagation/TransientPropagationModule.cpp · v2.3-stable · Allpix Squared / Allpix Squared · GitLab

While we use a method of the detector model (isWithinSensor(pos)) you could just add your own criterion, taking into account that x = 0 is in the cnter of the sensor and units are mm. so something like this:

while(within_sensor 
         && (initial_time + runge_kutta.getTime()) < integration_time_ 
         && is_alive 
         && !is_trapped 
         && std::fabs(position.z()) < (model_->getSensorSize().z() / 2 - 0.01)) {
    // ...
}

should work just fine. Adjust the 0.01 to whatever you can read off your plot above where the field is zero.

If you would move to a newer version, we have the option to define implants with a certain depth, both on front and back, that would allow you to do the same without code changes.

Cheers,
Simon

Hi @simonspa , thanks!
I am ready to embrace newer versions :slight_smile: Which is the one that you recommend, please?

Thanks again,
Marco

Hi @mbomben

as of yesterday, this feature is in master, so if you are on CVMFS just use the latest tag there.

On order to control what portion of your sensor is considered an implant for charge collection, you have to add them to your detector model. See documentation.

Essentially it means adding two implants with the size of your pixel to the model file:

[implant]
type = frontside
shape = rectangle
size = <pitch_x> <pitch_y> < desired depth>


[implant]
type = backside
shape = rectangle
size = <pitch_x> <pitch_y> < desired depth>

This will then stop propagation when charge carriers enter the implant regions. Make sure to enable collect_from_implants from your transfer module.

Cheers,
Simon

Hi
What is the command to generate this chart? I haven’t used Root in a long time and forgot about it.

Hello,

yourTree->Draw("PropagatedXPosition:PropagatedZPosition")

Regards,
Marco Bomben

Thanks a lot,its worked !

best regards

zhl