Rivet  3.1.0
Todo List
Module 2D scatter booking
REINSTATE
Module 2D scatter booking
REINSTATE
Module 2D scatter booking
REINSTATE
Module 2D scatter booking
REINSTATE
Module 2D scatter booking
REINSTATE
Module Analysis / beam compatibility testing

Replace with beamsCompatible() with no args (calling beams() function internally)

Add beamsMatch() methods with same (shared-code?) tolerance as in beamsCompatible()

Module Analysis / beam compatibility testing

Replace with beamsCompatible() with no args (calling beams() function internally)

Add beamsMatch() methods with same (shared-code?) tolerance as in beamsCompatible()

Module Analysis / beam compatibility testing

Replace with beamsCompatible() with no args (calling beams() function internally)

Add beamsMatch() methods with same (shared-code?) tolerance as in beamsCompatible()

Module Analysis / beam compatibility testing

Replace with beamsCompatible() with no args (calling beams() function internally)

Add beamsMatch() methods with same (shared-code?) tolerance as in beamsCompatible()

Module Analysis / beam compatibility testing

Replace with beamsCompatible() with no args (calling beams() function internally)

Add beamsMatch() methods with same (shared-code?) tolerance as in beamsCompatible()

Module Analysis object manipulation
Should really be protected: only public to keep BinnedHistogram happy for now...
Module Analysis object manipulation
Should really be protected: only public to keep BinnedHistogram happy for now...
Module Analysis object manipulation
Should really be protected: only public to keep BinnedHistogram happy for now...
Module Analysis object manipulation
Should really be protected: only public to keep BinnedHistogram happy for now...
Module Analysis object manipulation
Should really be protected: only public to keep BinnedHistogram happy for now...
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module Beam configuration
Does it really make sense to restrict Projections to particular beam configs? Do we use this in practice?
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module For JetAlg compatibility
Replace with cuts() accessor virtual Cut cuts() const { return _cuts; }
Module Histograms
Add jet masses and d(rap)
Module Miscellaneous numerical helpers
Add pair-based versions of the named range-boundary functions
Module Miscellaneous numerical helpers
Add pair-based versions of the named range-boundary functions
Module Nuclei
Add axion, black hole remnant, etc. on demand
Module Nuclei
Add axion, black hole remnant, etc. on demand
Module Particle pair classifiers
Make versions that work on PdgIdPair?
Module Particle pair classifiers
Make versions that work on PdgIdPair?
Module particlebasetutils_pb2bool
Move to FourMomentum functions
Module particlebaseutils_kin
Mostly move to functions on FourMomentum
Module particlebaseutils_pb2dbl
Move to FourMomentum functions
Module particleutils_pairclass
Make versions that work on ParticlePair?
Namespace Rivet
BinnedHistogram needs to have a list of interbnal members first which then get booked by the analysis. Booking a temporary, and then adding into BinnedHisto is not possible
Member Rivet::add_quad (NUM a, NUM b)
When std::common_type can be used, generalise to multiple numeric types with appropriate return type.
Member Rivet::add_quad (NUM a, NUM b, NUM c)
When std::common_type can be used, generalise to multiple numeric types with appropriate return type.
Class Rivet::ALICE::V0Multiplicity< MODE >
We should avoid experiment-specific projections and tools as much as possible... Says Leif: on the contrary this is a good thing!
Member Rivet::Analysis::bookPercentile (string projName, vector< pair< float, float > > centralityBins, vector< tuple< int, int, int > > ref)
Convert to just be called book() cf. others
Member Rivet::Analysis::normalize (const std::vector< Histo2DPtr > &histos, CounterAdapter norm=1.0, bool includeoverflows=true)
Use SFINAE for a generic iterable of Histo2DPtrs
Member Rivet::Analysis::normalize (const Histo2DPtr(&histos)[array_size], CounterAdapter norm=1.0, bool includeoverflows=true)
YUCK!
Member Rivet::Analysis::normalize (const std::vector< Histo1DPtr > &histos, CounterAdapter norm=1.0, bool includeoverflows=true)
Use SFINAE for a generic iterable of Histo1DPtrs
Member Rivet::Analysis::normalize (const Histo1DPtr(&histos)[array_size], CounterAdapter norm=1.0, bool includeoverflows=true)
YUCK!
Member Rivet::Analysis::refData (const string &hname) const
SFINAE to ensure that the type inherits from YODA::AnalysisObject?
Member Rivet::Analysis::refData (unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) const
SFINAE to ensure that the type inherits from YODA::AnalysisObject?
Member Rivet::Analysis::scale (const std::vector< Histo2DPtr > &histos, CounterAdapter factor)
Use SFINAE for a generic iterable of Histo2DPtrs
Member Rivet::Analysis::scale (const Histo2DPtr(&histos)[array_size], CounterAdapter factor)
YUCK!
Member Rivet::Analysis::scale (const Histo1DPtr(&histos)[array_size], CounterAdapter factor)
YUCK!
Member Rivet::Analysis::scale (const std::vector< CounterPtr > &cnts, CounterAdapter factor)
Use SFINAE for a generic iterable of CounterPtrs
Member Rivet::Analysis::scale (const CounterPtr(&cnts)[array_size], CounterAdapter factor)
YUCK!
Member Rivet::Analysis::scale (const std::vector< Histo1DPtr > &histos, CounterAdapter factor)
Use SFINAE for a generic iterable of Histo1DPtrs
Member Rivet::binIndex (NUM1 val, std::initializer_list< NUM2 > binedges, bool allow_overflow=false)
Use std::common_type<NUM1, NUM2>::type x = val; ?
Member Rivet::binIndex (NUM val, const CONTAINER &binedges, bool allow_overflow=false)
Use std::common_type<NUM1, NUM2>::type x = val; ?
Member Rivet::BinnedHistogram::add (double binMin, double binMax, Histo1DPtr histo)
Can we have an "emplace constructor", passing tuples of bookHisto1D args?
Member Rivet::bwspace (size_t nbins, double start, double end, double mu, double gamma)
geomspace
Class Rivet::ChargedLeptons
This is just electrons and muons, unless you set taus stable!
Member Rivet::contains (const std::string &s, const std::string &sub)
Use SFINAE, Boost.Range, or other template trickery for more generic container matching?
Member Rivet::correlation (const vector< NUM > &sample1, const vector< NUM > &sample2)
Support multiple container types via SFINAE
Member Rivet::correlation_err (const vector< NUM > &sample1, const vector< NUM > &sample2)
Support multiple container types via SFINAE
Member Rivet::Correlators::hVec (int n, int m)
In C++14 this can be done much nicer with TMP.
Member Rivet::covariance (const vector< NUM > &sample1, const vector< NUM > &sample2)
Support multiple container types via SFINAE
Member Rivet::covariance_err (const vector< NUM > &sample1, const vector< NUM > &sample2)
Support multiple container types via SFINAE
Member Rivet::CumulantAnalysis::bookECorrelator (const string name, const vector< int > &h1, const vector< int > &h2, const Scatter2DPtr hIn)
Rename to book(ECorrPtr, ...)
Member Rivet::CumulantAnalysis::bookECorrelator (const string name, const Scatter2DPtr hIn)
Rename to book(ECorrPtr, ...)
Member Rivet::CumulantAnalysis::bookECorrelator (const string name, const vector< int > &h, const Scatter2DPtr hIn)
Rename to book(ECorrPtr, ...)
Member Rivet::CumulantAnalysis::bookECorrelatorGap (const string name, const vector< int > &h, const Scatter2DPtr hIn)
Rename to book(ECorrPtr, ...)
Member Rivet::CumulantAnalysis::bookECorrelatorGap (const string name, const Scatter2DPtr hIn)
Rename to book(ECorrPtr, ...)
Member Rivet::CumulantAnalysis::ECorrelator::ECorrelator (vector< int > h, vector< double > binIn)
Implement functionality for this if needed.
Member Rivet::Cutflows::normalize (double norm, size_t icut=0)
Provide a version that takes a vector of norms?
Class Rivet::DeltaRGtr
Define dR and dphi functors w.r.t. multiple ref vectors, with "all" or "any" semantics
Class Rivet::DressedLepton
Remove completely – it's unnecessary and too confusing (esp. between copying & aggregating)
Member Rivet::DressedLepton::addPhoton (const Particle &p, bool momsum=true)
Deprecate and override add/setConstituents instead?
Member Rivet::DressedLeptons::DressedLeptons (const FinalState &photons, const FinalState &bareleptons, double dRmax, const Cut &cut=Cuts::open(), bool useDecayPhotons=false, bool useJetClustering=false)
Convert second arg to a general ParticleFinder rather than an FS, to allow clustering on to unstables, e.g. taus via TauFinder.
Member Rivet::ELECTRON_EFF_ATLAS_RUN2_LOOSE (const Particle &e)
What about faking by jets or non-electrons?
Member Rivet::ELECTRON_EFF_CMS_RUN1 (const Particle &e)
Add charge flip efficiency?
Member Rivet::ELECTRON_EFF_CMS_RUN2 (const Particle &e)
Currently just a copy of Run 1: fix!
Member Rivet::ELECTRON_RECOEFF_ATLAS_RUN1 (const Particle &e)
Include reco eff (but no e/y discrimination) in forward region
Member Rivet::ELECTRON_SMEAR_ATLAS_RUN2 (const Particle &e)
Currently just a copy of the Run 1 version: fix!
Member Rivet::ELECTRON_SMEAR_CMS_RUN2 (const Particle &e)
Currently just a copy of the Run 1 version: fix!
Member Rivet::Event::applyProjection (PROJ &p) const
Can make this non-templated, since only cares about ptr to Projection base class
Member Rivet::Event::weights () const
This needs to be revisited when we finally add the mechanism to support NLO counter-events and weight vectors.
Member Rivet::FastJets::Algo
Move to JetAlg and alias here?
Member Rivet::FastJets::areaDef () const
Care needed re. const shared_ptr<T> vs. shared_ptr<const T>
Member Rivet::FastJets::clusterSeq () const
Care needed re. const shared_ptr<T> vs. shared_ptr<const T>
Member Rivet::FastJets::clusterSeqArea () const
Care needed re. const shared_ptr<T> vs. shared_ptr<const T>
Member Rivet::filter_discard (const CONTAINER &c, const FN &f)

