[Rivet-svn] r3347 - in trunk: . include/Rivet/Projections src/Analyses src/Projections

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Sun Sep 11 11:53:56 BST 2011


Author: buckley
Date: Sun Sep 11 11:53:56 2011
New Revision: 3347

Log:
Fix the MissingMomentum::vectorET() behaviour and change the API slightly. Only one data analysis is affected, but it is the heavily used D0 2004 dijet decorrelation one. While the cut that vetos too much missing ET should not have been important from a physics perspective, it may have had a large effect on the event acceptance efficiency of the analysis and resulted in some bias, because the previously computed mET values were anomalously large. We should check this.

Modified:
   trunk/ChangeLog
   trunk/include/Rivet/Projections/MissingMomentum.hh
   trunk/src/Analyses/D0_2004_S5992206.cc
   trunk/src/Analyses/MC_SUSY.cc
   trunk/src/Analyses/UA1_1990_S2044935.cc
   trunk/src/Projections/MissingMomentum.cc

Modified: trunk/ChangeLog
==============================================================================
--- trunk/ChangeLog	Sun Sep 11 11:51:39 2011	(r3346)
+++ trunk/ChangeLog	Sun Sep 11 11:53:56 2011	(r3347)
@@ -1,3 +1,35 @@
+2011-09-10  Andy Buckley  <andy at insectnation.org>
+
+	* Changing the behaviour and interface of the MissingMomentum
+	projection to calculate vector ET correctly. This was previously
+	calculated according to the common definition of -E*sin(theta) of
+	the summed visible 4-momentum in the event, but that is incorrect
+	because the timelike term grows monotonically. Instead, transverse
+	2-vectors of size ET need to be constructed for each visible
+	particle, and vector-summed in the transverse plane.
+
+	The rewrite of this behaviour made it opportune to make an API
+	improvement: the previous method names scalarET/vectorET() have
+	been renamed to scalar/vectorEt() to better match the Rivet
+	FourMomentum::Et() method, and MissingMomentum::vectorEt() now
+	returns a Vector3 rather than a double so that the transverse
+	missing Et direction is also available.
+
+	Only one data analysis has been affected by this change in
+	behaviour: the D0_2004_S5992206 dijet delta(phi) analysis. It's
+	expected that this change will not be very significant, as it is
+	a *veto* on significant missing ET to reduce non-QCD
+	contributions. MC studies using this analysis ~always run with QCD
+	events only, so these contributions should be small. The analysis
+	efficiency may have been greatly improved, as fewer events will
+	now fail the missing ET veto cut.
+
+	* Add sorting of the ParticleVector returned by the ChargedLeptons
+	projection.
+
+	* configure.ac: Adding a check to make sure that no-one tries to
+	install into --prefix=$PWD.
+
 2011-09-04  Andy Buckley  <andy at insectnation.org>
 
 	* lighthisto fixes from Christian Roehr.

Modified: trunk/include/Rivet/Projections/MissingMomentum.hh
==============================================================================
--- trunk/include/Rivet/Projections/MissingMomentum.hh	Sun Sep 11 11:51:39 2011	(r3346)
+++ trunk/include/Rivet/Projections/MissingMomentum.hh	Sun Sep 11 11:53:56 2011	(r3347)
@@ -47,16 +47,13 @@
   public:
 
     /// The vector-summed visible four-momentum in the event.
-    FourMomentum& visibleMomentum() { return _momentum; }
-
-    /// The vector-summed visible four-momentum in the event.
     const FourMomentum& visibleMomentum() const { return _momentum; }
 
     /// The vector-summed (in)visible transverse energy in the event
-    double vectorET() const { return _momentum.Et(); }
+    const Vector3& vectorEt() const { return _vet; }
 
-    /// The scalar-summed (in)visible transverse energy in the event.
-    double scalarET() const { return _set; }
+    /// The scalar-summed visible transverse energy in the event.
+    double scalarEt() const { return _set; }
 
 
   protected:
@@ -82,6 +79,9 @@
     /// Scalar transverse energy
     double _set;
 
+    /// Vector transverse energy
+    Vector3 _vet;
+
   };
 
 

Modified: trunk/src/Analyses/D0_2004_S5992206.cc
==============================================================================
--- trunk/src/Analyses/D0_2004_S5992206.cc	Sun Sep 11 11:51:39 2011	(r3346)
+++ trunk/src/Analyses/D0_2004_S5992206.cc	Sun Sep 11 11:53:56 2011	(r3347)
@@ -66,11 +66,11 @@
 
       // Analyse and print some info
       const JetAlg& jetpro = applyProjection<JetAlg>(event, "Jets");
