Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:28:51

0001 #ifndef MultipleScatteringParametrisation_H
0002 #define MultipleScatteringParametrisation_H
0003 
0004 /** \class MultipleScatteringParametrisation
0005  * Parametrisation of multiple scattering sigma in tracker.
0006  */
0007 #include "TrackingTools/DetLayers/interface/DetLayer.h"
0008 #include "RecoTracker/TkMSParametrization/interface/PixelRecoPointRZ.h"
0009 #include "RecoTracker/TkMSParametrization/interface/MSLayer.h"
0010 #include "FWCore/Framework/interface/EventSetup.h"
0011 
0012 class MSLayersKeeper;
0013 class PixelRecoPointRZ;
0014 class DetLayer;
0015 
0016 class MultipleScatteringParametrisation {
0017 public:
0018   enum Consecutive { notAssumeConsecutive, useConsecutive };
0019 
0020   MultipleScatteringParametrisation(const DetLayer *layer, const MSLayersKeeper *layerKeeper);
0021 
0022   /// MS sigma  at the layer for which parametrisation is initialised;
0023   /// particle assumed to come from nominal vertex, "fast" methods called
0024   float operator()(float pt, float cotTheta, float transverseIP = 0.) const;
0025 
0026   /// MS sigma  at the layer for which parametrisation is initialised;
0027   /// particle assumed to come from constraint point (inner to layer).
0028   /// layer by layer contribution is calculated
0029   float operator()(float pt, float cotTheta, const PixelRecoPointRZ &point, float transverseIP = 0.) const;
0030   float operator()(float pt, float cotTheta, const PixelRecoPointRZ &point, int ol) const;
0031 
0032   /// MS sigma  at the layer for which parametrisation is initialised;
0033   /// particle assumed to be measured at point1 and point2,
0034   /// it is assumed that layer is between point1 and point2.
0035   /// layer by layer contribution is calculated
0036   float operator()(float pt,
0037                    const PixelRecoPointRZ &point1,
0038                    const PixelRecoPointRZ &point2,
0039                    Consecutive consecutive = notAssumeConsecutive,
0040                    float transverseIP = 0.) const;
0041 
0042   // as above, pointV is at vertex and pointO is on layer ol
0043   float operator()(float pT, const PixelRecoPointRZ &pointV, const PixelRecoPointRZ &pointO, int ol) const;
0044 
0045 private:
0046   MSLayer theLayer;
0047   MSLayersKeeper const *theLayerKeeper = nullptr;
0048   static const float x0ToSigma;
0049 };
0050 #endif