CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
L1TExtCondProducer Class Reference
Inheritance diagram for L1TExtCondProducer:
edm::stream::EDProducer<>

Public Member Functions

 L1TExtCondProducer (const ParameterSet &)
 
 ~L1TExtCondProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Static Public Member Functions

static void fillDescriptions (ConfigurationDescriptions &descriptions)
 

Private Member Functions

void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

int bxFirst_
 
int bxLast_
 
edm::ESGetToken< L1TUtmTriggerMenu, L1TUtmTriggerMenuRcdl1GtMenuToken_
 
std::map< std::string, unsigned int > m_extBitMap
 
unsigned long long m_l1GtMenuCacheID
 
unsigned int m_triggerRulePrefireVetoBit
 
bool makeTriggerRulePrefireVetoBit_
 
bool setBptxAND_
 
bool setBptxMinus_
 
bool setBptxOR_
 
bool setBptxPlus_
 
edm::InputTag tcdsInputTag_
 
edm::EDGetTokenT< TCDSRecordtcdsRecordToken_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 48 of file L1TExtCondProducer.cc.

Constructor & Destructor Documentation

◆ L1TExtCondProducer()

L1TExtCondProducer::L1TExtCondProducer ( const ParameterSet iConfig)
explicit

Definition at line 87 of file L1TExtCondProducer.cc.

88  : bxFirst_(iConfig.getParameter<int>("bxFirst")),
89  bxLast_(iConfig.getParameter<int>("bxLast")),
90  setBptxAND_(iConfig.getParameter<bool>("setBptxAND")),
91  setBptxPlus_(iConfig.getParameter<bool>("setBptxPlus")),
92  setBptxMinus_(iConfig.getParameter<bool>("setBptxMinus")),
93  setBptxOR_(iConfig.getParameter<bool>("setBptxOR")),
94  tcdsInputTag_(iConfig.getParameter<edm::InputTag>("tcdsRecordLabel")),
95  l1GtMenuToken_(esConsumes<L1TUtmTriggerMenu, L1TUtmTriggerMenuRcd>()) {
97 
101  edm::LogWarning("L1TExtCondProducer")
102  << "Default trigger rule prefire veto bit number too large. Resetting to " << m_triggerRulePrefireVetoBit;
103  }
104 
105  if (!(tcdsInputTag_ == edm::InputTag(""))) {
106  tcdsRecordToken_ = consumes<TCDSRecord>(tcdsInputTag_);
108  }
109 
110  // register what you produce
111  produces<GlobalExtBlkBxCollection>();
112 
113  // Initialize parameters
114  m_l1GtMenuCacheID = 0ULL;
115 }

References m_l1GtMenuCacheID, m_triggerRulePrefireVetoBit, makeTriggerRulePrefireVetoBit_, GlobalExtBlk::maxExternalConditions, tcdsInputTag_, and tcdsRecordToken_.

◆ ~L1TExtCondProducer()

L1TExtCondProducer::~L1TExtCondProducer ( )
override

Definition at line 117 of file L1TExtCondProducer.cc.

117 {}

Member Function Documentation

◆ fillDescriptions()

void L1TExtCondProducer::fillDescriptions ( ConfigurationDescriptions descriptions)
static

Definition at line 246 of file L1TExtCondProducer.cc.

246  {
247  // simGtExtFakeProd
249  desc.add<bool>("setBptxMinus", true);
250  desc.add<bool>("setBptxAND", true);
251  desc.add<int>("bxFirst", -2);
252  desc.add<bool>("setBptxOR", true);
253  desc.add<int>("bxLast", 2);
254  desc.add<bool>("setBptxPlus", true);
255  desc.add<edm::InputTag>("tcdsRecordLabel", edm::InputTag(""));
256  descriptions.add("simGtExtFakeProd", desc);
257 }

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, and HLT_FULL_cff::InputTag.

◆ produce()

void L1TExtCondProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 124 of file L1TExtCondProducer.cc.

