TrackingRecHitLessFromGlobalPosition

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
#ifndef DataFormats_TrackerRecHit2D_TrackingRecHitLessFromGlobalPosition_H
#define DataFormats_TrackerRecHit2D_TrackingRecHitLessFromGlobalPosition_H

#include "DataFormats/TrajectorySeed/interface/PropagationDirection.h"
#include "Geometry/CommonDetUnit/interface/GeomDet.h"
#include <functional>
#include "Geometry/CommonDetUnit/interface/TrackingGeometry.h"
#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
/** Defines order of layers in the Tracker as seen by straight tracks
 *  coming from the interaction region.
 */

class TrackingRecHitLessFromGlobalPosition {
public:
  TrackingRecHitLessFromGlobalPosition(const TrackingGeometry* geometry_, PropagationDirection dir = alongMomentum)
      : geometry(geometry_), theDir(dir) {}

  bool operator()(const TrackingRecHit& a, const TrackingRecHit& b) const {
    if (theDir == alongMomentum)
      return insideOutLess(a, b);
    else
      return insideOutLess(b, a);
  }

private:
  bool insideOutLess(const TrackingRecHit& a, const TrackingRecHit& b) const;

  bool barrelForwardLess(const TrackingRecHit& a, const TrackingRecHit& b) const;

  const TrackingGeometry* geometry;
  PropagationDirection theDir;
};
#endif