CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
L1TMuonOverlapTrackProducer Class Reference

#include <L1TMuonOverlapTrackProducer.h>

Inheritance diagram for L1TMuonOverlapTrackProducer:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

virtual void beginJob ()
 
virtual void beginRun (edm::Run const &run, edm::EventSetup const &iSetup)
 
virtual void endJob ()
 
 L1TMuonOverlapTrackProducer (const edm::ParameterSet &)
 
virtual void produce (edm::Event &, const edm::EventSetup &)
 
 ~L1TMuonOverlapTrackProducer ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (std::string const &iProcessName, std::string const &iModuleLabel, bool iPrint, std::vector< char const * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

void processCandidates (unsigned int iProcessor, int bx, std::auto_ptr< l1t::RegionalMuonCandBxCollection > &myCands, l1t::RegionalMuonCandBxCollection &myOTFCandidates, l1t::tftype mtfType)
 
void writeMergedGPs ()
 

Private Attributes

xercesc::DOMElement * aTopElement
 
bool dumpDetailedResultToXML
 
bool dumpGPToXML
 
bool dumpResultToXML
 
edm::EDGetTokenT
< CSCCorrelatedLCTDigiCollection
inputTokenCSC
 
edm::EDGetTokenT
< L1MuDTChambPhContainer
inputTokenDTPh
 
edm::EDGetTokenT
< L1MuDTChambThContainer
inputTokenDTTh
 
edm::EDGetTokenT
< RPCDigiCollection
inputTokenRPC
 
OMTFinputMakermyInputMaker
 
OMTFinputmyInputXML
 
OMTFProcessormyOMTF
 
OMTFConfigurationmyOMTFConfig
 OMTF objects. More...
 
OMTFConfigMakermyOMTFConfigMaker
 
OMTFSortermySorter
 
XMLConfigWritermyWriter
 
std::shared_ptr
< L1TMuonOverlapParams
omtfParams
 
edm::ParameterSet theConfig
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
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 ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 40 of file L1TMuonOverlapTrackProducer.h.

Constructor & Destructor Documentation

L1TMuonOverlapTrackProducer::L1TMuonOverlapTrackProducer ( const edm::ParameterSet cfg)

Definition at line 23 of file L1TMuonOverlapTrackProducer.cc.

References dumpDetailedResultToXML, dumpGPToXML, dumpResultToXML, edm::ParameterSet::exists(), MainPageGenerator::fName, edm::ParameterSet::getParameter(), XMLConfigWriter::initialiseXMLDocument(), inputTokenCSC, inputTokenDTPh, inputTokenDTTh, inputTokenRPC, myInputMaker, myOMTF, myOMTFConfig, mySorter, myWriter, AlCaHLTBitMon_QueryRunRegistry::string, and theConfig.

23  :theConfig(cfg){
24 
25  produces<l1t::RegionalMuonCandBxCollection >("OMTF");
26 
27  inputTokenDTPh = consumes<L1MuDTChambPhContainer>(theConfig.getParameter<edm::InputTag>("srcDTPh"));
28  inputTokenDTTh = consumes<L1MuDTChambThContainer>(theConfig.getParameter<edm::InputTag>("srcDTTh"));
29  inputTokenCSC = consumes<CSCCorrelatedLCTDigiCollection>(theConfig.getParameter<edm::InputTag>("srcCSC"));
30  inputTokenRPC = consumes<RPCDigiCollection>(theConfig.getParameter<edm::InputTag>("srcRPC"));
31 
32  if(!theConfig.exists("omtf")){
33  edm::LogError("L1TMuonOverlapTrackProducer")<<"omtf configuration not found in cfg.py";
34  }
35 
37  mySorter = new OMTFSorter();
38  myOMTF = 0;
39  myWriter = 0;
40 
41  dumpResultToXML = theConfig.getParameter<bool>("dumpResultToXML");
42  dumpDetailedResultToXML = theConfig.getParameter<bool>("dumpDetailedResultToXML");
43  dumpGPToXML = theConfig.getParameter<bool>("dumpGPToXML");
44  theConfig.getParameter<std::string>("XMLDumpFileName");
45 
46  if(dumpResultToXML || dumpGPToXML){
47  myWriter = new XMLConfigWriter();
48  std::string fName = "OMTF";
50  }
51 
52  myOMTFConfig = 0;
53 }
T getParameter(std::string const &) const
void initialiseXMLDocument(const std::string &docName)
bool exists(std::string const &parameterName) const
checks if a parameter exists
edm::EDGetTokenT< L1MuDTChambPhContainer > inputTokenDTPh
OMTFConfiguration * myOMTFConfig
OMTF objects.
edm::EDGetTokenT< RPCDigiCollection > inputTokenRPC
edm::EDGetTokenT< L1MuDTChambThContainer > inputTokenDTTh
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollection > inputTokenCSC
L1TMuonOverlapTrackProducer::~L1TMuonOverlapTrackProducer ( )

Definition at line 56 of file L1TMuonOverlapTrackProducer.cc.

References myInputMaker, myOMTF, myOMTFConfig, mySorter, and myWriter.

56  {
57 
58  delete myOMTFConfig;
59  delete myOMTF;
60 
61  delete myInputMaker;
62  delete mySorter;
63 
64  if (myWriter) delete myWriter;
65 
66 }
OMTFConfiguration * myOMTFConfig
OMTF objects.

Member Function Documentation

void L1TMuonOverlapTrackProducer::beginJob ( void  )
virtual

Reimplemented from edm::EDProducer.

Definition at line 69 of file L1TMuonOverlapTrackProducer.cc.

References edm::ParameterSet::exists(), edm::ParameterSet::getParameter(), myOMTF, myOMTFConfig, and theConfig.

69  {
70 
71  if(theConfig.exists("omtf")){
74  }
75 }
T getParameter(std::string const &) const
bool exists(std::string const &parameterName) const
checks if a parameter exists
OMTFConfiguration * myOMTFConfig
OMTF objects.
void L1TMuonOverlapTrackProducer::beginRun ( edm::Run const &  run,
edm::EventSetup const &  iSetup 
)
virtual

If configuration is read from XML do not look at the DB.

Reimplemented from edm::EDProducer.

Definition at line 171 of file L1TMuonOverlapTrackProducer.cc.

References OMTFProcessor::configure(), OMTFConfiguration::configure(), edm::EventSetup::get(), edm::eventsetup::EventSetupRecord::get(), edm::ParameterSet::getParameter(), myOMTF, myOMTFConfig, omtfParams, and theConfig.

171  {
172 
174  if(theConfig.getParameter<edm::ParameterSet>("omtf").getParameter<bool>("configFromXML")) return;
175 
176  const L1TMuonOverlapParamsRcd& omtfParamsRcd = iSetup.get<L1TMuonOverlapParamsRcd>();
177 
178  edm::ESHandle<L1TMuonOverlapParams> omtfParamsHandle;
179  omtfParamsRcd.get(omtfParamsHandle);
180 
181  omtfParams = std::unique_ptr<L1TMuonOverlapParams>(new L1TMuonOverlapParams(*omtfParamsHandle.product()));
182  if (!omtfParams) {
183  edm::LogError("L1TMuonOverlapTrackProducer") << "Could not retrieve parameters from Event Setup" << std::endl;
184  }
185 
188 
189 }
T getParameter(std::string const &) const
bool configure(XMLConfigReader *aReader)
Fill GP map with patterns from XML file.
std::shared_ptr< L1TMuonOverlapParams > omtfParams
void configure(XMLConfigReader *aReader)
void get(HolderT &iHolder) const
OMTFConfiguration * myOMTFConfig
OMTF objects.
void L1TMuonOverlapTrackProducer::endJob ( void  )
virtual

Write GPs merged by 4 above iPt19, and by 2 below// /////////////////////////////////////////////////// 4x merging

Reimplemented from edm::EDProducer.

Definition at line 78 of file L1TMuonOverlapTrackProducer.cc.

References OMTFProcessor::averagePatterns(), gather_cfg::cout, dumpGPToXML, dumpResultToXML, XMLConfigWriter::finaliseXMLDocument(), MainPageGenerator::fName, edm::ParameterSet::getParameter(), OMTFProcessor::getPatterns(), XMLConfigWriter::initialiseXMLDocument(), myOMTF, myWriter, GoldenPattern::reset(), AlCaHLTBitMon_QueryRunRegistry::string, theConfig, XMLConfigWriter::writeGPData(), and writeMergedGPs().

78  {
79 
81  std::string fName = theConfig.getParameter<std::string>("XMLDumpFileName");
83  }
84 
86 
87  GoldenPattern *dummy = new GoldenPattern(Key(0,0,0));
88  dummy->reset();
89 
90  std::string fName = "OMTF";
92  const std::map<Key,GoldenPattern*> & myGPmap = myOMTF->getPatterns();
93  for(auto itGP: myGPmap){
94  if(itGP.second->key().thePtCode==6) std::cout<<*itGP.second<<std::endl;
95  //myWriter->writeGPData(*itGP.second);
96  if(itGP.second->key().thePtCode>5) myWriter->writeGPData(*itGP.second,*dummy, *dummy, *dummy);
97  }
98  fName = "GPs.xml";
103  fName = "OMTF";
106  myOMTF->averagePatterns(-1);
107 
108  writeMergedGPs();
109 
110  fName = "GPs_4x.xml";
112  }
113 }
T getParameter(std::string const &) const
void averagePatterns(int charge)
void initialiseXMLDocument(const std::string &docName)
void reset()
Reset contents of all data vectors, keeping the vectors size.
void finaliseXMLDocument(const std::string &fName)
tuple cout
Definition: gather_cfg.py:145
const std::map< Key, GoldenPattern * > & getPatterns() const
Return map of GoldenPatterns.
void writeGPData(const GoldenPattern &aGP)
void L1TMuonOverlapTrackProducer::processCandidates ( unsigned int  iProcessor,
int  bx,
std::auto_ptr< l1t::RegionalMuonCandBxCollection > &  myCands,
l1t::RegionalMuonCandBxCollection myOTFCandidates,
l1t::tftype  mtfType 
)
private

