Public Member Functions | Private Member Functions | Private Attributes | List of all members
DAQToOffline::SSPReformatterAlgs Class Reference

#include <SSPReformatterAlgs.h>

Public Member Functions

 SSPReformatterAlgs (fhicl::ParameterSet const &pset)
 
void SSPFragmentToWaveformsAndHits (artdaq::Fragments const &rawFragments, std::vector< raw::OpDetWaveform > &opDetWaveformVector, std::vector< recob::OpHit > &opHitVector)
 
std::vector< raw::OpDetWaveformSSPFragmentToOpDetWaveform (artdaq::Fragments const &raw)
 Construct a waveform from each trigger. More...
 
std::vector< recob::OpHitSSPHeaderToOpHit (artdaq::Fragments const &raw)
 
void PrintHeaderInfo (const SSPDAQ::EventHeader *daqHeader)
 Print out header information. More...
 
unsigned int CheckAndGetNTriggers (const artdaq::Fragment &frag, const lbne::SSPFragment sspf)
 Load the milislice. More...
 
const SSPDAQ::EventHeader * GetHeaderAndAdvance (const unsigned int *&dataPointer)
 Load the header. More...
 
uint32_t GetPeakSum (const SSPDAQ::EventHeader *daqHeader)
 
unsigned short GetOpChannel (const SSPDAQ::EventHeader *daqHeader)
 
unsigned long GetGlobalFirstSample (const SSPDAQ::EventHeader *daqHeader)
 
unsigned long GetInternalFirstSample (const SSPDAQ::EventHeader *daqHeader)
 
unsigned long GetBaselineSum (const SSPDAQ::EventHeader *daqHeader)
 
unsigned long GetIntegratedSum (const SSPDAQ::EventHeader *daqHeader)
 
unsigned int GetPeakTime (const SSPDAQ::EventHeader *daqHeader)
 
unsigned int GetWaveformLength (const SSPDAQ::EventHeader *daqHeader)
 
double ClockFrequency ()
 Return the NOvAClockFrequency. More...
 

Private Member Functions

raw::OpDetWaveform ConstructWaveformAndAdvance (const SSPDAQ::EventHeader *daqHeader, const unsigned int *&dataPointer)
 Construct a waveform from the adc vector, advance the data pointer when done. More...
 
recob::OpHit ConstructOpHit (const SSPDAQ::EventHeader *daqHeader)
 Construct an OpHit object from the daqHeader. More...
 
void BuildOpDetChannelMap (std::string fChannelMapFile)
 

Private Attributes

double NOvAClockFrequency
 
std::map< int, int > theChannelMap
 
int m1
 
int i1
 
int i2
 
double SPESize
 

Detailed Description

Definition at line 30 of file SSPReformatterAlgs.h.

Constructor & Destructor Documentation

DAQToOffline::SSPReformatterAlgs::SSPReformatterAlgs ( fhicl::ParameterSet const &  pset)

Definition at line 26 of file SSPReformatterAlgs.cc.

26  :
27  NOvAClockFrequency(pset.get<double>("NOvAClockFrequency")), // in MHz
28  m1(pset.get<int>("SSPm1")),
29  i1(pset.get<int>("SSPi1")),
30  i2(pset.get<int>("SSPi2")),
31  SPESize(pset.get<float>("SPESize"))
32 
33 {
34  BuildOpDetChannelMap(pset.get<std::string>("OpDetChannelMapFile"));
35 }
std::string string
Definition: nybbler.cc:12
void BuildOpDetChannelMap(std::string fChannelMapFile)

Member Function Documentation

void DAQToOffline::SSPReformatterAlgs::BuildOpDetChannelMap ( std::string  fChannelMapFile)
private

Definition at line 245 of file SSPReformatterAlgs.cc.

246 {
247  theChannelMap.clear();
248 
249  int onlineChannel;
250  int offlineChannel;
251 
252  std::string fullname;
253  cet::search_path sp("FW_SEARCH_PATH");
254  sp.find_file(fChannelMapFile, fullname);
255 
256  if ( fullname.empty() ) {
257  mf::LogWarning("DAQToOffline") << "Input spectrum file "
258  << fChannelMapFile
259  << " not found in FW_SEARCH_PATH, using debugging map!\n";
260  }
261  else {
262  mf::LogVerbatim("DAQToOffline") << "Build Online->Offline channel Map from " << fullname;
263  std::ifstream infile(fullname);
264  while (infile.good()) {
265  infile >> onlineChannel >> offlineChannel;
266  theChannelMap[onlineChannel] = offlineChannel;
267  mf::LogVerbatim("DAQToOffline") << " " << onlineChannel << " -> " << offlineChannel;
268  }
269  }
270 
271 }
MaybeLogger_< ELseverityLevel::ELsev_info, true > LogVerbatim
std::string string
Definition: nybbler.cc:12
string infile
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
unsigned int DAQToOffline::SSPReformatterAlgs::CheckAndGetNTriggers ( const artdaq::Fragment &  frag,
const lbne::SSPFragment  sspf 
)

