43 bool is_B (
const reco::Jet& fJet) {
return fabs (fJet.
eta()) < 1.3;}
44 bool is_E (
const reco::Jet& fJet) {
return fabs (fJet.
eta()) >= 1.3 && fabs (fJet.
eta()) < 3.;}
45 bool is_F (
const reco::Jet& fJet) {
return fabs (fJet.
eta()) >= 3.;}
49 : mInputCollection (iConfig.getParameter<edm::
InputTag>(
"src" )),
50 mInputGenCollection (iConfig.getParameter<edm::
InputTag>(
"srcGen" )),
51 mOutputFile (iConfig.getUntrackedParameter<std::string>(
"outputFile",
"")),
52 mMatchGenPtThreshold (iConfig.getParameter<double>(
"genPtThreshold")),
53 mGenEnergyFractionThreshold (iConfig.getParameter<double>(
"genEnergyFractionThreshold")),
54 mReverseEnergyFractionThreshold (iConfig.getParameter<double>(
"reverseEnergyFractionThreshold")),
55 mRThreshold (iConfig.getParameter<double>(
"RThreshold")),
56 mTurnOnEverything (iConfig.getUntrackedParameter<std::string>(
"TurnOnEverything",
""))
112 mPhi = dbe->
book1D(
"Phi",
"Phi", 70, -3.5, 3.5);
115 mE = dbe->
book1D(
"E",
"E", 100, 0, 500);
119 mP = dbe->
book1D(
"P",
"P", 100, 0, 500);
123 mPt = dbe->
book1D(
"Pt",
"Pt", 100, 0, 50);
143 mMjj = dbe->
book1D(
"Mjj",
"Mjj", 100, 0, 2000);
215 mHBEne = dbe->
book1D(
"HBEne",
"HBEne", 1000, -20, 100 );
217 mHEEne = dbe->
book1D(
"HEEne",
"HEEne", 1000, -20, 100 );
219 mHOEne = dbe->
book1D(
"HOEne",
"HOEne", 1000, -20, 100 );
221 mHFEne = dbe->
book1D(
"HFEne",
"HFEne", 1000, -20, 100 );
223 mEBEne = dbe->
book1D(
"EBEne",
"EBEne", 1000, -20, 100 );
225 mEEEne = dbe->
book1D(
"EEEne",
"EEEne", 1000, -20, 100 );
231 double log10PtMin = 0.5;
232 double log10PtMax = 3.75;
233 int log10PtBins = 26;
239 double linPtMax = 155;
242 int log10PtFineBins = 50;
245 log10PtBins, log10PtMin, log10PtMax);
247 log10PtBins, log10PtMin, log10PtMax);
249 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax);
251 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax);
254 mHadEnergyProfile = dbe->
bookProfile2D(
"HadEnergyProfile",
"HadEnergyProfile", 82, -41, 41, 73, 0, 73, 100, 0, 10000,
"s");
255 mEmEnergyProfile = dbe->
bookProfile2D(
"EmEnergyProfile",
"EmEnergyProfile", 82, -41, 41, 73, 0, 73, 100, 0, 10000,
"s");
257 mJetEnergyProfile = dbe->
bookProfile2D(
"JetEnergyProfile",
"JetEnergyProfile", 50, -5, 5, 36, -3.1415987, 3.1415987, 100, 0, 10000,
"s");
258 mHadJetEnergyProfile = dbe->
bookProfile2D(
"HadJetEnergyProfile",
"HadJetEnergyProfile", 50, -5, 5, 36, -3.1415987, 3.1415987, 100, 0, 10000,
"s");
259 mEMJetEnergyProfile = dbe->
bookProfile2D(
"EMJetEnergyProfile",
"EMJetEnergyProfile", 50, -5, 5, 36, -3.1415987, 3.1415987, 100, 0, 10000,
"s");
263 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 101, 0, 1.01);
265 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 101, 0, 1.01);
266 mRMatch = dbe->
book3D(
"RMatch",
"delta(R)(Gen-Calo) vs LOG(pT_gen) vs eta",
267 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 60, 0, 3);
269 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, -1, 1);
271 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, -1, 1);
272 mEScale = dbe->
book3D(
"EScale",
"EnergyScale vs LOG(pT_gen) vs eta",
273 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, 0, 2);
275 linPtBins, linPtMin, linPtMax, etaBins, etaMin, etaMax, 100, 0, 2);
276 mDeltaE = dbe->
book3D(
"DeltaE",
"DeltaE vs LOG(pT_gen) vs eta",
277 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 2000, -200, 200);
280 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, 0, 2);
282 log10PtFineBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, 0, 2);
286 log10PtBins, log10PtMin, log10PtMax, 0, 2,
"s");
288 log10PtBins, log10PtMin, log10PtMax, 0, 2,
"s");
290 log10PtBins, log10PtMin, log10PtMax, 0, 2,
"s");
292 log10PtBins, log10PtMin, log10PtMax, 0, 2,
" ");
294 log10PtBins, log10PtMin, log10PtMax, 0, 2,
" ");
296 log10PtBins, log10PtMin, log10PtMax, 0, 2,
" ");
299 etaBins, etaMin, etaMax, 0., 2.,
"s");
301 etaBins, etaMin, etaMax, 0., 2.,
"s");
303 etaBins, etaMin, etaMax, 0., 2.,
"s");
305 etaBins, etaMin, etaMax, 0., 2.,
"s");
307 etaBins, etaMin, etaMax, 0., 2.,
" ");
309 etaBins, etaMin, etaMax, 0., 2.,
" ");
311 etaBins, etaMin, etaMax, 0., 2.,
" ");
313 etaBins, etaMin, etaMax, 0., 2.,
" ");
355 LogInfo(
"OutputInfo") <<
" CaloJet histograms will NOT be saved";
376 double countsfornumberofevents = 1;
385 HepMC::GenEvent * myGenEvent =
new HepMC::GenEvent(*(evt->GetEvent()));
387 double pthat = myGenEvent->event_scale();
403 edm::LogInfo(
"OutputInfo") <<
" failed to retrieve data required by MET Task";
404 edm::LogInfo(
"OutputInfo") <<
" MET Task cannot continue...!";
407 calomet = &(calometcol->front());
409 double caloSumET = calomet->
sumEt();
410 double caloMETSig = calomet->
mEtSig();
411 double caloMET = calomet->
pt();
412 double caloMEx = calomet->
px();
413 double caloMEy = calomet->
py();
414 double caloMETPhi = calomet->
phi();
433 mEvent.
getByLabel(
"towerMaker", caloTowers );
454 std::vector<edm::Handle<HBHERecHitCollection> > colls;
456 std::vector<edm::Handle<HBHERecHitCollection> >::iterator
i;
457 for (i=colls.begin(); i!=colls.end(); i++) {
476 std::vector<edm::Handle<HFRecHitCollection> > colls;
478 std::vector<edm::Handle<HFRecHitCollection> >::iterator
i;
479 for (i=colls.begin(); i!=colls.end(); i++) {
493 std::vector<edm::Handle<HORecHitCollection> > colls;
495 std::vector<edm::Handle<HORecHitCollection> >::iterator
i;
496 for (i=colls.begin(); i!=colls.end(); i++) {
508 std::vector<edm::Handle<EBRecHitCollection> > colls;
510 std::vector<edm::Handle<EBRecHitCollection> >::iterator
i;
511 for (i=colls.begin(); i!=colls.end(); i++) {
526 std::vector<edm::Handle<EERecHitCollection> > colls;
528 std::vector<edm::Handle<EERecHitCollection> >::iterator
i;
529 for (i=colls.begin(); i!=colls.end(); i++) {
549 if (!caloJets.
isValid())
return;
550 CaloJetCollection::const_iterator
jet = caloJets->begin ();
555 for (; jet != caloJets->end (); jet++, jetIndex++) {
558 if (jet->pt() > 10.) {
559 if (fabs(jet->eta()) > 1.3)
564 if (jet->pt() > 10.) {
589 if (jet == caloJets->begin ()) {
601 p4tmp[0] = jet->p4();
605 p4tmp[1] = jet->p4();
644 mHadJetEnergyProfile->
Fill (jet->eta(), jet->phi(), jet->hadEnergyInHO()+jet->hadEnergyInHB()+jet->hadEnergyInHF()+jet->hadEnergyInHE());
645 mEMJetEnergyProfile->
Fill (jet->eta(), jet->phi(), jet->emEnergyInEB()+jet->emEnergyInEE()+jet->emEnergyInHF());
659 for (
int istep = 0; istep < 100; ++istep) {
661 float ptStep = (istep * (200./100.));
663 for ( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end(); ++ cal ) {
664 if ( cal->pt() > ptStep ) njet++;
669 for (
int istep = 0; istep < 100; ++istep) {
671 float ptStep = (istep * (4000./100.));
672 for ( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end(); ++ cal ) {
673 if ( cal->pt() > ptStep ) njet++;
681 if (!genJets.
isValid())
return;
682 GenJetCollection::const_iterator gjet = genJets->begin ();
684 for (; gjet != genJets->end (); gjet++, gjetIndex++) {
690 if (gjet == genJets->begin ()) {
703 std::vector <std::vector <const reco::GenParticle*> > genJetConstituents (genJets->size());
704 std::vector <std::vector <const reco::GenParticle*> > caloJetConstituents (caloJets->size());
708 for (
unsigned iGenJet = 0; iGenJet < genJets->size(); ++iGenJet) {
709 genJetConstituents [iGenJet] = jetMatching.
getGenParticles ((*genJets) [iGenJet]);
712 for (
unsigned iCaloJet = 0; iCaloJet < caloJets->size(); ++iCaloJet) {
713 caloJetConstituents [iCaloJet] = jetMatching.
getGenParticles ((*caloJets) [iCaloJet],
false);
717 for (
unsigned iGenJet = 0; iGenJet < genJets->size(); ++iGenJet) {
719 const GenJet& genJet = (*genJets) [iGenJet];
720 double genJetPt = genJet.
pt();
724 if (fabs(genJet.
eta()) > 5.)
continue;
726 double logPtGen = log10 (genJetPt);
729 if (caloJets->size() <= 0)
continue;
731 unsigned iCaloJetBest = 0;
732 double deltaRBest = 999.;
733 for (
unsigned iCaloJet = 0; iCaloJet < caloJets->size(); ++iCaloJet) {
734 double dR =
deltaR (genJet.
eta(), genJet.
phi(), (*caloJets) [iCaloJet].eta(), (*caloJets) [iCaloJet].phi());
743 if (dR < deltaRBest) {
744 iCaloJetBest = iCaloJet;
756 unsigned iCaloJetBest = 0;
757 double energyFractionBest = 0.;
758 for (
unsigned iCaloJet = 0; iCaloJet < caloJets->size(); ++iCaloJet) {
760 caloJetConstituents [iCaloJet]);
761 if (energyFraction > energyFractionBest) {
762 iCaloJetBest = iCaloJet;
763 energyFractionBest = energyFraction;
770 double reverseEnergyFraction = jetMatching.
overlapEnergyFraction (caloJetConstituents [iCaloJetBest],
771 genJetConstituents [iGenJet]);
786 double logPtGen = log10 (fGenJet.
pt());
787 double PtGen = fGenJet.
pt();
788 double PtCalo = fCaloJet.
pt();
792 double PtThreshold = 10.;
803 if (fGenJet.
pt()>PtThreshold) {
809 if (fCaloJet.
pt() > PtThreshold) {
815 if (fabs(fGenJet.
eta())<1.3) {
819 if (PtGen>60.0 && PtGen<120.0) {
822 if (PtGen>200.0 && PtGen<300.0) {
825 if (PtGen>600.0 && PtGen<900.0) {
828 if (PtGen>2700.0 && PtGen<3500.0) {
833 if (fabs(fGenJet.
eta())>1.3 && fabs(fGenJet.
eta())<3.0) {
837 if (PtGen>60.0 && PtGen<120.0) {
840 if (PtGen>200.0 && PtGen<300.0) {
843 if (PtGen>600.0 && PtGen<900.0) {
846 if (PtGen>2700.0 && PtGen<3500.0) {
851 if (fabs(fGenJet.
eta())>3.0 && fabs(fGenJet.
eta())<5.0) {
855 if (PtGen>60.0 && PtGen<120.0) {
858 if (PtGen>200.0 && PtGen<300.0) {
861 if (PtGen>600.0 && PtGen<900.0) {
864 if (PtGen>2700.0 && PtGen<3500.0) {
869 if (fGenJet.
pt()>60.0 && fGenJet.
pt()<120.0) {
875 if (fGenJet.
pt()>200.0 && fGenJet.
pt()<300.0) {
881 if (fGenJet.
pt()>600.0 && fGenJet.
pt()<900.0) {
887 if (fGenJet.
pt()>2700.0 && fGenJet.
pt()<3500.0) {
MonitorElement * mEtaFineBin3m
void getManyByType(std::vector< Handle< PROD > > &results) const
MonitorElement * mpTScaleB_s
MonitorElement * mpTScale1DF_60_120
MonitorElement * mEmEnergyInEE_3000
MonitorElement * mMatchedGenJetsPt
Jets made from CaloTowers.
void fillMatchHists(const reco::GenJet &fGenJet, const reco::CaloJet &fCaloJet)
edm::InputTag mInputCollection
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
MonitorElement * mHadEnergyInHE_80
MonitorElement * mCaloMEy_3000
MonitorElement * mHadEnergyInHB_80
MonitorElement * mMaxEInHadTowers
double mReverseEnergyFractionThreshold
MonitorElement * mEtaFineBin2p
MonitorElement * mpTScale1DF_200_300
MonitorElement * mConstituents
MonitorElement * mpTScale1D_60_120
MonitorElement * mPtFirst
MonitorElement * book3D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ)
Book 3D histogram.
MonitorElement * mCaloMEx
MonitorElement * mGenPt_3000
MonitorElement * mpTScale1DE_60_120
MonitorElement * mEmEnergyInEB_3000
MonitorElement * mpTScale_600_900_d
MonitorElement * mHadEnergyInHE
Base class for all types of Jets.
virtual void analyze(const edm::Event &, const edm::EventSetup &)
MonitorElement * mNJetsEtaF
MonitorElement * mEtaFineBin
MonitorElement * mpTScaleB_d
std::vector< CaloTower >::const_iterator const_iterator
MonitorElement * mpTScale1DE_600_900
MonitorElement * mEtaFineBin2m
MonitorElement * mpTScale_600_900_s
MonitorElement * mHFTotal_80
MonitorElement * mPtFirst_3000
std::string mTurnOnEverything
MonitorElement * mHadEnergyInHB
MonitorElement * mHadEnergyInHE_3000
MonitorElement * mpTScale1DB_60_120
MonitorElement * mpTScale_2700_3500_s
MonitorElement * mEScale_pt10
MonitorElement * mHFShort_80
double mMatchGenPtThreshold
MonitorElement * mEmEnergyInHF
MonitorElement * mpTScale1D_200_300
MonitorElement * mHadEnergyInHO_3000
MonitorElement * mpTScaleF_s
MonitorElement * mpTScale_2700_3500_d
MonitorElement * mpTScale1DE_2700_3500
virtual double eta() const
momentum pseudorapidity
MonitorElement * mHadEnergyInHB_3000
MonitorElement * mpTScale1DF_2700_3500
MonitorElement * mEnergyFractionEm
MonitorElement * mCaloMEy
MonitorElement * mCaloMETSig
MonitorElement * mEmTiming
MonitorElement * mAllGenJetsPt
MonitorElement * mHadTiming
MonitorElement * mHFTotal_3000
MonitorElement * mHFShort_3000
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
MonitorElement * mCaloMETSig_3000
MonitorElement * mCaloMET
virtual double energy() const
energy
MonitorElement * mPhiFirst
MonitorElement * mpTScale_200_300_s
MonitorElement * mHadJetEnergyProfile
MonitorElement * mEmEnergyProfile
MonitorElement * mEnergyFractionHadronic
MonitorElement * mHFLong_3000
MonitorElement * mGenEtaFirst
MonitorElement * mGenJetMatchEnergyFraction
MonitorElement * mConstituents_80
MonitorElement * mCaloMEx_3000
MonitorElement * mEmEnergyInEB_80
MonitorElement * mPhiFineBin
MonitorElement * mpTScale1DB_600_900
MonitorElement * mEmEnergyInEE_80
MonitorElement * mHadEnergyInHO
Jets made from MC generator particles.
MonitorElement * mpTScale1DF_600_900
MonitorElement * mEMJetEnergyProfile
MonitorElement * mHadEnergyInHO_80
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
MonitorElement * mReverseMatchEnergyFraction
MonitorElement * mCaloMETPhi
MonitorElement * mHadEnergyInHF
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
MonitorElement * mMjj_3000
double deltaR(double eta1, double eta2, double phi1, double phi2)
MonitorElement * mPthat_3000
MonitorElement * mHFShort
MonitorElement * mEScaleFineBin
MonitorElement * mEtaFineBin1p
MonitorElement * numberofevents
MonitorElement * mHadEnergyProfile
MonitorElement * mPt_3000
MonitorElement * mpTScale_200_300_d
MonitorElement * mMass_3000
virtual double px() const
x coordinate of momentum vector
MonitorElement * mpTScaleE_d
MonitorElement * mPthat_80
virtual double pt() const
transverse momentum
MonitorElement * mpTScale_60_120_d
MonitorElement * mGenPt_80
MonitorElement * mlinEScale
MonitorElement * mDeltaEta
MonitorElement * mpTScale1DB_2700_3500
T const * product() const
MonitorElement * mpTScale1DE_200_300
MonitorElement * mHFLong_80
MonitorElement * mCaloSumET_3000
MonitorElement * mpTScale1DB_200_300
MonitorElement * mpTScaleE_s
MonitorElement * mHFTotal
MonitorElement * mEmEnergyInEE
MonitorElement * mMass_80
MonitorElement * mNJetsEtaC
MonitorElement * mEFirst_80
MonitorElement * mEtaFineBin1m
MonitorElement * mJetEnergyProfile
MonitorElement * mCaloMET_3000
MonitorElement * mPtFirst_80
MonitorElement * mGenPhiFirst
MonitorElement * mMaxEInEmTowers
MonitorElement * mEtaFirst
MonitorElement * mpTScaleF_d
double mGenEnergyFractionThreshold
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
MonitorElement * mEtaFineBin3p
MonitorElement * mpTScale1D_600_900
MonitorElement * mEFirst_3000
virtual double phi() const
momentum azimuthal angle
MonitorElement * mpTScale_60_120_s
MonitorElement * mMatchedGenJetsEta
virtual double py() const
y coordinate of momentum vector
MonitorElement * mpTScale1D_2700_3500
MonitorElement * mCaloSumET
void setCurrentFolder(const std::string &fullpath)
MonitorElement * mDeltaPhi
MonitorElement * mEmEnergyInEB
MonitorElement * mAllGenJetsEta
CaloJetTester(const edm::ParameterSet &)
MonitorElement * bookProfile2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ, const char *option="s")
edm::InputTag mInputGenCollection