CMS 3D CMS Logo

Public Member Functions | Private Attributes

HLTInfo Class Reference

#include <HLTInfo.h>

List of all members.

Public Member Functions

void analyze (const edm::Handle< edm::TriggerResults > &hltresults, const edm::Handle< l1extra::L1EmParticleCollection > &l1extemi, const edm::Handle< l1extra::L1EmParticleCollection > &l1extemn, const edm::Handle< l1extra::L1MuonParticleCollection > &l1extmu, const edm::Handle< l1extra::L1JetParticleCollection > &l1extjetc, const edm::Handle< l1extra::L1JetParticleCollection > &l1extjetf, const edm::Handle< l1extra::L1JetParticleCollection > &l1exttaujet, const edm::Handle< l1extra::L1EtMissParticleCollection > &l1extmet, const edm::Handle< l1extra::L1EtMissParticleCollection > &l1extmht, const edm::Handle< L1GlobalTriggerReadoutRecord > &l1GTRR, const edm::Handle< L1GctHFBitCountsCollection > &gctBitCounts, const edm::Handle< L1GctHFRingEtSumsCollection > &gctRingSums, edm::EventSetup const &eventSetup, edm::Event const &iEvent, TTree *tree)
void beginRun (const edm::Run &, const edm::EventSetup &)
 HLTInfo ()
void setup (const edm::ParameterSet &pSet, TTree *tree)

Private Attributes

bool _Debug
bool _OR_BXes
TString * algoBitToName
float ethad
float ettot
HLTConfigProvider hltConfig_
int HltEvtCnt
float * hltpeta
float * hltppt
int L1EvtCnt
float * l1extieme
float * l1extiemet
float * l1extiemeta
float * l1extiemphi
float * l1extjtce
float * l1extjtcet
float * l1extjtceta
float * l1extjtcphi
float * l1extjtfe
float * l1extjtfet
float * l1extjtfeta
float * l1extjtfphi
int * l1extmuchg
float * l1extmue
float * l1extmueta
int * l1extmufor
int * l1extmuiso
int * l1extmumip
float * l1extmuphi
float * l1extmupt
int * l1extmuqul
int * l1extmurpc
float * l1extneme
float * l1extnemet
float * l1extnemeta
float * l1extnemphi
float * l1exttaue
float * l1exttauet
float * l1exttaueta
float * l1exttauphi
int * l1flag
int * l1flag5Bx
int l1hfRing1EtSumNegativeEta
int l1hfRing1EtSumPositiveEta
int l1hfRing2EtSumNegativeEta
int l1hfRing2EtSumPositiveEta
int l1hfTowerCountNegativeEtaRing1
int l1hfTowerCountNegativeEtaRing2
int l1hfTowerCountPositiveEtaRing1
int l1hfTowerCountPositiveEtaRing2
int * l1Prescl
int * l1techflag
int * l1techflag5Bx
int * l1techPrescl
L1GtUtils m_l1GtUtils
float met
float metphi
float mht
float mhtphi
int nhltpart
int nl1extiem
int nl1extjetc
int nl1extjetf
int nl1extjt
int nl1extmu
int nl1extnem
int nl1exttau
std::string processName_
TString * techBitToName
int * trigflag
int * trigPrescl
int UnpackBxInEvent

Detailed Description

$Date: November 2006 $Revision:

Author:
P. Bargassa - Rice U.

Definition at line 69 of file HLTInfo.h.


Constructor & Destructor Documentation

HLTInfo::HLTInfo ( )

Definition at line 24 of file HLTInfo.cc.

References _Debug, _OR_BXes, and UnpackBxInEvent.

                 {

  //set parameter defaults 
  _Debug=false;
  _OR_BXes=false;
  UnpackBxInEvent=1;
}

Member Function Documentation

void HLTInfo::analyze ( const edm::Handle< edm::TriggerResults > &  hltresults,
const edm::Handle< l1extra::L1EmParticleCollection > &  l1extemi,
const edm::Handle< l1extra::L1EmParticleCollection > &  l1extemn,
const edm::Handle< l1extra::L1MuonParticleCollection > &  l1extmu,
const edm::Handle< l1extra::L1JetParticleCollection > &  l1extjetc,
const edm::Handle< l1extra::L1JetParticleCollection > &  l1extjetf,
const edm::Handle< l1extra::L1JetParticleCollection > &  l1exttaujet,
const edm::Handle< l1extra::L1EtMissParticleCollection > &  l1extmet,
const edm::Handle< l1extra::L1EtMissParticleCollection > &  l1extmht,
const edm::Handle< L1GlobalTriggerReadoutRecord > &  l1GTRR,
const edm::Handle< L1GctHFBitCountsCollection > &  gctBitCounts,
const edm::Handle< L1GctHFRingEtSumsCollection > &  gctRingSums,
edm::EventSetup const &  eventSetup,
edm::Event const &  iEvent,
TTree *  tree 
)

Analyze the Data

Definition at line 177 of file HLTInfo.cc.

