14 template <
typename SpacePo
int>
15 class ATLASCuts :
public IExperimentCuts<SpacePoint> {
22 float seedWeight(
const InternalSpacePoint<SpacePoint>& bottom,
23 const InternalSpacePoint<SpacePoint>& middle,
24 const InternalSpacePoint<SpacePoint>& top)
const;
31 bool singleSeedCut(
float weight,
const InternalSpacePoint<SpacePoint>& bottom,
32 const InternalSpacePoint<SpacePoint>&,
33 const InternalSpacePoint<SpacePoint>&)
const;
39 std::vector<std::pair<float, std::unique_ptr<const InternalSeed<SpacePoint>>>>
42 std::pair<
float, std::unique_ptr<
const InternalSeed<SpacePoint>>>>
46 template <
typename SpacePo
int>
48 const InternalSpacePoint<SpacePoint>& bottom,
49 const InternalSpacePoint<SpacePoint>&,
50 const InternalSpacePoint<SpacePoint>& top)
const {
52 if (bottom.radius() > 150) {
55 if (top.radius() < 150) {
61 template <
typename SpacePo
int>
63 float weight,
const InternalSpacePoint<SpacePoint>& b,
64 const InternalSpacePoint<SpacePoint>&,
65 const InternalSpacePoint<SpacePoint>&)
const {
66 return !(b.radius() > 150. && weight < 380.);
69 template <
typename SpacePo
int>
70 std::vector<std::pair<float, std::unique_ptr<const InternalSeed<SpacePoint>>>>
73 std::pair<
float, std::unique_ptr<
const InternalSeed<SpacePoint>>>>
75 std::vector<std::pair<float, std::unique_ptr<const InternalSeed<SpacePoint>>>>
77 if (seeds.size() > 1) {
78 newSeedsVector.push_back(std::move(seeds[0]));
79 size_t itLength =
std::min(seeds.size(), size_t(5));
81 for (
size_t i = 1; i < itLength; i++) {
82 if (seeds[i].first > 200. || seeds[i].second->sp[0]->radius() > 43.) {
83 newSeedsVector.push_back(std::move(seeds[i]));
86 return newSeedsVector;