CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
OMTFPatternMaker Class Reference

#include <OMTFPatternMaker.h>

Inheritance diagram for OMTFPatternMaker:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginJob () override
 
void beginRun (edm::Run const &run, edm::EventSetup const &iSetup) override
 
void endJob () override
 
 OMTFPatternMaker (const edm::ParameterSet &cfg)
 
 ~OMTFPatternMaker () override
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

const SimTrackfindSimMuon (const edm::Event &ev, const edm::EventSetup &es, const SimTrack *previous=nullptr)
 
void writeMergedGPs ()
 

Private Attributes

xercesc::DOMElement * aTopElement
 
edm::InputTag g4SimTrackSrc
 
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollectioninputTokenCSC
 
edm::EDGetTokenT< L1MuDTChambPhContainerinputTokenDTPh
 
edm::EDGetTokenT< L1MuDTChambThContainerinputTokenDTTh
 
edm::EDGetTokenT< RPCDigiCollectioninputTokenRPC
 
edm::EDGetTokenT< edm::SimTrackContainerinputTokenSimHit
 
bool makeConnectionsMaps
 
bool makeGoldenPatterns
 
bool mergeXMLFiles
 
OMTFinputMakermyInputMaker
 
OMTFProcessormyOMTF
 
OMTFConfigurationmyOMTFConfig
 OMTF objects. More...
 
OMTFConfigMakermyOMTFConfigMaker
 
XMLConfigWritermyWriter
 
unsigned int nPdfAddrBits
 Original pdf width. read from configuration. More...
 
edm::ParameterSet theConfig
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsInputProcessBlocks ()
 
static bool wantsProcessBlocks ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Definition at line 35 of file OMTFPatternMaker.h.

Constructor & Destructor Documentation

◆ OMTFPatternMaker()

OMTFPatternMaker::OMTFPatternMaker ( const edm::ParameterSet cfg)

Definition at line 23 of file OMTFPatternMaker.cc.

References edm::EDConsumerBase::consumesCollector(), edm::ParameterSet::getParameter(), inputTokenCSC, inputTokenDTPh, inputTokenDTTh, inputTokenRPC, inputTokenSimHit, makeConnectionsMaps, makeGoldenPatterns, mergeXMLFiles, myInputMaker, myOMTFConfig, and theConfig.

24  : theConfig(cfg), g4SimTrackSrc(cfg.getParameter<edm::InputTag>("g4SimTrackSrc")) {
25  inputTokenDTPh = consumes<L1MuDTChambPhContainer>(theConfig.getParameter<edm::InputTag>("srcDTPh"));
26  inputTokenDTTh = consumes<L1MuDTChambThContainer>(theConfig.getParameter<edm::InputTag>("srcDTTh"));
27  inputTokenCSC = consumes<CSCCorrelatedLCTDigiCollection>(theConfig.getParameter<edm::InputTag>("srcCSC"));
28  inputTokenRPC = consumes<RPCDigiCollection>(theConfig.getParameter<edm::InputTag>("srcRPC"));
29  inputTokenSimHit = consumes<edm::SimTrackContainer>(theConfig.getParameter<edm::InputTag>("g4SimTrackSrc"));
30 
32  myInputMaker = new OMTFinputMaker(consumesColl);
33 
34  makeGoldenPatterns = theConfig.getParameter<bool>("makeGoldenPatterns");
35  makeConnectionsMaps = theConfig.getParameter<bool>("makeConnectionsMaps");
36  mergeXMLFiles = theConfig.getParameter<bool>("mergeXMLFiles");
37 
38  myOMTFConfig = nullptr;
39 }
edm::EDGetTokenT< edm::SimTrackContainer > inputTokenSimHit
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
OMTFConfiguration * myOMTFConfig
OMTF objects.
edm::EDGetTokenT< L1MuDTChambPhContainer > inputTokenDTPh
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollection > inputTokenCSC
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
edm::InputTag g4SimTrackSrc
edm::EDGetTokenT< RPCDigiCollection > inputTokenRPC
edm::EDGetTokenT< L1MuDTChambThContainer > inputTokenDTTh
OMTFinputMaker * myInputMaker
edm::ParameterSet theConfig

◆ ~OMTFPatternMaker()

OMTFPatternMaker::~OMTFPatternMaker ( )
override

Definition at line 42 of file OMTFPatternMaker.cc.

References myOMTF, myOMTFConfig, and myOMTFConfigMaker.

