CMS 3D CMS Logo

Public Member Functions | Private Attributes

HLTJetTag Class Reference

#include <HLTJetTag.h>

Inheritance diagram for HLTJetTag:
HLTFilter edm::EDFilter edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

virtual bool filter (edm::Event &event, const edm::EventSetup &setup)
 HLTJetTag (const edm::ParameterSet &config)
 ~HLTJetTag ()

Private Attributes

edm::InputTag m_jetTag
std::string m_label
double m_maxTag
int m_minJets
double m_minTag
bool m_saveTag

Detailed Description

This class is an HLTFilter (a spcialized EDFilter) implementing tagged multi-jet trigger for b and tau. It should be run after the normal multi-jet trigger.

Date:
2008/04/23 11:57:53
Revision:
1.9
Author:
Arnaud Gay, Ian Tomalin Andrea Bocci

This class is an HLTFilter (a spcialized EDFilter) implementing tagged multi-jet trigger for b and tau. It should be run after the normal multi-jet trigger.

Date:
2010/02/11 00:12:20
Revision:
1.3
Author:
Arnaud Gay, Ian Tomalin Andrea Bocci

Definition at line 28 of file HLTJetTag.h.


Constructor & Destructor Documentation

HLTJetTag::HLTJetTag ( const edm::ParameterSet config) [explicit]

Definition at line 29 of file HLTJetTag.cc.

References edm::InputTag::encode(), m_jetTag, m_label, m_maxTag, m_minJets, and m_minTag.

                                                   :
  m_jetTag(  config.getParameter<edm::InputTag> ("JetTag") ),
  m_minTag(  config.getParameter<double>        ("MinTag") ),
  m_maxTag(  config.getParameter<double>        ("MaxTag") ),
  m_minJets( config.getParameter<int>           ("MinJets") ),
  m_saveTag( config.getParameter<bool>          ("SaveTag") ),
  m_label(   config.getParameter<std::string>   ("@module_label") )
{

  edm::LogInfo("") << m_label << " (HLTJetTag) trigger cuts: " << std::endl
                   << "\ttype of tagged jets used: " << m_jetTag.encode() << std::endl
                   << "\tmin/max tag value: [" << m_minTag << ".." << m_maxTag << "]" << std::endl
                   << "\tmin no. tagged jets: " << m_minJets << std::endl;

  //register your products
  produces<trigger::TriggerFilterObjectWithRefs>();
}
HLTJetTag::~HLTJetTag ( )

Definition at line 47 of file HLTJetTag.cc.

{
}

Member Function Documentation

bool HLTJetTag::filter ( edm::Event event,
const edm::EventSetup setup 
) [virtual]

Implements HLTFilter.

Definition at line 57 of file HLTJetTag.cc.

References accept(), edm::ProductID::id(), metsig::jet, LogTrace, m_jetTag, m_label, m_maxTag, m_minJets, m_saveTag, module(), edm::Provenance::moduleLabel(), path(), edm::Provenance::processName(), edm::Provenance::productInstanceName(), edm::HandleBase::provenance(), dt_dqm_sourceclient_common_cff::reco, edm::second(), and trigger::TriggerBJet.

{
  using namespace std;
  using namespace edm;
  using namespace reco;

  // store jets used for triggering.
  auto_ptr<trigger::TriggerFilterObjectWithRefs> filterproduct (new trigger::TriggerFilterObjectWithRefs(path(),module()));

  edm::Handle<JetTagCollection> h_jetTag;
  event.getByLabel(m_jetTag, h_jetTag);
  const reco::JetTagCollection & jetTags = * h_jetTag;

  if (m_saveTag and jetTags.size()) {
    // find out which InputTag identifies the jets being tagged, and request it to be stored in the event
    // if there are no tagged jets, there is nothing to save
    ProductID jetsId = jetTags.begin()->first.id();
    edm::Handle<edm::View<reco::Jet> > h_jets;
    event.get(jetsId, h_jets);
    const edm::Provenance & jets_data = * h_jets.provenance();
    edm::InputTag jets_name( jets_data.moduleLabel(), jets_data.productInstanceName(), jets_data.processName() );

    filterproduct->addCollectionTag( jets_name );
  }

  // Look at all jets in decreasing order of Et.
  int nJet = 0;
  int nTag = 0;
  for (JetTagCollection::const_iterator jet = jetTags.begin(); jet != jetTags.end(); ++jet) {
    LogTrace("") << "Jet " << nJet
                 << " : Et = " << jet->first->et()
                 << " , tag value = " << jet->second;
    ++nJet;
    // Check if jet is tagged.
    if ( (m_minTag <= jet->second) and (jet->second <= m_maxTag) ) {
      ++nTag;

      // Store a reference to the jets which passed tagging cuts
      // N.B. this *should* work as we start from a CaloJet in HLT
      filterproduct->addObject(trigger::TriggerBJet, jet->first.castTo<reco::CaloJetRef>() );
    }
  }

  // filter decision
  bool accept = (nTag >= m_minJets);

  // put filter object into the Event
  event.put(filterproduct);

  edm::LogInfo("") << m_label << " trigger accept ? = " << accept
                   << " nTag/nJet = " << nTag << "/" << nJet << std::endl;

  return accept;
}

Member Data Documentation

Definition at line 37 of file HLTJetTag.h.

Referenced by filter(), and HLTJetTag().

std::string HLTJetTag::m_label [private]

Definition at line 42 of file HLTJetTag.h.

Referenced by filter(), and HLTJetTag().

double HLTJetTag::m_maxTag [private]

Definition at line 38 of file HLTJetTag.h.

Referenced by filter(), and HLTJetTag().

int HLTJetTag::m_minJets [private]

Definition at line 39 of file HLTJetTag.h.

Referenced by filter(), and HLTJetTag().

double HLTJetTag::m_minTag [private]

Definition at line 38 of file HLTJetTag.h.

Referenced by HLTJetTag().

bool HLTJetTag::m_saveTag [private]

Definition at line 40 of file HLTJetTag.h.

Referenced by filter().