CMS 3D CMS Logo

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

Go to the documentation of this file.
00001 #ifndef MultipleScatteringParametrisation_H
00002 #define MultipleScatteringParametrisation_H 
00003 
00007 #include "TrackingTools/DetLayers/interface/DetLayer.h"
00008 #include "RecoTracker/TkMSParametrization/interface/PixelRecoPointRZ.h"
00009 #include "RecoTracker/TkMSParametrization/interface/MSLayer.h"
00010 #include "FWCore/Framework/interface/EventSetup.h"
00011 #include "FWCore/Utilities/interface/GCC11Compatibility.h"
00012 
00013 
00014 class MSLayersKeeper;
00015 class PixelRecoPointRZ;
00016 class DetLayer;
00017 
00018 
00019 
00020 class MultipleScatteringParametrisation {
00021 
00022 public:
00023 
00024   static void initKeepers(const edm::EventSetup &iSetup);
00025 
00026   enum X0Source { useDetLayer=0, useX0AtEta=1, useX0DataAveraged=2 };
00027   enum Consecutive { notAssumeConsecutive, useConsecutive };
00028 
00029   MultipleScatteringParametrisation( const DetLayer* layer, 
00030                                      const edm::EventSetup &iSetup,
00031                                      X0Source x0source = useX0AtEta);
00032 
00033 
00036   float operator()(float pt, float cotTheta, float transverseIP = 0.) const;
00037 
00041   float operator()(float pt,
00042                    float cotTheta,
00043                    const PixelRecoPointRZ & point,
00044                    float transverseIP=0.) const;
00045   float operator()(float pt,
00046                    float cotTheta,
00047                    const PixelRecoPointRZ & point, int ol) const;
00048 
00049 
00054   float operator()(float pt,
00055                    const PixelRecoPointRZ & point1,
00056                    const PixelRecoPointRZ & point2,
00057                    Consecutive consecutive = notAssumeConsecutive,
00058                    float transverseIP = 0.) const;
00059 
00060   // as above, pointV is at vertex and pointO is on layer ol
00061   float operator()(
00062                    float pT,
00063                    const PixelRecoPointRZ & pointV,
00064                    const PixelRecoPointRZ & pointO,
00065                    int ol) const;
00066 
00067 
00068 private:
00069 
00070   MSLayer theLayer;
00071   MSLayersKeeper const * theLayerKeeper;
00072   static const float x0ToSigma;
00073 
00074 };
00075 #endif