42  {
43  delete myOMTFConfig;
44  delete myOMTFConfigMaker;
45  delete myOMTF;
46 }
OMTFConfiguration * myOMTFConfig
OMTF objects.
OMTFConfigMaker * myOMTFConfigMaker
OMTFProcessor * myOMTF

Member Function Documentation

◆ analyze()

void OMTFPatternMaker::analyze ( const edm::Event iEvent,
const edm::EventSetup evSetup 
)
overridevirtual

Get the simulated muon parameters

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

Connections maps are made by hand. makeConnetionsMap method provides tables for checking their consistency.

Implements edm::EDAnalyzer.

Definition at line 245 of file OMTFPatternMaker.cc.

References OMTFinputMaker::buildInputForProcessor(), OMTFProcessor< GoldenPatternType >::fillCounts(), findSimMuon(), edm::ParameterSet::getParameter(), iEvent, OMTFinputMaker::initialize(), inputTokenCSC, inputTokenDTPh, inputTokenDTTh, inputTokenRPC, makeConnectionsMaps, OMTFConfigMaker::makeConnetionsMap(), makeGoldenPatterns, mergeXMLFiles, myInputMaker, myOMTF, myOMTFConfig, myOMTFConfigMaker, l1t::omtf_pos, edm::Handle< T >::product(), and theConfig.

245  {
246  if (mergeXMLFiles)
247  return;
248 
250  const SimTrack* aSimMuon = findSimMuon(iEvent, evSetup);
251  if (!aSimMuon) {
252  edm::LogError("OMTFPatternMaker") << "No SimMuon found in the event!";
253  return;
254  }
255 
257 
262 
264  if (!theConfig.getParameter<bool>("dropDTPrimitives")) {
265  iEvent.getByToken(inputTokenDTPh, dtPhDigis);
266  iEvent.getByToken(inputTokenDTTh, dtThDigis);
267  }
268  if (!theConfig.getParameter<bool>("dropRPCPrimitives"))
269  iEvent.getByToken(inputTokenRPC, rpcDigis);
270  if (!theConfig.getParameter<bool>("dropCSCPrimitives"))
271  iEvent.getByToken(inputTokenCSC, cscDigis);
272 
273  //l1t::tftype mtfType = l1t::tftype::bmtf;
275  //l1t::tftype mtfType = l1t::tftype::emtf_pos;
276 
278  for (unsigned int iProcessor = 0; iProcessor < 6; ++iProcessor) {
281  dtPhDigis.product(), dtThDigis.product(), cscDigis.product(), rpcDigis.product(), iProcessor, mtfType);
282 
286  myOMTFConfigMaker->makeConnetionsMap(iProcessor, myInput);
287 
288  if (makeGoldenPatterns)
289  myOMTF->fillCounts(iProcessor, myInput, aSimMuon);
290  }
291 }
void fillCounts(unsigned int iProcessor, const OMTFinput &aInput, const SimTrack *aSimMuon)
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
OMTFinput buildInputForProcessor(const L1MuDTChambPhContainer *dtPhDigis, const L1MuDTChambThContainer *dtThDigis, const CSCCorrelatedLCTDigiCollection *cscDigis, const RPCDigiCollection *rpcDigis, unsigned int iProcessor, l1t::tftype type=l1t::tftype::omtf_pos, int bx=0)
Method translating trigger digis into input matrix with global phi coordinates.
OMTFConfiguration * myOMTFConfig
OMTF objects.
T const * product() const
Definition: Handle.h:70
void makeConnetionsMap(unsigned int iProcessor, const OMTFinput &aInput)
const SimTrack * findSimMuon(const edm::Event &ev, const edm::EventSetup &es, const SimTrack *previous=nullptr)
edm::EDGetTokenT< L1MuDTChambPhContainer > inputTokenDTPh
void initialize(const edm::EventSetup &, const OMTFConfiguration *)
Log< level::Error, false > LogError
OMTFConfigMaker * myOMTFConfigMaker
int iEvent
Definition: GenABIO.cc:224
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollection > inputTokenCSC
OMTFProcessor * myOMTF
edm::EDGetTokenT< RPCDigiCollection > inputTokenRPC
edm::EDGetTokenT< L1MuDTChambThContainer > inputTokenDTTh
OMTFinputMaker * myInputMaker
edm::ParameterSet theConfig

◆ beginJob()

