CMS 3D CMS Logo

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

Implements RPC trigger emulation. More...

#include <RPCTrigger.h>

Inheritance diagram for RPCTrigger:
edm::one::EDProducer< edm::one::SharedResources > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

void produce (edm::Event &, const edm::EventSetup &) override
 
 RPCTrigger (const edm::ParameterSet &)
 
- Public Member Functions inherited from edm::one::EDProducer< edm::one::SharedResources >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) 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

std::vector< L1MuRegionalCandgiveFinallCandindates (const L1RpcTBMuonsVec &finalMuons, int type, int bx, edm::Handle< RPCDigiCollection > rpcDigis, std::vector< RPCDigiL1Link > &retRPCDigiLink)
 Returns vector of L1MuRegionalCand (input of L1GMT) More...
 

Private Attributes

const edm::EDPutTokenT< std::vector< L1MuRegionalCand > > m_brlCandPutToken
 
const edm::EDPutTokenT< std::vector< RPCDigiL1Link > > m_brlLinksPutToken
 
const edm::ESGetToken< L1RPCBxOrConfig, L1RPCBxOrConfigRcdm_BxOrConfigToken
 
unsigned long long m_cacheID
 
const edm::ESGetToken< L1RPCConeBuilder, L1RPCConeBuilderRcdm_coneBuilderToken
 
const edm::ESGetToken< L1RPCConeDefinition, L1RPCConeDefinitionRcdm_coneDefinitionToken
 
const edm::ESGetToken< L1RPCConfig, L1RPCConfigRcdm_configToken
 
const edm::EDPutTokenT< std::vector< L1MuRegionalCand > > m_fwdCandPutToken
 
const edm::EDPutTokenT< std::vector< RPCDigiL1Link > > m_fwdLinksPutToken
 
const edm::ESGetToken< L1RPCHsbConfig, L1RPCHsbConfigRcdm_hsbConfigToken
 
const edm::ESGetToken< L1RPCHwConfig, L1RPCHwConfigRcdm_hwConfigToken
 
const std::string m_label
 
RPCPacManager< RPCPacDatam_pacManager
 
std::unique_ptr< RPCPacTriggerm_pacTrigger
 
const edm::EDGetTokenT< RPCDigiCollectionm_rpcDigiToken
 
RPCConeBuilderFromES m_theLinksystemFromES
 
std::unique_ptr< RPCBasicTrigConfigm_trigConfig
 
const int m_triggerDebug
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
template<typename T >
using BranchAliasSetterT = ProductRegistryHelper::BranchAliasSetterT< T >
 
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::ProducerBase
template<Transition Tr = Transition::Event>
auto produces (std::string instanceName) noexcept
 declare what type of product will make and with which optional label More...
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
template<Transition Tr = Transition::Event>
auto produces () noexcept
 
ProducesCollector producesCollector ()
 
- 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

Implements RPC trigger emulation.

Author
Tomasz Fruboes

Definition at line 59 of file RPCTrigger.h.

Constructor & Destructor Documentation

◆ RPCTrigger()

RPCTrigger::RPCTrigger ( const edm::ParameterSet iConfig)
explicit

Definition at line 6 of file RPCTrigger.cc.

References edm::ParameterSet::getUntrackedParameter().

