Jpp
JDetectorIntegration.hh
Go to the documentation of this file.
1 #ifndef __JDB__JDETECTORINTEGRATION__
2 #define __JDB__JDETECTORINTEGRATION__
3 
4 #include <istream>
5 #include <ostream>
6 #include <sstream>
7 #include <limits>
8 #include <vector>
9 #include <map>
10 
11 #include "JTools/JRange.hh"
12 #include "JDB/JDB.hh"
14 #include "JDB/JPBS.hh"
15 #include "JDB/JUPI.hh"
16 #include "JLang/JEquals.hh"
17 #include "JLang/JComparable.hh"
18 #include "JLang/JException.hh"
19 
20 #include "KM3NeTDBClient.h"
21 
22 
23 /**
24  * \author mdejong
25  */
26 namespace JDATABASE {}
27 namespace JPP { using namespace JDATABASE; }
28 
29 namespace JDATABASE {
30 
32  using JLANG::JException;
33 
34 
35  /**
36  * Auxiliary class for integration date.
37  *
38  * The corresponding ASCII format is "yyyy/mm/dd".
39  */
40  struct JDate_t :
41  public JLANG::JComparable<JDate_t>
42  {
43  /**
44  * Separation character.
45  */
46  static const char SEPARATOR = '/';
47 
48 
49  /**
50  * Default constructor.
51  */
52  JDate_t() :
53  year (0),
54  month(0),
55  day (0)
56  {}
57 
58 
59  /**
60  * Constructor.
61  *
62  * \param year year
63  * \param month month
64  * \param day day
65  */
66  JDate_t(const int year,
67  const int month,
68  const int day) :
69  year (year),
70  month(month),
71  day (day)
72  {}
73 
74 
75  static JDate_t min() { return JDate_t(-std::numeric_limits<int>::max(), 1, 1); } //!< Minimal date
76  static JDate_t max() { return JDate_t(+std::numeric_limits<int>::max(), 12, 31); } //!< Maximal date
77 
78 
79  /**
80  * Less-than method.
81  *
82  * \param date date
83  * \return true if this date earlier than given date; else false
84  */
85  bool less(const JDate_t& date) const
86  {
87  if (this->year == date.year) {
88 
89  if (this->month == date.month)
90  return this->day < date.day;
91  else
92  return this->month < date.month;
93 
94  } else {
95 
96  return this->year < date.year;
97  }
98  }
99 
100 
101  /**
102  * Read date from input stream.
103  *
104  * \param in input stream
105  * \param object date
106  * \return input stream
107  */
108  friend inline std::istream& operator>>(std::istream& in, JDate_t& object)
109  {
110  using namespace std;
111 
112  object = JDate_t();
113 
114  string buffer;
115 
116  if (in >> buffer) {
117 
118  for (string::iterator i = buffer.begin(); i != buffer.end(); ++i) {
119  if (*i == JDate_t::SEPARATOR) {
120  *i = ' ';
121  }
122  }
123 
124  istringstream is(buffer);
125 
126  is >> object.year >> object.month >> object.day;
127 
128  in.setstate(is.rdstate());
129  }
130 
131  return in;
132  }
133 
134 
135  /**
136  * Write date to output stream.
137  *
138  * \param out output stream
139  * \param object date
140  * \return output stream
141  */
142  friend inline std::ostream& operator<<(std::ostream& out, const JDate_t& object)
143  {
144  return out << object.year << JDate_t::SEPARATOR
145  << object.month << JDate_t::SEPARATOR
146  << object.day;
147  }
148 
149 
150  int year; //!< year
151  int month; //!< month
152  int day; //!< year
153  };
154 
155 
156  /**
157  * Type definition of period.
158  */
160 
161 
162  /**
163  * Write period to output stream.
164  *
165  * \param out output stream
166  * \param object period
167  * \return output stream
168  */
169  inline std::ostream& operator<<(std::ostream& out, const JPeriod_t& object)
170  {
171  return out << "(" << object.getLowerLimit() << "," << object.getUpperLimit() << ")";
172  }
173 
174 
175  /**
176  * Auxiliary class for product integration data.
177  *
178  * This class is primarily used to
179  * - convert the string data from JDATABASE::JProductIntegration to corresponding data structures;
180  * - implement efficient (in)equality operations;
181  */
183  /**
184  * Default constructor.
185  */
187  status(false)
188  {}
189 
190 
191  /**
192  * Constructor.
193  *
194  * \param input product integration data
195  */
197  status(false)
198  {
199  using namespace std;
200 
201  this->operation = input.OPERATIONID;
202  this->position = input.POSITION;
203 
204  istringstream(input.CONTAINER_UPI) >> this->container;
205  istringstream(input.CONTENT_UPI) >> this->content;
206  istringstream(input.STARTD) >> this->start_date;
207  istringstream(input.ENDD) >> this->end_date;
208  }
209 
210 
211  /**
212  * Has status.
213  */
214  bool has() const
215  {
216  return status;
217  }
218 
219 
220  /**
221  * Set status.
222  */
223  void set()
224  {
225  status = true;
226  }
227 
228 
229  /**
230  * Unset status.
231  */
232  void unset()
233  {
234  status = false;
235  }
236 
237 
238  /**
239  * Check whether there is an overlap between products.
240  *
241  * The overlap is evaluated based on container UPI and position.
242  *
243  * \param product product
244  * \return true if this product overlaps with given product; else false
245  */
246  bool overlap(const JProductIntegration_t& product) const
247  {
248  return (this->container == product.container &&
249  this->position == product.position);
250  }
251 
252 
253  /**
254  * Write product integration to output stream.
255  *
256  * \param out output stream
257  * \param object product integration
258  * \return output stream
259  */
260  friend inline std::ostream& operator<<(std::ostream& out, const JProductIntegration_t& object)
261  {
262  using namespace std;
263 
264  out << object.operation << ' '
265  << object.container.getUPI() << ' '
266  << object.content .getUPI() << ' '
267  << object.position << ' '
268  << object.start_date << ' '
269  << object.end_date;
270 
271  return out;
272  }
273 
274 
275  std::string operation;
276  int position;
281  bool status;
282  };
283 
284 
285  /**
286  * Detector integration.
287  *
288  * This class is used
289  * - to read product integration data from the data base;
290  * - to organise detector specific integration data in memory;
291  * - to efficiently %trace a product;
292  * - to efficiently %find product(s);
293  */
295  {
296  static const char* const getName() { return JProductIntegration::getName(); } //!< Table name
297 
298 
300  typedef std::pair<map_type::const_iterator,
301  map_type::const_iterator> range_type;
302  typedef map_type::const_iterator range_const_iterator;
303  typedef map_type::const_iterator range_iterator;
304 
306  typedef data_type::const_iterator const_iterator;
307  typedef data_type::iterator iterator;
308  typedef data_type::const_reverse_iterator const_reverse_iterator;
309  typedef data_type::reverse_iterator reverse_iterator;
310 
311 
312  /**
313  * Default constructor.
314  */
316  {}
317 
318 
319  const_iterator begin() const { return data.begin(); } //!< begin of integration data
320  const_iterator end() const { return data.end(); } //!< end of integration data
321  const_reverse_iterator rbegin() const { return data.rbegin(); } //!< reverse begin of integration data
322  const_reverse_iterator rend() const { return data.rend(); } //!< reverse end of integration data
323 
324  bool empty() const { return data.empty(); } //!< check emptyness of integration data
325  size_t size() const { return data.size(); } //!< size of integration data
326 
327 
328  /**
329  * Get product at given index.
330  *
331  * \param index index
332  * \return product
333  */
334  const JProductIntegration_t& operator[](const int index) const
335  {
336  return data[index];
337  }
338 
339 
340  /**
341  * Configure detector integration for given detector identifier.
342  *
343  * The components of the given detector are selected based on the following rules:
344  * -# the component should have a start date before that of the given detector;
345  * -# if multiple components appear at the same place in the same container,
346  * the one with the latest start date is taken.
347  *
348  * \param detid detector identifier
349  */
350  void configure(const std::string& detid)
351  {
352  using namespace std;
353 
354  up .clear();
355  down.clear();
356 
357  for (size_t index = 0; index != data.size(); ++index) {
358 
359  JProductIntegration_t& product = data[index];
360 
361  product.unset();
362 
363  up .insert(make_pair(product.content .getUPI(), index));
364  down.insert(make_pair(product.container.getUPI(), index));
365  }
366 
367 
368  for (data_type::iterator product = data.begin(); product != data.end(); ++product) {
369  if (product->operation == detid) {
370  configure(*product, JPeriod_t(product->start_date, product->end_date));
371  }
372  }
373 
374 
375  up .clear();
376  down.clear();
377 
378  for (size_t index = 0; index != data.size(); ++index) {
379 
380  const JProductIntegration_t& product = data[index];
381 
382  if (product.has()) {
383  up .insert(make_pair(product.content .getUPI(), index));
384  down.insert(make_pair(product.container.getUPI(), index));
385  }
386  }
387  }
388 
389 
390  /**
391  * Trace product up to given integration level.
392  *
393  * \param upi %UPI
394  * \param pbs %PBS
395  * \return product
396  */
397  const JProductIntegration_t& trace(const JUPI& upi,
398  const JPBS& pbs = PBS::DETECTOR) const
399  {
400  if (upi.getPBS() >= pbs) {
401 
402  const int index = find(upi);
403 
404  if (index != -1) {
405 
406  const JProductIntegration_t& product = data[index];
407 
408  if (product.container.getPBS() == pbs)
409  return product;
410  else
411  return trace(product.container.getUPI(), pbs);
412 
413  } else {
414 
415  THROW(JDatabaseException, "Invalid UPI " << upi);
416  }
417 
418  } else {
419 
420  THROW(JDatabaseException, "Invalid PBS " << upi.getPBS() << " < " << pbs);
421  }
422  }
423 
424 
425  /**
426  * Print product trace.
427  *
428  * \param out output stream
429  * \param upi %UPI
430  */
431  void print(std::ostream& out, const JUPI& upi) const
432  {
433  using namespace std;
434 
435  const int index = find(upi);
436 
437  if (index != -1) {
438 
439  out << upi << " -> ";
440 
441  print(out, data[index]);
442  }
443 
444  const range_type range = down.equal_range(upi);
445 
446  for (range_iterator i = range.first; i != range.second; ++i) {
447  out << "<- " << data[i->second] << endl;
448  }
449  }
450 
451 
452  /**
453  * Print product trace.
454  *
455  * \param out output stream
456  * \param product product
457  */
458  void print(std::ostream& out, const JProductIntegration_t& product) const
459  {
460  out << product.container.getUPI() << ' '
461  << JPeriod_t(product.start_date, product.end_date) << ' '
462  << " -> ";
463 
464  const int index = find(product.container.getUPI());
465 
466  if (index != -1)
467  print(out, data[index]);
468  else
469  out << product.operation << std::endl;
470  }
471 
472 
473  /**
474  * Read detector integration from result set.
475  *
476  * \param rs result set
477  * \param detector detector
478  * \return true if read; else false
479  */
480  friend inline bool operator>>(ResultSet& rs, JDetectorIntegration& detector)
481  {
482  for (JProductIntegration parameters; rs >> parameters; ) {
483 
484  const JProductIntegration_t product(parameters);
485 
486  detector.up .insert(make_pair(product.content .getUPI(), detector.data.size()));
487  detector.down.insert(make_pair(product.container.getUPI(), detector.data.size()));
488 
489  detector.data.push_back(product);
490  }
491 
492  rs.Close();
493 
494  return true;
495  }
496 
497 
498  /**
499  * Write detector integration to output stream.
500  *
501  * \param out output stream
502  * \param object detector integration
503  * \return output stream
504  */
505  friend inline std::ostream& operator<<(std::ostream& out, const JDetectorIntegration& object)
506  {
507  for (const_iterator i = object.data.begin(); i != object.data.end(); ++i) {
508  out << *i << std::endl;
509  }
510 
511  return out;
512  }
513 
514 
515  /**
516  * Find index of unique product with given %UPI.\n
517  * This method can only be used after method JDetectorIntegration::configure.
518  *
519  * \param upi %UPI
520  * \return index
521  */
522  int find(const JUPI& upi) const
523  {
524  const range_type range = up.equal_range(upi);
525 
526  switch (std::distance(range.first, range.second)) {
527 
528  case 0:
529  return -1;
530 
531  case 1:
532  return range.first->second;
533 
534  default:
535  THROW(JDatabaseException, "Ambiguous integration of UPI (call first method JDetectorIntegration::configure) " << upi);
536  }
537  }
538 
539 
540  /**
541  * Find range of products with given %PBS.\n
542  * The returned range correspond to the usual begin and end iterators,
543  * each pointing to an STL pair consisting of a %UPI and index.
544  *
545  * \param pbs %PBS
546  * \return range
547  */
548  range_type find(const JPBS& pbs) const
549  {
550  range_const_iterator p = up.lower_bound(JUPI(pbs));
551  range_const_iterator q = p;
552 
553  while (q != up.end() && data[q->second].content.getPBS() <= pbs) {
554  ++q;
555  }
556 
557  return range_type(p,q);
558  }
559 
560  protected:
561  /**
562  * Configure detector integration for given detector identifier.\n
563  * This method sets the status all related products.
564  *
565  * \param product product
566  * \param period validity period
567  */
568  void configure(JProductIntegration_t& product, const JPeriod_t& period)
569  {
570  using namespace std;
571 
572  product.set();
573 
574  vector<int> buffer;
575 
576  range_type range = down.equal_range(product.content);
577 
578  for (range_iterator i = range.first; i != range.second; ++i) {
579 
580  if (data[i->second].start_date <= period.getLowerLimit()) {
581 
582  int ns = 0;
583 
584  for (vector<int>::iterator p = buffer.begin(); p != buffer.end(); ++p) {
585 
586  if (data[*p].overlap(data[i->second])) {
587 
588  ++ns;
589 
590  if (data[i->second].start_date > data[*p].start_date) {
591  *p = i->second;
592  }
593  }
594  }
595 
596  if (ns == 0) {
597  buffer.push_back(i->second);
598  }
599  }
600  }
601 
602  for (vector<int>::const_iterator i = buffer.begin(); i != buffer.end(); ++i) {
603  configure(data[*i], period);
604  }
605  }
606 
607 
608  data_type data; //!< integration data
609  map_type up; //!< up link %UPI to integration data
610  map_type down; //!< down link %UPI to integration data
611  };
612 
613 
614  /**
615  * Auxiliary class to trace product.
616  */
617  struct JProductTrace :
618  std::vector<JProductIntegration_t>
619  {
620  /**
621  * Constructor.
622  *
623  * \param detector detector
624  * \param upi %UPI
625  * \param pbs %PBS
626  */
628  const JUPI& upi,
629  const std::vector<JPBS>& pbs)
630  {
631  JUPI __upi__ = upi;
632 
633  for (std::vector<JPBS>::const_iterator i = pbs.begin(); i != pbs.end(); ++i) {
634 
635  try {
636 
637  const JProductIntegration_t& product = detector.trace(__upi__, *i);
638 
639  push_back(product);
640 
641  __upi__ = product.container.getUPI();
642  }
643  catch(std::exception& error) {
644  break;
645  }
646  }
647  }
648  };
649 }
650 
651 #endif
JException.hh
JDATABASE::JDate_t::operator<<
friend std::ostream & operator<<(std::ostream &out, const JDate_t &object)
Write date to output stream.
Definition: JDetectorIntegration.hh:142
JDATABASE::JDetectorIntegration::range_iterator
map_type::const_iterator range_iterator
Definition: JDetectorIntegration.hh:303
JDATABASE::JDate_t::year
int year
year
Definition: JDetectorIntegration.hh:150
JLANG::JDatabaseException
Database exception.
Definition: JException.hh:648
JTOOLS::JRange::getLowerLimit
T getLowerLimit() const
Get lower limit.
Definition: JRange.hh:215
JDATABASE::JProductIntegration::STARTD
std::string STARTD
Definition: JProductIntegration.hh:27
JDATABASE::JProductIntegration_t::has
bool has() const
Has status.
Definition: JDetectorIntegration.hh:214
JDATABASE::JDetectorIntegration::operator>>
friend bool operator>>(ResultSet &rs, JDetectorIntegration &detector)
Read detector integration from result set.
Definition: JDetectorIntegration.hh:480
JDATABASE::JDate_t::less
bool less(const JDate_t &date) const
Less-than method.
Definition: JDetectorIntegration.hh:85
JDATABASE::JDetectorIntegration::end
const_iterator end() const
end of integration data
Definition: JDetectorIntegration.hh:320
JDATABASE::JProductIntegration::CONTENT_UPI
std::string CONTENT_UPI
Definition: JProductIntegration.hh:31
JDATABASE::JDetectorIntegration::range_type
std::pair< map_type::const_iterator, map_type::const_iterator > range_type
Definition: JDetectorIntegration.hh:301
JDATABASE::JProductIntegration_t::JProductIntegration_t
JProductIntegration_t(const JProductIntegration &input)
Constructor.
Definition: JDetectorIntegration.hh:196
JDATABASE::JProductIntegration::POSITION
int POSITION
Definition: JProductIntegration.hh:30
JDATABASE::JProductIntegration_t::operation
std::string operation
Definition: JDetectorIntegration.hh:275
JDATABASE::JDetectorIntegration::print
void print(std::ostream &out, const JProductIntegration_t &product) const
Print product trace.
Definition: JDetectorIntegration.hh:458
JProductIntegration.hh
JDATABASE::JProductIntegration_t::position
int position
Definition: JDetectorIntegration.hh:276
JDATABASE::JDetectorIntegration::find
int find(const JUPI &upi) const
Find index of unique product with given UPI.
Definition: JDetectorIntegration.hh:522
JDATABASE::JDetectorIntegration::rbegin
const_reverse_iterator rbegin() const
reverse begin of integration data
Definition: JDetectorIntegration.hh:321
JDATABASE::JProductTrace::JProductTrace
JProductTrace(const JDetectorIntegration &detector, const JUPI &upi, const std::vector< JPBS > &pbs)
Constructor.
Definition: JDetectorIntegration.hh:627
JDATABASE::JDetectorIntegration::empty
bool empty() const
check emptyness of integration data
Definition: JDetectorIntegration.hh:324
JDATABASE::JDate_t::JDate_t
JDate_t()
Default constructor.
Definition: JDetectorIntegration.hh:52
JDATABASE::JProductIntegration_t::unset
void unset()
Unset status.
Definition: JDetectorIntegration.hh:232
std::vector< JProductIntegration_t >
JTOOLS::JRange
Range of values.
Definition: JRange.hh:34
JDATABASE::JDate_t::max
static JDate_t max()
Maximal date.
Definition: JDetectorIntegration.hh:76
JDATABASE::JProductIntegration::CONTAINER_UPI
std::string CONTAINER_UPI
Definition: JProductIntegration.hh:29
JDATABASE::JProductIntegration_t::JProductIntegration_t
JProductIntegration_t()
Default constructor.
Definition: JDetectorIntegration.hh:186
distance
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
Definition: PhysicsEvent.hh:434
JDATABASE::JDetectorIntegration::JDetectorIntegration
JDetectorIntegration()
Default constructor.
Definition: JDetectorIntegration.hh:315
JDATABASE::JDetectorIntegration::rend
const_reverse_iterator rend() const
reverse end of integration data
Definition: JDetectorIntegration.hh:322
JDATABASE::JDate_t::SEPARATOR
static const char SEPARATOR
Separation character.
Definition: JDetectorIntegration.hh:46
JPBS.hh
JDATABASE::JProductIntegration_t::operator<<
friend std::ostream & operator<<(std::ostream &out, const JProductIntegration_t &object)
Write product integration to output stream.
Definition: JDetectorIntegration.hh:260
JEquals.hh
JDATABASE::JProductIntegration_t::container
JUPI container
Definition: JDetectorIntegration.hh:277
JDATABASE::JProductIntegration::OPERATIONID
std::string OPERATIONID
Definition: JProductIntegration.hh:22
JDATABASE::JDate_t::day
int day
year
Definition: JDetectorIntegration.hh:152
JDATABASE
Auxiliary classes and methods for database I/O.
Definition: JAHRS.hh:12
JTOOLS::overlap
bool overlap(const JRange< T, JComparator_t > &first, const JRange< T, JComparator_t > &second)
Test overlap between ranges.
Definition: JRange.hh:653
JDATABASE::JDetectorIntegration::print
void print(std::ostream &out, const JUPI &upi) const
Print product trace.
Definition: JDetectorIntegration.hh:431
JPP
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JAAnetToolkit.hh:37
JDATABASE::JDetectorIntegration::begin
const_iterator begin() const
begin of integration data
Definition: JDetectorIntegration.hh:319
JDB.hh
JDATABASE::JProductIntegration_t::overlap
bool overlap(const JProductIntegration_t &product) const
Check whether there is an overlap between products.
Definition: JDetectorIntegration.hh:246
JRange.hh
JDATABASE::JDetectorIntegration::data
data_type data
integration data
Definition: JDetectorIntegration.hh:608
JComparable.hh
JDATABASE::JProductIntegration_t::content
JUPI content
Definition: JDetectorIntegration.hh:278
JDATABASE::JDetectorIntegration::trace
const JProductIntegration_t & trace(const JUPI &upi, const JPBS &pbs=PBS::DETECTOR) const
Trace product up to given integration level.
Definition: JDetectorIntegration.hh:397
JDATABASE::JDetectorIntegration::operator<<
friend std::ostream & operator<<(std::ostream &out, const JDetectorIntegration &object)
Write detector integration to output stream.
Definition: JDetectorIntegration.hh:505
JDATABASE::JDetectorIntegration::const_iterator
data_type::const_iterator const_iterator
Definition: JDetectorIntegration.hh:306
JDATABASE::JDetectorIntegration::range_const_iterator
map_type::const_iterator range_const_iterator
Definition: JDetectorIntegration.hh:302
JDATABASE::JDetectorIntegration::configure
void configure(JProductIntegration_t &product, const JPeriod_t &period)
Configure detector integration for given detector identifier.
Definition: JDetectorIntegration.hh:568
JDATABASE::JProductIntegration_t::set
void set()
Set status.
Definition: JDetectorIntegration.hh:223
THROW
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:669
JDATABASE::JDetectorIntegration::const_reverse_iterator
data_type::const_reverse_iterator const_reverse_iterator
Definition: JDetectorIntegration.hh:308
JDATABASE::JUPI::getUPI
const JUPI & getUPI() const
Get UPI.
Definition: JUPI.hh:68
JDATABASE::JDetectorIntegration::map_type
std::multimap< JUPI, int > map_type
Definition: JDetectorIntegration.hh:299
std::pair
Definition: JSTDTypes.hh:15
JDATABASE::JDetectorIntegration::up
map_type up
up link UPI to integration data
Definition: JDetectorIntegration.hh:609
JDATABASE::JPeriod_t
JTOOLS::JRange< JDate_t > JPeriod_t
Type definition of period.
Definition: JDetectorIntegration.hh:159
JDATABASE::JDetectorIntegration::reverse_iterator
data_type::reverse_iterator reverse_iterator
Definition: JDetectorIntegration.hh:309
JDATABASE::JProductIntegration::ENDD
std::string ENDD
Definition: JProductIntegration.hh:28
JDATABASE::JProductTrace
Auxiliary class to trace product.
Definition: JDetectorIntegration.hh:617
JDATABASE::JDate_t::month
int month
month
Definition: JDetectorIntegration.hh:151
std::multimap< JUPI, int >
JDATABASE::JDetectorIntegration::getName
static const char *const getName()
Table name.
Definition: JDetectorIntegration.hh:296
JDATABASE::JPBS
Product breakdown structure (PBS).
Definition: JPBS.hh:27
JLANG::JComparable
Template definition of auxiliary base class for comparison of data structures.
Definition: JComparable.hh:24
JDATABASE::JProductIntegration::getName
static const char *const getName()
Table name.
Definition: JProductIntegration.hh:20
JDATABASE::JDetectorIntegration::configure
void configure(const std::string &detid)
Configure detector integration for given detector identifier.
Definition: JDetectorIntegration.hh:350
JDATABASE::JDetectorIntegration::data_type
std::vector< JProductIntegration_t > data_type
Definition: JDetectorIntegration.hh:305
JDATABASE::JDetectorIntegration
Detector integration.
Definition: JDetectorIntegration.hh:294
JDATABASE::JDate_t
Auxiliary class for integration date.
Definition: JDetectorIntegration.hh:40
JDATABASE::JDate_t::JDate_t
JDate_t(const int year, const int month, const int day)
Constructor.
Definition: JDetectorIntegration.hh:66
JDATABASE::JDate_t::min
static JDate_t min()
Minimal date.
Definition: JDetectorIntegration.hh:75
JDATABASE::PBS::DETECTOR
static const JPBS DETECTOR(0)
Fixed PBS.
std
Definition: jaanetDictionary.h:36
JDATABASE::JDetectorIntegration::find
range_type find(const JPBS &pbs) const
Find range of products with given PBS.
Definition: JDetectorIntegration.hh:548
content
char * content
Definition: elog.cc:330
JDATABASE::JDetectorIntegration::size
size_t size() const
size of integration data
Definition: JDetectorIntegration.hh:325
JUPI.hh
JDATABASE::JProductIntegration_t::end_date
JDate_t end_date
Definition: JDetectorIntegration.hh:280
JDATABASE::JDetectorIntegration::iterator
data_type::iterator iterator
Definition: JDetectorIntegration.hh:307
JDATABASE::JDetectorIntegration::down
map_type down
down link UPI to integration data
Definition: JDetectorIntegration.hh:610
print
void print(const TH1 &h1, std::ostream &out)
Print histogram parameters.
Definition: JTriggerMonitor.cc:38
JDATABASE::JProductIntegration_t::start_date
JDate_t start_date
Definition: JDetectorIntegration.hh:279
JDATABASE::JPBS::getPBS
const JPBS & getPBS() const
Get PBS.
Definition: JPBS.hh:106
JDATABASE::JProductIntegration
Definition: JProductIntegration.hh:17
JDATABASE::JDetectorIntegration::operator[]
const JProductIntegration_t & operator[](const int index) const
Get product at given index.
Definition: JDetectorIntegration.hh:334
JDATABASE::JDate_t::operator>>
friend std::istream & operator>>(std::istream &in, JDate_t &object)
Read date from input stream.
Definition: JDetectorIntegration.hh:108
JTOOLS::configure
void configure(const T &value, const JAbstractCollection< JAbscissa_t > &bounds, JBool< false > option)
Configuration of value.
Definition: JToolsToolkit.hh:285
JLANG::JException
General exception.
Definition: JException.hh:40
JDATABASE::JUPI
Universal product identifier (UPI).
Definition: JUPI.hh:29
JDATABASE::JProductIntegration_t::status
bool status
Definition: JDetectorIntegration.hh:281
JDATABASE::JProductIntegration_t
Auxiliary class for product integration data.
Definition: JDetectorIntegration.hh:182