41 namespace ActsExamples {
51 double radius,
double zStagger,
double moduleHalfLength,
double lOverlap,
52 const std::pair<int, int>& binningSchema);
76 double z,
double ringStagger, std::vector<double> phiStagger,
77 std::vector<double> phiSubStagger,
double innerRadius,
double outerRadius,
78 const std::vector<size_t>& discBinning,
79 const std::vector<double>& moduleHalfLength);
100 template <
typename detector_element_t>
102 const typename detector_element_t::ContextType&
gctx,
106 std::shared_ptr<const Acts::IMaterialDecorator> matDecorator =
nullptr,
107 bool protoMaterial =
false,
111 using namespace Acts::UnitLiterals;
118 auto surfaceArrayCreator = std::make_shared<const Acts::SurfaceArrayCreator>(
123 auto layerCreator = std::make_shared<const Acts::LayerCreator>(
127 auto layerArrayCreator = std::make_shared<const Acts::LayerArrayCreator>(
131 auto tVolumeArrayCreator =
132 std::make_shared<const Acts::TrackingVolumeArrayCreator>(
138 cvhConfig.trackingVolumeArrayCreator = tVolumeArrayCreator;
139 auto cylinderVolumeHelper =
140 std::make_shared<const Acts::CylinderVolumeHelper>(
145 std::vector<std::shared_ptr<const Acts::ITrackingVolumeBuilder>>
152 auto pCylinderMaterial =
153 std::make_shared<const Acts::ProtoSurfaceMaterial>(pCylinderUtility);
158 std::make_shared<const Acts::ProtoSurfaceMaterial>(pDiscUtility);
161 auto pPlaneMaterial =
162 std::make_shared<const Acts::ProtoSurfaceMaterial>(pPlaneUtility);
169 352.8_mm, 407_mm, 9.012, 4.0, 1.848_g / 1_cm3);
170 std::shared_ptr<const Acts::ISurfaceMaterial> beamPipeMaterial =
171 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
174 beamPipeMaterial = pCylinderMaterial;
180 bplConfig.centralLayerRadii = std::vector<double>(1, 19.);
181 bplConfig.centralLayerHalflengthZ = std::vector<double>(1, 3000.);
182 bplConfig.centralLayerThickness = std::vector<double>(1, 0.8);
183 bplConfig.centralLayerMaterial = {beamPipeMaterial};
184 auto beamPipeBuilder = std::make_shared<const Acts::PassiveLayerBuilder>(
189 bpvConfig.volumeName =
"BeamPipe";
190 bpvConfig.layerBuilder = beamPipeBuilder;
193 bpvConfig.buildToRadiusZero =
true;
194 bpvConfig.volumeSignature = 0;
195 auto beamPipeVolumeBuilder =
196 std::make_shared<const Acts::CylinderVolumeBuilder>(
200 volumeBuilders.push_back(beamPipeVolumeBuilder);
208 std::pair<double, double> pcEnvelope(2., 2.);
210 double pCentralModuleT = 0.15;
211 double pEndcapModuleT = 0.15;
216 14., 2.32_g / 1_cm3);
224 std::shared_ptr<const Acts::ISurfaceMaterial> pCentralMaterial =
225 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(pcmbProperties);
226 std::shared_ptr<const Acts::ISurfaceMaterial> pEndcapMaterial =
227 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(pcmecProperties);
228 std::shared_ptr<const Acts::ISurfaceMaterial> pCentralModuleMaterial =
229 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
231 std::shared_ptr<const Acts::ISurfaceMaterial> pEndcapModuleMaterial =
232 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
235 pCentralMaterial = pCylinderMaterial;
236 pCentralModuleMaterial = pPlaneMaterial;
237 pEndcapMaterial = pDiscMaterial;
238 pEndcapModuleMaterial = pPlaneMaterial;
244 pplConfig.approachSurfaceEnvelope = 1.;
248 pplConfig.centralLayerBinMultipliers = {1, 1};
249 pplConfig.centralLayerRadii = {32., 72., 116., 172.};
250 pplConfig.centralLayerEnvelopes = {pcEnvelope, pcEnvelope, pcEnvelope,
252 pplConfig.centralModuleBinningSchema = {
253 {16, 14}, {32, 14}, {52, 14}, {78, 14}};
254 pplConfig.centralModuleTiltPhi = {0.14, 0.14, 0.14, 0.14};
255 pplConfig.centralModuleHalfX = {8.4, 8.4, 8.4, 8.4};
256 pplConfig.centralModuleHalfY = {36., 36., 36., 36.};
257 pplConfig.centralModuleThickness = {pCentralModuleT, pCentralModuleT,
258 pCentralModuleT, pCentralModuleT};
259 pplConfig.centralModuleMaterial = {
260 pCentralModuleMaterial, pCentralModuleMaterial, pCentralModuleMaterial,
261 pCentralModuleMaterial};
263 pplConfig.centralModuleReadoutBinsX = {336, 336, 336, 336};
264 pplConfig.centralModuleReadoutBinsY = {1280, 1280, 1280, 1280};
265 pplConfig.centralModuleReadoutSide = {-1, -1, -1, -1};
266 pplConfig.centralModuleLorentzAngle = {0.12, 0.12, 0.12, 0.12};
269 pplConfig.centralModuleFrontsideStereo = {};
270 pplConfig.centralModuleBacksideStereo = {};
271 pplConfig.centralModuleBacksideGap = {};
273 std::vector<std::vector<Acts::Vector3D>> pplCentralModulePositions;
274 for (
size_t plb = 0; plb < pplConfig.centralLayerRadii.size(); ++plb) {
276 pplCentralModulePositions.push_back(
279 pplConfig.centralModuleHalfY[plb],
281 pplConfig.centralModuleBinningSchema[plb]));
283 pplConfig.centralModulePositions = pplCentralModulePositions;
287 pplConfig.posnegLayerBinMultipliers = {1, 1};
289 pplConfig.posnegLayerPositionsZ = {
293 1500 * Acts::UnitConstants::mm};
295 pplConfig.posnegLayerEnvelopeR = {
300 std::vector<double> perHX = {8.4, 8.4};
301 std::vector<double> perHY = {36., 36.};
302 std::vector<size_t> perBP = {40, 68};
303 std::vector<double> perT = {pEndcapModuleT,
305 std::vector<size_t> perBX = {336, 336};
306 std::vector<size_t> perBY = {1280, 1280};
307 std::vector<int> perRS = {-1, -1};
308 std::vector<double> perLA = {0., 0.};
309 std::vector<std::shared_ptr<const Acts::ISurfaceMaterial>> perM = {
310 pEndcapModuleMaterial, pEndcapModuleMaterial};
312 pplConfig.posnegModuleMinHalfX = std::vector<std::vector<double>>(7, perHX);
313 pplConfig.posnegModuleMaxHalfX = {};
314 pplConfig.posnegModuleHalfY = std::vector<std::vector<double>>(7, perHY);
315 pplConfig.posnegModulePhiBins = std::vector<std::vector<size_t>>(7, perBP);
316 pplConfig.posnegModuleThickness = std::vector<std::vector<double>>(7, perT);
317 pplConfig.posnegModuleReadoutBinsX =
318 std::vector<std::vector<size_t>>(7, perBX);
319 pplConfig.posnegModuleReadoutBinsY =
320 std::vector<std::vector<size_t>>(7, perBY);
321 pplConfig.posnegModuleReadoutSide = std::vector<std::vector<int>>(7, perRS);
322 pplConfig.posnegModuleLorentzAngle =
323 std::vector<std::vector<double>>(7, perLA);
324 pplConfig.posnegModuleMaterial =
325 std::vector<std::vector<std::shared_ptr<const Acts::ISurfaceMaterial>>>(
329 pplConfig.posnegModuleFrontsideStereo = {};
330 pplConfig.posnegModuleBacksideStereo = {};
331 pplConfig.posnegModuleBacksideGap = {};
333 std::vector<std::vector<std::vector<Acts::Vector3D>>>
334 pplPosnegModulePositions;
335 for (
size_t id = 0;
id < pplConfig.posnegLayerPositionsZ.size(); ++id) {
337 pplConfig.posnegLayerPositionsZ[
id], 0.0, {4.0, 4.0}, {0.5, 0.}, 30.,
338 176., pplConfig.posnegModulePhiBins[id],
339 pplConfig.posnegModuleHalfY[id]));
341 pplConfig.posnegModulePositions = pplPosnegModulePositions;
344 ProtoLayerCreator pplCreator(
349 plbConfig.layerCreator = layerCreator;
350 plbConfig.layerIdentification =
"Pixel";
352 plbConfig.centralProtoLayers =
353 pplCreator.centralProtoLayers(
gctx, detectorStore);
354 plbConfig.centralLayerMaterialConcentration = {1, 1, 1, 1};
355 plbConfig.centralLayerMaterial = {pCentralMaterial, pCentralMaterial,
356 pCentralMaterial, pCentralMaterial};
359 plbConfig.posnegLayerMaterialConcentration = std::vector<int>(7, 0);
361 plbConfig.posnegLayerMaterial = {
362 pEndcapMaterial, pEndcapMaterial, pEndcapMaterial, pEndcapMaterial,
363 pEndcapMaterial, pEndcapMaterial, pEndcapMaterial};
365 plbConfig.negativeProtoLayers =
366 pplCreator.negativeProtoLayers(
gctx, detectorStore);
367 plbConfig.positiveProtoLayers =
368 pplCreator.positiveProtoLayers(
gctx, detectorStore);
371 auto pixelLayerBuilder = std::make_shared<const LayerBuilder>(
377 pvbConfig.volumeName =
"Pixel";
378 pvbConfig.buildToRadiusZero =
false;
381 pvbConfig.layerBuilder = pixelLayerBuilder;
382 pvbConfig.volumeSignature = 0;
383 auto pixelVolumeBuilder = std::make_shared<const Acts::CylinderVolumeBuilder>(
386 volumeBuilders.push_back(pixelVolumeBuilder);
394 std::shared_ptr<const Acts::ISurfaceMaterial> pstMaterial =
395 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
398 pstMaterial = pCylinderMaterial;
405 pstConfig.centralLayerHalflengthZ = std::vector<double>(1, 2800.);
406 pstConfig.centralLayerThickness = std::vector<double>(1, 1.8);
407 pstConfig.centralLayerMaterial = {pstMaterial};
408 auto pstBuilder = std::make_shared<const Acts::PassiveLayerBuilder>(
413 pstvolConfig.volumeName =
"PST";
414 pstvolConfig.buildToRadiusZero =
false;
415 pstvolConfig.layerBuilder = pstBuilder;
416 pstvolConfig.volumeSignature = 0;
417 auto pstVolumeBuilder = std::make_shared<const Acts::CylinderVolumeBuilder>(
420 volumeBuilders.push_back(pstVolumeBuilder);
432 double ssCentralModuleT = 0.25;
433 double ssEndcapModuleT = 0.25;
435 std::pair<double, double> ssEnvelope(2., 2.);
447 std::shared_ptr<const Acts::ISurfaceMaterial> ssCentralMaterial =
448 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
450 std::shared_ptr<const Acts::ISurfaceMaterial> ssEndcapMaterial =
451 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
453 std::shared_ptr<const Acts::ISurfaceMaterial> ssCentralModuleMaterial =
454 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
456 std::shared_ptr<const Acts::ISurfaceMaterial> ssEndcapModuleMaterial =
457 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
460 ssCentralMaterial = pCylinderMaterial;
461 ssCentralModuleMaterial = pPlaneMaterial;
462 ssEndcapMaterial = pDiscMaterial;
463 ssEndcapModuleMaterial = pPlaneMaterial;
470 ssplConfig.centralLayerBinMultipliers = {1, 1};
471 ssplConfig.centralLayerRadii = {260., 360., 500., 660.};
472 ssplConfig.centralLayerEnvelopes = {ssEnvelope, ssEnvelope, ssEnvelope,
475 ssplConfig.centralModuleBinningSchema = {
476 {40, 21}, {56, 21}, {78, 21}, {102, 21}};
477 ssplConfig.centralModuleTiltPhi = {-0.15, -0.15, -0.15, -0.15};
478 ssplConfig.centralModuleHalfX = {24., 24., 24., 24.};
479 ssplConfig.centralModuleHalfY = {54., 54., 54., 54.};
480 ssplConfig.centralModuleThickness = {ssCentralModuleT, ssCentralModuleT,
481 ssCentralModuleT, ssCentralModuleT};
483 ssplConfig.centralModuleReadoutBinsX = {600, 600, 600, 600};
484 ssplConfig.centralModuleReadoutBinsY = {90, 90, 90, 90};
485 ssplConfig.centralModuleReadoutSide = {1, 1, 1, 1};
486 ssplConfig.centralModuleLorentzAngle = {0.12, 0.12, 0.12, 0.12};
488 ssplConfig.centralModuleMaterial = {
489 ssCentralModuleMaterial, ssCentralModuleMaterial,
490 ssCentralModuleMaterial, ssCentralModuleMaterial};
491 ssplConfig.centralModuleFrontsideStereo = {};
492 ssplConfig.centralModuleBacksideStereo = {};
493 ssplConfig.centralModuleBacksideGap = {};
495 std::vector<std::vector<Acts::Vector3D>> ssplCentralModulePositions;
496 for (
size_t sslb = 0; sslb < ssplConfig.centralLayerRadii.size(); ++sslb) {
498 ssplCentralModulePositions.push_back(
501 ssplConfig.centralModuleHalfY[sslb],
503 ssplConfig.centralModuleBinningSchema[sslb]));
505 ssplConfig.centralModulePositions = ssplCentralModulePositions;
508 std::vector<double> mrMinHx = {16.4, 24.2, 32.2};
509 std::vector<double> mrMaxHx = {24.2, 32.2, 40.0};
510 std::vector<double> mrHy = {78., 78., 78.};
513 std::vector<size_t> mrReadoutBinsX = {605, 805, 1000};
514 std::vector<size_t> mrReadoutBinsY = {130, 130, 130};
515 std::vector<int> mrReadoutSide = {1, 1, 1};
516 std::vector<double> mrLorentzAngle = {0., 0., 0.};
518 std::vector<size_t> mPhiBins = {54, 56, 60};
519 std::vector<double> mThickness = {ssEndcapModuleT, ssEndcapModuleT,
521 std::vector<std::shared_ptr<const Acts::ISurfaceMaterial>> mMaterial = {
522 ssEndcapModuleMaterial, ssEndcapModuleMaterial, ssEndcapModuleMaterial};
524 ssplConfig.posnegLayerBinMultipliers = {1, 2};
526 ssplConfig.posnegLayerPositionsZ = {1220., 1500., 1800.,
527 2150., 2550., 2950.};
528 size_t nposnegs = ssplConfig.posnegLayerPositionsZ.size();
529 ssplConfig.posnegLayerEnvelopeR = std::vector<double>(nposnegs, 5.);
531 ssplConfig.posnegModuleMinHalfX =
532 std::vector<std::vector<double>>(nposnegs, mrMinHx);
533 ssplConfig.posnegModuleMaxHalfX =
534 std::vector<std::vector<double>>(nposnegs, mrMaxHx);
535 ssplConfig.posnegModuleHalfY =
536 std::vector<std::vector<double>>(nposnegs, mrHy);
537 ssplConfig.posnegModulePhiBins =
538 std::vector<std::vector<size_t>>(nposnegs, mPhiBins);
539 ssplConfig.posnegModuleThickness =
540 std::vector<std::vector<double>>(nposnegs, mThickness);
542 ssplConfig.posnegModuleReadoutBinsX =
543 std::vector<std::vector<size_t>>(nposnegs, mrReadoutBinsX);
544 ssplConfig.posnegModuleReadoutBinsY =
545 std::vector<std::vector<size_t>>(nposnegs, mrReadoutBinsY);
546 ssplConfig.posnegModuleReadoutSide =
547 std::vector<std::vector<int>>(nposnegs, mrReadoutSide);
548 ssplConfig.posnegModuleLorentzAngle =
549 std::vector<std::vector<double>>(nposnegs, mrLorentzAngle);
551 ssplConfig.posnegModuleMaterial =
552 std::vector<std::vector<std::shared_ptr<const Acts::ISurfaceMaterial>>>(
553 nposnegs, mMaterial);
555 ssplConfig.posnegModuleFrontsideStereo = {};
556 ssplConfig.posnegModuleBacksideStereo = {};
557 ssplConfig.posnegModuleBacksideGap = {};
560 std::vector<std::vector<std::vector<Acts::Vector3D>>>
561 ssplPosnegModulePositions;
562 for (
size_t id = 0;
id < ssplConfig.posnegLayerPositionsZ.size(); ++id) {
564 ssplConfig.posnegLayerPositionsZ[
id], 6.0, {3., 3., 3.}, {0., 0., 0.},
565 240., 700., ssplConfig.posnegModulePhiBins[id],
566 ssplConfig.posnegModuleHalfY[id]));
568 ssplConfig.posnegModulePositions = ssplPosnegModulePositions;
571 ProtoLayerCreator ssplCreator(
577 sslbConfig.layerCreator = layerCreator;
578 sslbConfig.layerIdentification =
"SStrip";
580 sslbConfig.centralProtoLayers =
581 ssplCreator.centralProtoLayers(
gctx, detectorStore);
582 sslbConfig.centralLayerMaterialConcentration = {-1, -1, -1, -1};
583 sslbConfig.centralLayerMaterial = {ssCentralMaterial, ssCentralMaterial,
584 ssCentralMaterial, ssCentralMaterial};
587 sslbConfig.negativeProtoLayers =
588 ssplCreator.negativeProtoLayers(
gctx, detectorStore);
589 sslbConfig.positiveProtoLayers =
590 ssplCreator.positiveProtoLayers(
gctx, detectorStore);
592 sslbConfig.posnegLayerMaterialConcentration =
593 std::vector<int>(nposnegs, 0);
594 sslbConfig.posnegLayerMaterial =
595 std::vector<std::shared_ptr<const Acts::ISurfaceMaterial>>(
596 nposnegs, ssEndcapMaterial);
600 auto sstripLayerBuilder = std::make_shared<const LayerBuilder>(
606 ssvbConfig.volumeName =
"SStrip";
607 ssvbConfig.buildToRadiusZero =
false;
608 ssvbConfig.layerBuilder = sstripLayerBuilder;
609 ssvbConfig.volumeSignature = 0;
610 auto sstripVolumeBuilder =
611 std::make_shared<const Acts::CylinderVolumeBuilder>(
617 volumeBuilders.push_back(sstripVolumeBuilder);
627 std::pair<double, double> lsEnvelope(2., 2.);
629 double lsCentralModuleT = 0.35;
630 double lsEndcapModuleT = 0.35;
642 std::shared_ptr<const Acts::ISurfaceMaterial> lsCentralMaterial =
643 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
645 std::shared_ptr<const Acts::ISurfaceMaterial> lsEndcapMaterial =
646 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
648 std::shared_ptr<const Acts::ISurfaceMaterial> lsCentralModuleMaterial =
649 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
651 std::shared_ptr<const Acts::ISurfaceMaterial> lsEndcapModuleMaterial =
652 std::make_shared<const Acts::HomogeneousSurfaceMaterial>(
655 lsCentralMaterial = pCylinderMaterial;
656 lsCentralModuleMaterial = pPlaneMaterial;
657 lsEndcapMaterial = pDiscMaterial;
658 lsEndcapModuleMaterial = pPlaneMaterial;
665 lsplConfig.centralLayerBinMultipliers = {1, 1};
666 lsplConfig.centralLayerRadii = {820., 1020.};
667 lsplConfig.centralLayerEnvelopes = {lsEnvelope, lsEnvelope};
669 lsplConfig.centralModuleBinningSchema = {{120, 21}, {152, 21}};
670 lsplConfig.centralModuleTiltPhi = {-0.15, -0.15};
671 lsplConfig.centralModuleHalfX = {24., 24.};
672 lsplConfig.centralModuleHalfY = {54., 54.};
673 lsplConfig.centralModuleThickness = {lsCentralModuleT, lsCentralModuleT};
674 lsplConfig.centralModuleMaterial = {lsCentralModuleMaterial,
675 lsCentralModuleMaterial};
677 lsplConfig.centralModuleReadoutBinsX = {400, 400};
678 lsplConfig.centralModuleReadoutBinsY = {10, 10};
679 lsplConfig.centralModuleReadoutSide = {1, 1};
680 lsplConfig.centralModuleLorentzAngle = {0.08, 0.08};
682 lsplConfig.centralModuleFrontsideStereo = {};
683 lsplConfig.centralModuleBacksideStereo = {};
684 lsplConfig.centralModuleBacksideGap = {};
686 std::vector<std::vector<Acts::Vector3D>> lslbCentralModulePositions;
687 for (
size_t lslb = 0; lslb < lsplConfig.centralLayerRadii.size(); ++lslb) {
689 lslbCentralModulePositions.push_back(
692 lsplConfig.centralModuleHalfY[lslb],
694 lsplConfig.centralModuleBinningSchema[lslb]));
697 lsplConfig.centralModulePositions = lslbCentralModulePositions;
699 mrMinHx = {54., 66.};
700 mrMaxHx = {64.2, 72.};
703 mThickness = {lsEndcapModuleT, lsEndcapModuleT};
704 mMaterial = {lsEndcapModuleMaterial, lsEndcapModuleMaterial};
706 mrReadoutBinsX = {1070, 1200};
707 mrReadoutBinsY = {15, 15};
708 mrReadoutSide = {1, 1};
709 mrLorentzAngle = {0., 0.};
712 lsplConfig.posnegLayerBinMultipliers = {1, 2};
713 lsplConfig.posnegLayerPositionsZ = {1220., 1500., 1800.,
714 2150., 2550., 2950.};
715 nposnegs = lsplConfig.posnegLayerPositionsZ.size();
716 lsplConfig.posnegLayerEnvelopeR = std::vector<double>(nposnegs, 5.);
718 lsplConfig.posnegModuleMinHalfX =
719 std::vector<std::vector<double>>(nposnegs, mrMinHx);
720 lsplConfig.posnegModuleMaxHalfX =
721 std::vector<std::vector<double>>(nposnegs, mrMaxHx);
722 lsplConfig.posnegModuleHalfY =
723 std::vector<std::vector<double>>(nposnegs, mrHy);
724 lsplConfig.posnegModulePhiBins =
725 std::vector<std::vector<size_t>>(nposnegs, mPhiBins);
726 lsplConfig.posnegModuleThickness =
727 std::vector<std::vector<double>>(nposnegs, mThickness);
729 lsplConfig.posnegModuleReadoutBinsX =
730 std::vector<std::vector<size_t>>(nposnegs, mrReadoutBinsX);
731 lsplConfig.posnegModuleReadoutBinsY =
732 std::vector<std::vector<size_t>>(nposnegs, mrReadoutBinsY);
733 lsplConfig.posnegModuleReadoutSide =
734 std::vector<std::vector<int>>(nposnegs, mrReadoutSide);
735 lsplConfig.posnegModuleLorentzAngle =
736 std::vector<std::vector<double>>(nposnegs, mrLorentzAngle);
738 lsplConfig.posnegModuleMaterial =
739 std::vector<std::vector<std::shared_ptr<const Acts::ISurfaceMaterial>>>(
740 nposnegs, mMaterial);
741 lsplConfig.posnegModuleFrontsideStereo = {};
742 lsplConfig.posnegModuleBacksideStereo = {};
743 lsplConfig.posnegModuleBacksideGap = {};
746 std::vector<std::vector<std::vector<Acts::Vector3D>>>
747 lssbPosnegModulePositions;
748 for (
size_t id = 0;
id < lsplConfig.posnegLayerPositionsZ.size(); ++id) {
750 lsplConfig.posnegLayerPositionsZ[
id],
752 {3., 3.}, {0., 0.}, 750., 1020., lsplConfig.posnegModulePhiBins[id],
753 lsplConfig.posnegModuleHalfY[id]));
755 lsplConfig.posnegModulePositions = lssbPosnegModulePositions;
758 ProtoLayerCreator lsplCreator(
764 lslbConfig.layerCreator = layerCreator;
765 lslbConfig.layerIdentification =
"LStrip";
766 lslbConfig.centralLayerMaterialConcentration = {-1, -1};
767 lslbConfig.centralLayerMaterial = {lsCentralMaterial, lsCentralMaterial};
768 lslbConfig.centralProtoLayers =
769 lsplCreator.centralProtoLayers(
gctx, detectorStore);
772 lslbConfig.posnegLayerMaterialConcentration =
773 std::vector<int>(nposnegs, 0);
774 lslbConfig.posnegLayerMaterial =
775 std::vector<std::shared_ptr<const Acts::ISurfaceMaterial>>(
776 nposnegs, lsEndcapMaterial);
777 lslbConfig.negativeProtoLayers =
778 lsplCreator.negativeProtoLayers(
gctx, detectorStore);
779 lslbConfig.positiveProtoLayers =
780 lsplCreator.positiveProtoLayers(
gctx, detectorStore);
784 auto lstripLayerBuilder = std::make_shared<const LayerBuilder>(
790 lsvbConfig.volumeName =
"LStrip";
791 lsvbConfig.buildToRadiusZero =
false;
792 lsvbConfig.layerBuilder = lstripLayerBuilder;
793 lsvbConfig.volumeSignature = 0;
794 auto lstripVolumeBuilder =
795 std::make_shared<const Acts::CylinderVolumeBuilder>(
799 volumeBuilders.push_back(lstripVolumeBuilder);
806 for (
auto& vb : volumeBuilders) {
808 [=](
const auto& context,
const auto& inner,
const auto&) {
809 return vb->trackingVolume(context, inner);
812 tgConfig.trackingVolumeHelper = cylinderVolumeHelper;
813 tgConfig.materialDecorator = matDecorator;
815 auto cylinderGeometryBuilder =
816 std::make_shared<const Acts::TrackingGeometryBuilder>(