43 #ifndef LArG4_LArVoxelReadout_h 44 #define LArG4_LArVoxelReadout_h 50 #include "Geant4/G4PVPlacement.hh" 51 #include "Geant4/G4VSensitiveDetector.hh" 59 class DetectorClocksData;
60 class DetectorPropertiesData;
65 class G4TouchableHistory;
69 class HepRandomEngine;
76 unsigned short int Cryostat,
TPC;
96 template <
class IDTYPE>
106 G4LogicalVolume* pLogical,
107 G4VPhysicalVolume* pMother,
110 G4bool pSurfChk =
false,
112 : G4PVPlacement(Transform3D, pName, pLogical, pMother, pMany, pCopyNo, pSurfChk), ID(id)
168 CLHEP::HepRandomEngine* propGen =
nullptr;
171 double offPlaneMargin = 0.0;
185 unsigned int cryostat,
189 void Setup(
Setup_t const& setupData);
192 void SetSingleTPC(
unsigned int cryostat,
unsigned int tpc);
195 void SetDiscoverTPC();
204 virtual void clear();
209 virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
213 virtual void DrawAll();
221 void ClearSimChannels();
224 std::vector<sim::SimChannel> GetSimChannels()
const;
227 std::vector<sim::SimChannel> GetSimChannels(
unsigned short cryo,
unsigned short tpc)
const;
230 const ChannelMap_t& GetSimChannelMap()
const;
232 ChannelMap_t& GetSimChannelMap();
236 const ChannelMap_t& GetSimChannelMap(
unsigned short cryo,
unsigned short tpc)
const;
238 ChannelMap_t& GetSimChannelMap(
unsigned short cryo,
unsigned short tpc);
249 fClockData = clockData;
269 void SetRandomEngines(CLHEP::HepRandomEngine* pPropGen);
312 G4ThreeVector stepMidPoint,
313 const double simTime,
315 unsigned short int cryostat,
316 unsigned short int tpc,
319 bool Has(std::vector<unsigned short int> v,
unsigned short int tpc)
const 322 if (c == tpc)
return true;
329 double fDriftVelocity[3];
338 double fOffPlaneMargin = 0.0;
348 CLHEP::HepRandomEngine* fPropGen =
nullptr;
354 void ProcessStep(G4Step*);
363 #endif // LArG4_LArVoxelReadout_h void PrintAll(detinfo::DetectorPropertiesData const &detProp, std::string someText)
Store parameters for running LArG4.
unsigned int fTPC
which TPC this LArVoxelReadout corresponds to
double fTransverseDiffusion
Collection of what it takes to set a LArVoxelReadout up.
A G4PVPlacement with an additional identificator.
int fMinNumberOfElCluster
unsigned short int Cryostat
double fLongitudinalDiffusion
bool bSingleTPC
true if this readout is associated with a single TPC
ID_t ID
Physical Volume identificator.
geo::GeometryCore const * fGeo
std::map< unsigned int, sim::SimChannel > ChannelMap_t
Type of map channel -> sim::SimChannel.
double fElectronClusterSize
std::vector< unsigned short int > fSkipWireSignalInTPCs
Definitions of geometry vector data types.
Interface for a class providing readout channel mapping to geometry.
Geometry information for a single wire plane.The plane is represented in the geometry by a solid whic...
G4PVPlacementWithID< TPCID_t > G4PVPlacementInTPC
A physical volume with a TPC ID.
General LArSoft Utilities.
bool Has(std::vector< unsigned short int > v, unsigned short int tpc) const
Description of the physical geometry of one entire detector.
std::vector< std::vector< ChannelMap_t > > fChannelMaps
Maps of cryostat, tpc to channel data.
Simple structure holding a TPC and cryostat number.
virtual ~G4PVPlacementWithID()
Virtual destructor: does nothing more.
void SetClockData(detinfo::DetectorClocksData const *const clockData) noexcept
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
Contains all timing reference information for the detector.
unsigned int fCstat
and in which cryostat (if bSingleTPC is true)
void SetOffPlaneChargeRecoveryMargin(double margin)
Sets the margin for recovery of charge drifted off-plane.
object containing MC truth information necessary for making RawDigits and doing back tracking ...
G4PVPlacementWithID(const G4Transform3D &Transform3D, const G4String &pName, G4LogicalVolume *pLogical, G4VPhysicalVolume *pMother, G4bool pMany, G4int pCopyNo, G4bool pSurfChk=false, ID_t id=ID_t())
Constructor.
sim::LArG4Parameters const * fLgp
Transports energy depositions from GEANT4 to TPC channels.
void SetPropertiesData(detinfo::DetectorPropertiesData const *const detProp) noexcept
bool operator<(const TPCID_t &than) const
geo::WireReadoutGeom const * fWireReadoutGeom