1 #ifndef CorrectedJetProducer_h 2 #define CorrectedJetProducer_h 48 : mInput(consumes<
JetCollection>(fConfig.getParameter <
edm::InputTag> (
"src")))
49 , mCorrectorTokens(
edm::
vector_transform(fConfig.getParameter<
std::vector<
edm::InputTag> >(
"correctors"), [this](
edm::InputTag const &
tag){
return consumes<reco::JetCorrector>(
tag);}))
50 ,
mVerbose (fConfig.getUntrackedParameter <
bool> (
"verbose",
false))
54 produces <JetCollection>();
56 produces <JetCollection>().setBranchAlias(alias);
75 typename JetCollection::const_iterator
jet;
76 for (jet = jets->begin(); jet != jets->end(); jet++)
78 const T* referenceJet = &*
jet;
79 int index = jet-jets->begin();
81 T correctedJet = *
jet;
83 std::cout<<
"CorrectedJetProducer::produce-> original jet: " 84 <<jet->print()<<std::endl;
93 scale =
correctors[
i]->correction (*referenceJet,jetRef);
95 std::cout<<
"CorrectedJetProducer::produce-> Corrector # " 96 <<
i<<
", correction factor: "<<scale<<std::endl;
97 correctedJet.scaleEnergy (scale);
98 referenceJet = &correctedJet;
102 double scale =
correctors[
i]->correction (*referenceJet, jetRef, corrected);
104 std::cout<<
"CorrectedJetProducer::produce-> Corrector # " 105 <<
i<<
", correction factor: "<<scale<<std::endl;
106 correctedJet.setP4( corrected );
107 referenceJet = &correctedJet;
111 std::cout<<
"CorrectedJetProducer::produce-> corrected jet: " 112 <<correctedJet.print ()<<std::endl;
113 result->push_back (correctedJet);
117 std::sort (result->begin (), result->end (), compJets);
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
~CorrectedJetProducer() override
const edm::EDGetTokenT< JetCollection > mInput
std::vector< T > JetCollection
const std::vector< edm::EDGetTokenT< reco::JetCorrector > > mCorrectorTokens
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
T const * product() const
reco::Particle::LorentzVector LorentzVector
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override