Set local 0 at iProcessor x 15 deg

Definition at line 282 of file L1TMuonOverlapTrackProducer.cc.

References BXVector< T >::at(), OMTFConfiguration::globalPhiStart(), l1t::RegionalMuonCand::hwPhi(), l1t::RegionalMuonCand::hwPt(), OMTFConfiguration::nPhiBins, OMTFConfiguration::nPhiBits, funct::pow(), l1t::RegionalMuonCand::setHwPhi(), l1t::RegionalMuonCand::setTFIdentifiers(), and BXVector< T >::size().

Referenced by produce().

285  {
286 
288  int procOffset = OMTFConfiguration::globalPhiStart(iProcessor);
289  if(procOffset<0) procOffset+=(int)OMTFConfiguration::nPhiBins;
291  procOffset-=(15+iProcessor*60)/360.0*OMTFConfiguration::nPhiBins;
292  int lowScaleEnd = pow(2,OMTFConfiguration::nPhiBits-1);
293 
294  for(unsigned int iCand=0; iCand<myOTFCandidates.size(bx); ++iCand){
295  // shift phi from processor to global coordinates
296  l1t::RegionalMuonCand cand = myOTFCandidates.at(bx, iCand);
297  int phiValue = (cand.hwPhi()+procOffset+lowScaleEnd);
298  if(phiValue>=(int)OMTFConfiguration::nPhiBins) phiValue-=OMTFConfiguration::nPhiBins;
299  phiValue/=10; //MicroGMT has 10x coarser scale than OMTF
300 
301  cand.setHwPhi(phiValue);
302  cand.setTFIdentifiers(iProcessor,mtfType);
303  // store candidate
304  if(cand.hwPt()) myCands->push_back(bx, cand);
305  }
306 }
void setHwPhi(int bits)
Set compressed relative phi as transmitted by hardware LSB = 2*pi/576 (8 bits)
unsigned size(int bx) const
static int globalPhiStart(unsigned int iProcessor)
void setTFIdentifiers(int processor, tftype trackFinder)
Set the processor ID, track-finder type. From these two, the link is set.
static unsigned int nPhiBins
const int hwPhi() const
Get compressed local phi (returned int * 2*pi/576 = local phi in rad)
static unsigned int nPhiBits
const int hwPt() const
Get compressed pT (returned int * 0.5 = pT (GeV))
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
const T & at(int bx, unsigned i) const
void L1TMuonOverlapTrackProducer::produce ( edm::Event iEvent,
const edm::EventSetup evSetup 
)
virtual