Use const std::function<bool(typename CONTAINER::value_type)>... but need polymorphism for ParticleBase

More efficient would be copy_if with back_inserter...

Member Rivet::filter_discard (const CONTAINER &c, const FN &f, CONTAINER &out)
Use const std::function<bool(typename CONTAINER::value_type)>... but need polymorphism for ParticleBase
Member Rivet::filter_select (const CONTAINER &c, const FN &f, CONTAINER &out)
Use const std::function<bool(typename CONTAINER::value_type)>... but need polymorphism for ParticleBase
Member Rivet::filter_select (const CONTAINER &c, const FN &f)

Use const std::function<bool(typename CONTAINER::value_type)>... but need polymorphism for ParticleBase

More efficient would be copy_if with back_inserter ... but is that equally container agnostic?

Member Rivet::FinalState::accept (const Particle &p) const
Rename to _accept or acceptFinal?
Class Rivet::FourVector
Add composite set/mk methods from different coord systems
Member Rivet::getDatafilePath (const string &papername)
Also provide a Scatter3D getRefData() version?
Member Rivet::getEnvParam (const std::string name, const T &fallback)
Should the param name have to be specific to an analysis? Can specialise as an Analysis member fn.
Class Rivet::HeavyHadrons
This assumes that the heavy hadrons are unstable... should we also look for stable ones in case the decays are disabled?
Namespace Rivet::HepMCUtils
Use MCUtils?
Member Rivet::ifilter_discard (CONTAINER &c, const FN &f)
Use const std::function<bool(typename CONTAINER::value_type)>... but need polymorphism for ParticleBase
Member Rivet::ifilter_select (CONTAINER &c, const FN &f)
Use const std::function<bool(typename CONTAINER::value_type)>... but need polymorphism for ParticleBase
Member Rivet::JET_BTAG_ATLAS_RUN1 (const Jet &j)
This form drops past ~100 GeV, asymptotically to zero efficiency... really?!
Member Rivet::JET_BTAG_PERFECT (const Jet &j)
Need to be able to pass a tag pT threshold? -> functor struct
Member Rivet::JET_CTAG_PERFECT (const Jet &j)
Need to be able to pass a tag pT threshold? -> functor struct
Member Rivet::JET_SMEAR_ATLAS_RUN1 (const Jet &j)

