CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/RecoTracker/TkMSParametrization/src/MSLayersAtAngle.h

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   // as used in seeding
00036   // z at beamline, point on two layers
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