11 #include <boost/program_options.hpp>
26 boost::program_options::options_description& opt)
const {
34 boost::program_options::value<size_t>()->default_value(1324354657),
35 "Seed for the decorator random numbers.")(
37 boost::program_options::value<size_t>()->default_value(100),
38 "Size of a valid IOV.")(
40 boost::program_options::value<size_t>()->default_value(200),
41 "Span until garbage collection is active.")(
43 boost::program_options::value<double>()->default_value(100.),
44 "Sigma of the in-plane misalignment in [um]")(
46 boost::program_options::value<double>()->default_value(50.),
47 "Sigma of the out-of-plane misalignment in [um]")(
49 boost::program_options::value<double>()->default_value(20.),
50 "Sigma of the in-plane rotation misalignment in [mrad]")(
52 boost::program_options::value<double>()->default_value(0.),
53 "Sigma of the out-of-plane rotation misalignment in [mrad]")(
55 boost::program_options::value<size_t>()->default_value(3),
56 "Output log level of the alignment decorator.")(
58 boost::program_options::value<bool>()->default_value(
false),
59 "Keep the first iov batch nominal.");
63 const boost::program_options::variables_map& vm,
64 std::shared_ptr<const Acts::IMaterialDecorator> mdecorator)
65 -> std::pair<TrackingGeometryPtr, ContextDecorators> {
69 auto buildLevel = vm[
"geo-generic-buildlevel"].template as<size_t>();
79 (vm[
"mat-input-type"].template as<std::string>() ==
"proto");
83 FW::Generic::buildDetector<DetectorElement>(
84 nominalContext, detectorStore, buildLevel, std::move(mdecorator),
85 buildProto, surfaceLogLevel, layerLogLevel, volumeLogLevel);
92 randomNumberConfig.
seed = vm[
"align-seed"].template as<size_t>();
93 auto randomNumberSvc =
94 std::make_shared<FW::RandomNumbers>(randomNumberConfig);
99 agcsConfig.iovSize = vm[
"align-iovsize"].template as<size_t>();
100 agcsConfig.flushSize = vm[
"align-flushsize"].template as<size_t>();
103 double sigmaIp = vm[
"align-sigma-iplane"].template as<double>();
104 double sigmaOp = vm[
"align-sigma-oplane"].template as<double>();
105 double sigmaIr = vm[
"align-sigma-irot"].template as<double>();
106 double sigmaOr = vm[
"align-sigma-orot"].template as<double>();
110 agcsConfig.aSigmaX = sigmaOr * 0.001;
111 agcsConfig.aSigmaY = sigmaOr * 0.001;
112 agcsConfig.aSigmaZ = sigmaIr * 0.001;
113 agcsConfig.randomNumberSvc = randomNumberSvc;
114 agcsConfig.firstIovNominal = vm[
"align-firstnominal"].template as<bool>();
121 if (vm[
"bf-context-scalable"].
template as<bool>()) {
123 bfsConfig.
scalor = vm[
"bf-bscalor"].template as<double>();
125 auto bfDecorator = std::make_shared<FW::BField::BFieldScalor>(bfsConfig);
127 aContextDecorators.push_back(bfDecorator);
131 return std::make_pair<TrackingGeometryPtr, ContextDecorators>(
132 std::move(aTrackingGeometry), std::move(aContextDecorators));