void OMTFPatternMaker::beginJob ( void  )
overridevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 87 of file OMTFPatternMaker.cc.

References myOMTF, and myOMTFConfig.

87  {
89  myOMTF = new OMTFProcessor();
90 }
OMTFConfiguration * myOMTFConfig
OMTF objects.
OMTFProcessor * myOMTF

◆ beginRun()

void OMTFPatternMaker::beginRun ( edm::Run const &  run,
edm::EventSetup const &  iSetup 
)
overridevirtual

Initialise XML writer with default pdf.

For making the patterns use extended pdf width in phi, as pdf are later shifted by the mean value For low pt muons non shifted pdfs would go out of the default pdf range.
Clear existing GoldenPatterns

Reimplemented from edm::EDAnalyzer.

Definition at line 49 of file OMTFPatternMaker.cc.

References OMTFProcessor< GoldenPatternType >::configure(), OMTFConfiguration::configure(), L1TMuonOverlapParams::GENERAL_ADDRBITS, L1TMuonOverlapParams::generalParams(), edm::eventsetup::EventSetupRecordImplementation< T >::get(), edm::EventSetup::get(), OMTFProcessor< GoldenPatternType >::getPatterns(), mergeXMLFiles, myOMTF, myOMTFConfig, myOMTFConfigMaker, myWriter, nPdfAddrBits, fakeOmtfParams_cff::omtfParams, and L1TMuonOverlapParams::setGeneralParams().

49  {
50  const L1TMuonOverlapParamsRcd& omtfParamsRcd = iSetup.get<L1TMuonOverlapParamsRcd>();
51 
52  edm::ESHandle<L1TMuonOverlapParams> omtfParamsHandle;
53  omtfParamsRcd.get(omtfParamsHandle);
54 
55  const L1TMuonOverlapParams* omtfParams = omtfParamsHandle.product();
56 
57  if (!omtfParams) {
58  edm::LogError("L1TMuonOverlapTrackProducer") << "Could not retrieve parameters from Event Setup" << std::endl;
59  }
60 
63 
66  L1TMuonOverlapParams omtfParamsMutable = *omtfParams;
67  std::vector<int> generalParams = *omtfParamsMutable.generalParams();
68  nPdfAddrBits = omtfParams->nPdfAddrBits();
69 
70  if (!mergeXMLFiles)
72  omtfParamsMutable.setGeneralParams(generalParams);
73 
74  myOMTFConfig->configure(&omtfParamsMutable);
77 
79  if (!mergeXMLFiles) {
80  const std::map<Key, GoldenPattern*>& theGPs = myOMTF->getPatterns();
81  for (auto itGP : theGPs)
82  itGP.second->reset();
83  }
84 }
const std::vector< int > * generalParams() const
General definitions.
OMTFConfiguration * myOMTFConfig
OMTF objects.
Log< level::Error, false > LogError
const std::map< Key, GoldenPattern * > & getPatterns() const
Return map of GoldenPatterns.
OMTFConfigMaker * myOMTFConfigMaker
PRODUCT const & get(ESGetToken< PRODUCT, T > const &iToken) const
omtfParams
OMTF ESProducer.
void setGeneralParams(const std::vector< int > &paramsVec)
XMLConfigWriter * myWriter
OMTFProcessor * myOMTF
void configure(const L1TMuonOverlapParams *omtfParams)
bool configure(const OMTFConfiguration *omtfParams, const L1TMuonOverlapParams *omtfPatterns)
Fill GP map with patterns from CondFormats object.
unsigned int nPdfAddrBits
Original pdf width. read from configuration.

◆ endJob()

void OMTFPatternMaker::endJob ( void  )
overridevirtual

Put back default value of the pdf width.

Order important: printPhiMap updates global vector in OMTFConfiguration

Write GPs merged by 4 above iPt=71, and by 2 below// /////////////////////////////////////////////////// 4x merging

Reimplemented from edm::EDAnalyzer.

Definition at line 93 of file OMTFPatternMaker.cc.

