File indexing completed on 2025-02-21 09:58:00
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef DD4HEP_DD4HEPROOTPERSISTENCY_H
0014 #define DD4HEP_DD4HEPROOTPERSISTENCY_H
0015
0016
0017 #include <DD4hep/DetectorData.h>
0018
0019
0020
0021
0022
0023
0024
0025
0026 class DD4hepRootPersistency : public TNamed {
0027 public:
0028 typedef std::map<std::string, dd4hep::Handle<dd4hep::NamedObject> > HandleMap;
0029
0030
0031 dd4hep::DetectorData* m_data = 0;
0032
0033 std::map<dd4hep::Readout,std::pair<dd4hep::IDDescriptor,dd4hep::DDSegmentation::Segmentation*> > m_segments;
0034
0035 std::map<dd4hep::DetElement,dd4hep::AlignmentCondition> nominals;
0036
0037
0038 DD4hepRootPersistency();
0039
0040
0041 virtual ~DD4hepRootPersistency();
0042
0043
0044 static int save(dd4hep::Detector& description, const char* fname, const char* instance = "Geometry");
0045
0046 static int load(dd4hep::Detector& description, const char* fname, const char* instance = "Geometry");
0047
0048
0049 TGeoManager& manager() const { return *m_data->m_manager; }
0050
0051 dd4hep::Material air() const { return m_data->m_materialAir; }
0052
0053 dd4hep::Material vacuum() const { return m_data->m_materialVacuum; }
0054
0055 dd4hep::VisAttr invisible() const { return m_data->m_invisibleVis; }
0056
0057 dd4hep::DetElement world() const { return m_data->m_world; }
0058
0059 dd4hep::DetElement trackers() const { return m_data->m_trackers; }
0060
0061 dd4hep::Volume worldVolume() const { return m_data->m_worldVol; }
0062
0063 dd4hep::Volume trackingVolume() const { return m_data->m_trackingVol; }
0064
0065 dd4hep::VolumeManager volumeManager() const { return m_data->m_volManager; }
0066
0067 dd4hep::OverlayedField field() const { return m_data->m_field; }
0068
0069 dd4hep::Header header() const { return m_data->m_header; }
0070
0071 const HandleMap& constants() const { return m_data->m_define; }
0072
0073 const HandleMap& visAttributes() const { return m_data->m_display; }
0074
0075 const HandleMap& limitsets() const { return m_data->m_limits; }
0076
0077 const HandleMap& regions() const { return m_data->m_regions; }
0078
0079 const HandleMap& readouts() const { return m_data->m_readouts; }
0080
0081 const HandleMap& detectors() const { return m_data->m_detectors; }
0082
0083 const HandleMap& sensitiveDetectors() const { return m_data->m_sensitive; }
0084
0085 const HandleMap& fields() const { return m_data->m_fields; }
0086
0087 const HandleMap& idSpecifications() const { return m_data->m_idDict; }
0088
0089
0090 ClassDef(DD4hepRootPersistency,1);
0091 };
0092
0093
0094
0095
0096
0097
0098
0099
0100 class DD4hepRootCheck {
0101 public:
0102
0103 dd4hep::Detector* object=0;
0104
0105 DD4hepRootCheck() = default;
0106
0107 DD4hepRootCheck(const DD4hepRootCheck& copy) = default;
0108
0109 DD4hepRootCheck(dd4hep::Detector* o) : object(o) {}
0110
0111 virtual ~DD4hepRootCheck() = default;
0112
0113 DD4hepRootCheck& operator=(const DD4hepRootCheck& copy) = default;
0114
0115 size_t checkMaterials() const;
0116
0117 size_t checkConstants() const;
0118
0119 size_t checkProperties() const;
0120
0121 size_t checkFields() const;
0122
0123 std::pair<std::size_t, std::size_t> checkRegions() const;
0124
0125 std::pair<std::size_t, std::size_t> checkReadouts() const;
0126
0127 std::pair<std::size_t, std::size_t> checkIdSpecs() const;
0128
0129 std::pair<std::size_t, std::size_t> checkSensitives() const;
0130
0131 std::pair<std::size_t, std::size_t> checkLimitSets() const;
0132
0133 std::pair<std::size_t, std::size_t> checkVolManager() const;
0134
0135 std::pair<std::size_t, std::size_t> checkNominals() const;
0136
0137 std::pair<std::size_t, std::size_t> checkDetectors() const;
0138
0139 std::pair<std::size_t, std::size_t> checkSegmentations() const;
0140
0141 size_t checkAll() const;
0142 };
0143
0144 #endif