Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
KM3NETDAQ::JSummaryslice Struct Reference

Auxiliary class to create summary data. More...

#include <JSummaryslice.hh>

Inheritance diagram for KM3NETDAQ::JSummaryslice:
KM3NETDAQ::JDAQSummaryslice KM3NETDAQ::JDAQPreamble KM3NETDAQ::JDAQSummarysliceHeader std::vector< JDAQSummaryFrame > KM3NETDAQ::JDAQAbstractPreamble TObject KM3NETDAQ::JDAQHeader KM3NETDAQ::JDAQChronometer JTRIGGER::JSummaryRouter

Public Member Functions

 JSummaryslice ()
 Default constructor.
 
 JSummaryslice (const JDAQChronometer &chronometer, JObjectIterator< JDAQSummaryslice > &input, const JDetector &detector)
 Constructor.
 
 JSummaryslice (const JDAQChronometer &chronometer, const JDetectorSimulator &simbad)
 Constructor.
 
void correct (const JPMTDefaultSimulatorInterface &simulator)
 Correct measured singles rates for the probability that a hit survives the simulation of the PMT.
 
std::ostream & print (std::ostream &out, const bool lpr=false) const
 Print DAQ summary.
 
 ClassDef (JDAQSummaryslice, 6)
 
 ClassDef (JDAQPreamble, 1)
 
 ClassDef (JDAQSummarysliceHeader, 2)
 
 ClassDef (JDAQHeader, 2)
 
 ClassDef (JDAQChronometer, 3)
 
int getLength () const
 Get length.
 
int getDataType () const
 Get data type.
 
 ClassDefNV (JDAQAbstractPreamble, 1)
 
const JDAQSummarysliceHeadergetDAQSummarysliceHeader () const
 Get DAQ summary slice header.
 
const JDAQHeadergetDAQHeader () const
 Get DAQ header.
 
void setDAQHeader (const JDAQHeader &header)
 Set DAQ header.
 
const JDAQChronometergetDAQChronometer () const
 Get DAQ chronometer.
 
void setDAQChronometer (const JDAQChronometer &chronometer)
 Set DAQ chronometer.
 
int getDetectorID () const
 Get detector identifier.
 
int getRunNumber () const
 Get run number.
 
int getFrameIndex () const
 Get frame index.
 
JDAQUTCExtended getTimesliceStart () const
 Get start of timeslice.
 
void setRunNumber (const int run)
 Set run number.
 
void setFrameIndex (const int frame_index)
 Set frame index.
 
void setTimesliceStart (const JDAQUTCExtended &timeslice_start)
 Set timeslice start time.
 

Static Public Member Functions

static void actionAtFileOpen (int version)
 Action method at file open.
 
template<class T >
static JDAQPreamble getDAQPreamble (const T &object)
 Get DAQ preamble.
 

Static Public Attributes

static const int NPE = 1
 Number of photo-electrons corresponding to singles rate.
 

Protected Attributes

int length
 
int type
 
int detector_id
 
int run
 
int frame_index
 
JDAQUTCExtended timeslice_start
 

Detailed Description

Auxiliary class to create summary data.

Definition at line 38 of file JSummaryslice.hh.

Constructor & Destructor Documentation

◆ JSummaryslice() [1/3]

KM3NETDAQ::JSummaryslice::JSummaryslice ( )
inline

Default constructor.

Definition at line 44 of file JSummaryslice.hh.

45 {}

◆ JSummaryslice() [2/3]

KM3NETDAQ::JSummaryslice::JSummaryslice ( const JDAQChronometer & chronometer,
JObjectIterator< JDAQSummaryslice > & input,
const JDetector & detector )
inline

Constructor.

This constructor blends multiple KM3NETDAQ::JDAQSummaryslice's from an incomplete detector to a single KM3NETDAQ::JDAQSummaryslice for a complete detector.

Parameters
chronometerDAQ chronometer
inputsummary data
detectordetector

Definition at line 58 of file JSummaryslice.hh.

60 :
61 JDAQSummaryslice(chronometer)
62 {
63 for (JDetector::const_iterator module = detector.begin(); module != detector.end() && input.hasNext(); ) {
64
65 const JDAQSummaryslice* summary = input.next();
66
67 for (const_iterator i = summary->begin(); i != summary->end() && module != detector.end(); ++i, ++module) {
68
69 push_back(*i);
70
71 rbegin()->setModuleIdentifier(module->getID());
72 }
73 }
74 }
virtual bool hasNext()=0
Check availability of next element.
virtual const pointer_type & next()=0
Get next element.
JDAQSummaryslice()
Default constructor.
Detector file.
Definition JHead.hh:227

◆ JSummaryslice() [3/3]

