|
[Rivet-svn] r3555 - in trunk: . data/anainfo data/plotinfo include/Rivet/Projections src/Analyses src/Projectionsblackhole at projects.hepforge.org blackhole at projects.hepforge.orgTue Feb 14 14:34:24 GMT 2012
Author: fsiegert Date: Tue Feb 14 14:34:24 2012 New Revision: 3555 Log: Bugfixes and improvements for MC_TTBAR: - Avoid assert failure with logspace starting at 0.0 - Ignore charged lepton in jet finding (otherwise jet multi is always +1) - Add some dR/deta/dphi distributions as noted in TODO - Change pT plots to logspace as well (to avoid low-stat high pT bins) Modified: trunk/ChangeLog trunk/data/anainfo/MC_TTBAR.info trunk/data/plotinfo/MC_TTBAR.plot trunk/include/Rivet/Projections/ChargedLeptons.hh trunk/src/Analyses/MC_TTBAR.cc trunk/src/Projections/ChargedLeptons.cc Modified: trunk/ChangeLog ============================================================================== --- trunk/ChangeLog Tue Feb 14 13:06:54 2012 (r3554) +++ trunk/ChangeLog Tue Feb 14 14:34:24 2012 (r3555) @@ -1,3 +1,11 @@ +2012-02-14 Frank Siegert <frank.siegert at cern.ch> + * Bugfixes and improvements for MC_TTBAR: + - Avoid assert failure with logspace starting at 0.0 + - Ignore charged lepton in jet finding (otherwise jet multi is always + +1). + - Add some dR/deta/dphi distributions as noted in TODO + - Change pT plots to logspace as well (to avoid low-stat high pT bins) + 2012-02-10 Hendrik Hoeth <hendrik.hoeth at cern.ch> * rivet-mkhtml -c option now has the semantics of a .plot Modified: trunk/data/anainfo/MC_TTBAR.info ============================================================================== --- trunk/data/anainfo/MC_TTBAR.info Tue Feb 14 13:06:54 2012 (r3554) +++ trunk/data/anainfo/MC_TTBAR.info Tue Feb 14 14:34:24 2012 (r3555) @@ -13,5 +13,3 @@ PtCuts: [0] Description: This is a pure Monte Carlo study for semi-leptonic $t\bar{t}$ production. -ToDo: - - Add delta(R,phi,eta) plots between various b and light jets, and w.r.t the top and W candidates Modified: trunk/data/plotinfo/MC_TTBAR.plot ============================================================================== --- trunk/data/plotinfo/MC_TTBAR.plot Tue Feb 14 13:06:54 2012 (r3554) +++ trunk/data/plotinfo/MC_TTBAR.plot Tue Feb 14 14:34:24 2012 (r3555) @@ -1,72 +1,89 @@ +# BEGIN PLOT /MC_TTBAR/jet.?_[1234]_pT +XLabel=$p_\perp$ [GeV] +YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}p_\perp$ [GeV$^{-1}$] +LogX=1 +# END PLOT + # BEGIN PLOT /MC_TTBAR/jet_1_pT Title=Transverse momentum distribution for jet 1 -XLabel=$p_\perp$ [GeV] -YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}p_\perp$ [GeV$^-1$] # END PLOT # BEGIN PLOT /MC_TTBAR/jet_2_pT Title=Transverse momentum distribution for jet 2 -XLabel=$p_\perp$ [GeV] -YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}p_\perp$ [GeV$^-1$] # END PLOT # BEGIN PLOT /MC_TTBAR/jet_3_pT Title=Transverse momentum distribution for jet 3 -XLabel=$p_\perp$ [GeV] -YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}p_\perp$ [GeV$^-1$] # END PLOT # BEGIN PLOT /MC_TTBAR/jet_4_pT Title=Transverse momentum distribution for jet 4 -XLabel=$p_\perp$ [GeV] -YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}p_\perp$ [GeV$^-1$] # END PLOT # BEGIN PLOT /MC_TTBAR/jet_HT Title=$H_T$ distribution for all jets XLabel=$H_T$ [GeV] -YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}H_T$ [GeV$^-1$] +YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}H_T$ [GeV$^{-1}$] LogX=1 # END PLOT # BEGIN PLOT /MC_TTBAR/jetb_1_pT Title=Transverse momentum distribution for $b$-jet 1 -XLabel=$p_\perp$ [GeV] -YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}p_\perp$ [GeV$^-1$] # END PLOT # BEGIN PLOT /MC_TTBAR/jetb_2_pT Title=Transverse momentum distribution for $b$-jet 2 -XLabel=$p_\perp$ [GeV] -YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}p_\perp$ [GeV$^-1$] # END PLOT -# + # BEGIN PLOT /MC_TTBAR/jetl_1_pT Title=Transverse momentum distribution for light jet 1 -XLabel=$p_\perp$ [GeV] -YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}p_\perp$ [GeV$^-1$] # END PLOT # BEGIN PLOT /MC_TTBAR/jetl_2_pT Title=Transverse momentum distribution for light jet 2 -XLabel=$p_\perp$ [GeV] -YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}p_\perp$ [GeV$^-1$] # END PLOT # BEGIN PLOT /MC_TTBAR/W_mass Title=Mass distribution for $W$ bosons XLabel=$m_{jj}$ [GeV] -YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}m_{jj}$ [GeV$^-1$] +YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}m_{jj}$ [GeV$^{-1}$] +LogY=0 # END PLOT # BEGIN PLOT /MC_TTBAR/t_mass Title=Mass distribution for reconstructed top -XLabel=$m_{q\bar{q}b$ [GeV] -YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}m_{q\bar{q}b}$ [GeV$^-1$] +XLabel=$m_{q\bar{q}b}$ [GeV] +YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}m_{q\bar{q}b}$ [GeV$^{-1}$] +LogY=0 # END PLOT # BEGIN PLOT /MC_TTBAR/t_mass_W_cut Title=Mass distribution for reconstructed top after $m_W$ cut -XLabel=$m_{q\bar{q}b$ [GeV] -YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}m_{q\bar{q}b}$ [GeV$^-1$] +XLabel=$m_{q\bar{q}b}$ [GeV] +YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}m_{q\bar{q}b}$ [GeV$^{-1}$] +LogY=0 +# END PLOT + +# BEGIN PLOT /MC_TTBAR/.*_mass +XLabel=$m$ [GeV] +YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}m$ [GeV$^{-1}$] +# END PLOT + +# BEGIN PLOT /MC_TTBAR/.*_dR +XLabel=$\Delta R$ +YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}\Delta R$ +LogY=0 # END PLOT + +# BEGIN PLOT /MC_TTBAR/.*_deta +XLabel=$\Delta \eta$ +YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}\Delta \eta$ +LogY=0 +# END PLOT + +# BEGIN PLOT /MC_TTBAR/.*_dphi +XLabel=$\Delta \phi$ +YLabel=$1/\sigma \, \mathrm{d}\sigma/\mathrm{d}\Delta \phi$ +LogY=0 +# END PLOT + Modified: trunk/include/Rivet/Projections/ChargedLeptons.hh ============================================================================== --- trunk/include/Rivet/Projections/ChargedLeptons.hh Tue Feb 14 13:06:54 2012 (r3554) +++ trunk/include/Rivet/Projections/ChargedLeptons.hh Tue Feb 14 14:34:24 2012 (r3555) @@ -13,7 +13,7 @@ /// @brief Get charged final-state leptons /// /// NB. This is just electrons and muons, unless you set taus stable! - class ChargedLeptons : public Projection { + class ChargedLeptons : public FinalState { public: /// Constructor @@ -40,14 +40,9 @@ /// Access the projected leptons. const ParticleVector& chargedLeptons() const { - return _theChargedLeptons; + return _theParticles; } - private: - - /// The leptons - ParticleVector _theChargedLeptons; - }; Modified: trunk/src/Analyses/MC_TTBAR.cc ============================================================================== --- trunk/src/Analyses/MC_TTBAR.cc Tue Feb 14 13:06:54 2012 (r3554) +++ trunk/src/Analyses/MC_TTBAR.cc Tue Feb 14 14:34:24 2012 (r3555) @@ -1,5 +1,6 @@ #include "Rivet/Analysis.hh" #include "Rivet/Projections/FinalState.hh" +#include "Rivet/Projections/VetoedFinalState.hh" #include "Rivet/Projections/ChargedLeptons.hh" #include "Rivet/Projections/MissingMomentum.hh" #include "Rivet/Projections/FastJets.hh" @@ -15,9 +16,6 @@ /// Minimal constructor MC_TTBAR() : Analysis("MC_TTBAR") { - _sumwPassedLepJetMET = 0; - _sumwPassedJetID = 0; - _sumwPassedWMass = 0; } @@ -30,32 +28,51 @@ // A FinalState is used to select particles within |eta| < 4.2 and with pT // > 30 GeV, out of which the ChargedLeptons projection picks only the // electrons and muons, to be accessed later as "LFS". - addProjection(ChargedLeptons(FinalState(-4.2, 4.2, 30*GeV)), "LFS"); + ChargedLeptons lfs(FinalState(-4.2, 4.2, 30*GeV)); + addProjection(lfs, "LFS"); // A second FinalState is used to select all particles in |eta| < 4.2, // with no pT cut. This is used to construct jets and measure missing // transverse energy. - FinalState fs(-4.2, 4.2, 0*GeV); + VetoedFinalState fs(FinalState(-4.2, 4.2, 0*GeV)); + fs.addVetoOnThisFinalState(lfs); addProjection(FastJets(fs, FastJets::ANTIKT, 0.6), "Jets"); addProjection(MissingMomentum(fs), "MissingET"); // Booking of histograms _h_njets = bookHistogram1D("jet_mult", 11, -0.5, 10.5); // - _h_jet_1_pT = bookHistogram1D("jet_1_pT", 50, 0, 500); - _h_jet_2_pT = bookHistogram1D("jet_2_pT", 50, 0, 400); - _h_jet_3_pT = bookHistogram1D("jet_3_pT", 50, 0, 300); - _h_jet_4_pT = bookHistogram1D("jet_4_pT", 50, 0, 200); - _h_jet_HT = bookHistogram1D("jet_HT", logspace(0, 2000, 50)); + _h_jet_1_pT = bookHistogram1D("jet_1_pT", logspace(20.0, 500.0, 50)); + _h_jet_2_pT = bookHistogram1D("jet_2_pT", logspace(20.0, 400.0, 50)); + _h_jet_3_pT = bookHistogram1D("jet_3_pT", logspace(20.0, 300.0, 50)); + _h_jet_4_pT = bookHistogram1D("jet_4_pT", logspace(20.0, 200.0, 50)); + _h_jet_HT = bookHistogram1D("jet_HT", logspace(100.0, 2000.0, 50)); // - _h_bjet_1_pT = bookHistogram1D("jetb_1_pT", 50, 0, 400); - _h_bjet_2_pT = bookHistogram1D("jetb_2_pT", 50, 0, 300); + _h_bjet_1_pT = bookHistogram1D("jetb_1_pT", logspace(20.0, 400.0, 50)); + _h_bjet_2_pT = bookHistogram1D("jetb_2_pT", logspace(20.0, 300.0, 50)); // - _h_ljet_1_pT = bookHistogram1D("jetl_1_pT", 50, 0, 400); - _h_ljet_2_pT = bookHistogram1D("jetl_2_pT", 50, 0, 300); + _h_ljet_1_pT = bookHistogram1D("jetl_1_pT", logspace(20.0, 400.0, 50)); + _h_ljet_2_pT = bookHistogram1D("jetl_2_pT", logspace(20.0, 300.0, 50)); // _h_W_mass = bookHistogram1D("W_mass", 75, 30, 180); _h_t_mass = bookHistogram1D("t_mass", 150, 130, 430); _h_t_mass_W_cut = bookHistogram1D("t_mass_W_cut", 150, 130, 430); + // + _h_jetb_1_jetb_2_dR = bookHistogram1D("jetb_1_jetb_2_dR", 20, 0.0, 7.0); + _h_jetb_1_jetb_2_deta = bookHistogram1D("jetb_1_jetb_2_deta", 20, 0.0, 7.0); + _h_jetb_1_jetb_2_dphi = bookHistogram1D("jetb_1_jetb_2_dphi", 20, 0.0, M_PI); + _h_jetb_1_jetl_1_dR = bookHistogram1D("jetb_1_jetl_1_dR", 20, 0.0, 7.0); + _h_jetb_1_jetl_1_deta = bookHistogram1D("jetb_1_jetl_1_deta", 20, 0.0, 7.0); + _h_jetb_1_jetl_1_dphi = bookHistogram1D("jetb_1_jetl_1_dphi", 20, 0.0, M_PI); + _h_jetl_1_jetl_2_dR = bookHistogram1D("jetl_1_jetl_2_dR", 20, 0.0, 7.0); + _h_jetl_1_jetl_2_deta = bookHistogram1D("jetl_1_jetl_2_deta", 20, 0.0, 7.0); + _h_jetl_1_jetl_2_dphi = bookHistogram1D("jetl_1_jetl_2_dphi", 20, 0.0, M_PI); + _h_jetb_1_W_dR = bookHistogram1D("jetb_1_W_dR", 20, 0.0, 7.0); + _h_jetb_1_W_deta = bookHistogram1D("jetb_1_W_deta", 20, 0.0, 7.0); + _h_jetb_1_W_dphi = bookHistogram1D("jetb_1_W_dphi", 20, 0.0, M_PI); + _h_jetb_1_l_dR = bookHistogram1D("jetb_1_l_dR", 20, 0.0, 7.0); + _h_jetb_1_l_deta = bookHistogram1D("jetb_1_l_deta", 20, 0.0, 7.0); + _h_jetb_1_l_dphi = bookHistogram1D("jetb_1_l_dphi", 20, 0.0, M_PI); + _h_jetb_1_l_mass = bookHistogram1D("jetb_1_l_mass", 40, 0.0, 500.0); } @@ -96,7 +113,6 @@ } // Update passed-cuts counter and fill all-jets histograms - _sumwPassedLepJetMET += weight; _h_jet_1_pT->fill(alljets[0].momentum().pT()/GeV, weight); _h_jet_2_pT->fill(alljets[1].momentum().pT()/GeV, weight); _h_jet_3_pT->fill(alljets[2].momentum().pT()/GeV, weight); @@ -142,6 +158,7 @@ } } MSG_DEBUG("Number of b-jets = " << bjets.size()); + MSG_DEBUG("Number of l-jets = " << ljets.size()); if (bjets.size() != 2) { MSG_DEBUG("Event failed post-lepton-isolation b-tagging cut"); vetoEvent; @@ -152,7 +169,6 @@ } // Plot the pTs of the identified jets. - _sumwPassedJetID += weight; _h_bjet_1_pT->fill(bjets[0].momentum().pT(), weight); _h_bjet_2_pT->fill(bjets[1].momentum().pT(), weight); _h_ljet_1_pT->fill(ljets[0].momentum().pT(), weight); @@ -188,28 +204,65 @@ // Placing a cut on the well-known W mass helps to reduce backgrounds if (inRange(W.mass()/GeV, 75, 85)) { MSG_DEBUG("W found with mass " << W.mass()/GeV << " GeV"); - _sumwPassedWMass += weight; _h_t_mass_W_cut->fill(t1.mass(), weight); _h_t_mass_W_cut->fill(t2.mass(), weight); + + _h_jetb_1_jetb_2_dR->fill(deltaR(bjets[0].momentum(), bjets[1].momentum()),weight); + _h_jetb_1_jetb_2_deta->fill(fabs(bjets[0].momentum().eta()-bjets[1].momentum().eta()),weight); + _h_jetb_1_jetb_2_dphi->fill(deltaPhi(bjets[0].momentum(),bjets[1].momentum()),weight); + + _h_jetb_1_jetl_1_dR->fill(deltaR(bjets[0].momentum(), ljets[0].momentum()),weight); + _h_jetb_1_jetl_1_deta->fill(fabs(bjets[0].momentum().eta()-ljets[0].momentum().eta()),weight); + _h_jetb_1_jetl_1_dphi->fill(deltaPhi(bjets[0].momentum(),ljets[0].momentum()),weight); + + _h_jetl_1_jetl_2_dR->fill(deltaR(ljets[0].momentum(), ljets[1].momentum()),weight); + _h_jetl_1_jetl_2_deta->fill(fabs(ljets[0].momentum().eta()-ljets[1].momentum().eta()),weight); + _h_jetl_1_jetl_2_dphi->fill(deltaPhi(ljets[0].momentum(),ljets[1].momentum()),weight); + + _h_jetb_1_W_dR->fill(deltaR(bjets[0].momentum(), W),weight); + _h_jetb_1_W_deta->fill(fabs(bjets[0].momentum().eta()-W.eta()),weight); + _h_jetb_1_W_dphi->fill(deltaPhi(bjets[0].momentum(),W),weight); + + FourMomentum l=lfs.chargedLeptons()[0].momentum(); + _h_jetb_1_l_dR->fill(deltaR(bjets[0].momentum(), l),weight); + _h_jetb_1_l_deta->fill(fabs(bjets[0].momentum().eta()-l.eta()),weight); + _h_jetb_1_l_dphi->fill(deltaPhi(bjets[0].momentum(),l),weight); + _h_jetb_1_l_mass->fill(FourMomentum(bjets[0].momentum()+l).mass(), weight); } } void finalize() { - scale(_h_njets, 1/_sumwPassedLepJetMET); - scale(_h_jet_1_pT, 1/_sumwPassedLepJetMET); - scale(_h_jet_2_pT, 1/_sumwPassedLepJetMET); - scale(_h_jet_3_pT, 1/_sumwPassedLepJetMET); - scale(_h_jet_4_pT, 1/_sumwPassedLepJetMET); - scale(_h_jet_HT, 1/_sumwPassedLepJetMET); - scale(_h_bjet_1_pT, 1/_sumwPassedJetID); - scale(_h_bjet_2_pT, 1/_sumwPassedJetID); - scale(_h_ljet_1_pT, 1/_sumwPassedJetID); - scale(_h_ljet_2_pT, 1/_sumwPassedJetID); - scale(_h_W_mass, 1/_sumwPassedJetID); - scale(_h_t_mass, 1/_sumwPassedJetID); - scale(_h_t_mass_W_cut, 1/_sumwPassedWMass); + normalize(_h_njets); + normalize(_h_jet_1_pT); + normalize(_h_jet_2_pT); + normalize(_h_jet_3_pT); + normalize(_h_jet_4_pT); + normalize(_h_jet_HT); + normalize(_h_bjet_1_pT); + normalize(_h_bjet_2_pT); + normalize(_h_ljet_1_pT); + normalize(_h_ljet_2_pT); + normalize(_h_W_mass); + normalize(_h_t_mass); + normalize(_h_t_mass_W_cut); + normalize(_h_jetb_1_jetb_2_dR); + normalize(_h_jetb_1_jetb_2_deta); + normalize(_h_jetb_1_jetb_2_dphi); + normalize(_h_jetb_1_jetl_1_dR); + normalize(_h_jetb_1_jetl_1_deta); + normalize(_h_jetb_1_jetl_1_dphi); + normalize(_h_jetl_1_jetl_2_dR); + normalize(_h_jetl_1_jetl_2_deta); + normalize(_h_jetl_1_jetl_2_dphi); + normalize(_h_jetb_1_W_dR); + normalize(_h_jetb_1_W_deta); + normalize(_h_jetb_1_W_dphi); + normalize(_h_jetb_1_l_dR); + normalize(_h_jetb_1_l_deta); + normalize(_h_jetb_1_l_dphi); + normalize(_h_jetb_1_l_mass); } //@} @@ -217,9 +270,6 @@ private: - // Passed-cuts counters - double _sumwPassedLepJetMET, _sumwPassedJetID, _sumwPassedWMass; - // @name Histogram data members //@{ @@ -230,6 +280,12 @@ AIDA::IHistogram1D *_h_ljet_1_pT, *_h_ljet_2_pT; AIDA::IHistogram1D *_h_W_mass; AIDA::IHistogram1D *_h_t_mass, *_h_t_mass_W_cut; + AIDA::IHistogram1D *_h_jetb_1_jetb_2_dR, *_h_jetb_1_jetb_2_deta, *_h_jetb_1_jetb_2_dphi; + AIDA::IHistogram1D *_h_jetb_1_jetl_1_dR, *_h_jetb_1_jetl_1_deta, *_h_jetb_1_jetl_1_dphi; + AIDA::IHistogram1D *_h_jetl_1_jetl_2_dR, *_h_jetl_1_jetl_2_deta, *_h_jetl_1_jetl_2_dphi; + AIDA::IHistogram1D *_h_jetb_1_W_dR, *_h_jetb_1_W_deta, *_h_jetb_1_W_dphi; + AIDA::IHistogram1D *_h_jetb_1_l_dR, *_h_jetb_1_l_deta, *_h_jetb_1_l_dphi,*_h_jetb_1_l_mass; + //@} Modified: trunk/src/Projections/ChargedLeptons.cc ============================================================================== --- trunk/src/Projections/ChargedLeptons.cc Tue Feb 14 13:06:54 2012 (r3554) +++ trunk/src/Projections/ChargedLeptons.cc Tue Feb 14 14:34:24 2012 (r3555) @@ -14,16 +14,16 @@ void ChargedLeptons::project(const Event& evt) { // Reset result - _theChargedLeptons.clear(); + _theParticles.clear(); // Loop over charged particles and fill vector with leptons const FinalState& fs = applyProjection<FinalState>(evt, "ChFS"); foreach (const Particle& p, fs.particles()) { if (PID::isLepton(p.pdgId())) { - _theChargedLeptons += Particle(p); + _theParticles += Particle(p); } } - std::sort(_theChargedLeptons.begin(), _theChargedLeptons.end(), cmpParticleByPt); + std::sort(_theParticles.begin(), _theParticles.end(), cmpParticleByPt); }
More information about the Rivet-svn mailing list |