18 struct IsVector : std::false_type {};
20 template <
typename Value>
21 struct IsVector<std::vector<Value>> : std::true_type {};
23 template<
typename Value>
24 using OnlyIfNotVector =
typename std::enable_if < !IsVector<Value>::value >::type;
28 template <
typename Multiplet>
30 return pt_lower_cut_.TooSmall(
id, multiplet.
Pt());
33 template <
typename Multiplet>
35 return pt_upper_cut_.TooLarge(
id, multiplet.
Pt());
38 template <
typename Multiplet>
40 return mass_lower_cut_.TooSmall(
id, multiplet.
Mass());
43 template <
typename Multiplet>
45 return mass_upper_cut_.TooLarge(
id, multiplet.
Mass());
48 template <
typename Multiplet>
53 template <
typename Multiplet>
54 std::vector<Multiplet>
ApplyCuts(
MultiId multi_id, std::vector<Multiplet>
const& multiplets)
const {
58 template <
typename Multiplet>
59 std::vector<Multiplet>
ApplyCuts(
Id id, std::vector<Multiplet>
const& multiplets)
const {
65 template <
typename Multiplet,
typename = OnlyIfNotVector<Multiplet>>
70 template <
typename Multiplet,
typename = OnlyIfNotVector<Multiplet>>
81 template <
typename Multiplet>
83 return multiplet.Rho() > 0 && (multiplet.Rho() < range.Min() || multiplet.Rho() > range.Max());
86 template<
typename Multiplet>
131 bool semi_leptonic_ =
true;
bool MassTooSmall(Id id, Multiplet const &multiplet) const
Definition: PreCuts.hh:39
bool OutSideMassWindow(Multiplet const &multiplet, Mass const &mass_window, Id id) const
Definition: PreCuts.hh:87
PreCut< Mass > & MassLowerCut()
Definition: PreCuts.cpp:31
bool ApplyCuts(Id id, Multiplet const &multiplet) const
Definition: PreCuts.hh:66
boca::Mass Mass() const
Definition: Multiplet.cpp:61
boost::units::quantity< boost::units::si::plane_angle > Angle
Angle measured in radian.
Definition: Si.hh:35
PreCut< Angle > & TrackerMaxEta()
Definition: PreCuts.cpp:39
bool SemiLeptonic() const
Definition: PreCuts.cpp:10
Momentum Pt() const
Definition: Multiplet.cpp:36
Definition: PreCuts.hh:14
Id
PDG particle naming conventions.
Definition: Id.hh:23
PreCut< Momentum > & PtLowerCut()
Definition: PreCuts.cpp:23
bool MassTooLarge(Id id, Multiplet const &multiplet) const
Definition: PreCuts.hh:44
MultiId
Groups of PDG particles.
Definition: Id.hh:125
PreCut< bool > & ConsiderBuildingBlock()
Definition: PreCuts.cpp:43
std::vector< Multiplet > ApplyCuts(Id id, std::vector< Multiplet > const &multiplets) const
Definition: PreCuts.hh:59
std::vector< Multiplet > ApplyCuts(MultiId multi_id, std::vector< Multiplet > const &multiplets) const
Definition: PreCuts.hh:54
Boosted Collider Analysis.
Definition: Analysis.hh:15
Value abs(Value const &value)
Absolute value.
Definition: Units.hh:235
void SetSemiLeptonic(bool semi_leptonic)
Definition: PreCuts.cpp:15
bool DoSubJets(Id id) const
Definition: PreCuts.cpp:19
bool NotParticleRho(Multiplet const &multiplet, Range< double > range={0.5, 2}) const
Definition: PreCuts.hh:82
PreCut< Momentum > & PtUpperCut()
Definition: PreCuts.cpp:27
Multiplet base class
Definition: Multiplet.hh:21
Mass MassOf(Id id)
Mass of particle with given Id.
Definition: Id.cpp:103
bool PtTooLarge(Id id, Multiplet const &multiplet) const
Definition: PreCuts.hh:34
bool OutsideTracker(Id id, Multiplet const &multiplet) const
Definition: PreCuts.hh:49
Angle Rap() const
Rapidity .
Definition: Multiplet.cpp:41
bool ApplyCuts(MultiId id, Multiplet const &multiplet) const
Definition: PreCuts.hh:71
Angle JetConeMax(Id id) const
Definition: PreCuts.cpp:71
std::vector< Elements_ > CopyIf(std::vector< Elements_ > const &inputs, Function_ function)
Definition: Vector.hh:63
bool PtTooSmall(Id id, Multiplet const &multiplet) const
Definition: PreCuts.hh:29
std::vector< Id > Resolve(MultiId multi_id)
Vector if PDG particle Ids for a given MultiId.
Definition: Id.cpp:159
Energy Mass
Mass measured in electronvolt.
Definition: ElectronVolt.hh:62
PreCut< Mass > & MassUpperCut()
Definition: PreCuts.cpp:35