 |
Belle II Software
release-05-01-25
|
11 #include <svd/online/SVDIgnoredStripsMap.h>
12 #include <boost/property_tree/xml_parser.hpp>
13 #include <framework/logging/Logger.h>
14 #include <framework/utilities/FileSystem.h>
18 using boost::property_tree::ptree;
22 m_Map(12), m_lastSensorID(0)
26 if (xmlFilename ==
"") {
27 B2INFO(
"No xml list of ignored strips specified.");
39 B2WARNING(
"The xml filename: " << xmlFilename << endl <<
40 "resolved to: " << xmlFullPath << endl <<
41 "by FileSystem::findFile does not exist." << endl <<
42 "SVD ignored strips map cannot be initialized." << endl
48 read_xml(xmlFullPath, propertyTree);
49 }
catch (std::exception
const& ex) {
50 B2WARNING(
"STD excpetion raised during xml parsing " << ex.what() << endl <<
51 "SVD ignored strips map cannot be initialized." << endl);
54 B2WARNING(
"Unknown excpetion raised during xml parsing "
55 "SVD ignored strips map cannot be initialized." << endl);
62 for (ptree::value_type
const & layer : propertyTree.get_child(
"SVD"))
63 if (layer.first ==
"layer") {
64 sensorID.
setLayerNumber(
static_cast<unsigned short>(layer.second.get<
int>(
"<xmlattr>.n")));
65 for (ptree::value_type
const & ladder : layer.second)
66 if (ladder.first ==
"ladder") {
67 sensorID.
setLadderNumber(
static_cast<unsigned short>(ladder.second.get<
int>(
"<xmlattr>.n")));
68 for (ptree::value_type
const & sensor : ladder.second)
69 if (sensor.first ==
"sensor") {
70 sensorID.
setSensorNumber(
static_cast<unsigned short>(sensor.second.get<
int>(
"<xmlattr>.n")));
71 for (ptree::value_type
const & side : sensor.second)
72 if (side.first ==
"side") {
73 std::string tagSide = side.second.get<std::string>(
"<xmlattr>.side");
77 for (ptree::value_type
const & tag : side.second)
78 if (tag.first ==
"strip") {
79 strips.insert(tag.second.get<
unsigned short>(
"<xmlattr>.stripNo"));
80 }
else if (tag.first ==
"stripsFromTo") {
81 auto limits = tag.second;
82 unsigned short fromStrip = limits.get<
unsigned short>(
"<xmlattr>.fromStrip");
83 unsigned short toStrip = limits.get<
unsigned short>(
"<xmlattr>.toStrip");
84 for (
unsigned short iStrip = fromStrip; iStrip <= toStrip; iStrip++)
85 strips.insert(iStrip);
87 m_Map.insert(std::pair<unsigned short, IgnoredStripsSet>(sensorID.
getID(), strips));
93 B2WARNING(
"Unknown excpetion raised during map initialization! "
94 "SVD ignored strips map may be corrupted." << endl);
105 auto mapIter =
m_Map.find(
id);
106 if (mapIter !=
m_Map.end()) {
119 auto mapIter =
m_Map.find(
id);
120 if (mapIter !=
m_Map.end()) {
std::set< unsigned short > IgnoredStripsSet
A set of ignored strips.
Class to uniquely identify a any structure of the PXD and SVD.
void setLayerNumber(baseType layer)
Set the layer id.
baseType getID() const
Get the unique id.
bool stripOK(VxdID id, unsigned short strip)
Check whether a strip on a given sensor is OK or not.
IgnoredStripsSet m_lastIgnored
Set of ingored strips for the most currently queried sensor.
Abstract base class for different kinds of events.
void setSegmentNumber(baseType segment)
Set the sensor segment.
SVDIgnoredStripsMap()=delete
No default constructor.
const std::set< unsigned short > & getIgnoredStrips(VxdID id)
Get the set of ignored strips for a sensor.
void setSensorNumber(baseType sensor)
Set the sensor id.
static bool fileExists(const std::string &filename)
Check if the file with given filename exists.
std::unordered_map< unsigned short, IgnoredStripsSet > m_Map
Structure holiding sets of ingored strips for all sensors.
void setLadderNumber(baseType ladder)
Set the ladder id.
static std::string findFile(const std::string &path, bool silent=false)
Search for given file or directory in local or central release directory, and return absolute path if...
VxdID m_lastSensorID
The most currently queried sensor number.