35 #include "fastjet/SISConePlugin.hh"
36 #include "fastjet/CMSIterativeConePlugin.hh"
37 #include "fastjet/ATLASConePlugin.hh"
38 #include "fastjet/CDFMidPointPlugin.hh"
60 if ( iConfig.
exists(
"UseOnlyVertexTracks") )
65 if ( iConfig.
exists(
"UseOnlyOnePV") )
70 if ( iConfig.
exists(
"DzTrVtxMax") )
74 if ( iConfig.
exists(
"DxyTrVtxMax") )
78 if ( iConfig.
exists(
"MinVtxNdof") )
82 if ( iConfig.
exists(
"MaxVtxZ") )
125 std::vector<edm::Ptr<reco::RecoChargedRefCandidate> > allInputs;
126 std::vector<edm::Ptr<reco::Candidate> > origInputs;
127 for (
size_t i = 0;
i < inputsHandle->size(); ++
i) {
128 allInputs.push_back(inputsHandle->ptrAt(
i));
129 origInputs.push_back(inputsHandle->ptrAt(
i));
136 std::auto_ptr<std::vector<reco::TrackJet> >
jets(
new std::vector<reco::TrackJet>() );
139 for (reco::VertexCollection::const_iterator itVtx = pvCollection->begin(); itVtx != pvCollection->end(); ++itVtx) {
140 if (itVtx->isFake() || itVtx->ndof() <
minVtxNdof_ || fabs(itVtx->z()) >
maxVtxZ_)
continue;
158 if ((*itIn)->track() == trref) {
163 allInputs.erase(itIn);
169 if (!found)
edm::LogInfo(
"FastjetTrackJetProducer") <<
"Ignoring a track at vertex which is not in input track collection!";
176 float dz = (*itIn)->track()->dz(itVtx->position());
177 float dxy = (*itIn)->track()->dxy(itVtx->position());
180 bool closervtx =
false;
182 for (reco::VertexCollection::const_iterator itVtx2 = pvCollection->begin(); itVtx2 != pvCollection->end(); ++itVtx2) {
183 if (itVtx->isFake() || itVtx->ndof() <
minVtxNdof_ || fabs(itVtx->z()) >
maxVtxZ_)
continue;
187 fabs((*itIn)->track()->dz(itVtx2->position())) < fabs(dz)) {
193 if (closervtx)
continue;
197 allInputs.erase(itIn);
206 LogDebug(
"FastjetTrackJetProducer") <<
"Inputted towers\n";
210 LogDebug(
"FastjetTrackJetProducer") <<
"Ran algorithm\n";
213 for (
unsigned int ijet=0;ijet<
fjJets_.size();++ijet) {
215 std::vector<fastjet::PseudoJet> fjConstituents = sorted_by_pt(
fjClusterSeq_->constituents(
fjJets_[ijet]));
217 std::vector<reco::CandidatePtr> constituents =
getConstituents(fjConstituents);
223 vertex_, constituents, iSetup);
228 jets->push_back(jet);
235 LogDebug(
"FastjetTrackJetProducer") <<
"Put " << jets->size() <<
" jets in the event.\n";
T getParameter(std::string const &) const
reco::Particle::Point vertex_
virtual std::vector< reco::CandidatePtr > getConstituents(const std::vector< fastjet::PseudoJet > &fjConstituents)
std::vector< fastjet::PseudoJet > fjJets_
virtual void setPileup(float fEnergy)
Set pileup energy contribution as calculated by algorithm.
virtual void inputTowers()
virtual void runAlgorithm(edm::Event &iEvent, const edm::EventSetup &iSetup)
#define DEFINE_FWK_MODULE(type)
bool useOnlyVertexTracks_
bool exists(std::string const ¶meterName) const
checks if a parameter exists
FastjetJetProducer(const edm::ParameterSet &iConfig)
bool makeTrackJet(const JetType::Type &fTag)
virtual void setJetArea(float fArea)
set jet area
std::vector< fastjet::PseudoJet > fjInputs_
virtual void produce(edm::Event &iEvent, const edm::EventSetup &iSetup)
std::vector< edm::Ptr< reco::Candidate > > inputs_
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
ClusterSequencePtr fjClusterSeq_
virtual void produceTrackJets(edm::Event &iEvent, const edm::EventSetup &iSetup)
void setPrimaryVertex(const reco::VertexRef &vtx)
set associated primary vertex
ActiveAreaSpecPtr fjActiveArea_
virtual void setVertex(const Point &vertex)
set vertex
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
virtual void produce(edm::Event &iEvent, const edm::EventSetup &iSetup)
virtual ~FastjetJetProducer()
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector<TrackRef>
math::XYZTLorentzVector LorentzVector
Lorentz vector.
boost::shared_ptr< fastjet::ClusterSequence > ClusterSequencePtr
void writeSpecific(reco::CaloJet &jet, reco::Particle::LorentzVector const &p4, reco::Particle::Point const &point, std::vector< reco::CandidatePtr > const &constituents, edm::EventSetup const &c)
JetDefPtr fjJetDefinition_