CMS 3D CMS Logo

CTPPSGeometryESModule.cc
Go to the documentation of this file.
1 /****************************************************************************
2 *
3 * Authors:
4 * Jan Kaspar (jan.kaspar@gmail.com)
5 * Dominik Mierzejewski <dmierzej@cern.ch>
6 *
7 ****************************************************************************/
8 
14 
21 
23 
28 
30 //#include "CondFormats/AlignmentRecord/interface/CTPPSRPAlignmentCorrectionsDataRcd.h"
31 
33 
37 
41 
42 #include <regex>
43 
53 public:
55  ~CTPPSGeometryESModule() override {}
56 
57  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
58 
59 private:
60  std::unique_ptr<DetGeomDesc> produceIdealGD(const IdealGeometryRecord&);
61 
62  template <typename ALIGNMENT_REC>
63  struct GDTokens {
64  explicit GDTokens(edm::ESConsumesCollector&& iCC)
66  alignmentToken_{iCC.consumesFrom<CTPPSRPAlignmentCorrectionsData, ALIGNMENT_REC>(edm::ESInputTag())} {}
69  };
70 
71  std::unique_ptr<DetGeomDesc> produceRealGD(const VeryForwardRealGeometryRecord&);
72  std::unique_ptr<CTPPSGeometry> produceRealTG(const VeryForwardRealGeometryRecord&);
73 
74  std::unique_ptr<DetGeomDesc> produceMisalignedGD(const VeryForwardMisalignedGeometryRecord&);
75  std::unique_ptr<CTPPSGeometry> produceMisalignedTG(const VeryForwardMisalignedGeometryRecord&);
76 
77  template <typename REC>
78  std::unique_ptr<DetGeomDesc> produceGD(IdealGeometryRecord const&,
79  const std::optional<REC>&,
80  GDTokens<REC> const&,
81  const char* name);
82 
84  static void buildDetGeomDesc(DDFilteredView* fv, DetGeomDesc* gd);
85 
86  const unsigned int verbosity_;
88 
91 
94 };
95 
96 //----------------------------------------------------------------------------------------------------
97 //----------------------------------------------------------------------------------------------------
98 
100  : verbosity_(iConfig.getUntrackedParameter<unsigned int>("verbosity")),
102  .consumes<DDCompactView>(edm::ESInputTag(
103  "" /*optional module label */, iConfig.getParameter<std::string>("compactViewTag")))},
104  gdRealTokens_{setWhatProduced(this, &CTPPSGeometryESModule::produceRealGD)},
105  gdMisTokens_{setWhatProduced(this, &CTPPSGeometryESModule::produceMisalignedGD)},
106  dgdRealToken_{
107  setWhatProduced(this, &CTPPSGeometryESModule::produceRealTG).consumes<DetGeomDesc>(edm::ESInputTag())},
108  dgdMisToken_{
109  setWhatProduced(this, &CTPPSGeometryESModule::produceMisalignedTG).consumes<DetGeomDesc>(edm::ESInputTag())} {
110 }
111 
114  desc.addUntracked<unsigned int>("verbosity", 1);
115  desc.add<std::string>("compactViewTag", std::string());
116  descriptions.add("DoodadESSource", desc);
117 }
118 
119 //----------------------------------------------------------------------------------------------------
120 
122  const CTPPSRPAlignmentCorrectionsData* alignments,
123  DetGeomDesc*& newGD) {
124  newGD = new DetGeomDesc(idealGD);
125  std::deque<const DetGeomDesc*> buffer;
126  std::deque<DetGeomDesc*> bufferNew;
127  buffer.emplace_back(&idealGD);
128  bufferNew.emplace_back(newGD);
129 
130  while (!buffer.empty()) {
131  const DetGeomDesc* sD = buffer.front();
132  DetGeomDesc* pD = bufferNew.front();
133  buffer.pop_front();
134  bufferNew.pop_front();
135 
136  const std::string name = pD->name();
137 
138  // Is it sensor? If yes, apply full sensor alignments
141  std::regex_match(name, std::regex(DDD_TOTEM_TIMING_SENSOR_TMPL))) {
142  unsigned int plId = pD->geographicalID();
143 
144  if (alignments) {
145  const auto& ac = alignments->getFullSensorCorrection(plId);
146  pD->applyAlignment(ac);
147  }
148  }
149 
150  // Is it RP box? If yes, apply RP alignments
153  unsigned int rpId = pD->geographicalID();
154 
155  if (alignments) {
156  const auto& ac = alignments->getRPCorrection(rpId);
157  pD->applyAlignment(ac);
158  }
159  }
160 
161  // create and add children
162  for (unsigned int i = 0; i < sD->components().size(); i++) {
163  const DetGeomDesc* sDC = sD->components()[i];
164  buffer.emplace_back(sDC);
165 
166  // create new node with the same information as in sDC and add it as a child of pD
167  DetGeomDesc* cD = new DetGeomDesc(*sDC);
168  pD->addComponent(cD);
169 
170  bufferNew.emplace_back(cD);
171  }
172  }
173 }
174 
175 //----------------------------------------------------------------------------------------------------
176 
178  // try to dive into next level
179  if (!fv->firstChild())
180  return;
181 
182  // loop over siblings in the level
183  do {
184  // create new DetGeomDesc node and add it to the parent's (gd) list
185  DetGeomDesc* newGD = new DetGeomDesc(fv);
186 
187  const std::string name = fv->logicalPart().name().name();
188 
189  // strip sensors
191  const std::vector<int>& copy_num = fv->copyNumbers();
192  // check size of copy numubers array
193  if (copy_num.size() < 3)
194  throw cms::Exception("DDDTotemRPContruction")
195  << "size of copyNumbers for strip sensor is " << copy_num.size() << ". It must be >= 3.";
196 
197  // extract information
198  const unsigned int decRPId = copy_num[copy_num.size() - 3];
199  const unsigned int arm = decRPId / 100;
200  const unsigned int station = (decRPId % 100) / 10;
201  const unsigned int rp = decRPId % 10;
202  const unsigned int detector = copy_num[copy_num.size() - 1];
203  newGD->setGeographicalID(TotemRPDetId(arm, station, rp, detector));
204  }
205 
206  // strip and pixels RPs
208  unsigned int decRPId = fv->copyno();
209 
210  // check if it is a pixel RP
211  if (decRPId >= 10000) {
212  decRPId = decRPId % 10000;
213  const unsigned int armIdx = (decRPId / 100) % 10;
214  const unsigned int stIdx = (decRPId / 10) % 10;
215  const unsigned int rpIdx = decRPId % 10;
216  newGD->setGeographicalID(CTPPSPixelDetId(armIdx, stIdx, rpIdx));
217  } else {
218  const unsigned int armIdx = (decRPId / 100) % 10;
219  const unsigned int stIdx = (decRPId / 10) % 10;
220  const unsigned int rpIdx = decRPId % 10;
221  newGD->setGeographicalID(TotemRPDetId(armIdx, stIdx, rpIdx));
222  }
223  }
224 
225  else if (std::regex_match(name, std::regex(DDD_TOTEM_TIMING_SENSOR_TMPL))) {
226  const std::vector<int>& copy_num = fv->copyNumbers();
227  // check size of copy numbers array
228  if (copy_num.size() < 4)
229  throw cms::Exception("DDDTotemRPContruction")
230  << "size of copyNumbers for TOTEM timing sensor is " << copy_num.size() << ". It must be >= 4.";
231 
232  const unsigned int decRPId = copy_num[copy_num.size() - 4];
233  const unsigned int arm = decRPId / 100, station = (decRPId % 100) / 10, rp = decRPId % 10;
234  const unsigned int plane = copy_num[copy_num.size() - 2], channel = copy_num[copy_num.size() - 1];
235  newGD->setGeographicalID(TotemTimingDetId(arm, station, rp, plane, channel));
236  }
237 
238  else if (name == DDD_TOTEM_TIMING_RP_NAME) {
239  const unsigned int arm = fv->copyno() / 100, station = (fv->copyno() % 100) / 10, rp = fv->copyno() % 10;
240  newGD->setGeographicalID(TotemTimingDetId(arm, station, rp));
241  }
242 
243  // pixel sensors
244  else if (name == DDD_CTPPS_PIXELS_SENSOR_NAME) {
245  const std::vector<int>& copy_num = fv->copyNumbers();
246  // check size of copy numubers array
247  if (copy_num.size() < 4)
248  throw cms::Exception("DDDTotemRPContruction")
249  << "size of copyNumbers for pixel sensor is " << copy_num.size() << ". It must be >= 4.";
250 
251  // extract information
252  const unsigned int decRPId = copy_num[copy_num.size() - 4] % 10000;
253  const unsigned int arm = decRPId / 100;
254  const unsigned int station = (decRPId % 100) / 10;
255  const unsigned int rp = decRPId % 10;
256  const unsigned int detector = copy_num[copy_num.size() - 2] - 1;
258  }
259 
260  // diamond/UFSD sensors
262  const std::vector<int>& copy_num = fv->copyNumbers();
263 
264  const unsigned int id = copy_num[copy_num.size() - 1];
265  const unsigned int arm = copy_num[1] - 1;
266  const unsigned int station = 1;
267  const unsigned int rp = 6;
268  const unsigned int plane = (id / 100);
269  const unsigned int channel = id % 100;
270 
271  newGD->setGeographicalID(CTPPSDiamondDetId(arm, station, rp, plane, channel));
272  }
273 
274  // diamond/UFSD RPs
275  else if (name == DDD_CTPPS_DIAMONDS_RP_NAME) {
276  const std::vector<int>& copy_num = fv->copyNumbers();
277 
278  // check size of copy numubers array
279  if (copy_num.size() < 2)
280  throw cms::Exception("DDDTotemRPContruction")
281  << "size of copyNumbers for diamond RP is " << copy_num.size() << ". It must be >= 2.";
282 
283  const unsigned int arm = copy_num[1] - 1;
284  const unsigned int station = 1;
285  const unsigned int rp = 6;
286 
287  newGD->setGeographicalID(CTPPSDiamondDetId(arm, station, rp));
288  }
289 
290  // add component
291  gd->addComponent(newGD);
292 
293  // recursion
294  buildDetGeomDesc(fv, newGD);
295  } while (fv->nextSibling());
296 
297  // go a level up
298  fv->parent();
299 }
300 
301 //----------------------------------------------------------------------------------------------------
302 
303 std::unique_ptr<DetGeomDesc> CTPPSGeometryESModule::produceIdealGD(const IdealGeometryRecord& iRecord) {
304  // get the DDCompactView from EventSetup
305  auto const& cpv = iRecord.get(compactViewToken_);
306 
307  // create DDFilteredView and apply the filter
309  DDFilteredView fv(cpv, filter);
310 
311  // conversion to DetGeomDesc structure
312  auto root = std::make_unique<DetGeomDesc>(&fv);
313  buildDetGeomDesc(&fv, root.get());
314 
315  // construct the tree of DetGeomDesc
316  return root;
317 }
318 
319 //----------------------------------------------------------------------------------------------------
320 
321 template <typename REC>
322 std::unique_ptr<DetGeomDesc> CTPPSGeometryESModule::produceGD(IdealGeometryRecord const& iIdealRec,
323  std::optional<REC> const& iAlignRec,
324  GDTokens<REC> const& iTokens,
325  const char* name) {
326  // get the input GeometricalDet
327  auto const& idealGD = iIdealRec.get(iTokens.idealGDToken_);
328 
329  // load alignments
331  if (iAlignRec) {
332  alignments = iAlignRec->getHandle(iTokens.alignmentToken_);
333  }
334 
335  if (alignments.isValid()) {
336  if (verbosity_)
337  edm::LogVerbatim(name) << ">> " << name << " > Real geometry: " << alignments->getRPMap().size() << " RP and "
338  << alignments->getSensorMap().size() << " sensor alignments applied.";
339  } else {
340  if (verbosity_)
341  edm::LogVerbatim(name) << ">> " << name << " > Real geometry: No alignments applied.";
342  }
343 
344  DetGeomDesc* newGD = nullptr;
345  applyAlignments(idealGD, alignments.product(), newGD);
346  return std::unique_ptr<DetGeomDesc>(newGD);
347 }
348 
349 std::unique_ptr<DetGeomDesc> CTPPSGeometryESModule::produceRealGD(const VeryForwardRealGeometryRecord& iRecord) {
350  return produceGD(iRecord.getRecord<IdealGeometryRecord>(),
353  "CTPPSGeometryESModule::produceRealGD");
354 }
355 
356 //----------------------------------------------------------------------------------------------------
357 
358 std::unique_ptr<DetGeomDesc> CTPPSGeometryESModule::produceMisalignedGD(
359  const VeryForwardMisalignedGeometryRecord& iRecord) {
360  return produceGD(iRecord.getRecord<IdealGeometryRecord>(),
362  gdMisTokens_,
363  "CTPPSGeometryESModule::produceMisalignedGD");
364 }
365 
366 //----------------------------------------------------------------------------------------------------
367 
368 std::unique_ptr<CTPPSGeometry> CTPPSGeometryESModule::produceRealTG(const VeryForwardRealGeometryRecord& iRecord) {
369  auto const& gD = iRecord.get(dgdRealToken_);
370 
371  return std::make_unique<CTPPSGeometry>(&gD);
372 }
373 
374 //----------------------------------------------------------------------------------------------------
375 
376 std::unique_ptr<CTPPSGeometry> CTPPSGeometryESModule::produceMisalignedTG(
377  const VeryForwardMisalignedGeometryRecord& iRecord) {
378  auto const& gD = iRecord.get(dgdMisToken_);
379 
380  return std::make_unique<CTPPSGeometry>(&gD);
381 }
382 
edm::eventsetup::DependentRecordImplementation::getRecord
const DepRecordT getRecord() const
Definition: DependentRecordImplementation.h:51
CTPPSGeometryESModule::GDTokens::idealGDToken_
const edm::ESGetToken< DetGeomDesc, IdealGeometryRecord > idealGDToken_
Definition: CTPPSGeometryESModule.cc:71
CTPPSGeometryESModule::CTPPSGeometryESModule
CTPPSGeometryESModule(const edm::ParameterSet &)
Definition: CTPPSGeometryESModule.cc:98
VeryForwardRealGeometryRecord
Event setup record containing the real (actual) geometry information.
Definition: VeryForwardRealGeometryRecord.h:22
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
DetGeomDesc::applyAlignment
void applyAlignment(const CTPPSRPAlignmentCorrectionData &)
alignment
Definition: DetGeomDesc.cc:84
CTPPSGeometryESModule::applyAlignments
static void applyAlignments(const DetGeomDesc &, const CTPPSRPAlignmentCorrectionsData *, DetGeomDesc *&)
Definition: CTPPSGeometryESModule.cc:120
mps_fire.i
i
Definition: mps_fire.py:355
DDD_CTPPS_UFSD_SEGMENT_NAME
const std::string DDD_CTPPS_UFSD_SEGMENT_NAME
Definition: CTPPSDDDNames.h:17
edm::ESInputTag
Definition: ESInputTag.h:87
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
DDD_CTPPS_PIXELS_SENSOR_NAME
const std::string DDD_CTPPS_PIXELS_SENSOR_NAME
Definition: CTPPSDDDNames.h:14
CTPPSRPAlignmentCorrectionsData::getRPMap
const mapType & getRPMap() const
returns the map of RP alignment corrections
Definition: CTPPSRPAlignmentCorrectionsData.h:46
CTPPSGeometryESModule::GDTokens::GDTokens
GDTokens(edm::ESConsumesCollector &&iCC)
Definition: CTPPSGeometryESModule.cc:68
DetGeomDesc::addComponent
void addComponent(DetGeomDesc *)
components (children) management
Definition: DetGeomDesc.cc:66
DetGeomDesc::components
Container components() const
access to the tree structure
Definition: DetGeomDesc.cc:62
edm::ESConsumesCollector
Definition: ESConsumesCollector.h:58
ESHandle.h
CTPPSRPAlignmentCorrectionsData::getSensorMap
const mapType & getSensorMap() const
returns the map of sensor alignment corrections
Definition: CTPPSRPAlignmentCorrectionsData.h:49
relativeConstraints.station
station
Definition: relativeConstraints.py:67
DDFilteredView::logicalPart
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the filtered-view.
Definition: DDFilteredView.cc:16
CTPPSPixelDetId.h
DDFilteredView::copyNumbers
nav_type copyNumbers() const
return the stack of copy numbers
Definition: DDFilteredView.cc:193
edm::ESProducer::setWhatProduced
auto setWhatProduced(T *iThis, const es::Label &iLabel={})
Definition: ESProducer.h:138
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
ESProducer.h
DDD_CTPPS_PIXELS_RP_NAME
const std::string DDD_CTPPS_PIXELS_RP_NAME
Definition: CTPPSDDDNames.h:22
CTPPSGeometryESModule::produceGD
std::unique_ptr< DetGeomDesc > produceGD(IdealGeometryRecord const &, const std::optional< REC > &, GDTokens< REC > const &, const char *name)
Definition: CTPPSGeometryESModule.cc:321
DDD_TOTEM_TIMING_RP_NAME
const std::string DDD_TOTEM_TIMING_RP_NAME
Definition: CTPPSDDDNames.h:25
CTPPSGeometryESModule::gdMisTokens_
const GDTokens< RPMisalignedAlignmentRecord > gdMisTokens_
Definition: CTPPSGeometryESModule.cc:94
DDFilteredView::parent
bool parent()
set the current node to the parent node ...
Definition: DDFilteredView.cc:161
year_2016_postTS2_cff.rpId
rpId
Definition: year_2016_postTS2_cff.py:23
RPMisalignedAlignmentRecord
Definition: RPMisalignedAlignmentRecord.h:6
DDCompactView.h
VeryForwardMisalignedGeometryRecord.h
CTPPSGeometryESModule::produceRealGD
std::unique_ptr< DetGeomDesc > produceRealGD(const VeryForwardRealGeometryRecord &)
Definition: CTPPSGeometryESModule.cc:348
DDD_CTPPS_DIAMONDS_SEGMENT_NAME
const std::string DDD_CTPPS_DIAMONDS_SEGMENT_NAME
Definition: CTPPSDDDNames.h:16
DetGeomDesc::setGeographicalID
void setGeographicalID(DetId id)
ID stuff.
Definition: DetGeomDesc.h:51
RPMisalignedAlignmentRecord.h
edmScanValgrind.buffer
buffer
Definition: edmScanValgrind.py:171
CTPPSRPAlignmentCorrectionsData::getRPCorrection
CTPPSRPAlignmentCorrectionData & getRPCorrection(unsigned int id)
returns the correction value from the RP map
Definition: CTPPSRPAlignmentCorrectionsData.cc:17
CTPPSGeometryESModule
Builds ideal, real and misaligned geometries.
Definition: CTPPSGeometryESModule.cc:51
CTPPSGeometry.h
RPRealAlignmentRecord
Definition: RPRealAlignmentRecord.h:6
DDFilteredView::firstChild
bool firstChild()
set the current node to the first child ...
Definition: DDFilteredView.cc:86
DDFilteredView.h
DetGeomDesc::geographicalID
DetId geographicalID() const
Definition: DetGeomDesc.h:52
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
CTPPSGeometryESModule::dgdMisToken_
const edm::ESGetToken< DetGeomDesc, VeryForwardMisalignedGeometryRecord > dgdMisToken_
Definition: CTPPSGeometryESModule.cc:97
TotemTimingDetId.h
CTPPSGeometryESModule::GDTokens::alignmentToken_
const edm::ESGetToken< CTPPSRPAlignmentCorrectionsData, ALIGNMENT_REC > alignmentToken_
Definition: CTPPSGeometryESModule.cc:72
DDCompactView
Compact representation of the geometrical detector hierarchy.
Definition: DDCompactView.h:80
CTPPSGeometryESModule::produceRealTG
std::unique_ptr< CTPPSGeometry > produceRealTG(const VeryForwardRealGeometryRecord &)
Definition: CTPPSGeometryESModule.cc:367
RPRealAlignmentRecord.h
DDBase::name
const N & name() const
Definition: DDBase.h:59
edm::ESHandle
Definition: DTSurvey.h:22
DDSolid.h
DDFilteredView::nextSibling
bool nextSibling()
set the current node to the next sibling ...
Definition: DDFilteredView.cc:124
edm::eventsetup::DependentRecordImplementation::get
ProductT const & get(ESGetToken< ProductT, DepRecordT > const &iToken) const
Definition: DependentRecordImplementation.h:112
ALCARECOTkAlBeamHalo_cff.filter
filter
Definition: ALCARECOTkAlBeamHalo_cff.py:27
CTPPSGeometryESModule::gdRealTokens_
const GDTokens< RPRealAlignmentRecord > gdRealTokens_
Definition: CTPPSGeometryESModule.cc:93
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
CTPPSGeometryESModule::~CTPPSGeometryESModule
~CTPPSGeometryESModule() override
Definition: CTPPSGeometryESModule.cc:59
CTPPSGeometryESModule::produceIdealGD
std::unique_ptr< DetGeomDesc > produceIdealGD(const IdealGeometryRecord &)
Definition: CTPPSGeometryESModule.cc:302
TotemTimingDetId
Detector ID class for CTPPS Totem Timing detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bits ...
Definition: TotemTimingDetId.h:26
CTPPSGeometryESModule::verbosity_
const unsigned int verbosity_
Definition: CTPPSGeometryESModule.cc:90
CTPPSDiamondDetId.h
edm::ParameterSetDescription::addUntracked
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:100
CTPPSDiamondDetId
Detector ID class for CTPPS Timing Diamond detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bit...
Definition: CTPPSDiamondDetId.h:24
edm::ParameterSet
Definition: ParameterSet.h:36
DetGeomDesc.h
DDD_CTPPS_DIAMONDS_RP_NAME
const std::string DDD_CTPPS_DIAMONDS_RP_NAME
Definition: CTPPSDDDNames.h:24
DDSpecifics.h
CTPPSGeometryESModule::GDTokens
Definition: CTPPSGeometryESModule.cc:67
DDMaterial.h
DetGeomDesc::name
const std::string & name() const
Definition: DetGeomDesc.h:65
CTPPSGeometryESModule::produceMisalignedGD
std::unique_ptr< DetGeomDesc > produceMisalignedGD(const VeryForwardMisalignedGeometryRecord &)
Definition: CTPPSGeometryESModule.cc:357
createfilelist.int
int
Definition: createfilelist.py:10
DDD_TOTEM_TIMING_SENSOR_TMPL
const std::string DDD_TOTEM_TIMING_SENSOR_TMPL
Definition: CTPPSDDDNames.h:18
CTPPSGeometryESModule::compactViewToken_
const edm::ESGetToken< DDCompactView, IdealGeometryRecord > compactViewToken_
Definition: CTPPSGeometryESModule.cc:91
DetGeomDesc
Geometrical description of a sensor.
Definition: DetGeomDesc.h:34
DDName::name
const std::string & name() const
Returns the name.
Definition: DDName.cc:40
DDD_TOTEM_RP_RP_NAME
const std::string DDD_TOTEM_RP_RP_NAME
DDD names of RP volumes.
Definition: CTPPSDDDNames.h:21
root
Definition: RooFitFunction.h:10
edm::LogVerbatim
Definition: MessageLogger.h:297
IdealGeometryRecord.h
CTPPSDDDNames.h
CTPPSPixelDetId
Definition: CTPPSPixelDetId.h:16
VeryForwardRealGeometryRecord.h
edm::ESHandleBase::isValid
bool isValid() const
Definition: ESHandle.h:44
edm::ESGetToken< DetGeomDesc, IdealGeometryRecord >
VeryForwardMisalignedGeometryRecord
Event setup record containing the misaligned geometry information. It is used for alignment studies o...
Definition: VeryForwardMisalignedGeometryRecord.h:23
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
ModuleFactory.h
CTPPSGeometryESModule::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: CTPPSGeometryESModule.cc:111
DDPassAllFilter
A DDFilter that always returns true.
Definition: DDFilter.h:26
edm::eventsetup::DependentRecordImplementation::tryToGetRecord
std::optional< DepRecordT > tryToGetRecord() const
Definition: DependentRecordImplementation.h:71
DEFINE_FWK_EVENTSETUP_MODULE
#define DEFINE_FWK_EVENTSETUP_MODULE(type)
Definition: ModuleFactory.h:60
CTPPSGeometryESModule::dgdRealToken_
const edm::ESGetToken< DetGeomDesc, VeryForwardRealGeometryRecord > dgdRealToken_
Definition: CTPPSGeometryESModule.cc:96
DDD_TOTEM_RP_SENSOR_NAME
const std::string DDD_TOTEM_RP_SENSOR_NAME
DDD names of sensors.
Definition: CTPPSDDDNames.h:13
TotemRPDetId.h
CTPPSRPAlignmentCorrectionsData
Container for CTPPS RP alignment corrections. The corrections are stored on two levels - RP and senso...
Definition: CTPPSRPAlignmentCorrectionsData.h:24
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
EventSetup.h
CTPPSRPAlignmentCorrectionsData.h
hgcalTestNeighbor_cfi.detector
detector
Definition: hgcalTestNeighbor_cfi.py:6
DDFilteredView
Definition: DDFilteredView.h:20
edm::ESProducer
Definition: ESProducer.h:101
CTPPSRPAlignmentCorrectionsData::getFullSensorCorrection
CTPPSRPAlignmentCorrectionData getFullSensorCorrection(unsigned int id, bool useRPErrors=false) const
Definition: CTPPSRPAlignmentCorrectionsData.cc:47
cms::Exception
Definition: Exception.h:70
ParameterSet.h
TotemRPDetId
Detector ID class for TOTEM Si strip detectors.
Definition: TotemRPDetId.h:29
IdealGeometryRecord
Definition: IdealGeometryRecord.h:27
DDFilteredView::copyno
int copyno() const
Copy number associated with the current node.
Definition: DDFilteredView.cc:48
CTPPSGeometryESModule::buildDetGeomDesc
static void buildDetGeomDesc(DDFilteredView *fv, DetGeomDesc *gd)
Definition: CTPPSGeometryESModule.cc:176
CTPPSGeometryESModule::produceMisalignedTG
std::unique_ptr< CTPPSGeometry > produceMisalignedTG(const VeryForwardMisalignedGeometryRecord &)
Definition: CTPPSGeometryESModule.cc:375
DDRotationMatrix.h