2 #include "art/Framework/Core/EDProducer.h"
3 #include "art/Framework/Core/ModuleMacros.h"
4 #include "art/Framework/Principal/Handle.h"
5 #include "art/Framework/Principal/Event.h"
6 #include "canvas/Persistency/Common/Ptr.h"
7 #include "canvas/Persistency/Common/PtrVector.h"
8 #include "art/Framework/Principal/Run.h"
9 #include "art/Framework/Principal/SubRun.h"
10 #include "art_root_io/TFileService.h"
11 #include "art_root_io/TFileDirectory.h"
12 #include "art/Framework/Services/Registry/ServiceHandle.h"
13 #include "art/Framework/Core/ModuleMacros.h"
14 #include "canvas/Persistency/Common/FindManyP.h"
15 #include "art/Persistency/Common/PtrMaker.h"
16 #include "canvas/Utilities/InputTag.h"
17 #include "fhiclcpp/ParameterSet.h"
18 #include "messagefacility/MessageLogger/MessageLogger.h"
62 void produce(art::Event &
e)
override;
88 produces< std::vector<icarus::crt::CRTData> >();
105 fInFile = p.get<
string>(
"infile");
114 TTree* tree=(TTree*)fin.FindObjectAny(
"anaTree");
115 if(tree==
nullptr)
std::cout <<
"anaTree not found!" << std::endl;
118 std::cout <<
"running 'beginJob'" << std::endl;
135 if (ientry < fAnaTree->GetNEntries()-1)
141 std::cout <<
"found " <<
event <<
" time slices" << std::endl;
143 std::cout <<
"event map start/end size mismatch!" << std::endl;
153 TTree* tree=(TTree*)fin.FindObjectAny(
"anaTree");
154 if(tree==
nullptr)
std::cout <<
"anaTree not found!" << std::endl;
157 std::unique_ptr< std::vector<icarus::crt::CRTData> > crtdata(
new std::vector<icarus::crt::CRTData>);
159 size_t eveId = (size_t) event.event();
169 for(
size_t ichan=0; ichan<32; ichan++){
174 data.
fAdc[ichan] = 0;
177 crtdata->push_back(data);
185 event.put(std::move(crtdata));
uint8_t fMac5
FEB address following numbering convention common for both data and MC.
std::map< size_t, size_t > fEventEntryStart
CRTEventProducer(fhicl::ParameterSet const &p)
std::map< size_t, size_t > fEventEntryEnd
CRTEventProducer & operator=(CRTEventProducer const &)=delete
icarus::crt::CRTPreProcessTree * fAnaTree
void reconfigure(fhicl::ParameterSet const &p)
void Load(size_t ientry) const
uint64_t GetAbsTime(size_t ientry) const
Single hit (self trigger) of a CRT board.
Definition of data types for geometry description.
uint16_t fAdc[64]
ADC readout for each channel. CAEN (Bern) CRT FEBs use only indices 0-31.
size_t GetNEntries() const
void produce(art::Event &e) override
bool Above(uint8_t chan) const
bool Active(uint8_t chan) const
Collection of Physical constants used in LArSoft.
float PE(uint8_t chan) const
BEGIN_PROLOG could also be cout
uint64_t fTs0
Absolute hit timestamp [ns].
uint64_t fTs1
Trigger time, not well defined as of Apr 14, 2021.