|
[Rivet-svn] r2272 - in trunk: . doc include/Rivet/Projections src/Analyses src/Projectionsblackhole at projects.hepforge.org blackhole at projects.hepforge.orgFri Feb 26 21:50:23 GMT 2010
Author: buckley Date: Fri Feb 26 21:50:22 2010 New Revision: 2272 Log: Make W finder projection work without cuts on the neutrinos, and enhance a few other final state projections along the way. Modified: trunk/ChangeLog trunk/doc/Makefile.am trunk/include/Rivet/Projections/ChargedFinalState.hh trunk/include/Rivet/Projections/IdentifiedFinalState.hh trunk/include/Rivet/Projections/MergedFinalState.hh trunk/include/Rivet/Projections/WFinder.hh trunk/src/Analyses/CDF_1991_S2313472.cc trunk/src/Analyses/D0_1998_S3711838.cc trunk/src/Analyses/D0_2008_S7837160.cc trunk/src/Analyses/MC_WANALYSIS.cc trunk/src/Analyses/Makefile.am trunk/src/Projections/ChargedFinalState.cc trunk/src/Projections/IdentifiedFinalState.cc trunk/src/Projections/WFinder.cc Modified: trunk/ChangeLog ============================================================================== --- trunk/ChangeLog Thu Feb 25 16:55:38 2010 (r2271) +++ trunk/ChangeLog Fri Feb 26 21:50:22 2010 (r2272) @@ -1,3 +1,8 @@ +2010-02-26 Andy Buckley <andy at insectnation.org> + + * Update WFinder to not place cuts and other restrictions on the + neutrino. + 2010-02-11 Andy Buckley <andy at insectnation.org> * Change analysis loader behaviour to use ONLY RIVET_ANALYSIS_PATH Modified: trunk/doc/Makefile.am ============================================================================== --- trunk/doc/Makefile.am Thu Feb 25 16:55:38 2010 (r2271) +++ trunk/doc/Makefile.am Fri Feb 26 21:50:22 2010 (r2272) @@ -1,10 +1,10 @@ ## TODO: make variable names POSIX-compliant in rivet-manual.pdf target! dist_noinst_SCRIPTS = mk-analysis-html mk-analysis-latex -EXTRA_DIST = compare-histos.txt heppennames.sty cone.png h-physrev3.bst hepnames.sty JHEP3.cls \ - make-plots.html bend.png hepnicenames.sty JHEP.bst make-plots.txt rivet-manual.tex preamble.tex \ - compare-histos.html hepparticles.sty maybemath.sty refs.bib rivet-manual.pdf thinker.png \ - hepunits.sty underscore.sty microtype.sty readplot.py +EXTRA_DIST = compare-histos.txt heppennames.sty warning.png cone.png h-physrev3.bst hepnames.sty \ + JHEP3.cls make-plots.html bend.png hepnicenames.sty JHEP.bst make-plots.txt rivet-manual.tex \ + preamble.tex compare-histos.html hepparticles.sty maybemath.sty refs.bib rivet-manual.pdf \ + thinker.png hepunits.sty underscore.sty microtype.sty readplot.py DOCS = Modified: trunk/include/Rivet/Projections/ChargedFinalState.hh ============================================================================== --- trunk/include/Rivet/Projections/ChargedFinalState.hh Thu Feb 25 16:55:38 2010 (r2271) +++ trunk/include/Rivet/Projections/ChargedFinalState.hh Fri Feb 26 21:50:22 2010 (r2272) @@ -20,11 +20,17 @@ /// @name Constructors //@{ ChargedFinalState(const FinalState& fsp); - + + /// Single eta-range constructor. ChargedFinalState(double mineta = -MAXRAPIDITY, double maxeta = MAXRAPIDITY, double minpt = 0.0*GeV); + /// A constructor which allows to specify multiple eta ranges + /// and the min \f$ p_T \f$. + ChargedFinalState(const vector<pair<double, double> >& etaRanges, + double minpt = 0.0*GeV); + /// Clone on the heap. virtual const Projection* clone() const { return new ChargedFinalState(*this); Modified: trunk/include/Rivet/Projections/IdentifiedFinalState.hh ============================================================================== --- trunk/include/Rivet/Projections/IdentifiedFinalState.hh Thu Feb 25 16:55:38 2010 (r2271) +++ trunk/include/Rivet/Projections/IdentifiedFinalState.hh Fri Feb 26 21:50:22 2010 (r2272) @@ -14,25 +14,23 @@ /// Produce a final state which only contains specified particle IDs. class IdentifiedFinalState : public FinalState { - public: /// @name Constructors //@{ - /// Default constructor. - IdentifiedFinalState(double etamin=-MAXRAPIDITY, double etamax=MAXRAPIDITY, double ptMin=0.0*GeV) - : FinalState(etamin, etamax, ptMin) - { - setName("IdentifiedFinalState"); - addProjection(FinalState(etamin, etamax, ptMin), "FS"); - } /// Constructor with specific FinalState. - IdentifiedFinalState(const FinalState& fsp) - { - setName("IdentifiedFinalState"); - addProjection(fsp, "FS"); - } + IdentifiedFinalState(const FinalState& fsp); + + /// Constructor with a single eta range argument. + IdentifiedFinalState(double etamin=-MAXRAPIDITY, + double etamax=MAXRAPIDITY, + double ptMin=0.0*GeV); + + /// Constructor which allows to specify multiple eta ranges + /// and the min \f$ p_T \f$. + IdentifiedFinalState(const vector<pair<double, double> >& etaRanges, + double ptMin=0.0*GeV); /// Clone on the heap. virtual const Projection* clone() const { Modified: trunk/include/Rivet/Projections/MergedFinalState.hh ============================================================================== --- trunk/include/Rivet/Projections/MergedFinalState.hh Thu Feb 25 16:55:38 2010 (r2271) +++ trunk/include/Rivet/Projections/MergedFinalState.hh Fri Feb 26 21:50:22 2010 (r2272) @@ -12,7 +12,7 @@ namespace Rivet { - /// Project only merged final state particles. + /// Provide access to final state particles merged from two FinalState projections. class MergedFinalState : public FinalState { public: Modified: trunk/include/Rivet/Projections/WFinder.hh ============================================================================== --- trunk/include/Rivet/Projections/WFinder.hh Thu Feb 25 16:55:38 2010 (r2271) +++ trunk/include/Rivet/Projections/WFinder.hh Fri Feb 26 21:50:22 2010 (r2272) @@ -7,7 +7,7 @@ #include "Rivet/Particle.hh" #include "Rivet/Event.hh" #include "Rivet/Projection.hh" -#include "Rivet/Projections/FinalState.hh" +#include "Rivet/Projections/ChargedFinalState.hh" namespace Rivet { @@ -23,9 +23,10 @@ /// Constructor taking a FinalState and type of the charged lepton, mass window, /// and maximum dR of photons around the charged lepton to take into account for W /// reconstruction. - WFinder(const FinalState& fs, + WFinder(const ChargedFinalState& fs_l, PdgId pid, double m2_min, double m2_max, + double missingET, double dRmax); @@ -36,6 +37,7 @@ double pTmin, PdgId pid, double m2_min, double m2_max, + double missingET, double dRmax); @@ -46,6 +48,7 @@ double pTmin, PdgId pid, double m2_min, const double m2_max, + double missingET, double dRmax); @@ -61,10 +64,12 @@ /// (e.g. for running a jet finder on it) const FinalState& remainingFinalState() const; - /// Access to the W constituent leptons final state - /// (e.g. for more fine-grained cuts on the leptons) + /// Access to the W constituent leptons and photons const FinalState& constituentsFinalState() const; + /// Access to the W constituent leptons + const FinalState& constituentLeptonsFinalState() const; + protected: @@ -81,12 +86,14 @@ void _init(const std::vector<std::pair<double, double> >& etaRanges, double pTmin, PdgId pid, double m2_min, double m2_max, + double missingET, double dRmax); /// Common implementation of constructor operation, taking FS. - void _init(const FinalState& fs, + void _init(const ChargedFinalState& fs_l, PdgId pid, double m2_min, double m2_max, + double missingET, double dRmax); @@ -95,6 +102,9 @@ // Mass range double _m2_min, _m2_max; + // Missing ET cut + double _etMiss; + }; Modified: trunk/src/Analyses/CDF_1991_S2313472.cc ============================================================================== --- trunk/src/Analyses/CDF_1991_S2313472.cc Thu Feb 25 16:55:38 2010 (r2271) +++ trunk/src/Analyses/CDF_1991_S2313472.cc Fri Feb 26 21:50:22 2010 (r2272) @@ -6,7 +6,6 @@ #include "Rivet/Projections/ChargedFinalState.hh" #include "Rivet/Projections/WFinder.hh" #include "Rivet/Tools/ParticleIdUtils.hh" -/// @todo Include more projections as required, e.g. ChargedFinalState, FastJets, ZFinder... namespace Rivet { @@ -38,7 +37,7 @@ /// Book histograms and initialise projections before the run void init() { - WFinder wfe(-5, 5, 0.0*GeV, ELECTRON, 60.0*GeV, 100.0*GeV, 0.2); + WFinder wfe(-5, 5, 0.0*GeV, ELECTRON, 60.0*GeV, 100.0*GeV, 20.0*GeV, 0.2); addProjection(wfe, "WFe"); // Book histogram @@ -56,6 +55,7 @@ } // Require the electron to have ET > 20 GeV, pT > 6 GeV and |eta| < 1.1 + /// @todo Use separate pT and ETmiss cuts in WFinder FourMomentum p_e; int chg_e = 0; Modified: trunk/src/Analyses/D0_1998_S3711838.cc ============================================================================== --- trunk/src/Analyses/D0_1998_S3711838.cc Thu Feb 25 16:55:38 2010 (r2271) +++ trunk/src/Analyses/D0_1998_S3711838.cc Fri Feb 26 21:50:22 2010 (r2272) @@ -37,7 +37,8 @@ /// Book histograms and initialise projections before the run void init() { - WFinder wfe(-5, 5, 0.0*GeV, ELECTRON, 60.0*GeV, 100.0*GeV, 0.2); + /// @todo Use separate pT and ETmiss cuts in WFinder + WFinder wfe(-5, 5, 0.0*GeV, ELECTRON, 60.0*GeV, 100.0*GeV, 25.0*GeV, 0.2); addProjection(wfe, "WFe"); // Book histogram @@ -56,6 +57,7 @@ } // Require the electron to have ET > 25 GeV and |eta| < 1.1 + /// @todo Use separate pT and ETmiss cuts in WFinder FourMomentum p_e; int chg_e = 0; Modified: trunk/src/Analyses/D0_2008_S7837160.cc ============================================================================== --- trunk/src/Analyses/D0_2008_S7837160.cc Thu Feb 25 16:55:38 2010 (r2271) +++ trunk/src/Analyses/D0_2008_S7837160.cc Fri Feb 26 21:50:22 2010 (r2272) @@ -36,7 +36,8 @@ // Book histograms and set up projections void init() { // Projections - const WFinder wfe(-5, 5, 0.0*GeV, ELECTRON, 60.0*GeV, 100.0*GeV, 0.2); + /// @todo Use separate pT and ETmiss cuts in WFinder + const WFinder wfe(-5, 5, 0.0*GeV, ELECTRON, 60.0*GeV, 100.0*GeV, 0*GeV, 0.2); addProjection(wfe, "WFe"); // Cross-section histograms @@ -59,6 +60,8 @@ } // Require that leptons have Et >= 25 GeV + /// @todo Use pT cut in WFinder + /// @todo Any ETmiss cut? FourMomentum p_e; int chg_e = 0; foreach (const Particle& l, wf.constituentsFinalState().particles()) { Modified: trunk/src/Analyses/MC_WANALYSIS.cc ============================================================================== --- trunk/src/Analyses/MC_WANALYSIS.cc Thu Feb 25 16:55:38 2010 (r2271) +++ trunk/src/Analyses/MC_WANALYSIS.cc Fri Feb 26 21:50:22 2010 (r2272) @@ -30,9 +30,9 @@ // Projections const ChargedFinalState cfs(-2, 2, 200*MeV); addProjection(cfs, "CFS"); - const WFinder wfe(-2, 2, 10.0*GeV, ELECTRON, 60.0*GeV, 100.0*GeV, 0.2); + const WFinder wfe(-2, 2, 10.0*GeV, ELECTRON, 60.0*GeV, 100.0*GeV, 10*GeV, 0.2); addProjection(wfe, "WFe"); - const WFinder wfmu(-2, 2, 10.0*GeV, MUON, 60.0*GeV, 100.0*GeV, 0.2); + const WFinder wfmu(-2, 2, 10.0*GeV, MUON, 60.0*GeV, 100.0*GeV, 10*GeV, 0.2); addProjection(wfmu, "WFmu"); FastJets fastjets(wfe.remainingFinalState(), FastJets::KT, 0.5); addProjection(fastjets, "Jets"); Modified: trunk/src/Analyses/Makefile.am ============================================================================== --- trunk/src/Analyses/Makefile.am Thu Feb 25 16:55:38 2010 (r2271) +++ trunk/src/Analyses/Makefile.am Fri Feb 26 21:50:22 2010 (r2272) @@ -35,6 +35,7 @@ MC_TTBAR.cc \ SFM_1984_S1178091.cc \ STAR_2008_S7993412.cc \ + STAR_2009_UE_HELEN.cc \ UA1_1990_S2044935.cc \ UA5_1988_S1867512.cc \ ZEUS_2001_S4815815.cc @@ -102,8 +103,7 @@ RivetRHICAnalyses_la_SOURCES = \ STAR_2006_S6500200.cc \ STAR_2006_S6860818.cc \ - STAR_2006_S6870392.cc \ - STAR_2009_UE_HELEN.cc + STAR_2006_S6870392.cc lib_LTLIBRARIES += RivetSPSAnalyses.la Modified: trunk/src/Projections/ChargedFinalState.cc ============================================================================== --- trunk/src/Projections/ChargedFinalState.cc Thu Feb 25 16:55:38 2010 (r2271) +++ trunk/src/Projections/ChargedFinalState.cc Fri Feb 26 21:50:22 2010 (r2272) @@ -20,6 +20,13 @@ } + ChargedFinalState::ChargedFinalState(const vector<pair<double, double> >& etaRanges, + double minpt) { + setName("ChargedFinalState"); + addProjection(FinalState(etaRanges, minpt), "FS"); + } + + int ChargedFinalState::compare(const Projection& p) const { return mkNamedPCmp(p, "FS"); } Modified: trunk/src/Projections/IdentifiedFinalState.cc ============================================================================== --- trunk/src/Projections/IdentifiedFinalState.cc Thu Feb 25 16:55:38 2010 (r2271) +++ trunk/src/Projections/IdentifiedFinalState.cc Fri Feb 26 21:50:22 2010 (r2272) @@ -8,6 +8,29 @@ namespace Rivet { + IdentifiedFinalState::IdentifiedFinalState(const FinalState& fsp) { + setName("IdentifiedFinalState"); + addProjection(fsp, "FS"); + } + + + IdentifiedFinalState::IdentifiedFinalState(double etamin, double etamax, double ptMin) + : FinalState(etamin, etamax, ptMin) + { + setName("IdentifiedFinalState"); + addProjection(FinalState(etamin, etamax, ptMin), "FS"); + } + + + IdentifiedFinalState::IdentifiedFinalState(const vector<pair<double, double> >& etaRanges, + double ptMin) + : FinalState(etaRanges, ptMin) + { + setName("IdentifiedFinalState"); + addProjection(FinalState(etaRanges, ptMin), "FS"); + } + + int IdentifiedFinalState::compare(const Projection& p) const { const PCmp fscmp = mkNamedPCmp(p, "FS"); if (fscmp != EQUIVALENT) return fscmp; Modified: trunk/src/Projections/WFinder.cc ============================================================================== --- trunk/src/Projections/WFinder.cc Thu Feb 25 16:55:38 2010 (r2271) +++ trunk/src/Projections/WFinder.cc Fri Feb 26 21:50:22 2010 (r2272) @@ -1,6 +1,8 @@ // -*- C++ -*- #include "Rivet/Projections/WFinder.hh" #include "Rivet/Projections/InvMassFinalState.hh" +#include "Rivet/Projections/TotalVisibleMomentum.hh" +#include "Rivet/Projections/MergedFinalState.hh" #include "Rivet/Projections/ClusteredPhotons.hh" #include "Rivet/Projections/VetoedFinalState.hh" #include "Rivet/Tools/ParticleIdUtils.hh" @@ -10,11 +12,12 @@ namespace Rivet { - WFinder::WFinder(const FinalState& fs, + WFinder::WFinder(const ChargedFinalState& fs_l, PdgId pid, double m2_min, double m2_max, + double missingET, double dRmax) { - _init(fs, pid, m2_min, m2_max, dRmax); + _init(fs_l, pid, m2_min, m2_max, missingET, dRmax); } @@ -22,10 +25,11 @@ double pTmin, PdgId pid, double m2_min, double m2_max, + double missingET, double dRmax) { vector<pair<double, double> > etaRanges; etaRanges += std::make_pair(etaMin, etaMax); - _init(etaRanges, pTmin, pid, m2_min, m2_max, dRmax); + _init(etaRanges, pTmin, pid, m2_min, m2_max, missingET, dRmax); } @@ -33,8 +37,9 @@ double pTmin, PdgId pid, double m2_min, double m2_max, + double missingET, double dRmax) { - _init(etaRanges, pTmin, pid, m2_min, m2_max, dRmax); + _init(etaRanges, pTmin, pid, m2_min, m2_max, missingET, dRmax); } @@ -42,38 +47,59 @@ double pTmin, PdgId pid, double m2_min, double m2_max, + double missingET, double dRmax) { - FinalState fs(etaRanges, pTmin); - _init(fs, pid, m2_min, m2_max, dRmax); + ChargedFinalState fs_l(etaRanges, pTmin); + _init(fs_l, pid, m2_min, m2_max, missingET, dRmax); } - void WFinder::_init(const FinalState& fs, + void WFinder::_init(const ChargedFinalState& fs_l, PdgId pid, double m2_min, double m2_max, + double missingET, double dRmax) { setName("WFinder"); + // Check that the arguments are legal + assert(abs(pid) == ELECTRON || abs(pid) == MUON); + PdgId nu_pid = abs(pid) + 1; + assert(abs(nu_pid) == NU_E || abs(nu_pid) == NU_MU); + + // Don't make pT or eta cuts on the neutrino + IdentifiedFinalState fs_nu; + fs_nu.acceptNeutrinos(); + + // Make a merged final state projection for charged and neutral leptons + MergedFinalState mergedFS(fs_l, fs_nu); + // Mass range _m2_min = m2_min; _m2_max = m2_max; - assert(abs(pid) == ELECTRON || abs(pid) == MUON || abs(pid) == TAU); - PdgId nu_pid = abs(pid) + 1; - assert(abs(nu_pid) == NU_E || abs(nu_pid) == NU_MU || abs(nu_pid) == NU_TAU); + // Make and register an invariant mass final state for the W decay leptons vector<pair<PdgId, PdgId> > l_nu_ids; l_nu_ids += make_pair(abs(pid), -abs(nu_pid)); l_nu_ids += make_pair(-abs(pid), abs(nu_pid)); - InvMassFinalState imfs(fs, l_nu_ids, m2_min, m2_max); + InvMassFinalState imfs(mergedFS, l_nu_ids, m2_min, m2_max); addProjection(imfs, "IMFS"); + // A projection for clustering photons on to the charged lepton ClusteredPhotons cphotons(FinalState(), imfs, dRmax); addProjection(cphotons, "CPhotons"); + // Projection for all signal constituents + MergedFinalState signalFS(imfs, cphotons); + addProjection(cphotons, "SignalParticles"); + + // Add TotalVisibleMomentum proj to calc MET + TotalVisibleMomentum vismom(signalFS); + addProjection(vismom, "MissingET"); + + // FS for non-signal bits of the event VetoedFinalState remainingFS; - remainingFS.addVetoOnThisFinalState(imfs); - remainingFS.addVetoOnThisFinalState(cphotons); + remainingFS.addVetoOnThisFinalState(signalFS); addProjection(remainingFS, "RFS"); } @@ -87,6 +113,11 @@ const FinalState& WFinder::constituentsFinalState() const { + return getProjection<FinalState>("SignalParticles"); + } + + + const FinalState& WFinder::constituentLeptonsFinalState() const { return getProjection<FinalState>("IMFS"); } @@ -131,6 +162,15 @@ } msg << " = " << pW; + // Check missing ET + const TotalVisibleMomentum& vismom = applyProjection<TotalVisibleMomentum>(e, "MissingET"); + /// @todo Restrict missing momentum eta range? + if (vismom.scalarET() < _etMiss) { + getLog() << Log::DEBUG << "Not enough missing ET: " << vismom.scalarET()/GeV + << " GeV vs. " << _etMiss/GeV << " GeV" << endl; + return; + } + // Check mass range again if (!inRange(pW.mass()/GeV, _m2_min, _m2_max)) return; getLog() << Log::DEBUG << msg.str() << endl;
More information about the Rivet-svn mailing list |