19#include "BDSException.hh"
20#include "BDSLinkOpaqueBox.hh"
21#include "BDSLinkRegistry.hh"
23#include "G4Transform3D.hh"
29BDSLinkRegistry::BDSLinkRegistry()
32BDSLinkRegistry::~BDSLinkRegistry()
36 const G4Transform3D& globalToInputIn)
39 G4cout <<
"New ID " << newID <<
" for " << componentIn->
LinkName() << G4endl;
40 G4bool noRotation = !(componentIn->
Angled());
42 byName[componentIn->LinkName()] = le;
47const G4Transform3D& BDSLinkRegistry::Transform(
const std::string& name)
const
49 auto search = byName.find(name);
50 if (search != byName.end())
51 {
return search->second.transform;}
53 {
throw BDSException(__METHOD_NAME__,
"unknown link element name \"" + name +
"\"");}
56const G4Transform3D& BDSLinkRegistry::Transform(
const G4int ID)
const
58 auto search = byID.find(ID);
59 if (search != byID.end())
60 {
return search->second.transform;}
62 {
throw BDSException(__METHOD_NAME__,
"unknown link element ID " + std::to_string(ID));}
65const G4Transform3D& BDSLinkRegistry::TransformInverse(
const std::string& name)
const
67 auto search = byName.find(name);
68 if (search != byName.end())
69 {
return search->second.transformInverse;}
71 {
throw BDSException(__METHOD_NAME__,
"unknown link element name \"" + name +
"\"");}
74const G4Transform3D& BDSLinkRegistry::TransformInverse(
const G4int ID)
const
76 auto search = byID.find(ID);
77 if (search != byID.end())
78 {
return search->second.transformInverse;}
80 {
throw BDSException(__METHOD_NAME__,
"unknown link element ID " + std::to_string(ID));}
83G4bool BDSLinkRegistry::NoRotation(
const std::string& name)
const
85 auto search = byName.find(name);
86 if (search != byName.end())
87 {
return search->second.noRotation;}
89 {
throw BDSException(__METHOD_NAME__,
"unknown link element name \"" + name +
"\"");}
92G4bool BDSLinkRegistry::NoRotation(G4int ID)
const
94 auto search = byID.find(ID);
95 if (search != byID.end())
96 {
return search->second.noRotation;}
98 {
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.