20 #include "art_root_io/TFileService.h" 81 auto const clock_data =
84 double sampfreq = 1. / samprate * 1e6;
87 unsigned int fNPlanes = wireReadoutGeom.Nplanes();
89 unsigned int fNTPC = geo->
NTPC();
91 for (
unsigned int icstat = 0; icstat < fNCryostats; icstat++) {
92 for (
unsigned int itpc = 0; itpc < fNTPC; itpc++) {
93 for (
unsigned int iplane = 0; iplane < fNPlanes; iplane++) {
95 tfs->make<TH1F>(Form(
"fft_noise_%d_%d_%d", icstat, itpc, iplane),
96 Form(
"fft_of_unfiltered_noise_%d_%d_%d", icstat, itpc, iplane),
101 fCsignal[icstat][itpc][iplane] = tfs->make<TH1F>(
102 Form(
"fft_signal_%d_%d_%d", icstat, itpc, iplane),
103 Form(
"fft_of_unfiltered_noise_and_signal_%d_%d_%d", icstat, itpc, iplane),
109 tfs->make<TH1F>(Form(
"fft_noise_%d_%d_%d_av", icstat, itpc, iplane),
110 Form(
"fft_of_unfiltered_noise_%d_%d_%d_av", icstat, itpc, iplane),
114 fCsignal_av[icstat][itpc][iplane] = tfs->make<TH1F>(
115 Form(
"fft_signal_%d_%d_%d_av", icstat, itpc, iplane),
116 Form(
"fft_of_unfiltered_noise_and_signal_%d_%d_%d_av", icstat, itpc, iplane),
122 tfs->make<TH1F>(Form(
"fft_filter_%d_%d_%d_av", icstat, itpc, iplane),
123 Form(
"fft_filter_%d_%d_%d_av", icstat, itpc, iplane),
131 hh = tfs->make<TH1F>(Form(
"waveform"), Form(
"waveform"), fNTicks, 0, fNTicks);
139 unsigned int nplanes = wireReadoutGeom.Nplanes();
140 unsigned int fNCryostats = geom->
Ncryostats();
141 unsigned int fNTPC = geom->
NTPC();
145 for (
unsigned int icstat = 0; icstat < fNCryostats; icstat++) {
146 for (
unsigned int itpc = 0; itpc < fNTPC; itpc++) {
147 for (
unsigned int pp = 0; pp < nplanes; pp++) {
149 for (
int ii = 1; ii <
fCsignal_av[icstat][itpc][pp]->GetNbinsX(); ii++) {
151 double diff = ((
fCsignal_av[icstat][itpc][pp]->GetBinContent(ii) *
153 fCnoise_av[icstat][itpc][pp]->GetBinContent(ii) *
154 fCnoise_av[icstat][itpc][pp]->GetBinContent(ii)) >= 0) ?
157 fCnoise_av[icstat][itpc][pp]->GetBinContent(ii) *
158 fCnoise_av[icstat][itpc][pp]->GetBinContent(ii) :
161 if (
fCsignal_av[icstat][itpc][pp]->GetBinContent(ii) > 0)
164 (
double)((diff) / (
fCsignal_av[icstat][itpc][pp]->GetBinContent(ii) *
165 fCsignal_av[icstat][itpc][pp]->GetBinContent(ii))));
167 fFilter_av[icstat][itpc][pp]->SetBinContent(ii, 0);
182 mf::LogInfo(
"WienerFilterMicroBooNE") <<
" readout Wiener " << rdHandle->size() << std::endl;
184 if (!rdHandle->size())
return;
186 <<
"WienerFilterMicroBooNE:: rdHandle size is " << rdHandle->size();
192 for (
unsigned int i = 0; i < rdHandle->size(); ++i) {
200 for (
unsigned int rd = 0; rd < rdvec.
size(); ++rd) {
202 std::vector<double> adc(fft->
FFTSize());
204 for (
unsigned int t = 1; t < rdvec[rd]->Samples(); t++) {
205 adc[t - 1] = rdvec[rd]->ADC(t - 1);
206 hh->SetBinContent(t, rdvec[rd]->ADC(t));
209 geo::WireID wireid = wireReadoutGeom.ChannelToWire(rdvec[rd]->Channel())[0];
212 unsigned int plane = wireid.
Plane;
213 unsigned int wire = wireid.
Wire;
215 unsigned int cstat = wireid.
Cryostat;
216 unsigned int tpc = wireid.
TPC;
217 ff =
hh->FFT(NULL,
"MAG M");
218 if (wire >= 50 && wire < 250) {
219 for (
int ii = 0; ii <
fNBins; ii++) {
220 fCnoise_av[cstat][tpc][plane]->AddBinContent(ii,
ff->GetBinContent(ii));
221 if (wire == 150)
fCnoise[cstat][tpc][plane]->SetBinContent(ii,
ff->GetBinContent(ii));
224 else if (wire >= 700 && wire < 900) {
225 for (
int ii = 0; ii <
fNBins; ii++) {
226 fCsignal_av[cstat][tpc][plane]->AddBinContent(ii,
ff->GetBinContent(ii));
227 if (wire == 800)
fCsignal[cstat][tpc][plane]->SetBinContent(ii,
ff->GetBinContent(ii));
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
unsigned int NTPC(CryostatID const &cryoid=details::cryostat_zero) const
Returns the total number of TPCs in the specified cryostat.
Detector simulation of raw signals on wires.
CryostatID_t Cryostat
Index of cryostat.
Definition of basic raw digits.
cout<< "Opened file "<< fin<< " ixs= "<< ixs<< endl;if(ixs==0) hhh=(TH1F *) fff-> Get("h1")
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
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.
art framework interface to geometry description
TH1F * fCsignal_av[10][10][5]
TH1F * fCsignal[10][10][5]