Adding dead material in Corryvreckan

How do I add some dead material in Corryvreckan? Currently we put all material associated with our DUT at the DUT z position. I would like to explore the effect of a more realistic distribution of material, which is maybe 100 mm upstream and downstream of our DUT.

I added some items in the geometry file, at z = z_DUT ± 100 mm, type = none (and tried type = auxiliary) but neither worked. Current entry is for example:

[ColdBox2]
role = none
number_of_pixels = 1 1
pixel_pitch = 10mm 10mm
type = material
orientation = 0,0,0
orientation_mode = “xyz”
position = 0,0,535mm
material_budget = 0.02

Hi @hessey

the role should be role = passive as described in section 4.3 of the user manual:

With a passive role, detectors in the geometry do not get their own instances of detector modules and are not no data is loaded for them. They can, however, be used in tracking as scattering material.

Cheers,
Simon

1 Like

Coming back to this. I am trying to get the GBL track resolution at our DUT. Our DUT is about 2.3 % X0 material close by, and inside a cold box with about 1.3 % X0 in both upstream and downstream walls, close to the Mimosa planes in our telescope. Before you helped me with the passive type, as a workaround, I added the coldbox walls material to the nearest Mimosa26 detectors. I then get (qualitatively) what I expect: a much worse resolution at the DUT compared to putting all material at the DUT.
However, if I leave the Mimosas at their usual 0.00075 fractional radiation length, and add two planes of passives at 1.3 % X0 close to the Mimosas, it has very little effect on resolution: in fact, it even improves the resolution - qualitatively incorrect.
I take the resolution as being sqrt(top left element of the “covariance” matrix given by GBL tracking for the DUT plane) (which corresponds to the x-coordinate). The DUT plane is excluded from the fit.
Any idea what is going on? Who can I ask for GBL input?

Hi @hessey

what do you mean with “ask for GBL input”?

Presuming you are using an un-altered version of Tracking4D, we register the passive plane here: src/modules/Tracking4D/Tracking4D.cpp · master · Corryvreckan / Corryvreckan · GitLab which is stored in the track here src/objects/Track.cpp · master · Corryvreckan / Corryvreckan · GitLab, the scatterer is added to the GBL trahectory here src/objects/GblTrack.cpp · master · Corryvreckan / Corryvreckan · GitLab .

This behavior was added in January 2022.

Cheers,
Simon

I think I found my issue. Some loops are over get_detectors(), some are over get_regular_detectors(). Gbl tracks include passives, which are not regular detectors. As long as I had no passives, I got the correct association of a Gbl plane-id (an integer) to a detector (usually identified by its name). When I introduced passive planes, I was wrongly associating the Gbl cov matrix of a passive plane to the DUT.
Fixed by adding a separate loop over all planes (skipping only auxiliary planes) for getting the Gbl cov matrix for each plane in the fit, instead of trying to do it in the loop already there, which is over regular detectors.

Hi @hessey

that indeed sounds like a possibility. Would you mind sharing where we need to adjust the loop?

/Simon

I don’t think there is any need to change processing of passive material in Corryvreckan: the current code standard does it correctly.
The problem I had was an issue with code I added to Track.h, Tracking4D etc. to make the track variance-covariance matrix available to the user. I think that is better discussed in a separate (new) thread.