References _Debug, _OR_BXes, accept(), algoBitToName, L1GtUtils::AlgorithmTrigger, gather_cfg::cout, ethad, ettot, edm::ParameterSet::exists(), edm::EventSetup::get(), edm::ParameterSet::getParameter(), edm::getParameterSet(), edm::Event::getProvenance(), L1GtTriggerMenu::gtAlgorithmMap(), L1GtTriggerMenu::gtTechnicalTriggerMap(), hltConfig_, HltEvtCnt, i, edm::HandleBase::id(), edm::HandleBase::isValid(), L1EvtCnt, l1extieme, l1extiemet, l1extiemeta, l1extiemphi, l1extjtce, l1extjtcet, l1extjtceta, l1extjtcphi, l1extjtfe, l1extjtfet, l1extjtfeta, l1extjtfphi, l1extmuchg, l1extmue, l1extmueta, l1extmufor, l1extmuiso, l1extmumip, l1extmuphi, l1extmupt, l1extmuqul, l1extmurpc, l1extneme, l1extnemet, l1extnemeta, l1extnemphi, l1exttaue, l1exttauet, l1exttaueta, l1exttauphi, l1flag, l1flag5Bx, l1hfRing1EtSumNegativeEta, l1hfRing1EtSumPositiveEta, l1hfRing2EtSumNegativeEta, l1hfRing2EtSumPositiveEta, l1hfTowerCountNegativeEtaRing1, l1hfTowerCountNegativeEtaRing2, l1hfTowerCountPositiveEtaRing1, l1hfTowerCountPositiveEtaRing2, l1Prescl, l1techflag, l1techflag5Bx, l1techPrescl, m_l1GtUtils, met, metphi, mht, mhtphi, nl1extiem, nl1extjetc, nl1extjetf, nl1extmu, nl1extnem, nl1exttau, L1GtUtils::prescaleFactor(), L1GtUtils::prescaleFactorSetIndex(), HLTConfigProvider::prescaleValue(), edm::ESHandle< T >::product(), edm::Provenance::psetID(), L1MuGMTCand::quality(), query::result, L1GtUtils::retrieveL1EventSetup(), python::multivaluedict::sort(), techBitToName, trigflag, edm::TriggerNames::triggerName(), edm::Event::triggerNames(), trigPrescl, and UnpackBxInEvent.

