Skip to content

FastCaloSim: Preparing to make calo det descr immutable.

Currently, the calo detector description in CaloDetDescrManager first gets created, with alignments applied subsequently. In particular, this implies that if one retrieves the detector description in initialize, one will get it without alignments. This is potentially confusing, is bad for MT, and commonly leads to the tracking geometry being incorrectly built without alignments. Therefore, we are trying to move towards building the detector description once, with alignments applied at that point. See ATR-19685 for further discussion.

This means that one should not retrieve CaloDetDescrManager during initialize(). Here, it was being used to initialize the call maps in BasicCellBuilderTool. Modified so that this instead gets triggered via a callback after the aligned calo det descr is created.

However, this exposes some additional points that warrant discussion.

The code here wants to deal with a grid of cells. Whenever one is doing that, it's important to consistently use the unaligned geometry; that is, what one gets from the _raw() functions of the DDEs. The code here wasn't doing that. However, because it was reading the detector description during initialize(), before alignments were applied, what it was getting was mostly the _raw() values --- though with an imporant exception. Even in an unaligned geometry, there's a difference between eta() and eta_raw() in the endcap, due to the 6cm shift of the cryostats from the original design. The code now uses the _raw() functions to build the maps and hence consistently does it in the calo cell coordinate system, but that's a difference from what was done before, and hence results can change in the endcap. I also adjusted the lookup in m_celllist_maps in FastShowerCellBuilderTool::process_particle to adjust to the calorimeter cell reference frame, but there are likely other places where there are still inconsistencies.

Merge request reports