#include <MultipleScatteringParametrisation.h>
Public Types | |
enum | Consecutive { notAssumeConsecutive, useConsecutive } |
enum | X0Source { useDetLayer = 0, useX0AtEta = 1, useX0DataAveraged = 2 } |
Public Member Functions | |
MultipleScatteringParametrisation (const DetLayer *layer, const edm::EventSetup &iSetup, X0Source x0source=useX0AtEta) | |
float | operator() (float pt, const PixelRecoPointRZ &point1, const PixelRecoPointRZ &point2, Consecutive consecutive=notAssumeConsecutive, float transverseIP=0.) const |
float | operator() (float pt, float cotTheta, const PixelRecoPointRZ &point, float transverseIP=0.) const |
float | operator() (float pt, float cotTheta, float transverseIP=0.) const |
Static Public Member Functions | |
static void | initKeepers (const edm::EventSetup &iSetup) |
Private Attributes | |
MSLayer | theLayer |
MSLayersKeeper const * | theLayerKeeper |
Static Private Attributes | |
static const float | x0ToSigma = 0.0136f |
Parametrisation of multiple scattering sigma in tracker.
Definition at line 20 of file MultipleScatteringParametrisation.h.
Definition at line 27 of file MultipleScatteringParametrisation.h.
Definition at line 26 of file MultipleScatteringParametrisation.h.
{ useDetLayer=0, useX0AtEta=1, useX0DataAveraged=2 };
MultipleScatteringParametrisation::MultipleScatteringParametrisation | ( | const DetLayer * | layer, |
const edm::EventSetup & | iSetup, | ||
X0Source | x0source = useX0AtEta |
||
) |
Definition at line 52 of file MultipleScatteringParametrisation.cc.
References initKeepers(), MSLayersKeeper::layer(), theLayer, and theLayerKeeper.
: theLayerKeeper(keepers(x0Source)) { // FIXME not thread safe: move elsewhere... initKeepers(iSetup); if (!layer) return; theLayer = theLayerKeeper->layer(layer); }
void MultipleScatteringParametrisation::initKeepers | ( | const edm::EventSetup & | iSetup | ) | [static] |
Definition at line 45 of file MultipleScatteringParametrisation.cc.
References init.
Referenced by MultipleScatteringParametrisation().
{ const_cast<Keepers&>(keepers).init(iSetup); }
float MultipleScatteringParametrisation::operator() | ( | float | pt, |
const PixelRecoPointRZ & | point1, | ||
const PixelRecoPointRZ & | point2, | ||
Consecutive | consecutive = notAssumeConsecutive , |
||
float | transverseIP = 0. |
||
) | const |
MS sigma at the layer for which parametrisation is initialised; particle assumed to be measured at point1 and point2, it is assumed that layer is between point1 and point2. layer by layer contribution is calculated
Definition at line 86 of file MultipleScatteringParametrisation.cc.
References PixelRecoLineRZ::cotLine(), MSLayer::crossing(), MSLayersKeeper::layers(), PixelRecoPointRZ::r(), mathSSE::sqrt(), MSLayersAtAngle::sumX0D(), theLayer, theLayerKeeper, useConsecutive, MSLayer::x0(), and x0ToSigma.
{ PixelRecoLineRZ lineIO(pointI, pointO, tip); PixelRecoPointRZ pointM = theLayer.crossing(lineIO).first; float cotTheta = lineIO.cotLine(); if (consecutive==useConsecutive) { float dist = fabs( (pointO.r()-pointM.r()) * (pointM.r()-pointI.r()) / (pointO.r()-pointI.r()) ); return x0ToSigma * sqrt(theLayer.x0(cotTheta)) * dist /pT; } else { const MSLayersAtAngle & layersAtEta = theLayerKeeper->layers(cotTheta); float sumX0D = layersAtEta.sumX0D(pointI, pointM, pointO); return x0ToSigma * sumX0D /pT; } }
float MultipleScatteringParametrisation::operator() | ( | float | pt, |
float | cotTheta, | ||
const PixelRecoPointRZ & | point, | ||
float | transverseIP = 0. |
||
) | const |
MS sigma at the layer for which parametrisation is initialised; particle assumed to come from constraint point (inner to layer). layer by layer contribution is calculated
Definition at line 72 of file MultipleScatteringParametrisation.cc.
References MSLayer::crossing(), MSLayersKeeper::layers(), MSLayersAtAngle::sumX0D(), theLayer, theLayerKeeper, and x0ToSigma.
{ PixelRecoLineRZ lineIO(pointI, cotTheta, tip); PixelRecoPointRZ pointO = theLayer.crossing(lineIO).first; const MSLayersAtAngle & layersAtEta = theLayerKeeper->layers(cotTheta); float sumX0D = layersAtEta.sumX0D(pointI, pointO); return x0ToSigma * sumX0D /pT; }
float MultipleScatteringParametrisation::operator() | ( | float | pt, |
float | cotTheta, | ||
float | transverseIP = 0. |
||
) | const |
MS sigma at the layer for which parametrisation is initialised; particle assumed to come from nominal vertex, "fast" methods called
Definition at line 64 of file MultipleScatteringParametrisation.cc.
References MSLayer::sumX0D(), theLayer, and x0ToSigma.
Definition at line 58 of file MultipleScatteringParametrisation.h.
Referenced by MultipleScatteringParametrisation(), and operator()().
MSLayersKeeper const* MultipleScatteringParametrisation::theLayerKeeper [private] |
Definition at line 59 of file MultipleScatteringParametrisation.h.
Referenced by MultipleScatteringParametrisation(), and operator()().
const float MultipleScatteringParametrisation::x0ToSigma = 0.0136f [static, private] |
Definition at line 60 of file MultipleScatteringParametrisation.h.
Referenced by operator()().