Referenced by HLTAnalyzer::analyze(), and HLTBitAnalyzer::analyze().

                                      {

//   std::cout << " Beginning HLTInfo " << std::endl;


  if (hltresults.isValid()) {
    int ntrigs = hltresults->size();
    if (ntrigs==0){std::cout << "%HLTInfo -- No trigger name given in TriggerResults of the input " << std::endl;}

    edm::TriggerNames const& triggerNames = iEvent.triggerNames(*hltresults);

    // 1st event : Book as many branches as trigger paths provided in the input...
    if (HltEvtCnt==0){
      for (int itrig = 0; itrig != ntrigs; ++itrig) {
        TString trigName = triggerNames.triggerName(itrig);
        HltTree->Branch(trigName,trigflag+itrig,trigName+"/I");
        HltTree->Branch(trigName+"_Prescl",trigPrescl+itrig,trigName+"_Prescl/I");
      }
      HltEvtCnt++;
    }
    // ...Fill the corresponding accepts in branch-variables

    //std::cout << "Number of prescale sets: " << hltConfig_.prescaleSize() << std::endl;
    //std::cout << "Number of HLT paths: " << hltConfig_.size() << std::endl;
    //int presclSet = hltConfig_.prescaleSet(iEvent, eventSetup);
    //std::cout<<"\tPrescale set number: "<< presclSet <<std::endl; 

    for (int itrig = 0; itrig != ntrigs; ++itrig){

      std::string trigName=triggerNames.triggerName(itrig);
      bool accept = hltresults->accept(itrig);

      trigPrescl[itrig] = hltConfig_.prescaleValue(iEvent, eventSetup, trigName);


      if (accept){trigflag[itrig] = 1;}
      else {trigflag[itrig] = 0;}

      if (_Debug){
        if (_Debug) std::cout << "%HLTInfo --  Number of HLT Triggers: " << ntrigs << std::endl;
        std::cout << "%HLTInfo --  HLTTrigger(" << itrig << "): " << trigName << " = " << accept << std::endl;
      }
    }
  }
  else { if (_Debug) std::cout << "%HLTInfo -- No Trigger Result" << std::endl;}


  const int maxL1EmIsol = 4;
  for (int i=0; i!=maxL1EmIsol; ++i){
    l1extiemet[i] = -999.;
    l1extieme[i] = -999.;
    l1extiemeta[i] = -999.;
    l1extiemphi[i] = -999.;
  }
  if (L1ExtEmIsol.isValid()) {
    nl1extiem = maxL1EmIsol;
    l1extra::L1EmParticleCollection myl1iems;
    myl1iems = * L1ExtEmIsol;
    std::sort(myl1iems.begin(),myl1iems.end(),EtGreater());
    int il1exem = 0;
    for (l1extra::L1EmParticleCollection::const_iterator emItr = myl1iems.begin(); emItr != myl1iems.end(); ++emItr) {
      l1extiemet[il1exem] = emItr->et();
      l1extieme[il1exem] = emItr->energy();
      l1extiemeta[il1exem] = emItr->eta();
      l1extiemphi[il1exem] = emItr->phi();
      il1exem++;
    }
  }
  else {
    nl1extiem = 0;
    if (_Debug) std::cout << "%HLTInfo -- No Isolated L1 EM object" << std::endl;
  }

  const int maxL1EmNIsol = 4;
  for (int i=0; i!=maxL1EmNIsol; ++i){
    l1extnemet[i] = -999.;
    l1extneme[i] = -999.;
    l1extnemeta[i] = -999.;
    l1extnemphi[i] = -999.;
  }
  if (L1ExtEmNIsol.isValid()) {
    nl1extnem = maxL1EmNIsol;
    l1extra::L1EmParticleCollection myl1nems;
    myl1nems = * L1ExtEmNIsol;
    std::sort(myl1nems.begin(),myl1nems.end(),EtGreater());
    int il1exem = 0;
    for (l1extra::L1EmParticleCollection::const_iterator emItr = myl1nems.begin(); emItr != myl1nems.end(); ++emItr) {
      l1extnemet[il1exem] = emItr->et();
      l1extneme[il1exem] = emItr->energy();
      l1extnemeta[il1exem] = emItr->eta();
      l1extnemphi[il1exem] = emItr->phi();
      il1exem++;
    }
  }
  else {
    nl1extnem = 0;
    if (_Debug) std::cout << "%HLTInfo -- No Non-Isolated L1 EM object" << std::endl;
  }

  const int maxL1Mu = 4;
  for (int i=0; i!=maxL1Mu; ++i){
    l1extmupt[i] = -999.;
    l1extmue[i] = -999.;
    l1extmueta[i] = -999.;
    l1extmuphi[i] = -999.;
    l1extmuiso[i] = -999;
    l1extmumip[i] = -999;
    l1extmufor[i] = -999;
    l1extmurpc[i] = -999;
    l1extmuqul[i] = -999;
    l1extmuchg[i] = -999;
  }
  if (L1ExtMu.isValid()) {
    nl1extmu = maxL1Mu;
    l1extra::L1MuonParticleCollection myl1mus;
    myl1mus = * L1ExtMu;
    std::sort(myl1mus.begin(),myl1mus.end(),PtGreater());
    int il1exmu = 0;
    for (l1extra::L1MuonParticleCollection::const_iterator muItr = myl1mus.begin(); muItr != myl1mus.end(); ++muItr) {
      l1extmupt[il1exmu] = muItr->pt();
      l1extmue[il1exmu] = muItr->energy();
      l1extmueta[il1exmu] = muItr->eta();
      l1extmuphi[il1exmu] = muItr->phi();
      l1extmuiso[il1exmu] = muItr->isIsolated(); // = 1 for Isolated ?
      l1extmumip[il1exmu] = muItr->isMip(); // = 1 for Mip ?
      l1extmufor[il1exmu] = muItr->isForward();
      l1extmurpc[il1exmu] = muItr->isRPC();
      l1extmuchg[il1exmu] = muItr->charge();
      L1MuGMTExtendedCand gmtCand = muItr->gmtMuonCand();
      l1extmuqul[il1exmu] = gmtCand.quality(); // Muon quality as defined in the GT
      il1exmu++;
    }
  }
  else {
    nl1extmu = 0;
    if (_Debug) std::cout << "%HLTInfo -- No L1 MU object" << std::endl;
  }

  const int maxL1CenJet = 4;
  for (int i=0; i!=maxL1CenJet; ++i){
    l1extjtcet[i] = -999.;
    l1extjtce[i] = -999.;
    l1extjtceta[i] = -999.;
    l1extjtcphi[i] = -999.;
  }
  if (L1ExtJetC.isValid()) {
    nl1extjetc = maxL1CenJet;
    l1extra::L1JetParticleCollection myl1jetsc;
    myl1jetsc = * L1ExtJetC;
    std::sort(myl1jetsc.begin(),myl1jetsc.end(),EtGreater());
    int il1exjt = 0;
    for (l1extra::L1JetParticleCollection::const_iterator jtItr = myl1jetsc.begin(); jtItr != myl1jetsc.end(); ++jtItr) {
      l1extjtcet[il1exjt] = jtItr->et();
      l1extjtce[il1exjt] = jtItr->energy();
      l1extjtceta[il1exjt] = jtItr->eta();
      l1extjtcphi[il1exjt] = jtItr->phi();
      il1exjt++;
    }
  }
  else {
    nl1extjetc = 0;
    if (_Debug) std::cout << "%HLTInfo -- No L1 Central JET object" << std::endl;
  }

  const int maxL1ForJet = 4;
  for (int i=0; i!=maxL1ForJet; ++i){
    l1extjtfet[i] = -999.;
    l1extjtfe[i] = -999.;
    l1extjtfeta[i] = -999.;
    l1extjtfphi[i] = -999.;
  }
  if (L1ExtJetF.isValid()) {
    nl1extjetf = maxL1ForJet;
    l1extra::L1JetParticleCollection myl1jetsf;
    myl1jetsf = * L1ExtJetF;
    std::sort(myl1jetsf.begin(),myl1jetsf.end(),EtGreater());
    int il1exjt = 0;
    for (l1extra::L1JetParticleCollection::const_iterator jtItr = myl1jetsf.begin(); jtItr != myl1jetsf.end(); ++jtItr) {
      l1extjtfet[il1exjt] = jtItr->et();
      l1extjtfe[il1exjt] = jtItr->energy();
      l1extjtfeta[il1exjt] = jtItr->eta();
      l1extjtfphi[il1exjt] = jtItr->phi();
      il1exjt++;
    }
  }
  else {
    nl1extjetf = 0;
    if (_Debug) std::cout << "%HLTInfo -- No L1 Forward JET object" << std::endl;
  }

  const int maxL1TauJet = 4;
  for (int i=0; i!=maxL1TauJet; ++i){
    l1exttauet[i] = -999.;
    l1exttaue[i] = -999.;
    l1exttaueta[i] = -999.;
    l1exttauphi[i] = -999.;
  }
  if (L1ExtTau.isValid()) {
    nl1exttau = maxL1TauJet;
    l1extra::L1JetParticleCollection myl1taus;
    myl1taus = * L1ExtTau;
    std::sort(myl1taus.begin(),myl1taus.end(),EtGreater());
    int il1extau = 0;
    for (l1extra::L1JetParticleCollection::const_iterator tauItr = myl1taus.begin(); tauItr != myl1taus.end(); ++tauItr) {
      l1exttauet[il1extau] = tauItr->et();
      l1exttaue[il1extau] = tauItr->energy();
      l1exttaueta[il1extau] = tauItr->eta();
      l1exttauphi[il1extau] = tauItr->phi();
      il1extau++;
    }
  }
  else {
    nl1exttau = 0;
    if (_Debug) std::cout << "%HLTInfo -- No L1 TAU object" << std::endl;
  }

  if (L1ExtMet.isValid()) {
    met    = L1ExtMet->begin()->etMiss();
    metphi = L1ExtMet->begin()->phi();
    ettot  = L1ExtMet->begin()->etTotal();
  }
  else {
    if (_Debug) std::cout << "%HLTInfo -- No L1 MET object" << std::endl;
  }

  if (L1ExtMht.isValid()) {
    mht    = L1ExtMht->begin()->etMiss();
    mhtphi = L1ExtMht->begin()->phi();
    ethad  = L1ExtMht->begin()->etTotal();
  }
  else {
    if (_Debug) std::cout << "%HLTInfo -- No L1 MHT object" << std::endl;
  }

  //==============L1 information=======================================

  // L1 Triggers from Menu

  m_l1GtUtils.retrieveL1EventSetup(eventSetup);
  edm::ESHandle<L1GtTriggerMenu> menuRcd;
  eventSetup.get<L1GtTriggerMenuRcd>().get(menuRcd) ;
  const L1GtTriggerMenu* menu = menuRcd.product();

  int iErrorCode = -1;
  L1GtUtils::TriggerCategory trigCategory = L1GtUtils::AlgorithmTrigger;
  const int pfSetIndexAlgorithmTrigger = m_l1GtUtils.prescaleFactorSetIndex(
             iEvent, trigCategory, iErrorCode);
  if (iErrorCode == 0) {
    if (_Debug) std::cout << "%Prescale set index: " << pfSetIndexAlgorithmTrigger  << std::endl;
  }else{
    std::cout << "%Could not extract Prescale set index from event record. Error code: " << iErrorCode << std::endl;
  }

  // 1st event : Book as many branches as trigger paths provided in the input...
  if (L1GTRR.isValid()) {  

    DecisionWord gtDecisionWord = L1GTRR->decisionWord();
    const unsigned int numberTriggerBits(gtDecisionWord.size());
    const TechnicalTriggerWord&  technicalTriggerWordBeforeMask = L1GTRR->technicalTriggerWord();
    const unsigned int numberTechnicalTriggerBits(technicalTriggerWordBeforeMask.size());

    // 1st event : Book as many branches as trigger paths provided in the input...
    if (L1EvtCnt==0){

 
      //ccla determine if more than 1 bx was unpacked in event; add OR all bx's if so
      const edm::Provenance& prov = iEvent.getProvenance(L1GTRR.id());
      //const string& procName = prov.processName();
      edm::ParameterSetID setId = prov.psetID();
      //std::cout << "procName:" << procName << std::endl;
      //std::cout << "provinfo:" << prov << std::endl;
      //std::cout << "setid:" << setId << std::endl;
      edm::ParameterSet pSet=getParameterSet(setId);
      //std::cout << "pset:" << pSet << std::endl;
      if (pSet.exists("UnpackBxInEvent")){
        UnpackBxInEvent = pSet.getParameter<int>("UnpackBxInEvent");
      }
      if (_Debug) std::cout << "Number of beam crossings unpacked by GT: " << UnpackBxInEvent << std::endl;
      if (UnpackBxInEvent == 5) _OR_BXes = true;

      // get L1 menu from event setup
      for (CItAlgo algo = menu->gtAlgorithmMap().begin(); algo!=menu->gtAlgorithmMap().end(); ++algo) {
        if (_Debug) std::cout << "Name: " << (algo->second).algoName() << " Alias: " << (algo->second).algoAlias() << std::endl;
        int itrig = (algo->second).algoBitNumber();
        algoBitToName[itrig] = TString( (algo->second).algoName() );
        HltTree->Branch(algoBitToName[itrig],l1flag+itrig,algoBitToName[itrig]+"/I");
        HltTree->Branch(algoBitToName[itrig]+"_Prescl",l1Prescl+itrig,algoBitToName[itrig]+"_Prescl/I");
        if (_OR_BXes)
          HltTree->Branch(algoBitToName[itrig]+"_5bx",l1flag5Bx+itrig,algoBitToName[itrig]+"_5bx/I");
      }

      // Book branches for tech bits
      for (CItAlgo techTrig = menu->gtTechnicalTriggerMap().begin(); techTrig != menu->gtTechnicalTriggerMap().end(); ++techTrig) {
        int itrig = (techTrig->second).algoBitNumber();
        techBitToName[itrig] = TString( (techTrig->second).algoName() );
        if (_Debug) std::cout << "tech bit " << itrig << ": " << techBitToName[itrig] << " " << std::endl;
        HltTree->Branch(techBitToName[itrig],l1techflag+itrig,techBitToName[itrig]+"/I");
        HltTree->Branch(techBitToName[itrig]+"_Prescl",l1techPrescl+itrig,techBitToName[itrig]+"_Prescl/I");
        if (_OR_BXes)
          HltTree->Branch(techBitToName[itrig]+"_5bx",l1techflag5Bx+itrig,techBitToName[itrig]+"_5bx/I");
      }
    }

    std::string triggerAlgTechTrig = "PhysicsAlgorithms";
    for (unsigned int iBit = 0; iBit < numberTriggerBits; ++iBit) {     
      // ...Fill the corresponding accepts in branch-variables
      l1flag[iBit] = gtDecisionWord[iBit];

      std::string l1triggername= std::string (algoBitToName[iBit]);
      l1Prescl[iBit] = m_l1GtUtils.prescaleFactor(iEvent, 
                                               l1triggername,
                                               iErrorCode);
      
      if (_Debug) std::cout << "L1 TD: "<<iBit<<" "<<algoBitToName[iBit]<<" "
                            << gtDecisionWord[iBit]<<" "
                            << l1Prescl[iBit] << std::endl;

    }

    triggerAlgTechTrig = "TechnicalTriggers";
    for (unsigned int iBit = 0; iBit < numberTechnicalTriggerBits; ++iBit) {
      l1techflag[iBit] = (int) technicalTriggerWordBeforeMask.at(iBit);

      std::string l1triggername= std::string (techBitToName[iBit]);
      l1techPrescl[iBit] = m_l1GtUtils.prescaleFactor(iEvent, 
                                               l1triggername,
                                               iErrorCode);

      if (_Debug) std::cout << "L1 TD: "<<iBit<<" "<<techBitToName[iBit]<<" "
                            << l1techflag[iBit]<<" "
                            << l1Prescl[iBit] << std::endl;

    }

    if (_OR_BXes){
      // look at all 5 bx window in case gt timing is off
      // get Field Decision Logic
      std::vector<DecisionWord> m_gtDecisionWord5Bx;
      std::vector<TechnicalTriggerWord> m_gtTechDecisionWord5Bx;
      std::vector<int> m_ibxn;

      const std::vector<L1GtFdlWord> &m_gtFdlWord(L1GTRR->gtFdlVector());
      for (std::vector<L1GtFdlWord>::const_iterator itBx = m_gtFdlWord.begin();
           itBx != m_gtFdlWord.end(); ++itBx) {
        if (_Debug && L1EvtCnt==0) std::cout << "bx: " << (*itBx).bxInEvent() << " ";
        m_gtDecisionWord5Bx.push_back((*itBx).gtDecisionWord());
        m_gtTechDecisionWord5Bx.push_back((*itBx).gtTechnicalTriggerWord());
      }
      // --- Fill algo bits ---
      for (unsigned int iBit = 0; iBit < numberTriggerBits; ++iBit) {     
        // ...Fill the corresponding accepts in branch-variables
        if (_Debug) std::cout << std::endl << " L1 TD: "<<iBit<<" "<<algoBitToName[iBit]<<" ";
        int result=0;
        int bitword=0; 
        for (unsigned int jbx=0; jbx<m_gtDecisionWord5Bx.size(); ++jbx) {
          if (_Debug) std::cout << m_gtDecisionWord5Bx[jbx][iBit]<< " ";
          result += m_gtDecisionWord5Bx[jbx][iBit];
          if (m_gtDecisionWord5Bx[jbx][iBit]>0) bitword |= 1 << jbx;
        }
        if (_Debug && result>1) {std::cout << "5BxOr=" << result << "  Bitword= "<< bitword <<std::endl;
          std::cout << "Unpacking: " ;
          for (int i = 0; i<UnpackBxInEvent ; ++i){
            bool bitOn=bitword & (1 << i);
            std::cout << bitOn << " ";
          }
          std::cout << "\n";
        }
        l1flag5Bx[iBit] = bitword;
      }
      // --- Fill tech bits ---
      for (unsigned int iBit = 0; iBit < m_gtTechDecisionWord5Bx[2].size(); ++iBit) {     
        // ...Fill the corresponding accepts in branch-variables
        if (_Debug) std::cout << std::endl << " L1 TD: "<<iBit<<" "<<techBitToName[iBit]<<" ";
        int result=0;
        int bitword=0;       
        for (unsigned int jbx=0; jbx<m_gtTechDecisionWord5Bx.size(); ++jbx) {
          if (_Debug) std::cout << m_gtTechDecisionWord5Bx[jbx][iBit]<< " ";
          result += m_gtTechDecisionWord5Bx[jbx][iBit];
          if (m_gtTechDecisionWord5Bx[jbx][iBit]>0) bitword |= 1 << jbx;
        }
        if (_Debug && result>1) {std::cout << "5BxOr=" << result << "  Bitword= "<< bitword  << std::endl;
          std::cout << "Unpacking: " ;
          for (int i = 0; i<UnpackBxInEvent ; ++i){
            bool bitOn=bitword & (1 << i);
            std::cout << bitOn << " ";
          }
          std::cout << "\n";
        }
        l1techflag5Bx[iBit] = bitword;
      }
    } // end of OR_BX

    L1EvtCnt++;
  }
  else {
    if (_Debug) std::cout << "%HLTInfo -- No L1 GT ReadoutRecord " << std::endl;
  }

  //
  // LSB for feature bits = 0.125 GeV.
  // The default LSB for the ring sums is 0.5 GeV.
  
  if (gctBitCounts.isValid()) {
    L1GctHFBitCountsCollection::const_iterator bitCountItr;
    for (bitCountItr=gctBitCounts->begin(); bitCountItr!=gctBitCounts->end(); ++bitCountItr) { 
      if (bitCountItr->bx()==0){ // select in-time beam crossing
        l1hfTowerCountPositiveEtaRing1=bitCountItr->bitCount(0);
        l1hfTowerCountNegativeEtaRing1=bitCountItr->bitCount(1);
        l1hfTowerCountPositiveEtaRing2=bitCountItr->bitCount(2);
        l1hfTowerCountNegativeEtaRing2=bitCountItr->bitCount(3);
      }
    }
  } else {
    if (_Debug) std::cout << "%HLTInfo -- No L1 Gct HF BitCounts" << std::endl;
  }

  if (gctRingSums.isValid()) {
    L1GctHFRingEtSumsCollection::const_iterator ringSumsItr;
    for (ringSumsItr=gctRingSums->begin(); ringSumsItr!=gctRingSums->end(); ++ringSumsItr) { 
      if (ringSumsItr->bx()==0){ // select in-time beam crossing
        l1hfRing1EtSumPositiveEta=ringSumsItr->etSum(0);
        l1hfRing1EtSumNegativeEta=ringSumsItr->etSum(1);
        l1hfRing2EtSumPositiveEta=ringSumsItr->etSum(2);
        l1hfRing2EtSumNegativeEta=ringSumsItr->etSum(3);
      }
    }
  } else {
    if (_Debug) std::cout << "%HLTInfo -- No L1 Gct HF RingSums" << std::endl;
  }

  if (_Debug) std::cout << "%HLTInfo -- Done with routine" << std::endl;
}
void HLTInfo::beginRun ( const edm::Run run,
const edm::EventSetup c 
)