Also need a JES uncertainty component?

Is this the best way to smear? Should we preserve the energy, or pT, or direction?

Member Rivet::JET_SMEAR_ATLAS_RUN2 (const Jet &j)
Just a copy of the Run 1 one: improve!!
Member Rivet::JET_SMEAR_CMS_RUN1 (const Jet &j)
Just a copy of the suboptimal ATLAS one: improve!!
Member Rivet::JET_SMEAR_CMS_RUN2 (const Jet &j)
Just a copy of the suboptimal ATLAS one: improve!!
Member Rivet::JET_SMEAR_IDENTITY (const Jet &j)

Modify constituent particle vectors for consistency

Set a null PseudoJet if the Jet is smeared?

Member Rivet::JET_TAUTAG_PERFECT (const Jet &j)
Need to be able to pass a tag pT threshold? -> functor struct
Class Rivet::JetEffSmearFn
Include tagging efficiency functions?
Member Rivet::JetEffSmearFn::sfn
Ambiguity re. whether reco eff or a tagging efficiency...
Member Rivet::JetFinder::jets (const JetSorter &sorter, const Cut &c=Cuts::open()) const
Will the vector be efficiently std::move'd by value through this function chain?
Member Rivet::JetFinder::jets (const Cut &c, const JetSorter &sorter) const
Will the vector be efficiently std::move'd by value through this function chain?
Member Rivet::JetFinder::jets (const JetSelector &selector, const JetSorter &sorter) const
Will the vector be efficiently std::move'd by value through this function chain?
Member Rivet::JetShape::project (const Event &e)
Provide int and diff jet shapes with some sort of area normalisation?
Class Rivet::LorentzTransform
Review the active/passive convention choice. Seems counterintuitive now...
Class Rivet::MC_JetAnalysis
Could reduce duplication by inheriting this from MC_ParticleAnalysis, with minor tweaking
Member Rivet::mean (const vector< NUM > &sample)
Support multiple container types via SFINAE
Member Rivet::mean_err (const vector< NUM > &sample)
Support multiple container types via SFINAE
Member Rivet::median (const vector< NUM > &sample)
Support multiple container types via SFINAE
Class Rivet::MergedFinalState
Extend to merging many FS projections
Member Rivet::MET_SMEAR_ATLAS_RUN2 (const Vector3 &met, double set)
Just a copy of the Run 1 one: improve!!
Member Rivet::MUON_EFF_CMS_RUN2 (const Particle &m)
Currently just a copy of Run 1: fix!
Member Rivet::MUON_SMEAR_ATLAS_RUN1 (const Particle &m)
Add muon loose/medium/tight ID efficiencies? All around 95-98%... ignore?
Member Rivet::MUON_SMEAR_CMS_RUN2 (const Particle &m)
Currently just a copy of the Run 1 version: fix!
Member Rivet::P4_SMEAR_E_GAUSS (const FourMomentum &p, double resolution)
Also make jet versions that update/smear constituents?
Member Rivet::Particle::children (const Cut &c=Cuts::OPEN) const
isDecayed? How to restrict to physical particles?
Member Rivet::Particle::closestApproach () const
Check that this works with all angles
Member Rivet::Particle::stableDescendants (const Cut &c=Cuts::OPEN) const