Load the milislice.

Definition at line 206 of file SSPReformatterAlgs.cc.

207 {
208  mf::LogDebug("DAQToOffline") << "\n"
209  << "SSP fragment " << frag.fragmentID()
210  << " has total size: " << sspf.hdr_event_size()
211  << " and run number: " << sspf.hdr_run_number()
212  << " with " << sspf.total_adc_values() << " total ADC values"
213  << "\n"
214  << "\n";
215 
216  const SSPDAQ::MillisliceHeader* meta=0;
217  //get the information from the header
218  if(frag.hasMetadata())
219  {
220  meta = &(frag.metadata<lbne::SSPFragment::Metadata>()->sliceHeader);
221 
222  mf::LogInfo("DAQToOffline")
223  << "===Slice metadata====" << "\n"
224  << " Start time " << meta->startTime << "\n"
225  << " End time " << meta->endTime << "\n"
226  << " Packet length " << meta->length << "\n"
227  << " Number of triggers " << meta->nTriggers << "\n"
228  << "=====================";
229  }
230  else
231  {
232  mf::LogWarning("DAQToOffline") << "SSP fragment has no metadata associated with it.";
233  }
234 
235  // No metadata, no trigger count
236  if (meta == 0) return 0;
237 
238  return meta->nTriggers;
239 }
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
MaybeLogger_< ELseverityLevel::ELsev_success, false > LogDebug
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
double DAQToOffline::SSPReformatterAlgs::ClockFrequency ( )
inline

Return the NOvAClockFrequency.

Definition at line 68 of file SSPReformatterAlgs.h.

recob::OpHit DAQToOffline::SSPReformatterAlgs::ConstructOpHit ( const SSPDAQ::EventHeader *  daqHeader)
private

Construct an OpHit object from the daqHeader.

< Derived Optical channel

< first sample time in ticks

< first sample time in microseconds

Definition at line 421 of file SSPReformatterAlgs.cc.

422 {
423  // Get basic information from the header
424  unsigned short OpChannel = GetOpChannel(daqHeader); ///< Derived Optical channel
425  unsigned long FirstSample = GetGlobalFirstSample(daqHeader);; ///< first sample time in ticks
426  double TimeStamp = ((double)FirstSample)/NOvAClockFrequency; ///< first sample time in microseconds
427 
428  auto const* ts = lar::providerFrom<detinfo::DetectorClocksService>();
429 
430  double peakTime = ((double)GetPeakTime(daqHeader)) * ts->OpticalClock().TickPeriod(); // microseconds
431  double width = ((double)i1) * ts->OpticalClock().TickPeriod(); // microseconds
432 
433  double pedestal = ((double)GetBaselineSum(daqHeader)) / ((double)i1);
434  double area = ((double)GetIntegratedSum(daqHeader)) - pedestal * i2;
435  double peak = ((double)GetPeakSum(daqHeader)) / ((double)m1) - pedestal;
436 
437 
438  recob::OpHit ophit(OpChannel,
439  TimeStamp+peakTime, // Relative Time
440  TimeStamp+peakTime, // Absolute time
441  0, // Frame, not used by DUNE
442  width,
443  area,
444  peak,
445  area / SPESize, // PE
446  0.);
447 
448  return ophit;
449 }
uint32_t GetPeakSum(const SSPDAQ::EventHeader *daqHeader)
unsigned int GetPeakTime(const SSPDAQ::EventHeader *daqHeader)
unsigned long GetBaselineSum(const SSPDAQ::EventHeader *daqHeader)
unsigned long GetIntegratedSum(const SSPDAQ::EventHeader *daqHeader)
unsigned long GetGlobalFirstSample(const SSPDAQ::EventHeader *daqHeader)
unsigned short GetOpChannel(const SSPDAQ::EventHeader *daqHeader)
raw::OpDetWaveform DAQToOffline::SSPReformatterAlgs::ConstructWaveformAndAdvance ( const SSPDAQ::EventHeader *  daqHeader,
const unsigned int *&  dataPointer 
)
private

