File indexing completed on 2026-09-27 09:15:18
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef PANDORA_GEOMETRY_MANAGER_H
0009 #define PANDORA_GEOMETRY_MANAGER_H 1
0010
0011 #include "Pandora/ObjectCreation.h"
0012 #include "Pandora/PandoraEnumeratedTypes.h"
0013
0014 namespace pandora
0015 {
0016
0017
0018
0019
0020 class GeometryManager
0021 {
0022 public:
0023
0024
0025
0026
0027
0028 GeometryManager(const Pandora *const pPandora);
0029
0030
0031
0032
0033 ~GeometryManager();
0034
0035
0036
0037
0038
0039
0040
0041
0042 const SubDetector &GetSubDetector(const std::string &subDetectorName) const;
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052 const SubDetector &GetSubDetector(const SubDetectorType subDetectorType) const;
0053
0054
0055
0056
0057
0058
0059 const SubDetectorMap &GetSubDetectorMap() const;
0060
0061
0062
0063
0064
0065
0066 const LArTPC &GetLArTPC() const;
0067
0068
0069
0070
0071
0072
0073 const LArTPCMap &GetLArTPCMap() const;
0074
0075
0076
0077
0078
0079
0080 const DetectorGapList &GetDetectorGapList() const;
0081
0082
0083
0084
0085
0086
0087
0088
0089 Granularity GetHitTypeGranularity(const HitType hitType) const;
0090
0091 private:
0092
0093
0094
0095
0096
0097
0098 StatusCode CreateSubDetector(const object_creation::Geometry::SubDetector::Parameters ¶meters,
0099 const ObjectFactory<object_creation::Geometry::SubDetector::Parameters, object_creation::Geometry::SubDetector::Object> &factory);
0100
0101
0102
0103
0104
0105
0106
0107 StatusCode CreateLArTPC(const object_creation::Geometry::LArTPC::Parameters ¶meters,
0108 const ObjectFactory<object_creation::Geometry::LArTPC::Parameters, object_creation::Geometry::LArTPC::Object> &factory);
0109
0110
0111
0112
0113
0114
0115
0116 template <typename PARAMETERS, typename OBJECT>
0117 StatusCode CreateGap(const PARAMETERS ¶meters, const ObjectFactory<PARAMETERS, OBJECT> &factory);
0118
0119
0120
0121
0122 StatusCode EraseAllContent();
0123
0124 typedef std::map<HitType, Granularity> HitTypeToGranularityMap;
0125
0126
0127
0128
0129
0130
0131 HitTypeToGranularityMap GetDefaultHitTypeToGranularityMap() const;
0132
0133
0134
0135
0136
0137
0138
0139 StatusCode SetHitTypeGranularity(const HitType hitType, const Granularity granularity);
0140
0141 typedef std::multimap<SubDetectorType, const SubDetector*> SubDetectorTypeMap;
0142
0143 SubDetectorMap m_subDetectorMap;
0144 SubDetectorTypeMap m_subDetectorTypeMap;
0145 LArTPCMap m_larTPCMap;
0146 DetectorGapList m_detectorGapList;
0147 HitTypeToGranularityMap m_hitTypeToGranularityMap;
0148
0149 const Pandora *const m_pPandora;
0150
0151 friend class PandoraApiImpl;
0152 };
0153
0154
0155
0156 inline const SubDetectorMap &GeometryManager::GetSubDetectorMap() const
0157 {
0158 return m_subDetectorMap;
0159 }
0160
0161
0162
0163 inline const LArTPCMap &GeometryManager::GetLArTPCMap() const
0164 {
0165 return m_larTPCMap;
0166 }
0167
0168
0169
0170 inline const DetectorGapList &GeometryManager::GetDetectorGapList() const
0171 {
0172 return m_detectorGapList;
0173 }
0174
0175 }
0176
0177 #endif