58 fCurrentSubRunID(-1, -1),
132 TString
pwd(gSystem->pwd());
134 TList*
files = dir.GetListOfFiles();
142 while ((file = (TSystemFile*)
next())) {
144 file_name = file->GetName();
145 if (!file_name.BeginsWith(
"novabeamline_") or !file_name.EndsWith(
".root"))
148 <<
"Reading in beamline file " << file_name <<
std::endl;
152 TFile*
inFile = TFile::Open(file_name,
"READ");
154 TBranch* spillBranch = eventTree->GetBranch(getBranchName<artdaq::Fragments>(
fInputSpillTag).
data());
155 TBranch* tduBranch = eventTree->GetBranch(getBranchName<artdaq::Fragments>(
fInputTDUTag).
data());
158 unsigned int numSpillsInFile = 0;
159 if (spillBranch->GetEntries() != tduBranch->GetEntries())
161 <<
"In file " << file_name <<
", " 162 <<
"number of spills recorded in spill branch (" << spillBranch->GetEntries() <<
") " 163 <<
"does not match number of spills recorded in TDU branch (" << tduBranch->GetEntries() <<
")." 166 numSpillsInFile = spillBranch->GetEntries();
168 <<
"Number of spills in file " << file_name <<
": " 173 for (
unsigned int spillIt = 0; spillIt < numSpillsInFile; ++spillIt) {
189 <<
"Unpacking " << file_name <<
", spill " << spillIt << std::endl
190 << e.what() << std::endl
191 <<
"EXCEPTION CAUGHT: ignoring this spill." <<
std::endl;
198 <<
"Number of spills in file " << file_name <<
", spill " << spillIt <<
": " 202 for (
unsigned int triggerIt = 0; triggerIt < beamlineEvents->
NumEvents(); ++triggerIt) {
212 for (std::vector<TDUFragment*>::const_iterator tduIt = tduFrags.begin();
213 tduIt != tduFrags.end(); ++tduIt)
224 <<
"Contents of the beamline index map:" <<
std::endl;
225 for (std::map<unsigned long long, BeamlineTriggerIndex>::const_iterator blIndexIt =
fBeamlineIndex.begin();
228 <<
"NOvA time " << blIndexIt->first
229 <<
" corresponds to file " << blIndexIt->second.File
230 <<
", spill " << blIndexIt->second.Spill
231 <<
" and trigger " << blIndexIt->second.Trigger <<
"." <<
std::endl;
242 mf::LogVerbatim(
"TestBeamRawInputDriver") <<
"Spill construction complete\n" 243 <<
"Spill starts at " 244 <<
static_cast<const void*
>(spillWrapper->
get())
245 <<
", can pass this pointer to the LariatFragment constructor\n" 246 <<
"Spill appears to be " << spillWrapper->
size() <<
" bytes\n";
248 const uint8_t* spillDataPtr(spillWrapper->
get());
251 << spillWrapper->
size()
252 <<
" bytes, starting at " 253 <<
static_cast<const void*
>(spillDataPtr);
256 LariatFragment* spillFrag =
new LariatFragment((
char*)spillDataPtr, spillWrapper->
size());
265 unsigned int index) {
268 artdaq::Fragments* fragments =
getFragments(fragBranch, index);
270 if ((*fragments).size() > 1)
272 <<
"artdaq::Fragment SPILL vector contains more than one fragment.";
274 const artdaq::Fragment& fragment = fragments->at(0);
275 spillWrapper->
add(fragment);
277 if (!spillWrapper->
ready())
279 <<
"Spill construction failed; spill is incomplete." <<
std::endl;
291 unsigned int index) {
295 std::vector<TDUFragment*> tduFrags;
297 artdaq::Fragments* fragments =
getFragments(tduBranch, index);
299 if ((*fragments).size() > 1)
301 <<
"artdaq::Fragment TDU vector contains more than one fragment.";
303 for (artdaq::Fragments::const_iterator fragIt = fragments->begin(); fragIt != fragments->end(); ++fragIt) {
305 artdaq::ContainerFragment cont_frag(*fragIt);
308 const artdaq::Fragment frag = *cont_frag[
block];
309 TDUFragment* tduFrag =
new TDUFragment(reinterpret_cast<const char*>(frag.dataBeginBytes()));
310 tduFrags.push_back(tduFrag);
338 <<
"No beamline event with TDU timestamp " << tduTime <<
" found." <<
std::endl;
343 TFile*
inFile = TFile::Open(bl_index.
File.c_str(),
"READ");
345 TBranch* eventAuxBranch = eventTree->GetBranch(
"EventAuxiliary");
346 TBranch* spillBranch = eventTree->GetBranch(getBranchName<artdaq::Fragments>(
fInputSpillTag).
data());
347 TBranch* tduBranch = eventTree->GetBranch(getBranchName<artdaq::Fragments>(
fInputTDUTag).
data());
356 eventAuxBranch->SetAddress(&eventAuxPtr);
357 eventAuxBranch->GetEntry(bl_index.
Spill);
358 unsigned int beamline_run = eventAux.
run();
377 for (std::vector<TDUFragment*>::const_iterator tduIt = tduFrags.begin();
378 tduIt != tduFrags.end(); ++tduIt)
383 <<
"Found matching beamline event from file " 384 << bl_index.
File <<
", spill " 385 << bl_index.
Spill <<
" and trigger " 388 return beamlineEvent;
405 <<
"Unable to open file " 407 <<
" due to system error, \"" 440 std::unique_ptr<std::vector<rawdata::RawDigit> > digits(
new std::vector<rawdata::RawDigit>);
487 std::unique_ptr<sumdata::RunData> rundata
513 std::unique_ptr<std::vector<rawdata::RawTrigger> > rtcol(
new std::vector<rawdata::RawTrigger>);
514 rtcol->push_back(raw_trigger);
520 std::unique_ptr<std::vector<rawdata::RawSumDropMB> > rtcol_MB(
new std::vector<rawdata::RawSumDropMB>);
521 rtcol_MB->push_back(raw_sumDropMB);
527 std::unique_ptr<std::vector<rawdata::RawSumDCM> > rtcol_DCM(
new std::vector<rawdata::RawSumDCM>);
528 rtcol_DCM->push_back(raw_sumDCM);
541 std::unique_ptr<std::vector<rawdata::FlatDAQData> > flatcol(
new std::vector<rawdata::FlatDAQData>);
542 flatcol->push_back(flat_daq_data);
551 std::vector<rawdata::RawBeamlineTrigger> bl_trigger;
552 std::vector<rawdata::RawBeamlineDigit> bl_tof;
553 std::vector<rawdata::RawBeamlineWC> bl_wc;
554 std::vector<rawdata::RawBeamlineDigit> bl_cherenkov;
555 std::vector<rawdata::RawBeamlineDigit> bl_muonstack;
556 std::vector<rawdata::RawBeamlineDigit> bl_paddledigit;
557 std::vector<rawdata::RawBeamlineDigit> bl_wcdigit;
558 std::vector<rawdata::RawBeamlineDigit> bl_otherdigit;
563 bl_tof = beamlineEvent->
GetToF();
564 bl_wc = beamlineEvent->
GetWC();
567 delete beamlineEvent;
575 (std::make_unique<std::vector<rawdata::RawBeamlineDigit> >(bl_tof), *outE,
fSourceName,
fToFName);
577 (std::make_unique<std::vector<rawdata::RawBeamlineWC> >(bl_wc), *outE,
fSourceName,
fWCName);
void setDebug(bool f)
Close any currently open file.
int open(const char *filename)
General initialization and reinitialization.
MaybeLogger_< ELseverityLevel::ELsev_info, true > LogVerbatim
EventPrincipal * makeEventPrincipal(EventAuxiliary const &eventAux, std::shared_ptr< History > &&history) const
BeamlineEvent * FindEvent(unsigned int event)
rawdata::RawBeamlineConfig GetConfig() const
std::enable_if_t< P::branch_type==InEvent||P::branch_type==InResults > put_product_in_principal(std::unique_ptr< T > &&product, P &principal, std::string const &module_label, std::string const &instance_name={})
uint32_t getSubrunNumber() const
std::vector< rawdata::RawBeamlineTrigger > GetTrigger() const
std::vector< rawdata::RawBeamlineDigit > GetCherenkov() const
std::vector< rawdata::RawBeamlineWC > GetWC() const
std::string const & eventTreeName()
bool fFilterCorruptedNanoslices
Do we need to filter out Corrupted NanoSlices?
::xsd::cxx::tree::exception< char > exception
std::pair< Spectrum *, CheatDecomp * > make_pair(SpectrumLoaderBase &loader_data, SpectrumLoaderBase &loader_mc, HistAxis *axis, Cut *cut, const SystShifts &shift, const Var &wei)
bool convertNovaTimeToUnixTime(uint64_t const &inputNovaTime, struct timespec &outputUnixTime)
artdaq::Fragments * getFragments(TBranch *br, unsigned entry)
uint64_t GetTDUTime() const
TypeLabel const & reconstitutes(std::string const &modLabel, std::string const &instanceName={})
std::vector< rawdata::RawBeamlineDigit > GetToF() const
const XML_Char const XML_Char * data
RunID const & runID() const
block
print "ROW IS " print row
T get(std::string const &key) const
int close()
Open a file for parsing.
RunPrincipal * makeRunPrincipal(RunAuxiliary const &runAux) const
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
unsigned long long fTriggerTimingMarker_TimeStart
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
const uint8_t * get() const
std::string ExtractGDML() const
Extract contents from fGDMLFile and return as a string.
SubRunPrincipal * makeSubRunPrincipal(SubRunAuxiliary const &subRunAux) const
std::vector< rawdata::RawBeamlineDigit > GetMuonStack() const
uint32_t getRunNumber() const
void add(const art::Event &evt, const art::InputTag &tag)
bool ProcessRawEvent(void *rawevent_buffer, std::vector< rawdata::RawDigit > *, rawdata::RawTrigger *, rawdata::RawSumDropMB *, rawdata::RawSumDCM *, rawdata::FlatDAQData *, rawdata::DAQHeader *)
Unpack the RawEvent.
unsigned long long getEventNumber() const
unsigned int NumEvents() const