KM3NETDAQ::JSummaryslice::JSummaryslice ( const JDAQChronometer & chronometer,
const JDetectorSimulator & simbad )
inline

Constructor.

This constructor directly creates a KM3NETDAQ::JDAQSummaryslice for a given detector simulation without the need to create first a KM3NETDAQ::JDAQTimeslice.

The high-rate veto of a given PMT is set to true when:

  • status of the PMT is not JPMTStatus::ON every time during the time slice; or
  • specified rate -corrected for the hit survival probability- exceeds KM3NETDAQ::HIGH_RATE_VETO_HZ.
Parameters
chronometerchronometer
simbaddetector simulator

Definition at line 90 of file JSummaryslice.hh.

91 :
93 {
94 using namespace JPP;
95 using namespace KM3NETDAQ;
96
97 setDAQChronometer(chronometer);
98
99 try {
100
101 const JK40DefaultSimulatorInterface& k40Simulator = dynamic_cast<const JK40DefaultSimulatorInterface&>(simbad.getK40Simulator());
102 const JPMTDefaultSimulatorInterface& pmtSimulator = dynamic_cast<const JPMTDefaultSimulatorInterface&>(simbad.getPMTSimulator());
103 const JCLBDefaultSimulatorInterface& clbSimulator = dynamic_cast<const JCLBDefaultSimulatorInterface&>(simbad.getCLBSimulator());
104
105 for (JDetector::const_iterator module = simbad->begin(); module != simbad->end(); ++module) {
106
107 if (!module->empty()) {
108
109 push_back(JDAQSummaryFrame(module->getID()));
110
111 this->rbegin()->setDAQFrameStatus(clbSimulator.getDAQFrameStatus(module->getID()));
112
113 for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
114
115 const JPMTIdentifier id(module->getID(), pmt);
116
117 double rate_Hz = k40Simulator.getSinglesRate(id);
118
119 rate_Hz *= pmtSimulator.getPMTSignalProcessor(id).getSurvivalProbability(NPE);
120
121 if (rate_Hz > HIGH_RATE_VETO_HZ) {
122 this->rbegin()->setHighRateVeto(pmt, true);
123 }
124
125 // correct rate for UDP packet loss
126
127 const int n1 = clbSimulator.getUDPNumberOfReceivedPackets(module->getID());
128 const int n2 = clbSimulator.getUDPMaximalSequenceNumber (module->getID());
129
130 if (n1 < n2 + 1) {
131 rate_Hz *= (double) n1 / (double) (n2 + 1);
132 }
133
134 this->rbegin()->setRate(pmt, rate_Hz);
135 }
136 }
137 }
138 }
139 catch(const std::exception& error) {};
140 }
JDAQFrameStatus getDAQFrameStatus(const JModuleIdentifier &id) const
Get DAQ frame status of given module.
virtual int getUDPMaximalSequenceNumber(const JModuleIdentifier &id) const
Get maximal sequence number of UDP packet.
virtual int getUDPNumberOfReceivedPackets(const JModuleIdentifier &id) const
Get number of received UDP packets.
const JCLBSimulator & getCLBSimulator() const
Get CLB simulator.
const JK40Simulator & getK40Simulator() const
Get K40 simulator.
const JPMTSimulator & getPMTSimulator() const
Get PMT simulator.
virtual double getSinglesRate(const JPMTIdentifier &pmt) const =0
Get singles rate as a function of PMT.
virtual const JPMTSignalProcessorInterface & getPMTSignalProcessor(const JPMTIdentifier &pmt) const
Get PMT signal processor.
virtual double getSurvivalProbability(const int NPE) const
Probability that a hit survives the simulation of the PMT.
void setDAQChronometer(const JDAQChronometer &chronometer)
Set DAQ chronometer.
Data storage class for rate measurements of all PMTs in one module.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
KM3NeT DAQ data structures and auxiliaries.
Definition DataQueue.cc:39
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition JDAQ.hh:26
static double HIGH_RATE_VETO_HZ
High-rate veto [kHz].
static const int NPE
Number of photo-electrons corresponding to singles rate.

Member Function Documentation

◆ correct()

void KM3NETDAQ::JSummaryslice::correct ( const JPMTDefaultSimulatorInterface & simulator)
inline

Correct measured singles rates for the probability that a hit survives the simulation of the PMT.

Parameters
simulatorPMT simulator

Definition at line 148 of file JSummaryslice.hh.

149 {
150 using namespace JPP;
151 using namespace KM3NETDAQ;
152
153 for (iterator frame = this->begin(); frame != this->end(); ++frame) {
154
155 for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
156
157 const JPMTIdentifier id(frame->getModuleID(), pmt);
158
159 if (simulator.hasPMTSignalProcessor(id)) {
160
161 const double P = simulator.getPMTSignalProcessor(id).getSurvivalProbability(NPE);
162
163 if (P > 0.0)
164 (*frame)[pmt].div(P);
165 else
166 (*frame)[pmt].setValue(0.0);
167 }
168 }
169 }
170 }
virtual const bool hasPMTSignalProcessor(const JPMTIdentifier &pmt) const
Has PMT signal processor.

