19#include "BDSPhysicalVolumeInfo.hh"
20#include "BDSPhysicalVolumeInfoRegistry.hh"
23#include "G4VPhysicalVolume.hh"
45 for (
auto& info : pvInfosForDeletion)
52 G4bool isReadOutVolume,
56 G4cout << __METHOD_NAME__ <<
"registering volume: " << physicalVolume->GetName() << G4endl;
57 G4cout << __METHOD_NAME__ <<
"with info: " << *info << G4endl;
58 G4cout << __METHOD_NAME__ <<
"is a read out volume: " << isReadOutVolume << G4endl;
62 G4cerr << __METHOD_NAME__ << physicalVolume->
GetName() <<
" is already registered" << G4endl;
66 pvInfosForDeletion.insert(info);
71 tunnelRegister[physicalVolume] = info;
78 {backupRegister[physicalVolume] = info;}
80 G4cout << __METHOD_NAME__ <<
"component registered" << G4endl;
86 G4bool isReadOutVolume,
89 for (
auto& pv : physicalVolumes)
98 if (excludedVolumes.find(physicalVolume) != excludedVolumes.end())
117 G4cerr << __METHOD_NAME__ <<
"physical volume not found" << G4endl;
118 G4cerr << __METHOD_NAME__ <<
"pv name is: " << physicalVolume->GetName() << G4endl;
126 excludedVolumes.insert(physicalVolume);
130 const std::set<G4VPhysicalVolume*>& physicalVolumes)
158 G4bool BDSPhysicalVolumeInfoRegistry::IsRegisteredToTunnelRegister(G4VPhysicalVolume* physicalVolume)
169 out <<
"Physical Volume Registry:" << G4endl;
170 out <<
"Read out volume register:" << G4endl;
172 {out << itRO->first->GetName() <<
"\t" << *(itRO->second) << G4endl;}
173 out << G4endl <<
"General volume register:" << G4endl;
174 for (BDSPVInfoIteratorConst itBU = r.backupRegister.begin(); itBU != r.backupRegister.end(); ++ itBU)
175 {out << itBU->first->GetName() <<
"\t" << *(itBU->second) << G4endl;}
A class that holds a fully constructed BDSAcceleratorComponent as well as any information relevant to...
A registry of physical volume info instances that can be searched.
void RegisterPVsForOutput(const BDSBeamlineElement *element, const std::set< G4VPhysicalVolume * > &physicalVolumes)
BDSPVInfoIterator tunnelSearch
Search iterator.
BDSPhysicalVolumeInfoRegistry()
Default constructor is private as singleton.
G4bool IsRegisteredToReadOutRegister(G4VPhysicalVolume *physicalVolume)
Check whether a physical volume is registered to the read out registry.
static BDSPhysicalVolumeInfoRegistry * instance
The singleton instance.
~BDSPhysicalVolumeInfoRegistry()
void RegisterExcludedPV(G4VPhysicalVolume *physicalVolume)
BDSPhysicalVolumeInfo * GetInfo(G4VPhysicalVolume *logicalVolume, G4bool isTunnel=false)
G4bool IsRegistered(G4VPhysicalVolume *physicalVolume)
Check whether a physical volume is registered at all.
BDSPVInfoIterator backupSearch
Search iterator.
const std::set< G4VPhysicalVolume * > * PVsForBeamlineElement(BDSBeamlineElement *element) const
Access a set of volumes registered for the placement of a beamline element.
BDSPVInfoIterator readOutSearch
Search iterator.
std::map< const BDSBeamlineElement *, std::set< G4VPhysicalVolume * > > pvsForAGivenElement
void RegisterInfo(G4VPhysicalVolume *physicalVolume, BDSPhysicalVolumeInfo *info, G4bool isReadOutVolume=false, G4bool isTunnel=false)
std::map< G4VPhysicalVolume *, BDSPhysicalVolumeInfo * > readOutRegister
Registry is a map - note 'register' is a protected keyword.
static BDSPhysicalVolumeInfoRegistry * Instance()
Singleton accessor.
G4bool IsRegisteredToBackupRegister(G4VPhysicalVolume *physicalVolume)
Check whether a physical volume is registered ot the general backup registry.
A class holding any information pertaining to a particular physical volume in a BDSIM geant4 model.
G4String GetName() const
Get the name of the logical volume.