20 if (not ptrFacet)
return false;
23 const CDCFacet::Shape shape = facet.
getShape();
26 const short oClockDelta = shape.getOClockDelta();
27 const short absOClockDelta = std::abs(oClockDelta);
33 const short stableTwist = -sign(shape.getOClockDelta()) * middleRLInfo;
34 const bool startToMiddleIsCrossing = startRLInfo != middleRLInfo;
35 const bool middleToEndIsCrossing = middleRLInfo != endRLInfo;
37 const bool startToMiddleIsLong = shape.getStartToMiddleCellDistance() > shape.getMiddleToEndCellDistance();
39 const bool longArmIsCrossing = startToMiddleIsLong ? startToMiddleIsCrossing : middleToEndIsCrossing;
40 const bool shortArmIsCrossing = startToMiddleIsLong ? middleToEndIsCrossing : startToMiddleIsCrossing;
42 const short absILayerDifference = std::abs(iLayerDifference);
45 var<
named(
"cell_extend")>() = cellExtend;
46 var<
named(
"oclock_delta")>() = shape.getOClockDelta();
47 var<
named(
"abs_oclock_delta")>() = absOClockDelta;
48 var<
named(
"layer_id_difference")>() = iLayerDifference;
49 var<
named(
"abs_layer_id_difference")>() = absILayerDifference;
51 var<
named(
"long_arm_is_crossing")>() = longArmIsCrossing;
52 var<
named(
"short_arm_is_crossing")>() = shortArmIsCrossing;
53 var<
named(
"stable_twist")>() = stableTwist;
55 var<
named(
"crossing_id")>() = std::copysign(100.0 * std::abs(stableTwist) +
56 10.0 * shortArmIsCrossing +
57 1.0 * longArmIsCrossing,
60 var<
named(
"shape_id")>() = 100.0 * cellExtend + absOClockDelta;