ATLAS Offline Software
Loading...
Searching...
No Matches
GeoModelExperiment.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6#include "GeoModelKernel/GeoPhysVol.h"
7#include "GeoModelKernel/GeoVDetectorManager.h"
8#include <algorithm>
9#include <sstream>
10#include <stdexcept>
15 : m_physVol(physVol) {}
16
20
22 return dynamic_pointer_cast<GeoPhysVol>(m_physVol);
23}
24
25
26const GeoPhysVol *GeoModelExperiment::getPhysVol() const{
27 return dynamic_pointer_cast<GeoPhysVol>(m_physVol);
28}
29
30
31
35
39
40void GeoModelExperiment::addManager(const GeoVDetectorManager *mgr) {
41 if (getManager(mgr->getName())) {
42 std::ostringstream errorMessage;
43 errorMessage
44 << "A detector manager named" << mgr->getName()
45 << " has already been declared to GeoModelExperiment";
46
47 throw std::runtime_error(errorMessage.str());
48 }
49 m_managers.insert(mgr);
50}
51
52const GeoVDetectorManager *GeoModelExperiment::getManager(const std::string & name) const {
53
54 const_iterator_type m = std::find_if(m_managers.begin(),m_managers.end(),NameEquals(name));
55 if (m!=m_managers.end()) {
56 return *m;
57 }
58 else {
59 return NULL;
60 }
61
62}
63
64std::vector<std::string> GeoModelExperiment::getListOfManagers() const {
65 std::vector<std::string> managersList;
66 for(auto manager : m_managers) {
67 managersList.push_back(manager->getName());
68 }
69 return managersList;
70}
71
72
73GeoModelExperiment::NameEquals::NameEquals(const std::string & name):m_name(name) {
74}
75
77 return m->getName()==m_name;
78}
79
81 return a->getName()< b->getName();
82}
83
84void GeoModelExperiment::addTmpVolume(PVConstLink volume)
85{
86 m_tmpVolumes.push_back(volume);
87}
static Double_t a
bool operator()(const value_type &a, const value_type &b) const
bool operator()(const value_type &m) const
NameEquals(const std::string &name)
ConstIterator endManager() const
const GeoVDetectorManager * getManager(const std::string &name) const
ConstIterator beginManager() const
std::vector< PVConstLink > m_tmpVolumes
GeoPhysVol * getPhysVol()
Destructor.
collection_type m_managers
collection_type::const_iterator const_iterator_type
GeoModelExperiment(PVLink physVol)
Constructor(s)
void addManager(const GeoVDetectorManager *)
void addTmpVolume(PVConstLink volume)
std::vector< std::string > getListOfManagers() const
const GeoVDetectorManager * value_type
const_iterator_type ConstIterator