CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
RecoTauImpactParameterSignificancePlugin.cc
Go to the documentation of this file.
1 /*
2  * =============================================================================
3  * Filename: RecoTauImpactParameterSignificancePlugin.cc
4  *
5  * Description: Add the IP significance of the lead track w.r.t to the PV.
6  * to a PFTau.
7  * Created: 10/31/2010 13:32:14
8  *
9  * Authors: Evan K. Friis (UC Davis), evan.klose.friis@cern.ch,
10  * Simone Gennai, Ludovic Houchu
11  *
12  * =============================================================================
13  */
14 
19 
22 
26 
27 namespace reco { namespace tau {
28 
30  public:
32  const edm::ParameterSet& pset);
34  void operator()(PFTau& tau) const;
35  virtual void beginEvent();
36  private:
39  const reco::Vertex* pv_;
40 };
41 
44  :RecoTauModifierPlugin(pset) {
45  pvSrc_ = pset.getParameter<edm::InputTag>("pvSrc");
46 }
47 
49  // Get primary vertex
51  evt()->getByLabel(pvSrc_, pvs);
52  pv_ = &((*pvs)[0]);
53  // Get tranisent track builder.
54  edm::ESHandle<TransientTrackBuilder> myTransientTrackBuilder;
55  evtSetup()->get<TransientTrackRecord>().get("TransientTrackBuilder",
56  myTransientTrackBuilder);
57  builder_= myTransientTrackBuilder.product();
58 }
59 
61  // Get the transient lead track
62  if (tau.leadPFChargedHadrCand().isNonnull()) {
63  TrackRef leadTrack = tau.leadPFChargedHadrCand()->trackRef();
64  if (leadTrack.isNonnull()) {
65  const TransientTrack track = builder_->build(leadTrack);
66  GlobalVector direction(tau.jetRef()->px(), tau.jetRef()->py(),
67  tau.jetRef()->pz());
68  // Compute the significance
69  std::pair<bool,Measurement1D> ipsig =
71  if (ipsig.first)
72  tau.setleadPFChargedHadrCandsignedSipt(ipsig.second.significance());
73  }
74  }
75 }
76 
77 }} // end namespace reco::tau
81  "RecoTauImpactParameterSignificancePlugin");
T getParameter(std::string const &) const
const PFJetRef & jetRef() const
Definition: PFTau.cc:50
std::pair< bool, Measurement1D > signedTransverseImpactParameter(const reco::TransientTrack &track, const GlobalVector &direction, const reco::Vertex &vertex)
Definition: IPTools.cc:50
reco::TransientTrack build(const reco::Track *p) const
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:248
void setleadPFChargedHadrCandsignedSipt(const float &)
Definition: PFTau.cc:71
tuple pset
Definition: CrabTask.py:85
const edm::EventSetup * evtSetup() const
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:359
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalVector
vector in glovbal coordinate system
Definition: Vector3D.h:28
const PFCandidateRef & leadPFChargedHadrCand() const
Definition: PFTau.cc:62
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
#define DEFINE_EDM_PLUGIN(factory, type, name)