20 #include "larrecodnn/ImagePatternAlgs/ToolInterfaces/IWaveformRecog.h" 29 #include "cetlib_except/exception.h" 37 class WaveformRoiFinder;
73 <<
"Both RawProducerLabel and WireProducerLabel are empty";
78 <<
"Only one of RawProducerLabel and WireProducerLabel should be set";
82 fNPlanes = wireReadoutGeom.Nplanes();
86 auto const tool_psets = p.get<std::vector<fhicl::ParameterSet>>(
"WaveformRecogs");
87 fWaveformSize = tool_psets[0].get<
unsigned int>(
"WaveformSize");
88 for (
auto const& pset : tool_psets) {
92 produces<std::vector<recob::Wire>>();
98 std::vector<art::Ptr<raw::RawDigit>> rawlist;
102 std::vector<art::Ptr<recob::Wire>> wirelist;
106 std::unique_ptr<std::vector<recob::Wire>> outwires(
new std::vector<recob::Wire>);
113 for (
unsigned int ich = 0; ich < (rawlist.empty() ? wirelist.size() : rawlist.size()); ++ich) {
119 if (!wirelist.empty()) {
120 const auto& wire = wirelist[ich];
121 const auto& signal = wire->Signal();
125 for (
size_t itck = 0; itck < inputsignal.size(); ++itck) {
126 inputsignal[itck] = signal[itck];
129 else if (!rawlist.empty()) {
130 const auto& digitVec = rawlist[ich];
132 view = wireReadoutGeom.View(rawlist[ich]->Channel());
135 raw::Uncompress(digitVec->ADCs(), rawadc, digitVec->GetPedestal(), digitVec->Compression());
136 for (
size_t itck = 0; itck < rawadc.size(); ++itck) {
137 inputsignal[itck] = rawadc[itck] - digitVec->GetPedestal();
145 std::vector<float> sigs;
146 int lastsignaltick = -1;
156 sigs.push_back(inputsignal[i]);
161 if (
int(i) != lastsignaltick + 1) {
162 rois.
add_range(roistart, std::move(sigs));
164 sigs.push_back(inputsignal[i]);
169 sigs.push_back(inputsignal[i]);
175 if (!sigs.empty()) { rois.
add_range(roistart, std::move(sigs)); }
176 if (!wirelist.empty() && hasROI) {
177 outwires->emplace_back(rois, wirelist[ich]->Channel(), wirelist[ich]->View());
179 else if (!rawlist.empty() && hasROI) {
180 outwires->emplace_back(
181 rois, rawlist[ich]->Channel(), wireReadoutGeom.View(rawlist[ich]->Channel()));
185 e.
put(std::move(outwires));
EDProducer(fhicl::ParameterSet const &pset)
const datarange_t & add_range(size_type offset, ITER first, ITER last)
Adds a sequence of elements as a range with specified offset.
Definition of basic raw digits.
cout<< "Opened file "<< fin<< " ixs= "<< ixs<< endl;if(ixs==0) hhh=(TH1F *) fff-> Get("h1")
PutHandle< PROD > put(std::unique_ptr< PROD > &&edp, std::string const &instance={})
#define DEFINE_ART_MODULE(klass)
Collect all the RawData header files together.
bool getByLabel(std::string const &label, std::string const &instance, Handle< PROD > &result) const
Declaration of basic channel signal object.
void fill_ptr_vector(std::vector< Ptr< T >> &ptrs, H const &h)
void Uncompress(const std::vector< short > &adc, std::vector< short > &uncompressed, raw::Compress_t compress)
Uncompresses a raw data buffer.
cet::coded_exception< error, detail::translate > exception