MuonIdHelpers - Fix Identifier creation if parts of the information is taken from an existing one
Hi everybody,
while @pscholer and myself were validating the stereo angle rotation in !56646 (merged), we encountered a strange feature. We wanted to make sure that the stereo strips still intersect in the nominal center of the eta layers. For this purpose, we were generating for a given Micromega identifier and strip number, the corresponding x-layer (unrotated MM layer), u-layer(Stereo angle +) and v-layer (Stereo angle -) identifiers. Via the following lines,
const int u_gap = ml == 1 ? 3 : 1;
const int v_gap = ml == 1 ? 4 : 2;
const Identifier x_id = id_helper.channelID(id, ml, gap, strip);
const Identifier u_id = id_helper.channelID(id, ml, u_gap, strip);
const Identifier v_id = id_helper.channelID(id, ml, v_gap, strip);
The id
is just a generic identifier of the corresponding micromega wedge and gasgap. We made the intersections and found something unexpected in the log-files, because the intersection of the second multilayer failed with the following log.
WARNING Failed to intersect the uv strips for identifiers MM MMS eta -2 phi 3 chlay 2 lay 3 channel 512 MM MMS eta -2 phi 3 chlay 2 lay 4 channel 512
S:0 E:0 NSWGeoPlottingAlg WARNING Failed to intersect the uv strips for identifiers MM MMS eta -2 phi 3 chlay 2 lay 4 channel 512 MM MMS eta -2 phi 3 chlay 2 lay 4 channel 512
actually, we were expecting
MM MMS eta -2 phi 3 chlay 2 lay 1 channel 512
MM MMS eta -2 phi 3 chlay 2 lay 2 channel 512
to be intersected. It turned out that the Identifiers were not properly generated, if parts of the information was taken from an existing identifier. This MR fixes this bug which has been hanging around for a long long time. To be honest, I've no real estimate about the impact in the code downstream. A secret to be lifted by our well-admired friend, the @atlasbot.
Tagging: @elmsheus, @nstyles, @jmaurer, @strichte, @sroe, @npetters, @goblirsc, @goetz, @mhodgkin as this MR needs to be swept into 22.0 asap.