Construct a waveform from the adc vector, advance the data pointer when done.

< Derived Optical channel

< first sample time in ticks

< first sample time in microseconds

Definition at line 387 of file SSPReformatterAlgs.cc.

389 {
390 
391  // Get basic information from the header
392  unsigned short OpChannel = GetOpChannel(daqHeader); ///< Derived Optical channel
393  unsigned long FirstSample = GetGlobalFirstSample(daqHeader); ///< first sample time in ticks
394  double TimeStamp = ((double)FirstSample)/NOvAClockFrequency; ///< first sample time in microseconds
395 
396  // Print some debugging info
397  PrintHeaderInfo(daqHeader);
398 
399  // Get ADC Count, create pointer to adcs
400  unsigned int nADC = GetWaveformLength(daqHeader);
401  const unsigned short* adcPointer = reinterpret_cast<const unsigned short*>(dataPointer);
402 
403  // Initialize the waveform
404  raw::OpDetWaveform Waveform(TimeStamp, OpChannel, nADC);
405 
406  // Build up the waveform
407  for(size_t idata = 0; idata < nADC; idata++) {
408  const unsigned short* adc = adcPointer + idata;
409  Waveform.push_back(*adc);
410  }
411 
412  // Advance the dataPointer to the next header
413  dataPointer+=nADC/2;
414 
415  return Waveform;
416 }
std::vector< T > Waveform
Definition: IWaveformTool.h:21
unsigned int GetWaveformLength(const SSPDAQ::EventHeader *daqHeader)
unsigned long GetGlobalFirstSample(const SSPDAQ::EventHeader *daqHeader)
unsigned short GetOpChannel(const SSPDAQ::EventHeader *daqHeader)
void PrintHeaderInfo(const SSPDAQ::EventHeader *daqHeader)
Print out header information.
unsigned long DAQToOffline::SSPReformatterAlgs::GetBaselineSum ( const SSPDAQ::EventHeader *  daqHeader)

Definition at line 355 of file SSPReformatterAlgs.cc.

356 {
357  return ((daqHeader->group4 & 0x00FF) << 16) + daqHeader->preriseLow;
358 
359 }
unsigned long DAQToOffline::SSPReformatterAlgs::GetGlobalFirstSample ( const SSPDAQ::EventHeader *  daqHeader)

Definition at line 333 of file SSPReformatterAlgs.cc.

334 {
335  return ( ( (unsigned long)daqHeader->timestamp[3] << 48 )
336  + ( (unsigned long)daqHeader->timestamp[2] << 32 )
337  + ( (unsigned long)daqHeader->timestamp[1] << 16 )
338  + ( (unsigned long)daqHeader->timestamp[0] ) );
339 }
const SSPDAQ::EventHeader * DAQToOffline::SSPReformatterAlgs::GetHeaderAndAdvance ( const unsigned int *&  dataPointer)

Load the header.

Definition at line 276 of file SSPReformatterAlgs.cc.

277 {
278  // Load the event header, advance the pointer
279  const SSPDAQ::EventHeader* daqHeader=reinterpret_cast<const SSPDAQ::EventHeader*>(dataPointer);
280  dataPointer += sizeof(SSPDAQ::EventHeader)/sizeof(unsigned int);
281  return daqHeader;
282 }
unsigned long DAQToOffline::SSPReformatterAlgs::GetIntegratedSum ( const SSPDAQ::EventHeader *  daqHeader)

Definition at line 363 of file SSPReformatterAlgs.cc.

364 {
365  return ((unsigned int)(daqHeader->intSumHigh) << 8) + (((unsigned int)(daqHeader->group4) & 0xFF00) >> 8);
366 }
unsigned long DAQToOffline::SSPReformatterAlgs::GetInternalFirstSample ( const SSPDAQ::EventHeader *  daqHeader)

Definition at line 345 of file SSPReformatterAlgs.cc.

346 {
347  return ( ((uint64_t)((uint64_t)daqHeader->intTimestamp[3] << 32))
348  + ((uint64_t)((uint64_t)daqHeader->intTimestamp[2]) << 16)
349  + ((uint64_t)((uint64_t)daqHeader->intTimestamp[1])) );
350 }
unsigned __int64 uint64_t
Definition: stdint.h:136
unsigned short DAQToOffline::SSPReformatterAlgs::GetOpChannel ( const SSPDAQ::EventHeader *  daqHeader)

