|
|
Go to the documentation of this file.
62 template <
typename ALIGNMENT_REC>
77 template <
typename REC>
79 const std::optional<REC>&,
100 : verbosity_(iConfig.getUntrackedParameter<unsigned
int>(
"verbosity")),
116 descriptions.
add(
"DoodadESSource", desc);
125 std::deque<const DetGeomDesc*>
buffer;
126 std::deque<DetGeomDesc*> bufferNew;
127 buffer.emplace_back(&idealGD);
128 bufferNew.emplace_back(newGD);
134 bufferNew.pop_front();
170 bufferNew.emplace_back(cD);
191 const std::vector<int>& copy_num = fv->
copyNumbers();
193 if (copy_num.size() < 3)
195 <<
"size of copyNumbers for strip sensor is " << copy_num.size() <<
". It must be >= 3.";
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];
208 unsigned int decRPId = fv->
copyno();
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;
218 const unsigned int armIdx = (decRPId / 100) % 10;
219 const unsigned int stIdx = (decRPId / 10) % 10;
220 const unsigned int rpIdx = decRPId % 10;
226 const std::vector<int>& copy_num = fv->
copyNumbers();
228 if (copy_num.size() < 4)
230 <<
"size of copyNumbers for TOTEM timing sensor is " << copy_num.size() <<
". It must be >= 4.";
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];
245 const std::vector<int>& copy_num = fv->
copyNumbers();
247 if (copy_num.size() < 4)
249 <<
"size of copyNumbers for pixel sensor is " << copy_num.size() <<
". It must be >= 4.";
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;
262 const std::vector<int>& copy_num = fv->
copyNumbers();
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;
276 const std::vector<int>& copy_num = fv->
copyNumbers();
279 if (copy_num.size() < 2)
281 <<
"size of copyNumbers for diamond RP is " << copy_num.size() <<
". It must be >= 2.";
283 const unsigned int arm = copy_num[1] - 1;
284 const unsigned int station = 1;
285 const unsigned int rp = 6;
312 auto root = std::make_unique<DetGeomDesc>(&fv);
321 template <
typename REC>
323 std::optional<REC>
const& iAlignRec,
338 << alignments->
getSensorMap().size() <<
" sensor alignments applied.";
346 return std::unique_ptr<DetGeomDesc>(newGD);
353 "CTPPSGeometryESModule::produceRealGD");
363 "CTPPSGeometryESModule::produceMisalignedGD");
371 return std::make_unique<CTPPSGeometry>(&gD);
380 return std::make_unique<CTPPSGeometry>(&gD);
const DepRecordT getRecord() const
const edm::ESGetToken< DetGeomDesc, IdealGeometryRecord > idealGDToken_
CTPPSGeometryESModule(const edm::ParameterSet &)
Event setup record containing the real (actual) geometry information.
T const * product() const
void applyAlignment(const CTPPSRPAlignmentCorrectionData &)
alignment
static void applyAlignments(const DetGeomDesc &, const CTPPSRPAlignmentCorrectionsData *, DetGeomDesc *&)
const std::string DDD_CTPPS_UFSD_SEGMENT_NAME
ParameterDescriptionBase * add(U const &iLabel, T const &value)
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 *)
components (children) management
Container components() const
access to the tree structure
const mapType & getSensorMap() const
returns the map of sensor alignment corrections
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the filtered-view.
nav_type copyNumbers() const
return the stack of copy numbers
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_
bool parent()
set the current node to the parent node ...
std::unique_ptr< DetGeomDesc > produceRealGD(const VeryForwardRealGeometryRecord &)
const std::string DDD_CTPPS_DIAMONDS_SEGMENT_NAME
void setGeographicalID(DetId id)
ID stuff.
CTPPSRPAlignmentCorrectionData & getRPCorrection(unsigned int id)
returns the correction value from the RP map
Builds ideal, real and misaligned geometries.
bool firstChild()
set the current node to the first child ...
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 &)
bool nextSibling()
set the current node to the next sibling ...
ProductT const & get(ESGetToken< ProductT, DepRecordT > const &iToken) const
const GDTokens< RPRealAlignmentRecord > gdRealTokens_
~CTPPSGeometryESModule() override
std::unique_ptr< DetGeomDesc > produceIdealGD(const IdealGeometryRecord &)
Detector ID class for CTPPS Totem Timing detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bits ...
const unsigned int verbosity_
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
Detector ID class for CTPPS Timing Diamond detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bit...
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 edm::ESGetToken< DDCompactView, IdealGeometryRecord > compactViewToken_
Geometrical description of a sensor.
const std::string & name() const
Returns the name.
const std::string DDD_TOTEM_RP_RP_NAME
DDD names of RP volumes.
Event setup record containing the misaligned geometry information. It is used for alignment studies o...
T getParameter(std::string const &) const
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
A DDFilter that always returns true.
std::optional< DepRecordT > tryToGetRecord() const
#define DEFINE_FWK_EVENTSETUP_MODULE(type)
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
Detector ID class for TOTEM Si strip detectors.
int copyno() const
Copy number associated with the current node.
static void buildDetGeomDesc(DDFilteredView *fv, DetGeomDesc *gd)
std::unique_ptr< CTPPSGeometry > produceMisalignedTG(const VeryForwardMisalignedGeometryRecord &)