A Geant4 sensitive detector that accumulates voxel information. More...
#include <algorithm>
#include <stddef.h>
#include <vector>
#include "Geant4/G4PVPlacement.hh"
#include "Geant4/G4VSensitiveDetector.hh"
#include "art/Framework/Services/Registry/ServiceHandle.h"
#include "larcore/Geometry/Geometry.h"
#include "larcoreobj/SimpleTypesAndConstants/geo_vectors.h"
#include "lardataobj/Simulation/SimChannel.h"
#include "larsim/Simulation/LArG4Parameters.h"
Go to the source code of this file.
Classes | |
struct | larg4::TPCID_t |
Simple structure holding a TPC and cryostat number. More... | |
class | larg4::G4PVPlacementWithID< IDTYPE > |
A G4PVPlacement with an additional identificator. More... | |
class | larg4::LArVoxelReadout |
Transports energy depositions from GEANT4 to TPC channels. More... | |
struct | larg4::LArVoxelReadout::Setup_t |
Collection of what it takes to set a LArVoxelReadout up. More... | |
Namespaces | |
detinfo | |
General LArSoft Utilities. | |
CLHEP | |
larg4 | |
Geant4 interface. | |
Typedefs | |
typedef G4PVPlacementWithID < TPCID_t > | larg4::G4PVPlacementInTPC |
A physical volume with a TPC ID. More... | |
A Geant4 sensitive detector that accumulates voxel information.
One way to implement voxels in Geant4 is to create a parallel "read-out" geometry along with the real, physical geometry. The read-out geometry is implemented in LArVoxelReadoutGeometry; this class is the sensitive detector for that geometry. That is, Geant4 will call this routine every time there is a step within a volume of the read-out geometry; this routine then accumulates information from that step.
In general, Geant4 expects to have per-event user information attached to the G4Event in some way; their G4VSensitiveDetector class supports this by allowing user-defined hit collections to added to a G4HCOfThisEvent object (a collection of hit collections; yes, it makes my head ache too!) that's part of each G4Event.
This class works differently, by accumulating the information in its internal sim::LArVoxelList. See LArVoxelListAction for how this information is made available to the main LArG4 module.
Why define a parallel geometry? Here are some reasons:
Definition in file LArVoxelReadout.h.