References OMTFProcessor< GoldenPatternType >::averagePatterns(), OMTFConfiguration::configure(), gather_cfg::cout, XMLConfigWriter::finaliseXMLDocument(), fileCollector2::fName, L1TMuonOverlapParams::GENERAL_ADDRBITS, L1TMuonOverlapParams::generalParams(), OMTFConfiguration::getMeasurements4D(), edm::ParameterSet::getParameter(), OMTFProcessor< GoldenPatternType >::getPatterns(), OMTFConfiguration::getRawParams(), XMLConfigWriter::initialiseXMLDocument(), makeConnectionsMaps, makeGoldenPatterns, mergeXMLFiles, myOMTF, myOMTFConfig, myOMTFConfigMaker, myWriter, nPdfAddrBits, OMTFConfigMaker::printConnections(), OMTFConfigMaker::printPhiMap(), RPCConst::ptFromIpt(), GoldenPattern::reset(), L1TMuonOverlapParams::setGeneralParams(), AlCaHLTBitMon_QueryRunRegistry::string, theConfig, XMLConfigWriter::writeConnectionsData(), XMLConfigWriter::writeGPData(), and writeMergedGPs().

93  {
96  const std::map<Key, GoldenPattern*>& myGPmap = myOMTF->getPatterns();
97  for (auto itGP : myGPmap) {
98  if (!itGP.second->hasCounts())
99  continue;
100  itGP.second->normalise(nPdfAddrBits);
101  }
102 
103  GoldenPattern dummyGP(Key(0, 0, 0), myOMTFConfig);
104  dummyGP.reset();
105 
107  L1TMuonOverlapParams omtfParamsMutable = *myOMTFConfig->getRawParams();
108  std::vector<int> generalParams = *omtfParamsMutable.generalParams();
110  omtfParamsMutable.setGeneralParams(generalParams);
111  myOMTFConfig->configure(&omtfParamsMutable);
112 
113  for (auto itGP : myGPmap) {
115  unsigned int iPt = theConfig.getParameter<int>("ptCode") + 1;
116  if (iPt > 31)
117  iPt = 200 * 2 + 1;
118  else
119  iPt = RPCConst::ptFromIpt(iPt) * 2.0 +
120  1; //MicroGMT has 0.5 GeV step size, with lower bin edge (uGMT_pt_code - 1)*step_size
122  if (itGP.first.thePtCode == iPt && itGP.first.theCharge == theConfig.getParameter<int>("charge")) {
123  std::cout << *itGP.second << std::endl;
124  myWriter->writeGPData(*itGP.second, dummyGP, dummyGP, dummyGP);
125  }
126  }
127  std::string fName = "GPs.xml";
129  }
130 
133  std::string fName = "Connections.xml";
134  unsigned int iProcessor = 0;
145  }
146 
147  if (mergeXMLFiles) {
149  dummy->reset();
150 
151  std::string fName = "OMTF";
153  const std::map<Key, GoldenPattern*>& myGPmap = myOMTF->getPatterns();
154  for (auto itGP : myGPmap) {
155  myWriter->writeGPData(*itGP.second, *dummy, *dummy, *dummy);
156  }
157  fName = "GPs.xml";
162  fName = "OMTF";
164  myOMTF->averagePatterns(-1);
166  writeMergedGPs();
167  fName = "GPs_4x.xml";
169  }
170 }
void writeConnectionsData(const std::vector< std::vector< OMTFConfiguration::vector2D > > &measurements4D)
const std::vector< int > * generalParams() const
General definitions.
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
OMTFConfiguration * myOMTFConfig
OMTF objects.
void initialiseXMLDocument(const std::string &docName)
void averagePatterns(int charge)
const std::map< Key, GoldenPattern * > & getPatterns() const
Return map of GoldenPatterns.
OMTFConfigMaker * myOMTFConfigMaker
void printConnections(std::ostream &out, unsigned int iProcessor, unsigned int iCone)
void setGeneralParams(const std::vector< int > &paramsVec)
XMLConfigWriter * myWriter
OMTFProcessor * myOMTF
static double ptFromIpt(const int ipt)
Definition: RPCConst.cc:29
void configure(const L1TMuonOverlapParams *omtfParams)
void printPhiMap(std::ostream &out)
void finaliseXMLDocument(const std::string &fName)
unsigned int nPdfAddrBits
Original pdf width. read from configuration.
void writeGPData(const GoldenPattern &aGP)
edm::ParameterSet theConfig
vector4D & getMeasurements4D()
const L1TMuonOverlapParams * getRawParams() const

◆ findSimMuon()

const SimTrack * OMTFPatternMaker::findSimMuon ( const edm::Event ev,
const edm::EventSetup es,
const SimTrack previous = nullptr 
)
private

Definition at line 294 of file OMTFPatternMaker.cc.

