ATLAS Offline Software
Loading...
Searching...
No Matches
MYSQL.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef MYSQL_H
6#define MYSQL_H
7
9
15
16
19
20#include <map>
21#include <string>
22#include <mutex>
23
24/*
25 This class holds an std::map of stations* (key = stationName, i.e. BMS5),
26 an std::map of Technologies* (key = RPC20), and an std::map of TgcReadoutParams*.
27 Stations and Technologies are used only to build the geometry (can be deleted
28 after that).
29 TgcReadoutParams are used by the TgcReadoutElements -> must live forever
30 (they belong to the readout geometry).
31 MYSQL is used only to build the geometry - can be deleted as soon as the job is
32 done (in the Factory).
33 It is responsible for releasing the memory allocated by these objects.
34
35 This is not thread safe!
36*/
37
38namespace MuonGM {
39
40 typedef std::map<int, std::string>::const_iterator AllocposIterator;
41 typedef std::map<std::string, int>::const_iterator allocPosIterator;
42
43 class MYSQL: public AthMessaging {
44 public:
46
48 using StationMap = std::map<std::string, std::unique_ptr<Station> >;
49 using StationIterator = StationMap::const_iterator;
50
51 using TgcReadParsMap = std::map<std::string, GeoModel::TransientConstSharedPtr<TgcReadoutParams>>;
52 using TgcReadParsIterator = TgcReadParsMap::const_iterator;
53
54 using TechnologyMap = std::map<std::string, std::unique_ptr<Technology>>;
55 using TechnologyIterator = TechnologyMap::const_iterator;
56
57 ~MYSQL();
58 bool amdb_from_RDB() const;
59 void set_amdb_from_RDB(bool);
60 void setGeometryVersion(const std::string& s);
61 const std::string& getGeometryVersion() const;
62 void setLayoutName(const std::string& s);
63 const std::string& getLayoutName() const;
64 void setNovaVersion(int i);
65 int getNovaVersion() const;
66 void setNovaReadVersion(int i);
67 int getNovaReadVersion() const;
68
69 const StationMap& stationMap() const;
70 const TgcReadParsMap& tgcReadParsMap() const;
71
75 std::string AllocposFindName(int) const;
76 void addAllocpos(int i, const std::string& str);
77 // the new ones
78 std::string allocPosBuildKey(const std::string& statType, int fi, int zi) const;
79 int allocPosBuildValue(int subtype, int cutout) const;
82 allocPosIterator allocPosFind(const std::string& key) const;
83 allocPosIterator allocPosFind(const std::string& statType, int fi, int zi) const;
84 int allocPosFindSubtype(const std::string& statType, int fi, int zi) const;
85 int allocPosFindSubtype(const std::string& key) const;
87 int allocPosFindCutout(const std::string& statType, int fi, int zi) const;
88 int allocPosFindCutout(const std::string& key) const;
90
91 void addallocPos(const std::string& key, int value);
92 void addallocPos(const std::string& statType, int fi, int zi, int subtyp, int cutout);
93 void addallocPos(const std::string& key, int subtype, int cutout);
94
95 int NStations() const;
96 int NTgcReadTypes() const;
97
98 static LockedMYSQL GetPointer();
99 const Station* GetStation(const std::string& name) const;
100 Station *GetStation(const std::string& name);
101 Position GetStationPosition(const std::string& nameType, int fi, int zi) const;
104
105 void StoreStation(Station* s);
106 void PrintAllStations() const;
109 Technology *GetTechnology(const std::string& name);
110 const Technology *GetTechnology(const std::string& name) const;
111 const Technology *GetATechnology(const std::string& name) const;
112 void PrintTechnologies();
113
114 // singleton
115 private:
116 // Protects s_thePointer.
117 struct MYSQLPtr
118 {
119 std::recursive_mutex m_mutex;
120 MYSQL* m_ptr{nullptr};
121 };
122 static MYSQLPtr& GetMYSQLPtr();
123
124 MYSQL();
125 std::map<int, std::string> m_allocatedpos;
126 std::map<std::string, int> m_allocPos;
130 std::array<GeoModel::TransientConstSharedPtr<TgcReadoutParams>, NTgcReadouts> m_tgcReadout{};
131
132
133 std::string m_geometry_version{"unknown"}; // from our job-option
134 std::string m_layout_name{"unknown"}; // from nova
135 std::string m_DBMuonVersion{"unknown"}; // name of the MuonVersion table-collection in Oracle
138 bool m_amdb_from_rdb{false};
139 };
140
141
142
143} // namespace MuonGM
144
145#endif
A pointer together with a movable lock.
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
A pointer together with a movable lock.
The TransientConstSharedPtr allows non-const access if the pointer itself is non-const but in the con...
@ NTgcReadouts
Definition MYSQL.h:45
AllocposIterator AllocposBegin() const
Definition MYSQL.cxx:214
const std::string & getGeometryVersion() const
Definition MYSQL.cxx:258
std::string m_geometry_version
Definition MYSQL.h:133
const Station * GetStation(const std::string &name) const
Definition MYSQL.cxx:51
void setLayoutName(const std::string &s)
Definition MYSQL.cxx:289
const std::string & getLayoutName() const
Definition MYSQL.cxx:262
void StoreTgcRPars(GeoModel::TransientConstSharedPtr< TgcReadoutParams > t)
Definition MYSQL.cxx:141
void StoreStation(Station *s)
Definition MYSQL.cxx:136
std::string AllocposFindName(int) const
Definition MYSQL.cxx:218
int NTgcReadTypes() const
Definition MYSQL.cxx:232
Position GetStationPosition(const std::string &nameType, int fi, int zi) const
Definition MYSQL.cxx:71
int m_amdb_version
Definition MYSQL.h:137
void set_amdb_from_RDB(bool)
Definition MYSQL.cxx:268
TgcReadParsMap m_tgcReadouts
Definition MYSQL.h:129
Technology * GetTechnology(const std::string &name)
Definition MYSQL.cxx:105
StationMap::const_iterator StationIterator
Definition MYSQL.h:49
int getNovaVersion() const
Definition MYSQL.cxx:264
static LockedMYSQL GetPointer()
Definition MYSQL.cxx:42
std::map< std::string, GeoModel::TransientConstSharedPtr< TgcReadoutParams > > TgcReadParsMap
Definition MYSQL.h:51
AllocposIterator AllocposFind(int) const
Definition MYSQL.cxx:216
StationMap m_stations
Definition MYSQL.h:127
const Technology * GetATechnology(const std::string &name) const
Definition MYSQL.cxx:162
allocPosIterator allocPosBegin() const
Definition MYSQL.cxx:236
const TgcReadParsMap & tgcReadParsMap() const
Definition MYSQL.cxx:228
int NStations() const
Definition MYSQL.cxx:230
void PrintAllStations() const
Definition MYSQL.cxx:150
const StationMap & stationMap() const
Definition MYSQL.cxx:227
std::string m_DBMuonVersion
Definition MYSQL.h:135
std::string allocPosBuildKey(const std::string &statType, int fi, int zi) const
Definition MYSQL.cxx:184
std::map< std::string, std::unique_ptr< Station > > StationMap
Definition MYSQL.h:48
bool amdb_from_RDB() const
Definition MYSQL.cxx:266
int m_nova_version
Definition MYSQL.h:136
int getNovaReadVersion() const
Definition MYSQL.cxx:260
std::array< GeoModel::TransientConstSharedPtr< TgcReadoutParams >, NTgcReadouts > m_tgcReadout
Definition MYSQL.h:130
AllocposIterator AllocposEnd() const
Definition MYSQL.cxx:212
std::map< std::string, int > m_allocPos
Definition MYSQL.h:126
allocPosIterator allocPosEnd() const
Definition MYSQL.cxx:238
void setNovaVersion(int i)
Definition MYSQL.cxx:300
TechnologyMap m_technologies
Definition MYSQL.h:128
TgcReadParsMap::const_iterator TgcReadParsIterator
Definition MYSQL.h:52
static MYSQLPtr & GetMYSQLPtr()
Definition MYSQL.cxx:32
std::string m_layout_name
Definition MYSQL.h:134
void StoreTechnology(Technology *t)
Definition MYSQL.cxx:125
CxxUtils::LockedPointer< MYSQL > LockedMYSQL
Definition MYSQL.h:47
void addAllocpos(int i, const std::string &str)
Definition MYSQL.cxx:210
void addallocPos(const std::string &key, int value)
Definition MYSQL.cxx:254
int allocPosFindCutout(const std::string &statType, int fi, int zi) const
Definition MYSQL.cxx:201
allocPosIterator allocPosFind(const std::string &key) const
Definition MYSQL.cxx:240
GeoModel::TransientConstSharedPtr< TgcReadoutParams > GetTgcRPars(const std::string &name) const
Definition MYSQL.cxx:88
std::map< int, std::string > m_allocatedpos
Definition MYSQL.h:125
void setGeometryVersion(const std::string &s)
Definition MYSQL.cxx:271
bool m_amdb_from_rdb
Definition MYSQL.h:138
int allocPosBuildValue(int subtype, int cutout) const
Definition MYSQL.cxx:234
std::map< std::string, std::unique_ptr< Technology > > TechnologyMap
Definition MYSQL.h:54
TechnologyMap::const_iterator TechnologyIterator
Definition MYSQL.h:55
void setNovaReadVersion(int i)
Definition MYSQL.cxx:284
int allocPosFindSubtype(const std::string &statType, int fi, int zi) const
Definition MYSQL.cxx:196
void PrintTechnologies()
Definition MYSQL.cxx:156
Ensure that the Athena extensions are properly loaded.
Definition GeoMuonHits.h:27
std::map< std::string, int >::const_iterator allocPosIterator
Definition MYSQL.h:41
std::map< int, std::string >::const_iterator AllocposIterator
Definition MYSQL.h:40
std::recursive_mutex m_mutex
Definition MYSQL.h:119