20#include "BDSException.hh"
21#include "BDSLinkOpaqueBox.hh"
22#include "BDSLinkRegistry.hh"
24#include "G4Transform3D.hh"
30BDSLinkRegistry::BDSLinkRegistry()
33BDSLinkRegistry::~BDSLinkRegistry()
37 const G4Transform3D& globalToInputIn)
40 G4cout <<
"New ID " << newID <<
" for " << componentIn->
LinkName() << G4endl;
41 G4bool noRotation = !(componentIn->
Angled());
43 byName[componentIn->LinkName()] = le;
48const G4Transform3D& BDSLinkRegistry::Transform(
const std::string& name)
const
50 auto search = byName.find(name);
51 if (search != byName.end())
52 {
return search->second.transform;}
54 {
throw BDSException(__METHOD_NAME__,
"unknown link element name \"" + name +
"\"");}
57const G4Transform3D& BDSLinkRegistry::Transform(
const G4int ID)
const
59 auto search = byID.find(ID);
60 if (search != byID.end())
61 {
return search->second.transform;}
63 {
throw BDSException(__METHOD_NAME__,
"unknown link element ID " + std::to_string(ID));}
66const G4Transform3D& BDSLinkRegistry::TransformInverse(
const std::string& name)
const
68 auto search = byName.find(name);
69 if (search != byName.end())
70 {
return search->second.transformInverse;}
72 {
throw BDSException(__METHOD_NAME__,
"unknown link element name \"" + name +
"\"");}
75const G4Transform3D& BDSLinkRegistry::TransformInverse(
const G4int ID)
const
77 auto search = byID.find(ID);
78 if (search != byID.end())
79 {
return search->second.transformInverse;}
81 {
throw BDSException(__METHOD_NAME__,
"unknown link element ID " + std::to_string(ID));}
84G4bool BDSLinkRegistry::NoRotation(
const std::string& name)
const
86 auto search = byName.find(name);
87 if (search != byName.end())
88 {
return search->second.noRotation;}
90 {
throw BDSException(__METHOD_NAME__,
"unknown link element name \"" + name +
"\"");}
93G4bool BDSLinkRegistry::NoRotation(G4int ID)
const
95 auto search = byID.find(ID);
96 if (search != byID.end())
97 {
return search->second.noRotation;}
99 {
throw BDSException(__METHOD_NAME__,
"unknown link element ID " + std::to_string(ID));}
General exception with possible name of object and message.
Wrapper box for an accelerator component.
G4bool Angled() const
Accessor.
G4String LinkName() const
Accessor.
G4int PlaceOutputSampler()
Place the output sampler.