References electronAnalyzer_cfi::DeltaR, makeMEIFBenchmarkPlots::ev, inputTokenSimHit, CoreSimTrack::momentum(), callgraph::previous, mps_fire::result, and CoreSimTrack::type().

Referenced by analyze().

296  {
297  const SimTrack* result = nullptr;
299  ev.getByToken(inputTokenSimHit, simTks);
300 
301  for (std::vector<SimTrack>::const_iterator it = simTks->begin(); it < simTks->end(); it++) {
302  const SimTrack& aTrack = *it;
303  if (!(aTrack.type() == 13 || aTrack.type() == -13))
304  continue;
305  if (previous && ROOT::Math::VectorUtil::DeltaR(aTrack.momentum(), previous->momentum()) < 0.07)
306  continue;
307  if (!result || aTrack.momentum().pt() > result->momentum().pt())
308  result = &aTrack;
309  }
310  return result;
311 }
edm::EDGetTokenT< edm::SimTrackContainer > inputTokenSimHit
const math::XYZTLorentzVectorD & momentum() const
Definition: CoreSimTrack.h:19
int type() const
particle type (HEP PDT convension)
Definition: CoreSimTrack.h:22

◆ writeMergedGPs()

void OMTFPatternMaker::writeMergedGPs ( )
private

Write the opposite charge.

Definition at line 173 of file OMTFPatternMaker.cc.

References OMTFProcessor< GoldenPatternType >::getPatterns(), if(), GoldenPattern::key(), myOMTF, myOMTFConfig, myWriter, Key::theCharge, Key::thePtCode, and XMLConfigWriter::writeGPData().

Referenced by endJob().

173  {
174  const std::map<Key, GoldenPattern*>& myGPmap = myOMTF->getPatterns();
175 
177  dummy->reset();
178 
179  unsigned int iPtMin = 9;
180  Key aKey = Key(0, iPtMin, 1);
181  while (myGPmap.find(aKey) != myGPmap.end()) {
182  GoldenPattern* aGP1 = myGPmap.find(aKey)->second;
183  GoldenPattern* aGP2 = dummy;
184  GoldenPattern* aGP3 = dummy;
185  GoldenPattern* aGP4 = dummy;
186 
187  ++aKey.thePtCode;
188  while (myGPmap.find(aKey) == myGPmap.end() && aKey.thePtCode <= 401)
189  ++aKey.thePtCode;
190  if (aKey.thePtCode <= 401 && myGPmap.find(aKey) != myGPmap.end())
191  aGP2 = myGPmap.find(aKey)->second;
192 
193  if (aKey.thePtCode > 71) {
194  ++aKey.thePtCode;
195  while (myGPmap.find(aKey) == myGPmap.end() && aKey.thePtCode <= 401)
196  ++aKey.thePtCode;
197  if (aKey.thePtCode <= 401 && myGPmap.find(aKey) != myGPmap.end())
198  aGP3 = myGPmap.find(aKey)->second;
199 
200  ++aKey.thePtCode;
201  while (myGPmap.find(aKey) == myGPmap.end() && aKey.thePtCode <= 401)
202  ++aKey.thePtCode;
203  if (aKey.thePtCode <= 401 && myGPmap.find(aKey) != myGPmap.end())
204  aGP4 = myGPmap.find(aKey)->second;
205  }
206  ++aKey.thePtCode;
207  while (myGPmap.find(aKey) == myGPmap.end() && aKey.thePtCode <= 401)
208  ++aKey.thePtCode;
209  myWriter->writeGPData(*aGP1, *aGP2, *aGP3, *aGP4);
210 
212  Key aTmpKey = aGP1->key();
213  aTmpKey.theCharge = -1;
214  if (myGPmap.find(aTmpKey) != myGPmap.end())
215  aGP1 = myGPmap.find(aTmpKey)->second;
216  else
217  aGP1 = dummy;
218 
219  aTmpKey = aGP2->key();
220  aTmpKey.theCharge = -1;
221  if (myGPmap.find(aTmpKey) != myGPmap.end())
222  aGP2 = myGPmap.find(aTmpKey)->second;
223  else
224  aGP2 = dummy;
225 
226  aTmpKey = aGP3->key();
227  aTmpKey.theCharge = -1;
228  if (myGPmap.find(aTmpKey) != myGPmap.end())
229  aGP3 = myGPmap.find(aTmpKey)->second;
230  else
231  aGP3 = dummy;
232 
233  aTmpKey = aGP4->key();
234  aTmpKey.theCharge = -1;
235  if (myGPmap.find(aTmpKey) != myGPmap.end())
236  aGP4 = myGPmap.find(aTmpKey)->second;
237  else
238  aGP4 = dummy;
239 
240  myWriter->writeGPData(*aGP1, *aGP2, *aGP3, *aGP4);
241  }
242 }
OMTFConfiguration * myOMTFConfig
OMTF objects.
int theCharge
Definition: GoldenPattern.h:36
const std::map< Key, GoldenPattern * > & getPatterns() const
Return map of GoldenPatterns.
unsigned int thePtCode
Definition: GoldenPattern.h:35
Key key() const
Definition: GoldenPattern.h:56
XMLConfigWriter * myWriter
OMTFProcessor * myOMTF
void writeGPData(const GoldenPattern &aGP)

