Skip to content

Commit 603b7ed

Browse files
glegrasalibuild
andauthored
TRD: using slope to correct y position and reject more fakes (#15799)
* add possibility to account for exponential tail of tracklet slope in chi2 * TRD: using slope to correct y position and reject more fakes * some fixes and parameter updates * clang format * clang format * small fix * test to find origin of the build errors * clang format * Please consider the following formatting changes --------- Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent f3be1ea commit 603b7ed

14 files changed

Lines changed: 284 additions & 107 deletions

File tree

Detectors/TRD/base/include/TRDBase/PadPlane.h

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,41 @@ class PadPlane
120120

121121
GPUd() int getPadRowNumberROC(double z) const;
122122
GPUd() double getPadRow(double z) const;
123-
GPUd() int getPadColNumber(double rphi) const;
123+
124+
GPUd() int getPadColNumber(double rphi) const
125+
{
126+
//
127+
// Finds the pad column number for a given rphi-position
128+
//
129+
130+
int col = 0;
131+
int nabove = 0;
132+
int nbelow = 0;
133+
int middle = 0;
134+
135+
if ((rphi < getCol0()) || (rphi > getColEnd())) {
136+
col = -1;
137+
138+
} else {
139+
nabove = mNcols;
140+
nbelow = 0;
141+
while (nabove - nbelow > 1) {
142+
middle = (nabove + nbelow) / 2;
143+
if (rphi == mPadCol[middle]) {
144+
col = middle;
145+
}
146+
if (rphi > mPadCol[middle]) {
147+
nbelow = middle;
148+
} else {
149+
nabove = middle;
150+
}
151+
}
152+
col = nbelow;
153+
}
154+
155+
return col;
156+
}
157+
124158
GPUd() double getPad(double y, double z) const;
125159

126160
GPUd() double getTiltOffset(int row, double rowOffset) const

Detectors/TRD/base/src/PadPlane.cxx

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -76,41 +76,6 @@ int PadPlane::getPadRowNumberROC(double z) const
7676
return row;
7777
}
7878