124  {
125  LogDebug("L1TExtCondProducer") << "L1TExtCondProducer::produce function called...\n";
126 
127  // get / update the trigger menu from the EventSetup
128  // local cache & check on cacheIdentifier
129  unsigned long long l1GtMenuCacheID = iSetup.get<L1TUtmTriggerMenuRcd>().cacheIdentifier();
130 
131  if (m_l1GtMenuCacheID != l1GtMenuCacheID) {
133  const L1TUtmTriggerMenu* utml1GtMenu = l1GtMenu.product();
134 
135  // Instantiate Parser
137 
138  std::map<std::string, unsigned int> extBitMap = gtParser.getExternalSignals(utml1GtMenu);
139 
140  m_l1GtMenuCacheID = l1GtMenuCacheID;
141  m_extBitMap = extBitMap;
142  }
143 
144  bool TriggerRulePrefireVetoBit(false);
146  // code taken from Nick Smith's EventFilter/L1TRawToDigi/plugins/TriggerRulePrefireVetoFilter.cc
147 
148  edm::Handle<TCDSRecord> tcdsRecordH;
149  iEvent.getByToken(tcdsRecordToken_, tcdsRecordH);
150  const auto& tcdsRecord = *tcdsRecordH.product();
151 
152  uint64_t thisEvent = (tcdsRecord.getBXID() - 1) + tcdsRecord.getOrbitNr() * 3564ull;
153 
154  std::vector<uint64_t> eventHistory;
155  for (auto&& l1a : tcdsRecord.getFullL1aHistory()) {
156  eventHistory.push_back(thisEvent - ((l1a.getBXID() - 1) + l1a.getOrbitNr() * 3564ull));
157  }
158 
159  // should be 16 according to TCDSRecord.h, we only care about the last 4
160  if (eventHistory.size() < 4) {
161  edm::LogError("L1TExtCondProducer") << "Unexpectedly small L1A history from TCDSRecord";
162  }
163 
164  // No more than 1 L1A in 3 BX
165  if (eventHistory[0] < 3ull) {
166  edm::LogError("L1TExtCondProducer") << "Found an L1A in an impossible location?! (1 in 3)";
167  }
168 
169  if (eventHistory[0] == 3ull)
170  TriggerRulePrefireVetoBit = true;
171 
172  // No more than 2 L1As in 25 BX
173  if (eventHistory[0] < 25ull and eventHistory[1] < 25ull) {
174  edm::LogError("L1TExtCondProducer") << "Found an L1A in an impossible location?! (2 in 25)";
175  }
176  if (eventHistory[0] < 25ull and eventHistory[1] == 25ull)
177  TriggerRulePrefireVetoBit = true;
178 
179  // No more than 3 L1As in 100 BX
180  if (eventHistory[0] < 100ull and eventHistory[1] < 100ull and eventHistory[2] < 100ull) {
181  edm::LogError("L1TExtCondProducer") << "Found an L1A in an impossible location?! (3 in 100)";
182  }
183  if (eventHistory[0] < 100ull and eventHistory[1] < 100ull and eventHistory[2] == 100ull)
184  TriggerRulePrefireVetoBit = true;
185 
186  // No more than 4 L1As in 240 BX
187  if (eventHistory[0] < 240ull and eventHistory[1] < 240ull and eventHistory[2] < 240ull and
188  eventHistory[3] < 240ull) {
189  edm::LogError("L1TExtCondProducer") << "Found an L1A in an impossible location?! (4 in 240)";
190  }
191  if (eventHistory[0] < 240ull and eventHistory[1] < 240ull and eventHistory[2] < 240ull and
192  eventHistory[3] == 240ull)
193  TriggerRulePrefireVetoBit = true;
194  }
195 
196  // Setup vectors
197  GlobalExtBlk extCond_bx;
198 
199  //outputs
200  std::unique_ptr<GlobalExtBlkBxCollection> extCond(new GlobalExtBlkBxCollection(0, bxFirst_, bxLast_));
201 
202  bool foundBptxAND = (m_extBitMap.find("BPTX_plus_AND_minus.v0") != m_extBitMap.end());
203  bool foundBptxPlus = (m_extBitMap.find("BPTX_plus.v0") != m_extBitMap.end());
204  bool foundBptxMinus = (m_extBitMap.find("BPTX_minus.v0") != m_extBitMap.end());
205  bool foundBptxOR = (m_extBitMap.find("BPTX_plus_OR_minus.v0") != m_extBitMap.end());
206 
207  // Fill in some external conditions for testing
208  if (setBptxAND_ && foundBptxAND)
209  extCond_bx.setExternalDecision(m_extBitMap["BPTX_plus_AND_minus.v0"], true);
210  if (setBptxPlus_ && foundBptxPlus)
211  extCond_bx.setExternalDecision(m_extBitMap["BPTX_plus.v0"], true);
212  if (setBptxMinus_ && foundBptxMinus)
213  extCond_bx.setExternalDecision(m_extBitMap["BPTX_minus.v0"], true);
214  if (setBptxOR_ && foundBptxOR)
215  extCond_bx.setExternalDecision(m_extBitMap["BPTX_plus_OR_minus.v0"], true);
216 
217  //check for updated Bptx names as well
218  foundBptxAND = (m_extBitMap.find("ZeroBias_BPTX_AND_VME") != m_extBitMap.end());
219  foundBptxPlus = (m_extBitMap.find("BPTX_B1_VME") != m_extBitMap.end());
220  foundBptxMinus = (m_extBitMap.find("BPTX_B2_VME") != m_extBitMap.end());
221  foundBptxOR = (m_extBitMap.find("BPTX_OR_VME") != m_extBitMap.end());
222 
223  // Fill in some external conditions for testing
224  if (setBptxAND_ && foundBptxAND)
225  extCond_bx.setExternalDecision(m_extBitMap["ZeroBias_BPTX_AND_VME"], true);
226  if (setBptxPlus_ && foundBptxPlus)
227  extCond_bx.setExternalDecision(m_extBitMap["BPTX_B1_VME"], true);
228  if (setBptxMinus_ && foundBptxMinus)
229  extCond_bx.setExternalDecision(m_extBitMap["BPTX_B2_VME"], true);
230  if (setBptxOR_ && foundBptxOR)
231  extCond_bx.setExternalDecision(m_extBitMap["BPTX_OR_VME"], true);
232 
233  // set the bit for the TriggerRulePrefireVeto if true
234  if (TriggerRulePrefireVetoBit)
236 
237  // Fill Externals
238  for (int iBx = bxFirst_; iBx <= bxLast_; iBx++) {
239  extCond->push_back(iBx, extCond_bx);
240  }
241 
242  iEvent.put(std::move(extCond));
243 }

