|
| HGCalWaferValidation (const edm::ParameterSet &) |
|
| ~HGCalWaferValidation () override |
|
| EDAnalyzer ()=default |
|
| EDAnalyzer (const EDAnalyzer &)=delete |
|
SerialTaskQueue * | globalLuminosityBlocksQueue () final |
|
SerialTaskQueue * | globalRunsQueue () final |
|
const EDAnalyzer & | operator= (const EDAnalyzer &)=delete |
|
bool | wantsGlobalLuminosityBlocks () const final |
|
bool | wantsGlobalRuns () const final |
|
bool | wantsInputProcessBlocks () const final |
|
bool | wantsProcessBlocks () const final |
|
void | callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func) |
|
| EDAnalyzerBase () |
|
ModuleDescription const & | moduleDescription () const |
|
bool | wantsStreamLuminosityBlocks () const |
|
bool | wantsStreamRuns () const |
|
| ~EDAnalyzerBase () override |
|
std::vector< ConsumesInfo > | consumesInfo () const |
|
void | convertCurrentProcessAlias (std::string const &processName) |
| Convert "@currentProcess" in InputTag process names to the actual current process name. More...
|
|
| EDConsumerBase () |
|
| EDConsumerBase (EDConsumerBase &&)=default |
|
| EDConsumerBase (EDConsumerBase const &)=delete |
|
ESProxyIndex const * | esGetTokenIndices (edm::Transition iTrans) const |
|
std::vector< ESProxyIndex > const & | esGetTokenIndicesVector (edm::Transition iTrans) const |
|
std::vector< ESRecordIndex > const & | esGetTokenRecordIndicesVector (edm::Transition iTrans) const |
|
ProductResolverIndexAndSkipBit | indexFrom (EDGetToken, BranchType, TypeID const &) const |
|
void | itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const |
|
void | itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const |
|
std::vector< ProductResolverIndexAndSkipBit > const & | itemsToGetFrom (BranchType iType) const |
|
void | labelsForToken (EDGetToken iToken, Labels &oLabels) const |
|
void | modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const * > *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const |
|
EDConsumerBase & | operator= (EDConsumerBase &&)=default |
|
EDConsumerBase const & | operator= (EDConsumerBase const &)=delete |
|
bool | registeredToConsume (ProductResolverIndex, bool, BranchType) const |
|
bool | registeredToConsumeMany (TypeID const &, BranchType) const |
|
void | selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase) |
|
ProductResolverIndexAndSkipBit | uncheckedIndexFrom (EDGetToken) const |
|
void | updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet) |
|
void | updateLookup (eventsetup::ESRecordsToProxyIndices const &) |
|
virtual | ~EDConsumerBase () noexcept(false) |
|
|
typedef EDAnalyzerBase | ModuleType |
|
typedef ProductLabels | Labels |
|
EDGetToken | consumes (const TypeToGet &id, edm::InputTag const &tag) |
|
template<typename ProductType , BranchType B = InEvent> |
EDGetTokenT< ProductType > | consumes (edm::InputTag const &tag) |
|
template<BranchType B = InEvent> |
EDConsumerBaseAdaptor< B > | consumes (edm::InputTag tag) noexcept |
|
template<BranchType B> |
EDGetToken | consumes (TypeToGet const &id, edm::InputTag const &tag) |
|
ConsumesCollector | consumesCollector () |
| Use a ConsumesCollector to gather consumes information from helper functions. More...
|
|
template<typename ProductType , BranchType B = InEvent> |
void | consumesMany () |
|
void | consumesMany (const TypeToGet &id) |
|
template<BranchType B> |
void | consumesMany (const TypeToGet &id) |
|
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event> |
auto | esConsumes () |
|
template<Transition Tr = Transition::Event> |
constexpr auto | esConsumes () noexcept |
|
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event> |
auto | esConsumes (ESInputTag const &tag) |
|
template<Transition Tr = Transition::Event> |
auto | esConsumes (ESInputTag tag) noexcept |
|
template<Transition Tr = Transition::Event> |
ESGetTokenGeneric | esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey) |
| Used with EventSetupRecord::doGet. More...
|
|
EDGetToken | mayConsume (const TypeToGet &id, edm::InputTag const &tag) |
|
template<BranchType B> |
EDGetToken | mayConsume (const TypeToGet &id, edm::InputTag const &tag) |
|
template<typename ProductType , BranchType B = InEvent> |
EDGetTokenT< ProductType > | mayConsume (edm::InputTag const &tag) |
|
Description: Validates HGCal wafer data inside DD against specifications given in a flat text file.
Implementation: Uses GraphWalker to follow DD hierarchy to find HGCal EE module and the HE modules. Search of wafer layers and iterates each wafer found. Extract x, y coordinate position from wafer positioning; thickness, u & v coords from copyNo. Wafer shape and rotation are extracted from given names of wafer logical volumes. All extracted wafer info saved into a map indexed by (layer#, u, v). Each line in flat text file are compared against wafer information in the map. Any errors are reported, counted and summarized at the end. Unaccounted wafers, which are in DD but not in the flat text file, are also reported and counted.
Definition at line 57 of file HGCalWaferValidation.cc.
Implements edm::one::EDAnalyzerBase.
Definition at line 219 of file HGCalWaferValidation.cc.
225 if (!viewH.isValid()) {
234 auto eeWalker = viewH->walker();
235 const bool eeFound =
DDFindHGCal(eeWalker,
"HGCalEE");
246 auto hesilWalker = viewH->walker();
247 const bool hesilFound =
DDFindHGCal(hesilWalker,
"HGCalHEsil");
258 auto hemixWalker = viewH->walker();
259 const bool hemixFound =
DDFindHGCal(hemixWalker,
"HGCalHEmix");
270 if (!(eeFound || hesilFound || hemixFound)) {
301 int nTotalProcessed = 0;
305 int nThicknessError = 0;
310 int nUnaccounted = 0;
315 while (std::getline(geoTxtFile,
buf)) {
316 std::stringstream
ss(
buf);
317 std::vector<std::string> tokens;
320 tokens.push_back(
buf);
321 if (tokens.size() != 8)
329 const int waferThickness(std::stoi(tokens[2]));
330 const double waferX(std::stod(tokens[3]));
331 const double waferY(std::stod(tokens[4]));
332 const int waferRotCode(std::stoi(tokens[5]));
333 const int waferU(std::stoi(tokens[6]));
334 const int waferV(std::stoi(tokens[7]));
347 const struct WaferInfo waferInfo =
waferData[waferCoord];
350 if ((waferInfo.thickClass == 0 && waferThickness != 120) || (waferInfo.thickClass == 1 && waferThickness != 200) ||
351 (waferInfo.thickClass == 2 && waferThickness != 300)) {
357 if (fabs(-waferInfo.x - waferX) > 0.015) {
362 if (fabs(waferInfo.y - waferY) > 0.015) {
367 if (waferInfo.shapeCode != waferShapeCode) {
372 if ((waferShapeCode !=
'F' && waferInfo.rotCode != waferRotCode) ||
373 (waferShapeCode ==
'F' && (waferInfo.rotCode % 2 != waferRotCode % 2))) {
376 <<
" != " << waferRotCode <<
" )";
384 if (!accounted.second) {
405 if (nMissing > 0 || nThicknessError > 0 || nPosXError > 0 || nPosYError > 0 || nShapeError > 0 || nRotError > 0 ||
References visDQMUpload::buf, DDFindHGCal(), DDFindWafers(), MillePedeFileConverter_cfg::fileName, edm::FileInPath::fullPath(), geometryFileName_, edm::EventSetup::getHandle(), logcat, HGCalWaferValidation::WaferInfo::rotCode, HGCalWaferValidation::WaferInfo::shapeCode, contentValuesCheck::ss, AlCaHLTBitMon_QueryRunRegistry::string, strWaferCoord(), HGCalWaferValidation::WaferInfo::thickClass, viewToken_, waferData, HGCalWaferIndex::waferLayer(), HGCalWaferIndex::waferU(), HGCalWaferIndex::waferV(), waferValidated, HGCalWaferValidation::WaferInfo::x, and HGCalWaferValidation::WaferInfo::y.
Definition at line 172 of file HGCalWaferValidation.cc.
177 if (walker.
current().first.name().fullname().rfind(
"hgcalwafer:", 0) == 0) {
180 const int copyNo = wafer.second->copyno();
187 struct WaferInfo waferInfo;
188 waferInfo.thickClass = waferType;
189 waferInfo.x = wafer.second->translation().x();
190 waferInfo.y = wafer.second->translation().y();
192 std::regex_replace(waferName,
193 std::regex(
"(HGCal[EH]E)(Wafer[01])(Fine|Coarse[12])([a-z]*)([0-9]*)"),
195 std::regex_constants::format_no_copy);
196 std::stringstream
ss(waferNameData);
201 ss >> EEorHE >> typeStr >> shapeStr >> rotStr;
203 if (shapeStr.empty())
207 const int rotCode(std::stoi(rotStr));
209 waferInfo.shapeCode = shapeStr;
210 waferInfo.rotCode = rotCode;
References math::GraphWalker< N, E >::current(), HGCalTypes::getUnpackedType(), HGCalTypes::getUnpackedU(), HGCalTypes::getUnpackedV(), logcat, math::GraphWalker< N, E >::nextSibling(), HGCalWaferValidation::WaferInfo::rotCode, HGCalWaferValidation::WaferInfo::shapeCode, contentValuesCheck::ss, AlCaHLTBitMon_QueryRunRegistry::string, HGCalWaferValidation::WaferInfo::thickClass, waferData, HGCalWaferIndex::waferLayer(), HGCalWaferIndex::waferU(), HGCalWaferIndex::waferV(), waferValidated, HGCalWaferValidation::WaferInfo::x, and HGCalWaferValidation::WaferInfo::y.
Referenced by DDFindWafers().