Definition at line 303 of file SSPReformatterAlgs.cc.

304 {
305  unsigned short OpChannel = -1;
306 
307  // Extract values we need for the data product
308  if ( theChannelMap.size() == 0) {
309  // No channel map, default to debugging map
310  int HardwareChannel = ((daqHeader->group2 & 0x000F) >> 0); // Channel Number
311  int SSPNumber = ((daqHeader->group2 & 0x00F0) >> 4); // Module Number
312  OpChannel = 100*SSPNumber + HardwareChannel;
313  }
314  else if ( theChannelMap.find(daqHeader->group2) != theChannelMap.end() ) {
315  OpChannel = theChannelMap[daqHeader->group2];
316  }
317  else {
318  int HardwareChannel = ((daqHeader->group2 & 0x000F) >> 0); // Channel Number
319  int SSPNumber = ((daqHeader->group2 & 0x00F0) >> 4); // Module Number
320  mf::LogWarning("DAQToOffline") << "SSP " << SSPNumber << " Channel " << HardwareChannel
321  << "(" << daqHeader->group2 << ") "
322  << " not in the map (OK for uninstrumented channels), skipping." << std::endl;
323  throw cet::exception( "SSP Channel Invalid" );
324  }
325 
326  return OpChannel;
327 }
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
QTextStream & endl(QTextStream &s)
uint32_t DAQToOffline::SSPReformatterAlgs::GetPeakSum ( const SSPDAQ::EventHeader *  daqHeader)

Definition at line 289 of file SSPReformatterAlgs.cc.

290 {
291  uint32_t peaksum = ((daqHeader->group3 & 0x00FF) >> 16) + daqHeader->peakSumLow;
292  if(peaksum & 0x00800000) {
293  peaksum |= 0xFF000000;
294  }
295  return peaksum;
296 }
unsigned int uint32_t
Definition: stdint.h:126
unsigned int DAQToOffline::SSPReformatterAlgs::GetPeakTime ( const SSPDAQ::EventHeader *  daqHeader)

Definition at line 370 of file SSPReformatterAlgs.cc.

371 {
372  return (daqHeader->group3 & 0xFF00) >> 8 ;
373 }
unsigned int DAQToOffline::SSPReformatterAlgs::GetWaveformLength ( const SSPDAQ::EventHeader *  daqHeader)

Definition at line 378 of file SSPReformatterAlgs.cc.

379 {
380  unsigned int nADC=(daqHeader->length-sizeof(SSPDAQ::EventHeader)/sizeof(unsigned int))*2;
381  return nADC;
382 }
void DAQToOffline::SSPReformatterAlgs::PrintHeaderInfo ( const SSPDAQ::EventHeader *  daqHeader)

Print out header information.

Definition at line 161 of file SSPReformatterAlgs.cc.

