46 class HomogeneousSurfaceMaterial;
47 class IMaterialDecorator;
48 class ISurfaceMaterial;
49 class ProtoSurfaceMaterial;
52 namespace ActsExamples {
62 double radius,
double zStagger,
double moduleHalfLength,
double lOverlap,
63 const std::pair<int, int>& binningSchema);
87 double z,
double ringStagger, std::vector<double> phiStagger,
88 std::vector<double> phiSubStagger,
double innerRadius,
double outerRadius,
89 const std::vector<size_t>& discBinning,
90 const std::vector<double>& moduleHalfLength);
111 template <
typename detector_element_t>
113 const typename detector_element_t::ContextType& gctxIn,
114 std::vector<std::vector<std::shared_ptr<detector_element_t>>>&
117 std::shared_ptr<const Acts::IMaterialDecorator> matDecorator =
nullptr,
118 bool protoMaterial =
false,
122 using namespace Acts::UnitLiterals;
132 auto surfaceArrayCreator = std::make_shared<const Acts::SurfaceArrayCreator>(
137 auto layerCreator = std::make_shared<const Acts::LayerCreator>(
141 auto layerArrayCreator = std::make_shared<const Acts::LayerArrayCreator>(
145 auto tVolumeArrayCreator =
146 std::make_shared<const Acts::TrackingVolumeArrayCreator>(
152 cvhConfig.trackingVolumeArrayCreator = tVolumeArrayCreator;
153 auto cylinderVolumeHelper =
154 std::make_shared<const Acts::CylinderVolumeHelper>(
159 std::vector<std::shared_ptr<const Acts::ITrackingVolumeBuilder>>
166 auto pCylinderMaterial =
167 std::make_shared<const Acts::ProtoSurfaceMaterial>(pCylinderUtility);
172 std::make_shared<const Acts::ProtoSurfaceMaterial>(pDiscUtility);
175 auto pPlaneMaterial =
176 std::make_shared<const Acts::ProtoSurfaceMaterial>(pPlaneUtility);
183 352.8_mm, 407_mm, 9.012, 4.0, 1.848_g / 1_cm3);
184 std::shared_ptr<const Acts::ISurfaceMaterial> beamPipeMaterial =
185 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
188 beamPipeMaterial = pCylinderMaterial;
194 bplConfig.centralLayerRadii = std::vector<double>(1, 19.);
195 bplConfig.centralLayerHalflengthZ = std::vector<double>(1, 3000.);
196 bplConfig.centralLayerThickness = std::vector<double>(1, 0.8);
197 bplConfig.centralLayerMaterial = {beamPipeMaterial};
198 auto beamPipeBuilder = std::make_shared<const Acts::PassiveLayerBuilder>(
203 bpvConfig.volumeName =
"BeamPipe";
204 bpvConfig.layerBuilder = beamPipeBuilder;
207 bpvConfig.buildToRadiusZero =
true;
208 bpvConfig.volumeSignature = 0;
209 auto beamPipeVolumeBuilder =
210 std::make_shared<const Acts::CylinderVolumeBuilder>(
214 volumeBuilders.push_back(beamPipeVolumeBuilder);
222 std::pair<double, double> pcEnvelope(2., 2.);
224 double pCentralModuleT = 0.15;
225 double pEndcapModuleT = 0.15;
230 14., 2.32_g / 1_cm3);
238 std::shared_ptr<const Acts::ISurfaceMaterial> pCentralMaterial =
239 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(pcmbProperties);
240 std::shared_ptr<const Acts::ISurfaceMaterial> pEndcapMaterial =
241 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(pcmecProperties);
242 std::shared_ptr<const Acts::ISurfaceMaterial> pCentralModuleMaterial =
243 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
245 std::shared_ptr<const Acts::ISurfaceMaterial> pEndcapModuleMaterial =
246 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
249 pCentralMaterial = pCylinderMaterial;
250 pCentralModuleMaterial = pPlaneMaterial;
251 pEndcapMaterial = pDiscMaterial;
252 pEndcapModuleMaterial = pPlaneMaterial;
258 pplConfig.approachSurfaceEnvelope = 1.;
262 pplConfig.centralLayerBinMultipliers = {1, 1};
263 pplConfig.centralLayerRadii = {32., 72., 116., 172.};
264 pplConfig.centralLayerEnvelopes = {pcEnvelope, pcEnvelope, pcEnvelope,
266 pplConfig.centralModuleBinningSchema = {
267 {16, 14}, {32, 14}, {52, 14}, {78, 14}};
268 pplConfig.centralModuleTiltPhi = {0.14, 0.14, 0.14, 0.14};
269 pplConfig.centralModuleHalfX = {8.4, 8.4, 8.4, 8.4};
270 pplConfig.centralModuleHalfY = {36., 36., 36., 36.};
271 pplConfig.centralModuleThickness = {pCentralModuleT, pCentralModuleT,
272 pCentralModuleT, pCentralModuleT};
273 pplConfig.centralModuleMaterial = {
274 pCentralModuleMaterial, pCentralModuleMaterial, pCentralModuleMaterial,
275 pCentralModuleMaterial};
277 pplConfig.centralModuleReadoutBinsX = {336, 336, 336, 336};
278 pplConfig.centralModuleReadoutBinsY = {1280, 1280, 1280, 1280};
279 pplConfig.centralModuleReadoutSide = {-1, -1, -1, -1};
280 pplConfig.centralModuleLorentzAngle = {0.12, 0.12, 0.12, 0.12};
283 pplConfig.centralModuleFrontsideStereo = {};
284 pplConfig.centralModuleBacksideStereo = {};
285 pplConfig.centralModuleBacksideGap = {};
287 std::vector<std::vector<Acts::Vector3>> pplCentralModulePositions;
288 for (
size_t plb = 0; plb < pplConfig.centralLayerRadii.size(); ++plb) {
290 pplCentralModulePositions.push_back(
293 pplConfig.centralModuleHalfY[plb],
295 pplConfig.centralModuleBinningSchema[plb]));
297 pplConfig.centralModulePositions = pplCentralModulePositions;
301 pplConfig.posnegLayerBinMultipliers = {1, 1};
303 pplConfig.posnegLayerPositionsZ = {
307 1500 * Acts::UnitConstants::mm};
309 pplConfig.posnegLayerEnvelopeR = {
314 std::vector<double> perHX = {8.4, 8.4};
315 std::vector<double> perHY = {36., 36.};
316 std::vector<size_t> perBP = {40, 68};
317 std::vector<double> perT = {pEndcapModuleT,
319 std::vector<size_t> perBX = {336, 336};
320 std::vector<size_t> perBY = {1280, 1280};
321 std::vector<int> perRS = {-1, -1};
322 std::vector<double> perLA = {0., 0.};
323 std::vector<std::shared_ptr<const Acts::ISurfaceMaterial>> perM = {
324 pEndcapModuleMaterial, pEndcapModuleMaterial};
326 pplConfig.posnegModuleMinHalfX = std::vector<std::vector<double>>(7, perHX);
327 pplConfig.posnegModuleMaxHalfX = {};
328 pplConfig.posnegModuleHalfY = std::vector<std::vector<double>>(7, perHY);
329 pplConfig.posnegModulePhiBins = std::vector<std::vector<size_t>>(7, perBP);
330 pplConfig.posnegModuleThickness = std::vector<std::vector<double>>(7, perT);
331 pplConfig.posnegModuleReadoutBinsX =
332 std::vector<std::vector<size_t>>(7, perBX);
333 pplConfig.posnegModuleReadoutBinsY =
334 std::vector<std::vector<size_t>>(7, perBY);
335 pplConfig.posnegModuleReadoutSide = std::vector<std::vector<int>>(7, perRS);
336 pplConfig.posnegModuleLorentzAngle =
337 std::vector<std::vector<double>>(7, perLA);
338 pplConfig.posnegModuleMaterial =
339 std::vector<std::vector<std::shared_ptr<const Acts::ISurfaceMaterial>>>(
343 pplConfig.posnegModuleFrontsideStereo = {};
344 pplConfig.posnegModuleBacksideStereo = {};
345 pplConfig.posnegModuleBacksideGap = {};
347 std::vector<std::vector<std::vector<Acts::Vector3>>> pplPosnegModulePositions;
348 for (
size_t id = 0;
id < pplConfig.posnegLayerPositionsZ.size(); ++
id) {
350 pplConfig.posnegLayerPositionsZ[
id], 0.0, {4.0, 4.0}, {0.5, 0.}, 30.,
351 176., pplConfig.posnegModulePhiBins[
id],
352 pplConfig.posnegModuleHalfY[
id]));
354 pplConfig.posnegModulePositions = pplPosnegModulePositions;
357 ProtoLayerCreator pplCreator(
362 plbConfig.layerCreator = layerCreator;
363 plbConfig.layerIdentification =
"Pixel";
365 plbConfig.centralProtoLayers =
366 pplCreator.centralProtoLayers(
gctx, detectorStore);
367 plbConfig.centralLayerMaterialConcentration = {1, 1, 1, 1};
368 plbConfig.centralLayerMaterial = {pCentralMaterial, pCentralMaterial,
369 pCentralMaterial, pCentralMaterial};
372 plbConfig.posnegLayerMaterialConcentration = std::vector<int>(7, 0);
374 plbConfig.posnegLayerMaterial = {
375 pEndcapMaterial, pEndcapMaterial, pEndcapMaterial, pEndcapMaterial,
376 pEndcapMaterial, pEndcapMaterial, pEndcapMaterial};
378 plbConfig.negativeProtoLayers =
379 pplCreator.negativeProtoLayers(
gctx, detectorStore);
380 plbConfig.positiveProtoLayers =
381 pplCreator.positiveProtoLayers(
gctx, detectorStore);
384 auto pixelLayerBuilder = std::make_shared<const LayerBuilder>(
390 pvbConfig.volumeName =
"Pixel";
391 pvbConfig.buildToRadiusZero =
false;
394 pvbConfig.layerBuilder = pixelLayerBuilder;
395 pvbConfig.volumeSignature = 0;
396 auto pixelVolumeBuilder = std::make_shared<const Acts::CylinderVolumeBuilder>(
399 volumeBuilders.push_back(pixelVolumeBuilder);
407 std::shared_ptr<const Acts::ISurfaceMaterial> pstMaterial =
408 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
411 pstMaterial = pCylinderMaterial;
418 pstConfig.centralLayerHalflengthZ = std::vector<double>(1, 2800.);
419 pstConfig.centralLayerThickness = std::vector<double>(1, 1.8);
420 pstConfig.centralLayerMaterial = {pstMaterial};
421 auto pstBuilder = std::make_shared<const Acts::PassiveLayerBuilder>(
426 pstvolConfig.volumeName =
"PST";
427 pstvolConfig.buildToRadiusZero =
false;
428 pstvolConfig.layerBuilder = pstBuilder;
429 pstvolConfig.volumeSignature = 0;
430 auto pstVolumeBuilder = std::make_shared<const Acts::CylinderVolumeBuilder>(
433 volumeBuilders.push_back(pstVolumeBuilder);
445 double ssCentralModuleT = 0.25;
446 double ssEndcapModuleT = 0.25;
448 std::pair<double, double> ssEnvelope(2., 2.);
460 std::shared_ptr<const Acts::ISurfaceMaterial> ssCentralMaterial =
461 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
463 std::shared_ptr<const Acts::ISurfaceMaterial> ssEndcapMaterial =
464 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
466 std::shared_ptr<const Acts::ISurfaceMaterial> ssCentralModuleMaterial =
467 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
469 std::shared_ptr<const Acts::ISurfaceMaterial> ssEndcapModuleMaterial =
470 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
473 ssCentralMaterial = pCylinderMaterial;
474 ssCentralModuleMaterial = pPlaneMaterial;
475 ssEndcapMaterial = pDiscMaterial;
476 ssEndcapModuleMaterial = pPlaneMaterial;
483 ssplConfig.centralLayerBinMultipliers = {1, 1};
484 ssplConfig.centralLayerRadii = {260., 360., 500., 660.};
485 ssplConfig.centralLayerEnvelopes = {ssEnvelope, ssEnvelope, ssEnvelope,
488 ssplConfig.centralModuleBinningSchema = {
489 {40, 21}, {56, 21}, {78, 21}, {102, 21}};
490 ssplConfig.centralModuleTiltPhi = {-0.15, -0.15, -0.15, -0.15};
491 ssplConfig.centralModuleHalfX = {24., 24., 24., 24.};
492 ssplConfig.centralModuleHalfY = {54., 54., 54., 54.};
493 ssplConfig.centralModuleThickness = {ssCentralModuleT, ssCentralModuleT,
494 ssCentralModuleT, ssCentralModuleT};
496 ssplConfig.centralModuleReadoutBinsX = {600, 600, 600, 600};
497 ssplConfig.centralModuleReadoutBinsY = {90, 90, 90, 90};
498 ssplConfig.centralModuleReadoutSide = {1, 1, 1, 1};
499 ssplConfig.centralModuleLorentzAngle = {0.12, 0.12, 0.12, 0.12};
501 ssplConfig.centralModuleMaterial = {
502 ssCentralModuleMaterial, ssCentralModuleMaterial,
503 ssCentralModuleMaterial, ssCentralModuleMaterial};
504 ssplConfig.centralModuleFrontsideStereo = {};
505 ssplConfig.centralModuleBacksideStereo = {};
506 ssplConfig.centralModuleBacksideGap = {};
508 std::vector<std::vector<Acts::Vector3>> ssplCentralModulePositions;
509 for (
size_t sslb = 0; sslb < ssplConfig.centralLayerRadii.size(); ++sslb) {
511 ssplCentralModulePositions.push_back(
514 ssplConfig.centralModuleHalfY[sslb],
516 ssplConfig.centralModuleBinningSchema[sslb]));
518 ssplConfig.centralModulePositions = ssplCentralModulePositions;
521 std::vector<double> mrMinHx = {16.4, 24.2, 32.2};
522 std::vector<double> mrMaxHx = {24.2, 32.2, 40.0};
523 std::vector<double> mrHy = {78., 78., 78.};
526 std::vector<size_t> mrReadoutBinsX = {605, 805, 1000};
527 std::vector<size_t> mrReadoutBinsY = {130, 130, 130};
528 std::vector<int> mrReadoutSide = {1, 1, 1};
529 std::vector<double> mrLorentzAngle = {0., 0., 0.};
531 std::vector<size_t> mPhiBins = {54, 56, 60};
532 std::vector<double> mThickness = {ssEndcapModuleT, ssEndcapModuleT,
534 std::vector<std::shared_ptr<const Acts::ISurfaceMaterial>> mMaterial = {
535 ssEndcapModuleMaterial, ssEndcapModuleMaterial, ssEndcapModuleMaterial};
537 ssplConfig.posnegLayerBinMultipliers = {1, 2};
539 ssplConfig.posnegLayerPositionsZ = {1220., 1500., 1800.,
540 2150., 2550., 2950.};
541 size_t nposnegs = ssplConfig.posnegLayerPositionsZ.size();
542 ssplConfig.posnegLayerEnvelopeR = std::vector<double>(nposnegs, 5.);
544 ssplConfig.posnegModuleMinHalfX =
545 std::vector<std::vector<double>>(nposnegs, mrMinHx);
546 ssplConfig.posnegModuleMaxHalfX =
547 std::vector<std::vector<double>>(nposnegs, mrMaxHx);
548 ssplConfig.posnegModuleHalfY =
549 std::vector<std::vector<double>>(nposnegs, mrHy);
550 ssplConfig.posnegModulePhiBins =
551 std::vector<std::vector<size_t>>(nposnegs, mPhiBins);
552 ssplConfig.posnegModuleThickness =
553 std::vector<std::vector<double>>(nposnegs, mThickness);
555 ssplConfig.posnegModuleReadoutBinsX =
556 std::vector<std::vector<size_t>>(nposnegs, mrReadoutBinsX);
557 ssplConfig.posnegModuleReadoutBinsY =
558 std::vector<std::vector<size_t>>(nposnegs, mrReadoutBinsY);
559 ssplConfig.posnegModuleReadoutSide =
560 std::vector<std::vector<int>>(nposnegs, mrReadoutSide);
561 ssplConfig.posnegModuleLorentzAngle =
562 std::vector<std::vector<double>>(nposnegs, mrLorentzAngle);
564 ssplConfig.posnegModuleMaterial =
565 std::vector<std::vector<std::shared_ptr<const Acts::ISurfaceMaterial>>>(
566 nposnegs, mMaterial);
568 ssplConfig.posnegModuleFrontsideStereo = {};
569 ssplConfig.posnegModuleBacksideStereo = {};
570 ssplConfig.posnegModuleBacksideGap = {};
573 std::vector<std::vector<std::vector<Acts::Vector3>>>
574 ssplPosnegModulePositions;
575 for (
size_t id = 0;
id < ssplConfig.posnegLayerPositionsZ.size(); ++
id) {
577 ssplConfig.posnegLayerPositionsZ[
id], 6.0, {3., 3., 3.}, {0., 0., 0.},
578 240., 700., ssplConfig.posnegModulePhiBins[
id],
579 ssplConfig.posnegModuleHalfY[
id]));
581 ssplConfig.posnegModulePositions = ssplPosnegModulePositions;
584 ProtoLayerCreator ssplCreator(
590 sslbConfig.layerCreator = layerCreator;
591 sslbConfig.layerIdentification =
"SStrip";
593 sslbConfig.centralProtoLayers =
594 ssplCreator.centralProtoLayers(
gctx, detectorStore);
595 sslbConfig.centralLayerMaterialConcentration = {-1, -1, -1, -1};
596 sslbConfig.centralLayerMaterial = {ssCentralMaterial, ssCentralMaterial,
597 ssCentralMaterial, ssCentralMaterial};
600 sslbConfig.negativeProtoLayers =
601 ssplCreator.negativeProtoLayers(
gctx, detectorStore);
602 sslbConfig.positiveProtoLayers =
603 ssplCreator.positiveProtoLayers(
gctx, detectorStore);
605 sslbConfig.posnegLayerMaterialConcentration =
606 std::vector<int>(nposnegs, 0);
607 sslbConfig.posnegLayerMaterial =
608 std::vector<std::shared_ptr<const Acts::ISurfaceMaterial>>(
609 nposnegs, ssEndcapMaterial);
613 auto sstripLayerBuilder = std::make_shared<const LayerBuilder>(
619 ssvbConfig.volumeName =
"SStrip";
620 ssvbConfig.buildToRadiusZero =
false;
621 ssvbConfig.layerBuilder = sstripLayerBuilder;
622 ssvbConfig.volumeSignature = 0;
623 auto sstripVolumeBuilder =
624 std::make_shared<const Acts::CylinderVolumeBuilder>(
630 volumeBuilders.push_back(sstripVolumeBuilder);
640 std::pair<double, double> lsEnvelope(2., 2.);
642 double lsCentralModuleT = 0.35;
643 double lsEndcapModuleT = 0.35;
655 std::shared_ptr<const Acts::ISurfaceMaterial> lsCentralMaterial =
656 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
658 std::shared_ptr<const Acts::ISurfaceMaterial> lsEndcapMaterial =
659 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
661 std::shared_ptr<const Acts::ISurfaceMaterial> lsCentralModuleMaterial =
662 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
664 std::shared_ptr<const Acts::ISurfaceMaterial> lsEndcapModuleMaterial =
665 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
668 lsCentralMaterial = pCylinderMaterial;
669 lsCentralModuleMaterial = pPlaneMaterial;
670 lsEndcapMaterial = pDiscMaterial;
671 lsEndcapModuleMaterial = pPlaneMaterial;
678 lsplConfig.centralLayerBinMultipliers = {1, 1};
679 lsplConfig.centralLayerRadii = {820., 1020.};
680 lsplConfig.centralLayerEnvelopes = {lsEnvelope, lsEnvelope};
682 lsplConfig.centralModuleBinningSchema = {{120, 21}, {152, 21}};
683 lsplConfig.centralModuleTiltPhi = {-0.15, -0.15};
684 lsplConfig.centralModuleHalfX = {24., 24.};
685 lsplConfig.centralModuleHalfY = {54., 54.};
686 lsplConfig.centralModuleThickness = {lsCentralModuleT, lsCentralModuleT};
687 lsplConfig.centralModuleMaterial = {lsCentralModuleMaterial,
688 lsCentralModuleMaterial};
690 lsplConfig.centralModuleReadoutBinsX = {400, 400};
691 lsplConfig.centralModuleReadoutBinsY = {10, 10};
692 lsplConfig.centralModuleReadoutSide = {1, 1};
693 lsplConfig.centralModuleLorentzAngle = {0.08, 0.08};
695 lsplConfig.centralModuleFrontsideStereo = {};
696 lsplConfig.centralModuleBacksideStereo = {};
697 lsplConfig.centralModuleBacksideGap = {};
699 std::vector<std::vector<Acts::Vector3>> lslbCentralModulePositions;
700 for (
size_t lslb = 0; lslb < lsplConfig.centralLayerRadii.size(); ++lslb) {
702 lslbCentralModulePositions.push_back(
705 lsplConfig.centralModuleHalfY[lslb],
707 lsplConfig.centralModuleBinningSchema[lslb]));
710 lsplConfig.centralModulePositions = lslbCentralModulePositions;
712 mrMinHx = {54., 66.};
713 mrMaxHx = {64.2, 72.};
716 mThickness = {lsEndcapModuleT, lsEndcapModuleT};
717 mMaterial = {lsEndcapModuleMaterial, lsEndcapModuleMaterial};
719 mrReadoutBinsX = {1070, 1200};
720 mrReadoutBinsY = {15, 15};
721 mrReadoutSide = {1, 1};
722 mrLorentzAngle = {0., 0.};
725 lsplConfig.posnegLayerBinMultipliers = {1, 2};
726 lsplConfig.posnegLayerPositionsZ = {1220., 1500., 1800.,
727 2150., 2550., 2950.};
728 nposnegs = lsplConfig.posnegLayerPositionsZ.size();
729 lsplConfig.posnegLayerEnvelopeR = std::vector<double>(nposnegs, 5.);
731 lsplConfig.posnegModuleMinHalfX =
732 std::vector<std::vector<double>>(nposnegs, mrMinHx);
733 lsplConfig.posnegModuleMaxHalfX =
734 std::vector<std::vector<double>>(nposnegs, mrMaxHx);
735 lsplConfig.posnegModuleHalfY =
736 std::vector<std::vector<double>>(nposnegs, mrHy);
737 lsplConfig.posnegModulePhiBins =
738 std::vector<std::vector<size_t>>(nposnegs, mPhiBins);
739 lsplConfig.posnegModuleThickness =
740 std::vector<std::vector<double>>(nposnegs, mThickness);
742 lsplConfig.posnegModuleReadoutBinsX =
743 std::vector<std::vector<size_t>>(nposnegs, mrReadoutBinsX);
744 lsplConfig.posnegModuleReadoutBinsY =
745 std::vector<std::vector<size_t>>(nposnegs, mrReadoutBinsY);
746 lsplConfig.posnegModuleReadoutSide =
747 std::vector<std::vector<int>>(nposnegs, mrReadoutSide);
748 lsplConfig.posnegModuleLorentzAngle =
749 std::vector<std::vector<double>>(nposnegs, mrLorentzAngle);
751 lsplConfig.posnegModuleMaterial =
752 std::vector<std::vector<std::shared_ptr<const Acts::ISurfaceMaterial>>>(
753 nposnegs, mMaterial);
754 lsplConfig.posnegModuleFrontsideStereo = {};
755 lsplConfig.posnegModuleBacksideStereo = {};
756 lsplConfig.posnegModuleBacksideGap = {};
759 std::vector<std::vector<std::vector<Acts::Vector3>>>
760 lssbPosnegModulePositions;
761 for (
size_t id = 0;
id < lsplConfig.posnegLayerPositionsZ.size(); ++
id) {
763 lsplConfig.posnegLayerPositionsZ[
id],
765 {3., 3.}, {0., 0.}, 750., 1020., lsplConfig.posnegModulePhiBins[
id],
766 lsplConfig.posnegModuleHalfY[
id]));
768 lsplConfig.posnegModulePositions = lssbPosnegModulePositions;
771 ProtoLayerCreator lsplCreator(
777 lslbConfig.layerCreator = layerCreator;
778 lslbConfig.layerIdentification =
"LStrip";
779 lslbConfig.centralLayerMaterialConcentration = {-1, -1};
780 lslbConfig.centralLayerMaterial = {lsCentralMaterial, lsCentralMaterial};
781 lslbConfig.centralProtoLayers =
782 lsplCreator.centralProtoLayers(
gctx, detectorStore);
785 lslbConfig.posnegLayerMaterialConcentration =
786 std::vector<int>(nposnegs, 0);
787 lslbConfig.posnegLayerMaterial =
788 std::vector<std::shared_ptr<const Acts::ISurfaceMaterial>>(
789 nposnegs, lsEndcapMaterial);
790 lslbConfig.negativeProtoLayers =
791 lsplCreator.negativeProtoLayers(
gctx, detectorStore);
792 lslbConfig.positiveProtoLayers =
793 lsplCreator.positiveProtoLayers(
gctx, detectorStore);
797 auto lstripLayerBuilder = std::make_shared<const LayerBuilder>(
803 lsvbConfig.volumeName =
"LStrip";
804 lsvbConfig.buildToRadiusZero =
false;
805 lsvbConfig.layerBuilder = lstripLayerBuilder;
806 lsvbConfig.volumeSignature = 0;
807 auto lstripVolumeBuilder =
808 std::make_shared<const Acts::CylinderVolumeBuilder>(
812 volumeBuilders.push_back(lstripVolumeBuilder);
819 for (
auto& vb : volumeBuilders) {
821 [=](
const auto& context,
const auto& inner,
const auto&) {
822 return vb->trackingVolume(context, inner);
825 tgConfig.trackingVolumeHelper = cylinderVolumeHelper;
826 tgConfig.materialDecorator =
std::move(matDecorator);
828 auto cylinderGeometryBuilder =
829 std::make_shared<const Acts::TrackingGeometryBuilder>(