High level class to build a tracker. It will only build subdets, then call subdet builders
Definition at line 22 of file DDCmsMTDConstruction.h.
Definition at line 208 of file DDCmsMTDConstruction.cc.
218 mypar.
filter(ref, attribute,
"BarrelTimingLayer");
219 mypar.
filter(ref, attribute,
"EndcapTimingLayer");
220 fv.mergedSpecifics(ref);
223 edm::LogVerbatim(
"MTDNumbering") <<
"Active filters using " << attribute <<
":";
226 log <<
"Filtered DD SpecPar Registry size: " << ref.size() <<
"\n";
227 for (
const auto&
t : ref) {
228 log <<
"\nRegExps { ";
229 for (
const auto& ki :
t->paths)
232 for (
const auto& kl :
t->spars) {
233 log << kl.first <<
" = ";
234 for (
const auto& kil : kl.second) {
243 bool doSubdet = fv.firstChild();
250 std::vector<GeometricTimingDet*> subdet;
251 std::vector<GeometricTimingDet*> layer;
261 edm::LogVerbatim(
"MTDNumbering") <<
"Module = " << fv.name() <<
" fullNode = " << fullNode
262 <<
" thisNode = " << thisNode;
268 subdet.emplace_back(theCmsMTDConstruction.
buildSubdet(fv));
271 layer.emplace_back(theCmsMTDConstruction.
buildLayer(fv));
273 edm::LogVerbatim(
"DD4hep_MTDNumbering") <<
"Number of layers: " << layer.size();
278 edm::LogVerbatim(
"DD4hep_MTDNumbering") <<
"Registered in GeometricTimingDet as type " << thisNode;
283 edm::LogVerbatim(
"DD4hep_MTDNumbering") <<
"Registered in GeometricTimingDet as type " << thisNode;
288 doSubdet = fv.firstChild();
294 auto comp =
mtd->deepComponents();
296 for (
const auto& it :
comp) {
297 before <<
"ORDER1 " << it->geographicalId().rawId() <<
" " << it->type() <<
" " << it->translation().z() <<
"\n";
299 edm::LogVerbatim(
"DD4hep_MTDNumbering") <<
"GeometricTimingDet order before sorting \n" << before.str();
314 subdet[0]->addComponent(layer[0]);
319 subdet[1]->addComponent(layer[1]);
320 subdet[2]->addComponent(layer[2]);
322 subdet[1]->addComponent(layer[1]);
323 subdet[1]->addComponent(layer[2]);
324 subdet[2]->addComponent(layer[3]);
325 subdet[2]->addComponent(layer[4]);
327 throw cms::Exception(
"DD4hep_MTDNumbering") <<
"Wrong number of layers: " << layer.size();
332 mtd.get()->addComponents(subdet);
338 for (
const auto& it :
comp) {
339 after <<
"ORDER2 " << it->geographicalId().rawId() <<
" " << it->type() <<
" " << it->translation().z() <<
"\n";
341 edm::LogVerbatim(
"DD4hep_MTDNumbering") <<
"GeometricTimingDet order after sorting \n" << after.str();
References GeometricTimingDet::BTL, GeometricTimingDet::BTLLayer, GeometricTimingDet::BTLModule, CmsMTDConstruction< FilteredView >::buildBTLModule(), CmsMTDConstruction< FilteredView >::buildETLModule(), CmsMTDConstruction< FilteredView >::buildLayer(), CmsMTDConstruction< FilteredView >::buildSubdet(), AlCaHLTBitMon_QueryRunRegistry::comp, cms::DDCompactView::detector(), GeometricTimingDet::ETL, GeometricTimingDet::ETLDisc, GeometricTimingDet::ETLModule, Exception, cms::DDSpecParRegistry::filter(), recoMuon::in, CmsMTDStringToEnum::kModStrLen, kNLayerPreTDR, kNLayerTDR, dqm-mbProfile::log, edm::LogVerbatim::log(), GeometricTimingDet::MTD, cms::DDFilteredView::next(), MillePedeFileConverter_cfg::out, cms::DDCompactView::specpars(), AlCaHLTBitMon_QueryRunRegistry::string, OrderedSet::t, CmsMTDStringToEnum::type(), and cms::DDDetector::worldVolume().
Definition at line 42 of file DDCmsMTDConstruction.cc.
55 filter.veto(
"SupportPlate");
57 filter.veto(
"ThermalScreen");
58 filter.veto(
"Aluminium_Disc");
59 filter.veto(
"MIC6_Aluminium_Disc");
64 filter.veto(
"SensorModule");
66 filter.veto(
"LGAD_Substrate");
77 throw cms::Exception(
"Configuration") <<
" The first child of the DDFilteredView is not what is expected \n"
84 edm::LogInfo(
"MTDNumbering") <<
"Top level node = " << fv.name();
91 std::vector<GeometricTimingDet*> subdet;
92 std::vector<GeometricTimingDet*> layer;
98 size_t num = fv.geoHistory().size();
101 edm::LogVerbatim(
"MTDNumbering") <<
"Module = " << fv.name() <<
" fullNode = " << fullNode
102 <<
" thisNode = " << thisNode;
110 subdet.emplace_back(theCmsMTDConstruction.
buildSubdet(fv));
113 layer.emplace_back(theCmsMTDConstruction.
buildLayer(fv));
115 edm::LogVerbatim(
"DD4hep_MTDNumbering") <<
"Number of layers: " << layer.size();
128 if (theCmsMTDConstruction.
isETLtdr(fv)) {
139 edm::LogVerbatim(
"MTDNumbering") <<
"Registered in GeometricTimingDet as type " << thisNode;
145 edm::LogVerbatim(
"MTDNumbering") <<
"Registered in GeometricTimingDet as type " << thisNode;
155 auto comp =
mtd->deepComponents();
157 for (
const auto& it :
comp) {
158 before <<
"ORDER1 " << it->geographicalId().rawId() <<
" " << it->type() <<
" " << it->translation().z() <<
"\n";
160 edm::LogVerbatim(
"MTDNumbering") <<
"GeometricTimingDet order before sorting \n" << before.str();
175 subdet[0]->addComponent(layer[0]);
180 subdet[1]->addComponent(layer[1]);
181 subdet[2]->addComponent(layer[2]);
183 subdet[1]->addComponent(layer[1]);
184 subdet[1]->addComponent(layer[2]);
185 subdet[2]->addComponent(layer[3]);
186 subdet[2]->addComponent(layer[4]);
188 throw cms::Exception(
"DD4hep_MTDNumbering") <<
"Wrong number of layers: " << layer.size();
193 mtd.get()->addComponents(subdet);
199 for (
const auto& it :
comp) {
200 after <<
"ORDER2 " << it->geographicalId().rawId() <<
" " << it->type() <<
" " << it->translation().z() <<
"\n";
202 edm::LogVerbatim(
"MTDNumbering") <<
"GeometricTimingDet order after sorting \n" << after.str();
References GeometricTimingDet::BTL, GeometricTimingDet::BTLLayer, GeometricTimingDet::BTLModule, CmsMTDConstruction< FilteredView >::buildBTLModule(), CmsMTDConstruction< FilteredView >::buildETLModule(), CmsMTDConstruction< FilteredView >::buildLayer(), CmsMTDConstruction< FilteredView >::buildSubdet(), AlCaHLTBitMon_QueryRunRegistry::comp, GeometricTimingDet::ETL, GeometricTimingDet::ETLDisc, GeometricTimingDet::ETLModule, Exception, ALCARECOTkAlBeamHalo_cff::filter, DDFilteredView::firstChild(), DDFilteredView::geoHistory(), ExtractStringFromDD< FilteredView >::getString(), recoMuon::in, CmsMTDConstruction< FilteredView >::isETLtdr(), CmsMTDStringToEnum::kModStrLen, kNLayerPreTDR, kNLayerTDR, remoteMonitoring_LED_IterMethod_cfg::limit, GeometricTimingDet::MTD, DDFilteredView::name(), DDFilteredView::next(), EgammaValidation_cff::num, MillePedeFileConverter_cfg::out, DDFilteredView::parent(), AlCaHLTBitMon_QueryRunRegistry::string, and CmsMTDStringToEnum::type().
Referenced by MTDGeometricTimingDetESModule::produce().