1 #ifndef JetCorrectionProducer_h
2 #define JetCorrectionProducer_h
55 , mCorrectorNames(fConfig.getParameter<std::vector<std::
string> >(
"correctors"))
56 , mCorrectors(mCorrectorNames.
size(), 0)
58 ,
mVerbose (fConfig.getUntrackedParameter <bool> (
"verbose",
false))
62 produces <JetCollection>();
64 produces <JetCollection>().setBranchAlias(alias);
75 for (
unsigned i = 0;
i < mCorrectorNames.size();
i++)
78 record.
get (mCorrectorNames [
i], handle);
86 typename JetCollection::const_iterator
jet;
87 for (jet = jets->begin(); jet != jets->end(); jet++)
89 const T* referenceJet = &*
jet;
90 int index = jet-jets->begin();
92 T correctedJet = *
jet;
94 std::cout<<
"JetCorrectionProducer::produce-> original jet: "
95 <<jet->print()<<std::endl;
96 for (
unsigned i = 0;
i < mCorrectors.size(); ++
i)
98 if ( !(mCorrectors[
i]->vectorialCorrection()) ) {
101 if (!(mCorrectors[
i]->refRequired()))
102 scale = mCorrectors[
i]->correction (*referenceJet,fEvent,fSetup);
104 scale = mCorrectors[
i]->correction (*referenceJet,jetRef,fEvent,fSetup);
106 std::cout<<
"JetCorrectionProducer::produce-> Corrector # "
107 <<
i<<
", correction factor: "<<scale<<std::endl;
108 correctedJet.scaleEnergy (scale);
109 referenceJet = &correctedJet;
113 double scale = mCorrectors[
i]->correction (*referenceJet, jetRef,
114 fEvent, fSetup, corrected);
116 std::cout<<
"JetCorrectionProducer::produce-> Corrector # "
117 <<
i<<
", correction factor: "<<scale<<std::endl;
118 correctedJet.setP4( corrected );
119 referenceJet = &correctedJet;
123 std::cout<<
"JetCorrectionProducer::produce-> corrected jet: "
124 <<correctedJet.print ()<<std::endl;
125 result->push_back (correctedJet);
129 std::sort (result->begin (), result->end (), compJets);
unsigned long long cacheIdentifier() const
T getUntrackedParameter(std::string const &, T const &) const
virtual void produce(edm::Event &, const edm::EventSetup &)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::vector< std::string > mCorrectorNames
unsigned long long mCacheId
edm::EDGetTokenT< JetCollection > mInput
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
void get(HolderT &iHolder) const
JetCorrectionProducer(const edm::ParameterSet &fParameters)
virtual ~JetCorrectionProducer()
mVerbose(fConfig.getUntrackedParameter< bool >("verbose", false))
volatile std::atomic< bool > shutdown_flag false
std::vector< T > JetCollection
std::vector< const JetCorrector * > mCorrectors
tuple size
Write out results.
reco::Particle::LorentzVector LorentzVector