Definition at line 32 of file HLTInfo.cc.

References gather_cfg::cout, hltConfig_, HLTConfigProvider::init(), and processName_.

Referenced by HLTAnalyzer::beginRun().

                                                               { 


  bool changed(true);
  if (hltConfig_.init(run,c,processName_,changed)) {
    // if init returns TRUE, initialisation has succeeded!
    if (changed) {
      // The HLT config has actually changed wrt the previous Run, hence rebook your
      // histograms or do anything else dependent on the revised HLT config
      std::cout << "Initalizing HLTConfigProvider"  << std::endl;
    }
  } else {
    // if init returns FALSE, initialisation has NOT succeeded, which indicates a problem
    // with the file and/or code and needs to be investigated!
    std::cout << " HLT config extraction failure with process name " << processName_ << std::endl;
    // In this case, all access methods will return empty values!
  }

}
void HLTInfo::setup ( const edm::ParameterSet pSet,
TTree *  tree 
)

Definition at line 53 of file HLTInfo.cc.

References _Debug, algoBitToName, ethad, ettot, edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterNames(), HltEvtCnt, hltpeta, hltppt, L1EvtCnt, l1extieme, l1extiemet, l1extiemeta, l1extiemphi, l1extjtce, l1extjtcet, l1extjtceta, l1extjtcphi, l1extjtfe, l1extjtfet, l1extjtfeta, l1extjtfphi, l1extmuchg, l1extmue, l1extmueta, l1extmufor, l1extmuiso, l1extmumip, l1extmuphi, l1extmupt, l1extmuqul, l1extmurpc, l1extneme, l1extnemet, l1extnemeta, l1extnemphi, l1exttaue, l1exttauet, l1exttaueta, l1exttauphi, l1flag, l1flag5Bx, l1hfRing1EtSumNegativeEta, l1hfRing1EtSumPositiveEta, l1hfRing2EtSumNegativeEta, l1hfRing2EtSumPositiveEta, l1hfTowerCountNegativeEtaRing1, l1hfTowerCountNegativeEtaRing2, l1hfTowerCountPositiveEtaRing1, l1hfTowerCountPositiveEtaRing2, l1Prescl, l1techflag, l1techflag5Bx, l1techPrescl, met, metphi, mht, mhtphi, nl1extiem, nl1extjetc, nl1extjetf, nl1extmu, nl1extnem, nl1exttau, processName_, techBitToName, trigflag, and trigPrescl.

