50{
52
53 std::string errorMessage{""};
54
56 errorMessage="Failed to build FCAL Channel Map";
58 throw std::runtime_error(errorMessage);
59 }
60
61
66 errorMessage="Failed to build LAr Barrel electrode sections";
68 throw std::runtime_error(errorMessage);
69 }
70
71
72 std::map<std::string, GeoAlignableTransform*> mapAXF =
m_sqliteReader->getPublishedNodes<std::string, GeoAlignableTransform*>(
"LAr");
73 for( auto& [key,xf] : mapAXF) {
74 StoredAlignX *sAlignX = new StoredAlignX(xf);
75 if(
m_detStore->record(sAlignX,key)!=StatusCode::SUCCESS) {
76 errorMessage=
"Failed to record StoredAlignX for the key: "+
key;
78 throw std::runtime_error(errorMessage);
79 }
80 }
81
82 std::map<std::string, GeoFullPhysVol*> mapFPV =
m_sqliteReader->getPublishedNodes<std::string, GeoFullPhysVol*>(
"LAr");
83 for( auto& [key,pv] : mapFPV) {
84 StoredPhysVol *sPhysVol = new StoredPhysVol(pv);
85 if(
m_detStore->record(sPhysVol,key)!=StatusCode::SUCCESS) {
86 errorMessage=
"Failed to record StoredPhysVol for the key: " +
key;
88 throw std::runtime_error(errorMessage);
89 }
90 }
91
92
93 double projectivityDisplacement{0.};
95 projectivityDisplacement = (*emecGeometry)[0]->getDouble("ZSHIFT");
96
101 , projectivityDisplacement);
102
103 EMBDetectorManager* embDetectorManager{std::get<0>(subDetManagers)};
104 EMECDetectorManager* emecDetectorManager{std::get<1>(subDetManagers)};
105 HECDetectorManager* hecDetectorManager{std::get<2>(subDetManagers)};
106 FCALDetectorManager* fcalDetectorManager{std::get<3>(subDetManagers)};
107
108 if(!embDetectorManager
109 || !emecDetectorManager
110 || !hecDetectorManager
111 || !fcalDetectorManager) {
112 errorMessage="Failed to build LAr Readout Geometry description";
114 throw std::runtime_error(errorMessage);
115 }
116
117 m_detectorManager =
new LArDetectorManager(embDetectorManager,emecDetectorManager,hecDetectorManager,fcalDetectorManager);
119
120
125
126
128 double zposMM = 0.;
129
130 if(mbtsPcons->
size()==0) {
132 last = mbtsTubs->
end();
134 if((*first)->getString("TUBE") == "MBTS_mother") {
135 zposMM = (*first)->getDouble("ZPOS")*SYSTEM_OF_UNITS::mm;
136 break;
137 }
138 }
139 }
140 else {
141 double zStartCryoMother = 0.;
143 last = cryoPcons->
end();
145 if((*first)->getString("PCON")=="Endcap::CryoMother"
146 && (*first)->getInt("PLANE_ID")==0) {
147 zStartCryoMother = (*first)->getDouble("ZPLANE");
148 break;
149 }
150 }
151
152 double zStartMM = 0.;
154 last = mbtsPcons->
end();
156 if((*first)->getString("PCON")=="MBTS::Mother"
157 && (*first)->getInt("PLANE_ID")==0) {
158 zStartMM = (*first)->getDouble("ZPLANE");
159 break;
160 }
161 }
162
163 zposMM = zStartCryoMother - zStartMM;
164 }
165
166
167 std::map<std::string,unsigned> trdMap;
168 for(
unsigned indTrd(0);indTrd<mbtsTrds->
size();++indTrd) {
169 const std::string& keyTrd = (*mbtsTrds)[indTrd]->getString("TRD");
170 trdMap[keyTrd]=indTrd;
171 }
172
176 , zposMM
177 , trdMap
178 , std::string()
179 , std::string()).isFailure()) {
180 errorMessage="Failed to build MBTS Readout Geometry description";
182 throw std::runtime_error(errorMessage);
183 }
184
185
186 GeoVolumeCursor
cursor(world);
188 std::string volName =
cursor.getName();
189 if(volName.compare(0,3,"LAr")==0) {
191 }
193 }
194
195}
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
std::tuple< EMBDetectorManager *, EMECDetectorManager *, HECDetectorManager *, FCALDetectorManager * > buildLArReadoutGeometry(StoreGateSvc *detStore, const LArHVManager *hvManager, IMessageSvc *msgSvc, int testbeam, double projectivityDisplacement)
RecordsVector::const_iterator const_iterator
virtual const_iterator begin() const =0
virtual const_iterator end() const =0
virtual unsigned int size() const =0
IMessageSvc * getMessageSvc(bool quiet=false)
StatusCode buildElStraightSections(StoreGateSvc *detStore, IRDBAccessSvc *paramSvc, IMessageSvc *msgSvc, bool sagging)
StatusCode buildMbtsReadout(StoreGateSvc *detStore, IRDBAccessSvc *paramSvc, IMessageSvc *msgSvc, double zposMM, const std::map< std::string, unsigned > &trdMap, const std::string &detKey, const std::string &detNode)
StatusCode buildFcalChannelMap(StoreGateSvc *detStore, IRDBAccessSvc *paramSvc, IMessageSvc *msgSvc)