WeightingPotentialReader in v2.0.0

Hi,

I am trying to simulate the performance of a simple Si hybrid detector (250um pitch, 500um thickness, 3x3 pixel array) using AllPix2; although I have basic experience with allpix this is my first time utilising the package since the release of v2.0.0.

Part of my simulation involves the importing of a Weighting Potential using the WeightingPotentialReader module in order to simulate the Shockley-Ramo effect using the Transient Propagation and PulseTransfer modules. I produced this weighting potential in Sentaurus TCAD and converted it into the .init format using the included mesh_converter tool. The outputted file appears sensible to me with the header reading:

Allpix Squared v2.0.0 TCAD Mesh Converter, observable: ElectrostaticPotential
internal ##EVENTS##
##TURN## ##TILT## 1.0
0.0 0.0 0.0
500 750 750 0.0 0.0 0.0 0.0 100 100 100 0.0

This suggests to me that the mesh correctly extends across the 3x3 (250um pitch) array, which I require to use a 3x3 induction matrix in later modules. However, when I attempt to load this mesh into Allpix the WP map is compressed in both the x and y dimensions, as shown below:

The parameter-key options I selected for the WeightingPotentialReader module are as follows:

[WeightingPotentialReader]
model = “mesh”
file_name = “ptype_Si_WP_plot_allPix_100_ElectrostaticPotential.init”
output_plots = 1

The confusing thing is, that trying the same protocol back in January using v1.6.0, this method worked with the weighting potential correctly extending across the both x and y dimensions. Is anybody able to help explain the origin of this issue and if since the latest update, I am required to put additional parameters into my .conf script?

Obviously if more information is required to help solve this issue, please let me know and I’ll do my best to answer any questions.

Thanks,
Ben

Hi @bencline ,

thanks for reporting this, this looks indeed wrong. We’ll try to reproduce this issue and come back to you, hopefully soon. In the meantime, would you mind, running the simulation with increased verbosity in the WeightingPotentialReader, like this …

[WeightingPotentialReader]
model = “mesh”
file_name = “ptype_Si_WP_plot_allPix_100_ElectrostaticPotential.init”
output_plots = 1
log_level = TRACE

and post the output here? Like this we might have a better chance to find the issue.

Thanks again and cheers
Paul

Hi @pschutze ,

Thanks for replying so quickly and looking into the issue. I’ve done as you requested and the log outputs relating to the module as as follows:

|10:20:59.262| (TRACE) [I:WeightingPotentialReader:detector1] Fetching weighting potential from init file
|10:20:59.264| (DEBUG) [I:WeightingPotentialReader:detector1] Assuming file type “INIT”
|10:20:59.265| (WARNING) [I:WeightingPotentialReader:detector1] No field units provided, interpreting field data in internal units, this might lead to unexpected results.
|10:20:59.266| (TRACE) [I:WeightingPotentialReader:detector1] Header of file /data/Ptype_Si_allpix_attempt1/ptype_Si_WP_plot_allPix_100_ElectrostaticPotential.init is
Allpix Squared v2.0.0 TCAD Mesh Converter, observable: ElectrostaticPotential
|10:20:59.266| (DEBUG) [I:WeightingPotentialReader:detector1] INIT file states internal units, so does the parser
|10:20:59.776| (INFO) [I:WeightingPotentialReader:detector1] Reading field data: finished.
|10:20:59.778| (INFO) [I:WeightingPotentialReader:detector1] Potential map size is (750um,750um), matching detector model with pixel pitch (250um, 250um)
|10:20:59.779| (INFO) [I:WeightingPotentialReader:detector1] Set weighting field with 100x100x100 cells
|10:20:59.779| (TRACE) [I:WeightingPotentialReader:detector1] Creating output plots
|10:20:59.967| (INFO) [I:WeightingPotentialReader:detector1] Plotting weighting potential: done

Hope this helps; as always, happy to run further simulations if that helps clarify the problem. I forget to mention before but I am running this as a Docker image - I doubt this should make a difference but worth mentioning just in case.

Thanks,
Ben

Hi @bencline

I have found one issue in the current code, however, this was only introduced by a change in v2.0.1. Could you confirm that you are indeed running v2.0.0? If that is the case I will have to dig a bit deeper…

Best,
Simon

Hi @bencline

assuming you indeed were running either master or v2.0.1 I was able to replicate your issue and fix it. Have a look at this merge request: WeightingPotentialReader: correctly provide field scale factors as fractions of the pixel pitch (!517) · Merge requests · Allpix Squared / Allpix Squared

This will land in v2.0.2 soon and is available in master (or CVMFS’s latest from tomorrow on).

Cheers,
Simon

Hi @simonspa,

Sorry for the delay in replying; the command line output suggests it is v2.0.0 (see below)

However, I’m trying to find an indicator of the version number in the cmakelist or another file, which may be more accurate. Can you recommend a method of determining the version number I have currently compiled (Sorry if this is a very basic question)? I only restarted using Allpix last week so unless v2.0.1. is more recent than that, I suspect that’s the version I’m using.

Thanks,
Ben

Hi @bencline

the command line should have the correct version unless you manually downloaded a tarball and compiled that (known issue: Downloading a Tarball results in wrong version (#184) · Issues · Allpix Squared / Allpix Squared).

However, I’d suggest you try the patched version since I believe this was the issue you were facing. Let me know if you need help in obtaining that version!

Simon

Hi @simonspa

Thank you for getting this fixed so quickly; having pulled the latest version (v2.0.1), the WeightingPotentialReader module now works as expected. I’ve included an image of the outputted potential map to show this (now correctly extends over both the x and y dimensions).

Thanks once again,
Ben