Skip to content

Commit 40150bc

Browse files
committed
Update hStrangeCorrelation.cxx
1 parent 6ce1fb2 commit 40150bc

1 file changed

Lines changed: 28 additions & 21 deletions

File tree

PWGLF/Tasks/Strangeness/hStrangeCorrelation.cxx

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)