14 #include "artdaq-core/Data/Fragment.hh" 16 #include "DAQDataFormats/RawMicroSlice.h" 17 #include "DAQDataFormats/RawMilliBlock.h" 18 #include "DAQDataFormats/RawMilliBlockHeader.h" 19 #include "DAQDataFormats/RawMilliSlice.h" 20 #include "DAQDataFormats/RawNanoSlice.h" 21 #include "DAQChannelMap/DAQChannelMap.h" 56 produces<std::vector<novaddt::DAQHit>>(
"AllHits");
57 produces<novaddt::EventHeader>(
"DDTdaq");
59 #ifdef NEED_MILLIBLOCK_IN_EVENT 60 produces<RawMilliBlock>();
74 size_t total_bytes = 0;
75 std::vector<RawMilliSlice> rms_vec;
88 void * msdataptr =
const_cast<void *
>(
reinterpret_cast<void const *
>(rmbhp + 1));
89 uint32_t retrieved_millislice = 0;
90 for (; retrieved_millislice < rmbh.
millislice_count; ++retrieved_millislice) {
91 rms_vec.push_back(rms_tmp);
92 msdataptr = rms_vec.at(retrieved_millislice).readData(msdataptr);
96 total_bytes += rms_vec.at(retrieved_millislice).sizeofdata() *
sizeof(uint32_t);
98 assert(retrieved_millislice > 0);
123 assert(handle->size() == 1);
133 std::unique_ptr<std::vector<Hit>>
hits(
new std::vector<Hit>);
139 size_t const nanoSliceSize = 12;
140 hits->reserve(total_bytes / nanoSliceSize);
145 for (
unsigned n = 0;
n != mbp->slices.size(); ++
n)
149 for (uint32_t imicro = 0; mbp->slices.at(
n).setFloatingMicroSlice(imicro); ++imicro) {
150 RawMicroSlice * theSlice = mbp->slices.at(
n).getFloatingMicroSlice();
156 int detID = theMilli->
getHeader()->getDetId();
158 hits->emplace_back( detID,
187 e.
put(std::move(hits),
"AllHits");
188 e.
put(std::move(mbhead),
"DDTdaq");
190 #ifdef NEED_MILLIBLOCK_IN_EVENT 191 e.
put(std::move(mbp));
199 const unsigned int nSamples = conv.
getNSamples(version);
203 if (nPretrig<3 || nSamples <= nPretrig || version==0)
return false;
206 for (
unsigned i = 1;
i!= nPretrig; ++
i) {
207 int16_t adc_pre = fNano->getValue(
i-1);
208 int16_t adc_cur = fNano->getValue(
i);
209 if (adc_pre > adc_cur)
return false;
virtual ~NovaDDTHitProducer()
size_t populateMilliBlock(void const *image, RawMilliBlock &mb, novaddt::EventHeader *evt_header)
DEFINE_ART_MODULE(TestTMapFile)
ProductID put(std::unique_ptr< PROD > &&product)
virtual void produce(art::Event &e)
bool passes_MCS_filter(daqdataformats::RawNanoSlice *fNano) const
static DAQChannelMap * getInstance(int detID)
NovaDDTHitProducer(fhicl::ParameterSet const &p)
std::vector< daqdataformats::RawMilliSlice > slices
art::ServiceHandle< novaddt::WaveformProcessor > wpr
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
void set_ovrwrt(bool ovrwrt)
assert(nhit_max >=nhit_nbins)
std::string const raw_label_
int set(uint32_t sn, uint64_t start, uint64_t end, bool ovrflw)