CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
pf2pat::IPCutPFCandidateSelectorDefinition Class Reference

Selects PFCandidates basing on their compatibility with vertex. More...

#include "CommonTools/ParticleFlow/interface/IPCutPFCandidateSelectorDefinition.h"

Inheritance diagram for pf2pat::IPCutPFCandidateSelectorDefinition:
pf2pat::PFCandidateSelectorDefinition

Public Member Functions

 IPCutPFCandidateSelectorDefinition (const edm::ParameterSet &cfg)
 
void select (const HandleToCollection &hc, const edm::Event &e, const edm::EventSetup &s)
 
- Public Member Functions inherited from pf2pat::PFCandidateSelectorDefinition
const_iterator begin () const
 
const_iterator end () const
 
 PFCandidateSelectorDefinition ()
 
const containerselected () const
 
size_t size () const
 

Private Attributes

double d0Cut_
 
double d0SigCut_
 
double dzCut_
 
double dzSigCut_
 
edm::InputTag vertices_
 

Additional Inherited Members

- Public Types inherited from pf2pat::PFCandidateSelectorDefinition
typedef reco::PFCandidateCollection collection
 
typedef
boost::transform_iterator
< Pointer,
container::const_iterator > 
const_iterator
 
typedef std::vector
< reco::PFCandidate
container
 
typedef edm::Handle< collectionHandleToCollection
 
- Protected Attributes inherited from pf2pat::PFCandidateSelectorDefinition
container selected_
 

Detailed Description

Selects PFCandidates basing on their compatibility with vertex.

Author
Giovanni Petrucciani
Version
Id:
IPCutPFCandidateSelectorDefinition.h,v 1.2 2011/04/06 12:12:38 rwolf Exp

Definition at line 21 of file IPCutPFCandidateSelectorDefinition.h.

Constructor & Destructor Documentation

pf2pat::IPCutPFCandidateSelectorDefinition::IPCutPFCandidateSelectorDefinition ( const edm::ParameterSet cfg)
inline

Member Function Documentation

void pf2pat::IPCutPFCandidateSelectorDefinition::select ( const HandleToCollection hc,
const edm::Event e,
const edm::EventSetup s 
)
inline

Definition at line 30 of file IPCutPFCandidateSelectorDefinition.h.

References d0Cut_, d0SigCut_, reco::TrackBase::dxy(), reco::TrackBase::dxyError(), reco::TrackBase::dz(), dzCut_, reco::TrackBase::dzError(), dzSigCut_, edm::Event::getByLabel(), combine::key, reco::Vertex::position(), pf2pat::PFCandidateSelectorDefinition::selected_, vertices_, reco::Vertex::xError(), reco::Vertex::yError(), and reco::Vertex::zError().

Referenced by Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::find(), Vispa.Views.LineDecayView.LineDecayContainer::mousePressEvent(), Vispa.Gui.PortConnection.PointToPointConnection::mousePressEvent(), Vispa.Gui.VispaWidget.VispaWidget::mousePressEvent(), and Vispa.Views.AbstractView.AbstractView::restoreSelection().

32  {
33  selected_.clear();
34 
36  e.getByLabel(vertices_, vertices);
37  if (vertices->empty()) return;
38  const reco::Vertex &vtx = (*vertices)[0];
39 
40  unsigned key=0;
41  for( collection::const_iterator pfc = hc->begin();
42  pfc != hc->end(); ++pfc, ++key) {
43 
44  bool passing = true;
45  const reco::Track *tk = 0;
46  if (pfc->gsfTrackRef().isNonnull()) tk = pfc->gsfTrackRef().get();
47  else if (pfc->trackRef().isNonnull()) tk = pfc->trackRef().get();
48 
49  if (tk != 0) {
50  double d0 = fabs(tk->dxy(vtx.position()));
51  double dz = fabs(tk->dz(vtx.position()));
52  double d0e = hypot(tk->dxyError(), hypot(vtx.xError(), vtx.yError()));
53  double dze = hypot(tk->dzError(), vtx.zError());
54  if (d0Cut_ > 0 && d0 > d0Cut_) passing = false;
55  if (dzCut_ > 0 && dz > dzCut_) passing = false;
56  if (d0SigCut_ > 0 && d0e > 0 && d0/d0e > d0SigCut_) passing = false;
57  if (dzSigCut_ > 0 && dze > 0 && dz/dze > dzSigCut_) passing = false;
58  }
59 
60  if( passing ) {
61  selected_.push_back( reco::PFCandidate(*pfc) );
62  reco::PFCandidatePtr ptrToMother( hc, key );
63  selected_.back().setSourceCandidatePtr( ptrToMother );
64  }
65  }
66  }
double zError() const
error on z
Definition: Vertex.h:105
double dxyError() const
error on dxy
Definition: TrackBase.h:209
const Point & position() const
position
Definition: Vertex.h:93
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:127
double dzError() const
error on dz
Definition: TrackBase.h:215
double xError() const
error on x
Definition: Vertex.h:101
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:33
list key
Definition: combine.py:13
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:121
double yError() const
error on y
Definition: Vertex.h:103

Member Data Documentation

double pf2pat::IPCutPFCandidateSelectorDefinition::d0Cut_
private

Definition at line 70 of file IPCutPFCandidateSelectorDefinition.h.

Referenced by select().

double pf2pat::IPCutPFCandidateSelectorDefinition::d0SigCut_
private

Definition at line 72 of file IPCutPFCandidateSelectorDefinition.h.

Referenced by select().

double pf2pat::IPCutPFCandidateSelectorDefinition::dzCut_
private

Definition at line 71 of file IPCutPFCandidateSelectorDefinition.h.

Referenced by select().

double pf2pat::IPCutPFCandidateSelectorDefinition::dzSigCut_
private

Definition at line 73 of file IPCutPFCandidateSelectorDefinition.h.

Referenced by select().

edm::InputTag pf2pat::IPCutPFCandidateSelectorDefinition::vertices_
private

Definition at line 69 of file IPCutPFCandidateSelectorDefinition.h.

Referenced by select().