Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
JCALIBRATE::JTDC_t Struct Reference

Auxiliary class for TDC constraints. More...

#include <JTDC_t.hh>

Inheritance diagram for JCALIBRATE::JTDC_t:
std::multimap< int, int >

Public Types

enum  { WILDCARD = -1 }
 Wild card for module identifier and TDC. More...
 
typedef std::multimap< int, int > multimap_type
 
typedef std::pair< const_iterator, const_iterator > range_type
 Type definition for range of TDC constraints of a given module identfier.
 

Public Member Functions

void insert (const value_type &value)
 Insert constraint.
 
void insert (const int id, const int tdc)
 Insert constraint.
 
range_type equal_range (const int id)
 Get range of constraints for given module.
 
bool has (const int id, const int tdc)
 Check if TDC is constraint.
 
void reverse ()
 Reverse constraints.
 
bool is_valid (const bool option=false) const
 Check validity of TDC constrants.
 

Public Attributes

JComment comment
 

Friends

std::istream & operator>> (std::istream &in, JTDC_t &tdc)
 Read TDC constraints from input.
 
std::ostream & operator<< (std::ostream &out, const JTDC_t &tdc)
 Write TDC constraints to output.
 

Detailed Description

Auxiliary class for TDC constraints.

Definition at line 37 of file JTDC_t.hh.

Member Typedef Documentation

◆ multimap_type

Definition at line 40 of file JTDC_t.hh.

◆ range_type

std::pair<const_iterator, const_iterator> JCALIBRATE::JTDC_t::range_type

Type definition for range of TDC constraints of a given module identfier.

Definition at line 45 of file JTDC_t.hh.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

Wild card for module identifier and TDC.

Enumerator
WILDCARD 

Definition at line 51 of file JTDC_t.hh.

51{ WILDCARD = -1 };

Member Function Documentation

◆ insert() [1/2]

void JCALIBRATE::JTDC_t::insert ( const value_type & value)
inline

Insert constraint.

Note that if TDC equals JTDC_t::WILDCARD, all possible TDCs in the given module are inserted.

Parameters
valuemodule identifier and TDC

Definition at line 62 of file JTDC_t.hh.

63 {
64 if (value.second == WILDCARD) {
65
66 for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
67 multimap_type::insert(value_type(value.first, pmt));
68 }
69
70 } else {
71
72 multimap_type::insert(value);
73 }
74 }

◆ insert() [2/2]

void JCALIBRATE::JTDC_t::insert ( const int id,
const int tdc )
inline

Insert constraint.

Note that if TDC equals JTDC_t::WILDCARD, all possible TDCs in the given module are inserted.

Parameters
idmodule identifier
tdcTDC

Definition at line 86 of file JTDC_t.hh.

87 {
88 this->insert(value_type(id, tdc));
89 }
void insert(const value_type &value)
Insert constraint.
Definition JTDC_t.hh:62

◆ equal_range()

range_type JCALIBRATE::JTDC_t::equal_range ( const int id)
inline

Get range of constraints for given module.

Note that if no data are available for given module identifier, the data corresponding to JTDC_t::WILDCARD are returned.

Parameters
idmodule identifier
Returns
range of constraints

Definition at line 101 of file JTDC_t.hh.

102 {
103 range_type range = multimap_type::equal_range(id);
104
105 if (range.first == range.second) {
106 range = multimap_type::equal_range(WILDCARD);
107 }
108
109 return range;
110 }
std::pair< const_iterator, const_iterator > range_type
Type definition for range of TDC constraints of a given module identfier.
Definition JTDC_t.hh:45

◆ has()

bool JCALIBRATE::JTDC_t::has ( const int id,
const int tdc )
inline

Check if TDC is constraint.

Parameters
idmodule identifier
tdcTDC channel
Returns
true if given TDC is constraint; else false

Definition at line 120 of file JTDC_t.hh.

121 {
122 const range_type range = equal_range(id);
123
124 for (JTDC_t::const_iterator i = range.first; i != range.second; ++i) {
125 if (tdc == i->second) {
126 return true;
127 }
128 }
129
130 return false;
131 }
range_type equal_range(const int id)
Get range of constraints for given module.
Definition JTDC_t.hh:101

◆ reverse()

void JCALIBRATE::JTDC_t::reverse ( )
inline

Reverse constraints.

Definition at line 137 of file JTDC_t.hh.

138 {
139 JTDC_t buffer;
140
141 for (JTDC_t::const_iterator p = this->begin(); p != this->end(); ) {
142
143 JTDC_t::const_iterator q = p;
144
145 for ( ; q != this->end() && q->first == p->first; ++q) {}
146
147 for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
148
149 JTDC_t::const_iterator i = p;
150
151 for ( ; i != q && i->second != pmt; ++i) {}
152
153 if (i == q) {
154 buffer.insert(value_type(p->first, pmt));
155 }
156 }
157
158 p = q;
159 }
160
161 this->swap(buffer);
162 }

◆ is_valid()

bool JCALIBRATE::JTDC_t::is_valid ( const bool option = false) const
inline

Check validity of TDC constrants.

Parameters
optionoption (if true, throw exception if not valid)
Returns
true if valid; else false

Definition at line 171 of file JTDC_t.hh.

172 {
173 for (const_iterator i = this->begin(); i != this->end(); ++i) {
174
175 if (i->first < WILDCARD) {
176
177 if (option) {
178 THROW(JValueOutOfRange, "Invalid module identifier: " << i->first << " < " << WILDCARD);
179 }
180
181 return false;
182 }
183
184 if (i->second < 0 || i->second >= NUMBER_OF_PMTS) {
185
186 if (option) {
187 THROW(JValueOutOfRange, "Invalid TDC: " << i->second << " {0, .., " << NUMBER_OF_PMTS - 1 << "}");
188 }
189
190 return false;
191 }
192 }
193
194 return true;
195 }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.

Friends And Related Symbol Documentation

◆ operator>>

std::istream & operator>> ( std::istream & in,
JTDC_t & tdc )
friend

Read TDC constraints from input.

Parameters
ininput stream
tdcTDC constraints
Returns
input stream

Definition at line 205 of file JTDC_t.hh.

206 {
207 using namespace std;
208 using namespace JPP;
209
210 JStringStream is(in);
211
212 if (getFileStatus(is.str().c_str())) {
213 is.load();
214 }
215
216 is >> tdc.comment;
217
218 for (int id, pmt; is >> id >> pmt; ) {
219 tdc.insert(JTDC_t::value_type(id, pmt));
220 }
221
222 return in;
223 }
Wrapper class around STL stringstream class to facilitate optional loading of data from file.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).

◆ operator<<

std::ostream & operator<< ( std::ostream & out,
const JTDC_t & tdc )
friend

Write TDC constraints to output.

Parameters
outoutput stream
tdcTDC constraints
Returns
output stream

Definition at line 233 of file JTDC_t.hh.

234 {
235 using namespace std;
236
237 out << tdc.comment;
238
239 for (JTDC_t::const_iterator i = tdc.begin(); i != tdc.end(); ++i) {
240 out << setw(10) << i->first << ' ' << setw(2) << i->second << endl;
241 }
242
243 return out;
244 }

Member Data Documentation

◆ comment

JComment JCALIBRATE::JTDC_t::comment

Definition at line 246 of file JTDC_t.hh.


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