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
pat::PATConversionProducer Class Reference

#include <PATConversionProducer.h>

Inheritance diagram for pat::PATConversionProducer:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

Public Member Functions

 PATConversionProducer (const edm::ParameterSet &iConfig)
 
virtual void produce (edm::Event &iEvent, const edm::EventSetup &iSetup)
 
 ~PATConversionProducer ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Private Attributes

edm::InputTag electronSrc_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
typedef WorkerT< EDProducerWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDProducer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 

Detailed Description

Definition at line 38 of file PATConversionProducer.h.

Constructor & Destructor Documentation

PATConversionProducer::PATConversionProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 47 of file PATConversionProducer.cc.

References edm::ParameterSet::getParameter().

47  {
48 
49  // general configurables
50  electronSrc_ = iConfig.getParameter<edm::InputTag>( "electronSource" );
51 
52  // produces vector of muons
53  produces<std::vector<Conversion> >();
54 
55 }
T getParameter(std::string const &) const
PATConversionProducer::~PATConversionProducer ( )

Definition at line 58 of file PATConversionProducer.cc.

58  {
59 }

Member Function Documentation

void PATConversionProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
virtual

Implements edm::EDProducer.

Definition at line 62 of file PATConversionProducer.cc.

References reco::Vertex::chi2(), conv, HI_PhotonSkim_cff::electrons, edm::Event::getByLabel(), getHLTprescales::index, ConversionTools::matchesConversion(), reco::Vertex::ndof(), jptDQMConfig_cff::nHitsMax, reco::BeamSpot::position(), edm::Handle< T >::product(), edm::Event::put(), pat::Conversion::setLxy(), pat::Conversion::setNHitsMax(), pat::Conversion::setVtxProb(), reco::Vertex::x(), and reco::Vertex::y().

62  {
63 
64  // Get the collection of electrons from the event
66  iEvent.getByLabel(electronSrc_, electrons);
67 
69  iEvent.getByLabel("offlineBeamSpot", bsHandle);
70  const reco::BeamSpot &beamspot = *bsHandle.product();
71 
72  // for conversion veto selection
74  iEvent.getByLabel("allConversions", hConversions);
75 
76  std::vector<Conversion> * patConversions = new std::vector<Conversion>();
77 
78  for (reco::ConversionCollection::const_iterator conv = hConversions->begin(); conv!= hConversions->end(); ++conv) {
79 
80  reco::Vertex vtx = conv->conversionVertex();
81 
82  int index = 0;
83  for (edm::View<reco::GsfElectron>::const_iterator itElectron = electrons->begin(); itElectron != electrons->end(); ++itElectron) {
84 
85  //find matched conversions with electron and save those conversions with matched electron index
86  if (ConversionTools::matchesConversion(*itElectron, *conv)) {
87 
88  double vtxProb = TMath::Prob( vtx.chi2(), vtx.ndof());
89  math::XYZVector mom(conv->refittedPairMomentum());
90  double dbsx = vtx.x() - beamspot.position().x();
91  double dbsy = vtx.y() - beamspot.position().y();
92  double lxy = (mom.x()*dbsx + mom.y()*dbsy)/mom.rho();
93  int nHitsMax = 0;
94 
95  for (std::vector<uint8_t>::const_iterator it = conv->nHitsBeforeVtx().begin(); it!=conv->nHitsBeforeVtx().end(); ++it) {
96  if ((*it) > nHitsMax) nHitsMax = (*it);
97  }
98 
99  pat::Conversion anConversion( index );
100  anConversion.setVtxProb( vtxProb );
101  anConversion.setLxy( lxy );
102  anConversion.setNHitsMax( nHitsMax );
103 
104  patConversions->push_back(anConversion);
105  break;
106  }
107  index++;
108  }
109 
110  }
111 
112  // add the electrons to the event output
113  std::auto_ptr<std::vector<Conversion> > ptr(patConversions);
114  iEvent.put(ptr);
115 
116 }
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:81
static HepMC::IO_HEPEVT conv
double y() const
y coordinate
Definition: Vertex.h:97
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:85
double chi2() const
chi-squares
Definition: Vertex.h:82
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
double ndof() const
Definition: Vertex.h:89
double x() const
x coordinate
Definition: Vertex.h:95
static bool matchesConversion(const reco::GsfElectron &ele, const reco::Conversion &conv, bool allowCkfMatch=true)
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
T const * product() const
Definition: Handle.h:74
const Point & position() const
position
Definition: BeamSpot.h:63

Member Data Documentation

edm::InputTag pat::PATConversionProducer::electronSrc_
private

Definition at line 50 of file PATConversionProducer.h.