Is there anyone able to tell me if the several uses of volumes assemblies in a geometry could induce any slowdown of simulations? Or increase of memory?
I’m trying to improve the performance of simulations when the MFT is on.

Hi Franck,
based on my experience with old and new ITS, I can confirm you that Assemblies definitely slow down the particle propagation. Assemblies should be used as least as possible, when really needed. It should by far be avoided to have assemblies inside assemblies. Better to have containers made by physical volumes: this is much more complicate and require careful shaping, but they save a lot of time during simulation. This is what I observed with ITS coding. The main reason is because Assemblies do not have physical boundaries, and tracking code has to tranverse the whole volume tree,
Kind regards

1 Like

Thanks a lot for your fast response.

In the code V1Layer.cxx of the ITS software, I found in line 394:

TGeoVolume* staveVol = new TGeoVolumeAssembly(volumeName);

Usually in the MFT code, we use the following auto assembly declaration:
auto* X7R0402 = new TGeoVolumeAssembly(Form(“X7R_%d_%d_%d_%d”, idHalfMFT, idHalfDisk, idLadder, id));

The staveVol is a real volume even if it’s heriting from a volume assembly?
Should we modify out auto declaration, since it will produce a new volume assembly?
It could be a way to reduce the number of volume assemblies in your code.
Best regards, Franck.

I don’t quite understand this statement. Whether the declaring type is “TGeoVolume” or “TGeoVolumeAssembly” or “auto*” shouldn’t matter in this case, as long as the instantiating type is always “TGeoVolumeAssembly”.

If ordinary volumes are enough, please just instantiate it as TGeoVolume.

@manso thanks for pointing out: no, it is definitely an assembly (and it needs to be so). BTW, please do not consider V1Layer as it is well obsolete. They asked me to leave it in the code for back reference, but it is not used anymore. Only V3Layer is used and maintained.

@swenzel I am going to commit a fix by setting the proper variable type.


@sitta: For me this is ok and a fix not necessary. TGeoVolumeAssembly is a TGeoVolume.

Ok, perfect! Then I leave it as it is now (if I remember correctly, it used to be a real Volume and then it was changed into an Assembly).
Many thanks. Cheers M.


The problem is when the part is actually built using boolean operations, I mean, the real manufacturing is based on machining. this is the case for the MFT PCB Supports - see bellow one example.

We can decide what to simplify and make it easy to enable/disable simplifications.

Hello Rafael,
Sorry for the late response. Let’s keep this geometry description unmodified, until we add it into the official repository. I have modify the dimensions of the heat exchanger n°4 according to the blue prints that you send me. Is it possible to activate the only 4th disk support in your support class to check?

I missed this message. Sorry. Solved by e-mail.