79-
//_____________________________________________________________________________
80-
int PadPlane::getPadColNumber(double rphi) const
81-
{
82-
//
83-
// Finds the pad column number for a given rphi-position
84-
//
85-
86-
int col = 0;
87-
int nabove = 0;
88-
int nbelow = 0;
89-
int middle = 0;
90-
91-
if ((rphi < getCol0()) || (rphi > getColEnd())) {
92-
col = -1;
93-
94-
} else {
95-
nabove = mNcols;
96-
nbelow = 0;
97-
while (nabove - nbelow > 1) {
98-
middle = (nabove + nbelow) / 2;
99-
if (rphi == mPadCol[middle]) {
100-
col = middle;
101-
}
102-
if (rphi > mPadCol[middle]) {
103-
nbelow = middle;
104-
} else {
105-
nabove = middle;
106-
}
107-
}
108-
col = nbelow;
109-
}
110-
111-
return col;
112-
}
113-
11479
void PadPlane::setNcols(int n)
11580
{
11681
if (n > MAXCOLS) {

Detectors/TRD/calibration/include/TRDCalibration/CalibrationParams.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,10 @@ namespace trd
2626
struct TRDCalibParams : public o2::conf::ConfigurableParamHelper<TRDCalibParams> {
2727
unsigned int nTrackletsMin = 5; ///< minimum amount of tracklets
2828
unsigned int nTrackletsMinLoose = 4; ///< minimum amount of tracklets if two layers with a large lever arm both have a hit
29-
unsigned int chi2RedMax = 6; ///< maximum reduced chi2 acceptable for track quality
30-
size_t minEntriesChamber = 200; ///< minimum number of entries per chamber to fit single time slot
29+
unsigned int chi2RedMax = 6; ///< maximum reduced chi2 acceptable for track quality
30+
float minPtCalib = 1.; ///< min pt for vd and ExB calib
31+
bool rejectTPCTRD = true; ///< reject TPC-TRD tracks for vd ExB calib
32+
size_t minEntriesChamber = 200; ///< minimum number of entries per chamber to fit single time slot
3133
size_t minEntriesTotal = 400'000; ///< minimum total required for meaningful fits
3234

3335
// For gain calibration

Detectors/TRD/calibration/src/TrackBasedCalib.cxx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "TRDBase/Geometry.h"
2323
#include "TRDBase/PadPlane.h"
2424
#include "CommonUtils/NameConf.h"
25+
#include "CommonConstants/GeomConstants.h"
2526
#include "DataFormatsTPC/TrackTPC.h"
2627
#include "ReconstructionDataFormats/TrackTPCITS.h"
2728
#include <fairlogger/Logger.h>
@@ -77,8 +78,9 @@ void TrackBasedCalib::calculateAngResHistos()
7778

7879
LOGF(info, "As input tracks are available: %lu ITS-TPC-TRD tracks and %lu TPC-TRD tracks", mTracksInITSTPCTRD.size(), mTracksInTPCTRD.size());
7980

81+
auto& params = TRDCalibParams::Instance();
8082
int nTracksSuccessITSTPCTRD = doTrdOnlyTrackFits(mTracksInITSTPCTRD);
81-
int nTracksSuccessTPCTRD = doTrdOnlyTrackFits(mTracksInTPCTRD);
83+
int nTracksSuccessTPCTRD = params.rejectTPCTRD ? 0 : doTrdOnlyTrackFits(mTracksInTPCTRD);
8284

8385
LOGF(info, "Successfully processed %i tracks (%i from ITS-TPC-TRD and %i from TPC-TRD) and collected %lu angular residuals",
8486
nTracksSuccessITSTPCTRD + nTracksSuccessTPCTRD, nTracksSuccessITSTPCTRD, nTracksSuccessTPCTRD, mAngResHistos.getNEntries());
@@ -195,6 +197,11 @@ int TrackBasedCalib::doTrdOnlyTrackFits(gsl::span<const TrackTRD>& tracks)
195197
continue;
196198
}
197199
}
200+
if (trkIn.getPt() < params.minPtCalib) {
201+
// we reject low pt tracks which might suffer from multiple scattering (giving lower quality of the TRD-only fit)
202+
continue;
203+
}
204+
198205
auto trkWork = trkIn; // input is const, so we need to create a copy
199206
bool trackFailed = false;
200207

@@ -206,6 +213,12 @@ int TrackBasedCalib::doTrdOnlyTrackFits(gsl::span<const TrackTRD>& tracks)
206213
continue;
207214
}
208215

