Skip to content

Commit ed835a2

Browse files
miranov25claude
andcommitted
TPC TimeSeries: use the outer TRD state for the TRD-TPC residuals
- The TRD side of deltaTRDTPC, of the matching chi2 and of trdIn is now the outer state of the ITS-TPC-TRD track (TrackTRD::getOuterParam(): outward refit through ITS, TPC and TRD, at the outermost TRD layer), propagated inward to the 275 cm plane, as RecoContainer does. The base state used before is the inward refit, which ends at the innermost ITS cluster, i.e. the combined track at the vertex. - Comments corrected: TrackTRD has two parameter sets; the outward refit includes the TPC clusters, so TRD - TPC is not independent; full list of meaningful getters of deltaTRDTPC. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YYeB7SW1TM7vU8qhVHiG61
1 parent 7f699d2 commit ed835a2

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

‎Detectors/TPC/workflow/src/TPCTimeSeriesSpec.cxx‎

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,9 @@ class TPCTimeSeries : public Task
399399
trdData.trackletIndices[iLay] = trkltId;
400400
}
401401
}
402-
trdData.trdTrackParCov = o2::track::TrackParCov(trdTrack); // TrackTRD base state, not validated as the outer/entrance state (open Phase 0.4 finding)
402+
// outer state of the ITS-TPC-TRD track: outward refit through ITS, TPC and TRD, at the outermost TRD layer (as in
403+
// RecoContainer::getTrackParamOut). The base state of TrackTRD is the inward refit, which ends at the innermost ITS cluster.
404+
trdData.trdTrackParCov = trdTrack.getOuterParam();
403405
trdData.hasTRDTrackPar = true;
404406
tpcToTRDMap[refTPC] = trdData;
405407
}
@@ -1486,9 +1488,9 @@ class TPCTimeSeries : public Task
14861488

14871489
// TPC-out / TRD-in states on a common local X plane, computed for every written entry (Architect decision 2026-10-28:
14881490
// residuals always stored; only the full TrackPar objects depend on --store-full-trackpar).
1489-
// Open Phase 0.4 findings, deferred: the target is local X = kTPCTRDMiddle in the frame rotated to the track
1490-
// position angle (lab radius = sqrt(X^2 + Y^2), not exactly 275 cm), and the TRD starting state is the TrackTRD
1491-
// base state (TrackTRD carries a single parameter set), not validated as the outer/entrance state.
1491+
// Open Phase 0.4 finding, deferred: the target is local X = kTPCTRDMiddle in the frame rotated to the track position
1492+
// angle (lab radius = sqrt(X^2 + Y^2), not exactly 275 cm). The TRD side is the outer state of the ITS-TPC-TRD track,
1493+
// propagated inward to the plane; its outward refit includes the TPC clusters, so TRD - TPC is not independent.
14921494
static constexpr float kTPCTRDMiddle = 275.f; // cm, common local X plane between TPC outer wall and TRD layer 0
14931495
static constexpr uint32_t kDeltaTRDTPCMask = 0xFFFFE000; // keep 10 mantissa bits: float16-like relative precision ~1e-3
14941496
o2::track::TrackParCov tpcOutCov; // local temporary with covariance (needed for chi2); persisted as TrackPar
@@ -1499,7 +1501,9 @@ class TPCTimeSeries : public Task
14991501
float chi2ZTPCTRD = -1.f;
15001502
// deltaTRDTPC: TrackPar used as a residual container. mX and mAlpha = the common plane and frame (full precision,
15011503
// copied from the propagated TPC state); mP[0..4] = TRD - TPC of Y, Z, Snp, Tgl, Q2Pt, truncated to 10 mantissa bits.
1502-
// Only getX(), getAlpha() and getParam(i) are meaningful (getPt(), getPhi(), ... are not). Default (X = 0) if trdInOK != 0.
1504+
// Meaningful: getX(), getAlpha(), getParam(i), getY(), getZ(), getSnp(), getTgl(), getQ2Pt(); not meaningful: derived
1505+
// getters (getPt(), getP(), getPhi(), getEta(), getCurvature(), ...). Charge, PID and user field are those of the TPC
1506+
// track. Default object (X = 0, parameters 0) if trdInOK != 0: select with trdInOK == 0.
15031507
o2::track::TrackPar deltaTRDTPC;
15041508
// D1: TPC outer → kTPCTRDMiddle
15051509
tpcOutCov = o2::track::TrackParCov(tracksTPC[iTrk].getParamOut());

0 commit comments

Comments
 (0)