20#include "BDSPhysicalVolumeInfo.hh"
21#include "BDSPhysicalVolumeInfoRegistry.hh"
24#include "G4VPhysicalVolume.hh"
46 for (
auto& info : pvInfosForDeletion)
53 G4bool isReadOutVolume,
57 G4cout << __METHOD_NAME__ <<
"registering volume: " << physicalVolume->GetName() << G4endl;
58 G4cout << __METHOD_NAME__ <<
"with info: " << *info << G4endl;
59 G4cout << __METHOD_NAME__ <<
"is a read out volume: " << isReadOutVolume << G4endl;
63 G4cerr << __METHOD_NAME__ << physicalVolume->
GetName() <<
" is already registered" << G4endl;
67 pvInfosForDeletion.insert(info);
72 tunnelRegister[physicalVolume] = info;
79 {backupRegister[physicalVolume] = info;}
81 G4cout << __METHOD_NAME__ <<
"component registered" << G4endl;
87 G4bool isReadOutVolume,
90 for (
auto& pv : physicalVolumes)
99 if (excludedVolumes.find(physicalVolume) != excludedVolumes.end())
118 G4cerr << __METHOD_NAME__ <<
"physical volume not found" << G4endl;
119 G4cerr << __METHOD_NAME__ <<
"pv name is: " << physicalVolume->GetName() << G4endl;
127 excludedVolumes.insert(physicalVolume);
131 const std::set<G4VPhysicalVolume*>& physicalVolumes)
159 G4bool BDSPhysicalVolumeInfoRegistry::IsRegisteredToTunnelRegister(G4VPhysicalVolume* physicalVolume)
170 out <<
"Physical Volume Registry:" << G4endl;
171 out <<
"Read out volume register:" << G4endl;
173 {out << itRO->first->GetName() <<
"\t" << *(itRO->second) << G4endl;}
174 out << G4endl <<
"General volume register:" << G4endl;
175 for (BDSPVInfoIteratorConst itBU = r.backupRegister.begin(); itBU != r.backupRegister.end(); ++ itBU)
176 {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.