◆ print()

std::ostream & KM3NETDAQ::JDAQSummaryslice::print ( std::ostream & out,
const bool lpr = false ) const
inlineinherited

Print DAQ summary.

Parameters
outoutput stream
lprlong print
Returns
output stream

Definition at line 88 of file JDAQSummaryslice.hh.

89 {
90 using namespace std;
91
92 out << this->ClassName() << endl;
93 out << dynamic_cast<const JDAQPreamble&> (*this) << endl;
94 out << dynamic_cast<const JDAQChronometer&>(*this) << endl;
95
96 for (JDAQSummaryslice::const_iterator module = this->begin(); module != this->end(); ++module) {
97
98 out << ' ' << setw(10) << module->getModuleID();
99 out << ' ' << setw(8) << setfill('0') << hex << module->getStatus() << dec << setfill(' ');
100 out << '|' << setw(8) << setfill('0') << hex << module->getFIFOStatus() << dec << setfill(' ');
101 out << ' ' << setw(2) << module->getUDPNumberOfReceivedPackets();
102 out << ' ' << setw(2) << module->getUDPMaximalSequenceNumber();
103
104 if (lpr) {
105 for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
106 out << ' ' << fixed << showpoint << setw(4) << setprecision(1) << module->getRate(pmt) * 1.0e-3;
107 }
108 }
109
110 out << endl;
111 }
112
113 return out;
114 }

◆ actionAtFileOpen()

static void KM3NETDAQ::JDAQSummaryslice::actionAtFileOpen ( int version)
inlinestaticinherited

Action method at file open.

Parameters
versionversion

Definition at line 122 of file JDAQSummaryslice.hh.

123 {
125 }
static int ROOT_IO_VERSION
Streamer version of JDAQSummaryslice as obtained from ROOT file.

◆ ClassDef() [1/5]

KM3NETDAQ::JDAQSummaryslice::ClassDef ( JDAQSummaryslice ,
6  )
inherited

◆ ClassDef() [2/5]

KM3NETDAQ::JDAQPreamble::ClassDef ( JDAQPreamble ,
1  )
inherited

◆ ClassDef() [3/5]

KM3NETDAQ::JDAQSummarysliceHeader::ClassDef ( JDAQSummarysliceHeader ,
2  )
inherited

◆ ClassDef() [4/5]

KM3NETDAQ::JDAQHeader::ClassDef ( JDAQHeader ,
2  )
inherited

◆ ClassDef() [5/5]

KM3NETDAQ::JDAQChronometer::ClassDef ( JDAQChronometer ,
3  )
inherited

◆ getDAQPreamble()

template<class T >
static JDAQPreamble KM3NETDAQ::JDAQPreamble::getDAQPreamble ( const T & object)
inlinestaticinherited

Get DAQ preamble.

This method should be used for binary I/O to get the actual data for the given object.
To this end, the following method should be overloaded for the corresponding data type.

   size_t  getSizeof(const T&);
Parameters
objectobject
Returns
preamble

Definition at line 76 of file JDAQPreamble.hh.

77 {
78 static JDAQPreamble preamble;
79
80 preamble.length = getSizeof(object);
82
83 return preamble;
84 }
friend size_t getSizeof()
Definition of method to get size of data type.
int getDataType()
Template definition for method returning data type.

◆ getLength()

int KM3NETDAQ::JDAQAbstractPreamble::getLength ( ) const
inlineinherited

Get length.

Returns
number of bytes

Definition at line 49 of file JDAQAbstractPreamble.hh.

50 {
51 return length;
52 }

◆ getDataType()

int KM3NETDAQ::JDAQAbstractPreamble::getDataType ( ) const
inlineinherited

Get data type.

Returns
data type

Definition at line 60 of file JDAQAbstractPreamble.hh.

61 {
62 return type;
63 }

◆ ClassDefNV()

KM3NETDAQ::JDAQAbstractPreamble::ClassDefNV ( JDAQAbstractPreamble ,
1  )
inherited

◆ getDAQSummarysliceHeader()

const JDAQSummarysliceHeader & KM3NETDAQ::JDAQSummarysliceHeader::getDAQSummarysliceHeader ( ) const
inlineinherited

Get DAQ summary slice header.

Returns
DAQ summary slice header

Definition at line 44 of file JDAQSummarysliceHeader.hh.

45 {
46 return static_cast<const JDAQSummarysliceHeader&>(*this);
47 }

