00001 #ifndef SiTrackerMRHTools_MeasurementByLayerGrouper_H 00002 #define SiTrackerMRHTools_MeasurementByLayerGrouper_H 00003 00004 class DetLayer; 00005 class TrajectoryMeasurement; 00006 class GeometricSearchTracker; 00007 00008 #include <vector> 00009 #include <map> 00010 00011 //groups the TrajectoryMeasurements on a layer by layer basis 00012 00013 class MeasurementByLayerGrouper { 00014 00015 private: 00016 00017 typedef TrajectoryMeasurement TM; 00018 const GeometricSearchTracker* theGeomSearch; 00019 00020 const DetLayer* getDetLayer(const TM& tm) const; 00021 00022 public: 00023 00024 explicit MeasurementByLayerGrouper(const GeometricSearchTracker* search = 0):theGeomSearch(search){}; 00025 00026 std::vector<std::pair<const DetLayer*, std::vector<TM> > > operator()(const std::vector<TM>&) const; 00027 00028 00029 //to be ported later if needed 00030 /* 00031 vector<TM> 00032 operator()(const vector<pair<const DetLayer*, vector<TM> > >&) const; 00033 00034 vector<pair<const DetLayer*, map<int, vector<TrajectoryMeasurement> > > > 00035 operator()(const map<int, vector<TM> >&) const; 00036 */ 00037 00038 }; 00039 #endif