AuxDetReadoutGeometry.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 /// \file AuxDetReadoutGeometry.h
3 /// \brief Define the "parallel" geometry that's seen by the AuxDet.
4 /// \author miceli@fnal.gov, talion@fnal.gov
5 ////////////////////////////////////////////////////////////////////////
6 ///
7 /// This class defines the parallel geometry that will be divided into
8 /// the three-dimensional voxels for the detector read-out.
9 ///
10 /// Why define a parallel geometry? Here are some reasons:
11 ///
12 /// - The regular LAr TPC is one large volume of liquid argon. When
13 /// Geant4 does its physics modeling, it can be unconstrained in
14 /// step size by the voxels. Only for readout would the steps be
15 /// sub-divided.
16 ///
17 /// - There may be more than one kind of readout, depending on a
18 /// detector's instrumentation (e.g., OpDets in addition to the wire
19 /// planes). It's possible that the voxelization appropriate for
20 /// the wire planes may not be an appropriate readout for the other
21 /// readouts. Geant4 allows the construction of multiple parallel
22 /// readouts, so this mechanism is relatively easy to extend for
23 /// each type of readout.
24 
25 #ifndef LArG4_AuxDetReadoutGeometry_h
26 #define LArG4_AuxDetReadoutGeometry_h
27 
29 
31 #include "Geant4/G4VUserParallelWorld.hh"
32 #include "Geant4/G4String.hh"
33 #include "Geant4/G4Transform3D.hh"
34 
35 class G4VPhysicalVolume;
36 
37 namespace larg4 {
38 
39  class AuxDetReadoutGeometry : public G4VUserParallelWorld
40  {
41  public:
42  /// Constructor and destructor.
43  AuxDetReadoutGeometry( const G4String name = "AuxDetReadoutGeometry" );
44  virtual ~AuxDetReadoutGeometry();
45 
46  /// The key method in this class; creates a parallel world view of
47  /// those volumes relevant to the auxiliary detector readout.
48  /// Required of any class that inherits from G4VUserParallelWorld
49  virtual void Construct();
50 
51  private:
52 
53  void FindAndMakeAuxDet(std::vector<const G4VPhysicalVolume*>& path,
54  unsigned int depth,
55  G4Transform3D DepthToWorld);
56 
57  void FindAndMakeAuxDetSensitive(std::vector<const G4VPhysicalVolume*>& path,
58  unsigned int depth,
59  G4Transform3D DepthToWorld);
60 
61  art::ServiceHandle<geo::Geometry const> fGeo; ///< Handle to the geometry
62  uint32_t fNumSensitiveVol; ///< number of sensitive volumes
63 
64  };
65 
66 } // namespace larg4
67 
68 #endif // LArG4_AuxDetReadoutGeometry_h
static QCString name
Definition: declinfo.cpp:673
Geant4 interface.
void FindAndMakeAuxDet(std::vector< const G4VPhysicalVolume * > &path, unsigned int depth, G4Transform3D DepthToWorld)
art framework interface to geometry description
uint32_t fNumSensitiveVol
number of sensitive volumes
AuxDetReadoutGeometry(const G4String name="AuxDetReadoutGeometry")
Constructor and destructor.
art::ServiceHandle< geo::Geometry const > fGeo
Handle to the geometry.
void FindAndMakeAuxDetSensitive(std::vector< const G4VPhysicalVolume * > &path, unsigned int depth, G4Transform3D DepthToWorld)