Skip to content

Commit 09f01ba

Browse files
committed
Account ITS/MFT ROF start shift in AOD ITS/MFT standalone tracks time
1 parent 9e505ea commit 09f01ba

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

Detectors/AOD/include/AODProducerWorkflow/AODProducerWorkflowSpec.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,8 @@ class AODProducerWorkflowDPL : public Task
301301
std::vector<uint16_t> mMCHROFs; // mapping from MCH tracks ID to corresponding ROF (for SA MCH tracks time extraction)
302302
double mITSROFrameHalfLengthNS = -1; // ITS ROF half length
303303
double mMFTROFrameHalfLengthNS = -1; // ITS ROF half length
304+
double mITSROFBiasNS = 0; // ITS ROF start bias
305+
double mMFTROFBiasNS = 0; // ITS ROF start bias
304306
double mNSigmaTimeTrack = -1; // number track errors sigmas (for gaussian errors only) used in track-vertex matching
305307
double mTimeMarginTrackTime = -1; // safety margin in NS used for track-vertex matching (additive to track uncertainty)
306308
double mTPCBinNS = -1; // inverse TPC time-bin in ns

Detectors/AOD/src/AODProducerWorkflowSpec.cxx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ void AODProducerWorkflowDPL::addToMFTTracksTable(mftTracksCursorType& mftTracksC
377377
int bcSlice[2] = {-1, -1};
378378
const auto& track = data.getMFTTrack(trackID);
379379
const auto& rof = data.getMFTTracksROFRecords()[mMFTROFs[trackID.getIndex()]];
380-
float trackTime = rof.getBCData().differenceInBC(mStartIR) * o2::constants::lhc::LHCBunchSpacingNS + mMFTROFrameHalfLengthNS;
380+
float trackTime = rof.getBCData().differenceInBC(mStartIR) * o2::constants::lhc::LHCBunchSpacingNS + mMFTROFrameHalfLengthNS + mMFTROFBiasNS;
381381
float trackTimeRes = mMFTROFrameHalfLengthNS;
382382
bool needBCSlice = collisionID < 0;
383383
std::uint64_t bcOfTimeRef;
@@ -2422,7 +2422,7 @@ AODProducerWorkflowDPL::TrackExtraInfo AODProducerWorkflowDPL::processBarrelTrac
24222422
extraInfoHolder.itsClusterSizes = itsTrack.getClusterSizes();
24232423
if (src == GIndex::ITS) { // standalone ITS track should set its time from the ROF
24242424
const auto& rof = data.getITSTracksROFRecords()[mITSROFs[trackIndex.getIndex()]];
2425-
double t = rof.getBCData().differenceInBC(mStartIR) * o2::constants::lhc::LHCBunchSpacingNS + mITSROFrameHalfLengthNS;
2425+
double t = rof.getBCData().differenceInBC(mStartIR) * o2::constants::lhc::LHCBunchSpacingNS + mITSROFrameHalfLengthNS + mITSROFBiasNS;
24262426
setTrackTime(t, mITSROFrameHalfLengthNS, false);
24272427
}
24282428
} else if (contributorsGID[GIndex::Source::ITSAB].isIndexSet()) { // this is an ITS-TPC afterburner contributor
@@ -2652,9 +2652,10 @@ void AODProducerWorkflowDPL::updateTimeDependentParams(ProcessingContext& pc)
26522652

26532653
const auto& alpParamsITS = o2::itsmft::DPLAlpideParam<o2::detectors::DetID::ITS>::Instance();
26542654
mITSROFrameHalfLengthNS = 0.5 * (grpECS->isDetContinuousReadOut(o2::detectors::DetID::ITS) ? alpParamsITS.roFrameLengthInBC * o2::constants::lhc::LHCBunchSpacingNS : alpParamsITS.roFrameLengthTrig);
2655-
2655+
mITSROFBiasNS = o2::itsmft::DPLAlpideParam<o2::detectors::DetID::ITS>::Instance().roFrameBiasInBC * o2::constants::lhc::LHCBunchSpacingNS;
26562656
const auto& alpParamsMFT = o2::itsmft::DPLAlpideParam<o2::detectors::DetID::MFT>::Instance();
26572657
mMFTROFrameHalfLengthNS = 0.5 * (grpECS->isDetContinuousReadOut(o2::detectors::DetID::MFT) ? alpParamsMFT.roFrameLengthInBC * o2::constants::lhc::LHCBunchSpacingNS : alpParamsMFT.roFrameLengthTrig);
2658+
mMFTROFBiasNS = o2::itsmft::DPLAlpideParam<o2::detectors::DetID::MFT>::Instance().roFrameBiasInBC * o2::constants::lhc::LHCBunchSpacingNS;
26582659

26592660
// RS FIXME: this is not yet fetched from the CCDB
26602661
auto& elParam = o2::tpc::ParameterElectronics::Instance();

0 commit comments

Comments
 (0)