162 {
163  auto FirstSample = GetGlobalFirstSample(daqHeader);
164  auto InternalSample = GetInternalFirstSample(daqHeader);
165  auto TimeStamp = ((double)FirstSample)/NOvAClockFrequency;
166  auto InternalTimeStamp = ((double)InternalSample)/NOvAClockFrequency;
167 
168  mf::LogDebug("DAQToOffline")
169  << "Header: " << daqHeader->header << "\n"
170  << "Length: " << daqHeader->length << "\n"
171  << "Trigger type: " << ((daqHeader->group1 & 0xFF00) >> 8) << "\n"
172  << "Status flags: " << ((daqHeader->group1 & 0x00F0) >> 4) << "\n"
173  << "Header type: " << ((daqHeader->group1 & 0x000F) >> 0) << "\n"
174  << "Trigger ID: " << daqHeader->triggerID << "\n"
175  << "Module ID: " << ((daqHeader->group2 & 0xFFF0) >> 4) << "\n"
176  << "Channel ID: " << ((daqHeader->group2 & 0x000F) >> 0) << "\n"
177  << "OpChannel: " << GetOpChannel(daqHeader) << "\n"
178  << "External (NOvA) timestamp: " << FirstSample << " ticks" << "\n"
179  << " " << TimeStamp << " microseconds" << "\n"
180  // these first_ ouptuts are a little ill-defined anyway since they are not
181  // reset by run but rather with the job
182  //<< "Since first sample this run: " << FirstSample-first_FirstSample << " ticks" << "\n"
183  //<< " " << TimeStamp-first_TimeStamp << " microseconds" << "\n"
184  << "Peak sum: " << GetPeakSum(daqHeader) << "\n"
185  << "Peak time: " << GetPeakTime(daqHeader) << "\n"
186 
187  << "Baseline Sum (Prerise): " << GetBaselineSum(daqHeader) << "\n"
188  << "Integrated sum: " << GetIntegratedSum(daqHeader) << "\n"
189  << "Baseline: " << daqHeader->baseline << "\n"
190  << "CFD Timestamp interpolation points: " << daqHeader->cfdPoint[0] << " " << daqHeader->cfdPoint[1]
191  << " " << daqHeader->cfdPoint[2] << " " << daqHeader->cfdPoint[3] << "\n"
192  << "Internal interpolation point: " << daqHeader->intTimestamp[0] << "\n"
193  << "Internal timestamp: " << InternalSample << " ticks\n"
194  << " " << InternalTimeStamp << " microseconds" << "\n"
195  //<< "Relative internal timestamp: " << InternalSample-first_InternalSample << " ticks" << "\n"
196  //<< " " << InternalTimeStamp-first_InternalTimeStamp << " microseconds"
197  << "" ;
198 
199 }
uint32_t GetPeakSum(const SSPDAQ::EventHeader *daqHeader)
unsigned int GetPeakTime(const SSPDAQ::EventHeader *daqHeader)
unsigned long GetInternalFirstSample(const SSPDAQ::EventHeader *daqHeader)
unsigned long GetBaselineSum(const SSPDAQ::EventHeader *daqHeader)
unsigned long GetIntegratedSum(const SSPDAQ::EventHeader *daqHeader)
unsigned long GetGlobalFirstSample(const SSPDAQ::EventHeader *daqHeader)
unsigned short GetOpChannel(const SSPDAQ::EventHeader *daqHeader)
MaybeLogger_< ELseverityLevel::ELsev_success, false > LogDebug
std::vector< raw::OpDetWaveform > DAQToOffline::SSPReformatterAlgs::SSPFragmentToOpDetWaveform ( artdaq::Fragments const &  raw)

Construct a waveform from each trigger.

Definition at line 85 of file SSPReformatterAlgs.cc.

86 {
87  std::vector<raw::OpDetWaveform> opDetWaveformVector;
88 
89  unsigned int numFragments = rawFragments.size();
90 
91  for (size_t idx = 0; idx < numFragments; ++idx) {
92  const auto& frag(rawFragments[idx]);
93  lbne::SSPFragment sspf(frag);
94 
95  unsigned int nTriggers = CheckAndGetNTriggers(frag, sspf);
96 
97  const unsigned int* dataPointer = sspf.dataBegin();
98 
99 
100  for (unsigned int triggersProcessed = 0;
101  (nTriggers==0 || triggersProcessed < nTriggers) && dataPointer < sspf.dataEnd();
102  ++triggersProcessed) {
103 
104  try {
105  auto daqHeader = GetHeaderAndAdvance(dataPointer);
106  opDetWaveformVector.emplace_back( ConstructWaveformAndAdvance(daqHeader, dataPointer) );
107  }
108  catch (cet::exception const&) {
109  continue;
110  }
111 
112  } // End of loop over triggers
113  } // End of loop over fragments (rawFragments)
114 
115  return opDetWaveformVector;
116 }
raw::OpDetWaveform ConstructWaveformAndAdvance(const SSPDAQ::EventHeader *daqHeader, const unsigned int *&dataPointer)
Construct a waveform from the adc vector, advance the data pointer when done.
unsigned int CheckAndGetNTriggers(const artdaq::Fragment &frag, const lbne::SSPFragment sspf)
Load the milislice.
const SSPDAQ::EventHeader * GetHeaderAndAdvance(const unsigned int *&dataPointer)
Load the header.
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
void DAQToOffline::SSPReformatterAlgs::SSPFragmentToWaveformsAndHits ( artdaq::Fragments const &  rawFragments,
std::vector< raw::OpDetWaveform > &  opDetWaveformVector,
std::vector< recob::OpHit > &  opHitVector 
)

Construct OpDetWaveform objects from triggers with full waveforms and construct OpHit objects from triggers which only have headers.

Definition at line 41 of file SSPReformatterAlgs.cc.

