GeoModel - GeoModelCore
GeoVolumeAction.h
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef GEOMODELKERNEL_GEOVOLUMEACTION_H
6 #define GEOMODELKERNEL_GEOVOLUMEACTION_H
7 
19 #include "GeoModelKernel/GeoTraversalState.h"
20 
22 {
23  public:
24  enum Type
25  { TOP_DOWN, BOTTOM_UP };
26 
27  public:
28  GeoVolumeAction (Type type = TOP_DOWN);
29  virtual ~GeoVolumeAction();
30 
31  // Callback method. Overriden by users.
32  virtual void handleVPhysVol (const GeoVPhysVol *);
33 
34  // Cause the action to terminate.
35  void terminate ();
36 
37  // Determine whether the action should terminate.
38  bool shouldTerminate () const;
39 
40  // Returns the traversal state. From this one can get
41  // placement information about the volume, even if it is a
42  // shared instance.
43  const GeoTraversalState* getState () const;
44 
45  // Returns the traversal state, as above. Non const type.
46  GeoTraversalState* getState ();
47 
48  // Returns the type: GeoVolumeAction::TOP_DOWN or GeoVolume
49  // Action::BOTTOM_UP.
50  GeoVolumeAction::Type getType () const;
51 
52  private:
53  GeoVolumeAction(const GeoVolumeAction &right);
54  GeoVolumeAction & operator=(const GeoVolumeAction &right);
55 
56  // This type specifies that the action should be carried
57  // out from the bottom up or from the top down.
58  Type m_type;
59 
60  // Termination flag; causes an abortion of action execution.
61  bool m_terminate;
62 
63  GeoTraversalState m_traversalState;
64 
65 };
66 
67 #endif
This type of action sees and traverses a simpler tree of positioned volumes. It does not descend into...
This incorporates a traversal state, including the following information: