15 #include "xercesc/framework/StdOutFormatTarget.hpp" 16 #include "xercesc/framework/LocalFileFormatTarget.hpp" 17 #include "xercesc/parsers/XercesDOMParser.hpp" 18 #include "xercesc/dom/DOM.hpp" 19 #include "xercesc/dom/DOMException.hpp" 20 #include "xercesc/dom/DOMImplementation.hpp" 21 #include "xercesc/sax/HandlerBase.hpp" 22 #include "xercesc/util/XMLString.hpp" 23 #include "xercesc/util/PlatformUtils.hpp" 24 #include "xercesc/util/XercesDefs.hpp" 37 XMLCh* buff = XMLString::transcode(temp.c_str());
66 for (
unsigned int i=0;
i< luts.size();
i++ ) {
70 std::stringstream strStream;
74 if(type==
"iCharge") outWidth = 1;
75 if(type==
"iEta") outWidth = 2;
76 if(type==
"iPt") outWidth = 9;
77 if(type==
"meanDistPhi"){
87 strStream <<
"#<header> V1 "<<totalInWidth<<
" "<<outWidth<<
" </header> "<<std::endl;
93 if(type==
"iCharge") out = it->key().theCharge==-1 ? 0:1;
94 if(type==
"iEta") out = it->key().theEtaCode;
95 if(type==
"iPt") out = it->key().thePtCode;
96 if(type==
"meanDistPhi"){
97 for(
unsigned int iLayer = 0;iLayer<(unsigned) aConfig.
nLayers();++iLayer){
98 for(
unsigned int iRefLayer=0;iRefLayer<(unsigned) aConfig.
nRefLayers();++iRefLayer){
99 out = (1<<(outWidth-1)) + it->meanDistPhiValue(iLayer,iRefLayer);
100 strStream<<in<<
" "<<out<<std::endl;
106 for(
unsigned int iLayer = 0;iLayer<(unsigned)aConfig.
nLayers();++iLayer){
107 for(
unsigned int iRefLayer=0;iRefLayer<(unsigned)aConfig.
nRefLayers();++iRefLayer){
108 for(
unsigned int iPdf=0;iPdf<exp2(aConfig.
nPdfAddrBits());++iPdf){
109 out = it->pdfValue(iLayer,iRefLayer,iPdf);
110 strStream<<in<<
" "<<out<<std::endl;
116 if(type!=
"meanDistPhi" && type!=
"pdf"){
117 strStream<<in<<
" "<<out<<std::endl;
123 lut->
read(strStream);
133 XMLPlatformUtils::Initialize();
136 parser.setValidationScheme(XercesDOMParser::Val_Auto);
137 parser.setDoNamespaces(
false);
140 xercesc::DOMDocument* doc = parser.getDocument();
143 XMLCh *xmlOmtf=
_toDOMS(
"OMTF");
144 XMLCh *xmlVersion=
_toDOMS(
"version");
145 DOMNode *aNode = doc->getElementsByTagName(xmlOmtf)->item(0);
146 DOMElement* aOMTFElement =
static_cast<DOMElement *
>(aNode);
148 version = std::stoul(
_toString(aOMTFElement->getAttribute(xmlVersion)),
nullptr, 16);
151 parser.resetDocumentPool();
153 XMLPlatformUtils::Terminate();
163 XMLPlatformUtils::Initialize();
170 parser.setValidationScheme(XercesDOMParser::Val_Auto);
171 parser.setDoNamespaces(
false);
174 xercesc::DOMDocument* doc = parser.getDocument();
177 unsigned int nElem = doc->getElementsByTagName(xmlGP)->getLength();
180 edm::LogError(
"critical")<<
"No GoldenPattern items: GP found"<<std::endl;
185 DOMElement* aGPElement = 0;
186 unsigned int iGPNumber=0;
188 for(
unsigned int iItem=0;iItem<nElem;++iItem){
189 aNode = doc->getElementsByTagName(xmlGP)->item(iItem);
190 aGPElement =
static_cast<DOMElement *
>(aNode);
192 std::unique_ptr<GoldenPattern> aGP;
195 if(aGPElement->getAttributeNode(xmliPt[
index-1])) {
203 aGP =
buildGP(aGPElement, aConfig);
215 parser.resetDocumentPool();
224 XMLPlatformUtils::Terminate();
233 unsigned int aGPNumber){
236 XMLCh *xmliEta=
_toDOMS(
"iEta");
238 std::ostringstream stringStr;
239 if (index>0) stringStr<<
"iPt"<<
index;
240 else stringStr.str(
"iPt");
241 XMLCh *xmliPt=
_toDOMS(stringStr.str().c_str());
243 if (index>0) stringStr<<
"value"<<
index;
244 else stringStr.str(
"value");
245 XMLCh *xmlValue=
_toDOMS(stringStr.str().c_str());
247 XMLCh *xmliCharge=
_toDOMS(
"iCharge");
248 XMLCh *xmlLayer=
_toDOMS(
"Layer");
249 XMLCh *xmlRefLayer=
_toDOMS(
"RefLayer");
250 XMLCh *xmlmeanDistPhi=
_toDOMS(
"meanDistPhi");
253 unsigned int iPt = std::atoi(
_toString(aGPElement->getAttribute(xmliPt)).c_str());
254 int iEta = std::atoi(
_toString(aGPElement->getAttribute(xmliEta)).c_str());
255 int iCharge = std::atoi(
_toString(aGPElement->getAttribute(xmliCharge)).c_str());
257 unsigned int nLayers = aGPElement->getElementsByTagName(xmlLayer)->getLength();
258 assert(nLayers==(
unsigned) aConfig.
nLayers());
261 DOMElement* aLayerElement = 0;
262 DOMElement* aItemElement = 0;
270 meanDistPhi2D.assign(aConfig.
nLayers(),meanDistPhi1D);
273 pdf3D.assign(aConfig.
nLayers(),pdf2D);
275 Key aKey(iEta,iPt,iCharge, aGPNumber);
276 auto aGP = std::make_unique<GoldenPattern>(aKey,
static_cast<const OMTFConfiguration*
>(
nullptr));
277 aGP->setMeanDistPhi(meanDistPhi2D);
283 for(
unsigned int iLayer=0;iLayer<
nLayers;++iLayer){
284 aNode = aGPElement->getElementsByTagName(xmlLayer)->item(iLayer);
285 aLayerElement =
static_cast<DOMElement *
>(aNode);
287 unsigned int nItems = aLayerElement->getElementsByTagName(xmlRefLayer)->getLength();
288 assert(nItems==(
unsigned) aConfig.
nRefLayers());
290 for(
unsigned int iItem=0;iItem<nItems;++iItem){
291 aNode = aLayerElement->getElementsByTagName(xmlRefLayer)->item(iItem);
292 aItemElement =
static_cast<DOMElement *
>(aNode);
293 val = std::atoi(
_toString(aItemElement->getAttribute(xmlmeanDistPhi)).c_str());
294 meanDistPhi1D[iItem] =
val;
296 meanDistPhi2D[iLayer] = meanDistPhi1D;
299 nItems = aLayerElement->getElementsByTagName(xmlPDF)->getLength();
301 for(
unsigned int iRefLayer=0;iRefLayer<(unsigned) aConfig.
nRefLayers();++iRefLayer){
303 for(
unsigned int iPdf=0;iPdf<exp2(aConfig.
nPdfAddrBits());++iPdf){
304 aNode = aLayerElement->getElementsByTagName(xmlPDF)->item(iRefLayer*exp2(aConfig.
nPdfAddrBits())+iPdf);
305 aItemElement =
static_cast<DOMElement *
>(aNode);
306 val = std::atoi(
_toString(aItemElement->getAttribute(xmlValue)).c_str());
309 pdf2D[iRefLayer] = pdf1D;
311 pdf3D[iLayer] = pdf2D;
314 Key aKey(iEta,iPt,iCharge, aGPNumber);
315 auto aGP = std::make_unique<GoldenPattern>(aKey,
static_cast<const OMTFConfiguration*
>(
nullptr));
316 aGP->setMeanDistPhi(meanDistPhi2D);
333 unsigned int iProcessor,
343 XMLPlatformUtils::Initialize();
346 parser.setValidationScheme(XercesDOMParser::Val_Auto);
347 parser.setDoNamespaces(
false);
349 XMLCh *xmlOMTF=
_toDOMS(
"OMTF");
350 XMLCh *xmlversion=
_toDOMS(
"version");
351 XMLCh *xmlGlobalData=
_toDOMS(
"GlobalData");
352 XMLCh *xmlnPdfAddrBits=
_toDOMS(
"nPdfAddrBits");
353 XMLCh *xmlnPdfValBits=
_toDOMS(
"nPdfValBits");
354 XMLCh *xmlnPhiBits=
_toDOMS(
"nPhiBits");
355 XMLCh *xmlnPhiBins=
_toDOMS(
"nPhiBins");
356 XMLCh *xmlnProcessors =
_toDOMS(
"nProcessors");
357 XMLCh *xmlnLogicRegions =
_toDOMS(
"nLogicRegions");
358 XMLCh *xmlnInputs=
_toDOMS(
"nInputs");
359 XMLCh *xmlnLayers=
_toDOMS(
"nLayers");
360 XMLCh *xmlnRefLayers=
_toDOMS(
"nRefLayers");
361 XMLCh *xmliProcessor=
_toDOMS(
"iProcessor");
362 XMLCh *xmlbarrelMin=
_toDOMS(
"barrelMin");
363 XMLCh *xmlbarrelMax=
_toDOMS(
"barrelMax");
364 XMLCh *xmlendcap10DegMin=
_toDOMS(
"endcap10DegMin");
365 XMLCh *xmlendcap10DegMax=
_toDOMS(
"endcap10DegMax");
366 XMLCh *xmlendcap20DegMin=
_toDOMS(
"endcap20DegMin");
367 XMLCh *xmlendcap20DegMax=
_toDOMS(
"endcap20DegMax");
368 XMLCh *xmlLayerMap =
_toDOMS(
"LayerMap");
369 XMLCh *xmlhwNumber =
_toDOMS(
"hwNumber");
370 XMLCh *xmllogicNumber =
_toDOMS(
"logicNumber");
371 XMLCh *xmlbendingLayer =
_toDOMS(
"bendingLayer");
372 XMLCh *xmlconnectedToLayer =
_toDOMS(
"connectedToLayer");
373 XMLCh *xmlRefLayerMap =
_toDOMS(
"RefLayerMap");
374 XMLCh *xmlrefLayer =
_toDOMS(
"refLayer");
375 XMLCh *xmlProcessor =
_toDOMS(
"Processor");
376 XMLCh *xmlRefLayer =
_toDOMS(
"RefLayer");
377 XMLCh *xmliRefLayer =
_toDOMS(
"iRefLayer");
378 XMLCh *xmliGlobalPhiStart =
_toDOMS(
"iGlobalPhiStart");
379 XMLCh *xmlRefHit =
_toDOMS(
"RefHit");
380 XMLCh *xmliRefHit =
_toDOMS(
"iRefHit");
381 XMLCh *xmliPhiMin =
_toDOMS(
"iPhiMin");
382 XMLCh *xmliPhiMax =
_toDOMS(
"iPhiMax");
383 XMLCh *xmliInput =
_toDOMS(
"iInput");
384 XMLCh *xmliRegion =
_toDOMS(
"iRegion");
385 XMLCh *xmlLogicRegion =
_toDOMS(
"LogicRegion");
386 XMLCh *xmlLayer =
_toDOMS(
"Layer");
387 XMLCh *xmliLayer =
_toDOMS(
"iLayer");
388 XMLCh *xmliFirstInput =
_toDOMS(
"iFirstInput");
389 XMLCh *xmlnHitsPerLayer =
_toDOMS(
"nHitsPerLayer");
390 XMLCh *xmlnRefHits =
_toDOMS(
"nRefHits");
391 XMLCh *xmlnTestRefHits =
_toDOMS(
"nTestRefHits");
392 XMLCh *xmlnGoldenPatterns =
_toDOMS(
"nGoldenPatterns");
393 XMLCh *xmlConnectionMap =
_toDOMS(
"ConnectionMap");
395 xercesc::DOMDocument* doc = parser.getDocument();
397 unsigned int nElem = doc->getElementsByTagName(xmlOMTF)->getLength();
402 DOMNode *aNode = doc->getElementsByTagName(xmlOMTF)->item(0);
403 DOMElement* aOMTFElement =
static_cast<DOMElement *
>(aNode);
405 unsigned int version = std::stoul(
_toString(aOMTFElement->getAttribute(xmlversion)),
nullptr, 16);
409 nElem = aOMTFElement->getElementsByTagName(xmlGlobalData)->getLength();
411 aNode = aOMTFElement->getElementsByTagName(xmlGlobalData)->item(0);
412 DOMElement* aElement =
static_cast<DOMElement *
>(aNode);
414 unsigned int nPdfAddrBits = std::atoi(
_toString(aElement->getAttribute(xmlnPdfAddrBits)).c_str());
415 unsigned int nPdfValBits = std::atoi(
_toString(aElement->getAttribute(xmlnPdfValBits)).c_str());
416 unsigned int nHitsPerLayer = std::atoi(
_toString(aElement->getAttribute(xmlnHitsPerLayer)).c_str());
417 unsigned int nPhiBits = std::atoi(
_toString(aElement->getAttribute(xmlnPhiBits)).c_str());
418 unsigned int nPhiBins = std::atoi(
_toString(aElement->getAttribute(xmlnPhiBins)).c_str());
420 unsigned int nRefHits = std::atoi(
_toString(aElement->getAttribute(xmlnRefHits)).c_str());
421 unsigned int nTestRefHits = std::atoi(
_toString(aElement->getAttribute(xmlnTestRefHits)).c_str());
422 unsigned int nProcessors = std::atoi(
_toString(aElement->getAttribute(xmlnProcessors)).c_str());
423 unsigned int nLogicRegions = std::atoi(
_toString(aElement->getAttribute(xmlnLogicRegions)).c_str());
424 unsigned int nInputs = std::atoi(
_toString(aElement->getAttribute(xmlnInputs)).c_str());
425 unsigned int nLayers = std::atoi(
_toString(aElement->getAttribute(xmlnLayers)).c_str());
426 unsigned int nRefLayers = std::atoi(
_toString(aElement->getAttribute(xmlnRefLayers)).c_str());
427 unsigned int nGoldenPatterns = std::atoi(
_toString(aElement->getAttribute(xmlnGoldenPatterns)).c_str());
447 std::vector<int> sectorsStart(3*nProcessors), sectorsEnd(3*nProcessors);
448 nElem = aOMTFElement->getElementsByTagName(xmlConnectionMap)->getLength();
449 DOMElement* aConnectionElement = 0;
450 for(
unsigned int i=0;
i<nElem;++
i){
451 aNode = aOMTFElement->getElementsByTagName(xmlConnectionMap)->item(
i);
452 aConnectionElement =
static_cast<DOMElement *
>(aNode);
453 unsigned int iProcessor = std::atoi(
_toString(aConnectionElement->getAttribute(xmliProcessor)).c_str());
454 unsigned int barrelMin = std::atoi(
_toString(aConnectionElement->getAttribute(xmlbarrelMin)).c_str());
455 unsigned int barrelMax = std::atoi(
_toString(aConnectionElement->getAttribute(xmlbarrelMax)).c_str());
456 unsigned int endcap10DegMin = std::atoi(
_toString(aConnectionElement->getAttribute(xmlendcap10DegMin)).c_str());
457 unsigned int endcap10DegMax = std::atoi(
_toString(aConnectionElement->getAttribute(xmlendcap10DegMax)).c_str());
458 unsigned int endcap20DegMin = std::atoi(
_toString(aConnectionElement->getAttribute(xmlendcap20DegMin)).c_str());
459 unsigned int endcap20DegMax = std::atoi(
_toString(aConnectionElement->getAttribute(xmlendcap20DegMax)).c_str());
461 sectorsStart[iProcessor] = barrelMin;
462 sectorsStart[iProcessor + nProcessors] = endcap10DegMin;
463 sectorsStart[iProcessor + 2*nProcessors] = endcap20DegMin;
465 sectorsEnd[iProcessor] = barrelMax;
466 sectorsEnd[iProcessor + nProcessors] = endcap10DegMax;
467 sectorsEnd[iProcessor + 2*nProcessors] = endcap20DegMax;
474 std::vector<L1TMuonOverlapParams::LayerMapNode> aLayerMapVec;
477 nElem = aOMTFElement->getElementsByTagName(xmlLayerMap)->getLength();
478 DOMElement* aLayerElement = 0;
479 for(
unsigned int i=0;
i<nElem;++
i){
480 aNode = aOMTFElement->getElementsByTagName(xmlLayerMap)->item(
i);
481 aLayerElement =
static_cast<DOMElement *
>(aNode);
482 unsigned int hwNumber = std::atoi(
_toString(aLayerElement->getAttribute(xmlhwNumber)).c_str());
483 unsigned int logicNumber = std::atoi(
_toString(aLayerElement->getAttribute(xmllogicNumber)).c_str());
484 unsigned int isBendingLayer = std::atoi(
_toString(aLayerElement->getAttribute(xmlbendingLayer)).c_str());
485 unsigned int iConnectedLayer = std::atoi(
_toString(aLayerElement->getAttribute(xmlconnectedToLayer)).c_str());
490 aLayerMapVec.push_back(aLayerMapNode);
495 std::vector<L1TMuonOverlapParams::RefLayerMapNode> aRefLayerMapVec;
498 nElem = aOMTFElement->getElementsByTagName(xmlRefLayerMap)->getLength();
499 DOMElement* aRefLayerElement = 0;
500 for(
unsigned int i=0;
i<nElem;++
i){
501 aNode = aOMTFElement->getElementsByTagName(xmlRefLayerMap)->item(
i);
502 aRefLayerElement =
static_cast<DOMElement *
>(aNode);
503 unsigned int refLayer = std::atoi(
_toString(aRefLayerElement->getAttribute(xmlrefLayer)).c_str());
504 unsigned int logicNumber = std::atoi(
_toString(aRefLayerElement->getAttribute(xmllogicNumber)).c_str());
507 aRefLayerMapVec.push_back(aRefLayerNode);
511 std::vector<int> aGlobalPhiStartVec(nProcessors*nRefLayers);
513 std::vector<L1TMuonOverlapParams::RefHitNode> aRefHitMapVec(nProcessors*nRefHits);
516 std::vector<L1TMuonOverlapParams::LayerInputNode> aLayerInputMapVec(nProcessors*nLogicRegions*nLayers);
519 nElem = aOMTFElement->getElementsByTagName(xmlProcessor)->getLength();
520 assert(nElem==nProcessors);
521 DOMElement* aProcessorElement = 0;
522 for(
unsigned int i=0;
i<nElem;++
i){
523 aNode = aOMTFElement->getElementsByTagName(xmlProcessor)->item(
i);
524 aProcessorElement =
static_cast<DOMElement *
>(aNode);
525 unsigned int iProcessor = std::atoi(
_toString(aProcessorElement->getAttribute(xmliProcessor)).c_str());
526 unsigned int nElem1 = aProcessorElement->getElementsByTagName(xmlRefLayer)->getLength();
527 assert(nElem1==nRefLayers);
528 DOMElement* aRefLayerElement = 0;
529 for(
unsigned int ii=0;
ii<nElem1;++
ii){
530 aNode = aProcessorElement->getElementsByTagName(xmlRefLayer)->item(
ii);
531 aRefLayerElement =
static_cast<DOMElement *
>(aNode);
532 unsigned int iRefLayer = std::atoi(
_toString(aRefLayerElement->getAttribute(xmliRefLayer)).c_str());
533 int iPhi = std::atoi(
_toString(aRefLayerElement->getAttribute(xmliGlobalPhiStart)).c_str());
534 aGlobalPhiStartVec[iRefLayer + iProcessor*nRefLayers] = iPhi;
537 nElem1 = aProcessorElement->getElementsByTagName(xmlRefHit)->getLength();
538 assert( (iProcessor==0 && nElem1==nRefHits) || (iProcessor!=0 && nElem1==0) );
539 DOMElement* aRefHitElement = 0;
540 for(
unsigned int ii=0;
ii<nElem1;++
ii){
541 aNode = aProcessorElement->getElementsByTagName(xmlRefHit)->item(
ii);
542 aRefHitElement =
static_cast<DOMElement *
>(aNode);
543 unsigned int iRefHit = std::atoi(
_toString(aRefHitElement->getAttribute(xmliRefHit)).c_str());
544 int iPhiMin = std::atoi(
_toString(aRefHitElement->getAttribute(xmliPhiMin)).c_str());
545 int iPhiMax = std::atoi(
_toString(aRefHitElement->getAttribute(xmliPhiMax)).c_str());
546 unsigned int iInput = std::atoi(
_toString(aRefHitElement->getAttribute(xmliInput)).c_str());
547 unsigned int iRegion = std::atoi(
_toString(aRefHitElement->getAttribute(xmliRegion)).c_str());
548 unsigned int iRefLayer = std::atoi(
_toString(aRefHitElement->getAttribute(xmliRefLayer)).c_str());
553 aRefHitNode.
iInput = iInput;
556 for (
unsigned int iProcessor=0; iProcessor<nProcessors; iProcessor++) aRefHitMapVec[iRefHit + iProcessor*nRefHits] = aRefHitNode;
559 unsigned int nElem2 = aProcessorElement->getElementsByTagName(xmlLogicRegion)->getLength();
560 assert( (iProcessor==0 && nElem2==nLogicRegions) || (iProcessor!=0 && nElem2==0) );
561 DOMElement* aRegionElement = 0;
562 for(
unsigned int ii=0;
ii<nElem2;++
ii){
563 aNode = aProcessorElement->getElementsByTagName(xmlLogicRegion)->item(
ii);
564 aRegionElement =
static_cast<DOMElement *
>(aNode);
565 unsigned int iRegion = std::atoi(
_toString(aRegionElement->getAttribute(xmliRegion)).c_str());
566 unsigned int nElem3 = aRegionElement->getElementsByTagName(xmlLayer)->getLength();
567 assert(nElem3==nLayers);
568 DOMElement* aLayerElement = 0;
569 for(
unsigned int iii=0;iii<nElem3;++iii){
570 aNode = aRegionElement->getElementsByTagName(xmlLayer)->item(iii);
571 aLayerElement =
static_cast<DOMElement *
>(aNode);
572 unsigned int iLayer = std::atoi(
_toString(aLayerElement->getAttribute(xmliLayer)).c_str());
573 unsigned int iFirstInput = std::atoi(
_toString(aLayerElement->getAttribute(xmliFirstInput)).c_str());
574 unsigned int nInputs = std::atoi(
_toString(aLayerElement->getAttribute(xmlnInputs)).c_str());
575 aLayerInputNode.
iLayer = iLayer;
577 aLayerInputNode.
nInputs = nInputs;
578 for (
unsigned int iProcessor=0; iProcessor<nProcessors; ++iProcessor) aLayerInputMapVec[iLayer + iRegion*nLayers + iProcessor*nLayers*nLogicRegions] = aLayerInputNode;
588 parser.resetDocumentPool();
637 XMLPlatformUtils::Terminate();
void setLayerMap(const std::vector< LayerMapNode > &aVector)
Connections definitions.
void setConnectedSectorsEnd(const std::vector< int > &aVector)
unsigned int hwNumber
short layer number used within OMTF emulator
std::vector< int > vector1D
void setRefLayerMap(const std::vector< RefLayerMapNode > &aVector)
XERCES_CPP_NAMESPACE_USE std::string _toString(XMLCh const *toTranscode)
unsigned int logicNumber
logic numer of the layer
std::vector< std::vector< int > > readEvent(unsigned int iEvent=0, unsigned int iProcessor=0, bool readEta=false)
XMLCh * _toDOMS(std::string temp)
int read(std::istream &stream)
std::vector< vector1D > vector2D
std::vector< vector2D > vector3D
void setGeneralParams(const std::vector< int > ¶msVec)
std::vector< std::shared_ptr< GoldenPattern > > readPatterns(const L1TMuonOverlapParams &aConfig)
void readConfig(const std::string fName)
bool bendingLayer
Is this a bending layers?
std::vector< std::shared_ptr< GoldenPattern > > aGPs
Cache with GPs read.
unsigned int getPatternsVersion() const
void setConnectedSectorsStart(const std::vector< int > &aVector)
int nPdfAddrBits() const
Access to specific general settings.
unsigned int refLayer
Reference layer number.
void setGlobalPhiStartMap(const std::vector< int > &aVector)
void readLUTs(std::vector< l1t::LUT * > luts, const L1TMuonOverlapParams &aConfig, const std::vector< std::string > &types)
void setLayerInputMap(const std::vector< LayerInputNode > &aVector)
void setRefHitMap(const std::vector< RefHitNode > &aVector)
std::vector< std::vector< double > > tmp
unsigned int logicNumber
Corresponding logical layer number.
unsigned int connectedToLayer
void setFwVersion(unsigned fwVersion)
std::unique_ptr< GoldenPattern > buildGP(xercesc::DOMElement *aGPElement, const L1TMuonOverlapParams &aConfig, unsigned int index=0, unsigned int aGPNumber=999)