References edm::EventSetup::get(), l1t::TriggerMenuParser::getExternalSignals(), edm::EventSetup::getHandle(), iEvent, LogDebug, eostools::move(), edm::Handle< T >::product(), edm::ESHandle< T >::product(), and GlobalExtBlk::setExternalDecision().

Member Data Documentation

◆ bxFirst_

int L1TExtCondProducer::bxFirst_
private

Definition at line 65 of file L1TExtCondProducer.cc.

◆ bxLast_

int L1TExtCondProducer::bxLast_
private

Definition at line 66 of file L1TExtCondProducer.cc.

◆ l1GtMenuToken_

edm::ESGetToken<L1TUtmTriggerMenu, L1TUtmTriggerMenuRcd> L1TExtCondProducer::l1GtMenuToken_
private

Definition at line 81 of file L1TExtCondProducer.cc.

◆ m_extBitMap

std::map<std::string, unsigned int> L1TExtCondProducer::m_extBitMap
private

Definition at line 74 of file L1TExtCondProducer.cc.

◆ m_l1GtMenuCacheID

unsigned long long L1TExtCondProducer::m_l1GtMenuCacheID
private

Definition at line 73 of file L1TExtCondProducer.cc.

Referenced by L1TExtCondProducer().

◆ m_triggerRulePrefireVetoBit

unsigned int L1TExtCondProducer::m_triggerRulePrefireVetoBit
private

Definition at line 76 of file L1TExtCondProducer.cc.

Referenced by L1TExtCondProducer().

◆ makeTriggerRulePrefireVetoBit_

bool L1TExtCondProducer::makeTriggerRulePrefireVetoBit_
private

Definition at line 78 of file L1TExtCondProducer.cc.

Referenced by L1TExtCondProducer().

◆ setBptxAND_

bool L1TExtCondProducer::setBptxAND_
private

Definition at line 68 of file L1TExtCondProducer.cc.

◆ setBptxMinus_

bool L1TExtCondProducer::setBptxMinus_
private

Definition at line 70 of file L1TExtCondProducer.cc.