Use recursion through replica-avoiding MCUtils functions to avoid bookkeeping duplicates

Insist that the current particle is post-hadronization, otherwise throw an exception?

Member Rivet::Percentile< T >::operator+= (const Percentile< T > &rhs)
should this also add the Counter?
Member Rivet::PercentileProjection::PercentileProjection (const SingleValueProjection &sv, const Histo1D &calhist, bool increasing=false)
Use mkScatter to pass this to the Scatter2D-calibrated version?
Member Rivet::PHOTON_EFF_ATLAS_RUN1 (const Particle &y)
Allow electron misID? What about jet misID?
Member Rivet::PHOTON_EFF_ATLAS_RUN2 (const Particle &y)
Allow electron misID? What about jet misID?
Member Rivet::PHOTON_EFF_CMS_RUN1 (const Particle &y)

Currently from Delphes

Allow electron misID? What about jet misID?

Member Rivet::PHOTON_EFF_CMS_RUN2 (const Particle &y)

Currently just a copy of Run 1: fix!

Allow electron misID? What about jet misID?

Member Rivet::PHOTON_SMEAR_ATLAS_RUN1 (const Particle &y)
Use real photon smearing
Member Rivet::pids (const ParticlePair &pp)
Make ParticlePair a custom class instead?
Class Rivet::PrimaryHadrons

Also be able to return taus? Prefer a separate tau finder.

This assumes that the primary hadrons are unstable... should we also look for stable primary hadrons?

