Rivet  3.1.4
ConstLossyFinalState.hh
1 // -*- C++ -*-
2 #ifndef RIVET_ConstLossyFinalState_HH
3 #define RIVET_ConstLossyFinalState_HH
4 
5 #include "Rivet/Tools/Logging.hh"
6 #include "Rivet/Tools/Random.hh"
7 #include "Rivet/Config/RivetCommon.hh"
8 #include "Rivet/Particle.hh"
9 #include "Rivet/Event.hh"
10 #include "Rivet/Projection.hh"
11 #include "Rivet/Projections/FinalState.hh"
12 #include "Rivet/Projections/LossyFinalState.hh"
13 
14 namespace Rivet {
15 
16 
19  public:
20 
21  ConstRandomFilter(double lossFraction)
22  : _lossFraction(lossFraction)
23  {
24  assert(_lossFraction >= 0);
25  }
26 
27  // If operator() returns true, particle is deleted ("lost")
28  bool operator()(const Particle&) {
29  return rand01() < _lossFraction;
30  }
31 
32  CmpState compare(const ConstRandomFilter& other) const {
33  return cmp(_lossFraction, other._lossFraction);
34  }
35 
36  private:
37 
38  double _lossFraction;
39 
40  };
41 
42 
43 
45  class ConstLossyFinalState : public LossyFinalState<ConstRandomFilter> {
46  public:
47 
49 
50 
52  ConstLossyFinalState(const FinalState& fsp, double lossfraction)
54  {
55  setName("ConstLossyFinalState");
56  }
57 
59  ConstLossyFinalState(double lossfraction, const Cut& c=Cuts::open())
61  {
62  setName("ConstLossyFinalState");
63  }
64 
66  DEFAULT_RIVET_PROJ_CLONE(ConstLossyFinalState);
67 
69 
70  };
71 
72 
73 }
74 
75 #endif
Definition: MC_Cent_pPb.hh:10
Templated FS projection which can lose some of the supplied particles.
Definition: LossyFinalState.hh:17
const Cut & open()
Fully open cut singleton, accepts everything.
Particle representation, either from a HepMC::GenEvent or reconstructed.
Definition: Particle.hh:18
Functor used to implement constant random lossiness.
Definition: ConstLossyFinalState.hh:18
ConstLossyFinalState(double lossfraction, const Cut &c=Cuts::open())
Stand-alone constructor. Initialises the base FinalState projection.
Definition: ConstLossyFinalState.hh:59
Randomly lose a constant fraction of particles.
Definition: ConstLossyFinalState.hh:45
Project out all final-state particles in an event. Probably the most important projection in Rivet! ...
Definition: FinalState.hh:12
ConstLossyFinalState(const FinalState &fsp, double lossfraction)
Constructor from a FinalState.
Definition: ConstLossyFinalState.hh:52
double rand01()
Return a uniformly sampled random number between 0 and 1.
Cmp< T > cmp(const T &t1, const T &t2)
Global helper function for easy creation of Cmp objects.
Definition: Cmp.hh:255