Skip to content

Commit 8ded101

Browse files
committed
Add in Joe Zennamo's idea of cutting on number of samples a certain distance from pedestal, both in raw digits and recob::wire
1 parent 3726cb6 commit 8ded101

3 files changed

Lines changed: 31 additions & 2 deletions

File tree

sbndcode/Utilities/DigitalNoiseChannelStatus.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ class sbnd::DigitalNoiseChannelStatus {
4747
std::string fRawDigitLabel;
4848
std::string fRecobWireLabel;
4949

50+
int fNAwayFromPedestalRawDigit;
51+
int fDistFromPedestalRawDigit;
52+
int fNAwayFromPedestalRecobWire;
53+
float fDistFromPedestalRecobWire;
54+
5055
};
5156

5257
DECLARE_ART_SERVICE(sbnd::DigitalNoiseChannelStatus, LEGACY)

sbndcode/Utilities/DigitalNoiseChannelStatusDefaults.fcl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ DigitalNoiseChannelStatusDefaults :
77
RMSCutRawDigit: 100
88
RMSCutWire: 100
99
NBADCutRawDigit: 5
10+
NAwayFromPedestalRawDigit: 100
11+
DistFromPedestalRawDigit: 100
12+
NAwayFromPedestalRecobWire: 100
13+
DistFromPedestalRecobWire: 100
1014
}
1115

1216
END_PROLOG

sbndcode/Utilities/DigitalNoiseChannelStatus_service.cc

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ sbnd::DigitalNoiseChannelStatus::DigitalNoiseChannelStatus(fhicl::ParameterSet c
1313
fNBADCutRawDigit = p.get<float>("NBADCutRawDigit",5);
1414
fRawDigitLabel = p.get<std::string>("RawDigitLabel","daq");
1515
fRecobWireLabel = p.get<std::string>("RecobWireLabel","caldata");
16-
16+
fNAwayFromPedestalRawDigit = p.get<int>("NAwayFromPedestalRawDigit",100);
17+
fDistFromPedestalRawDigit = p.get<int>("DistFromPedestalRawDigit",100);
18+
fNAwayFromPedestalRecobWire = p.get<int>("NAwayFromPedestalRecobWire",100);
19+
fDistFromPedestalRecobWire = p.get<float>("DistFromPedestalRecobWire",100);
20+
1721
areg.sPreProcessEvent.watch(this, &sbnd::DigitalNoiseChannelStatus::pub_PrepEvent);
1822
}
1923

@@ -52,15 +56,21 @@ void sbnd::DigitalNoiseChannelStatus::pub_PrepEvent(const art::Event& evt, art::
5256
rawadc.resize(rd.Samples());
5357
raw::Uncompress(rd.ADCs(), rawadc, rd.GetPedestal(), rd.Compression());
5458
bool alleven = true;
59+
int naway = 0;
5560
const short adc0 = rawadc.at(0);
5661
for (size_t i=0; i< rd.Samples(); ++i)
5762
{
5863
const short adc = rawadc.at(i);
5964
if (adc == 0xBAD) ++nhexbad;
60-
alleven &= ( ((adc - adc0) % 2) == 0 );
65+
alleven &= ( ((adc - adc0) % 2) == 0 );
66+
if (std::abs(adc - rd.GetPedestal()) > fDistFromPedestalRawDigit)
67+
{
68+
++naway;
69+
}
6170
}
6271
chanbad |= (nhexbad > fNBADCutRawDigit);
6372
chanbad |= alleven;
73+
chanbad |= (naway > fNAwayFromPedestalRawDigit);
6474
if (chanbad) fDNChannels.emplace(rd.Channel());
6575
}
6676
}
@@ -73,6 +83,16 @@ void sbnd::DigitalNoiseChannelStatus::pub_PrepEvent(const art::Event& evt, art::
7383
bool chanbad = false;
7484
auto rms = TMath::RMS(rw.NSignal(),rw.Signal().data());
7585
chanbad |= (rms > fRMSCutWire);
86+
auto mns = TMath::Mean(rw.NSignal(),rw.Signal().data());
87+
int naway = 0;
88+
for (size_t i=0; i<rw.NSignal(); ++i)
89+
{
90+
if (std::abs(rw.Signal()[i] - mns) > fDistFromPedestalRecobWire)
91+
{
92+
naway ++;
93+
}
94+
}
95+
chanbad |= (naway > fNAwayFromPedestalRecobWire);
7696
if (chanbad) fDNChannels.emplace(rw.Channel());
7797
}
7898
}

0 commit comments

Comments
 (0)