LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
nnet::WaveformDenoiseTest Class Reference
Inheritance diagram for nnet::WaveformDenoiseTest:
art::EDAnalyzer art::detail::Analyzer art::detail::LegacyModule art::Observer art::ModuleBase

Public Types

using ModuleType = EDAnalyzer
 

Public Member Functions

 WaveformDenoiseTest (fhicl::ParameterSet const &p)
 
 WaveformDenoiseTest (WaveformDenoiseTest const &)=delete
 
 WaveformDenoiseTest (WaveformDenoiseTest &&)=delete
 
WaveformDenoiseTestoperator= (WaveformDenoiseTest const &)=delete
 
WaveformDenoiseTestoperator= (WaveformDenoiseTest &&)=delete
 
void analyze (art::Event const &e) override
 
void beginJob () override
 
void endJob () override
 
void doBeginJob (SharedResources const &resources)
 
void doEndJob ()
 
void doRespondToOpenInputFile (FileBlock const &fb)
 
void doRespondToCloseInputFile (FileBlock const &fb)
 
void doRespondToOpenOutputFiles (FileBlock const &fb)
 
void doRespondToCloseOutputFiles (FileBlock const &fb)
 
bool doBeginRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doEndRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doBeginSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEndSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEvent (EventPrincipal &ep, ModuleContext const &mc, std::atomic< std::size_t > &counts_run, std::atomic< std::size_t > &counts_passed, std::atomic< std::size_t > &counts_failed)
 
ModuleDescription const & moduleDescription () const
 
void setModuleDescription (ModuleDescription const &)
 
std::array< std::vector< ProductInfo >, NumBranchTypes > const & getConsumables () const
 
void sortConsumables (std::string const &current_process_name)
 
std::unique_ptr< Worker > makeWorker (WorkerParams const &wp)
 
template<typename T , BranchType BT>
ViewToken< T > consumesView (InputTag const &tag)
 
template<typename T , BranchType BT>
ViewToken< T > mayConsumeView (InputTag const &tag)
 

Protected Member Functions

std::string const & processName () const
 
bool wantAllEvents () const noexcept
 
bool wantEvent (ScheduleID id, Event const &e) const
 
Handle< TriggerResults > getTriggerResults (Event const &e) const
 