7  : m_trigConfig(),
8  m_pacTrigger(),
9  // 0 - no debug
10  // 1 - dump to xml
11  m_triggerDebug{iConfig.getUntrackedParameter<int>("RPCTriggerDebug", 0) == 1 ? 1 : 0},
12  m_cacheID{0},
13  m_label{iConfig.getParameter<std::string>("label")},
14  m_rpcDigiToken{consumes<RPCDigiCollection>(m_label)},
15 
16  m_brlCandPutToken{produces<std::vector<L1MuRegionalCand> >("RPCb")},
17  m_fwdCandPutToken{produces<std::vector<L1MuRegionalCand> >("RPCf")},
18 
19  m_brlLinksPutToken{produces<std::vector<RPCDigiL1Link> >("RPCb")},
20  m_fwdLinksPutToken{produces<std::vector<RPCDigiL1Link> >("RPCf")},
21  m_configToken(esConsumes<L1RPCConfig, L1RPCConfigRcd>()),
22  m_coneBuilderToken(esConsumes<L1RPCConeBuilder, L1RPCConeBuilderRcd>()),
23  m_coneDefinitionToken(esConsumes<L1RPCConeDefinition, L1RPCConeDefinitionRcd>()),
24  m_hwConfigToken(esConsumes<L1RPCHwConfig, L1RPCHwConfigRcd>()),
25  m_BxOrConfigToken(esConsumes<L1RPCBxOrConfig, L1RPCBxOrConfigRcd>()),
26  m_hsbConfigToken(esConsumes<L1RPCHsbConfig, L1RPCHsbConfigRcd>()) {
27  //MuonsGrabber is a singleton
28  usesResource("MuonsGrabber");
29 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::EDPutTokenT< std::vector< L1MuRegionalCand > > m_fwdCandPutToken
Definition: RPCTrigger.h:89
std::unique_ptr< RPCBasicTrigConfig > m_trigConfig
Definition: RPCTrigger.h:72
const edm::ESGetToken< L1RPCBxOrConfig, L1RPCBxOrConfigRcd > m_BxOrConfigToken
Definition: RPCTrigger.h:97
const edm::EDPutTokenT< std::vector< RPCDigiL1Link > > m_brlLinksPutToken
Definition: RPCTrigger.h:91
const std::string m_label
Definition: RPCTrigger.h:85
T getUntrackedParameter(std::string const &, T const &) const
const int m_triggerDebug
Definition: RPCTrigger.h:76
const edm::ESGetToken< L1RPCHsbConfig, L1RPCHsbConfigRcd > m_hsbConfigToken
Definition: RPCTrigger.h:98
const edm::EDPutTokenT< std::vector< RPCDigiL1Link > > m_fwdLinksPutToken
Definition: RPCTrigger.h:92
const edm::ESGetToken< L1RPCHwConfig, L1RPCHwConfigRcd > m_hwConfigToken
Definition: RPCTrigger.h:96
const edm::EDPutTokenT< std::vector< L1MuRegionalCand > > m_brlCandPutToken
Definition: RPCTrigger.h:88
std::unique_ptr< RPCPacTrigger > m_pacTrigger
Definition: RPCTrigger.h:74
const edm::ESGetToken< L1RPCConeDefinition, L1RPCConeDefinitionRcd > m_coneDefinitionToken
Definition: RPCTrigger.h:95
const edm::EDGetTokenT< RPCDigiCollection > m_rpcDigiToken
Definition: RPCTrigger.h:86
const edm::ESGetToken< L1RPCConeBuilder, L1RPCConeBuilderRcd > m_coneBuilderToken
Definition: RPCTrigger.h:94
const edm::ESGetToken< L1RPCConfig, L1RPCConfigRcd > m_configToken
Definition: RPCTrigger.h:93
unsigned long long m_cacheID
Definition: RPCTrigger.h:77

Member Function Documentation

◆ giveFinallCandindates()

std::vector< L1MuRegionalCand > RPCTrigger::giveFinallCandindates ( const L1RpcTBMuonsVec finalMuons,
int  type,
int  bx,
edm::Handle< RPCDigiCollection rpcDigis,
std::vector< RPCDigiL1Link > &  retRPCDigiLink 
)
private

Returns vector of L1MuRegionalCand (input of L1GMT)

Note
- type is defined in L1MuRegionalCand 1 - barell, 3 - forward

Definition at line 141 of file RPCTrigger.cc.

Referenced by produce().

145  {
146  std::vector<L1MuRegionalCand> RPCCand;
147 
148  for (unsigned int iMu = 0; iMu < finalMuons.size(); iMu++) {
149  if (finalMuons[iMu].getPtCode() == 0) {
150  continue;
151  }
152 
153  RPCDigiL1Link newDigiLink;
154 
155  //std::cout << "######################################## " << std::endl;
156  //std::cout << finalMuons[iMu].getPhiAddr() << " " << finalMuons[iMu].getEtaAddr() << std::endl;
157  RPCMuon::TDigiLinkVec digiIVec = finalMuons[iMu].getDigiIdxVec();
158  // Here the iteration has to be the same as in
159  short int digiIndex = 0;
161  for (detUnitIt = rpcDigis->begin(); detUnitIt != rpcDigis->end(); ++detUnitIt) {
162  const RPCDetId& id = (*detUnitIt).first;
163  uint32_t rawId = id.rawId();
164  const RPCDigiCollection::Range& range = (*detUnitIt).second;
165 
166  for (RPCDigiCollection::const_iterator digiIt = range.first; digiIt != range.second; ++digiIt) {
167  ++digiIndex;
168 
169  RPCMuon::TDigiLinkVec::iterator it = digiIVec.begin();
170  for (; it != digiIVec.end(); ++it) {
171  if (digiIndex == it->m_digiIdx) {
172  newDigiLink.setLink(it->m_layer + 1, rawId, digiIt->strip(), digiIt->bx());
173  //std::cout << type << " " << iMu << " layer: " << it->m_layer << " index " << it->m_digiIdx << std::endl;
174  //std::cout << " " << id << " " << " |bx " << digiIt->bx() << " strip " << digiIt->strip() << std::endl;
175  }
176  }
177  }
178  }
179  retRPCDigiLink.push_back(newDigiLink);
180 
181  L1MuRegionalCand l1Cand;
182 
183  l1Cand.setBx(bx);
184 
185  l1Cand.setQualityPacked(finalMuons[iMu].getQuality());
186  l1Cand.setPtPacked(finalMuons[iMu].getPtCode());
187 
188  l1Cand.setType(type);
189 
190  int charge = finalMuons[iMu].getSign();
191 
192  if (charge == 0) // negative
193  l1Cand.setChargePacked(1);
194  else
195  l1Cand.setChargePacked(0);
196 
197  //RPCConst::l1RpcConeCrdnts cone = finalMuons[iMu].getConeCrdnts();
198 
199  /*
200  int pac = cone.m_LogSector*12+cone.m_LogSegment;
201  const float pi = 3.14159265;
202  const float offset = 5*(2*pi/360); // redefinition! Defined also in RPCRingFromRolls::phiMapCompare
203  float phi = 2*pi*pac/144-offset;
204  if (phi<0)
205  phi+=2*pi;
206 
207  l1Cand.setPhiValue(phi);
208  */
209 
210  //Note: pac numbering begins at 5 deg and goes from 1 to 144.
211  // we want phi values from 0 to 2.5 deg to be phiPacked=0
212  // max phiPacked value is 143 (see CMS IN 2004-022)
213  //int phiPacked = (finalMuons[iMu].getPhiAddr()+2)%144;
214  int phiPacked = finalMuons[iMu].getPhiAddr();
215  l1Cand.setPhiPacked(phiPacked);
216  /*
217  float eta = RPCConst::etaFromTowerNum(cone.m_Tower);
218  l1Cand.setEtaValue(eta);
219 */
220  //Note: etaAddr is packed in special way: see CMS IN 2004-022
221  signed short etaAddr = finalMuons[iMu].getEtaAddr(); //
222  // signed short etaAddr = finalMuons[iMu].getEtaAddr()-16; // -16..16
223  // bool etaNegative = false;
224  // if (etaAddr < 0){
225  // etaNegative = true;
226  // etaAddr = ~(-etaAddr)+1; // convert to negative :)
227  // }
228 
229  // etaAddr &= 63; // 6 bits only
230 
231  l1Cand.setEtaPacked(etaAddr);
232  l1Cand.setChargeValid(true);
233 
234  /*
235  std::cout<< std::endl << "RBMuon::" << finalMuons[iMu].getEtaAddr() << " "
236  << finalMuons[iMu].getPhiAddr() << std::endl ;
237  std::cout<< "cand " << l1Cand.eta_packed() << " "
238  << l1Cand.phi_packed() << std::endl ;
239  */
240 
241  RPCCand.push_back(l1Cand);
242 
243  LogDebug("RPCTrigger") << "Found muonf of pt " << finalMuons[iMu].getPtCode() << " bx " << l1Cand.bx()
244  << " L1Charge " << l1Cand.charge_packed() << " ql " << l1Cand.quality() << " fp "
245  << finalMuons[iMu].getFiredPlanes() << " b/f " << l1Cand.type_idx() << " phi "
246  << l1Cand.phi_packed() << " eta "
247  << l1Cand.eta_packed()
248  //<< " eta l1 " << l1Cand.etaValue() // will drop out soon
249  << " killed " << finalMuons[iMu].wasKilled();
250  }
251 
252  return RPCCand;
253 }
unsigned int quality() const
return quality
unsigned charge_packed() const
return charge packed as in hardware (0=pos, 1=neg)
unsigned phi_packed() const
return phi packed as in hardware
void setBx(int bx)
Set Bunch Crossing.
unsigned eta_packed() const
return eta packed as in hardware
void setType(unsigned type)
Set Type: 0 DT, 1 bRPC, 2 CSC, 3 fRPC.
std::vector< TDigiLink > TDigiLinkVec
Definition: RPCMuon.h:80
void setChargePacked(unsigned ch)
Set Charge (0=pos, 1=neg)
void setPtPacked(unsigned pt)
Set Pt: 0..31.
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
std::pair< const_iterator, const_iterator > Range
std::vector< RPCDigi >::const_iterator const_iterator
void setPhiPacked(unsigned phi)
Set Phi: 0..143.
void setQualityPacked(unsigned qual)
Set Quality: 0..7.
void setEtaPacked(unsigned eta)
Set Eta: 6-bit code.
void setChargeValid(bool valid)
Set Charge Valid.
int bx() const
return bunch crossing identifier
#define LogDebug(id)
unsigned type_idx() const
return type: 0 DT, 1 bRPC, 2 CSC, 3 fRPC

◆ produce()

void RPCTrigger::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overridevirtual

Implements edm::one::EDProducerBase.

Definition at line 31 of file RPCTrigger.cc.

References edm::eventsetup::EventSetupRecord::cacheIdentifier(), muons_cff::finalMuons, edm::EventSetup::get(), RPCConeBuilderFromES::getConesFromES(), edm::EventSetup::getHandle(), giveFinallCandindates(), iEvent, RPCPacManager< TPacType >::init(), MuonsGrabber::Instance(), edm::HandleBase::isValid(), LogDebug, m_brlCandPutToken, m_brlLinksPutToken, m_BxOrConfigToken, m_cacheID, m_coneBuilderToken, m_coneDefinitionToken, m_configToken, m_fwdCandPutToken, m_fwdLinksPutToken, m_hsbConfigToken, m_hwConfigToken, m_label, m_pacManager, m_pacTrigger, m_rpcDigiToken, m_theLinksystemFromES, m_trigConfig, m_triggerDebug, eostools::move(), edm::ESHandle< T >::product(), L1RPCConfig_cff::rpcconf, MuonsGrabber::setRPCBasicTrigConfig(), MuonsGrabber::startNewEvent(), and MuonsGrabber::writeDataForRelativeBX().

31  {
32  //static int ev=1;
33  //std::cout << "----------------------------------- " << ev++ << std::endl;
34  if (m_triggerDebug == 1)
35  MuonsGrabber::Instance().startNewEvent(iEvent.id().event(), iEvent.bunchCrossing());
36 
37  if (m_cacheID != iSetup.get<L1RPCConfigRcd>().cacheIdentifier()) {
38  //std::cout << " New pats: " << iSetup.get<L1RPCConfigRcd>().cacheIdentifier() << std::endl ;
39  m_cacheID = iSetup.get<L1RPCConfigRcd>().cacheIdentifier();
40 
42  const L1RPCConfig* rpcconf = conf.product();
43 
45  m_trigConfig = std::make_unique<RPCBasicTrigConfig>(&m_pacManager);
46  m_trigConfig->setDebugLevel(m_triggerDebug);
47 
48  m_pacTrigger = std::make_unique<RPCPacTrigger>(m_trigConfig.get());
49 
50  if (m_triggerDebug == 1)
52  }
53 
55  iEvent.getByToken(m_rpcDigiToken, rpcDigis);
56 
57  std::vector<L1MuRegionalCand> candBarell;
58  std::vector<L1MuRegionalCand> candForward;
59  if (!rpcDigis.isValid()) {
60  LogDebug("RPCTrigger")
61  << "\nWarning: RPCDigiCollection with input tag " << m_label
62  << "\nrequested in configuration, but not found in the event. Emulator will produce empty collection \n ";
63 
64  iEvent.emplace(m_brlCandPutToken, std::move(candBarell));
65  iEvent.emplace(m_fwdCandPutToken, std::move(candForward));
66 
67  return;
68  }
69 
70  if (rpcDigis->begin() == rpcDigis->end()) {
71  LogDebug("RPCTrigger") << "\nWarning: RPCDigiCollection with input tag " << m_label
72  << "\n seems to be empty for this event. Emulator will run on empty collection ";
73  }
74 
75  std::vector<RPCDigiL1Link> brlLinks;
76  std::vector<RPCDigiL1Link> fwdLinks;
77 
79 
81 
83 
85 
87 
88  for (int iBx = -1; iBx < 2; ++iBx) {
89  L1RpcLogConesVec ActiveCones =
90  m_theLinksystemFromES.getConesFromES(rpcDigis, coneBuilder, l1RPCConeDefinition, bxOrConfig, hwConfig, iBx);
91 
92  L1RpcTBMuonsVec2 finalMuons = m_pacTrigger->runEvent(ActiveCones, hsbConfig);
93 
94  //int maxFiredPlanes = 0;
95 
96  /*
97  for (unsigned int i=0;i<ActiveCones.size();i++){
98  int fpCnt = ActiveCones[i].getFiredPlanesCnt();
99  if (fpCnt > maxFiredPlanes)
100  maxFiredPlanes = fpCnt;
101  }
102 
103  // Fill out the products
104  // finalMuons[0]=barell, finalMuons[1]=endcap
105  LogDebug("RPCTrigger") << "---Filling candindates in new event--- "
106  << maxFiredPlanes << std::endl;
107 <<<<<<< RPCTrigger.cc
108  */
109 
110  // std::vector<L1MuRegionalCand> RPCb = giveFinallCandindates(finalMuons[0],1, iBx);
111  // std::vector<L1MuRegionalCand> RPCf = giveFinallCandindates(finalMuons[1],3, iBx);
112  std::vector<RPCDigiL1Link> dlBrl;
113  std::vector<RPCDigiL1Link> dlFwd;
114  std::vector<L1MuRegionalCand> RPCb = giveFinallCandindates(finalMuons[0], 1, iBx, rpcDigis, dlBrl);
115  std::vector<L1MuRegionalCand> RPCf = giveFinallCandindates(finalMuons[1], 3, iBx, rpcDigis, dlFwd);
116 
117  brlLinks.insert(brlLinks.end(), dlBrl.begin(), dlBrl.end());
118  fwdLinks.insert(fwdLinks.end(), dlFwd.begin(), dlFwd.end());
119 
120  candBarell.insert(candBarell.end(), RPCb.begin(), RPCb.end());
121  candForward.insert(candForward.end(), RPCf.begin(), RPCf.end());
122 
123  if (m_triggerDebug == 1)
125  }
126 
127  iEvent.emplace(m_fwdLinksPutToken, std::move(fwdLinks));
128  iEvent.emplace(m_brlLinksPutToken, std::move(brlLinks));
129  iEvent.emplace(m_brlCandPutToken, std::move(candBarell));
130  iEvent.emplace(m_fwdCandPutToken, std::move(candForward));
131 }
const edm::EDPutTokenT< std::vector< L1MuRegionalCand > > m_fwdCandPutToken
Definition: RPCTrigger.h:89
std::unique_ptr< RPCBasicTrigConfig > m_trigConfig
Definition: RPCTrigger.h:72
const edm::ESGetToken< L1RPCBxOrConfig, L1RPCBxOrConfigRcd > m_BxOrConfigToken
Definition: RPCTrigger.h:97
const edm::EDPutTokenT< std::vector< RPCDigiL1Link > > m_brlLinksPutToken
Definition: RPCTrigger.h:91
L1RpcLogConesVec getConesFromES(edm::Handle< RPCDigiCollection > rpcDigis, edm::ESHandle< L1RPCConeBuilder > coneBuilder, edm::ESHandle< L1RPCConeDefinition > coneDef, edm::ESHandle< L1RPCBxOrConfig > bxOrDef, edm::ESHandle< L1RPCHwConfig > hwConfig, int bx)
std::vector< L1MuRegionalCand > giveFinallCandindates(const L1RpcTBMuonsVec &finalMuons, int type, int bx, edm::Handle< RPCDigiCollection > rpcDigis, std::vector< RPCDigiL1Link > &retRPCDigiLink)
Returns vector of L1MuRegionalCand (input of L1GMT)
Definition: RPCTrigger.cc:141
const std::string m_label
Definition: RPCTrigger.h:85
unsigned long long cacheIdentifier() const
static MuonsGrabber & Instance()
Definition: MuonsGrabber.cc:48
void setRPCBasicTrigConfig(RPCBasicTrigConfig *c)
Definition: MuonsGrabber.h:61
int iEvent
Definition: GenABIO.cc:224
T const * product() const
Definition: ESHandle.h:86
void startNewEvent(int event, int bx)
const int m_triggerDebug
Definition: RPCTrigger.h:76
RPCPacManager< RPCPacData > m_pacManager
Definition: RPCTrigger.h:70
std::vector< L1RpcTBMuonsVec > L1RpcTBMuonsVec2
Definition: RPCTBMuon.h:219
T get() const
Definition: EventSetup.h:82
const edm::ESGetToken< L1RPCHsbConfig, L1RPCHsbConfigRcd > m_hsbConfigToken
Definition: RPCTrigger.h:98
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:151
RPCConeBuilderFromES m_theLinksystemFromES
Definition: RPCTrigger.h:68
const edm::EDPutTokenT< std::vector< RPCDigiL1Link > > m_fwdLinksPutToken
Definition: RPCTrigger.h:92
const edm::ESGetToken< L1RPCHwConfig, L1RPCHwConfigRcd > m_hwConfigToken
Definition: RPCTrigger.h:96
const edm::EDPutTokenT< std::vector< L1MuRegionalCand > > m_brlCandPutToken
Definition: RPCTrigger.h:88
bool isValid() const
Definition: HandleBase.h:70
void init(std::string patFilesDirectory, L1RpcPACsCntEnum _PACsCnt)
Definition: RPCPacManager.h:58
std::unique_ptr< RPCPacTrigger > m_pacTrigger
Definition: RPCTrigger.h:74
const edm::ESGetToken< L1RPCConeDefinition, L1RPCConeDefinitionRcd > m_coneDefinitionToken
Definition: RPCTrigger.h:95
const edm::EDGetTokenT< RPCDigiCollection > m_rpcDigiToken
Definition: RPCTrigger.h:86
const edm::ESGetToken< L1RPCConeBuilder, L1RPCConeBuilderRcd > m_coneBuilderToken
Definition: RPCTrigger.h:94
void writeDataForRelativeBX(int bx)
def move(src, dest)
Definition: eostools.py:511
std::vector< RPCLogCone > L1RpcLogConesVec
Definition: RPCLogCone.h:119
const edm::ESGetToken< L1RPCConfig, L1RPCConfigRcd > m_configToken
Definition: RPCTrigger.h:93
#define LogDebug(id)
unsigned long long m_cacheID
Definition: RPCTrigger.h:77

Member Data Documentation

◆ m_brlCandPutToken

const edm::EDPutTokenT<std::vector<L1MuRegionalCand> > RPCTrigger::m_brlCandPutToken
private

Definition at line 88 of file RPCTrigger.h.

Referenced by produce().

◆ m_brlLinksPutToken

const edm::EDPutTokenT<std::vector<RPCDigiL1Link> > RPCTrigger::m_brlLinksPutToken
private

Definition at line 91 of file RPCTrigger.h.

Referenced by produce().

◆ m_BxOrConfigToken

const edm::ESGetToken<L1RPCBxOrConfig, L1RPCBxOrConfigRcd> RPCTrigger::m_BxOrConfigToken
private

Definition at line 97 of file RPCTrigger.h.

Referenced by produce().

◆ m_cacheID

unsigned long long RPCTrigger::m_cacheID
private

Definition at line 77 of file RPCTrigger.h.

Referenced by produce().

◆ m_coneBuilderToken

const edm::ESGetToken<L1RPCConeBuilder, L1RPCConeBuilderRcd> RPCTrigger::m_coneBuilderToken
private

Definition at line 94 of file RPCTrigger.h.

Referenced by produce().

◆ m_coneDefinitionToken

const edm::ESGetToken<L1RPCConeDefinition, L1RPCConeDefinitionRcd> RPCTrigger::m_coneDefinitionToken
private

Definition at line 95 of file RPCTrigger.h.

Referenced by produce().

◆ m_configToken

const edm::ESGetToken<L1RPCConfig, L1RPCConfigRcd> RPCTrigger::m_configToken
private

Definition at line 93 of file RPCTrigger.h.

Referenced by produce().

◆ m_fwdCandPutToken

const edm::EDPutTokenT<std::vector<L1MuRegionalCand> > RPCTrigger::m_fwdCandPutToken
private

Definition at line 89 of file RPCTrigger.h.

Referenced by produce().

◆ m_fwdLinksPutToken

const edm::EDPutTokenT<std::vector<RPCDigiL1Link> > RPCTrigger::m_fwdLinksPutToken
private

Definition at line 92 of file RPCTrigger.h.

Referenced by produce().

◆ m_hsbConfigToken

const edm::ESGetToken<L1RPCHsbConfig, L1RPCHsbConfigRcd> RPCTrigger::m_hsbConfigToken
private

Definition at line 98 of file RPCTrigger.h.

Referenced by produce().

◆ m_hwConfigToken

const edm::ESGetToken<L1RPCHwConfig, L1RPCHwConfigRcd> RPCTrigger::m_hwConfigToken
private

Definition at line 96 of file RPCTrigger.h.

Referenced by produce().

◆ m_label

const std::string RPCTrigger::m_label
private

Definition at line 85 of file RPCTrigger.h.

Referenced by produce().

◆ m_pacManager

RPCPacManager<RPCPacData> RPCTrigger::m_pacManager
private

Definition at line 70 of file RPCTrigger.h.

Referenced by produce().

◆ m_pacTrigger

std::unique_ptr<RPCPacTrigger> RPCTrigger::m_pacTrigger
private

Definition at line 74 of file RPCTrigger.h.

Referenced by produce().

◆ m_rpcDigiToken

const edm::EDGetTokenT<RPCDigiCollection> RPCTrigger::m_rpcDigiToken
private

Definition at line 86 of file RPCTrigger.h.

Referenced by produce().

◆ m_theLinksystemFromES

RPCConeBuilderFromES RPCTrigger::m_theLinksystemFromES
private

Definition at line 68 of file RPCTrigger.h.

Referenced by produce().

◆ m_trigConfig

std::unique_ptr<RPCBasicTrigConfig> RPCTrigger::m_trigConfig
private

Definition at line 72 of file RPCTrigger.h.

Referenced by produce().

◆ m_triggerDebug

const int RPCTrigger::m_triggerDebug
private

Definition at line 76 of file RPCTrigger.h.

Referenced by produce().