00001 #ifndef MSLayersAtAngle_H 00002 #define MSLayersAtAngle_H 00003 00008 #include <vector> 00009 #include <cmath> 00010 00011 #include "RecoTracker/TkMSParametrization/interface/MSLayer.h" 00012 class PixelRecoLineRZ; 00013 00014 class MSLayersAtAngle { 00015 00016 public: 00017 MSLayersAtAngle() { } 00018 MSLayersAtAngle(const std::vector<MSLayer> & layers); 00019 void update(const MSLayer & layer); 00020 const MSLayer * findLayer(const MSLayer & layer) const; 00021 00022 float sumX0D(const PixelRecoPointRZ & pointI, 00023 const PixelRecoPointRZ & pointO) const; 00024 float sumX0D(const PixelRecoPointRZ & pointI, 00025 const PixelRecoPointRZ & pointM, 00026 const PixelRecoPointRZ & pointO) const; 00027 00028 int size() const { return theLayers.size(); } 00029 void print() const; 00030 00031 private: 00032 std::vector<MSLayer> theLayers; 00033 00034 private: 00035 typedef std::vector<MSLayer>::const_iterator LayerItr; 00036 LayerItr findLayer(const PixelRecoPointRZ & point, 00037 LayerItr i1, LayerItr i2) const; 00038 float sum2RmRn(LayerItr i1, LayerItr i2, 00039 float rTarget, const PixelRecoLineRZ & line) const; 00040 }; 00041 00042 #endif