Filter digis by dropping digis from selected (by cfg.py) subsystems

Loop over all processors, each covering 60 deg in phi

Input data with phi ranges shifted for each processor, so it fits 11 bits range

Results for each GP in each logic region of given processor

Shift phi scales, and put MicroGMT candidates into myCands collection

Write data to XML file

Dump only regions, where a candidate was found

Implements edm::EDProducer.

Definition at line 192 of file L1TMuonOverlapTrackProducer.cc.

References aTopElement, OMTFinputMaker::buildInputForProcessor(), dumpDetailedResultToXML, dumpResultToXML, edm::EventID::event(), edm::Event::getByToken(), edm::ParameterSet::getParameter(), edm::EventBase::id(), OMTFinputMaker::initialize(), inputTokenCSC, inputTokenDTPh, inputTokenDTTh, inputTokenRPC, myInputMaker, myOMTF, mySorter, myWriter, OMTFConfiguration::nTestRefHits, l1t::omtf_neg, l1t::omtf_pos, processCandidates(), OMTFProcessor::processInput(), edm::Handle< T >::product(), InternalObj::pt, edm::Event::put(), OMTFProcessor::shiftInput(), OMTFSorter::sortProcessor(), OMTFSorter::sortRefHitResults(), theConfig, XMLConfigWriter::writeCandidateData(), XMLConfigWriter::writeEventData(), XMLConfigWriter::writeEventHeader(), and XMLConfigWriter::writeResultsData().

