|
|
Go to the documentation of this file.
45 using Translation = ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<double>>;
58 template <
typename ALIGNMENT_REC>
73 template <
typename REC>
75 const std::optional<REC>&,
95 : verbosity_(iConfig.getUntrackedParameter<unsigned
int>(
"verbosity")),
96 fromDD4hep_(iConfig.getUntrackedParameter<
bool>(
"fromDD4hep",
false)),
115 desc.addUntracked<
unsigned int>(
"verbosity", 1);
117 desc.addUntracked<
bool>(
"fromDD4hep",
false);
118 descriptions.
add(
"CTPPSGeometryESModule",
desc);
127 std::deque<const DetGeomDesc*> bufferIdealGeo;
128 bufferIdealGeo.emplace_back(&idealDetRoot);
130 std::deque<DetGeomDesc*> bufferAlignedGeo;
132 bufferAlignedGeo.emplace_back(alignedDetRoot);
134 while (!bufferIdealGeo.empty()) {
135 const DetGeomDesc* idealDet = bufferIdealGeo.front();
136 DetGeomDesc* alignedDet = bufferAlignedGeo.front();
137 bufferIdealGeo.pop_front();
138 bufferAlignedGeo.pop_front();
166 const auto& idealDetChildren = idealDet->
components();
167 for (
unsigned int i = 0;
i < idealDetChildren.size();
i++) {
169 bufferIdealGeo.emplace_back(idealDetChild);
175 bufferAlignedGeo.emplace_back(alignedDetChild);
178 return std::unique_ptr<DetGeomDesc>(alignedDetRoot);
199 template <
typename REC>
201 std::optional<REC>
const& iAlignRec,
211 if (alignmentsHandle.isValid()) {
212 alignments = alignmentsHandle.product();
219 << alignments->
getSensorMap().size() <<
" sensor alignments applied.";
232 "CTPPSGeometryESModule::produceRealGD");
242 "CTPPSGeometryESModule::produceMisalignedGD");
250 return std::make_unique<CTPPSGeometry>(&gD,
verbosity_);
259 return std::make_unique<CTPPSGeometry>(&gD,
verbosity_);
const DepRecordT getRecord() const
const edm::ESGetToken< DetGeomDesc, IdealGeometryRecord > idealGDToken_
CTPPSGeometryESModule(const edm::ParameterSet &)
Event setup record containing the real (actual) geometry information.
void applyAlignment(const CTPPSRPAlignmentCorrectionData &)
const std::string DDD_CTPPS_UFSD_SEGMENT_NAME
const std::string DDD_CTPPS_PIXELS_SENSOR_NAME
const mapType & getRPMap() const
returns the map of RP alignment corrections
GDTokens(edm::ESConsumesCollector &&iCC)
void addComponent(DetGeomDesc *)
const mapType & getSensorMap() const
returns the map of sensor alignment corrections
auto setWhatProduced(T *iThis, const es::Label &iLabel={})
const std::string DDD_CTPPS_PIXELS_RP_NAME
std::unique_ptr< DetGeomDesc > produceGD(IdealGeometryRecord const &, const std::optional< REC > &, GDTokens< REC > const &, const char *name)
const std::string DDD_TOTEM_TIMING_RP_NAME
const GDTokens< RPMisalignedAlignmentRecord > gdMisTokens_
ROOT::Math::Rotation3D RotationMatrix
std::unique_ptr< DetGeomDesc > produceRealGD(const VeryForwardRealGeometryRecord &)
const std::string DDD_CTPPS_DIAMONDS_SEGMENT_NAME
static std::unique_ptr< DetGeomDesc > applyAlignments(const DetGeomDesc &, const CTPPSRPAlignmentCorrectionsData *)
CTPPSRPAlignmentCorrectionData & getRPCorrection(unsigned int id)
returns the correction value from the RP map
edm::ESGetToken< DDCompactView, IdealGeometryRecord > ddToken_
DetId geographicalID() const
void add(std::string const &label, ParameterSetDescription const &psetDescription)
const edm::ESGetToken< DetGeomDesc, VeryForwardMisalignedGeometryRecord > dgdMisToken_
const edm::ESGetToken< CTPPSRPAlignmentCorrectionsData, ALIGNMENT_REC > alignmentToken_
Compact representation of the geometrical detector hierarchy.
std::unique_ptr< CTPPSGeometry > produceRealTG(const VeryForwardRealGeometryRecord &)
const std::string DDD_CTPPS_PIXELS_SENSOR_NAME_2x2
std::vector< int > fillCopyNos(TGeoIterator &it)
ProductT const & get(ESGetToken< ProductT, DepRecordT > const &iToken) const
const GDTokens< RPRealAlignmentRecord > gdRealTokens_
~CTPPSGeometryESModule() override
std::unique_ptr< DetGeomDesc > produceIdealGD(const IdealGeometryRecord &)
const unsigned int verbosity_
const Container & components() const
const std::string DDD_CTPPS_DIAMONDS_RP_NAME
const std::string & name() const
std::unique_ptr< DetGeomDesc > produceMisalignedGD(const VeryForwardMisalignedGeometryRecord &)
const std::string DDD_TOTEM_TIMING_SENSOR_TMPL
const std::string DDD_TOTEM_RP_RP_NAME
DDD names of RP volumes.
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > Translation
Event setup record containing the misaligned geometry information. It is used for alignment studies o...
std::unique_ptr< DetGeomDesc > buildDetGeomDescFromCompactView(const DDCompactView &myCompactView)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::optional< DepRecordT > tryToGetRecord() const
#define DEFINE_FWK_EVENTSETUP_MODULE(type)
Log< level::Info, true > LogVerbatim
const edm::ESGetToken< DetGeomDesc, VeryForwardRealGeometryRecord > dgdRealToken_
const std::string DDD_TOTEM_RP_SENSOR_NAME
DDD names of sensors.
Container for CTPPS RP alignment corrections. The corrections are stored on two levels - RP and senso...
CTPPSRPAlignmentCorrectionData getFullSensorCorrection(unsigned int id, bool useRPErrors=false) const
std::unique_ptr< CTPPSGeometry > produceMisalignedTG(const VeryForwardMisalignedGeometryRecord &)
edm::ESGetToken< cms::DDCompactView, IdealGeometryRecord > dd4hepToken_