[Rivet-svn] r3555 - in trunk: . data/anainfo data/plotinfo include/Rivet/Projections src/Analyses src/Projections

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Tue 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