Jpp
JTriggeredFileScanner.hh
Go to the documentation of this file.
1 #ifndef __JTRIGGEREDFILESCANNER__
2 #define __JTRIGGEREDFILESCANNER__
3 
4 #include "JLang/JTypeList.hh"
5 #include "JLang/JNullType.hh"
6 #include "JLang/JMultiPointer.hh"
7 
8 #include "evt/Evt.hh"
9 #include "JDAQ/JDAQEvent.hh"
12 #include "JSupport/JTreeScanner.hh"
13 #include "JSupport/JSupport.hh"
14 
15 
16 /**
17  * \file
18  *
19  * Synchronously read DAQ events and Monte Carlo events (and optionally other events).
20  * \author mdejong
21  */
22 namespace JSUPPORT {}
23 namespace JPP { using namespace JSUPPORT; }
24 
25 namespace JSUPPORT {
26 
27  using JLANG::JTypeList;
28  using JLANG::JNullType;
31 
32 
33  /**
34  * Auxiliary class to synchronously read DAQ events and Monte Carlo events (and optionally other events).
35  * It is assumed that the TTree corresponding to the template argument and
36  * the TTree with KM3NETDAQ::JDAQEvent can be read in parallel.
37  */
38  template<class JTypelist_t = JNullType>
40  public JParallelFileScanner<JTypeList<JDAQEvent, JTypelist_t>, JMultipleFileScanner>
41  {
45 
46 
47  /**
48  * Default constructor.
49  */
51  base_class()
52  {}
53 
54 
55  /**
56  * Constructor.
57  *
58  * \param input input
59  * \param limit limit
60  */
61  JTriggeredFileScanner(const typename base_class::input_type& input, const JLimit& limit = JLimit())
62  {
63  this->configure(input, limit);
64  }
65 
66 
67  /**
68  * Check availability of next element.
69  *
70  * \return true if the iteration has more elements; else false
71  */
72  virtual bool hasNext()
73  {
74  bool has_next = base_class::hasNext();
75 
76  if (has_next && file_name != this->getFilename()) {
77 
78  in.configure(this->getFilename());
79 
80  file_name = this->getFilename();
81  }
82 
83  return has_next;
84  }
85 
86 
87  /**
88  * Get next element.
89  *
90  * \return multi-pointer to elements
91  */
92  virtual const multi_pointer_type& next()
93  {
94  static multi_pointer_type ps;
95 
97 
98  JDAQEvent* tev = __p;
99  Evt* event = in.getEntry(tev->getCounter());
100 
101  ps.reset(event, __p);
102 
103  return ps;
104  }
105 
106  protected:
108  std::string file_name;
109  };
110 }
111 
112 
113 #endif
KM3NETDAQ::JDAQEvent
DAQ Event.
Definition: JDAQEvent.hh:34
JSUPPORT::JTriggeredFileScanner::base_class
JParallelFileScanner< typelist, JMultipleFileScanner > base_class
Definition: JTriggeredFileScanner.hh:43
JSUPPORT::JLimit
Auxiliary class for defining the range of iterations of objects.
Definition: JLimit.hh:41
JLANG::JMultiPointer::reset
void reset(const JMultiPointer< JClass_t > &pointer)
Reset multi-pointer.
Definition: JMultiPointer.hh:52
JSUPPORT::JParallelFileScanner< JTypeList< JDAQEvent, JTypelist_t >, JMultipleFileScanner >::ps
multi_pointer_type ps
Definition: JParallelFileScanner.hh:72
KM3NETDAQ::JDAQTriggerCounter::getCounter
JTriggerCounter_t getCounter() const
Get trigger counter.
Definition: JDAQTriggerCounter.hh:98
JSUPPORT::JMultipleFileScanner< JTypeList< JDAQEvent, JTypelist_t > >::getFilename
const std::string & getFilename() const
Get current file name.
Definition: JMultipleFileScanner.hh:312
JLANG::JMultiPointer
General purpose class for multiple pointers.
Definition: JMultiPointer.hh:22
JSUPPORT::JTriggeredFileScanner::typelist
JTypeList< JDAQEvent, JTypelist_t > typelist
Definition: JTriggeredFileScanner.hh:42
JLANG::JNullType
Auxiliary class for no type definition.
Definition: JNullType.hh:19
JSUPPORT::JTriggeredFileScanner::JTriggeredFileScanner
JTriggeredFileScanner(const typename base_class::input_type &input, const JLimit &limit=JLimit())
Constructor.
Definition: JTriggeredFileScanner.hh:61
JSUPPORT::JTriggeredFileScanner::in
JTreeScanner< Evt > in
Definition: JTriggeredFileScanner.hh:107
JTreeScanner.hh
JSUPPORT::JTriggeredFileScanner::hasNext
virtual bool hasNext()
Check availability of next element.
Definition: JTriggeredFileScanner.hh:72
JSupport.hh
JPP
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JAAnetToolkit.hh:37
JSUPPORT::JTreeScanner< Evt >
JSUPPORT::JTriggeredFileScanner::next
virtual const multi_pointer_type & next()
Get next element.
Definition: JTriggeredFileScanner.hh:92
JParallelFileScanner.hh
JMultiPointer.hh
JMultipleFileScanner.hh
JLANG::JTypeList
Type list.
Definition: JTypeList.hh:22
JSUPPORT::JTriggeredFileScanner
Auxiliary class to synchronously read DAQ events and Monte Carlo events (and optionally other events)...
Definition: JTriggeredFileScanner.hh:39
JSUPPORT::JParallelFileScanner
General purpose class for parallel reading of objects from a single file or multiple files.
Definition: JParallelFileScanner.hh:31
JSUPPORT::JTriggeredFileScanner::multi_pointer_type
JMultiPointer< JTypeList< Evt, typelist > > multi_pointer_type
Definition: JTriggeredFileScanner.hh:44
JSUPPORT::JParallelFileScanner::next
virtual const multi_pointer_type & next()
Get next element.
Definition: JParallelFileScanner.hh:64
JSUPPORT
Support classes and methods for experiment specific I/O.
Definition: JDataWriter.cc:38
JSUPPORT::JTriggeredFileScanner::file_name
std::string file_name
Definition: JTriggeredFileScanner.hh:108
JTypeList.hh
JSUPPORT::JParallelFileScanner::input_type
JFileScanner_t< JNullType >::input_type input_type
Definition: JParallelFileScanner.hh:36
JNullType.hh
JDAQEvent.hh
JSUPPORT::JTriggeredFileScanner::JTriggeredFileScanner
JTriggeredFileScanner()
Default constructor.
Definition: JTriggeredFileScanner.hh:50
JTOOLS::configure
void configure(const T &value, const JAbstractCollection< JAbscissa_t > &bounds, JBool< false > option)
Configuration of value.
Definition: JToolsToolkit.hh:285