-      getLog() << Log::DEBUG << "Jet multiplicity before any pT cut = " << jetpro.size() << endl;
+      MSG_DEBUG("Jet multiplicity before any pT cut = " << jetpro.size());
 
       const Jets jets  = jetpro.jetsByPt(40.0*GeV);
       if (jets.size() >= 2) {
-        getLog() << Log::DEBUG << "Jet multiplicity after pT > 40 GeV cut = " << jets.size() << endl;
+        MSG_DEBUG("Jet multiplicity after pT > 40 GeV cut = " << jets.size());
       } else {
         vetoEvent;
       }
@@ -79,14 +79,14 @@
       if (fabs(rap1) > 0.5 || fabs(rap2) > 0.5) {
         vetoEvent;
       }
-      getLog() << Log::DEBUG << "Jet eta and pT requirements fulfilled" << endl;
+      MSG_DEBUG("Jet eta and pT requirements fulfilled");
       const double pT1 = jets[0].momentum().pT();
 
       const MissingMomentum& caloMissEt = applyProjection<MissingMomentum>(event, "CalMET");
-      getLog() << Log::DEBUG << "Missing vector Et = " << caloMissEt.vectorET()/GeV << " GeV" << endl;
-      if (caloMissEt.vectorET() > 0.7*pT1) {
-        MSG_DEBUG("Vetoing event with too much missing Et: "
-                  << caloMissEt.vectorET()/GeV << " GeV > "
+      MSG_DEBUG("Missing vector Et = " << caloMissEt.vectorEt()/GeV << " GeV");
+      if (caloMissEt.vectorEt().mod() > 0.7*pT1) {
+        MSG_DEBUG("Vetoing event with too much missing ET: "
+                  << caloMissEt.vectorEt()/GeV << " GeV > "
                   << 0.7*pT1/GeV << " GeV");
         vetoEvent;
       }

Modified: trunk/src/Analyses/MC_SUSY.cc
==============================================================================
--- trunk/src/Analyses/MC_SUSY.cc	Sun Sep 11 11:51:39 2011	(r3346)
+++ trunk/src/Analyses/MC_SUSY.cc	Sun Sep 11 11:53:56 2011	(r3347)
@@ -204,7 +204,7 @@
 
       // Calculate and fill missing Et histos
       const MissingMomentum& met = applyProjection<MissingMomentum>(evt, "MET");
-      _hist_met->fill(met.vectorET()/GeV);
+      _hist_met->fill(met.vectorEt().mod()/GeV);
 
       // Choose highest-pT leptons of each sign and flavour for dilepton mass edges
       const FinalState& lpfs = applyProjection<FinalState>(evt, "LeadingParticles");

Modified: trunk/src/Analyses/UA1_1990_S2044935.cc
==============================================================================
--- trunk/src/Analyses/UA1_1990_S2044935.cc	Sun Sep 11 11:51:39 2011	(r3346)
+++ trunk/src/Analyses/UA1_1990_S2044935.cc	Sun Sep 11 11:53:56 2011	(r3347)
@@ -78,8 +78,8 @@
 
       // Use good central detector tracks
       const FinalState& cfs = applyProjection<FinalState>(event, "TrackFS");
-      const double Et25 = applyProjection<MissingMomentum>(event, "MET25").scalarET();
-      const double Et60 = applyProjection<MissingMomentum>(event, "MET60").scalarET();
+      const double Et25 = applyProjection<MissingMomentum>(event, "MET25").scalarEt();
+      const double Et60 = applyProjection<MissingMomentum>(event, "MET60").scalarEt();
       const unsigned int nch = cfs.size();
 
       // Event level histos

Modified: trunk/src/Projections/MissingMomentum.cc
==============================================================================
--- trunk/src/Projections/MissingMomentum.cc	Sun Sep 11 11:51:39 2011	(r3346)
+++ trunk/src/Projections/MissingMomentum.cc	Sun Sep 11 11:53:56 2011	(r3347)
@@ -14,18 +14,20 @@
   void MissingMomentum::clear() {
     _momentum = FourMomentum();
     _set = 0.0;
+    _vet = Vector3();
   }
 
 
   void MissingMomentum::project(const Event& e) {
     clear();
-    
+
     // Project into final state
     const FinalState& vfs = applyProjection<FinalState>(e, "VisibleFS");
     foreach (const Particle& p, vfs.particles()) {
       const FourMomentum& mom = p.momentum();
       _momentum += mom;
       _set += mom.Et();
+      _vet += mom.Et() * mom.vector3().setZ(0.0).unit();
     }
   }
 


More information about the Rivet-svn mailing list