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;