#include <RecoBTag/ImpactParameter/src/ImpactParameter.cc>
Public Member Functions | |
ImpactParameter (const edm::ParameterSet &) | |
virtual void | produce (edm::Event &, const edm::EventSetup &) |
~ImpactParameter () | |
Private Attributes | |
ImpactParameterAlgorithm * | algo |
string | jetTrackSrc |
bool | usingVertex |
string | vertexSrc |
Implementation: <Notes on="" implementation>="">
Definition at line 13 of file ImpactParameter.h.
ImpactParameter::ImpactParameter | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
Definition at line 47 of file ImpactParameter.cc.
References algo, edm::ParameterSet::getParameter(), jetTrackSrc, usingVertex, and vertexSrc.
00047 { 00048 00049 jetTrackSrc = iConfig.getParameter<string>("JetTagProd"); 00050 vertexSrc = iConfig.getParameter<string>("vertexSrc"); 00051 usingVertex = iConfig.getParameter<bool>("useVertex"); 00052 00053 algo = new ImpactParameterAlgorithm(iConfig); 00054 00055 std::string modulname = iConfig.getParameter<string>( "@module_label" ); 00056 produces<reco::JetTagCollection>().setBranchAlias(modulname); 00057 string infoBranchName = modulname + "Info"; 00058 produces<reco::TauImpactParameterInfoCollection>().setBranchAlias(infoBranchName); 00059 }
ImpactParameter::~ImpactParameter | ( | ) |
Definition at line 62 of file ImpactParameter.cc.
References algo.
00062 { 00063 delete algo; 00064 }
void ImpactParameter::produce | ( | edm::Event & | iEvent, | |
const edm::EventSetup & | iSetup | |||
) | [virtual] |
Implements edm::EDProducer.
Definition at line 72 of file ImpactParameter.cc.
References algo, e, cond::Error, edm::EventSetup::get(), edm::Event::getByLabel(), i, jetTrackSrc, p, edm::ESHandle< T >::product(), edm::Handle< T >::product(), edm::Event::put(), HcalSimpleRecAlgoImpl::reco(), ImpactParameterAlgorithm::setTransientTrackBuilder(), ImpactParameterAlgorithm::tag(), usingVertex, and vertexSrc.
00072 { 00073 00074 using namespace reco; 00075 00076 Handle<IsolatedTauTagInfoCollection> isolatedTaus; 00077 iEvent.getByLabel(jetTrackSrc,isolatedTaus); 00078 00079 std::auto_ptr<JetTagCollection> tagCollection; 00080 std::auto_ptr<TauImpactParameterInfoCollection> extCollection( new TauImpactParameterInfoCollection() ); 00081 if (not isolatedTaus->empty()) { 00082 edm::RefToBaseProd<reco::Jet> prod( isolatedTaus->begin()->jet() ); 00083 tagCollection.reset( new JetTagCollection(prod) ); 00084 } else { 00085 tagCollection.reset( new JetTagCollection() ); 00086 } 00087 00088 edm::ESHandle<TransientTrackBuilder> builder; 00089 iSetup.get<TransientTrackRecord>().get("TransientTrackBuilder",builder); 00090 algo->setTransientTrackBuilder(builder.product()); 00091 00092 Vertex PV; 00093 if (usingVertex) { 00094 Handle<reco::VertexCollection> vertices; 00095 iEvent.getByLabel(vertexSrc,vertices); 00096 00097 const reco::VertexCollection vertCollection = *(vertices.product()); 00098 reco::VertexCollection::const_iterator iVertex; 00099 00100 for(iVertex = vertCollection.begin();iVertex!=vertCollection.end();iVertex++){ 00101 PV = *iVertex; 00102 } 00103 00104 } else { 00105 Vertex::Error e; 00106 e(0,0)=0; 00107 e(1,1)=0; 00108 e(2,2)=0; 00109 Vertex::Point p(0,0,0); 00110 00111 Vertex dummyPV(p,e,1,1,1); 00112 PV = dummyPV; 00113 } 00114 00115 for (unsigned int i = 0; i < isolatedTaus->size(); ++i) { 00116 IsolatedTauTagInfoRef tauRef(isolatedTaus, i); 00117 std::pair<float, TauImpactParameterInfo> ipInfo = algo->tag(tauRef,PV); 00118 tagCollection->setValue(i, ipInfo.first); 00119 extCollection->push_back(ipInfo.second); 00120 } 00121 00122 iEvent.put(extCollection); 00123 iEvent.put(tagCollection); 00124 }
ImpactParameterAlgorithm* ImpactParameter::algo [private] |
Definition at line 21 of file ImpactParameter.h.
Referenced by ImpactParameter(), produce(), and ~ImpactParameter().
string ImpactParameter::jetTrackSrc [private] |
bool ImpactParameter::usingVertex [private] |
string ImpactParameter::vertexSrc [private] |