Skip to content

Commit 0ff6d35

Browse files
matthias-kleinerdavidrohr
authored andcommitted
IDCs: optimize outlier filtering
1 parent 53bd9ce commit 0ff6d35

3 files changed

Lines changed: 6 additions & 4 deletions

File tree

Detectors/TPC/calibration/include/TPCCalibration/IDCFactorization.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ class IDCFactorization : public IDCGroupHelperSector
338338
std::unique_ptr<CalDet<float>> mGainMap; ///<! static Gain map object used for filling missing IDC_0 values
339339
std::unique_ptr<CalDet<PadFlags>> mPadFlagsMap; ///< status flag for each pad (i.e. if the pad is dead)
340340
bool mInputGrouped{false}; ///< flag which is set to true if the input IDCs are grouped (checked via the grouping parameters from the constructor)
341-
bool mUsePadStatusMap{false}; ///< flag for using the pad-by-pad status map during the factorization of the IDCs
341+
bool mUsePadStatusMap{true}; ///< flag for using the pad-by-pad status map during the factorization of the IDCs
342342
const std::vector<uint32_t> mCRUs{}; ///< CRUs to process in this instance
343343
std::array<unsigned int, SIDES> mSideIndex{0, 1}; ///< index to mIDCZero, mIDCOne and mIDCDelta for TPC side
344344
std::vector<Side> mSides{}; ///< processed TPC sides

Detectors/TPC/calibration/include/TPCCalibration/IDCGroupingParameter.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ struct ParameterIDCGroup : public o2::conf::ConfigurableParamHelper<ParameterIDC
4747
float sigma = 3.f; ///< sigma cut which can be used during the grouping for outlier filtering
4848
float minIDC0Median = 6; ///< this value is used for identifying outliers (pads with high IDC0 values): "accepted IDC 0 values > median_IDC0 + stdDev * minIDC0Median"
4949
float maxIDC0Median = 6; ///< this value is used for identifying outliers (pads with high IDC0 values): "accepted IDC 0 values < median_IDC0 + stdDev * maxIDC0Median"
50+
int minIDC0Val = 1; ///< minimum accepted IDC0 value (should be larger than 0 in case of real data)
51+
int maxIDC0Val = 150; ///< maximum accepted IDC0 value (max IDC0 for 3MHz pp ~30)
5052

5153
/// Helper function for setting the groupimg parameters from a string (can be "X": parameters in all regions are "X" or can be "1,2,3,4,5,6,7,8,9,10" for setting individual regions)
5254
/// \param sgroupPads string for grouping parameter in pad direction

Detectors/TPC/calibration/src/IDCFactorization.cxx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -456,17 +456,17 @@ void o2::tpc::IDCFactorization::createStatusMap()
456456

457457
if (iter == 0) {
458458
// exclude dead pads
459-
if (idcZeroVal != -1) {
459+
if ((idcZeroVal != -1) && (idcZeroVal > paramIDCGroup.minIDC0Val) && (idcZeroVal < paramIDCGroup.maxIDC0Val)) {
460460
average.addValue(idcZeroVal);
461461
}
462462
} else {
463463
const unsigned int padInRegion = Mapper::OFFSETCRULOCAL[region][lrow] + pad;
464464
o2::tpc::PadFlags flag = o2::tpc::PadFlags::flagGoodPad;
465465
if (idcZeroVal == -1) {
466466
flag = o2::tpc::PadFlags::flagDeadPad | o2::tpc::PadFlags::flagSkip | mPadFlagsMap->getCalArray(cru).getValue(padInRegion);
467-
} else if (idcZeroVal > median + stdDev * paramIDCGroup.maxIDC0Median) {
467+
} else if ((idcZeroVal > paramIDCGroup.maxIDC0Val) || (idcZeroVal > median + stdDev * paramIDCGroup.maxIDC0Median)) {
468468
flag = o2::tpc::PadFlags::flagHighPad | o2::tpc::PadFlags::flagSkip | mPadFlagsMap->getCalArray(cru).getValue(padInRegion);
469-
} else if (idcZeroVal < median - stdDev * paramIDCGroup.minIDC0Median) {
469+
} else if ((idcZeroVal < paramIDCGroup.minIDC0Val) || (idcZeroVal < median - stdDev * paramIDCGroup.minIDC0Median)) {
470470
flag = o2::tpc::PadFlags::flagLowPad | o2::tpc::PadFlags::flagSkip | mPadFlagsMap->getCalArray(cru).getValue(padInRegion);
471471
}
472472
mPadFlagsMap->getCalArray(cru).setValue(padInRegion, flag);

0 commit comments

Comments
 (0)