Referenced by HLTAnalyzer::HLTAnalyzer(), and HLTBitAnalyzer::HLTBitAnalyzer().

                                                               {


  processName_ = pSet.getParameter<std::string>("HLTProcessName") ;

  edm::ParameterSet myHltParams = pSet.getParameter<edm::ParameterSet>("RunParameters") ;
  std::vector<std::string> parameterNames = myHltParams.getParameterNames() ;
  
  for ( std::vector<std::string>::iterator iParam = parameterNames.begin();
        iParam != parameterNames.end(); iParam++ ){
    if ( (*iParam) == "Debug" ) _Debug =  myHltParams.getParameter<bool>( *iParam );
  }

  HltEvtCnt = 0;
  const int kMaxTrigFlag = 10000;
  trigflag = new int[kMaxTrigFlag];
  trigPrescl = new int[kMaxTrigFlag];
  L1EvtCnt = 0;
  const int kMaxL1Flag = 10000;
  l1flag = new int[kMaxL1Flag];
  l1flag5Bx = new int[kMaxTrigFlag];
  l1Prescl = new int[kMaxL1Flag];
  l1techflag = new int[kMaxL1Flag];
  l1techflag5Bx = new int[kMaxTrigFlag];
  l1techPrescl = new int[kMaxTrigFlag];
  const int kMaxHLTPart = 10000;
  hltppt = new float[kMaxHLTPart];
  hltpeta = new float[kMaxHLTPart];
  const int kMaxL1ExtEmI = 10000;
  l1extiemet = new float[kMaxL1ExtEmI];
  l1extieme = new float[kMaxL1ExtEmI];
  l1extiemeta = new float[kMaxL1ExtEmI];
  l1extiemphi = new float[kMaxL1ExtEmI];
  const int kMaxL1ExtEmN = 10000;
  l1extnemet = new float[kMaxL1ExtEmN];
  l1extneme = new float[kMaxL1ExtEmN];
  l1extnemeta = new float[kMaxL1ExtEmN];
  l1extnemphi = new float[kMaxL1ExtEmN];
  const int kMaxL1ExtMu = 10000;
  l1extmupt = new float[kMaxL1ExtMu];
  l1extmue = new float[kMaxL1ExtMu];
  l1extmueta = new float[kMaxL1ExtMu];
  l1extmuphi = new float[kMaxL1ExtMu];
  l1extmuiso = new int[kMaxL1ExtMu];
  l1extmumip = new int[kMaxL1ExtMu];
  l1extmufor = new int[kMaxL1ExtMu];
  l1extmurpc = new int[kMaxL1ExtMu];
  l1extmuqul = new int[kMaxL1ExtMu];
  l1extmuchg = new int[kMaxL1ExtMu];
  const int kMaxL1ExtJtC = 10000;
  l1extjtcet = new float[kMaxL1ExtJtC];
  l1extjtce = new float[kMaxL1ExtJtC];
  l1extjtceta = new float[kMaxL1ExtJtC];
  l1extjtcphi = new float[kMaxL1ExtJtC];
  const int kMaxL1ExtJtF = 10000;
  l1extjtfet = new float[kMaxL1ExtJtF];
  l1extjtfe = new float[kMaxL1ExtJtF];
  l1extjtfeta = new float[kMaxL1ExtJtF];
  l1extjtfphi = new float[kMaxL1ExtJtF];
  const int kMaxL1ExtTau = 10000;
  l1exttauet = new float[kMaxL1ExtTau];
  l1exttaue = new float[kMaxL1ExtTau];
  l1exttaueta = new float[kMaxL1ExtTau];
  l1exttauphi = new float[kMaxL1ExtTau];

  algoBitToName = new TString[128];
  techBitToName = new TString[128];

  HltTree->Branch("NL1IsolEm",&nl1extiem,"NL1IsolEm/I");
  HltTree->Branch("L1IsolEmEt",l1extiemet,"L1IsolEmEt[NL1IsolEm]/F");
  HltTree->Branch("L1IsolEmE",l1extieme,"L1IsolEmE[NL1IsolEm]/F");
  HltTree->Branch("L1IsolEmEta",l1extiemeta,"L1IsolEmEta[NL1IsolEm]/F");
  HltTree->Branch("L1IsolEmPhi",l1extiemphi,"L1IsolEmPhi[NL1IsolEm]/F");
  HltTree->Branch("NL1NIsolEm",&nl1extnem,"NL1NIsolEm/I");
  HltTree->Branch("L1NIsolEmEt",l1extnemet,"L1NIsolEmEt[NL1NIsolEm]/F");
  HltTree->Branch("L1NIsolEmE",l1extneme,"L1NIsolEmE[NL1NIsolEm]/F");
  HltTree->Branch("L1NIsolEmEta",l1extnemeta,"L1NIsolEmEta[NL1NIsolEm]/F");
  HltTree->Branch("L1NIsolEmPhi",l1extnemphi,"L1NIsolEmPhi[NL1NIsolEm]/F");
  HltTree->Branch("NL1Mu",&nl1extmu,"NL1Mu/I");
  HltTree->Branch("L1MuPt",l1extmupt,"L1MuPt[NL1Mu]/F");
  HltTree->Branch("L1MuE",l1extmue,"L1MuE[NL1Mu]/F");
  HltTree->Branch("L1MuEta",l1extmueta,"L1MuEta[NL1Mu]/F");
  HltTree->Branch("L1MuPhi",l1extmuphi,"L1MuPhi[NL1Mu]/F");
  HltTree->Branch("L1MuIsol",l1extmuiso,"L1MuIsol[NL1Mu]/I");
  HltTree->Branch("L1MuMip",l1extmumip,"L1MuMip[NL1Mu]/I");
  HltTree->Branch("L1MuFor",l1extmufor,"L1MuFor[NL1Mu]/I");
  HltTree->Branch("L1MuRPC",l1extmurpc,"L1MuRPC[NL1Mu]/I");
  HltTree->Branch("L1MuQal",l1extmuqul,"L1MuQal[NL1Mu]/I");
  HltTree->Branch("L1MuChg",l1extmuchg,"L1MuChg[NL1Mu]/I");
  HltTree->Branch("NL1CenJet",&nl1extjetc,"NL1CenJet/I");
  HltTree->Branch("L1CenJetEt",l1extjtcet,"L1CenJetEt[NL1CenJet]/F");
  HltTree->Branch("L1CenJetE",l1extjtce,"L1CenJetE[NL1CenJet]/F");
  HltTree->Branch("L1CenJetEta",l1extjtceta,"L1CenJetEta[NL1CenJet]/F");
  HltTree->Branch("L1CenJetPhi",l1extjtcphi,"L1CenJetPhi[NL1CenJet]/F");
  HltTree->Branch("NL1ForJet",&nl1extjetf,"NL1ForJet/I");
  HltTree->Branch("L1ForJetEt",l1extjtfet,"L1ForJetEt[NL1ForJet]/F");
  HltTree->Branch("L1ForJetE",l1extjtfe,"L1ForJetE[NL1ForJet]/F");
  HltTree->Branch("L1ForJetEta",l1extjtfeta,"L1ForJetEta[NL1ForJet]/F");
  HltTree->Branch("L1ForJetPhi",l1extjtfphi,"L1ForJetPhi[NL1ForJet]/F");
  HltTree->Branch("NL1Tau",&nl1exttau,"NL1Tau/I");
  HltTree->Branch("L1TauEt",l1exttauet,"L1TauEt[NL1Tau]/F");
  HltTree->Branch("L1TauE",l1exttaue,"L1TauE[NL1Tau]/F");
  HltTree->Branch("L1TauEta",l1exttaueta,"L1TauEta[NL1Tau]/F");
  HltTree->Branch("L1TauPhi",l1exttauphi,"L1TauPhi[NL1Tau]/F");
  HltTree->Branch("L1Met",&met,"L1Met/F");
  HltTree->Branch("L1MetPhi",&metphi,"L1MetPhi/F");
  HltTree->Branch("L1EtTot",&ettot,"L1EtTot/F");
  HltTree->Branch("L1Mht",&mht,"L1Mht/F");
  HltTree->Branch("L1MhtPhi",&mhtphi,"L1MhtPhi/F");
  HltTree->Branch("L1EtHad",&ethad,"L1EtHad/F");

  // L1GctJetCounts
  HltTree->Branch("L1HfRing1EtSumPositiveEta",&l1hfRing1EtSumPositiveEta,"L1HfRing1EtSumPositiveEta/I");
  HltTree->Branch("L1HfRing2EtSumPositiveEta",&l1hfRing2EtSumPositiveEta,"L1HfRing2EtSumPositiveEta/I");
  HltTree->Branch("L1HfRing1EtSumNegativeEta",&l1hfRing1EtSumNegativeEta,"L1HfRing1EtSumNegativeEta/I");
  HltTree->Branch("L1HfRing2EtSumNegativeEta",&l1hfRing2EtSumNegativeEta,"L1HfRing2EtSumNegativeEta/I");
  HltTree->Branch("L1HfTowerCountPositiveEtaRing1",&l1hfTowerCountPositiveEtaRing1,"L1HfTowerCountPositiveEtaRing1/I");
  HltTree->Branch("L1HfTowerCountNegativeEtaRing1",&l1hfTowerCountNegativeEtaRing1,"L1HfTowerCountNegativeEtaRing1/I");
  HltTree->Branch("L1HfTowerCountPositiveEtaRing2",&l1hfTowerCountPositiveEtaRing2,"L1HfTowerCountPositiveEtaRing2/I");
  HltTree->Branch("L1HfTowerCountNegativeEtaRing2",&l1hfTowerCountNegativeEtaRing2,"L1HfTowerCountNegativeEtaRing2/I");

}

