29 PVerTag_(conf.getParameter<edm::InputTag>(
"primaryVertex") ),
30 PFJet_ (conf.getParameter<edm::InputTag>(
"jets") )
32 produces<reco::SoftLeptonTagInfoCollection>();
51 if(!PVCollection.
isValid())
return;
52 if(!PVCollection->empty()){
54 vertex=&PVCollection->front();
58 iEvent.
getByLabel(
"offlineBeamSpot", bsHandle);
62 iEvent.
getByLabel(
"allConversions", hConversions);
64 std::vector<edm::RefToBase<reco::Jet> >
jets;
68 unsigned int size = inputJets->size();
70 for (
unsigned int i = 0;
i <
size;
i++){
71 jets[
i] = inputJets->refAt(
i);
73 const std::vector<reco::CandidatePtr> JetConst = jets[
i]->getJetConstituents();
74 for (
unsigned ic=0;ic<JetConst.size();++ic){
76 if(JetConst[ic].
get()!=
NULL && pfc==
NULL)
continue;
77 if(pfc->particleId()==2){
82 if(fabs(sip3d<200)) Elec.push_back(*(pfc));
87 ElecTI->push_back(result_electrons);
90 std::auto_ptr<reco::SoftLeptonTagInfoCollection> ElecTagInfoCollection(ElecTI);
91 iEvent.
put(ElecTagInfoCollection);
102 for(reco::PFCandidateCollection::const_iterator lepton = leptons.begin(); lepton != leptons.end(); ++lepton) {
105 info.
insert(trkRef, properties );
120 prop.
etaRel = -
log((mag - dot)/(mag + dot)) / 2.;
133 if(hitCondition)
return false;
static uint32_t getLayer(uint32_t pattern)
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
reco::SoftLeptonTagInfo tagElec(const edm::RefToBase< reco::Jet > &, reco::PFCandidateCollection &)
Base class for all types of Jets.
reco::TransientTrack build(const reco::Track *p) const
void setJetRef(const edm::Ref< T > &jetRef)
reco::SoftLeptonProperties fillElecProperties(const reco::PFCandidate &, const reco::Jet &)
SoftPFElectronTagInfoProducer(const edm::ParameterSet &conf)
std::vector< SoftLeptonTagInfo > SoftLeptonTagInfoCollection
void insert(const edm::RefToBase< reco::Track > &lepton, const SoftLeptonProperties &properties)
virtual void produce(edm::Event &, const edm::EventSetup &)
virtual double energy() const
energy
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
reco::GsfElectronRef gsfElectronRef() const
return a reference to the corresponding GsfElectron if any
static bool validHitFilter(uint32_t pattern)
~SoftPFElectronTagInfoProducer()
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
const reco::Vertex * vertex
double deltaR(double eta1, double eta2, double phi1, double phi2)
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
bool isElecClean(edm::Event &, const reco::PFCandidate *)
virtual double px() const
x coordinate of momentum vector
T const * product() const
T const * product() const
virtual double pz() const
z coordinate of momentum vector
Particle reconstructed by the particle flow algorithm.
T dot(const Basic3DVector &v) const
Scalar product, or "dot" product, with a vector of same type.
reco::GsfTrackRef gsfTrackRef() const
static bool pixelEndcapHitFilter(uint32_t pattern)
const Point & position() const
position
T const * get() const
Returns C++ pointer to the item.
uint32_t getHitPattern(int position) const
virtual const LorentzVector & p4() const
four-momentum Lorentz vector
tuple size
Write out results.
virtual double py() const
y coordinate of momentum vector
static bool pixelBarrelHitFilter(uint32_t pattern)
const TransientTrackBuilder * transientTrackBuilder
Global3DVector GlobalVector