216+
// reject tracks which cross sectors within TRD (if the extrapolation from the outer TRD to the outer TPC leads to a change in sector or close to the sector edges with 5 cm margin), which have larger uncertainties and probably more fakes
217+
float yOuterTPC = trkIn.getOuterParam().getYAt(o2::constants::geom::XTPCOuterRef, bz);
218+
if (std::fabs(yOuterTPC) > o2::constants::geom::XTPCOuterRef * tan(M_PI / 18.) - 5.) {
219+
continue;
220+
}
221+
209222
// first inward propagation (TRD track fit)
210223
int currLayer = NLAYER;
211224
for (int iLayer = NLAYER - 1; iLayer >= 0; --iLayer) {
@@ -274,6 +287,7 @@ int TrackBasedCalib::doTrdOnlyTrackFits(gsl::span<const TrackTRD>& tracks)
274287
if (!((trkWork.getSigmaZ2() < (padLength * padLength / 12.f)) && (std::fabs(mTrackletsCalib[trkltId].getZ() - trkWork.getZ()) < padLength))) {
275288
tiltCorrUp = 0.f;
276289
}
290+
277291
// use uncalibrated dy because online calibration does not work otherwise
278292
float trkltDy = mTrackletsRaw[trkltId].getUncalibratedDy(30.f / o2::trd::constants::VDRIFTDEFAULT) + tiltCorrUp;
279293
float trkltAngle = o2::math_utils::atan(trkltDy / Geometry::cdrHght()) * TMath::RadToDeg();

Detectors/TRD/qc/src/Tracking.cxx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,14 @@ void Tracking::checkTrack(const TrackTRD& trkTrd, bool isTPCTRD)
160160
float slopeFactor = mTrackletsRaw[trkltId].getSlopeFloat() * pad->getWidthIPad() / 4.f;
161161
float yCorrPileUp = tCorrPileUp * slopeFactor;
162162
float yAddErrPileUp2 = tErrPileUp2 * slopeFactor * slopeFactor;
163+
float yPosCorrUp = mTrackletsCalib[trkltId].getY() - tiltCorrUp + yCorrPileUp;
163164

164165
float angularPull = (mTrackletsCalib[trkltId].getDy() + dyTiltCorr - mRecoParam.convertAngleToDy(trk.getSnp())) / std::sqrt(mRecoParam.getDyRes(trk.getSnp(), 0));
166+
// Correction of y position based on angular pull
167+
float corrPull = -angularPull * mRecoParam.getCorrYDy(trk.getSnp());
168+
yPosCorrUp += corrPull;
165169

166-
std::array<float, 2> trkltPosUp{mTrackletsCalib[trkltId].getY() - tiltCorrUp + yCorrPileUp, zPosCorrUp};
170+
std::array<float, 2> trkltPosUp{yPosCorrUp, zPosCorrUp};
167171
std::array<float, 3> trkltCovUp;
168172
mRecoParam.recalcTrkltCov(tilt, trk.getSnp(), pad->getRowSize(tracklet.getPadRow()), trkltCovUp, angularPull, 0);
169173
trkltCovUp[0] += yAddErrPileUp2;

Detectors/TRD/workflow/include/TRDWorkflow/TRDGlobalTrackingSpec.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ class TRDGlobalTracking : public o2::framework::Task
7878
float mTPCTBinMUSInv{1.f / mTPCTBinMUS}; ///< inverse width of a TPC time bin in 1/us
7979
float mTPCVdrift{2.58f}; ///< TPC drift velocity (for shifting TPC tracks along Z)
8080
float mTPCTDriftOffset{0.f}; ///< TPC drift time additive offset
81+
int32_t mTCorrPileUp{0}; ///< most probable correction in number of BCs due to pile-up in TRD
82+
float mTErrPileUp2{0.f}; ///< error on correction in number of BCs due to pile-up in TRD
8183
std::shared_ptr<o2::globaltracking::DataRequest> mDataRequest; ///< seeding input (TPC-only, ITS-TPC or both)
8284
std::shared_ptr<o2::base::GRPGeomRequest> mGGCCDBRequest;
8385
o2::tpc::VDriftHelper mTPCVDriftHelper{};

Detectors/TRD/workflow/src/TRDGlobalTrackingSpec.cxx

Lines changed: 87 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,9 @@ void TRDGlobalTracking::updateTimeDependentParams(ProcessingContext& pc)
153153
mBase->init(pc);
154154
mBase->setLocalGainFactors(pc.inputs().get<o2::trd::LocalGainFactor*>("localgainfactors").get());
155155
}
156+
157+
pc.inputs().get<std::array<int, constants::MAXCHAMBER>*>("chamberstatus"); // called to trigger finaliseCCDB
158+
// pc.inputs().get<o2::trd::PadStatus*>("padstatus"); // called to trigger finaliseCCDB
156159
}
157160

158161
const auto& trackTune = TrackTuneParams::Instance();
@@ -198,6 +201,34 @@ void TRDGlobalTracking::finaliseCCDB(ConcreteDataMatcher& matcher, void* obj)
198201
return;
199202
}
200203
#endif
204+
if (matcher == ConcreteDataMatcher("TRD", "CHAMBERSTATUS", 0)) {
205+
LOG(info) << "chamber status object updated";
206+
const std::array<int, constants::MAXCHAMBER>* chamberStatus = (const std::array<int, constants::MAXCHAMBER>*)obj;
207+
for (int iDet = 0; iDet < constants::MAXCHAMBER; iDet++) {
208+
if ((*chamberStatus)[iDet] == 3) {
209+
mTracker->SetChamberStatus(iDet, false); // chamber is good
210+
} else {
211+
mTracker->SetChamberStatus(iDet, true); // chamber is bad
212+
}
213+
}
214+
return;
215+
}
216+
/*if (matcher == ConcreteDataMatcher("TRD", "PADSTATUS", 0)) {
217+
LOG(info) << "pad status object updated";
218+
const o2::trd::PadStatus* padStatus = (const o2::trd::PadStatus*)obj;
219+
for (int iDet = 0; iDet < constants::MAXCHAMBER; iDet++) {
220+
for (int iCol = 0; iCol < constants::NCOLUMN; iCol++) {
221+
for (int iRow = 0; iRow < ((iDet % 30) / 6 == 2 ? constants::NROWC0 : constants::NROWC1); iRow++) {
222+
if (padStatus->isMasked(iDet, iCol, iRow) || padStatus->isNotConnected(iDet, iCol, iRow)) {
223+
mTracker->SetPadStatus(iDet * constants::NCOLUMN * constants::NROWC1 + iCol * constants::NROWC1 + iRow, true); // pad is masked
224+
} else {
225+
mTracker->SetPadStatus(iDet * constants::NCOLUMN * constants::NROWC1 + iCol * constants::NROWC1 + iRow, false); // pad is not masked
226+
}
227+
}
228+
}
229+
}
230+
return;
231+
}*/
201232
}
202233