Member Data Documentation

bool HLTInfo::_Debug [private]

Definition at line 127 of file HLTInfo.h.

Referenced by analyze(), HLTInfo(), and setup().

bool HLTInfo::_OR_BXes [private]

Definition at line 123 of file HLTInfo.h.

Referenced by analyze(), and HLTInfo().

TString* HLTInfo::algoBitToName [private]

Definition at line 115 of file HLTInfo.h.

Referenced by analyze(), and setup().

float HLTInfo::ethad [private]

Definition at line 106 of file HLTInfo.h.

Referenced by analyze(), and setup().

float HLTInfo::ettot [private]

Definition at line 105 of file HLTInfo.h.

Referenced by analyze(), and setup().

Definition at line 119 of file HLTInfo.h.

Referenced by analyze(), and beginRun().

int HLTInfo::HltEvtCnt [private]

Definition at line 107 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::hltpeta [private]

Definition at line 97 of file HLTInfo.h.

Referenced by setup().

float* HLTInfo::hltppt [private]

Definition at line 97 of file HLTInfo.h.

Referenced by setup().

int HLTInfo::L1EvtCnt [private]

Definition at line 107 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extieme [private]

Definition at line 98 of file HLTInfo.h.

Referenced by analyze(), and setup().

float* HLTInfo::l1extiemet [private]