44 {
45  unsigned int numFragments = rawFragments.size();
46 
47  for (size_t idx = 0; idx < numFragments; ++idx) {
48  const auto& frag(rawFragments[idx]);
49  lbne::SSPFragment sspf(frag);
50 
51  unsigned int nTriggers = CheckAndGetNTriggers(frag, sspf);
52 
53  const unsigned int* dataPointer = sspf.dataBegin();
54 
55 
56  for (unsigned int triggersProcessed = 0;
57  (nTriggers==0 || triggersProcessed < nTriggers) && dataPointer < sspf.dataEnd();
58  ++triggersProcessed) {
59 
60  try {
61  auto daqHeader = GetHeaderAndAdvance(dataPointer);
62  if ( GetWaveformLength(daqHeader) > 0) {
63  // We have a waveform
64  opDetWaveformVector.emplace_back( ConstructWaveformAndAdvance(daqHeader, dataPointer) );
65 
66  }
67  else {
68  // We only have a header
69  opHitVector.emplace_back( ConstructOpHit(daqHeader) );
70  }
71 
72  }
73  catch (cet::exception const&) {
74  continue;
75  }
76  } // End of loop over triggers
77  } // End of loop over fragments (rawFragments)
78 
79 
80 }
recob::OpHit ConstructOpHit(const SSPDAQ::EventHeader *daqHeader)
Construct an OpHit object from the daqHeader.
raw::OpDetWaveform ConstructWaveformAndAdvance(const SSPDAQ::EventHeader *daqHeader, const unsigned int *&dataPointer)
Construct a waveform from the adc vector, advance the data pointer when done.
unsigned int CheckAndGetNTriggers(const artdaq::Fragment &frag, const lbne::SSPFragment sspf)
Load the milislice.
unsigned int GetWaveformLength(const SSPDAQ::EventHeader *daqHeader)
const SSPDAQ::EventHeader * GetHeaderAndAdvance(const unsigned int *&dataPointer)
Load the header.
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
std::vector< recob::OpHit > DAQToOffline::SSPReformatterAlgs::SSPHeaderToOpHit ( artdaq::Fragments const &  raw)

Definition at line 120 of file SSPReformatterAlgs.cc.

121 {
122  std::vector<recob::OpHit> opHitVector;
123 
124  unsigned int numFragments = rawFragments.size();
125 
126 
127  for (size_t idx = 0; idx < numFragments; ++idx) {
128  const auto& frag(rawFragments[idx]);
129  lbne::SSPFragment sspf(frag);
130 
131  unsigned int nTriggers = CheckAndGetNTriggers(frag, sspf);
132  const unsigned int* dataPointer = sspf.dataBegin();
133 
134 
135  for (unsigned int triggersProcessed = 0;
136  (nTriggers==0 || triggersProcessed < nTriggers) && dataPointer < sspf.dataEnd();
137  ++triggersProcessed) {
138 
139 
140  try {
141  auto daqHeader = GetHeaderAndAdvance(dataPointer);
142  opHitVector.emplace_back( ConstructOpHit(daqHeader) );
143 
144  // Advance the dataPointer to the next header
145  unsigned int nADC = GetWaveformLength(daqHeader);
146  dataPointer+=nADC/2;
147  }
148  catch (cet::exception const&) {
149  continue;
150  }
151  } // End of loop over triggers
152  } // End of loop over fragments (rawFragments)
153 
154  return opHitVector;
155 }
recob::OpHit ConstructOpHit(const SSPDAQ::EventHeader *daqHeader)
Construct an OpHit object from the daqHeader.
unsigned int CheckAndGetNTriggers(const artdaq::Fragment &frag, const lbne::SSPFragment sspf)
Load the milislice.
unsigned int GetWaveformLength(const SSPDAQ::EventHeader *daqHeader)
const SSPDAQ::EventHeader * GetHeaderAndAdvance(const unsigned int *&dataPointer)
Load the header.
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33

Member Data Documentation

int DAQToOffline::SSPReformatterAlgs::i1
private

Definition at line 82 of file SSPReformatterAlgs.h.

int DAQToOffline::SSPReformatterAlgs::i2
private

Definition at line 83 of file SSPReformatterAlgs.h.

int DAQToOffline::SSPReformatterAlgs::m1
private

Definition at line 81 of file SSPReformatterAlgs.h.

double DAQToOffline::SSPReformatterAlgs::NOvAClockFrequency
private

Definition at line 78 of file SSPReformatterAlgs.h.

double DAQToOffline::SSPReformatterAlgs::SPESize
private

Definition at line 84 of file SSPReformatterAlgs.h.

std::map<int,int> DAQToOffline::SSPReformatterAlgs::theChannelMap
private

Definition at line 79 of file SSPReformatterAlgs.h.


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