#include <SubEventGenJetProducer.h>
Public Member Functions | |
void | produce (edm::Event &, const edm::EventSetup &) |
void | runAlgorithm (edm::Event &, const edm::EventSetup &) |
SubEventGenJetProducer (const edm::ParameterSet &ps) | |
virtual | ~SubEventGenJetProducer () |
Protected Member Functions | |
virtual void | inputTowers () |
Protected Attributes | |
std::vector< int > | hydroTag_ |
bool | ignoreHydro_ |
std::vector< int > | nSubParticles_ |
std::vector< std::vector < fastjet::PseudoJet > > | subInputs_ |
std::vector< reco::GenJet > * | subJets_ |
Definition at line 19 of file SubEventGenJetProducer.h.
SubEventGenJetProducer::SubEventGenJetProducer | ( | const edm::ParameterSet & | ps | ) |
Definition at line 38 of file SubEventGenJetProducer.cc.
References edm::ParameterSet::getUntrackedParameter(), and ignoreHydro_.
: VirtualJetProducer( conf ) { // mapSrc_ = conf.getParameter<edm::InputTag>( "srcMap"); ignoreHydro_ = conf.getUntrackedParameter<bool>("ignoreHydro", true); produces<reco::BasicJetCollection>(); // the subjet collections are set through the config file in the "jetCollInstanceName" field. }
virtual cms::SubEventGenJetProducer::~SubEventGenJetProducer | ( | ) | [inline, virtual] |
Definition at line 24 of file SubEventGenJetProducer.h.
{}
void SubEventGenJetProducer::inputTowers | ( | ) | [protected, virtual] |
Reimplemented from VirtualJetProducer.
Definition at line 48 of file SubEventGenJetProducer.cc.
References reco::GenParticle::collisionId(), edm::Ptr< T >::get(), hydroTag_, i, collect_tpl::input, VirtualJetProducer::inputEMin_, VirtualJetProducer::inputEtMin_, VirtualJetProducer::inputs_, VirtualJetProducer::isAnomalousTower(), edm::detail::isnan(), LogDebug, and subInputs_.
Referenced by produce().
{ std::vector<edm::Ptr<reco::Candidate> >::const_iterator inBegin = inputs_.begin(), inEnd = inputs_.end(), i = inBegin; for (; i != inEnd; ++i ) { reco::CandidatePtr input = inputs_[i - inBegin]; if (std::isnan(input->pt())) continue; if (input->et() <inputEtMin_) continue; if (input->energy()<inputEMin_) continue; if (isAnomalousTower(input)) continue; edm::Ptr<reco::Candidate> p = inputs_[i - inBegin]; const GenParticle * pref = dynamic_cast<const GenParticle *>(p.get()); int subevent = pref->collisionId(); LogDebug("SubEventContainers")<<"SubEvent is : "<<subevent<<endl; LogDebug("SubEventContainers")<<"SubSize is : "<<subInputs_.size()<<endl; if(subevent >= (int)subInputs_.size()){ hydroTag_.resize(subevent+1, -1); subInputs_.resize(subevent+1); LogDebug("SubEventContainers")<<"SubSize is : "<<subInputs_.size()<<endl; LogDebug("SubEventContainers")<<"HydroTagSize is : "<<hydroTag_.size()<<endl; } LogDebug("SubEventContainers")<<"HydroTag is : "<<hydroTag_[subevent]<<endl; if(hydroTag_[subevent] != 0) hydroTag_[subevent] = (int)checkHydro(pref); subInputs_[subevent].push_back(fastjet::PseudoJet(input->px(),input->py(),input->pz(), input->energy())); subInputs_[subevent].back().set_user_index(i - inBegin); } }
void SubEventGenJetProducer::produce | ( | edm::Event & | iEvent, |
const edm::EventSetup & | iSetup | ||
) | [virtual] |
Reimplemented from VirtualJetProducer.
Definition at line 84 of file SubEventGenJetProducer.cc.
References VirtualJetProducer::fjInputs_, VirtualJetProducer::fjJets_, edm::Event::getByLabel(), hydroTag_, i, ignoreHydro_, VirtualJetProducer::inputs_, inputTowers(), analyzePatCleaning_cfg::jets, LogDebug, nSubParticles_, edm::Event::put(), runAlgorithm(), VirtualJetProducer::src_, subInputs_, and subJets_.
{ LogDebug("VirtualJetProducer") << "Entered produce\n"; fjJets_.clear(); subInputs_.clear(); nSubParticles_.clear(); hydroTag_.clear(); inputs_.clear(); // get inputs and convert them to the fastjet format (fastjet::PeudoJet) edm::Handle<reco::CandidateView> inputsHandle; iEvent.getByLabel(src_,inputsHandle); for (size_t i = 0; i < inputsHandle->size(); ++i) { inputs_.push_back(inputsHandle->ptrAt(i)); } LogDebug("VirtualJetProducer") << "Got inputs\n"; inputTowers(); // Convert candidates to fastjet::PseudoJets. // Also correct to Primary Vertex. Will modify fjInputs_ // and use inputs_ std::auto_ptr<std::vector<GenJet> > jets(new std::vector<GenJet>() ); subJets_ = jets.get(); LogDebug("VirtualJetProducer") << "Inputted towers\n"; size_t nsub = subInputs_.size(); for(size_t isub = 0; isub < nsub; ++isub){ if(ignoreHydro_ && hydroTag_[isub]) continue; fjJets_.clear(); fjInputs_.clear(); fjInputs_ = subInputs_[isub]; runAlgorithm( iEvent, iSetup ); } //Finalize LogDebug("SubEventJetProducer") << "Wrote jets\n"; iEvent.put(jets); return; }
void SubEventGenJetProducer::runAlgorithm | ( | edm::Event & | iEvent, |
const edm::EventSetup & | iSetup | ||
) | [virtual] |
Implements VirtualJetProducer.
Definition at line 130 of file SubEventGenJetProducer.cc.
References VirtualJetProducer::fjClusterSeq_, VirtualJetProducer::fjInputs_, VirtualJetProducer::fjJetDefinition_, VirtualJetProducer::fjJets_, VirtualJetProducer::getConstituents(), metsig::jet, VirtualJetProducer::jetPtMin_, dt_dqm_sourceclient_common_cff::reco, reco::Jet::setJetArea(), reco::Jet::setPileup(), subJets_, VirtualJetProducer::vertex_, and reco::writeSpecific().
Referenced by produce().
{ // run algorithm fjJets_.clear(); fjClusterSeq_ = ClusterSequencePtr( new fastjet::ClusterSequence( fjInputs_, *fjJetDefinition_ ) ); fjJets_ = fastjet::sorted_by_pt(fjClusterSeq_->inclusive_jets(jetPtMin_)); using namespace reco; for (unsigned int ijet=0;ijet<fjJets_.size();++ijet) { GenJet jet; const fastjet::PseudoJet& fjJet = fjJets_[ijet]; std::vector<fastjet::PseudoJet> fjConstituents = sorted_by_pt(fjClusterSeq_->constituents(fjJet)); std::vector<CandidatePtr> constituents = getConstituents(fjConstituents); double px=fjJet.px(); double py=fjJet.py(); double pz=fjJet.pz(); double E=fjJet.E(); double jetArea=0.0; double pu=0.; writeSpecific( jet, Particle::LorentzVector(px, py, pz, E), vertex_, constituents, iSetup); jet.setJetArea (jetArea); jet.setPileup (pu); subJets_->push_back(jet); } }
std::vector<int> cms::SubEventGenJetProducer::hydroTag_ [protected] |
Definition at line 31 of file SubEventGenJetProducer.h.
Referenced by inputTowers(), and produce().
bool cms::SubEventGenJetProducer::ignoreHydro_ [protected] |
Definition at line 33 of file SubEventGenJetProducer.h.
Referenced by produce(), and SubEventGenJetProducer().
std::vector<int> cms::SubEventGenJetProducer::nSubParticles_ [protected] |
Definition at line 32 of file SubEventGenJetProducer.h.
Referenced by produce().
std::vector<std::vector<fastjet::PseudoJet> > cms::SubEventGenJetProducer::subInputs_ [protected] |
Definition at line 29 of file SubEventGenJetProducer.h.
Referenced by inputTowers(), and produce().
std::vector<reco::GenJet>* cms::SubEventGenJetProducer::subJets_ [protected] |
Definition at line 30 of file SubEventGenJetProducer.h.
Referenced by produce(), and runAlgorithm().