Definition at line 98 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extiemeta [private]

Definition at line 98 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extiemphi [private]

Definition at line 98 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extjtce [private]

Definition at line 102 of file HLTInfo.h.

Referenced by analyze(), and setup().

float* HLTInfo::l1extjtcet [private]

Definition at line 102 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extjtceta [private]

Definition at line 102 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extjtcphi [private]

Definition at line 102 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extjtfe [private]

Definition at line 103 of file HLTInfo.h.

Referenced by analyze(), and setup().

float* HLTInfo::l1extjtfet [private]

Definition at line 103 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extjtfeta [private]

Definition at line 103 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extjtfphi [private]

Definition at line 103 of file HLTInfo.h.

Referenced by analyze(), and setup().

int* HLTInfo::l1extmuchg [private]

Definition at line 101 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extmue [private]

Definition at line 100 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extmueta [private]

Definition at line 100 of file HLTInfo.h.

Referenced by analyze(), and setup().

int * HLTInfo::l1extmufor [private]

Definition at line 108 of file HLTInfo.h.

Referenced by analyze(), and setup().

int * HLTInfo::l1extmuiso [private]

Definition at line 108 of file HLTInfo.h.

Referenced by analyze(), and setup().

int * HLTInfo::l1extmumip [private]

Definition at line 108 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extmuphi [private]

