ATLAS Offline Software
MuonSectorProcessor.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // First the corresponding header.
6 #include "MuonSectorProcessor.h"
8 
9 // The headers from other ATLAS packages,
10 // from most to least dependent.
14 #include "TrigConfData/L1Menu.h"
16 
17 // Headers from external packages.
18 #include <boost/property_tree/ptree.hpp>
19 #include <boost/property_tree/xml_parser.hpp>
20 
21 // System headers.
22 #include <string>
23 #include <sstream>
24 #include <iostream>
25 #include <map>
26 #include <set>
27 #include <array>
28 #include <vector>
29 #include <utility>
30 
32 
33 namespace LVL1MUCTPIPHASE1 {
35 
36  std::pair<int,int> barrel_global2local(int sector){
37  auto inoct_sector = ((sector + 2) % 4);
38  auto mioct_number = ((sector + 2) / 4) % 8;
39  return std::make_pair(inoct_sector,mioct_number);
40  }
41 
42  int barrel_local2global(int number,int mioct){
43  return ((30 + 4 * mioct) + number) % 32;
44  }
45 
46  std::pair<int,int> endcap_global2local(int sector){
47  auto inoct_sector = ((sector + 1) % 6);
48  auto mioct_number = ((sector + 1) / 6) % 8;
49  return std::make_pair(inoct_sector,mioct_number);
50 
51  }
52 
53  int endcap_local2global(int number,int mioct){
54  return ((47 + 6 * mioct) + number) % 48;
55  }
56  std::pair<int,int> forward_global2local(int sector){
57  auto inoct_sector = (sector % 3);
58  auto mioct_number = (sector / 3) % 8;
59  return std::make_pair(inoct_sector,mioct_number);
60 
61  }
62 
63  int forward_local2global(int number,int mioct){
64  return ((0 + 3 * mioct) + number) % 24;
65  }
66  };
67 
69  {
70  public:
72  std::map<int,std::set<std::string> > global_pairs;
73 
74  std::array<std::map<std::string,std::vector<std::string>>,2> lhs_index;
75  std::array<std::map<std::string,std::vector<std::string>>,2> rhs_index;
76 
77  std::string make_key(std::string prefix, int global_sec, int roi){
78  prefix += std::to_string(global_sec) + "_" + std::to_string(roi);
79  return prefix;
80  }
81 
82  std::string make_pair(const std::string& lhs, const std::string& rhs) const {
83  return lhs + ":" + rhs;
84  }
85 
86 
88  for(const auto& side_regions : global_pairs ){
89  for(const auto& region : side_regions.second){
90  auto split = region.find(':');
91  auto left = region.substr(0,split);
92  auto right = region.substr(split+1,std::string::npos);
93  lhs_index[side_regions.first][left].push_back(right);
94  rhs_index[side_regions.first][right].push_back(left);
95  }
96  }
97  }
98 
99  std::vector<std::string> get_lhs_keys(const std::string& dettype, int roi, int sector) const {
100  std::vector<std::string> r;
101  r.push_back(dettype + std::to_string(sector) + "_" + std::to_string(roi));
102  return r;
103  }
104 
105  std::vector<std::string> get_rhs_keys(const std::string& dettype, int roi, int sector) const {
106  std::vector<std::string> r;
107  r.push_back(dettype + std::to_string(sector) + "_" + std::to_string(roi));
108  return r;
109  }
110 
111  std::vector<std::string> relevant_regions(int side, const std::string& dettype, int roi, int sector) const {
112  std::vector<std::string> r;
113  for(const auto& key : get_lhs_keys(dettype,roi,sector)){
114  auto x = lhs_index[side].find(key);
115  if(x != lhs_index[side].end()){
116  for(const auto& rr : x->second){
117  r.push_back(make_pair(key,rr));
118  }
119  }
120  }
121  for(const auto& key : get_rhs_keys(dettype,roi,sector)){
122  auto x = rhs_index[side].find(key);
123  if(x != rhs_index[side].end()){
124  for(const auto& rr : x->second){
125  r.push_back(make_pair(rr,key));
126  }
127  }
128  }
129  return r;
130  }
131 
132  void configure(const std::string& lutFile)
133  {
135  read_xml(lutFile, inputTree);
136 
137  boost::property_tree::ptree topEle = inputTree.get_child("MUCTPI_LUT");
138 
139  // iterate through elements of the XML
140  for(const boost::property_tree::ptree::value_type &x: topEle) {
141 
142  std::string topElementName = x.first;
143  ptree lut = x.second;
144 
145  if (topElementName != "LUT") continue;
146 
147  std::string SectorId1 = xmlHelper.getAttribute(lut,"SectorId1");
148  std::string SectorId2 = xmlHelper.getAttribute(lut,"SectorId2");
149 
150  unsigned left_mod = 32;
151  unsigned right_mod = 32;
152  if (SectorId1[0] == 'E') left_mod = 48;
153  if (SectorId1[0] == 'F') left_mod = 24;
154  if (SectorId2[0] == 'E') right_mod = 48;
155  if (SectorId2[0] == 'F') right_mod = 24;
156 
157  std::string snum_left = std::string(1,SectorId1[1])+std::string(1,SectorId1[2]);
158  int sec_left = std::stoi(snum_left) % left_mod;
159 
160  std::string snum_right = std::string(1,SectorId2[1])+std::string(1,SectorId2[2]);
161  int sec_right = std::stoi(snum_right) % right_mod;
162 
163  std::string side = xmlHelper.getAttribute(lut,"Side");
164  int active_side = (side == "C") ? 0 : 1;
165 
166  std::string System1 = SectorId1.substr(0,1);
167  std::string System2 = SectorId2.substr(0,1);
168 
169  for(const boost::property_tree::ptree::value_type &z: lut) {
170  std::string menuElementName = z.first;
171  if(menuElementName!="Element" && menuElementName!="BBElement")continue;
172  ptree ele = z.second;
173  auto roi1 = xmlHelper.getIntAttribute(ele, "RoI1");
174  auto roi2 = xmlHelper.getIntAttribute(ele, "RoI2");
175  auto lhs_key = make_key(System1,sec_left,roi1);
176  auto rhs_key = make_key(System2,sec_right,roi2);
177  auto region = make_pair(lhs_key,rhs_key);
178  global_pairs[active_side].insert(region);
179  }
180  }
181  create_indices();
182  }
183  };
184 
185 
187  :
188  m_overlapHelper(std::make_unique<OverlapHelper>()),
189  m_l1menu(nullptr),
190  m_l1topoLUT(nullptr),
191  m_side(side)
192  {
193  }
194 
196  {
197  }
198 
200  : m_overlapHelper(std::move(o.m_overlapHelper)) {}
201 
203  {
204  m_l1menu = l1menu;
205  }
206 
207  void MuonSectorProcessor::configureOverlapRemoval(const std::string& lutFile)
208  {
209  m_overlapHelper->configure(lutFile);
210  }
211 
213  {
214  if (!m_l1menu) return false;
215 
216  m_ptEncoding.clear();
217  m_ptEncoding = std::vector<std::map<int, int> >(3, std::map<int, int>());
218 
219  //build the map between index and pt threshold.
220  //the index is the 3- or 4-bit pt word, and has a different
221  //pt threshold meaning depending on the subsystem.
222  //the value part of the map is the pt value for the 3 subsystems,
223  //and the key is the index for an arbitrary subsystem.
224  //not all indices will be covered by all subsystems since
225  //barrel only has 3 bits, so initialize the value tuple with -1
226  const auto & exMU = &m_l1menu->thrExtraInfo().MU();
227  auto rpcPtValues = exMU->knownRpcPtValues();
228  auto tgcPtValues = exMU->knownTgcPtValues();
229  for ( unsigned i=0; i<rpcPtValues.size(); i++){
230  m_ptEncoding[0][i] = exMU->ptForRpcIdx(i);
231  }
232  for ( unsigned i=0; i<tgcPtValues.size(); i++){
233  m_ptEncoding[1][i] = exMU->ptForTgcIdx(i);
234  m_ptEncoding[2][i] = exMU->ptForTgcIdx(i);
235  }
236 
237  return true;
238  }
239 
240 
242  {
243  std::map<std::string,std::vector<std::pair<std::shared_ptr<LVL1MUONIF::Lvl1MuSectorLogicDataPhase1>, unsigned> > > buckets;
244 
245  for (size_t isys=0;isys<LVL1MUONIF::Lvl1MuCTPIInputPhase1::numberOfSystems();isys++)
246  {
247  // Sectors per system
249  for (size_t isec=0;isec<LVL1MUONIF::Lvl1MuCTPIInputPhase1::numberOfSector(system);isec++)
250  {
251  // A+C sides
252  for (size_t isub=0;isub<2;isub++)
253  {
254  if (isub != size_t(m_side)) continue;
255 
256  //get a pointer to this since we'll need to modify the 'veto' flag of the SL data
257  std::shared_ptr<LVL1MUONIF::Lvl1MuSectorLogicDataPhase1> sectorData = inputs->getSectorLogicDataPtr(isys, isub, isec, bcid);
258  if (!sectorData) continue;
259 
260  for (unsigned int icand=0;icand<LVL1MUONIF::NCAND[isys];icand++)
261  {
262  //build the sector name
263  std::string sectorName="";
264  if (isys == 0) sectorName="B";
265  else if (isys == 1) sectorName="E";
266  else if (isys == 2) sectorName="F";
267 
268  int roiID = sectorData->roi(icand);
269  if (roiID < 0) continue;
270  int ptword = sectorData->pt(icand);
271  if (ptword < 0) continue;
272 
273  // initializing veto flag for the latter removal step
274  sectorData->veto(icand,0);
275 
276  for(auto rr : m_overlapHelper->relevant_regions(m_side,sectorName,roiID,isec))
277  {
278  // for the barrel-barrel overlap removal, only the muons having the phi-overlap flag are considered
279  if( std::count(rr.begin(),rr.end(),'B') == 2 && isys == 0 && sectorData->ovl(icand) == 0 )continue;
280  buckets[rr].push_back(std::make_pair(sectorData, icand));
281  }
282  }
283  }
284  }
285  }
286 
287  for(auto candidate_vector : buckets){ // loop over candidates in OL region pair
288 
289  // sorting (to be tuned)
290  unsigned i_notRemove = 0;
291  int ptMax = 0;
292  for (unsigned i=0;i<candidate_vector.second.size();i++){
293  if( candidate_vector.second[i].first->veto(candidate_vector.second[i].second)==1 ) continue; // skipping already-flagged candidate
294  int pt = candidate_vector.second[i].first->pt(candidate_vector.second[i].second);
295  if(pt > ptMax){
296  ptMax = pt;
297  i_notRemove = i;
298  }
299  }
300 
301  //for each candidate except the highest pt, mark them for removal
302  for (unsigned i=0;i<candidate_vector.second.size();i++)
303  {
304  if( candidate_vector.second[i].first->veto(candidate_vector.second[i].second)==1 ) continue; // skipping already-flagged candidate
305  candidate_vector.second[i].first->veto(candidate_vector.second[i].second, (i==i_notRemove)?0:1 );
306  }
307  }
308  }
309 
311  LVL1::MuCTPIL1Topo& l1topoData) const
312  {
313  // Barrel + EC + Fwd
314  for (unsigned short isys=0;isys<LVL1MUONIF::Lvl1MuCTPIInputPhase1::numberOfSystems();isys++)
315  {
316  // Sectors per system
318  for (unsigned short isec=0;isec<LVL1MUONIF::Lvl1MuCTPIInputPhase1::numberOfSector(system);isec++)
319  {
320  // A+C sides
321  for (unsigned short isub=0;isub<2;isub++)
322  {
323  if (isub != (unsigned short)(m_side)) continue;
324  std::shared_ptr<LVL1MUONIF::Lvl1MuSectorLogicDataPhase1> sectorData = inputs->getSectorLogicDataPtr(isys, isub, isec, bcid);
325  if (!sectorData) continue;
326 
327  //build the sector name
328  std::stringstream sectorName;
329  if (isys == 0) sectorName<<"B";
330  else if (isys == 1) sectorName<<"E";
331  else if (isys == 2) sectorName<<"F";
332 
334  if (isys == 0)
335  {
336  int sectorNumber=isec;
337  if (side == LVL1MUONIF::Lvl1MuCTPIInputPhase1::idSideC()) sectorNumber += 32;
338  if (sectorNumber < 10) sectorName << "0";
339  sectorName << sectorNumber;
340  }
341  else
342  {
343  if (side == LVL1MUONIF::Lvl1MuCTPIInputPhase1::idSideA()) sectorName << "A";
344  else sectorName << "C";
345  if (isec < 10) sectorName << "0";
346  sectorName << isec;
347  }
348 
349 
350  for (unsigned int icand=0;icand<LVL1MUONIF::NCAND[isys];icand++)
351  {
352  //find the eta/phi
353  int roiID = sectorData->roi(icand);
354  if (roiID < 0) continue;
355  int ptword = sectorData->pt(icand);
356  if (ptword < 0) continue;
357 
358  // the following doesn't quite follow the correct nomenclature, should be (side, isub, isec, roiID) thus there was a typo chain in L399+ using isub instead of the correct isys
359  // see: https://gitlab.cern.ch/atlas/athena/-/blob/master/Trigger/TrigT1/TrigT1MuctpiPhase1/src/L1TopoLUT.cxx#L161
360  L1TopoCoordinates coord = m_l1topoLUT->getCoordinates(isub, isys, isec, roiID);
361 
362  //check for invalid decoding
363  if (coord == L1TopoCoordinates())
364  {
365  std::stringstream err;
366  err << "Couldn't decode L1Topo coordinates: Side = " << isub << ", subsystem = " << isys << ", sector = " << isec << ", roi = " << roiID;
367  return err.str();
368  }
369 
370  int ptValue = 0;
371  auto enc = m_ptEncoding[isys].find(ptword);
372  if (enc == m_ptEncoding[isys].end())
373  {
374  auto last_enc = m_ptEncoding[isys].rbegin();
375  if (last_enc != m_ptEncoding[isys].rend() && ptword > last_enc->first)
376  {
377  ptValue = m_ptEncoding[isys].rbegin()->second;
378  }
379  else
380  {
381  std::stringstream err;
382  err << "Pt threshold not found in L1Topo encoding. Thr: " << ptword << ", subsys: " << isys;
383  return err.str();
384  }
385  }
386  else ptValue=enc->second;
387 
388  if (ptValue < 0)
389  {
390  std::stringstream err;
391  err << "Default value returned for pt encoding. Thr: " << ptword << ", isys: " << isys;
392  return err.str();
393  }
394 
395 
396  // no longer needed, but keep for backwards compatibility
397  int etacode=0;
398  int phicode = 0;
399  unsigned int mioctID = 0;
400  unsigned int ptCode=0;
401 
403  cand.setCandidateData(sectorName.str(),
404  roiID,
405  bcid,
406  (unsigned int)ptword,
407  ptCode, //removed Run3
408  (unsigned int)ptValue,
409  coord.eta,
410  coord.phi,
411  etacode, //removed Run3
412  phicode, //removed Run3
413  coord.eta_min,
414  coord.eta_max,
415  coord.phi_min,
416  coord.phi_max,
417  mioctID, //removed Run3
418  coord.ieta,
419  coord.iphi);
420 
421  if (isys == 0) cand.setRPCFlags(sectorData->is2candidates(icand),
422  sectorData->ovl(icand));
423  else cand.setTGCFlags(sectorData->bw2or3(icand),
424  sectorData->innercoin(icand),
425  sectorData->goodmf(icand),
426  sectorData->charge(icand));
427 
428 
429  l1topoData.addCandidate(cand);
430  }
431  }
432  }
433  }
434  return "";
435  }
436 
437 }
LVL1MUCTPIPHASE1::SectorNumberConverter::barrel_global2local
std::pair< int, int > barrel_global2local(int sector)
Definition: MuonSectorProcessor.cxx:36
beamspotman.r
def r
Definition: beamspotman.py:676
MuctpiXMLHelper::getAttribute
std::string getAttribute(const boost::property_tree::ptree &tree, const std::string &attr)
Definition: MuctpiXMLHelper.cxx:67
LVL1MUCTPIPHASE1::OverlapHelper::xmlHelper
MuctpiXMLHelper xmlHelper
Definition: MuonSectorProcessor.cxx:71
LVL1MUCTPIPHASE1::OverlapHelper::configure
void configure(const std::string &lutFile)
Definition: MuonSectorProcessor.cxx:132
MuctpiXMLHelper
Definition: MuctpiXMLHelper.h:13
LVL1::MuCTPIL1TopoCandidate::setRPCFlags
void setRPCFlags(bool is2cand, bool phiOvl)
Definition: MuCTPIL1TopoCandidate.cxx:61
LVL1::MuCTPIL1TopoCandidate::setCandidateData
void setCandidateData(const std::string &sectorName, unsigned int roiID, unsigned int bcid, unsigned int ptThresholdID, unsigned int ptL1TopoCode, unsigned int ptValue, float eta, float phi, unsigned int etacode, unsigned int phicode, float etamin, float etamax, float phimin, float phimax, unsigned int mioctID, int ieta, int iphi)
Definition: MuCTPIL1TopoCandidate.cxx:17
Lvl1MuSectorLogicConstantsPhase1.h
checkNSWValTree.inputTree
inputTree
Definition: checkNSWValTree.py:27
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
LVL1MUCTPIPHASE1::SectorNumberConverter::endcap_global2local
std::pair< int, int > endcap_global2local(int sector)
Definition: MuonSectorProcessor.cxx:46
make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: SkimmingToolEXOT5.cxx:23
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::innercoin
int innercoin(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:56
LVL1::MuCTPIL1TopoCandidate::setTGCFlags
void setTGCFlags(bool bw2or3, bool innerCoin, bool goodMF, int charge)
Definition: MuCTPIL1TopoCandidate.cxx:53
TrigConf::L1Menu::thrExtraInfo
const L1ThrExtraInfo & thrExtraInfo() const
Access to extra info for threshold types.
Definition: L1Menu.cxx:307
LVL1MUCTPIPHASE1::SectorNumberConverter
Definition: MuonSectorProcessor.cxx:34
LVL1MUCTPIPHASE1::MuonSectorProcessor::m_overlapHelper
std::unique_ptr< OverlapHelper > m_overlapHelper
Definition: MuonSectorProcessor.h:54
LVL1MUONIF::Lvl1MuCTPIInputPhase1
Class representing (part of) the input data to the MuCTPI for Phase 1.
Definition: Lvl1MuCTPIInputPhase1.h:33
test_pyathena.pt
pt
Definition: test_pyathena.py:11
LVL1::MuCTPIL1Topo
MuCTPI input class to the L1Topo simulation.
Definition: MuCTPIL1Topo.h:24
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::bw2or3
int bw2or3(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:57
TrigConf::L1Menu
L1 menu configuration.
Definition: L1Menu.h:28
LVL1MUCTPIPHASE1::SectorNumberConverter::forward_local2global
int forward_local2global(int number, int mioct)
Definition: MuonSectorProcessor.cxx:63
LVL1MUONIF::Lvl1MuCTPIInputPhase1::MuonSystem
MuonSystem
Definition: Lvl1MuCTPIInputPhase1.h:47
LVL1MUCTPIPHASE1::L1TopoCoordinates
Definition: L1TopoLUT.h:23
LVL1MUCTPIPHASE1::SectorNumberConverter::forward_global2local
std::pair< int, int > forward_global2local(int sector)
Definition: MuonSectorProcessor.cxx:56
x
#define x
LVL1MUCTPIPHASE1::SectorNumberConverter::endcap_local2global
int endcap_local2global(int number, int mioct)
Definition: MuonSectorProcessor.cxx:53
L1Threshold.h
postInclude.inputs
inputs
Definition: postInclude.SortInput.py:15
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::ovl
int ovl(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:51
LVL1MUONIF::Lvl1MuCTPIInputPhase1::MuonSubSystem
MuonSubSystem
Definition: Lvl1MuCTPIInputPhase1.h:48
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
ITkPixEncoding::lut
constexpr auto lut(Generator &&f)
Definition: ITkPixQCoreEncodingLUT.h:19
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
LVL1MUCTPIPHASE1::MuonSectorProcessor::setMenu
void setMenu(const TrigConf::L1Menu *l1menu)
Definition: MuonSectorProcessor.cxx:202
LVL1MUCTPIPHASE1::MuonSectorProcessor
Definition: MuonSectorProcessor.h:37
TRT::Hit::side
@ side
Definition: HitInfo.h:83
LVL1MUCTPIPHASE1::OverlapHelper::global_pairs
std::map< int, std::set< std::string > > global_pairs
Definition: MuonSectorProcessor.cxx:72
Lvl1MuCTPIInputPhase1.h
L1TopoLUT.h
LVL1MUCTPIPHASE1::OverlapHelper::create_indices
void create_indices()
Definition: MuonSectorProcessor.cxx:87
LVL1MUCTPIPHASE1::MuonSectorProcessor::runOverlapRemoval
void runOverlapRemoval(LVL1MUONIF::Lvl1MuCTPIInputPhase1 *inputs, int bcid) const
Definition: MuonSectorProcessor.cxx:241
TrigConf::L1ThrExtraInfo::MU
const L1ThrExtraInfo_MU & MU() const
Definition: L1ThrExtraInfo.cxx:188
MuonSectorProcessor.h
dqt_zlumi_pandas.err
err
Definition: dqt_zlumi_pandas.py:193
LVL1MUCTPIPHASE1::OverlapHelper
Definition: MuonSectorProcessor.cxx:69
LVL1MUCTPIPHASE1
Definition: Configuration.h:11
lumiFormat.i
int i
Definition: lumiFormat.py:92
LVL1MUCTPIPHASE1::L1TopoLUT::getCoordinates
L1TopoCoordinates getCoordinates(const unsigned short &side, const unsigned short &subsystem, const unsigned short &sectorID, const unsigned short &roi) const
Definition: L1TopoLUT.cxx:218
z
#define z
LVL1MUCTPIPHASE1::MuonSectorProcessor::m_l1menu
const TrigConf::L1Menu * m_l1menu
Definition: MuonSectorProcessor.h:59
LVL1MUONIF::Lvl1MuCTPIInputPhase1::numberOfSystems
static size_t numberOfSystems()
Definition: Lvl1MuCTPIInputPhase1.h:142
LVL1MUONIF::Lvl1MuCTPIInputPhase1::idSideA
static size_t idSideA()
Definition: Lvl1MuCTPIInputPhase1.h:140
LVL1MUCTPIPHASE1::MuonSectorProcessor::configurePtEncoding
bool configurePtEncoding()
Definition: MuonSectorProcessor.cxx:212
LVL1MUONIF::Lvl1MuCTPIInputPhase1::numberOfSector
static size_t numberOfSector(MuonSystem system)
Definition: Lvl1MuCTPIInputPhase1.h:143
checkCorrelInHIST.prefix
dictionary prefix
Definition: checkCorrelInHIST.py:391
LVL1MUCTPIPHASE1::OverlapHelper::relevant_regions
std::vector< std::string > relevant_regions(int side, const std::string &dettype, int roi, int sector) const
Definition: MuonSectorProcessor.cxx:111
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::charge
int charge(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:53
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::veto
int veto(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:58
LVL1MUCTPIPHASE1::MuonSectorProcessor::m_ptEncoding
std::vector< std::map< int, int > > m_ptEncoding
Definition: MuonSectorProcessor.h:64
LVL1MUCTPIPHASE1::SectorNumberConverter::barrel_local2global
int barrel_local2global(int number, int mioct)
Definition: MuonSectorProcessor.cxx:42
LVL1MUCTPIPHASE1::OverlapHelper::make_pair
std::string make_pair(const std::string &lhs, const std::string &rhs) const
Definition: MuonSectorProcessor.cxx:82
ptree
boost::property_tree::ptree ptree
Definition: JsonFileLoader.cxx:16
LVL1::MuCTPIL1TopoCandidate
MuCTPI input class to the L1Topo simulation.
Definition: MuCTPIL1TopoCandidate.h:23
MuctpiXMLHelper::getIntAttribute
int getIntAttribute(const boost::property_tree::ptree &tree, const std::string &attr)
Definition: MuctpiXMLHelper.cxx:84
python.selection.number
number
Definition: selection.py:20
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
LVL1MUCTPIPHASE1::OverlapHelper::lhs_index
std::array< std::map< std::string, std::vector< std::string > >, 2 > lhs_index
Definition: MuonSectorProcessor.cxx:74
LVL1MUCTPIPHASE1::OverlapHelper::make_key
std::string make_key(std::string prefix, int global_sec, int roi)
Definition: MuonSectorProcessor.cxx:77
LVL1MUCTPIPHASE1::MuonSectorProcessor::MuonSectorProcessor
MuonSectorProcessor(bool side)
Definition: MuonSectorProcessor.cxx:186
LVL1MUCTPIPHASE1::MuonSectorProcessor::m_side
bool m_side
Definition: MuonSectorProcessor.h:61
xAOD::bcid
setEventNumber setTimeStamp bcid
Definition: EventInfo_v1.cxx:133
LVL1MUCTPIPHASE1::OverlapHelper::get_rhs_keys
std::vector< std::string > get_rhs_keys(const std::string &dettype, int roi, int sector) const
Definition: MuonSectorProcessor.cxx:105
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::goodmf
int goodmf(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:55
JetVoronoiDiagramHelpers::coord
double coord
Definition: JetVoronoiDiagramHelpers.h:45
LVL1::MuCTPIL1Topo::addCandidate
void addCandidate(const MuCTPIL1TopoCandidate &candidate)
Definition: MuCTPIL1Topo.cxx:51
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::pt
int pt(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:52
MuCTPIL1Topo.h
LVL1MUCTPIPHASE1::MuonSectorProcessor::m_l1topoLUT
const L1TopoLUT * m_l1topoLUT
Definition: MuonSectorProcessor.h:60
LVL1MUONIF::Lvl1MuCTPIInputPhase1::idSideC
static size_t idSideC()
Definition: Lvl1MuCTPIInputPhase1.h:141
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::is2candidates
bool is2candidates(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:54
LVL1MUCTPIPHASE1::OverlapHelper::get_lhs_keys
std::vector< std::string > get_lhs_keys(const std::string &dettype, int roi, int sector) const
Definition: MuonSectorProcessor.cxx:99
python.XMLReader.l1menu
l1menu
Definition: XMLReader.py:73
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::roi
int roi(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:50
rr
const boost::regex rr(r_r)
LVL1MUCTPIPHASE1::OverlapHelper::rhs_index
std::array< std::map< std::string, std::vector< std::string > >, 2 > rhs_index
Definition: MuonSectorProcessor.cxx:75
L1Menu.h
LVL1MUCTPIPHASE1::MuonSectorProcessor::makeL1TopoData
std::string makeL1TopoData(LVL1MUONIF::Lvl1MuCTPIInputPhase1 *inputs, int bcid, LVL1::MuCTPIL1Topo &l1topoData) const
Definition: MuonSectorProcessor.cxx:310
LVL1MUCTPIPHASE1::MuonSectorProcessor::~MuonSectorProcessor
~MuonSectorProcessor()
Definition: MuonSectorProcessor.cxx:195
LVL1MUCTPIPHASE1::MuonSectorProcessor::configureOverlapRemoval
void configureOverlapRemoval(const std::string &lutFile)
Definition: MuonSectorProcessor.cxx:207
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37