ConsumesCollector & consumesCollector ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > consumes (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > consumesView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void consumesMany ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > mayConsume (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > mayConsumeView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void mayConsumeMany ()
 

Private Attributes

std::string fDumpWaveformsFileName
 
std::string fDumpCleanSignalFileName
 
std::string fDumpDenoisedFileName
 
unsigned int fDisplayWindowSize
 
std::string fSimChannelLabel
 module that made simchannels More...
 
std::string fDigitModuleLabel
 module that made digits More...
 
std::string fCleanSignalDigitModuleLabel
 module that made the signal-only digits More...
 
std::string fPlaneToDump
 
std::string fCollectionPlaneLabel
 
art::ServiceHandle< geo::Geometryfgeom
 
std::vector< std::unique_ptr< wavrec_tool::IWaveformRecog > > fWaveformRecogToolVec
 
std::vector< std::unique_ptr< wavdenoise_tool::IWaveformDenoise > > fWaveformDenoiseToolVec
 
int fNPlanes
 
std::ofstream _fileout1
 
c2numpy_writer npywriter
 
c2numpy_writer npywriter2
 
c2numpy_writer npywriter3
 

Detailed Description

Definition at line 47 of file WaveformDenoiseTest_module.cc.

Member Typedef Documentation

Definition at line 22 of file EDAnalyzer.h.

Constructor & Destructor Documentation

nnet::WaveformDenoiseTest::WaveformDenoiseTest ( fhicl::ParameterSet const &  p)
explicit

Definition at line 92 of file WaveformDenoiseTest_module.cc.

References fCleanSignalDigitModuleLabel, fCollectionPlaneLabel, fDigitModuleLabel, fDisplayWindowSize, fDumpCleanSignalFileName, fDumpDenoisedFileName, fDumpWaveformsFileName, fgeom, fNPlanes, fPlaneToDump, fSimChannelLabel, fWaveformDenoiseToolVec, fWaveformRecogToolVec, and geo::GeometryCore::Nplanes().

93  : EDAnalyzer{p}
94  , fDumpWaveformsFileName(p.get<std::string>("DumpWaveformsFileName", "dumpwaveforms"))
95  , fDumpCleanSignalFileName(p.get<std::string>("CleanSignalFileName", "dumpcleansignal"))
96  , fDumpDenoisedFileName(p.get<std::string>("DenoisedFileName", "dumpdenoised"))
97  , fDisplayWindowSize(p.get<unsigned int>("DisplayWindowSize", 500))
98  , fSimChannelLabel(p.get<std::string>("SimChannelLabel", "elecDrift"))
99  , fDigitModuleLabel(p.get<std::string>("DigitModuleLabel", "simWire"))
101  p.get<std::string>("CleanSignalDigitModuleLabel", "simWire:signal"))
102  , fPlaneToDump(p.get<std::string>("PlaneToDump", "U"))
103  , fCollectionPlaneLabel(p.get<std::string>("CollectionPlaneLabel", "Z"))
104 {
105 
106  if (fDigitModuleLabel.empty() && fCleanSignalDigitModuleLabel.empty()) {
107  throw cet::exception("WaveformDenoiseTest")
108  << "Both DigitModuleLabel and CleanSignalModuleLabel are empty";
109  }
110 
111  fNPlanes = fgeom->Nplanes();
112 
113  // Signal/Noise waveform recognition tool
115  auto const tool_psets1 = p.get<std::vector<fhicl::ParameterSet>>("WaveformRecogs");
116  for (auto const& pset : tool_psets1) {
117  fWaveformRecogToolVec.push_back(art::make_tool<wavrec_tool::IWaveformRecog>(pset));
118  }
119 
120  // AE based waveform denoising tool
122  auto const tool_psets2 = p.get<std::vector<fhicl::ParameterSet>>("WaveformDenoisers");
123  for (auto const& pset : tool_psets2) {
124  fWaveformDenoiseToolVec.push_back(art::make_tool<wavdenoise_tool::IWaveformDenoise>(pset));
125  }
126 }
std::string fCleanSignalDigitModuleLabel
module that made the signal-only digits
art::ServiceHandle< geo::Geometry > fgeom
std::string fSimChannelLabel
module that made simchannels
EDAnalyzer(fhicl::ParameterSet const &pset)
Definition: EDAnalyzer.cc:6
std::vector< std::unique_ptr< wavrec_tool::IWaveformRecog > > fWaveformRecogToolVec
std::string fDigitModuleLabel
module that made digits
unsigned int Nplanes(TPCID const &tpcid=tpc_zero) const
Returns the total number of planes in the specified TPC.
Definition: GeometryCore.h:977
std::vector< std::unique_ptr< wavdenoise_tool::IWaveformDenoise > > fWaveformDenoiseToolVec
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
nnet::WaveformDenoiseTest::WaveformDenoiseTest ( WaveformDenoiseTest const &  )
delete
nnet::WaveformDenoiseTest::WaveformDenoiseTest ( WaveformDenoiseTest &&  )
delete

Member Function Documentation

void nnet::WaveformDenoiseTest::analyze ( art::Event const &  e)
overridevirtual

Implements art::EDAnalyzer.

Definition at line 171 of file WaveformDenoiseTest_module.cc.

References c2numpy_float32(), c2numpy_int16(), c2numpy_string(), c2numpy_uint16(), c2numpy_uint32(), raw::RawDigit::Channel(), DEFINE_ART_MODULE, CnnROI::end, art::EventID::event(), fCleanSignalDigitModuleLabel, fDigitModuleLabel, fDisplayWindowSize, fgeom, fPlaneToDump, fWaveformDenoiseToolVec, fWaveformRecogToolVec, art::ProductRetriever::getValidHandle(), art::Event::id(), raw::InvalidChannelID, npywriter, npywriter2, npywriter3, art::EventID::run(), raw::RawDigit::Samples(), CnnROI::start, art::EventID::subRun(), raw::Uncompress(), geo::GeometryCore::View(), geo::PlaneGeo::ViewName(), and x.

172 {
173  cout << "Event "
174  << " " << evt.id().run() << " " << evt.id().subRun() << " " << evt.id().event() << endl;
175 
176  // ... Read in the digit List object(s).
177  auto digitVecHandle = evt.getValidHandle<std::vector<raw::RawDigit>>(fDigitModuleLabel);
178 
179  // ... Read in the signal-only digit List object(s).
180  auto digitVecHandle2 =
181  evt.getValidHandle<std::vector<raw::RawDigit>>(fCleanSignalDigitModuleLabel);
182 
183  if (!digitVecHandle->size() || !digitVecHandle2->size()) {
184  throw cet::exception("NoiseWaveformRoiAnalyzer")
185  << "At least one of the raw digits lists is empty.";
186  }
187 
188  auto const clockData = art::ServiceHandle<detinfo::DetectorClocksService const>()->DataFor(evt);
189  auto const detProp =
191 
192  // ... Use the handle to get a particular (0th) element of collection.
193  std::vector<raw::RawDigit> const& rawDigits = *digitVecHandle;
194  raw::RawDigit const& digitVec0 = rawDigits[0];
195  unsigned int dataSize = digitVec0.Samples(); //size of raw data vectors
196  if (dataSize != detProp.ReadOutWindowSize()) {
197  throw cet::exception("NoiseWaveformRoiAnalyzer") << "Bad dataSize: " << dataSize;
198  }
199  std::vector<raw::RawDigit> const& rawDigits2 = *digitVecHandle2;
200  raw::RawDigit const& digitVec20 = rawDigits2[0];
201  unsigned int dataSize2 = digitVec20.Samples(); //size of raw data vectors
202  if (dataSize != dataSize2) {
203  throw cet::exception("NoiseWaveformRoiAnalyzer")
204  << "RawDigits from the 2 data products have different dataSizes: " << dataSize << "not eq to"
205  << dataSize2;
206  }
207 
208  // ... Build a map from channel number -> rawdigitVec
209  std::map<raw::ChannelID_t, art::Ptr<raw::RawDigit>> rawdigitMap;
210  raw::ChannelID_t chnum = raw::InvalidChannelID; // channel number
211  for (size_t rdIter = 0; rdIter < rawDigits.size(); ++rdIter) {
212  art::Ptr<raw::RawDigit> digitVec(digitVecHandle, rdIter);
213  chnum = digitVec->Channel();
214  if (chnum == raw::InvalidChannelID) continue;
215  if (geo::PlaneGeo::ViewName(fgeom->View(chnum)) != fPlaneToDump[0]) continue;
216  rawdigitMap[chnum] = digitVec;
217  }
218  std::map<raw::ChannelID_t, art::Ptr<raw::RawDigit>> rawdigitMap2;
219  raw::ChannelID_t chnum2 = raw::InvalidChannelID; // channel number
220  for (size_t rdIter = 0; rdIter < rawDigits2.size(); ++rdIter) {
221  art::Ptr<raw::RawDigit> digitVec2(digitVecHandle2, rdIter);
222  chnum2 = digitVec2->Channel();
223  if (chnum2 == raw::InvalidChannelID) continue;
224  if (geo::PlaneGeo::ViewName(fgeom->View(chnum2)) != fPlaneToDump[0]) continue;
225  rawdigitMap2[chnum2] = digitVec2;
226  }
227 
228  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
229  // ... First find all channels that have non-zero raw digits and erase them
230  // from the raw digit maps
231  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
232 
233  std::vector<raw::ChannelID_t> signalchannels;
234 
235  for (std::map<raw::ChannelID_t, art::Ptr<raw::RawDigit>>::iterator iter = rawdigitMap2.begin();
236  iter != rawdigitMap2.end();
237  ++iter) {
238  std::vector<short> rawadc(dataSize); // vector to hold uncompressed adc values later
239  std::vector<short> adcvec2(dataSize); // vector to pedestal-subtracted adc values
240 
241  auto rawdig2 = iter->second;
242  raw::Uncompress(rawdig2->ADCs(), rawadc, rawdig2->GetPedestal(), rawdig2->Compression());
243  for (size_t j = 0; j < rawadc.size(); ++j) {
244  adcvec2[j] = rawadc[j] - rawdig2->GetPedestal();
245  }
246 
247  auto itnz = find_if(adcvec2.begin(), adcvec2.end(), [](auto x) { return x != 0; });
248  if (itnz != adcvec2.end()) signalchannels.push_back(iter->first);
249  }
250 
251  for (size_t ich = 0; ich < signalchannels.size(); ++ich) {
252 
253  // .. get signal-containing channel number
254  auto ch1 = signalchannels[ich];
255  if (ch1 == raw::InvalidChannelID) continue;
256  if (geo::PlaneGeo::ViewName(fgeom->View(ch1)) != fPlaneToDump[0]) continue;
257 
258  std::vector<short> rawadc(dataSize); // vector to hold uncompressed adc values later
259  std::vector<short> adcvec(dataSize); // vector to hold zero-padded full waveform
260  std::vector<short> adcvec2(dataSize); // vector to hold zero-padded full signal-only waveform
261  std::vector<float> inputsignal(dataSize); // float version of adcvec
262 
263  auto search = rawdigitMap.find(ch1);
264  if (search == rawdigitMap.end()) continue;
265  auto rawdig = (*search).second;
266  raw::Uncompress(rawdig->ADCs(), rawadc, rawdig->GetPedestal(), rawdig->Compression());
267  for (size_t j = 0; j < rawadc.size(); ++j) {
268  adcvec[j] = rawadc[j] - rawdig->GetPedestal();
269  inputsignal[j] = adcvec[j];
270  }
271 
272  auto search2 = rawdigitMap2.find(ch1);
273  if (search2 == rawdigitMap2.end()) continue;
274  auto rawdig2 = (*search2).second;
275  raw::Uncompress(rawdig2->ADCs(), rawadc, rawdig2->GetPedestal(), rawdig2->Compression());
276  for (size_t i = 0; i < rawadc.size(); ++i) {
277  adcvec2[i] = rawadc[i] - rawdig2->GetPedestal();
278  }
279 
280  // ... use waveform recognition CNN to perform inference on each window
281  std::vector<bool> inroi(dataSize, false);
282  inroi = fWaveformRecogToolVec[fgeom->View(ch1)]->findROI(inputsignal);
283 
284  auto itnf = find_if(inroi.begin(), inroi.end(), [](auto x) { return x; });
285  if (itnf == inroi.end()) continue;
286 
287  CnnROI roi;
288  std::vector<CnnROI> cnn_rois;
289 
290  bool is_roi = false;
291  bool was_roi = false;
292 
293  for (size_t itck = 0; itck < inroi.size() - 1; ++itck) {
294  is_roi = inroi[itck];
295  if (is_roi && !was_roi) { roi.start = itck; }
296  else if (!is_roi && was_roi) {
297  roi.end = itck - 1;
298  cnn_rois.push_back(roi);
299  }
300  was_roi = is_roi;
301  }
302 
303  for (size_t i = 0; i < cnn_rois.size(); ++i) {
304  std::vector<short> wavraw(fDisplayWindowSize, 0);
305  std::vector<short> wavcln(fDisplayWindowSize, 0);
306  std::vector<float> wavdns(fDisplayWindowSize, 0);
307 
308  unsigned int tcka = cnn_rois[i].start;
309  unsigned int tckb = cnn_rois[i].end;
310  unsigned int ntcks_roi = tckb - tcka + 1;
311  unsigned int ntcks_dis = ntcks_roi;
312  if (ntcks_dis > fDisplayWindowSize) {
313  tckb = tcka + fDisplayWindowSize - 1;
314  ntcks_dis = tckb - tcka + 1;
315  }
316 
317  unsigned jtck = 0;
318  for (unsigned int itck = tcka; itck < tckb; ++itck) {
319  wavraw[jtck] = adcvec[itck];
320  wavcln[jtck] = adcvec2[itck];
321  jtck++;
322  }
323 
324  std::vector<float> wavinp(ntcks_roi, 0);
325  std::vector<float> wavout(ntcks_roi, 0);
326 
327  jtck = 0;
328  for (unsigned int itck = tcka; itck < tcka + ntcks_roi; ++itck) {
329  wavinp[jtck] = float(adcvec[itck]);
330  jtck++;
331  }
332  wavout = fWaveformDenoiseToolVec[fgeom->View(ch1)]->denoiseWaveform(wavinp);
333 
334  for (unsigned int itck = 0; itck < ntcks_dis; ++itck) {
335  wavdns[itck] = wavout[itck];
336  }
337 
338  c2numpy_uint32(&npywriter, evt.id().event());
339  c2numpy_uint32(&npywriter, ch1);
340  c2numpy_uint16(&npywriter, i); // roi
342 
343  for (unsigned int j = 0; j < fDisplayWindowSize; ++j) {
344  c2numpy_int16(&npywriter, wavraw[j]);
345  }
346  for (unsigned int j = 0; j < fDisplayWindowSize; ++j) {
347  c2numpy_int16(&npywriter2, wavcln[j]);
348  }
349  for (unsigned int j = 0; j < fDisplayWindowSize; ++j) {
350  c2numpy_float32(&npywriter3, wavdns[j]);
351  }
352  }
353  }
354 }
Float_t x
Definition: compare.C:6
std::string fCleanSignalDigitModuleLabel
module that made the signal-only digits
art::ServiceHandle< geo::Geometry > fgeom
static std::string ViewName(geo::View_t view)
Returns the name of the specified view.
Definition: PlaneGeo.cxx:682
unsigned int event
Definition: DataStructs.h:627
ULong64_t Samples() const
Number of samples in the uncompressed ADC data.
Definition: RawDigit.h:217
Collection of charge vs time digitized from a single readout channel.
Definition: RawDigit.h:68
unsigned int run
Definition: DataStructs.h:628
std::vector< std::unique_ptr< wavrec_tool::IWaveformRecog > > fWaveformRecogToolVec
constexpr ChannelID_t InvalidChannelID
ID of an invalid channel.
Definition: RawTypes.h:31
std::string fDigitModuleLabel
module that made digits
int c2numpy_uint32(c2numpy_writer *writer, uint32_t data)
Definition: c2numpy.h:334
int c2numpy_float32(c2numpy_writer *writer, float data)
Definition: c2numpy.h:369
View_t View(PlaneID const &pid) const
Returns the view (wire orientation) on the channels of specified TPC plane.
int c2numpy_uint16(c2numpy_writer *writer, uint16_t data)
Definition: c2numpy.h:325
int c2numpy_int16(c2numpy_writer *writer, int16_t data)
Definition: c2numpy.h:289
unsigned int subRun
Definition: DataStructs.h:629
unsigned int start
TCEvent evt
Definition: DataStructs.cxx:8
unsigned int ChannelID_t
Type representing the ID of a readout channel.
Definition: RawTypes.h:28
void Uncompress(const std::vector< short > &adc, std::vector< short > &uncompressed, raw::Compress_t compress)
Uncompresses a raw data buffer.
Definition: raw.cxx:744
std::vector< std::unique_ptr< wavdenoise_tool::IWaveformDenoise > > fWaveformDenoiseToolVec
int c2numpy_string(c2numpy_writer *writer, const char *data)
Definition: c2numpy.h:411
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
void nnet::WaveformDenoiseTest::beginJob ( )
overridevirtual

Reimplemented from art::EDAnalyzer.

Definition at line 129 of file WaveformDenoiseTest_module.cc.

References c2numpy_addcolumn(), C2NUMPY_FLOAT32, c2numpy_init(), C2NUMPY_INT16, C2NUMPY_STRING, C2NUMPY_UINT16, C2NUMPY_UINT32, fDisplayWindowSize, fDumpCleanSignalFileName, fDumpDenoisedFileName, fDumpWaveformsFileName, npywriter, npywriter2, and npywriter3.

130 {
131 
137  for (unsigned int i = 0; i < fDisplayWindowSize; i++) {
138  std::ostringstream name;
139  name << "tck_" << i;
140  c2numpy_addcolumn(&npywriter, name.str().c_str(), C2NUMPY_INT16);
141  }
142 
143  // ... this is for storing the clean signal (no noise) waveform
145 
146  for (unsigned int i = 0; i < fDisplayWindowSize; i++) {
147  std::ostringstream name;
148  name << "tck_" << i;
149  c2numpy_addcolumn(&npywriter2, name.str().c_str(), C2NUMPY_INT16);
150  }
151 
152  // ... this is for storing the denoised raw waveform
154 
155  for (unsigned int i = 0; i < fDisplayWindowSize; i++) {
156  std::ostringstream name;
157  name << "tck_" << i;
158  c2numpy_addcolumn(&npywriter3, name.str().c_str(), C2NUMPY_FLOAT32);
159  }
160 }
int c2numpy_init(c2numpy_writer *writer, const std::string outputFilePrefix, int32_t numRowsPerFile)
Definition: c2numpy.h:140
c2numpy_type
Definition: c2numpy.h:29
int c2numpy_addcolumn(c2numpy_writer *writer, const std::string name, c2numpy_type type)
Definition: c2numpy.h:157
template<typename T , BranchType BT>
ProductToken< T > art::ModuleBase::consumes ( InputTag const &  tag)
protectedinherited

Definition at line 61 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::consumes().

62  {
63  return collector_.consumes<T, BT>(tag);
64  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
ProductToken< T > consumes(InputTag const &)
ConsumesCollector & art::ModuleBase::consumesCollector ( )
protectedinherited

Definition at line 57 of file ModuleBase.cc.

References art::ModuleBase::collector_.

58  {
59  return collector_;
60  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename T , BranchType BT>
void art::ModuleBase::consumesMany ( )
protectedinherited

Definition at line 75 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::consumesMany().

76  {
77  collector_.consumesMany<T, BT>();
78  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::ModuleBase::consumesView ( InputTag const &  )
protectedinherited
template<typename T , BranchType BT>
ViewToken<T> art::ModuleBase::consumesView ( InputTag const &  tag)
inherited

Definition at line 68 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::consumesView().

69  {
70  return collector_.consumesView<T, BT>(tag);
71  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
ViewToken< Element > consumesView(InputTag const &)
void art::detail::Analyzer::doBeginJob ( SharedResources const &  resources)
inherited

Definition at line 25 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

26  {
27  setupQueues(resources);
28  ProcessingFrame const frame{ScheduleID{}};
29  beginJobWithFrame(frame);
30  }
virtual void beginJobWithFrame(ProcessingFrame const &)=0
virtual void setupQueues(SharedResources const &)=0
bool art::detail::Analyzer::doBeginRun ( RunPrincipal rp,
ModuleContext const &  mc 
)
inherited

Definition at line 68 of file Analyzer.cc.

References art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

69  {
70  ProcessingFrame const frame{mc.scheduleID()};
71  beginRunWithFrame(std::as_const(rp).makeRun(mc), frame);
72  return true;
73  }
virtual void beginRunWithFrame(Run const &, ProcessingFrame const &)=0
bool art::detail::Analyzer::doBeginSubRun ( SubRunPrincipal srp,
ModuleContext const &  mc 
)
inherited

Definition at line 84 of file Analyzer.cc.

References art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

85  {
86  ProcessingFrame const frame{mc.scheduleID()};
87  beginSubRunWithFrame(std::as_const(srp).makeSubRun(mc), frame);
88  return true;
89  }
virtual void beginSubRunWithFrame(SubRun const &, ProcessingFrame const &)=0
void art::detail::Analyzer::doEndJob ( )
inherited

Definition at line 33 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

34  {
35  ProcessingFrame const frame{ScheduleID{}};
36  endJobWithFrame(frame);
37  }
virtual void endJobWithFrame(ProcessingFrame const &)=0
bool art::detail::Analyzer::doEndRun ( RunPrincipal rp,
ModuleContext const &  mc 
)
inherited

Definition at line 76 of file Analyzer.cc.

References art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

77  {
78  ProcessingFrame const frame{mc.scheduleID()};
79  endRunWithFrame(std::as_const(rp).makeRun(mc), frame);
80  return true;
81  }
virtual void endRunWithFrame(Run const &, ProcessingFrame const &)=0
bool art::detail::Analyzer::doEndSubRun ( SubRunPrincipal srp,
ModuleContext const &  mc 
)
inherited

Definition at line 92 of file Analyzer.cc.

References art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

93  {
94  ProcessingFrame const frame{mc.scheduleID()};
95  endSubRunWithFrame(std::as_const(srp).makeSubRun(mc), frame);
96  return true;
97  }
virtual void endSubRunWithFrame(SubRun const &, ProcessingFrame const &)=0
bool art::detail::Analyzer::doEvent ( EventPrincipal ep,
ModuleContext const &  mc,
std::atomic< std::size_t > &  counts_run,
std::atomic< std::size_t > &  counts_passed,
std::atomic< std::size_t > &  counts_failed 
)
inherited

Definition at line 100 of file Analyzer.cc.

References e, and art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

105  {
106  auto const e = std::as_const(ep).makeEvent(mc);
107  if (wantEvent(mc.scheduleID(), e)) {
108  ++counts_run;
109  ProcessingFrame const frame{mc.scheduleID()};
110  analyzeWithFrame(e, frame);
111  ++counts_passed;
112  }
113  return true;
114  }
bool wantEvent(ScheduleID id, Event const &e) const
Definition: Observer.cc:63
Float_t e
Definition: plot.C:35
virtual void analyzeWithFrame(Event const &, ProcessingFrame const &)=0
void art::detail::Analyzer::doRespondToCloseInputFile ( FileBlock const &  fb)
inherited

Definition at line 47 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

48  {
49  ProcessingFrame const frame{ScheduleID{}};
51  }
TFile fb("Li6.root")
virtual void respondToCloseInputFileWithFrame(FileBlock const &, ProcessingFrame const &)=0
void art::detail::Analyzer::doRespondToCloseOutputFiles ( FileBlock const &  fb)
inherited

Definition at line 61 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

62  {
63  ProcessingFrame const frame{ScheduleID{}};
65  }
virtual void respondToCloseOutputFilesWithFrame(FileBlock const &, ProcessingFrame const &)=0
TFile fb("Li6.root")
void art::detail::Analyzer::doRespondToOpenInputFile ( FileBlock const &  fb)
inherited

Definition at line 40 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

41  {
42  ProcessingFrame const frame{ScheduleID{}};
44  }
TFile fb("Li6.root")
virtual void respondToOpenInputFileWithFrame(FileBlock const &, ProcessingFrame const &)=0
void art::detail::Analyzer::doRespondToOpenOutputFiles ( FileBlock const &  fb)
inherited

Definition at line 54 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

55  {
56  ProcessingFrame const frame{ScheduleID{}};
58  }
virtual void respondToOpenOutputFilesWithFrame(FileBlock const &, ProcessingFrame const &)=0
TFile fb("Li6.root")
void nnet::WaveformDenoiseTest::endJob ( )
overridevirtual

Reimplemented from art::EDAnalyzer.

Definition at line 163 of file WaveformDenoiseTest_module.cc.

References c2numpy_close(), npywriter, npywriter2, and npywriter3.

164 {
168 }
int c2numpy_close(c2numpy_writer *writer)
Definition: c2numpy.h:425
std::array< std::vector< ProductInfo >, NumBranchTypes > const & art::ModuleBase::getConsumables ( ) const
inherited

Definition at line 43 of file ModuleBase.cc.

References art::ModuleBase::collector_, and art::ConsumesCollector::getConsumables().

44  {
45  return collector_.getConsumables();
46  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
std::array< std::vector< ProductInfo >, NumBranchTypes > const & getConsumables() const
Handle< TriggerResults > art::Observer::getTriggerResults ( Event const &  e) const
protectedinherited

Definition at line 75 of file Observer.cc.

References art::ProductRetriever::get(), and art::Observer::selectors_.

Referenced by art::OutputModule::doWriteEvent(), and art::Observer::wantAllEvents().

76  {
77  if (selectors_) {
78  return selectors_->getOneTriggerResults(e);
79  }
80 
81  // The following applies for cases where no SelectEvents entries
82  // exist.
83  Handle<TriggerResults> h;
84  if (e.get(empty_process_name, h)) {
85  return h;
86  }
87  return Handle<TriggerResults>{};
88  }
Float_t e
Definition: plot.C:35
std::optional< detail::ProcessAndEventSelectors > selectors_
Definition: Observer.h:79
std::unique_ptr< Worker > art::ModuleBase::makeWorker ( WorkerParams const &  wp)
inherited

Definition at line 37 of file ModuleBase.cc.

References art::ModuleBase::doMakeWorker(), and art::NumBranchTypes.

38  {
39  return doMakeWorker(wp);
40  }
virtual std::unique_ptr< Worker > doMakeWorker(WorkerParams const &wp)=0
template<typename T , BranchType BT>
ProductToken< T > art::ModuleBase::mayConsume ( InputTag const &  tag)
protectedinherited

Definition at line 82 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::mayConsume().

83  {
84  return collector_.mayConsume<T, BT>(tag);
85  }
ProductToken< T > mayConsume(InputTag const &)
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename T , BranchType BT>
void art::ModuleBase::mayConsumeMany ( )
protectedinherited

Definition at line 96 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::mayConsumeMany().

97  {
98  collector_.mayConsumeMany<T, BT>();
99  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::ModuleBase::mayConsumeView ( InputTag const &  )
protectedinherited
template<typename T , BranchType BT>
ViewToken<T> art::ModuleBase::mayConsumeView ( InputTag const &  tag)
inherited

Definition at line 89 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::mayConsumeView().

90  {
91  return collector_.mayConsumeView<T, BT>(tag);
92  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
ViewToken< Element > mayConsumeView(InputTag const &)
ModuleDescription const & art::ModuleBase::moduleDescription ( ) const
inherited

Definition at line 13 of file ModuleBase.cc.

References art::errors::LogicError.

Referenced by art::OutputModule::doRespondToOpenInputFile(), art::OutputModule::doWriteEvent(), art::Modifier::fillProductDescriptions(), art::OutputModule::makePlugins_(), art::OutputWorker::OutputWorker(), reco::shower::LArPandoraModularShowerCreation::produce(), art::Modifier::registerProducts(), and art::OutputModule::registerProducts().

14  {
15  if (md_.has_value()) {
16  return *md_;
17  }
18 
20  "There was an error while calling moduleDescription().\n"}
21  << "The moduleDescription() base-class member function cannot be called\n"
22  "during module construction. To determine which module is "
23  "responsible\n"
24  "for calling it, find the '<module type>:<module "
25  "label>@Construction'\n"
26  "tag in the message prefix above. Please contact artists@fnal.gov\n"
27  "for guidance.\n";
28  }
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
std::optional< ModuleDescription > md_
Definition: ModuleBase.h:55
WaveformDenoiseTest& nnet::WaveformDenoiseTest::operator= ( WaveformDenoiseTest const &  )
delete
WaveformDenoiseTest& nnet::WaveformDenoiseTest::operator= ( WaveformDenoiseTest &&  )
delete
string const & art::Observer::processName ( ) const
protectedinherited

Definition at line 57 of file Observer.cc.

References art::Observer::process_name_.

Referenced by art::FileDumperOutput::printPrincipal().

58  {
59  return process_name_;
60  }
std::string process_name_
Definition: Observer.h:76
void art::ModuleBase::setModuleDescription ( ModuleDescription const &  md)
inherited

Definition at line 31 of file ModuleBase.cc.

References art::ModuleBase::md_.

32  {
33  md_ = md;
34  }
std::optional< ModuleDescription > md_
Definition: ModuleBase.h:55
void art::ModuleBase::sortConsumables ( std::string const &  current_process_name)
inherited

Definition at line 49 of file ModuleBase.cc.

References art::ModuleBase::collector_, and art::ConsumesCollector::sortConsumables().

50  {
51  // Now that we know we have seen all the consumes declarations,
52  // sort the results for fast lookup later.
53  collector_.sortConsumables(current_process_name);
54  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
void sortConsumables(std::string const &current_process_name)
bool art::Observer::wantAllEvents ( ) const
inlineprotectednoexceptinherited

Definition at line 31 of file Observer.h.

References e, art::Observer::getTriggerResults(), art::Observer::wantAllEvents_, and art::Observer::wantEvent().

32  {
33  return wantAllEvents_;
34  }
bool wantAllEvents_
Definition: Observer.h:75
bool art::Observer::wantEvent ( ScheduleID  id,
Event const &  e 
) const
protectedinherited

Definition at line 63 of file Observer.cc.

References art::Observer::rejectors_, art::Observer::selectors_, and art::Observer::wantAllEvents_.

Referenced by art::OutputModule::doEvent(), art::OutputModule::doWriteEvent(), and art::Observer::wantAllEvents().

64  {
65  if (wantAllEvents_) {
66  return true;
67  }
68  bool const select_event = selectors_ ? selectors_->matchEvent(id, e) : true;
69  bool const reject_event =
70  rejectors_ ? rejectors_->matchEvent(id, e) : false;
71  return select_event and not reject_event;
72  }
bool wantAllEvents_
Definition: Observer.h:75
std::optional< detail::ProcessAndEventSelectors > rejectors_
Definition: Observer.h:80
Float_t e
Definition: plot.C:35
std::optional< detail::ProcessAndEventSelectors > selectors_
Definition: Observer.h:79

Member Data Documentation

std::ofstream nnet::WaveformDenoiseTest::_fileout1
private

Definition at line 84 of file WaveformDenoiseTest_module.cc.

std::string nnet::WaveformDenoiseTest::fCleanSignalDigitModuleLabel
private

module that made the signal-only digits

Definition at line 74 of file WaveformDenoiseTest_module.cc.

Referenced by analyze(), and WaveformDenoiseTest().

std::string nnet::WaveformDenoiseTest::fCollectionPlaneLabel
private

Definition at line 77 of file WaveformDenoiseTest_module.cc.

Referenced by WaveformDenoiseTest().

std::string nnet::WaveformDenoiseTest::fDigitModuleLabel
private

module that made digits

Definition at line 73 of file WaveformDenoiseTest_module.cc.

Referenced by analyze(), and WaveformDenoiseTest().

unsigned int nnet::WaveformDenoiseTest::fDisplayWindowSize
private

Definition at line 70 of file WaveformDenoiseTest_module.cc.

Referenced by analyze(), beginJob(), and WaveformDenoiseTest().

std::string nnet::WaveformDenoiseTest::fDumpCleanSignalFileName
private

Definition at line 68 of file WaveformDenoiseTest_module.cc.

Referenced by beginJob(), and WaveformDenoiseTest().

std::string nnet::WaveformDenoiseTest::fDumpDenoisedFileName
private

Definition at line 69 of file WaveformDenoiseTest_module.cc.

Referenced by beginJob(), and WaveformDenoiseTest().

std::string nnet::WaveformDenoiseTest::fDumpWaveformsFileName
private

Definition at line 67 of file WaveformDenoiseTest_module.cc.

Referenced by beginJob(), and WaveformDenoiseTest().

art::ServiceHandle<geo::Geometry> nnet::WaveformDenoiseTest::fgeom
private

Definition at line 78 of file WaveformDenoiseTest_module.cc.

Referenced by analyze(), and WaveformDenoiseTest().

int nnet::WaveformDenoiseTest::fNPlanes
private

Definition at line 82 of file WaveformDenoiseTest_module.cc.

Referenced by WaveformDenoiseTest().

std::string nnet::WaveformDenoiseTest::fPlaneToDump
private

Definition at line 76 of file WaveformDenoiseTest_module.cc.

Referenced by analyze(), and WaveformDenoiseTest().

std::string nnet::WaveformDenoiseTest::fSimChannelLabel
private

module that made simchannels

Definition at line 72 of file WaveformDenoiseTest_module.cc.

Referenced by WaveformDenoiseTest().

std::vector<std::unique_ptr<wavdenoise_tool::IWaveformDenoise> > nnet::WaveformDenoiseTest::fWaveformDenoiseToolVec
private

Definition at line 81 of file WaveformDenoiseTest_module.cc.

Referenced by analyze(), and WaveformDenoiseTest().

std::vector<std::unique_ptr<wavrec_tool::IWaveformRecog> > nnet::WaveformDenoiseTest::fWaveformRecogToolVec
private

Definition at line 80 of file WaveformDenoiseTest_module.cc.

Referenced by analyze(), and WaveformDenoiseTest().

c2numpy_writer nnet::WaveformDenoiseTest::npywriter
private

Definition at line 86 of file WaveformDenoiseTest_module.cc.

Referenced by analyze(), beginJob(), and endJob().

c2numpy_writer nnet::WaveformDenoiseTest::npywriter2
private

Definition at line 87 of file WaveformDenoiseTest_module.cc.

Referenced by analyze(), beginJob(), and endJob().

c2numpy_writer nnet::WaveformDenoiseTest::npywriter3
private

Definition at line 88 of file WaveformDenoiseTest_module.cc.

Referenced by analyze(), beginJob(), and endJob().


The documentation for this class was generated from the following file: