CMS 3D CMS Logo

Public Member Functions | Private Attributes

JetExtender Class Reference

#include <JetExtender.h>

Inheritance diagram for JetExtender:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

 JetExtender (const edm::ParameterSet &)
virtual void produce (edm::Event &, const edm::EventSetup &)
virtual ~JetExtender ()

Private Attributes

edm::InputTag mJet2TracksAtCALO
edm::InputTag mJet2TracksAtVX
edm::InputTag mJets

Detailed Description

Definition at line 17 of file JetExtender.h.


Constructor & Destructor Documentation

JetExtender::JetExtender ( const edm::ParameterSet fConfig)

Definition at line 19 of file JetExtender.cc.

  : mJets (fConfig.getParameter<edm::InputTag> ("jets")),
    mJet2TracksAtVX (fConfig.getParameter<edm::InputTag> ("jet2TracksAtVX")),
    mJet2TracksAtCALO (fConfig.getParameter<edm::InputTag> ("jet2TracksAtCALO"))
{
  produces<reco::JetExtendedAssociation::Container> ();
}
JetExtender::~JetExtender ( ) [virtual]

Definition at line 27 of file JetExtender.cc.

{}

Member Function Documentation

void JetExtender::produce ( edm::Event fEvent,
const edm::EventSetup fSetup 
) [virtual]

Implements edm::EDProducer.

Definition at line 29 of file JetExtender.cc.

References edm::Event::getByLabel(), edm::HandleBase::isValid(), j, metsig::jet, edm::InputTag::label(), mJet2TracksAtCALO, mJet2TracksAtVX, mJets, reco::JetExtendedAssociation::JetExtendedData::mTracksAtCaloNumber, reco::JetExtendedAssociation::JetExtendedData::mTracksAtCaloP4, reco::JetExtendedAssociation::JetExtendedData::mTracksAtVertexNumber, reco::JetExtendedAssociation::JetExtendedData::mTracksAtVertexP4, edm::Event::put(), reco::JetExtendedAssociation::setValue(), reco::JetTracksAssociation::tracksNumber(), and reco::JetTracksAssociation::tracksP4().

                                                                       {
  // get stuff from Event
  edm::Handle <edm::View <reco::Jet> > jets_h;
  fEvent.getByLabel (mJets, jets_h);
  edm::Handle <reco::JetTracksAssociation::Container> j2tVX_h;
  if (!(mJet2TracksAtVX.label().empty())) fEvent.getByLabel (mJet2TracksAtVX, j2tVX_h);
  edm::Handle <reco::JetTracksAssociation::Container> j2tCALO_h;
  if (!(mJet2TracksAtCALO.label().empty())) fEvent.getByLabel (mJet2TracksAtCALO, j2tCALO_h);
  
  std::auto_ptr<reco::JetExtendedAssociation::Container> 
    jetExtender (new reco::JetExtendedAssociation::Container (reco::JetRefBaseProd(jets_h)));
  
  // loop over jets (make sure jets in associations are the same as in collection

  for (unsigned j = 0; j < jets_h->size(); ++j) {
    edm::RefToBase<reco::Jet> jet = jets_h->refAt(j);
    reco::JetExtendedAssociation::JetExtendedData extendedData;
    if (j2tVX_h.isValid ()) { // fill tracks@VX  summary
      try {
        extendedData.mTracksAtVertexNumber = reco::JetTracksAssociation::tracksNumber (*j2tVX_h, jet);
        extendedData.mTracksAtVertexP4 = reco::JetTracksAssociation::tracksP4 (*j2tVX_h, jet);
      }
      catch (cms::Exception e) {
        edm::LogError ("MismatchedJets") << "Jets in original collection " << mJets 
                                    << " mismatch jets in j2t VX association " << mJet2TracksAtVX
                                    << ". Wrong collections?";
        throw e;
      }
    }
    if (j2tCALO_h.isValid ()) { // fill tracks@CALO  summary
      try {
        extendedData.mTracksAtCaloNumber = reco::JetTracksAssociation::tracksNumber (*j2tCALO_h, jet);
        extendedData.mTracksAtCaloP4 = reco::JetTracksAssociation::tracksP4 (*j2tCALO_h, jet);
      }
      catch (cms::Exception e) {
        edm::LogError ("MismatchedJets") << "Jets in original collection " << mJets 
                                    << " mismatch jets in j2t CALO association " << mJet2TracksAtCALO
                                    << ". Wrong collections?";
        throw e;
      }
    }
    reco::JetExtendedAssociation::setValue (&*jetExtender, jet, extendedData);
  }
  fEvent.put (jetExtender);
}

Member Data Documentation

Definition at line 27 of file JetExtender.h.

Referenced by produce().

Definition at line 26 of file JetExtender.h.

Referenced by produce().

Definition at line 25 of file JetExtender.h.

Referenced by produce().