#include <RecoBTag/ConeIsolation/src/ConeIsolation.cc>
Public Member Functions | |
ConeIsolation (const edm::ParameterSet &) | |
virtual void | produce (edm::Event &, const edm::EventSetup &) |
~ConeIsolation () | |
Private Attributes | |
edm::InputTag | beamSpotProducer |
edm::InputTag | jetTrackSrc |
ConeIsolationAlgorithm * | m_algo |
bool | usingBeamSpot |
bool | usingVertex |
edm::InputTag | vertexSrc |
Description: <one line="" class="" summary>="">
Implementation: <Notes on="" implementation>="">
EDProducer of the tagged TauJet with the ConeIsolationAlgorithm. It returns two collections: base collection is the JetTag, and extended Collection which is the IsolatedTauTagInfo. The method implemented in the IsolatedTauTagInfo class are used to compute the discriminator variable. A trick is used to link the IsolatedTauTagInfo to a smart reference to the JetTag.
Definition at line 24 of file ConeIsolation.h.
ConeIsolation::ConeIsolation | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
Definition at line 52 of file ConeIsolation.cc.
References ExpressReco_HICollisions_FallBack::beamSpotProducer, edm::ParameterSet::getParameter(), and PixelTracksForL3Isolation_cfi::vertexSrc.
{ jetTrackSrc = iConfig.getParameter<InputTag>("JetTrackSrc"); vertexSrc = iConfig.getParameter<InputTag>("vertexSrc"); usingVertex = iConfig.getParameter<bool>("useVertex"); usingBeamSpot = iConfig.getParameter<bool>("useBeamSpot"); //If false the OfflinePrimaryVertex will be used. beamSpotProducer = iConfig.getParameter<edm::InputTag>("BeamSpotProducer"); m_algo = new ConeIsolationAlgorithm(iConfig); produces<reco::JetTagCollection>(); produces<reco::IsolatedTauTagInfoCollection>(); }
ConeIsolation::~ConeIsolation | ( | ) |
Definition at line 69 of file ConeIsolation.cc.
{ delete m_algo; }
void ConeIsolation::produce | ( | edm::Event & | iEvent, |
const edm::EventSetup & | iSetup | ||
) | [virtual] |
Implements edm::EDProducer.
Definition at line 81 of file ConeIsolation.cc.
References ExpressReco_HICollisions_FallBack::beamSpotProducer, reco::Vertex::chi2(), ExpressReco_HICollisions_FallBack::e, reco::Vertex::error(), edm::Event::getByLabel(), i, reco::Vertex::ndof(), L1TEmulatorMonitor_cff::p, CrabTask::prod, edm::Event::put(), reco::Vertex::tracksSize(), PixelTracksForL3Isolation_cfi::vertexSrc, ExpressReco_HICollisions_FallBack::vertices, and reco::Vertex::z().
{ using namespace edm; //Get jets with tracks Handle<reco::JetTracksAssociationCollection> jetTracksAssociation; iEvent.getByLabel(jetTrackSrc,jetTracksAssociation); std::auto_ptr<reco::JetTagCollection> tagCollection; std::auto_ptr<reco::IsolatedTauTagInfoCollection> extCollection( new reco::IsolatedTauTagInfoCollection() ); if (not jetTracksAssociation->empty()) { RefToBaseProd<reco::Jet> prod( jetTracksAssociation->begin()->first ); tagCollection.reset( new reco::JetTagCollection(prod) ); } else { tagCollection.reset( new reco::JetTagCollection() ); } Vertex::Error e; e(0,0)=1; e(1,1)=1; e(2,2)=1; Vertex::Point p(0,0,-1000); Vertex myPVtmp(p,e);//Fake vertex to be used in case no vertex is found Vertex myPV; //Get pixel vertices Handle<reco::VertexCollection> vertices; iEvent.getByLabel(vertexSrc,vertices); const reco::VertexCollection vertCollection = *(vertices.product()); //Check if there is the PV!!!! if(vertCollection.begin() != vertCollection.end()) myPVtmp = *(vertCollection.begin()); //In case the beam spot is used, the Z of the vertex still comes from the PV, while the (x,y) is taken from the beamspot reco::BeamSpot vertexBeamSpot; edm::Handle<reco::BeamSpot> recoBeamSpotHandle; if(usingBeamSpot) { //Create a new vertex with the information on x0 and Y0 from the beamspot, to be used in HLT. iEvent.getByLabel(beamSpotProducer,recoBeamSpotHandle); vertexBeamSpot = *recoBeamSpotHandle; Vertex::Point bspoint(vertexBeamSpot.x0(),vertexBeamSpot.y0(),myPVtmp.z()); Vertex combinedVertex = Vertex(bspoint,myPVtmp.error(),myPVtmp.chi2(),myPVtmp.ndof(),myPVtmp.tracksSize()); myPV = combinedVertex; }else{ myPV = myPVtmp; } JetTracksAssociationCollection::const_iterator it = jetTracksAssociation->begin(); for (unsigned int i = 0; i < jetTracksAssociation->size(); ++i) { pair<float,IsolatedTauTagInfo> myPair =m_algo->tag(edm::Ref<JetTracksAssociationCollection>(jetTracksAssociation,i),myPV); tagCollection->setValue(i, myPair.first); extCollection->push_back(myPair.second); } iEvent.put(extCollection); iEvent.put(tagCollection); }
edm::InputTag ConeIsolation::beamSpotProducer [private] |
Definition at line 36 of file ConeIsolation.h.
edm::InputTag ConeIsolation::jetTrackSrc [private] |
Definition at line 33 of file ConeIsolation.h.
ConeIsolationAlgorithm* ConeIsolation::m_algo [private] |
Definition at line 32 of file ConeIsolation.h.
bool ConeIsolation::usingBeamSpot [private] |
Definition at line 37 of file ConeIsolation.h.
bool ConeIsolation::usingVertex [private] |
Definition at line 35 of file ConeIsolation.h.
edm::InputTag ConeIsolation::vertexSrc [private] |
Definition at line 34 of file ConeIsolation.h.