192  {
193 
194  std::ostringstream myStr;
195 
196  myInputMaker->initialize(evSetup);
197 
202 
204  if(!theConfig.getParameter<bool>("dropDTPrimitives")){
205  iEvent.getByToken(inputTokenDTPh,dtPhDigis);
206  iEvent.getByToken(inputTokenDTTh,dtThDigis);
207  }
208  if(!theConfig.getParameter<bool>("dropRPCPrimitives")) iEvent.getByToken(inputTokenRPC,rpcDigis);
209  if(!theConfig.getParameter<bool>("dropCSCPrimitives")) iEvent.getByToken(inputTokenCSC,cscDigis);
210 
211  std::auto_ptr<l1t::RegionalMuonCandBxCollection > myCands(new l1t::RegionalMuonCandBxCollection);
212 
214 
215  // NOTE: assuming all is for bx 0
216  int bx = 0;
217 
219  for(unsigned int iProcessor=0;iProcessor<6;++iProcessor){
220 
221  //myStr<<" iProcessor: "<<iProcessor;
222 
224  const OMTFinput *myInputPos = myInputMaker->buildInputForProcessor(dtPhDigis.product(),
225  dtThDigis.product(),
226  cscDigis.product(),
227  rpcDigis.product(),
228  iProcessor,
230 
231  OMTFinput myShiftedInputPos = myOMTF->shiftInput(iProcessor,*myInputPos);
232 
233  const OMTFinput *myInputNeg = myInputMaker->buildInputForProcessor(dtPhDigis.product(),
234  dtThDigis.product(),
235  cscDigis.product(),
236  rpcDigis.product(),
237  iProcessor,
239 
240 
241  OMTFinput myShiftedInputNeg = myOMTF->shiftInput(iProcessor,*myInputNeg);
242 
243  l1t::RegionalMuonCandBxCollection myOTFCandidatesPos, myOTFCandidatesNeg;
245  //Retreive all candidates returned by sorter: upto 3 non empty ones with different phi or charge
246  const std::vector<OMTFProcessor::resultsMap> & myResultsNeg = myOMTF->processInput(iProcessor,myShiftedInputNeg);
247  mySorter->sortProcessor(myResultsNeg, myOTFCandidatesNeg, bx);
248 
249  const std::vector<OMTFProcessor::resultsMap> & myResultsPos = myOMTF->processInput(iProcessor,myShiftedInputPos);
250  mySorter->sortProcessor(myResultsPos, myOTFCandidatesPos, bx);
251 
253  processCandidates(iProcessor, bx, myCands, myOTFCandidatesPos, l1t::tftype::omtf_pos);
254  processCandidates(iProcessor, bx, myCands, myOTFCandidatesNeg, l1t::tftype::omtf_neg);
255 
257  if(dumpResultToXML){
258  xercesc::DOMElement * aProcElement = myWriter->writeEventData(aTopElement,iProcessor,myShiftedInputPos);
259  for(unsigned int iRefHit=0;iRefHit<OMTFConfiguration::nTestRefHits;++iRefHit){
261  InternalObj myCand = mySorter->sortRefHitResults(myResultsPos[iRefHit],0);//charge=0 means ignore charge
262  if(myCand.pt){
263  myWriter->writeCandidateData(aProcElement,iRefHit,myCand);
265  for(auto & itKey: myResultsNeg[iRefHit]) myWriter->writeResultsData(aProcElement,
266  iRefHit,
267  itKey.first,itKey.second);
268  }
269  }
270  }
271  }
272  }
273 
274  //dumpResultToXML = true;
275  myStr<<" Number of candidates: "<<myCands->size(bx);
276  edm::LogInfo("OMTFOMTFProducer")<<myStr.str();
277 
278  iEvent.put(myCands, "OMTF");
279 }
T getParameter(std::string const &) const
EventNumber_t event() const
Definition: EventID.h:41
void writeCandidateData(xercesc::DOMElement *aTopElement, unsigned int iRefHit, const InternalObj &aCand)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:462
xercesc::DOMElement * writeEventData(xercesc::DOMElement *aTopElement, unsigned int iProcessor, const OMTFinput &aInput)
edm::EDGetTokenT< L1MuDTChambPhContainer > inputTokenDTPh
void initialize(const edm::EventSetup &es)
void processCandidates(unsigned int iProcessor, int bx, std::auto_ptr< l1t::RegionalMuonCandBxCollection > &myCands, l1t::RegionalMuonCandBxCollection &myOTFCandidates, l1t::tftype mtfType)
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:121
void writeResultsData(xercesc::DOMElement *aTopElement, unsigned int iRegion, const Key &aKey, const OMTFResult &aResult)
static unsigned int nTestRefHits
edm::EDGetTokenT< RPCDigiCollection > inputTokenRPC
T const * product() const
Definition: Handle.h:81
InternalObj sortRefHitResults(const OMTFProcessor::resultsMap &aResultsMap, int charge=0)
Definition: OMTFSorter.cc:70
float pt
Definition: InternalObj.h:8
void sortProcessor(const std::vector< OMTFProcessor::resultsMap > &procResults, l1t::RegionalMuonCandBxCollection &sortedCands, int bx, int charge=0)
Sort all processor results.
Definition: OMTFSorter.cc:207
edm::EDGetTokenT< L1MuDTChambThContainer > inputTokenDTTh
const OMTFinput * buildInputForProcessor(const L1MuDTChambPhContainer *dtPhDigis, const L1MuDTChambThContainer *dtThDigis, const CSCCorrelatedLCTDigiCollection *cscDigis, const RPCDigiCollection *rpcDigis, unsigned int iProcessor, l1t::tftype type=l1t::tftype::omtf_pos)
Method translating trigger digis into input matrix with global phi coordinates.
edm::EventID id() const
Definition: EventBase.h:59
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollection > inputTokenCSC
const std::vector< OMTFProcessor::resultsMap > & processInput(unsigned int iProcessor, const OMTFinput &aInput)
OMTFinput shiftInput(unsigned int iProcessor, const OMTFinput &aInput)
xercesc::DOMElement * writeEventHeader(unsigned int eventId, unsigned int mixedEventId=0)
void L1TMuonOverlapTrackProducer::writeMergedGPs ( )
private

Write the opposite charge.

Definition at line 116 of file L1TMuonOverlapTrackProducer.cc.

References OMTFProcessor::getPatterns(), GoldenPattern::key(), myOMTF, myWriter, GoldenPattern::reset(), Key::theCharge, Key::thePtCode, and XMLConfigWriter::writeGPData().

Referenced by endJob().

116  {
117 
118  const std::map<Key,GoldenPattern*> & myGPmap = myOMTF->getPatterns();
119 
120  GoldenPattern *dummy = new GoldenPattern(Key(0,0,0));
121  dummy->reset();
122 
123  unsigned int iPtMin = 6;
124  Key aKey = Key(1, iPtMin,-1);
125  while(myGPmap.find(aKey)!=myGPmap.end()){
126 
127  GoldenPattern *aGP1 = myGPmap.find(aKey)->second;
128  GoldenPattern *aGP2 = dummy;
129  GoldenPattern *aGP3 = dummy;
130  GoldenPattern *aGP4 = dummy;
131 
132  ++aKey.thePtCode;
133  if(aKey.thePtCode<=31 && myGPmap.find(aKey)!=myGPmap.end()) aGP2 = myGPmap.find(aKey)->second;
134 
135  if(aKey.thePtCode>19){
136  ++aKey.thePtCode;
137  if(aKey.thePtCode<=31 && myGPmap.find(aKey)!=myGPmap.end()) aGP3 = myGPmap.find(aKey)->second;
138 
139  ++aKey.thePtCode;
140  if(aKey.thePtCode<=31 && myGPmap.find(aKey)!=myGPmap.end()) aGP4 = myGPmap.find(aKey)->second;
141  }
142  ++aKey.thePtCode;
143  myWriter->writeGPData(*aGP1,*aGP2, *aGP3, *aGP4);
144 
146  Key aTmpKey = aGP1->key();
147  aTmpKey.theCharge = 1;
148  if(myGPmap.find(aTmpKey)!=myGPmap.end()) aGP1 = myGPmap.find(aTmpKey)->second;
149  else aGP1 = dummy;
150 
151  aTmpKey = aGP2->key();
152  aTmpKey.theCharge = 1;
153  if(myGPmap.find(aTmpKey)!=myGPmap.end()) aGP2 = myGPmap.find(aTmpKey)->second;
154  else aGP2 = dummy;
155 
156  aTmpKey = aGP3->key();
157  aTmpKey.theCharge = 1;
158  if(myGPmap.find(aTmpKey)!=myGPmap.end()) aGP3 = myGPmap.find(aTmpKey)->second;
159  else aGP3 = dummy;
160 
161  aTmpKey = aGP4->key();
162  aTmpKey.theCharge = 1;
163  if(myGPmap.find(aTmpKey)!=myGPmap.end()) aGP4 = myGPmap.find(aTmpKey)->second;
164  else aGP4 = dummy;
165 
166  myWriter->writeGPData(*aGP1,*aGP2, *aGP3, *aGP4);
167  }
168 }
Key key() const
Definition: GoldenPattern.h:59
int theCharge
Definition: GoldenPattern.h:37
unsigned int thePtCode
Definition: GoldenPattern.h:36
void reset()
Reset contents of all data vectors, keeping the vectors size.
const std::map< Key, GoldenPattern * > & getPatterns() const
Return map of GoldenPatterns.
void writeGPData(const GoldenPattern &aGP)

Member Data Documentation

xercesc::DOMElement* L1TMuonOverlapTrackProducer::aTopElement
private

Definition at line 79 of file L1TMuonOverlapTrackProducer.h.

Referenced by produce().

bool L1TMuonOverlapTrackProducer::dumpDetailedResultToXML
private

Definition at line 70 of file L1TMuonOverlapTrackProducer.h.

Referenced by L1TMuonOverlapTrackProducer(), and produce().

bool L1TMuonOverlapTrackProducer::dumpGPToXML
private

Definition at line 70 of file L1TMuonOverlapTrackProducer.h.

Referenced by endJob(), and L1TMuonOverlapTrackProducer().

bool L1TMuonOverlapTrackProducer::dumpResultToXML
private

Definition at line 70 of file L1TMuonOverlapTrackProducer.h.

Referenced by endJob(), L1TMuonOverlapTrackProducer(), and produce().

edm::EDGetTokenT<CSCCorrelatedLCTDigiCollection> L1TMuonOverlapTrackProducer::inputTokenCSC
private

Definition at line 60 of file L1TMuonOverlapTrackProducer.h.

Referenced by L1TMuonOverlapTrackProducer(), and produce().

edm::EDGetTokenT<L1MuDTChambPhContainer> L1TMuonOverlapTrackProducer::inputTokenDTPh
private

Definition at line 58 of file L1TMuonOverlapTrackProducer.h.

Referenced by L1TMuonOverlapTrackProducer(), and produce().

edm::EDGetTokenT<L1MuDTChambThContainer> L1TMuonOverlapTrackProducer::inputTokenDTTh
private

Definition at line 59 of file L1TMuonOverlapTrackProducer.h.

Referenced by L1TMuonOverlapTrackProducer(), and produce().

edm::EDGetTokenT<RPCDigiCollection> L1TMuonOverlapTrackProducer::inputTokenRPC
private

Definition at line 61 of file L1TMuonOverlapTrackProducer.h.

Referenced by L1TMuonOverlapTrackProducer(), and produce().

OMTFinputMaker* L1TMuonOverlapTrackProducer::myInputMaker
private
OMTFinput* L1TMuonOverlapTrackProducer::myInputXML
private

Definition at line 77 of file L1TMuonOverlapTrackProducer.h.

OMTFProcessor* L1TMuonOverlapTrackProducer::myOMTF
private
OMTFConfiguration* L1TMuonOverlapTrackProducer::myOMTFConfig
private
OMTFConfigMaker* L1TMuonOverlapTrackProducer::myOMTFConfigMaker
private

Definition at line 80 of file L1TMuonOverlapTrackProducer.h.

OMTFSorter* L1TMuonOverlapTrackProducer::mySorter
private
XMLConfigWriter* L1TMuonOverlapTrackProducer::myWriter
private
std::shared_ptr<L1TMuonOverlapParams> L1TMuonOverlapTrackProducer::omtfParams
private

Definition at line 82 of file L1TMuonOverlapTrackProducer.h.

Referenced by beginRun().

edm::ParameterSet L1TMuonOverlapTrackProducer::theConfig
private