DD4hep  1.30.0
Detector Description Toolkit for High Energy Physics
Geant4Action.h
Go to the documentation of this file.
1 //==========================================================================
2 // AIDA Detector description implementation
3 //--------------------------------------------------------------------------
4 // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
5 // All rights reserved.
6 //
7 // For the licensing terms see $DD4hepINSTALL/LICENSE.
8 // For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
9 //
10 // Author : M.Frank
11 //
12 //==========================================================================
13 
14 #ifndef DDG4_GEANT4ACTION_H
15 #define DDG4_GEANT4ACTION_H
16 
17 // Framework include files
18 #include <DD4hep/Printout.h>
20 #include <DDG4/Geant4Context.h>
21 #include <DDG4/Geant4Callback.h>
22 
23 // Geant4 forward declarations
24 class G4Run;
25 class G4Event;
26 class G4Step;
27 class G4Track;
28 class G4TrackStack;
29 class G4EventGenerator;
30 class G4VTrajectory;
31 class G4TrackingManager;
32 class G4UIdirectory;
33 
34 // C/C++ include files
35 #include <string>
36 #include <cstdarg>
37 
38 #if defined(G__ROOT) || defined(__CLING__) || defined(__ROOTCLING__)
39 #define DDG4_DEFINE_ACTION_DEFAULT_CTOR(action) public: action() = default;
40 #else
41 #define DDG4_DEFINE_ACTION_DEFAULT_CTOR(action) protected: action() = delete;
42 #endif
43 
49 #define DDG4_DEFINE_ACTION_CONSTRUCTORS(action) \
50  DDG4_DEFINE_ACTION_DEFAULT_CTOR(action) \
51  protected: \
52  action(action&& copy) = delete; \
53  action(const action& copy) = delete; \
54  action& operator=(action&& copy) = delete; \
55  action& operator=(const action& copy) = delete
56 
57 
59 namespace dd4hep {
60 
62  namespace sim {
63 
64  // Forward declarations
65  class Geant4UIMessenger;
66 
68  template <typename TO, typename FROM> TO fast_cast(FROM from) {
69 #ifdef USE_FASTCAST
70  return static_cast<TO>(from);
71 #else
72  return dynamic_cast<TO>(from);
73 #endif
74  }
75 
77 
82  class TypeName {
83  public:
84  std::string first;
85  std::string second;
87  TypeName() = default;
89  TypeName(const TypeName& copy) = default;
91  TypeName(const std::pair<std::string, std::string>& c)
92  : first(c.first), second(c.second) { }
94  TypeName(const std::string& typ, const std::string& nam)
95  : first(typ), second(nam) { }
97  TypeName& operator=(const TypeName& copy) = default;
99  static TypeName split(const std::string& type_name);
101  static TypeName split(const std::string& type_name, const std::string& delim);
102  };
103 
105 
113  class Geant4Action {
114  protected:
116  Geant4Context* m_context { nullptr };
119 
121  int m_outputLevel { 3 };
123  bool m_needsControl { false };
125  std::string m_name { };
129  long m_refCount { 1 };
130 
131  public:
133 
138  class ContextSwap {
140  Geant4Context* context { nullptr };
141  Geant4Action* action { nullptr };
142  public:
145  context = action->context();
146  action->updateContext(c);
147  }
151  }
152  };
153 
154  protected:
155 
157  struct FindByName {
158  std::string _n;
159  FindByName(const std::string& n) : _n(n) {}
160  bool operator()(const Geant4Action* a) { return a->name() == _n; }
161  };
163 
168  template <typename T> class Actors {
169  public:
170  typedef typename std::vector<T*> _V;
172  Actors() = default;
173  ~Actors() = default;
174  void clear() { m_v.clear(); }
175  void add(T* obj) { m_v.emplace_back(obj); }
176  void add_front(T* obj) { m_v.insert(m_v.begin(), obj); }
177  operator const _V&() const { return m_v; }
178  operator _V&() { return m_v; }
179  const _V* operator->() const { return &m_v; }
180  _V* operator->() { return &m_v; }
181  typename _V::iterator begin() { return m_v.begin(); }
182  typename _V::iterator end() { return m_v.end(); }
183  typename _V::const_iterator begin() const { return m_v.begin(); }
184  typename _V::const_iterator end() const { return m_v.end(); }
185 
188  (*this)(&T::updateContext,ctxt);
189  }
191  template <typename F> typename _V::value_type get(const F& f) const {
192  if (!m_v.empty()) {
193  typename _V::const_iterator i=std::find_if(m_v.begin(),m_v.end(),f);
194  return i==m_v.end() ? 0 : (*i);
195  }
196  return 0;
197  }
199  template <typename R, typename Q> void operator()(R (Q::*pmf)()) {
200  if ( !m_v.empty() )
201  for (const auto& o : m_v)
202  (o->*pmf)();
203  }
204  template <typename R, typename Q, typename A0> void operator()(R (Q::*pmf)(A0), A0 a0) {
205  if ( !m_v.empty() )
206  for (const auto& o : m_v)
207  (o->*pmf)(a0);
208  }
209  template <typename R, typename Q, typename A0, typename A1> void operator()(R (Q::*pmf)(A0, A1), A0 a0, A1 a1) {
210  if ( !m_v.empty() )
211  for (const auto& o : m_v)
212  (o->*pmf)(a0, a1);
213  }
215  template <typename R, typename Q> void operator()(R (Q::*pmf)() const) const {
216  if ( !m_v.empty() )
217  for (const auto& o : m_v)
218  (o->*pmf)();
219  }
220  template <typename R, typename Q, typename A0> void operator()(R (Q::*pmf)(A0) const, A0 a0) const {
221  if ( !m_v.empty() )
222  for (const auto& o : m_v)
223  (o->*pmf)(a0);
224  }
225  template <typename R, typename Q, typename A0, typename A1> void operator()(R (Q::*pmf)(A0, A1) const, A0 a0, A1 a1) const {
226  if ( !m_v.empty() )
227  for (const auto& o : m_v)
228  (o->*pmf)(a0, a1);
229  }
231  template <typename Q> bool filter(bool (Q::*pmf)() const) const {
232  if ( !m_v.empty() )
233  for (const auto& o : m_v)
234  if ( !(o->*pmf)() )
235  return false;
236  return true;
237  }
238  template <typename Q, typename A0> bool filter(bool (Q::*pmf)(A0) const, A0 a0) const {
239  if ( !m_v.empty() )
240  for (const auto& o : m_v)
241  if ( !(o->*pmf)(a0) )
242  return false;
243  return true;
244  }
245  template <typename Q, typename A0, typename A1> bool filter(bool (Q::*pmf)(A0, A1) const, A0 a0, A1 a1) const {
246  if ( !m_v.empty() )
247  for (const auto& o : m_v)
248  if ( !(o->*pmf)(a0,a1) )
249  return false;
250  return true;
251  }
252  };
253 
254  protected:
255 
258 
260  virtual ~Geant4Action();
261 
262  public:
264  Geant4Action(Geant4Context* context, const std::string& nam);
266  long addRef();
268  long release();
271  return m_context;
272  }
274  virtual void updateContext(Geant4Context* ctxt) {
275  m_context = ctxt;
276  }
278  virtual void configureFiber(Geant4Context* thread_context);
280  const std::string& name() const {
281  return m_name;
282  }
284  const char* c_name() const {
285  return m_name.c_str();
286  }
288  void setName(const std::string& new_name) {
289  m_name = new_name;
290  }
293  return m_properties;
294  }
296  PrintLevel outputLevel() const {
297  return (PrintLevel)m_outputLevel;
298  }
300  PrintLevel setOutputLevel(PrintLevel new_level);
302  Geant4UIMessenger* control() const;
304  virtual void enableUI();
306  template <typename T> Geant4Action& declareProperty(const std::string& nam, T& val);
308  template <typename T> Geant4Action& declareProperty(const char* nam, T& val);
310  bool hasProperty(const std::string& name) const;
312  Property& property(const std::string& name);
314  virtual void installMessengers();
316  virtual void installCommandMessenger();
318  virtual void installPropertyMessenger();
319 
321  void print(const char* fmt, ...) const;
323  void printM1(const char* fmt, ...) const;
325  void printM2(const char* fmt, ...) const;
327  void printP1(const char* fmt, ...) const;
329  void printP2(const char* fmt, ...) const;
330 
332  void always(const char* fmt, ...) const;
334  void debug(const char* fmt, ...) const;
336  void info(const char* fmt, ...) const;
338  void warning(const char* fmt, ...) const;
340  void error(const char* fmt, ...) const;
342  bool return_error(bool return_value, const char* fmt, ...) const;
344  void fatal(const char* fmt, ...) const;
346  void except(const char* fmt, ...) const;
347 
349  void abortRun(const std::string& exception, const char* fmt, ...) const;
350 
363  };
364 
366  template <typename T> Geant4Action& Geant4Action::declareProperty(const std::string& nam, T& val) {
367  m_properties.add(nam, val);
368  return *this;
369  }
370 
372  template <typename T> Geant4Action& Geant4Action::declareProperty(const char* nam, T& val) {
373  m_properties.add(nam, val);
374  return *this;
375  }
376  } // End namespace sim
377 } // End namespace dd4hep
378 
379 #endif // DDG4_GEANT4ACTION_H
dd4hep::sim::Geant4Action::Actors::end
_V::const_iterator end() const
Definition: Geant4Action.h:184
dd4hep::sim::Geant4Action::updateContext
virtual void updateContext(Geant4Context *ctxt)
Set or update client context.
Definition: Geant4Action.h:274
dd4hep::sim::Geant4Action::printP1
void printP1(const char *fmt,...) const
Support for messages with variable output level using output level+1.
Definition: Geant4Action.cpp:177
dd4hep::sim::Geant4Action::printP2
void printP2(const char *fmt,...) const
Support for messages with variable output level using output level+2.
Definition: Geant4Action.cpp:188
dd4hep::sim::Geant4Action::ContextSwap::action
Geant4Action * action
Definition: Geant4Action.h:141
dd4hep::sim::Geant4Action::Actors::operator()
void operator()(R(Q::*pmf)(A0, A1) const, A0 a0, A1 a1) const
Definition: Geant4Action.h:225
dd4hep::sim::Geant4Action::m_needsControl
bool m_needsControl
Default property: Flag to create control instance.
Definition: Geant4Action.h:123
dd4hep::sim::Geant4Action::Actors::filter
bool filter(bool(Q::*pmf)() const) const
CONST filters.
Definition: Geant4Action.h:231
dd4hep::Property
The property class to assign options to actions.
Definition: ComponentProperties.h:48
dd4hep::sim::Geant4Action::Geant4Action
Geant4Action(Geant4Context *context, const std::string &nam)
Standard constructor.
Definition: Geant4Action.cpp:54
dd4hep::sim::Geant4Action::control
Geant4UIMessenger * control() const
Access to the UI messenger.
Definition: Geant4Action.cpp:125
dd4hep::sim::Geant4StackingActionSequence
Concrete implementation of the Geant4 stacking action sequence.
Definition: Geant4StackingAction.h:128
dd4hep::sim::Geant4Action::installPropertyMessenger
virtual void installPropertyMessenger()
Install property control messenger if wanted.
Definition: Geant4Action.cpp:116
dd4hep::sim::Geant4Action::Actors::m_v
_V m_v
Definition: Geant4Action.h:171
dd4hep::sim::Geant4Action::configureFiber
virtual void configureFiber(Geant4Context *thread_context)
Set or update client for the use in a new thread fiber.
Definition: Geant4Action.cpp:140
dd4hep::sim::Geant4Action::setOutputLevel
PrintLevel setOutputLevel(PrintLevel new_level)
Set the output level; returns previous value.
Definition: Geant4Action.cpp:87
dd4hep::sim::Geant4Action::Actors::~Actors
~Actors()=default
dd4hep::exception
void exception(const std::string &src, const std::string &msg)
Definition: RootDictionary.h:69
dd4hep::sim::Geant4Action::generatorAction
Geant4GeneratorActionSequence & generatorAction() const
Access to the main generator action sequence from the kernel object.
Definition: Geant4Action.cpp:303
dd4hep::sim::Geant4Action::return_error
bool return_error(bool return_value, const char *fmt,...) const
Action to support error messages.
Definition: Geant4Action.cpp:239
dd4hep::sim::Geant4Action::FindByName
Functor to access elements by name.
Definition: Geant4Action.h:157
dd4hep::sim::Geant4Action::m_context
Geant4Context * m_context
Reference to the Geant4 context.
Definition: Geant4Action.h:116
dd4hep::sim::Geant4Action::Actors::filter
bool filter(bool(Q::*pmf)(A0) const, A0 a0) const
Definition: Geant4Action.h:238
dd4hep::sim::Geant4Action::Actors::add
void add(T *obj)
Definition: Geant4Action.h:175
dd4hep::sim::Geant4Action::property
Property & property(const std::string &name)
Access single property.
Definition: Geant4Action.cpp:99
dd4hep::sim::Geant4Action::abortRun
void abortRun(const std::string &exception, const char *fmt,...) const
Abort Geant4 Run by throwing a G4Exception with type RunMustBeAborted.
Definition: Geant4Action.cpp:266
dd4hep::sim::TypeName::second
std::string second
Definition: Geant4Action.h:85
dd4hep::sim::Geant4Action::m_name
std::string m_name
Action name.
Definition: Geant4Action.h:125
dd4hep::sim::Geant4Action::Actors::filter
bool filter(bool(Q::*pmf)(A0, A1) const, A0 a0, A1 a1) const
Definition: Geant4Action.h:245
dd4hep::sim::Geant4Action::m_outputLevel
int m_outputLevel
Default property: Output level.
Definition: Geant4Action.h:121
dd4hep::sim::Geant4Action::ContextSwap
Functor to update the context of a Geant4Action object.
Definition: Geant4Action.h:138
dd4hep::sim::TypeName::TypeName
TypeName(const std::string &typ, const std::string &nam)
Initializing constructor.
Definition: Geant4Action.h:94
dd4hep::sim::Geant4Action::warning
void warning(const char *fmt,...) const
Support of warning messages.
Definition: Geant4Action.cpp:223
dd4hep::sim::Geant4Action::m_properties
PropertyManager m_properties
Property pool.
Definition: Geant4Action.h:127
dd4hep::sim::Geant4Action::fatal
void fatal(const char *fmt,...) const
Support of fatal messages. Throws exception.
Definition: Geant4Action.cpp:248
dd4hep::sim::Geant4Action::FindByName::operator()
bool operator()(const Geant4Action *a)
Definition: Geant4Action.h:160
dd4hep::sim::Geant4TrackingActionSequence
Concrete implementation of the Geant4 tracking action sequence.
Definition: Geant4TrackingAction.h:114
dd4hep::sim::Geant4Action::info
void info(const char *fmt,...) const
Support of info messages.
Definition: Geant4Action.cpp:215
dd4hep::sim::Geant4Action::except
void except(const char *fmt,...) const
Support of exceptions: Print fatal message and throw runtime_error.
Definition: Geant4Action.cpp:256
dd4hep::sim::Geant4Action::Actors::updateContext
void updateContext(Geant4Context *ctxt)
Context updates.
Definition: Geant4Action.h:187
dd4hep::sim::Geant4Action::Actors::clear
void clear()
Definition: Geant4Action.h:174
dd4hep::sim::Geant4Action::eventAction
Geant4EventActionSequence & eventAction() const
Access to the main event action sequence from the kernel object.
Definition: Geant4Action.cpp:283
dd4hep::sim::Geant4GeneratorActionSequence
Concrete implementation of the Geant4 generator action sequence.
Definition: Geant4GeneratorAction.h:115
dd4hep::sim::Geant4Action::error
void error(const char *fmt,...) const
Support of error messages.
Definition: Geant4Action.cpp:231
dd4hep::sim::Geant4Action::Actors::operator()
void operator()(R(Q::*pmf)())
NON-CONST actions.
Definition: Geant4Action.h:199
dd4hep::sim::Geant4Action::m_refCount
long m_refCount
Reference count. Initial value: 1.
Definition: Geant4Action.h:129
dd4hep::sim::Geant4Action::Actors::Actors
Actors()=default
dd4hep::sim::fast_cast
TO fast_cast(FROM from)
Cast operator.
Definition: Geant4Action.h:68
ComponentProperties.h
dd4hep::sim::Geant4Action::Actors::end
_V::iterator end()
Definition: Geant4Action.h:182
dd4hep::sim::Geant4Action::ContextSwap::~ContextSwap
~ContextSwap()
Destructor.
Definition: Geant4Action.h:149
dd4hep::sim::Geant4Action::Actors::operator()
void operator()(R(Q::*pmf)(A0) const, A0 a0) const
Definition: Geant4Action.h:220
dd4hep::sim::Geant4Action::declareProperty
Geant4Action & declareProperty(const std::string &nam, T &val)
Declare property.
Definition: Geant4Action.h:366
dd4hep::sim::Geant4RunActionSequence
Concrete basic implementation of the Geant4 run action sequencer.
Definition: Geant4RunAction.h:117
dd4hep::sim::Geant4Action::printM1
void printM1(const char *fmt,...) const
Support for messages with variable output level using output level-1.
Definition: Geant4Action.cpp:155
dd4hep::sim::TypeName::first
std::string first
Definition: Geant4Action.h:84
dd4hep::sim::Geant4Action::Actors::operator()
void operator()(R(Q::*pmf)(A0, A1), A0 a0, A1 a1)
Definition: Geant4Action.h:209
dd4hep::sim::Geant4Action
Default base class for all Geant 4 actions and derivates thereof.
Definition: Geant4Action.h:113
dd4hep::sim::Geant4Action::release
long release()
Decrease reference count. Implicit destruction.
Definition: Geant4Action.cpp:76
dd4hep::sim::Geant4Action::DDG4_DEFINE_ACTION_CONSTRUCTORS
DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4Action)
Define standard assignments and constructors.
dd4hep::sim::Geant4Action::name
const std::string & name() const
Access name of the action.
Definition: Geant4Action.h:280
dd4hep::sim::TypeName::TypeName
TypeName(const std::pair< std::string, std::string > &c)
Copy constructor from pair.
Definition: Geant4Action.h:91
Geant4Callback.h
dd4hep::sim::Geant4Action::outputLevel
PrintLevel outputLevel() const
Access the output level.
Definition: Geant4Action.h:296
dd4hep::sim::TypeName::split
static TypeName split(const std::string &type_name)
Split string pair according to default delimiter ('/')
Definition: Geant4Action.cpp:40
dd4hep::sim::Geant4Action::Actors::add_front
void add_front(T *obj)
Definition: Geant4Action.h:176
dd4hep::sim::Geant4Action::print
void print(const char *fmt,...) const
Support for messages with variable output level using output level.
Definition: Geant4Action.cpp:144
dd4hep::sim::Geant4Action::Actors::begin
_V::const_iterator begin() const
Definition: Geant4Action.h:183
dd4hep::sim::Geant4Action::properties
PropertyManager & properties()
Access to the properties of the object.
Definition: Geant4Action.h:292
dd4hep::PropertyManager::add
void add(const std::string &name, const Property &property)
Add a new property.
Definition: ComponentProperties.cpp:154
dd4hep::sim::Geant4Action::runAction
Geant4RunActionSequence & runAction() const
Access to the main run action sequence from the kernel object.
Definition: Geant4Action.cpp:278
dd4hep::sim::Geant4Action::Actors::operator->
const _V * operator->() const
Definition: Geant4Action.h:179
dd4hep::sim::TypeName::operator=
TypeName & operator=(const TypeName &copy)=default
Assignment operator.
dd4hep::sim::Geant4Action::FindByName::_n
std::string _n
Definition: Geant4Action.h:158
dd4hep::sim::Geant4Action::setName
void setName(const std::string &new_name)
Set the object name.
Definition: Geant4Action.h:288
dd4hep::sim::Geant4Action::m_control
Geant4UIMessenger * m_control
Control directory of this action.
Definition: Geant4Action.h:118
dd4hep::sim::Geant4Action::addRef
long addRef()
Increase reference count.
Definition: Geant4Action.cpp:71
dd4hep::sim::Geant4Action::c_name
const char * c_name() const
Access name of the action.
Definition: Geant4Action.h:284
dd4hep::PropertyManager
Manager to ease the handling of groups of properties.
Definition: ComponentProperties.h:174
dd4hep::sim::Geant4Action::installCommandMessenger
virtual void installCommandMessenger()
Install command control messenger if wanted.
Definition: Geant4Action.cpp:121
dd4hep
Namespace for the AIDA detector description toolkit.
Definition: AlignmentsCalib.h:28
dd4hep::sim::Geant4Action::Actors::get
_V::value_type get(const F &f) const
Element access by name.
Definition: Geant4Action.h:191
dd4hep::sim::TypeName::TypeName
TypeName()=default
Default constructor.
dd4hep::sim::Geant4Action::debug
void debug(const char *fmt,...) const
Support of debug messages.
Definition: Geant4Action.cpp:207
dd4hep::sim::TypeName
Helper class to handle strings of the format "type/name".
Definition: Geant4Action.h:82
dd4hep::sim::Geant4Action::always
void always(const char *fmt,...) const
Support of always printed messages.
Definition: Geant4Action.cpp:199
dd4hep::sim::Geant4Action::Actors
Actor class to manipulate action groups.
Definition: Geant4Action.h:168
dd4hep::sim::TypeName::TypeName
TypeName(const TypeName &copy)=default
Copy constructor.
dd4hep::sim::Geant4EventActionSequence
Concrete implementation of the Geant4 event action sequence.
Definition: Geant4EventAction.h:124
dd4hep::sim::Geant4Action::ContextSwap::context
Geant4Context * context
reference to the context;
Definition: Geant4Action.h:140
dd4hep::sim::Geant4Action::Actors::_V
std::vector< T * > _V
Definition: Geant4Action.h:170
dd4hep::detail::tools::copy
void copy(Alignment from, Alignment to)
Copy alignment object from source object.
Definition: AlignmentTools.cpp:43
dd4hep::sim::Geant4Action::enableUI
virtual void enableUI()
Enable and install UI messenger.
Definition: Geant4Action.cpp:134
dd4hep::sim::Geant4Action::hasProperty
bool hasProperty(const std::string &name) const
Check property for existence.
Definition: Geant4Action.cpp:94
dd4hep::sim::Geant4Action::Actors::operator()
void operator()(R(Q::*pmf)() const) const
CONST actions.
Definition: Geant4Action.h:215
dd4hep::sim::Geant4Action::Actors::operator()
void operator()(R(Q::*pmf)(A0), A0 a0)
Definition: Geant4Action.h:204
dd4hep::sim::Geant4SteppingActionSequence
Concrete implementation of the Geant4 stepping action sequence.
Definition: Geant4SteppingAction.h:104
dd4hep::sim::Geant4Action::~Geant4Action
virtual ~Geant4Action()
Default destructor.
Definition: Geant4Action.cpp:66
dd4hep::sim::Geant4Action::stackingAction
Geant4StackingActionSequence & stackingAction() const
Access to the main stacking action sequence from the kernel object.
Definition: Geant4Action.cpp:298
dd4hep::sim::Geant4Action::installMessengers
virtual void installMessengers()
Install property control messenger if wanted.
Definition: Geant4Action.cpp:104
dd4hep::sim::Geant4Action::Actors::operator->
_V * operator->()
Definition: Geant4Action.h:180
Printout.h
Geant4Context.h
dd4hep::sim::Geant4Action::FindByName::FindByName
FindByName(const std::string &n)
Definition: Geant4Action.h:159
dd4hep::sim::Geant4UIMessenger
Generic implementation to export properties and actions to the Geant4 command prompt.
Definition: Geant4UIMessenger.h:35
dd4hep::sim::Geant4Action::printM2
void printM2(const char *fmt,...) const
Support for messages with variable output level using output level-2.
Definition: Geant4Action.cpp:166
dd4hep::sim::Geant4Action::steppingAction
Geant4SteppingActionSequence & steppingAction() const
Access to the main stepping action sequence from the kernel object.
Definition: Geant4Action.cpp:288
dd4hep::sim::Geant4Context
Generic context to extend user, run and event information.
Definition: Geant4Context.h:201
dd4hep::sim::Geant4Action::context
Geant4Context * context() const
Access the context.
Definition: Geant4Action.h:270
dd4hep::sim::Geant4Action::trackingAction
Geant4TrackingActionSequence & trackingAction() const
Access to the main tracking action sequence from the kernel object.
Definition: Geant4Action.cpp:293
dd4hep::sim::Geant4Action::ContextSwap::ContextSwap
ContextSwap(Geant4Action *a, Geant4Context *c)
Constructor.
Definition: Geant4Action.h:144
dd4hep::sim::Geant4Action::Actors::begin
_V::iterator begin()
Definition: Geant4Action.h:181