@@ -520,11 +520,12 @@ struct HStrangeCorrelation {
520520 PairLossTriggerTracksFailITS,
521521 PairLossTriggerTracksFailSharedClusters,
522522 PairLossTriggerTracksFailLayer0,
523- // 真实没进 TriggerTracks 表,但下面的复刻判定认为候选径迹里至少有一条该通过。
524- // 唯一可能的来源是本任务的 triggerTracks* 配置与 hStrangeCorrelationFilter.cxx
525- // 不一致,因此这个 bin 直接充当"配置是否对齐"的监控量:它应当为零。
523+ // Really not in the TriggerTracks table, yet the replica below claims that at least one
524+ // candidate track should have passed. The only possible source is a mismatch between this
525+ // task's triggerTracks* configurables and hStrangeCorrelationFilter.cxx, so this bin acts
526+ // directly as a "are the configurations aligned?" monitor: it should be zero.
526527 PairLossTriggerTracksNotInTableUnexplained,
527- // 反方向的偏差:真实进了表,但复刻判定会拒绝它。
528+ // The opposite drift: really in the table, but the replica would reject it.
528529 PairLossTriggerTracksInTableButCutRejects,
529530 PairLossTriggerTracksNReasons
530531 };
@@ -4932,41 +4933,47 @@ struct HStrangeCorrelation {
49324933 }
49334934 }
49344935
4935- // stage3 -> stage4 这一道门的归因,只对已经存在于 best collision 的 trigger 有意义。
4936+ // Attribution of the stage3 -> stage4 gate. Only meaningful for triggers that already
4937+ // exist in the best collision.
49364938 //
4937- // 关键约定:Passed 这一 bin 用的是真实的 triggerInTable,而不是复刻判定的结果。
4938- // 之前的版本对 bestTrack() 跑一遍复刻函数就当作最终答案,于是这张图的
4939- // Passed 计数与 stage 4 差了十几个百分点(复刻用的是本任务的 triggerTracks*
4940- // 配置,而真表由 hStrangeCorrelationFilter.cxx 用它自己的配置产生,两者靠
4941- // 注释人工对齐,一旦 json 只改了 filter 就会分叉)。
4939+ // Key convention: the Passed bin is decided by the real triggerInTable, not by the
4940+ // replica. An earlier version ran the replica on bestTrack() and took that as the final
4941+ // answer, which left the Passed count of this plot more than ten percent away from
4942+ // stage 4 (the replica uses this task's triggerTracks* configurables, while the real
4943+ // table is produced by hStrangeCorrelationFilter.cxx from its own configurables; the two
4944+ // are kept aligned by hand through comments and diverge as soon as the json changes only
4945+ // the filter).
49424946 //
4943- // 现在的定义保证按构造对齐:
4944- // Passed 的计数 == stage 4 的计数
4945- // Passed + 各 Failed == stage 3 的计数
4946- // 复刻只在真实失败时用于归因;两个 Unexplained/Rejects bin 捕获配置分叉,
4947- // 它们非零就说明本任务的 triggerTracks* 需要跟 filter 重新对齐。
4947+ // The present definition is aligned by construction:
4948+ // count(Passed) == count(stage 4)
4949+ // count(Passed) + count(Failed bins) == count(stage 3)
4950+ // The replica is used for attribution only once the real table has already said "not in";
4951+ // the two Unexplained/Rejects bins capture configuration drift, and a non-zero entry in
4952+ // either means this task's triggerTracks* have to be realigned with the filter.
49484953 if (triggerBestCollision) {
49494954 int failureReason = PairLossTriggerTracksPassed;
49504955 if (triggerInTable) {
4951- // 真实通过。顺带检查复刻是否也认可,用于监控配置分叉。
4956+ // Really passed. Also check whether the replica agrees, to monitor configuration drift.
49524957 auto const * bestCollisionTrigger = bestTrack (tracksBestCollision, truthTrigger.globalIndex );
49534958 if (bestCollisionTrigger != nullptr &&
49544959 classifyTriggerTracksFailure (*bestCollisionTrigger) != PairLossTriggerTracksPassed) {
49554960 failureReason = PairLossTriggerTracksInTableButCutRejects;
49564961 }
49574962 } else {
4958- // 真实失败。在 best collision 的所有候选径迹里取"走得最远"的那条来归因:
4959- // classifyTriggerTracksFailure 按 isValidTrigger 的 early-return 顺序返回,
4960- // 返回值越大表示越靠后才被拒,因此最大值对应最接近通过的那条候选。
4961- // 语义是"即使是最好的那条候选,也倒在了这个切上"。
4963+ // Really failed. Attribute using the candidate track in the best collision that got
4964+ // "furthest": classifyTriggerTracksFailure returns following the early-return order of
4965+ // isValidTrigger, so a larger return value means the track was rejected later, and the
4966+ // maximum therefore corresponds to the candidate closest to passing. The semantics are
4967+ // "even the best candidate fell at this cut".
49624968 failureReason = PairLossTriggerTracksNotInTableUnexplained;
49634969 auto const iterator = tracksBestCollision.find (truthTrigger.globalIndex );
49644970 if (iterator != tracksBestCollision.end ()) {
49654971 int furthest = -1 ;
49664972 for (auto const & candidate : iterator->second ) {
49674973 const int reason = classifyTriggerTracksFailure (candidate);
49684974 if (reason == PairLossTriggerTracksPassed) {
4969- // 复刻认为这条该进表,但它并不在表里:配置分叉。
4975+ // The replica says this track should be in the table, but it is not:
4976+ // configuration drift.
49704977 furthest = -1 ;
49714978 break ;
49724979 }
0 commit comments