2 #include "DAQDataFormats/RawEvent.h" 3 #include "DAQDataFormats/RawTrigger.h" 4 #include "DAQDataFormats/RawTriggerMask.h" 5 #include "DAQDataFormats/RawTriggerHeader.h" 6 #include "DAQDataFormats/RawDataBlock.h" 7 #include "DAQDataFormats/RawMicroBlock.h" 8 #include "DAQDataFormats/RawMicroSlice.h" 9 #include "DAQDataFormats/RawNanoSlice.h" 10 #include "DAQChannelMap/DAQChannelMap.h" 11 #include "DAQChannelMap/HardwareDisplay.h" 12 #include "NovaTimingUtilities/TimingUtilities.h" 84 evtsum.
fRun = rawevt.getRunNumber();
85 evtsum.
fSubrun = rawevt.getSubrun();
86 evtsum.
fEvent = rawevt.getEventNumber();
89 evtsum.
fTrigger = rawevt.getTrigger()->getTriggerMask()->getTriggerMask();
90 evtsum.
fMasterTrigger = rawevt.getTrigger()->getTriggerHeader()->getMasterTriggerNumber();
91 evtsum.
fT0 = rawevt.getTrigger()->getTriggerStart();
92 evtsum.
fRange = rawevt.getTrigger()->getTriggerRange()->getTriggerLength();
96 const unsigned long int mask32 = 0xFFFFFFFFUL;
97 unsigned long int T0lo = evtsum.
fT0 & mask32;
100 uint16_t sec,
min,
hour, mday, mon;
109 evtsum.
fHour = hour + (
float)min/60.0 + (
float)sec/60.0/60.0;
113 << evtsum.
fRun <<
" / " 116 <<
"number of datablocks: " 118 std::cout <<
"\tDatablocks: (N ublocks, isMissingData)\n";
135 rawevt.setFloatingDataBlock(idata);
140 dbsum.
fMissingData = datablock.getHeader()->isMissingData();
149 if(datablock.getHeader()->checkMarker()) {
169 datablock.setFloatingMicroBlock(imicro);
172 microblock = (*datablock.getFloatingMicroBlock());
175 microslice = (*microblock.getMicroSlice());
180 microsum.
fDet = microblock.getHeader()->getDetId();
181 microsum.
fDiblock = microblock.getHeader()->getDiblockId();
182 microsum.
fDCM = microblock.getHeader()->getDCMId();
191 for (inano=0; inano<microsum.
fNnanoslice; ++inano) {
215 nanosum.
fFEB = nanoslicehdr.getFEBId();
216 nanosum.
fPix = nanoslicehdr.getPixelAddr();
217 nanosum.
fTDC = nanoslice. getTimeStamp();
223 <<
"\t" << microsum.
fDCM 224 <<
"\t" << nanosum.
fFEB 225 <<
"\t" << nanosum.
fPix;
230 unsigned int version = nanoslicehdr.getVersion();
232 nanosum.
fADC = nanoslice.getPulseHeight();
236 <<
"\tADC: " << nanosum.
fADC;
241 const unsigned int nSamples = nanoslice.getNSamples();
242 const unsigned int nPretrig = nanoslice.getNPretriggeredSamples();
243 const unsigned int kDCSDistance = 3;
246 if((nSamples <= nPretrig) || (nPretrig < kDCSDistance))
249 nanosum.
fADC = nanoslice.getValue(nPretrig) - nanoslice.getValue(nPretrig - kDCSDistance);
253 <<
"\t(nSamples/nPretrig):" 257 for(
unsigned int p = 0;
p < nSamples; ++
p)
268 nanosum.
fLinkStatus = nanoslicehdr.getLinkStatus();
269 nanosum.
fDebugMode = nanoslicehdr.getDebugMode();
270 nanosum.
fFEBStatus = nanoslicehdr.getFEBStatus();
309 for (;
i!=
e; ++
i) (*i)->GetRawEventSummary(r);
319 for (;
i!=
e; ++
i) (*i)->GetDataBlockSummary(r,d);
330 for (;
i!=
e; ++
i) (*i)->GetMicroSliceSummary(r,d,m);
342 for (;
i!=
e; ++
i) (*i)->GetNanoSliceSummary(r,d,m,n);
unsigned short fDebugMode
Debug mode status bit.
void UnpackDataBlock(daqdataformats::RawEvent &rawevt, unsigned int idata, RawEventSummary &evtsum)
unsigned long int fT0
Trigger time in nova time units (64 Mhz ticks)
unsigned int fMasterTrigger
Master trigger number.
void PublishMicroSliceSummary(const RawEventSummary &res, const DataBlockSummary &dbs, const MicroSliceSummary &mbs)
daqchannelmap::HardwareDisplay * fHardwareMapping
Map pixel address to hardware space.
Unpack the DAQ data, prepare summaries, and post data.
unsigned int fHdwX
location of channel in "hardware display" space
bool fDebug
Flag to print debugging statements.
unsigned int fDiblock
Diblock ID.
void PublishDataBlockSummary(const RawEventSummary &res, const DataBlockSummary &dbs)
Interface for classes that plot data from the event summaries.
virtual DetView_TYPE getView(dchan daqchan) const =0
Which view (X or Y) does this daq channel readout?
std::list< SummarySubscriber * > fDBSSubscriber
Data block summary subscribers.
void SetDebug(bool debug)
bool fMCflag
Monte Carlo flag.
std::set< unsigned int > fFEBs
The list of FEBs contributing to the event.
static const unsigned int kADC_ERROR
void SubscribeToMicroSliceSummary(SummarySubscriber *s)
void UnpackMicroSlice(daqdataformats::RawDataBlock &datablock, unsigned int imicro, RawEventSummary &evtsum, DataBlockSummary &dbsum)
void DAQToXY(unsigned int db, unsigned int dcm, unsigned int feb, unsigned int pix, unsigned int *ix, unsigned int *iy)
unsigned int fPix
Pixel number on FEB.
cell_t getCell(lchan logicalchan) const
Decode the cell number from an lchan.
bool convertNovaTimeToUnixTime(uint64_t const &inputNovaTime, struct timespec &outputUnixTime)
unsigned int fTDC
Time of hit in TDC units.
lchan encodeLChan(int detId, plane_t plane, cell_t cell) const
All the interesting event-level data.
unsigned short fLinkStatus
Link status bit.
unsigned int fEvent
Event nunber.
unsigned int fRange
Trigger length in units of 500 nsec.
unsigned int fNnanoslice
Number of nano slices.
unsigned int fByteCount
Number of bytes reported by DCM.
unsigned int fDChan
DAQ channel id of this hit.
double fUsec
Time of hit relative to start of micro slice.
void PublishRawEventSummary(const RawEventSummary &s)
unsigned int fNmicroSl
Total number of micro slices.
std::set< unsigned int > fDCMs
The list of DCMs contributing to the event.
static DAQChannelMap * getInstance(int detID)
void UnpackRawEvent(daqdataformats::RawEvent &rawevt)
float fHour
A fractional hour of the day.
unsigned int fRun
Run number.
unsigned int fSubrun
Subrun number.
std::list< SummarySubscriber * > fMSSSubscriber
Micro slice summary subscribers.
bool fDataPresent
Data Present flag by DCM.
void SubscribeToNanoSliceSummary(SummarySubscriber *s)
unsigned int fCell
cell number of hit
unsigned short fDataPresent
Data present status bit.
A simple object that conatins all the global settings.
void UnpackNanoSlice(daqdataformats::RawMicroSlice µslice, unsigned int inano, RawEventSummary &evtsum, DataBlockSummary &dbsum, MicroSliceSummary µsum)
uint32_t fFEBStatus
Status flags.
static float min(const float a, const float b, const float c)
std::list< SummarySubscriber * > fRESSubscriber
Raw event summary subscribers.
void SubscribeToRawEventSummary(SummarySubscriber *s)
unsigned int fADC
Charge of hit in TDC units.
daqchannelmap::DetView_TYPE fView
in which view was the hit
std::set< unsigned int > fDiblocks
The list of diblocks in event.
Dumps a summary of info about events to the screen.
unsigned int fDet
Detector ID.
unsigned int fPlane
plane number of hit
unsigned int fTrigger
Trigger type.
unsigned int fNfeberr
Number of FEB errors reported in event.
unsigned int fLChan
Local channel id of this hit.
unsigned int fHdwY
location of channel in "hardware display" space
static RawEventUnpacker & Instance()
plane_t getPlane(lchan logicalchan) const
Decode the plane number from an lchan.
unsigned int fFEB
FEB number of nanoslice (aka "hit")
cmap::CMap class source code
unsigned int fNdatablock
Number of data blocks.
dchan encodeDChan(int detID, diblock_t diblock, dcm_id_t dcm, feb_t feb, pixel_t pixel) const
static const double kUSEC_PER_TDC
double fT0lo32Usec
Just the lower 32 bits of T0 converted to Usec.
void SubscribeToDataBlockSummary(SummarySubscriber *s)
void PublishNanoSliceSummary(const RawEventSummary &res, const DataBlockSummary &dbs, const MicroSliceSummary &mbs, const NanoSliceSummary &s)
unsigned int fNhit
Total number of nanoslices (hits)
All the interesting event-level data.
static Settings & Instance()
bool fEventIncomplete
Is the event incomplete?
bool fMissingData
Is data missing?
unsigned int fNmicroblock
Number of micro blocks.
Online Monitoring package header.
All the interesting event-level data.
std::list< SummarySubscriber * > fNSSSubscriber
Nano slice summary subscribers.
All the interesting event-level data.
static constexpr Double_t year