[Rivet-svn] r3388 - in trunk: include/Rivet/Projections src/Projections

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Tue Sep 27 11:20:42 BST 2011


Author: fsiegert
Date: Tue Sep 27 11:20:42 2011
New Revision: 3388

Log:
Bugfix for memleak in W/ZFinder.

Modified:
   trunk/include/Rivet/Projections/InvMassFinalState.hh
   trunk/src/Projections/InvMassFinalState.cc
   trunk/src/Projections/WFinder.cc
   trunk/src/Projections/ZFinder.cc

Modified: trunk/include/Rivet/Projections/InvMassFinalState.hh
==============================================================================
--- trunk/include/Rivet/Projections/InvMassFinalState.hh	Thu Sep 22 15:53:38 2011	(r3387)
+++ trunk/include/Rivet/Projections/InvMassFinalState.hh	Tue Sep 27 11:20:42 2011	(r3388)
@@ -27,6 +27,17 @@
                       double masstarget=-1.0);
 
 
+    /// Same thing as above, but we want to pass the particles directly to the calc method
+    InvMassFinalState(const std::pair<PdgId, PdgId>& idpair, // pair of decay products
+                      double minmass, // min inv mass
+                      double maxmass, // max inv mass
+                      double masstarget=-1.0);
+    InvMassFinalState(const std::vector<std::pair<PdgId, PdgId> >& idpairs,  // vector of pairs of decay products
+                      double minmass, // min inv mass
+                      double maxmass, // max inv mass
+                      double masstarget=-1.0);
+
+
     /// Clone on the heap.
     virtual const Projection* clone() const {
     	return new InvMassFinalState(*this);

Modified: trunk/src/Projections/InvMassFinalState.cc
==============================================================================
--- trunk/src/Projections/InvMassFinalState.cc	Thu Sep 22 15:53:38 2011	(r3387)
+++ trunk/src/Projections/InvMassFinalState.cc	Tue Sep 27 11:20:42 2011	(r3388)
@@ -31,6 +31,27 @@
   }
 
 
+  InvMassFinalState::InvMassFinalState(const pair<PdgId, PdgId>& idpair, // pair of decay products
+                                       double minmass, // min inv mass
+                                       double maxmass, // max inv mass
+                                       double masstarget)
+    : _minmass(minmass), _maxmass(maxmass), _masstarget(masstarget), _useTransverseMass(false)
+  {
+    setName("InvMassFinalState");
+    _decayids.push_back(idpair);
+  }
+
+
+  InvMassFinalState::InvMassFinalState(const vector<pair<PdgId, PdgId> >& idpairs,  // vector of pairs of decay products
+                                       double minmass, // min inv mass
+                                       double maxmass, // max inv mass
+                                       double masstarget)
+    : _decayids(idpairs), _minmass(minmass), _maxmass(maxmass), _masstarget(masstarget), _useTransverseMass(false)
+  {
+    setName("InvMassFinalState");
+  }
+
+
   int InvMassFinalState::compare(const Projection& p) const {
     // First compare the final states we are running on
     int fscmp = mkNamedPCmp(p, "FS");

Modified: trunk/src/Projections/WFinder.cc
==============================================================================
--- trunk/src/Projections/WFinder.cc	Thu Sep 22 15:53:38 2011	(r3387)
+++ trunk/src/Projections/WFinder.cc	Tue Sep 27 11:20:42 2011	(r3388)
@@ -119,7 +119,7 @@
     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(FinalState(), l_nu_ids, _minmass, _maxmass, _masstarget);
+    InvMassFinalState imfs(l_nu_ids, _minmass, _maxmass, _masstarget);
     imfs.useTransverseMass(_useTransverseMass);
     ParticleVector tmp;
     tmp.insert(tmp.end(), leptons.clusteredLeptons().begin(), leptons.clusteredLeptons().end());

Modified: trunk/src/Projections/ZFinder.cc
==============================================================================
--- trunk/src/Projections/ZFinder.cc	Thu Sep 22 15:53:38 2011	(r3387)
+++ trunk/src/Projections/ZFinder.cc	Tue Sep 27 11:20:42 2011	(r3388)
@@ -84,7 +84,7 @@
 
     const LeptonClusters& leptons = applyProjection<LeptonClusters>(e, "LeptonClusters");
 
-    InvMassFinalState imfs(FinalState(), std::make_pair(_pid, -_pid), _minmass, _maxmass, _masstarget);
+    InvMassFinalState imfs(std::make_pair(_pid, -_pid), _minmass, _maxmass, _masstarget);
     ParticleVector tmp;
     tmp.insert(tmp.end(), leptons.clusteredLeptons().begin(), leptons.clusteredLeptons().end());
     imfs.calc(tmp);


More information about the Rivet-svn mailing list