Member Data Documentation

◆ aTopElement

xercesc::DOMElement* OMTFPatternMaker::aTopElement
private

Definition at line 73 of file OMTFPatternMaker.h.

◆ g4SimTrackSrc

edm::InputTag OMTFPatternMaker::g4SimTrackSrc
private

Definition at line 53 of file OMTFPatternMaker.h.

◆ inputTokenCSC

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

Definition at line 57 of file OMTFPatternMaker.h.

Referenced by analyze(), and OMTFPatternMaker().

◆ inputTokenDTPh

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

Definition at line 55 of file OMTFPatternMaker.h.

Referenced by analyze(), and OMTFPatternMaker().

◆ inputTokenDTTh

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

Definition at line 56 of file OMTFPatternMaker.h.

Referenced by analyze(), and OMTFPatternMaker().

◆ inputTokenRPC

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

Definition at line 58 of file OMTFPatternMaker.h.

Referenced by analyze(), and OMTFPatternMaker().

◆ inputTokenSimHit

edm::EDGetTokenT<edm::SimTrackContainer> OMTFPatternMaker::inputTokenSimHit
private

Definition at line 59 of file OMTFPatternMaker.h.

Referenced by findSimMuon(), and OMTFPatternMaker().

◆ makeConnectionsMaps

bool OMTFPatternMaker::makeConnectionsMaps
private

Definition at line 63 of file OMTFPatternMaker.h.

Referenced by analyze(), endJob(), and OMTFPatternMaker().

◆ makeGoldenPatterns

bool OMTFPatternMaker::makeGoldenPatterns
private

Definition at line 63 of file OMTFPatternMaker.h.

Referenced by analyze(), endJob(), and OMTFPatternMaker().

◆ mergeXMLFiles

bool OMTFPatternMaker::mergeXMLFiles
private

Definition at line 63 of file OMTFPatternMaker.h.

Referenced by analyze(), beginRun(), endJob(), and OMTFPatternMaker().

◆ myInputMaker

OMTFinputMaker* OMTFPatternMaker::myInputMaker
private

Definition at line 70 of file OMTFPatternMaker.h.

Referenced by analyze(), and OMTFPatternMaker().

◆ myOMTF

OMTFProcessor* OMTFPatternMaker::myOMTF
private

◆ myOMTFConfig

OMTFConfiguration* OMTFPatternMaker::myOMTFConfig
private

OMTF objects.

Definition at line 69 of file OMTFPatternMaker.h.

Referenced by analyze(), beginJob(), beginRun(), endJob(), OMTFPatternMaker(), writeMergedGPs(), and ~OMTFPatternMaker().

◆ myOMTFConfigMaker

OMTFConfigMaker* OMTFPatternMaker::myOMTFConfigMaker
private

Definition at line 74 of file OMTFPatternMaker.h.

Referenced by analyze(), beginRun(), endJob(), and ~OMTFPatternMaker().

◆ myWriter

XMLConfigWriter* OMTFPatternMaker::myWriter
private

Definition at line 75 of file OMTFPatternMaker.h.

Referenced by beginRun(), endJob(), and writeMergedGPs().

◆ nPdfAddrBits

unsigned int OMTFPatternMaker::nPdfAddrBits
private

Original pdf width. read from configuration.

Definition at line 66 of file OMTFPatternMaker.h.

Referenced by beginRun(), and endJob().

◆ theConfig

edm::ParameterSet OMTFPatternMaker::theConfig
private

Definition at line 52 of file OMTFPatternMaker.h.

Referenced by analyze(), endJob(), and OMTFPatternMaker().