Member Rivet::Projection::addPdgIdPair (PdgId beam1, PdgId beam2)
This deserves a better name!
Member Rivet::Projection::beamPairs () const
Remove the beam constraints system from projections.
Member Rivet::ProjectionApplier::apply (const Event &evt, const PROJ &proj) const
Add SFINAE to require that PROJ inherit from Projection
Member Rivet::ProjectionApplier::apply (const std::string &name, const Event &evt) const
Add SFINAE to require that PROJ inherit from Projection
Member Rivet::ProjectionApplier::apply (const Event &evt, const std::string &name) const
Add SFINAE to require that PROJ inherit from Projection
Member Rivet::ProjectionApplier::apply (const Event &evt, const Projection &proj) const
Add SFINAE to require that PROJ inherit from Projection
Member Rivet::ProjectionApplier::applyProjection (const Event &evt, const PROJ &proj) const
Add SFINAE to require that PROJ inherit from Projection
Member Rivet::ProjectionApplier::applyProjection (const Event &evt, const Projection &proj) const
Add SFINAE to require that PROJ inherit from Projection
Member Rivet::ProjectionApplier::applyProjection (const Event &evt, const std::string &name) const
Add SFINAE to require that PROJ inherit from Projection
Member Rivet::ProjectionApplier::declare (const std::string &name, const PROJ &proj)
Add SFINAE to require that PROJ inherit from Projection
Member Rivet::ProjectionApplier::declare (const PROJ &proj, const std::string &name)
Add SFINAE to require that PROJ inherit from Projection
Member Rivet::ProjectionApplier::declareProjection (const PROJ &proj, const std::string &name)
Add SFINAE to require that PROJ inherit from Projection
Member Rivet::ProjectionApplier::get (const std::string &name) const
Add SFINAE to require that PROJ inherit from Projection
Member Rivet::ProjectionApplier::getProjection (const std::string &name) const
Add SFINAE to require that PROJ inherit from Projection
Class Rivet::PromptFinalState
Decide how to treat brem photons off prompt leptons – are they also prompt? "Decay" does not change the lepton PID...
Member Rivet::PseudoJets
Make into an explicit container with conversion to Jets and FourMomenta?
Member Rivet::safediv (double num, double den, double fail=0.0)
When std::common_type can be used, generalise to multiple numeric types with appropriate return type.
Member Rivet::SmearedJets::DEFAULT_RIVET_PROJ_CLONE (SmearedJets)

How to include tagging effs?

Variadic eff/smear fn list?

Add a trailing Cut arg cf. SmearedParticles? – wrap into an eff function

Member Rivet::SmearedJets::project (const Event &e)

Or could use the/an actual clustered b-quark momentum?

As above... ?

Member Rivet::SmearedJets::SmearedJets (const JetAlg &ja, const initializer_list< JetEffSmearFn > &effSmearFns, const JetEffFn &bTagEffFn=JET_BTAG_PERFECT, const JetEffFn &cTagEffFn=JET_CTAG_PERFECT)
Add a tau-tag slot
Member Rivet::SmearedJets::SmearedJets (const JetAlg &ja, const JetSmearFn &smearFn, const JetEffFn &bTagEffFn, const JetEffFn &cTagEffFn, const JetEffFn &jetEffFn)
Add a tau-tag slot
Member Rivet::SmearedJets::SmearedJets (const JetAlg &ja, const JetEffFn &bTagEffFn=JET_BTAG_PERFECT, const JetEffFn &cTagEffFn=JET_CTAG_PERFECT, const vector< JetEffSmearFn > &effSmearFns={})
Add a tau-tag slot
Member Rivet::SmearedJets::SmearedJets (const JetAlg &ja, const JetEffFn &bTagEffFn=JET_BTAG_PERFECT, const JetEffFn &cTagEffFn=JET_CTAG_PERFECT, const initializer_list< JetEffSmearFn > &effSmearFns={})
Add a tau-tag slot
Member Rivet::SmearedJets::SmearedJets (const JetAlg &ja, const JetSmearFn &smearFn, const JetEffFn &bTagEffFn=JET_BTAG_PERFECT, const JetEffFn &cTagEffFn=JET_CTAG_PERFECT)
Add a tau-tag slot
Member Rivet::SmearedJets::SmearedJets (const JetAlg &ja, const vector< JetEffSmearFn > &effSmearFns, const JetEffFn &bTagEffFn=JET_BTAG_PERFECT, const JetEffFn &cTagEffFn=JET_CTAG_PERFECT)
Add a tau-tag slot
Member Rivet::SmearedMET::vectorPt () const
Currently equivalent to vectorEt
Member Rivet::SmearedParticles::project (const Event &e)
Is this a good idea?? What if raw particles are requested?
Member Rivet::SmearedParticles::SmearedParticles (const ParticleFinder &pf, const Cut &c, ARGS... effSmearFns)
Wouldn't it be nice if the Cut could also go after the parameter pack?
Member Rivet::sortBy (MOMS &pbs, const CMP &cmp)
Add sorting by phi [0..2PI]
Member Rivet::TAU_EFF_CMS_RUN1 (const Particle &t)
Needs work; this is just a copy of the Run 2 version in Delphes 3.3.2
Member Rivet::TAU_EFF_CMS_RUN2 (const Particle &t)
Needs work; this is the dumb version from Delphes 3.3.2
Member Rivet::TAU_SMEAR_ATLAS_RUN1 (const Particle &t)