203234
void TRDGlobalTracking::fillMCTruthInfo(const TrackTRD& trk, o2::MCCompLabel lblSeed, std::vector<o2::MCCompLabel>& lblContainerTrd, std::vector<o2::MCCompLabel>& lblContainerMatch, const o2::dataformats::MCTruthContainer<o2::MCCompLabel>* trkltLabels) const
@@ -500,6 +531,45 @@ void TRDGlobalTracking::run(ProcessingContext& pc)
500531
if (trdTrack.getChi2() / trdTrack.getNtracklets() > mTracker->Param().rec.trd.maxChi2Red) {
501532
continue;
502533
}
534+
535+
// Find most probable BCs and RMS for pile-up correction and error. Same BC is assumed for all tracklets
536+
float maxProb = 0.f;
537+
// The uncertainty is the RMS wrt the default correction of all possible corrections weighted by their probability
538+
float sumCorr = 0.f;
539+
float sumCorr2 = 0.f;
540+
float sumProb = 0.f;
541+
for (int iBC = 0; iBC < mTriggeredBCFT0.size(); iBC++) {
542+
int deltaBC = roundf(mTriggeredBCFT0[iBC] - mChainTracking->mIOPtrs.trdTriggerTimes[trdTrack.getCollisionId()] / o2::constants::lhc::LHCBunchSpacingMUS);
543+
if (deltaBC <= mRecoParam.getPileUpRangeBefore() || deltaBC >= mRecoParam.getPileUpRangeAfter()) {
544+
continue;
545+
}
546+
// collect the charges
547+
std::array<int, 6> q0;
548+
std::array<int, 6> q1;
549+
for (int iLy = 0; iLy < NLAYER; iLy++) {
550+
int trkltId = trdTrack.getTrackletIndex(iLy);
551+
if (trkltId < 0) {
552+
q0[iLy] = -1;
553+
q1[iLy] = -1;
554+
} else {
555+
q0[iLy] = mTrackletsRaw[trkltId].getQ0();
556+
q1[iLy] = mTrackletsRaw[trkltId].getQ1();
557+
}
558+
}
559+
// get pile-up probability
560+
float probBC = mRecoParam.getPileUpProbTrack(deltaBC, q0, q1);
561+
sumCorr += probBC * deltaBC;
562+
sumCorr2 += probBC * deltaBC * deltaBC;
563+
sumProb += probBC;
564+
if (probBC > maxProb) {
565+
maxProb = probBC;
566+
mTCorrPileUp = -deltaBC;
567+
}
568+
}
569+
if (sumProb > 1e-6) {
570+
mTErrPileUp2 = sumCorr2 / sumProb - 2 * mTCorrPileUp * sumCorr / sumProb + mTCorrPileUp * mTCorrPileUp;
571+
}
572+
503573
nTrackletsAttached += trdTrack.getNtracklets();
504574
auto trackGID = trdTrack.getRefGlobalTrackId();
505575
if (trackGID.includesDet(GTrackID::Source::ITS)) {
@@ -529,7 +599,7 @@ void TRDGlobalTracking::run(ProcessingContext& pc)
529599
} else {
530600
tracksOutTPC.back().setPileUpDistance(mTracker->Param().rec.trd.pileupBwdNBC, mTracker->Param().rec.trd.pileupFwdNBC);
531601
}
532-
if (!refitTPCTRDTrack(tracksOutTPC.back(), mChainTracking->mIOPtrs.trdTriggerTimes[trdTrack.getCollisionId()], &inputTracks) || std::isnan(tracksOutTPC.back().getSnp())) {
602+
if (!refitTPCTRDTrack(tracksOutTPC.back(), mChainTracking->mIOPtrs.trdTriggerTimes[trdTrack.getCollisionId()] - mTCorrPileUp * o2::constants::lhc::LHCBunchSpacingMUS, &inputTracks) || std::isnan(tracksOutTPC.back().getSnp())) {
533603
tracksOutTPC.pop_back();
534604
++nTracksFailedTPCTRDRefit;
535605
continue;
@@ -734,7 +804,8 @@ bool TRDGlobalTracking::refitTPCTRDTrack(TrackTRD& trk, float timeTRD, o2::globa
734804
return false;
735805
}
736806
if (pileUpOn) { // account pileup time uncertainty in Z errors
737-
timeZErr = mTPCVdrift * trk.getPileUpTimeErrorMUS();
807+
// timeZErr = mTPCVdrift * trk.getPileUpTimeErrorMUS();
808+
timeZErr = mTPCVdrift * mTPCVdrift * mTErrPileUp2;
738809
outerParam.updateCov(timeZErr, o2::track::CovLabels::kSigZ2);
739810
}
740811
if (!refitTRDTrack(trk, chi2Out, false, true)) {
@@ -818,46 +889,6 @@ bool TRDGlobalTracking::refitTRDTrack(TrackTRD& trk, float& chi2, bool inwards,
818889
}
819890
}
820891

821-
// Find most probable BCs and RMS for pile-up correction and error. Same BC is assumed for all tracklets
822-
float tCorrPileUp = 0.;
823-
float tErrPileUp2 = 0;
824-
float maxProb = 0.f;
825-
// The uncertainty is the RMS wrt the default correction of all possible corrections weighted by their probability
826-
float sumCorr = 0.f;
827-
float sumCorr2 = 0.f;
828-
float sumProb = 0.f;
829-
for (int iBC = 0; iBC < mTriggeredBCFT0.size(); iBC++) {
830-
int deltaBC = roundf(mTriggeredBCFT0[iBC] - mChainTracking->mIOPtrs.trdTriggerTimes[trk.getCollisionId()] / o2::constants::lhc::LHCBunchSpacingMUS);
831-
if (deltaBC <= mRecoParam.getPileUpRangeBefore() || deltaBC >= mRecoParam.getPileUpRangeAfter()) {
832-
continue;
833-
}
834-
// collect the charges
835-
std::array<int, 6> q0;
836-
std::array<int, 6> q1;
837-
for (int iLy = 0; iLy < NLAYER; iLy++) {
838-
int trkltId = trk.getTrackletIndex(iLy);
839-
if (trkltId < 0) {
840-
q0[iLy] = -1;
841-
q1[iLy] = -1;
842-
} else {
843-
q0[iLy] = mTrackletsRaw[trkltId].getQ0();
844-
q1[iLy] = mTrackletsRaw[trkltId].getQ1();
845-
}
846-
}
847-
// get pile-up probability
848-
float probBC = mRecoParam.getPileUpProbTrack(deltaBC, q0, q1);
849-
sumCorr += probBC * deltaBC;
850-
sumCorr2 += probBC * deltaBC * deltaBC;
851-
sumProb += probBC;
852-
if (probBC > maxProb) {
853-
maxProb = probBC;
854-
tCorrPileUp = -deltaBC;
855-
}
856-
}
857-
if (sumProb > 1e-6) {
858-
tErrPileUp2 = sumCorr2 / sumProb - 2 * tCorrPileUp * sumCorr / sumProb + tCorrPileUp * tCorrPileUp;
859-
}
860-
861892
if (inwards) {
862893
// reset covariance to something big for inwards refit
863894
trkParam->resetCovariance(100);
@@ -891,13 +922,20 @@ bool TRDGlobalTracking::refitTRDTrack(TrackTRD& trk, float& chi2, bool inwards,
891922

892923
// conversion from slope in pad per time bin to slope in cm per BC = tracklets[trkltIdx].getSlopeFloat() * padWidth / BCperTimeBin
893924
float slopeFactor = mTrackletsRaw[trkltId].getSlopeFloat() * pad->getWidthIPad() / 4.f;
894-
float yCorrPileUp = tCorrPileUp * slopeFactor;
895-
float yAddErrPileUp2 = tErrPileUp2 * slopeFactor * slopeFactor;
925+
float yCorrPileUp = mTCorrPileUp * slopeFactor;
926+
float yAddErrPileUp2 = mTErrPileUp2 * slopeFactor * slopeFactor;
927+
float yPosCorrUp = mTrackletsCalib[trkltId].getY() - tiltCorrUp + yCorrPileUp;
896928

897929
int nTrackletsChamber = mTracker->GetNtrackletsChamber(trk.getCollisionId(), trkltDet);
898930
float angularPull = (mTrackletsCalib[trkltId].getDy() + dyTiltCorr - mRecoParam.convertAngleToDy(trkParam->getSnp())) / std::sqrt(mRecoParam.getDyRes(trkParam->getSnp(), nTrackletsChamber));
899931

900-
std::array<float, 2> trkltPosUp{mTrackletsCalib[trkltId].getY() - tiltCorrUp + yCorrPileUp, zPosCorrUp};
932+
// Correction of y position based on angular pull
933+
if (mRec->GetParam().rec.trd.useAngularPull == 3 || mRec->GetParam().rec.trd.useAngularPull == 4) {
934+
float corrPull = -angularPull * mRecoParam.getCorrYDy(trkParam->getSnp());
935+
yPosCorrUp += corrPull;
936+
}
937+
938+
std::array<float, 2> trkltPosUp{yPosCorrUp, zPosCorrUp};
901939
std::array<float, 3> trkltCovUp;
902940
mRecoParam.recalcTrkltCov(tilt, trkParam->getSnp(), pad->getRowSize(mTrackletsRaw[trkltId].getPadRow()), trkltCovUp, (mRec->GetParam().rec.trd.useAngularPull != 0 ? angularPull : 0.), nTrackletsChamber);
903941
trkltCovUp[0] += yAddErrPileUp2;
@@ -1007,6 +1045,10 @@ DataProcessorSpec getTRDGlobalTrackingSpec(bool useMC, GTrackID::mask_t src, boo
10071045
inputs.emplace_back("localgainfactors", "TRD", "LOCALGAINFACTORS", 0, Lifetime::Condition, ccdbParamSpec("TRD/Calib/LocalGainFactor"));
10081046
}
10091047

1048+
// request list of bad chambers and masked pads to estimate better the number of findable tracklets
1049+
inputs.emplace_back("chamberstatus", "TRD", "CHAMBERSTATUS", 0, Lifetime::Condition, ccdbParamSpec("TRD/Calib/DCSDPsFedChamberStatus"));
1050+
// inputs.emplace_back("padstatus", "TRD", "PADSTATUS", 0, Lifetime::Condition, ccdbParamSpec("TRD/Calib/PadStatus"));
1051+
10101052
if (GTrackID::includesSource(GTrackID::Source::ITSTPC, src)) {
10111053
outputs.emplace_back(o2::header::gDataOriginTRD, "MATCH_ITSTPC", 0, Lifetime::Timeframe);
10121054
outputs.emplace_back(o2::header::gDataOriginTRD, "TRGREC_ITSTPC", 0, Lifetime::Timeframe);

GPU/GPUTracking/DataTypes/GPUTRDRecoParam.cxx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,18 @@ void GPUTRDRecoParam::init(float bz, const GPUSettingsRec* rec)
4545
if (CAMath::Abs(CAMath::Abs(bz) - 2) < 0.1) {
4646
if (bz > 0) {
4747
// magnetic field +0.2 T
48-
mRPhiC2 = 4.55e-2f;
48+
mRPhiC2 = 0.098f;
4949
} else {
5050
// magnetic field -0.2 T
51-
mRPhiC2 = 4.55e-2f;
51+
mRPhiC2 = 0.098f;
5252
}
5353
} else if (CAMath::Abs(CAMath::Abs(bz) - 5) < 0.1) {
5454
if (bz > 0) {
5555
// magnetic field +0.5 T
56-
mRPhiC2 = 0.0961f;
56+
mRPhiC2 = 0.058f;
5757
} else {
5858
// magnetic field -0.5 T
59-
mRPhiC2 = 0.1156f;
59+
mRPhiC2 = 0.072f;
6060
}
6161
} else {
6262
LOGP(warning, "No error parameterization available for Bz= {}. Keeping default value (sigma_y = const. = 1cm)", bz);

0 commit comments

Comments
 (0)