Go to the documentation of this file.00001 #ifndef MSLayersAtAngle_H
00002 #define MSLayersAtAngle_H
00003
00008 #include <vector>
00009 #include <cmath>
00010
00011 #include "RecoTracker/TkMSParametrization/interface/MSLayer.h"
00012 #include "FWCore/Utilities/interface/GCC11Compatibility.h"
00013
00014 class PixelRecoLineRZ;
00015
00016 class dso_hidden MSLayersAtAngle {
00017
00018 public:
00019 MSLayersAtAngle() { }
00020 MSLayersAtAngle(const std::vector<MSLayer> & layers);
00021 void update(const MSLayer & layer);
00022 const MSLayer * findLayer(const MSLayer & layer) const;
00023
00024 float sumX0D(const PixelRecoPointRZ & pointI,
00025 const PixelRecoPointRZ & pointO) const;
00026
00027 float sumX0D( int il, int ol,
00028 const PixelRecoPointRZ & pointI,
00029 const PixelRecoPointRZ & pointO) const;
00030
00031 float sumX0D(const PixelRecoPointRZ & pointI,
00032 const PixelRecoPointRZ & pointM,
00033 const PixelRecoPointRZ & pointO) const;
00034
00035
00036
00037 float sumX0D(float zV, int il, int ol,
00038 const PixelRecoPointRZ & pointI,
00039 const PixelRecoPointRZ & pointO) const;
00040
00041 int size() const { return theLayers.size(); }
00042 void print() const;
00043
00044 private:
00045 std::vector<MSLayer> theLayers;
00046 std::vector<int> indeces;
00047
00048 private:
00049 void init();
00050
00051 typedef std::vector<MSLayer>::const_iterator LayerItr;
00052 LayerItr findLayer(const PixelRecoPointRZ & point,
00053 LayerItr i1, LayerItr i2) const;
00054 float sum2RmRn(LayerItr i1, LayerItr i2,
00055 float rTarget, const SimpleLineRZ & line) const;
00056 };
00057
00058 #endif