◆ setBptxOR_

bool L1TExtCondProducer::setBptxOR_
private

Definition at line 71 of file L1TExtCondProducer.cc.

◆ setBptxPlus_

bool L1TExtCondProducer::setBptxPlus_
private

Definition at line 69 of file L1TExtCondProducer.cc.

◆ tcdsInputTag_

edm::InputTag L1TExtCondProducer::tcdsInputTag_
private

Definition at line 80 of file L1TExtCondProducer.cc.

Referenced by L1TExtCondProducer().

◆ tcdsRecordToken_

edm::EDGetTokenT<TCDSRecord> L1TExtCondProducer::tcdsRecordToken_
private

Definition at line 79 of file L1TExtCondProducer.cc.

Referenced by L1TExtCondProducer().

edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
l1t::TriggerMenuParser::getExternalSignals
std::map< std::string, unsigned int > getExternalSignals(const L1TUtmTriggerMenu *utmMenu)
Definition: TriggerMenuParser.cc:155
L1TExtCondProducer::tcdsInputTag_
edm::InputTag tcdsInputTag_
Definition: L1TExtCondProducer.cc:80
L1TExtCondProducer::m_l1GtMenuCacheID
unsigned long long m_l1GtMenuCacheID
Definition: L1TExtCondProducer.cc:73
edm::Handle::product
T const * product() const
Definition: Handle.h:70
L1TExtCondProducer::setBptxAND_
bool setBptxAND_
Definition: L1TExtCondProducer.cc:68
L1TUtmTriggerMenuRcd
Definition: L1TUtmTriggerMenuRcd.h:11
GlobalExtBlk::maxExternalConditions
const static unsigned int maxExternalConditions
Definition: GlobalExtBlk.h:43
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89281
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
L1TExtCondProducer::bxFirst_
int bxFirst_
Definition: L1TExtCondProducer.cc:65
L1TExtCondProducer::tcdsRecordToken_
edm::EDGetTokenT< TCDSRecord > tcdsRecordToken_
Definition: L1TExtCondProducer.cc:79
L1TExtCondProducer::m_triggerRulePrefireVetoBit
unsigned int m_triggerRulePrefireVetoBit
Definition: L1TExtCondProducer.cc:76
GlobalExtBlkBxCollection
BXVector< GlobalExtBlk > GlobalExtBlkBxCollection
Definition: GlobalExtBlk.h:29
edm::Handle
Definition: AssociativeIterator.h:50
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
L1TUtmTriggerMenu
Definition: L1TUtmTriggerMenu.h:25
L1TExtCondProducer::makeTriggerRulePrefireVetoBit_
bool makeTriggerRulePrefireVetoBit_
Definition: L1TExtCondProducer.cc:78
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
edm::ESHandle
Definition: DTSurvey.h:22
L1TExtCondProducer::setBptxPlus_
bool setBptxPlus_
Definition: L1TExtCondProducer.cc:69
L1TExtCondProducer::bxLast_
int bxLast_
Definition: L1TExtCondProducer.cc:66
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
L1TExtCondProducer::setBptxMinus_
bool setBptxMinus_
Definition: L1TExtCondProducer.cc:70
iEvent
int iEvent
Definition: GenABIO.cc:224
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:155
GlobalExtBlk
Definition: GlobalExtBlk.h:34
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
L1TExtCondProducer::m_extBitMap
std::map< std::string, unsigned int > m_extBitMap
Definition: L1TExtCondProducer.cc:74
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
eostools.move
def move(src, dest)
Definition: eostools.py:511
L1TExtCondProducer::setBptxOR_
bool setBptxOR_
Definition: L1TExtCondProducer.cc:71
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
cond::uint64_t
unsigned long long uint64_t
Definition: Time.h:13
L1TExtCondProducer::l1GtMenuToken_
edm::ESGetToken< L1TUtmTriggerMenu, L1TUtmTriggerMenuRcd > l1GtMenuToken_
Definition: L1TExtCondProducer.cc:81
l1t::TriggerMenuParser
Definition: TriggerMenuParser.h:57
edm::InputTag
Definition: InputTag.h:15
GlobalExtBlk::setExternalDecision
void setExternalDecision(unsigned int bit, bool val)
Set decision bits.
Definition: GlobalExtBlk.cc:40