Currently a copy of the jet smearing

Also need a JES uncertainty component?

Is this the best way to smear? Should we preserve the energy, or pT, or direction?

Member Rivet::TAU_SMEAR_ATLAS_RUN2 (const Particle &t)
Currently a copy of the Run 1 version
Member Rivet::TAU_SMEAR_CMS_RUN1 (const Particle &t)
Currently a copy of the crappy ATLAS one
Member Rivet::TAU_SMEAR_CMS_RUN2 (const Particle &t)
Currently a copy of the Run 1 version
Class Rivet::TauFinder
Convert to a general ParticleFinder, since it's not a true final state? Needs some care...
Member Rivet::TauFinder::TauFinder (DecayMode decaymode=DecayMode::ANY, const Cut &cut=Cuts::open())
What about directness/promptness?
Member Rivet::Taus
Make this the canonical name in future
Member Rivet::transform (const CONTAINER1 &in, const std::function< T2(typename CONTAINER1::value_type)> &f)
Make the function template polymorphic... or specific to ParticleBase
Member Rivet::TRK_EFF_ATLAS_RUN2 (const Particle &p)
Currently just a copy of Run 1: fix!
Member Rivet::TRK_EFF_CMS_RUN2 (const Particle &p)
Currently just a copy of Run 1: fix!
Class Rivet::UnstableParticles

Convert to a general ParticleFinder since this is explicitly not a final state... but needs care

Add a FIRST/LAST/ANY enum to specify the mode for uniquifying replica chains (default = LAST)

Member Rivet::Vector3::azimuthalAngle (const PhiMapping mapping=ZERO_2PI) const
Would it be better to return NaN in the null-perp case? Or throw?!
Member Rivet::VetoedFinalState::addDecayProductsVeto (PdgId pid)
Need HepMC to sort themselves out and keep vector bosons from the hard vtx in the event record before this will work reliably for all pdg ids
Member Rivet::WFinder::boson () const
C++17 std::optional...
Member Rivet::WFinder::constituentLepton () const
C++17 std::optional...
Member Rivet::WFinder::WFinder (const FinalState &inputfs, const Cut &leptoncuts, PdgId pid, double minmass, double maxmass, double missingET, double dRmax=0.1, ChargedLeptons chLeptons=ChargedLeptons::PROMPT, ClusterPhotons clusterPhotons=ClusterPhotons::NODECAY, AddPhotons trackPhotons=AddPhotons::NO, MassWindow masstype=MassWindow::M, double masstarget=80.4 *GeV)
Revisit AddPhotons::NO as default?
Class Rivet::ZFinder
Alias then rename as Dileptons
Module Streaming containers as string reps

Make these named toStr rather than operator<<

Make these generic to any iterable

Module Streaming containers as string reps

Make these named toStr rather than operator<<

Make these generic to any iterable

Module Transverse energy functions
Move into a common base class for MissingMomentum and SmearedMET – MomentumBalance, METFinder?
Module Transverse energy functions
Move into a common base class for MissingMomentum and SmearedMET – MomentumBalance, METFinder?
Module Transverse momentum functions
Move into a common base class for MissingMomentum and SmearedMET – MomentumBalance, METFinder?
Module Transverse momentum functions
Move into a common base class for MissingMomentum and SmearedMET – MomentumBalance, METFinder?