20 #include "art_root_io/TFileService.h" 81 auto const clock_data =
84 double sampfreq = 1. / samprate * 1e6;
86 unsigned int fNPlanes = geo->
Nplanes();
88 unsigned int fNTPC = geo->
NTPC();
90 for (
unsigned int icstat = 0; icstat < fNCryostats; icstat++) {
91 for (
unsigned int itpc = 0; itpc < fNTPC; itpc++) {
92 for (
unsigned int iplane = 0; iplane < fNPlanes; iplane++) {
94 tfs->make<TH1F>(Form(
"fft_noise_%d_%d_%d", icstat, itpc, iplane),
95 Form(
"fft_of_unfiltered_noise_%d_%d_%d", icstat, itpc, iplane),
100 fCsignal[icstat][itpc][iplane] = tfs->make<TH1F>(
101 Form(
"fft_signal_%d_%d_%d", icstat, itpc, iplane),
102 Form(
"fft_of_unfiltered_noise_and_signal_%d_%d_%d", icstat, itpc, iplane),
108 tfs->make<TH1F>(Form(
"fft_noise_%d_%d_%d_av", icstat, itpc, iplane),
109 Form(
"fft_of_unfiltered_noise_%d_%d_%d_av", icstat, itpc, iplane),
113 fCsignal_av[icstat][itpc][iplane] = tfs->make<TH1F>(
114 Form(
"fft_signal_%d_%d_%d_av", icstat, itpc, iplane),
115 Form(
"fft_of_unfiltered_noise_and_signal_%d_%d_%d_av", icstat, itpc, iplane),
121 tfs->make<TH1F>(Form(
"fft_filter_%d_%d_%d_av", icstat, itpc, iplane),
122 Form(
"fft_filter_%d_%d_%d_av", icstat, itpc, iplane),
131 hh = tfs->make<TH1F>(Form(
"waveform"), Form(
"waveform"), fNTicks, 0, fNTicks);
141 unsigned int nplanes = geom->
Nplanes();
142 unsigned int fNCryostats = geom->
Ncryostats();
143 unsigned int fNTPC = geom->
NTPC();
147 for (
unsigned int icstat = 0; icstat < fNCryostats; icstat++) {
148 for (
unsigned int itpc = 0; itpc < fNTPC; itpc++) {
149 for (
unsigned int pp = 0; pp < nplanes; pp++) {
151 for (
int ii = 1; ii <
fCsignal_av[icstat][itpc][pp]->GetNbinsX(); ii++) {
153 double diff = ((
fCsignal_av[icstat][itpc][pp]->GetBinContent(ii) *
155 fCnoise_av[icstat][itpc][pp]->GetBinContent(ii) *
156 fCnoise_av[icstat][itpc][pp]->GetBinContent(ii)) >= 0) ?
159 fCnoise_av[icstat][itpc][pp]->GetBinContent(ii) *
160 fCnoise_av[icstat][itpc][pp]->GetBinContent(ii) :
163 if (
fCsignal_av[icstat][itpc][pp]->GetBinContent(ii) > 0)
166 (
double)((diff) / (
fCsignal_av[icstat][itpc][pp]->GetBinContent(ii) *
167 fCsignal_av[icstat][itpc][pp]->GetBinContent(ii))));
169 fFilter_av[icstat][itpc][pp]->SetBinContent(ii, 0);
185 mf::LogInfo(
"WienerFilterMicroBooNE") <<
" readout Wiener " << rdHandle->size() << std::endl;
187 if (!rdHandle->size())
return;
189 <<
"WienerFilterMicroBooNE:: rdHandle size is " << rdHandle->size();
195 for (
unsigned int i = 0; i < rdHandle->size(); ++i) {
204 for (
unsigned int rd = 0; rd < rdvec.
size(); ++rd) {
206 std::vector<double> adc(fft->
FFTSize());
208 for (
unsigned int t = 1; t < rdvec[rd]->Samples(); t++) {
209 adc[t - 1] = rdvec[rd]->ADC(t - 1);
210 hh->SetBinContent(t, rdvec[rd]->ADC(t));
216 unsigned int plane = wireid.
Plane;
217 unsigned int wire = wireid.
Wire;
219 unsigned int cstat = wireid.
Cryostat;
220 unsigned int tpc = wireid.
TPC;
221 ff =
hh->FFT(NULL,
"MAG M");
222 if (wire >= 50 && wire < 250) {
223 for (
int ii = 0; ii <
fNBins; ii++) {
224 fCnoise_av[cstat][tpc][plane]->AddBinContent(ii,
ff->GetBinContent(ii));
225 if (wire == 150)
fCnoise[cstat][tpc][plane]->SetBinContent(ii,
ff->GetBinContent(ii));
228 else if (wire >= 700 && wire < 900) {
229 for (
int ii = 0; ii <
fNBins; ii++) {
230 fCsignal_av[cstat][tpc][plane]->AddBinContent(ii,
ff->GetBinContent(ii));
231 if (wire == 800)
fCsignal[cstat][tpc][plane]->SetBinContent(ii,
ff->GetBinContent(ii));
unsigned int NTPC(CryostatID const &cryoid=cryostat_zero) const
Returns the total number of TPCs in the specified cryostat.
std::vector< WireID > ChannelToWire(raw::ChannelID_t const channel) const
Returns a list of wires connected to the specified TPC channel.
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
Detector simulation of raw signals on wires.
CryostatID_t Cryostat
Index of cryostat.
Definition of basic raw digits.
WireID_t Wire
Index of the wire within its plane.
EDAnalyzer(fhicl::ParameterSet const &pset)
unsigned int Ncryostats() const
Returns the number of cryostats in the detector.
std::string fDetSimModuleLabel
#define DEFINE_ART_MODULE(klass)
void push_back(Ptr< U > const &p)
TH1F * fCnoise[10][10][5]
Base class for creation of raw signals on wires.
PlaneID_t Plane
Index of the plane within its TPC.
TH1F * fCnoise_av[10][10][5]
decltype(auto) get(T &&obj)
ADL-aware version of std::to_string.
bool getByLabel(std::string const &label, std::string const &instance, Handle< PROD > &result) const
unsigned int Nplanes(TPCID const &tpcid=tpc_zero) const
Returns the total number of planes in the specified TPC.
TH1F * fFilter_av[10][10][5]
void analyze(const art::Event &evt)
read/write access to event
WienerFilterAna(fhicl::ParameterSet const &pset)
TPCID_t TPC
Index of the TPC within its cryostat.
double sampling_rate(DetectorClocksData const &data)
Returns the period of the TPC readout electronics clock.
Namespace collecting geometry-related classes utilities.
art framework interface to geometry description
TH1F * fCsignal_av[10][10][5]
TH1F * fCsignal[10][10][5]