◆ getDAQHeader()

const JDAQHeader & KM3NETDAQ::JDAQHeader::getDAQHeader ( ) const
inlineinherited

Get DAQ header.

Returns
DAQ header

Definition at line 49 of file JDAQHeader.hh.

50 {
51 return static_cast<const JDAQHeader&>(*this);
52 }

◆ setDAQHeader()

void KM3NETDAQ::JDAQHeader::setDAQHeader ( const JDAQHeader & header)
inlineinherited

Set DAQ header.

Parameters
headerDAQ header

Definition at line 60 of file JDAQHeader.hh.

61 {
62 static_cast<JDAQHeader&>(*this) = header;
63 }

◆ getDAQChronometer()

const JDAQChronometer & KM3NETDAQ::JDAQChronometer::getDAQChronometer ( ) const
inlineinherited

Get DAQ chronometer.

Returns
DAQ chronometer

Definition at line 88 of file JDAQChronometer.hh.

89 {
90 return static_cast<const JDAQChronometer&>(*this);
91 }

◆ setDAQChronometer()

void KM3NETDAQ::JDAQChronometer::setDAQChronometer ( const JDAQChronometer & chronometer)
inlineinherited

Set DAQ chronometer.

Parameters
chronometerDAQ chronometer

Definition at line 99 of file JDAQChronometer.hh.

100 {
101 static_cast<JDAQChronometer&>(*this) = chronometer;
102 }

◆ getDetectorID()

int KM3NETDAQ::JDAQChronometer::getDetectorID ( ) const
inlineinherited

Get detector identifier.

Returns
detector identifier

Definition at line 110 of file JDAQChronometer.hh.

111 {
112 return detector_id;
113 }

◆ getRunNumber()

int KM3NETDAQ::JDAQChronometer::getRunNumber ( ) const
inlineinherited

Get run number.

Returns
run number

Definition at line 121 of file JDAQChronometer.hh.

122 {
123 return run;
124 }

◆ getFrameIndex()

int KM3NETDAQ::JDAQChronometer::getFrameIndex ( ) const
inlineinherited

Get frame index.

Returns
frame index

Definition at line 132 of file JDAQChronometer.hh.

133 {
134 return frame_index;
135 }

◆ getTimesliceStart()

JDAQUTCExtended KM3NETDAQ::JDAQChronometer::getTimesliceStart ( ) const
inlineinherited

Get start of timeslice.

Returns
timeslice start

Definition at line 144 of file JDAQChronometer.hh.

145 {
146 return timeslice_start;
147 }

◆ setRunNumber()

void KM3NETDAQ::JDAQChronometer::setRunNumber ( const int run)
inlineinherited

Set run number.

Parameters
runrun number

Definition at line 155 of file JDAQChronometer.hh.

156 {
157 this->run = run;
158 }

◆ setFrameIndex()

void KM3NETDAQ::JDAQChronometer::setFrameIndex ( const int frame_index)
inlineinherited

Set frame index.

Parameters
frame_indexframe index

Definition at line 166 of file JDAQChronometer.hh.

167 {
168 this->frame_index = frame_index;
169 }

◆ setTimesliceStart()

void KM3NETDAQ::JDAQChronometer::setTimesliceStart ( const JDAQUTCExtended & timeslice_start)
inlineinherited

Set timeslice start time.

Parameters
timeslice_starttimeslice start time

Definition at line 177 of file JDAQChronometer.hh.

178 {
179 this->timeslice_start = timeslice_start;
180 }

Member Data Documentation

◆ NPE

const int KM3NETDAQ::JSummaryslice::NPE = 1
static

Number of photo-electrons corresponding to singles rate.

Definition at line 172 of file JSummaryslice.hh.

◆ length

int KM3NETDAQ::JDAQAbstractPreamble::length
protectedinherited

Definition at line 69 of file JDAQAbstractPreamble.hh.

◆ type

int KM3NETDAQ::JDAQAbstractPreamble::type
protectedinherited

Definition at line 70 of file JDAQAbstractPreamble.hh.

◆ detector_id

int KM3NETDAQ::JDAQChronometer::detector_id
protectedinherited

Definition at line 187 of file JDAQChronometer.hh.

◆ run

int KM3NETDAQ::JDAQChronometer::run
protectedinherited

Definition at line 188 of file JDAQChronometer.hh.

◆ frame_index

int KM3NETDAQ::JDAQChronometer::frame_index
protectedinherited

Definition at line 189 of file JDAQChronometer.hh.

◆ timeslice_start

JDAQUTCExtended KM3NETDAQ::JDAQChronometer::timeslice_start
protectedinherited

Definition at line 190 of file JDAQChronometer.hh.


The documentation for this struct was generated from the following file: