Jpp
JTriggerParametersSupportkit.hh
Go to the documentation of this file.
1 #ifndef __JSUPPORT__JTRIGGERPARAMETERSSUPPORTKIT__
2 #define __JSUPPORT__JTRIGGERPARAMETERSSUPPORTKIT__
3 
6 #include "JLang/JException.hh"
8 
9 
10 /**
11  * \author mdejong
12  */
13 
14 namespace JSUPPORT {}
15 namespace JPP { using namespace JSUPPORT; }
16 
17 namespace JSUPPORT {
18 
21  using JLANG::JException;
23 
24 
25  /**
26  * Template specialisation of JMultipleFileScanner for trigger parameters.
27  *
28  * This class re-implements the methods rewind and setObject of the JLANG::JRewindableAbstractObjectIterator interface
29  * so that all trigger parameter objects in the complete file list are read and checked for consistency.
30  */
31  template<>
33  public virtual JMultipleFileScanner<>,
34  public JRewindableAbstractObjectIterator<JTriggerParameters>
35  {
36  public:
37  /**
38  * Default constructor.
39  */
43  do_next(true)
44  {}
45 
46 
47  /**
48  * Copy constructor.
49  * The file list is copied.
50  *
51  * \param file_list JMultipleFileScanner
52  */
56  do_next(true)
57  {
58  configure(file_list, JLimit());
59  }
60 
61 
62  /**
63  * Rewind.
64  */
65  virtual void rewind()
66  {
67  do_next = true;
68  }
69 
70 
71  /**
72  * Set object.
73  *
74  * \param object reference to object to be set
75  * \return true if set; else false
76  */
77  virtual bool setObject(JTriggerParameters& object)
78  {
79  if (do_next) {
80 
81  using namespace JLANG;
82 
83  object = JTriggerParameters();
84  do_next = false;
85 
86  unsigned int count = 0;
87 
89 
90  for (const_iterator i = this->begin(); i != this->end(); ++i) {
91 
92  scanner.open(i->c_str());
93 
94  if (scanner.hasNext()) {
95 
96  const JTriggerParameters* __p = scanner.next();
97 
98  if (count == 0)
99  object = *__p;
100  else if (!object.equals(*__p))
101  throw JException("JMultipleFileScanner<JTriggerParameters>::setObject(): inconsistent trigger parameters.");
102 
103  ++count;
104  }
105 
106  scanner.close();
107  }
108 
109  return count != 0;
110 
111  } else {
112 
113  return false;
114  }
115  }
116 
117 
118  /**
119  * Get trigger parameters.
120  *
121  * \return trigger parameters
122  */
124  {
125  const JTriggerParameters* p = NULL;
126 
127  if (!this->hasNext() || (p = this->next()) == NULL) {
128  throw JNullPointerException("JMultipleFileScanner<JTriggerParameters>::getTriggerParameters(): Missing trigger parameters.");
129  }
130 
131  rewind();
132 
133  return *p;
134  }
135 
136 
137  private:
138  bool do_next;
139  };
140 
141 
142  /**
143  * Get trigger parameters.
144  *
145  * \param file_list file list
146  * \return trigger parameters
147  */
149  {
151  }
152 }
153 
154 #endif
JException.hh
JSUPPORT::getTriggerParameters
JTriggerParameters getTriggerParameters(const JMultipleFileScanner_t &file_list)
Get trigger parameters.
Definition: JTriggerParametersSupportkit.hh:148
JSUPPORT::JFileScanner
Object reading from file.
Definition: JFileScanner.hh:34
JTriggerParameters.hh
JSUPPORT::JLimit
Auxiliary class for defining the range of iterations of objects.
Definition: JLimit.hh:41
JSUPPORT::JMultipleFileScanner_t
Auxiliary base class for list of file names.
Definition: JMultipleFileScanner.hh:44
JTRIGGER::JTriggerParameters
Data structure for all trigger parameters.
Definition: JTriggerParameters.hh:116
JAbstractObjectIterator.hh
JLANG::JRewindableAbstractObjectIterator
Abstract object iterator with rewinding.
Definition: JAbstractObjectIterator.hh:92
JLANG::JNullPointerException
Exception for null pointer operation.
Definition: JException.hh:216
JMATH::equals
bool equals(const JFirst_t &first, const JSecond_t &second, const double precision=std::numeric_limits< double >::min())
Check equality.
Definition: JMathToolkit.hh:85
JSUPPORT::JMultipleFileScanner< JTriggerParameters >
Template specialisation of JMultipleFileScanner for trigger parameters.
Definition: JTriggerParametersSupportkit.hh:32
JPP
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JAAnetToolkit.hh:37
JSUPPORT::JMultipleFileScanner::next
virtual const pointer_type & next()
Get next element.
Definition: JMultipleFileScanner.hh:398
JSUPPORT::JMultipleFileScanner< JTriggerParameters >::JMultipleFileScanner
JMultipleFileScanner()
Default constructor.
Definition: JTriggerParametersSupportkit.hh:40
JSUPPORT::JMultipleFileScanner< JTriggerParameters >::JMultipleFileScanner
JMultipleFileScanner(const JMultipleFileScanner_t &file_list)
Copy constructor.
Definition: JTriggerParametersSupportkit.hh:53
JSUPPORT::JMultipleFileScanner< JTriggerParameters >::getTriggerParameters
const JTriggerParameters & getTriggerParameters()
Get trigger parameters.
Definition: JTriggerParametersSupportkit.hh:123
JMultipleFileScanner.hh
JSUPPORT::JMultipleFileScanner::hasNext
virtual bool hasNext()
Check availability of next element.
Definition: JMultipleFileScanner.hh:350
JSUPPORT::JMultipleFileScanner::rewind
virtual void rewind()
Rewind.
Definition: JMultipleFileScanner.hh:332
JSUPPORT::JMultipleFileScanner
General purpose class for object reading from a list of file names.
Definition: JMultipleFileScanner.hh:167
JSUPPORT::JMultipleFileScanner< JTriggerParameters >::setObject
virtual bool setObject(JTriggerParameters &object)
Set object.
Definition: JTriggerParametersSupportkit.hh:77
JSUPPORT
Support classes and methods for experiment specific I/O.
Definition: JDataWriter.cc:38
JLANG
Auxiliary classes and methods for language specific functionality.
Definition: JAbstractClass.hh:10
JSUPPORT::JMultipleFileScanner< JTriggerParameters >::do_next
bool do_next
Definition: JTriggerParametersSupportkit.hh:138
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
JSUPPORT::JMultipleFileScanner< JTriggerParameters >::rewind
virtual void rewind()
Rewind.
Definition: JTriggerParametersSupportkit.hh:65
JSUPPORT::JMultipleFileScanner::scanner
JFileScanner< T > scanner
Definition: JMultipleFileScanner.hh:427