198 int ntrigs = hltresults->size();
199 if (ntrigs==0){
std::cout <<
"%HLTInfo -- No trigger name given in TriggerResults of the input " << std::endl;}
205 for (
int itrig = 0; itrig != ntrigs; ++itrig) {
206 TString trigName = triggerNames.
triggerName(itrig);
207 HltTree->Branch(trigName,
trigflag+itrig,trigName+
"/I");
208 HltTree->Branch(trigName+
"_Prescl",
trigPrescl+itrig,trigName+
"_Prescl/I");
219 for (
int itrig = 0; itrig != ntrigs; ++itrig){
221 std::string trigName=triggerNames.
triggerName(itrig);
222 bool accept = hltresults->accept(itrig);
231 if (
_Debug)
std::cout <<
"%HLTInfo -- Number of HLT Triggers: " << ntrigs << std::endl;
232 std::cout <<
"%HLTInfo -- HLTTrigger(" << itrig <<
"): " << trigName <<
" = " << accept << std::endl;
236 else {
if (
_Debug)
std::cout <<
"%HLTInfo -- No Trigger Result" << std::endl;}
240 const int maxL1EmIsol = 4;
241 for (
int i=0;
i!=maxL1EmIsol; ++
i){
247 if (L1ExtEmIsol.isValid()) {
250 myl1iems = * L1ExtEmIsol;
253 for (l1extra::L1EmParticleCollection::const_iterator emItr = myl1iems.begin(); emItr != myl1iems.end(); ++emItr) {
263 if (
_Debug)
std::cout <<
"%HLTInfo -- No Isolated L1 EM object" << std::endl;
266 const int maxL1EmNIsol = 4;
267 for (
int i=0;
i!=maxL1EmNIsol; ++
i){
273 if (L1ExtEmNIsol.isValid()) {
276 myl1nems = * L1ExtEmNIsol;
279 for (l1extra::L1EmParticleCollection::const_iterator emItr = myl1nems.begin(); emItr != myl1nems.end(); ++emItr) {
289 if (
_Debug)
std::cout <<
"%HLTInfo -- No Non-Isolated L1 EM object" << std::endl;
292 const int maxL1Mu = 4;
293 for (
int i=0;
i!=maxL1Mu; ++
i){
305 if (L1ExtMu.isValid()) {
311 for (l1extra::L1MuonParticleCollection::const_iterator muItr = myl1mus.begin(); muItr != myl1mus.end(); ++muItr) {
313 l1extmue[il1exmu] = muItr->energy();
331 const int maxL1CenJet = 4;
332 for (
int i=0;
i!=maxL1CenJet; ++
i){
338 if (L1ExtJetC.isValid()) {
341 myl1jetsc = * L1ExtJetC;
344 for (l1extra::L1JetParticleCollection::const_iterator jtItr = myl1jetsc.begin(); jtItr != myl1jetsc.end(); ++jtItr) {
354 if (
_Debug)
std::cout <<
"%HLTInfo -- No L1 Central JET object" << std::endl;
357 const int maxL1ForJet = 4;
358 for (
int i=0;
i!=maxL1ForJet; ++
i){
364 if (L1ExtJetF.isValid()) {
367 myl1jetsf = * L1ExtJetF;
370 for (l1extra::L1JetParticleCollection::const_iterator jtItr = myl1jetsf.begin(); jtItr != myl1jetsf.end(); ++jtItr) {
380 if (
_Debug)
std::cout <<
"%HLTInfo -- No L1 Forward JET object" << std::endl;
383 const int maxL1TauJet = 4;
384 for (
int i=0;
i!=maxL1TauJet; ++
i){
390 if (L1ExtTau.isValid()) {
393 myl1taus = * L1ExtTau;
396 for (l1extra::L1JetParticleCollection::const_iterator tauItr = myl1taus.begin(); tauItr != myl1taus.end(); ++tauItr) {
409 if (L1ExtMet.isValid()) {
410 met = L1ExtMet->begin()->etMiss();
411 metphi = L1ExtMet->begin()->phi();
412 ettot = L1ExtMet->begin()->etTotal();
418 if (L1ExtMht.isValid()) {
419 mht = L1ExtMht->begin()->etMiss();
420 mhtphi = L1ExtMht->begin()->phi();
421 ethad = L1ExtMht->begin()->etTotal();
439 iEvent, trigCategory, iErrorCode);
440 if (iErrorCode == 0) {
441 if (
_Debug)
std::cout <<
"%Prescale set index: " << pfSetIndexAlgorithmTrigger << std::endl;
443 std::cout <<
"%Could not extract Prescale set index from event record. Error code: " << iErrorCode << std::endl;
447 if (L1GTRR.isValid()) {
450 const unsigned int numberTriggerBits(gtDecisionWord.size());
452 const unsigned int numberTechnicalTriggerBits(technicalTriggerWordBeforeMask.size());
467 if (pSet.
exists(
"UnpackBxInEvent")){
475 if (
_Debug)
std::cout <<
"Name: " << (
algo->second).algoName() <<
" Alias: " << (
algo->second).algoAlias() << std::endl;
476 int itrig = (
algo->second).algoBitNumber();
486 int itrig = (techTrig->second).algoBitNumber();
487 techBitToName[itrig] = TString( (techTrig->second).algoName() );
496 std::string triggerAlgTechTrig =
"PhysicsAlgorithms";
497 for (
unsigned int iBit = 0; iBit < numberTriggerBits; ++iBit) {
499 l1flag[iBit] = gtDecisionWord[iBit];
501 std::string l1triggername= std::string (
algoBitToName[iBit]);
507 << gtDecisionWord[iBit]<<
" "
512 triggerAlgTechTrig =
"TechnicalTriggers";
513 for (
unsigned int iBit = 0; iBit < numberTechnicalTriggerBits; ++iBit) {
514 l1techflag[iBit] = (int) technicalTriggerWordBeforeMask.at(iBit);
516 std::string l1triggername= std::string (
techBitToName[iBit]);
530 std::vector<DecisionWord> m_gtDecisionWord5Bx;
531 std::vector<TechnicalTriggerWord> m_gtTechDecisionWord5Bx;
532 std::vector<int> m_ibxn;
534 const std::vector<L1GtFdlWord> &m_gtFdlWord(L1GTRR->gtFdlVector());
535 for (std::vector<L1GtFdlWord>::const_iterator itBx = m_gtFdlWord.begin();
536 itBx != m_gtFdlWord.end(); ++itBx) {
538 m_gtDecisionWord5Bx.push_back((*itBx).gtDecisionWord());
539 m_gtTechDecisionWord5Bx.push_back((*itBx).gtTechnicalTriggerWord());
542 for (
unsigned int iBit = 0; iBit < numberTriggerBits; ++iBit) {
547 for (
unsigned int jbx=0; jbx<m_gtDecisionWord5Bx.size(); ++jbx) {
549 result += m_gtDecisionWord5Bx[jbx][iBit];
550 if (m_gtDecisionWord5Bx[jbx][iBit]>0) bitword |= 1 << jbx;
552 if (
_Debug && result>1) {
std::cout <<
"5BxOr=" << result <<
" Bitword= "<< bitword <<std::endl;
555 bool bitOn=bitword & (1 <<
i);
563 for (
unsigned int iBit = 0; iBit < m_gtTechDecisionWord5Bx[2].size(); ++iBit) {
568 for (
unsigned int jbx=0; jbx<m_gtTechDecisionWord5Bx.size(); ++jbx) {
570 result += m_gtTechDecisionWord5Bx[jbx][iBit];
571 if (m_gtTechDecisionWord5Bx[jbx][iBit]>0) bitword |= 1 << jbx;
573 if (
_Debug && result>1) {
std::cout <<
"5BxOr=" << result <<
" Bitword= "<< bitword << std::endl;
576 bool bitOn=bitword & (1 <<
i);
588 if (
_Debug)
std::cout <<
"%HLTInfo -- No L1 GT ReadoutRecord " << std::endl;
596 L1GctHFBitCountsCollection::const_iterator bitCountItr;
597 for (bitCountItr=gctBitCounts->begin(); bitCountItr!=gctBitCounts->end(); ++bitCountItr) {
598 if (bitCountItr->bx()==0){
606 if (
_Debug)
std::cout <<
"%HLTInfo -- No L1 Gct HF BitCounts" << std::endl;
610 L1GctHFRingEtSumsCollection::const_iterator ringSumsItr;
611 for (ringSumsItr=gctRingSums->begin(); ringSumsItr!=gctRingSums->end(); ++ringSumsItr) {
612 if (ringSumsItr->bx()==0){
620 if (
_Debug)
std::cout <<
"%HLTInfo -- No L1 Gct HF RingSums" << std::endl;
T getParameter(std::string const &) const
int l1hfTowerCountNegativeEtaRing2
ParameterSet const & getParameterSet(ParameterSetID const &id)
int l1hfRing1EtSumNegativeEta
bool exists(std::string const ¶meterName) const
checks if a parameter exists
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
int l1hfRing2EtSumNegativeEta
ParameterSetID psetID() const
int l1hfTowerCountPositiveEtaRing2
int l1hfTowerCountPositiveEtaRing1
unsigned int prescaleValue(unsigned int set, const std::string &trigger) const
HLT prescale value in specific prescale set for a specific trigger path.
std::vector< bool > DecisionWord
typedefs
int l1hfTowerCountNegativeEtaRing1
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
void retrieveL1EventSetup(const edm::EventSetup &)
retrieve all the relevant L1 trigger event setup records and cache them to improve the speed ...
int l1hfRing2EtSumPositiveEta
unsigned int quality() const
get quality
std::string const & triggerName(unsigned int index) const
T const * product() const
HLTConfigProvider hltConfig_
const int prescaleFactorSetIndex(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const TriggerCategory &trigCategory, int &errorCode) const
int l1hfRing1EtSumPositiveEta
const int prescaleFactor(const edm::Event &iEvent, const edm::InputTag &l1GtRecordInputTag, const edm::InputTag &l1GtReadoutRecordInputTag, const std::string &nameAlgoTechTrig, int &errorCode) const
return prescale factor for a given algorithm or technical trigger