Definition at line 100 of file HLTInfo.h.

Referenced by analyze(), and setup().

float* HLTInfo::l1extmupt [private]

Definition at line 100 of file HLTInfo.h.

Referenced by analyze(), and setup().

int * HLTInfo::l1extmuqul [private]

Definition at line 108 of file HLTInfo.h.

Referenced by analyze(), and setup().

int * HLTInfo::l1extmurpc [private]

Definition at line 108 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extneme [private]

Definition at line 99 of file HLTInfo.h.

Referenced by analyze(), and setup().

float* HLTInfo::l1extnemet [private]

Definition at line 99 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extnemeta [private]

Definition at line 99 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1extnemphi [private]

Definition at line 99 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1exttaue [private]

Definition at line 104 of file HLTInfo.h.

Referenced by analyze(), and setup().

float* HLTInfo::l1exttauet [private]

Definition at line 104 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1exttaueta [private]

Definition at line 104 of file HLTInfo.h.

Referenced by analyze(), and setup().

float * HLTInfo::l1exttauphi [private]

Definition at line 104 of file HLTInfo.h.

Referenced by analyze(), and setup().

int * HLTInfo::l1flag [private]

Definition at line 108 of file HLTInfo.h.

Referenced by analyze(), and setup().

int * HLTInfo::l1flag5Bx [private]

Definition at line 108 of file HLTInfo.h.

Referenced by analyze(), and setup().

Definition at line 110 of file HLTInfo.h.

Referenced by analyze(), and setup().

Definition at line 111 of file HLTInfo.h.

Referenced by analyze(), and setup().

Definition at line 110 of file HLTInfo.h.

Referenced by analyze(), and setup().

Definition at line 111 of file HLTInfo.h.

Referenced by analyze(), and setup().

Definition at line 112 of file HLTInfo.h.

Referenced by analyze(), and setup().

Definition at line 113 of file HLTInfo.h.

Referenced by analyze(), and setup().

Definition at line 112 of file HLTInfo.h.

Referenced by analyze(), and setup().

Definition at line 113 of file HLTInfo.h.

Referenced by analyze(), and setup().

int * HLTInfo::l1Prescl [private]

Definition at line 109 of file HLTInfo.h.

Referenced by analyze(), and setup().

int * HLTInfo::l1techflag [private]

Definition at line 108 of file HLTInfo.h.

Referenced by analyze(), and setup().

int * HLTInfo::l1techflag5Bx [private]

Definition at line 108 of file HLTInfo.h.

Referenced by analyze(), and setup().

int * HLTInfo::l1techPrescl [private]

Definition at line 109 of file HLTInfo.h.

Referenced by analyze(), and setup().

Definition at line 120 of file HLTInfo.h.

Referenced by analyze().

float HLTInfo::met [private]

Definition at line 105 of file HLTInfo.h.

Referenced by analyze(), and setup().

float HLTInfo::metphi [private]

Definition at line 105 of file HLTInfo.h.

Referenced by analyze(), and setup().

float HLTInfo::mht [private]

Definition at line 106 of file HLTInfo.h.

Referenced by analyze(), and setup().

float HLTInfo::mhtphi [private]

Definition at line 106 of file HLTInfo.h.

Referenced by analyze(), and setup().

int HLTInfo::nhltpart [private]

Definition at line 107 of file HLTInfo.h.

int HLTInfo::nl1extiem [private]

Definition at line 107 of file HLTInfo.h.

Referenced by analyze(), and setup().

int HLTInfo::nl1extjetc [private]

Definition at line 107 of file HLTInfo.h.

Referenced by analyze(), and setup().

int HLTInfo::nl1extjetf [private]

Definition at line 107 of file HLTInfo.h.

Referenced by analyze(), and setup().

int HLTInfo::nl1extjt [private]

Definition at line 107 of file HLTInfo.h.

int HLTInfo::nl1extmu [private]

Definition at line 107 of file HLTInfo.h.

Referenced by analyze(), and setup().

int HLTInfo::nl1extnem [private]

Definition at line 107 of file HLTInfo.h.

Referenced by analyze(), and setup().

int HLTInfo::nl1exttau [private]

Definition at line 107 of file HLTInfo.h.

Referenced by analyze(), and setup().

std::string HLTInfo::processName_ [private]

Definition at line 121 of file HLTInfo.h.

Referenced by beginRun(), and setup().

TString* HLTInfo::techBitToName [private]

Definition at line 116 of file HLTInfo.h.

Referenced by analyze(), and setup().

int* HLTInfo::trigflag [private]

Definition at line 108 of file HLTInfo.h.

Referenced by analyze(), and setup().

int* HLTInfo::trigPrescl [private]

Definition at line 109 of file HLTInfo.h.

Referenced by analyze(), and setup().

int HLTInfo::UnpackBxInEvent [private]

Definition at line 124 of file HLTInfo.h.

Referenced by analyze(), and HLTInfo().