ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigConfiguration
TrigConfMuctpi
src
MuctpiXMLParser.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// libraries
6
7
#include "
TrigConfMuctpi/MioctTopoCellGeometry.h
"
8
#include "
TrigConfMuctpi/MioctROIGeometry.h
"
9
#include "
TrigConfMuctpi/MioctSectorGeometry.h
"
10
#include "
TrigConfMuctpi/MioctGeometry.h
"
11
#include "
TrigConfMuctpi/MuCTPiGeometry.h
"
12
#include "
TrigConfMuctpi/MuctpiXMLParser.h
"
13
//
14
15
//
16
#include <boost/property_tree/xml_parser.hpp>
17
// cpp libraries
18
#include <iostream>
19
#include <vector>
20
#include <string>
21
#include <stdlib.h>
22
23
using namespace
std
;
24
using
boost::property_tree::ptree;
25
26
namespace
pt
= boost::property_tree;
27
28
29
MuctpiXMLParser::MuctpiXMLParser
() :
30
TrigConf
::
TrigConfMessaging
(
"MuctpiXMLParser"
)
31
{}
32
33
34
void
35
MuctpiXMLParser::printConfiguration
()
const
{
36
cout <<
"************************** MuctpiXMLParser **********************"
<< endl;
37
m_muctpi
.print();
38
cout <<
"*****************************************************************"
<< endl;
39
}
40
41
42
void
43
MuctpiXMLParser::readConfiguration
(
const
std::string & inputfile)
44
{
45
// populate the ptree m_configuration with the structure of the xml input file
46
ptree
inputTree;
47
read_xml(inputfile, inputTree);
// 3 --> trim_whitespace
48
49
m_muctpiPT
= inputTree.get_child(
"MuCTPiGeometry"
);
50
51
TRG_MSG_INFO
(
"Read "
<< inputfile <<
" successfully!"
);
52
}
53
54
55
void
MuctpiXMLParser::parseConfiguration
()
56
{
57
58
// iterate through elements of topomenu
59
for
(
const
boost::property_tree::ptree::value_type &
x
:
m_muctpiPT
) {
60
61
string
menuElementName =
x
.first;
62
if
(menuElementName==
"<xmlattr>"
|| menuElementName==
"<xmlcomment>"
)
continue
;
63
ptree
menuElement =
x
.second;
64
65
// get branch attributes
66
if
( menuElementName==
"MIOCT"
) {
67
68
MioctGeometry
octant;
69
setOctant
(menuElement, octant);
70
m_muctpi
.addOctant(octant);
71
72
}
else
if
( menuElementName==
"PtEncoding"
) {
73
74
L1MuonPtEncoding
ptEncoding;
75
setPtEncoding
(menuElement, ptEncoding);
76
m_muctpi
.setPtEncoding(ptEncoding);
77
78
}
else
{
79
// TRG_MSG_FATAL("Unknown element" << menuElementName); // validation is checked by the dtd
80
}
81
}
82
83
84
TRG_MSG_INFO
(
"Parsing Successful!"
);
85
86
// m_muctpi.print();
87
88
}
89
90
91
void
MuctpiXMLParser::setPtEncoding
( boost::property_tree::ptree menuElement,
L1MuonPtEncoding
& ptEncoding)
92
{
93
for
(
const
auto
&
x
: menuElement ) {
94
if
(
x
.first ==
"PtCodeElement"
) {
95
unsigned
int
idxP1 =
m_xmlHelper
.getUIntAttribute(
x
.second,
"pt"
);
96
if
(idxP1 == 0 ){
97
TRG_MSG_WARNING
(
"Avoided attempt to access array out-of-bounds"
);
98
continue
;
99
}
100
unsigned
int
idx = idxP1 - 1;
//unsigned version of -1 would be a very large number
101
unsigned
int
ptCode =
m_xmlHelper
.getUIntAttribute(
x
.second,
"code"
);
102
unsigned
int
thresholdValue =
m_xmlHelper
.getUIntAttribute(
x
.second,
"value"
);
103
//idx is used directly as an array index in this function call, so cannot be
104
//negative or too large
105
ptEncoding.
setCodingInfo
(idx, ptCode, thresholdValue);
106
}
107
}
108
}
109
110
111
void
MuctpiXMLParser::setOctant
( boost::property_tree::ptree menuElement,
MioctGeometry
&octant)
112
{
113
octant.
setMioctId
(
m_xmlHelper
.getUIntAttribute(menuElement,
"id"
));
114
octant.
setSlot
(
m_xmlHelper
.getUIntAttribute(menuElement,
"slot"
));
115
116
// <Sector>'s
117
//unsigned int counter = 0;
118
for
(
const
boost::property_tree::ptree::value_type &
x
:menuElement ) {
119
//cout << "reading "<< counter<< " octant\n"; counter++;
120
string
menuElementNameO =
x
.first;
121
if
(menuElementNameO==
"<xmlattr>"
|| menuElementNameO==
"<xmlcomment>"
)
continue
;
122
ptree
menuElementO =
x
.second;
123
// get branch attributes
124
125
if
( menuElementNameO==
"Sector"
){
126
MioctSectorGeometry
sector;
127
setSector
(menuElementO, sector);
128
octant.
addSector
(sector);
129
}
130
// Decode/TopoCell
131
else
if
( menuElementNameO ==
"Decode"
){
132
for
(
const
boost::property_tree::ptree::value_type &
y
: menuElementO) {
133
string
menuElementName1 =
y
.first;
134
if
(menuElementName1==
"<xmlattr>"
|| menuElementName1==
"<xmlcomment>"
)
continue
;
135
ptree
menuElement1 =
y
.second;
136
MioctTopoCellGeometry
tcell;
137
setTopoCell
(menuElement1, tcell);
138
octant.
addTopoCell
(tcell);
139
}
140
}
// end of decode
141
}
// end of menuEleement loop
142
}
143
144
145
void
MuctpiXMLParser::setSector
( boost::property_tree::ptree menuElement,
MioctSectorGeometry
§or)
146
{
147
sector.
setConnector
(
m_xmlHelper
.getUIntAttribute(menuElement,
"connector"
) );
148
sector.
setName
(
m_xmlHelper
.getAttribute(menuElement,
"name"
) );
149
150
//unsigned int counter = 0;
151
for
(
const
boost::property_tree::ptree::value_type &
x
:menuElement ) {
152
153
string
menuElementNameO =
x
.first;
154
if
(menuElementNameO==
"<xmlattr>"
|| menuElementNameO==
"<xmlcomment>"
)
continue
;
155
ptree
menuElementO =
x
.second;
156
// get branch attributes
157
158
if
( menuElementNameO==
"ROI"
){
159
//cout << "reading "<< counter<<" ROI\n"; counter++;
160
MioctROIGeometry
roi;
161
setROI
(menuElementO, roi);
162
sector.
addROI
(roi);
163
}
164
}
165
}
166
167
void
MuctpiXMLParser::setROI
( boost::property_tree::ptree menuElement,
MioctROIGeometry
&data)
168
{
169
unsigned
int
x
= 0;
170
std::stringstream
ss
;
ss
<< std::hex ;
171
172
data.setEtamin(
m_xmlHelper
.getFloatAttribute(menuElement,
"etamin"
));
173
data.setEtamax(
m_xmlHelper
.getFloatAttribute(menuElement,
"etamax"
));
174
data.setEta(
m_xmlHelper
.getFloatAttribute(menuElement,
"eta"
));
175
data.setPhimin(
m_xmlHelper
.getFloatAttribute(menuElement,
"phimin"
));
176
data.setPhimax(
m_xmlHelper
.getFloatAttribute(menuElement,
"phimax"
));
177
data.setPhi(
m_xmlHelper
.getFloatAttribute(menuElement,
"phi"
));
178
data.setRoiid(
m_xmlHelper
.getUIntAttribute(menuElement,
"roiid"
));
179
180
ss
<<
m_xmlHelper
.getAttribute(menuElement,
"etacode"
);
181
ss
>>
x
;
182
data.setEtacode(
x
);
183
ss
.clear();
184
ss
<<
m_xmlHelper
.getAttribute(menuElement,
"phicode"
);
185
ss
>>
x
;
186
data.setPhicode(
x
);
187
//data.print(" ");
188
}
189
190
void
MuctpiXMLParser::setTopoCell
(boost::property_tree::ptree menuElement,
MioctTopoCellGeometry
&data)
191
{
192
unsigned
int
x
= 0;
193
std::stringstream
ss
;
ss
<< std::hex ;
194
data.setEtamin(
m_xmlHelper
.getFloatAttribute(menuElement,
"etamin"
));
195
data.setEtamax(
m_xmlHelper
.getFloatAttribute(menuElement,
"etamax"
));
196
data.setEta(
m_xmlHelper
.getFloatAttribute(menuElement,
"eta"
));
197
198
data.setPhimin(
m_xmlHelper
.getFloatAttribute(menuElement,
"phimin"
));
199
data.setPhimax(
m_xmlHelper
.getFloatAttribute(menuElement,
"phimax"
));
200
data.setPhi(
m_xmlHelper
.getFloatAttribute(menuElement,
"phi"
));
201
data.setIEta(
m_xmlHelper
.getIntAttribute(menuElement,
"ieta"
));
202
data.setIPhi(
m_xmlHelper
.getIntAttribute(menuElement,
"iphi"
));
203
204
ss
<<
m_xmlHelper
.getAttribute(menuElement,
"etacode"
);
205
ss
>>
x
;
ss
.clear();
206
data.setEtacode(
x
);
207
ss
<<
m_xmlHelper
.getAttribute(menuElement,
"phicode"
);
208
ss
>>
x
;
209
data.setPhicode(
x
);
210
//data.print(" ");
211
}
212
213
ptree
boost::property_tree::ptree ptree
Definition
JsonFileLoader.cxx:16
ss
static Double_t ss
Definition
LArPhysWaveHECTool.cxx:37
MioctGeometry.h
MioctROIGeometry.h
MioctSectorGeometry.h
MioctTopoCellGeometry.h
MuCTPiGeometry.h
MuctpiXMLParser.h
TRG_MSG_INFO
#define TRG_MSG_INFO(x)
Definition
Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:27
TRG_MSG_WARNING
#define TRG_MSG_WARNING(x)
Definition
Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:28
y
#define y
x
#define x
L1MuonPtEncoding
Definition
L1MuonPtEncoding.h:10
L1MuonPtEncoding::setCodingInfo
void setCodingInfo(unsigned int idx, unsigned int ptCode, unsigned int thresholdValue)
Definition
L1MuonPtEncoding.cxx:13
MioctGeometry
Definition
MioctGeometry.h:14
MioctGeometry::addSector
void addSector(const MioctSectorGeometry §or)
Definition
MioctGeometry.h:28
MioctGeometry::addTopoCell
void addTopoCell(const MioctTopoCellGeometry &topocell)
Definition
MioctGeometry.h:29
MioctGeometry::setSlot
void setSlot(int m)
Definition
MioctGeometry.h:27
MioctGeometry::setMioctId
void setMioctId(unsigned int id)
Definition
MioctGeometry.h:26
MioctROIGeometry
Definition
MioctROIGeometry.h:22
MioctSectorGeometry
Definition
MioctSectorGeometry.h:20
MioctSectorGeometry::setConnector
void setConnector(unsigned int id)
Definition
MioctSectorGeometry.h:34
MioctSectorGeometry::setName
void setName(const std::string &name)
Definition
MioctSectorGeometry.h:33
MioctSectorGeometry::addROI
void addROI(const MioctROIGeometry &roi)
Definition
MioctSectorGeometry.h:32
MioctTopoCellGeometry
Definition
MioctTopoCellGeometry.h:15
MuctpiXMLParser::setSector
void setSector(boost::property_tree::ptree menuElement, MioctSectorGeometry §or)
Definition
MuctpiXMLParser.cxx:145
MuctpiXMLParser::m_muctpiPT
boost::property_tree::ptree m_muctpiPT
Definition
MuctpiXMLParser.h:78
MuctpiXMLParser::parseConfiguration
void parseConfiguration()
Definition
MuctpiXMLParser.cxx:55
MuctpiXMLParser::m_muctpi
MuCTPiGeometry m_muctpi
Definition
MuctpiXMLParser.h:79
MuctpiXMLParser::setOctant
void setOctant(boost::property_tree::ptree menuElement, MioctGeometry &octant)
Definition
MuctpiXMLParser.cxx:111
MuctpiXMLParser::setTopoCell
void setTopoCell(boost::property_tree::ptree menuElement, MioctTopoCellGeometry &topocell)
Definition
MuctpiXMLParser.cxx:190
MuctpiXMLParser::setROI
void setROI(boost::property_tree::ptree menuElement, MioctROIGeometry &roi)
Definition
MuctpiXMLParser.cxx:167
MuctpiXMLParser::MuctpiXMLParser
MuctpiXMLParser()
Definition
MuctpiXMLParser.cxx:29
MuctpiXMLParser::printConfiguration
void printConfiguration() const
Definition
MuctpiXMLParser.cxx:35
MuctpiXMLParser::readConfiguration
void readConfiguration(const std::string &inputfile)
Definition
MuctpiXMLParser.cxx:43
MuctpiXMLParser::setPtEncoding
void setPtEncoding(boost::property_tree::ptree menuElement, L1MuonPtEncoding &ptEncoding)
Definition
MuctpiXMLParser.cxx:91
MuctpiXMLParser::m_xmlHelper
MuctpiXMLHelper m_xmlHelper
Definition
MuctpiXMLParser.h:80
TrigConf::TrigConfMessaging::TrigConfMessaging
TrigConfMessaging(const std::string &name)
Constructor with parameters.
Definition
TrigConfMessaging.h:34
TrigConf
Forward iterator to traverse the main components of the trigger configuration.
Definition
Config.h:22
std
STL namespace.
test_pyathena.pt
pt
Definition
test_pyathena.py:11
Generated on
for ATLAS Offline Software by
1.17.0