Skip to content

Commit 2b7dd19

Browse files
author
Szymon Pulawski
committed
FT0: add threshold for crosstalk-induced low-amplitude digits
1 parent 06578c2 commit 2b7dd19

2 files changed

Lines changed: 26 additions & 12 deletions

File tree

Detectors/FIT/FT0/base/include/FT0Base/FT0DigParam.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,15 @@ struct FT0DigParam : o2::conf::ConfigurableParamHelper<FT0DigParam> {
4343
float mNoiseVar = 0.1; // noise level
4444
float mNoisePeriod = 1 / 0.9; // GHz low frequency noise period;
4545
short mTime_trg_gate = 153; // #channels as in TCM as in Pilot beams ('OR gate' setting in TCM tab in ControlServer)
46-
short mTime_trg_vertex_gate = 100; // #channels as in TCM as in Pilot beams ('OR gate' setting in TCM tab in ControlServer)
46+
short mTime_trg_vertex_gate = 100; // #channels as in TCM for VTX trigger
4747
float mAmpThresholdForReco = 5; // only channels with amplitude higher will participate in calibration and collision time: 0.3 MIP
4848
short mTimeThresholdForReco = 1000; // only channels with time below will participate in calibration and collision time
4949

5050
float mMV_2_Nchannels = 2.; // amplitude channel 7 mV ->14channels
5151
float mMV_2_NchannelsInverse = 0.5; // inverse amplitude channel 7 mV ->14channels (nowhere used)
5252

53-
float Cross_Talk_Frac = 0.05f; // Crosstalk between channels
53+
float Cross_Talk_Frac = 0.10f; // Crosstalk between channels
54+
float mAmpThresholdForCrossTalkDigit = 5.f; // Treshold for low crosstalk signals
5455

5556
O2ParamDef(FT0DigParam, "FT0DigParam");
5657
};

Detectors/FIT/FT0/simulation/src/Digitizer.cxx

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -489,17 +489,24 @@ void Digitizer::storeBC(BCCache& bc,
489489
finalAmp[nb2] += directXtalk;
490490
finalAmp[diag] += diagXtalk;
491491

492-
auto propagateIfEmpty = [&](int dst) {
493-
if (!chValid[dst]) {
494-
chValid[dst] = true;
495-
chTime[dst] = chTime[src];
496-
chChain[dst] = chChain[src];
497-
}
498-
};
492+
if (!chValid[nb1] && directXtalk >= params.mAmpThresholdForCrossTalkDigit) {
493+
chValid[nb1] = true;
494+
chTime[nb1] = chTime[src];
495+
chChain[nb1] = chChain[src];
496+
}
497+
498+
if (!chValid[nb2] && directXtalk >= params.mAmpThresholdForCrossTalkDigit) {
499+
chValid[nb2] = true;
500+
chTime[nb2] = chTime[src];
501+
chChain[nb2] = chChain[src];
502+
}
503+
504+
if (!chValid[diag] && diagXtalk >= params.mAmpThresholdForCrossTalkDigit) {
505+
chValid[diag] = true;
506+
chTime[diag] = chTime[src];
507+
chChain[diag] = chChain[src];
508+
}
499509

500-
propagateIfEmpty(nb1);
501-
propagateIfEmpty(nb2);
502-
propagateIfEmpty(diag);
503510
}
504511
}
505512

@@ -512,6 +519,12 @@ void Digitizer::storeBC(BCCache& bc,
512519
if (amp > 4095.f) {
513520
amp = 4095.f;
514521
}
522+
const bool hasPrimarySignal = (baseAmp[ipmt] > 0.f);
523+
const bool isCrossTalkOnly = (!hasPrimarySignal && amp > 0.f);
524+
525+
if (isCrossTalkOnly && amp < params.mAmpThresholdForCrossTalkDigit) {
526+
continue;
527+
}
515528

516529
const int smeared_time = chTime[ipmt];
517530
const int chain = chChain[ipmt];

0 commit comments

Comments
 (0)