CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Attributes | Static Private Attributes
MultipleScatteringParametrisation Class Reference

#include <MultipleScatteringParametrisation.h>

Public Types

enum  Consecutive { notAssumeConsecutive, useConsecutive }
 

Public Member Functions

 MultipleScatteringParametrisation (const DetLayer *layer, const MSLayersKeeper *layerKeeper)
 
float operator() (float pt, float cotTheta, float transverseIP=0.) const
 
float operator() (float pt, float cotTheta, const PixelRecoPointRZ &point, float transverseIP=0.) const
 
float operator() (float pt, float cotTheta, const PixelRecoPointRZ &point, int ol) const
 
float operator() (float pt, const PixelRecoPointRZ &point1, const PixelRecoPointRZ &point2, Consecutive consecutive=notAssumeConsecutive, float transverseIP=0.) const
 
float operator() (float pT, const PixelRecoPointRZ &pointV, const PixelRecoPointRZ &pointO, int ol) const
 

Private Attributes

MSLayer theLayer
 
MSLayersKeeper const * theLayerKeeper = nullptr
 

Static Private Attributes

static const float x0ToSigma = 0.0136f
 

Detailed Description

Parametrisation of multiple scattering sigma in tracker.

Definition at line 16 of file MultipleScatteringParametrisation.h.

Member Enumeration Documentation

◆ Consecutive

Constructor & Destructor Documentation

◆ MultipleScatteringParametrisation()

MultipleScatteringParametrisation::MultipleScatteringParametrisation ( const DetLayer layer,
const MSLayersKeeper layerKeeper 
)

Definition at line 21 of file MultipleScatteringParametrisation.cc.

References MSLayersKeeper::layer(), pixelTopology::layer, theLayer, and theLayerKeeper.

23  : theLayerKeeper(layerKeeper) {
24  if (layer) {
26  }
27 }
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
virtual MSLayer layer(const DetLayer *dl) const

Member Function Documentation

◆ operator()() [1/5]

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 30 of file MultipleScatteringParametrisation.cc.

References pv::pT, MSLayer::sumX0D(), theLayer, and x0ToSigma.

30  {
31  float sumX0D = theLayer.sumX0D(cotTheta);
32  return x0ToSigma * sumX0D / pT;
33 }
float sumX0D(float cotTheta) const
Definition: MSLayer.cc:144

◆ operator()() [2/5]

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 36 of file MultipleScatteringParametrisation.cc.

References MSLayer::crossing(), MSLayersKeeper::layers(), pv::pT, MSLayersAtAngle::sumX0D(), theLayer, theLayerKeeper, qcdUeDQM_cfi::tip, and x0ToSigma.

39  {
40  PixelRecoLineRZ lineIO(pointI, cotTheta, tip);
41  PixelRecoPointRZ pointO = theLayer.crossing(lineIO).first;
42 
43  const MSLayersAtAngle &layersAtEta = theLayerKeeper->layers(cotTheta);
44 
45  float sumX0D = layersAtEta.sumX0D(pointI, pointO);
46  return x0ToSigma * sumX0D / pT;
47 }
std::pair< PixelRecoPointRZ, bool > crossing(const PixelRecoLineRZ &line) const
Definition: MSLayer.cc:84
virtual const MSLayersAtAngle & layers(float cotTheta) const =0
float sumX0D(const PixelRecoPointRZ &pointI, const PixelRecoPointRZ &pointO) const

◆ operator()() [3/5]

float MultipleScatteringParametrisation::operator() ( float  pt,
float  cotTheta,
const PixelRecoPointRZ point,
int  ol 
) const

Definition at line 49 of file MultipleScatteringParametrisation.cc.

References MSLayer::crossing(), MSLayersKeeper::layers(), pv::pT, MSLayer::seqNum(), MSLayersAtAngle::sumX0D(), theLayer, theLayerKeeper, and x0ToSigma.

52  {
53  PixelRecoLineRZ lineIO(pointI, cotTheta);
54  PixelRecoPointRZ pointO = theLayer.crossing(lineIO).first;
55 
56  const MSLayersAtAngle &layersAtEta = theLayerKeeper->layers(cotTheta);
57 
58  float sumX0D = layersAtEta.sumX0D(il, theLayer.seqNum(), pointI, pointO);
59  return x0ToSigma * sumX0D / pT;
60 }
std::pair< PixelRecoPointRZ, bool > crossing(const PixelRecoLineRZ &line) const
Definition: MSLayer.cc:84
int seqNum() const
Definition: MSLayer.h:47
virtual const MSLayersAtAngle & layers(float cotTheta) const =0
float sumX0D(const PixelRecoPointRZ &pointI, const PixelRecoPointRZ &pointO) const

◆ operator()() [4/5]

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 63 of file MultipleScatteringParametrisation.cc.

References PixelRecoLineRZ::cotLine(), MSLayer::crossing(), MSLayersKeeper::layers(), pv::pT, PixelRecoPointRZ::r(), mathSSE::sqrt(), MSLayersAtAngle::sumX0D(), theLayer, theLayerKeeper, qcdUeDQM_cfi::tip, useConsecutive, MSLayer::x0(), and x0ToSigma.

67  {
68  PixelRecoLineRZ lineIO(pointI, pointO, tip);
69  PixelRecoPointRZ pointM = theLayer.crossing(lineIO).first;
70  float cotTheta = lineIO.cotLine();
71 
72  if (consecutive == useConsecutive) {
73  float dist = fabs((pointO.r() - pointM.r()) * (pointM.r() - pointI.r()) / (pointO.r() - pointI.r()));
74  return x0ToSigma * sqrt(theLayer.x0(cotTheta)) * dist / pT;
75  } else {
76  const MSLayersAtAngle &layersAtEta = theLayerKeeper->layers(cotTheta);
77  float sumX0D = layersAtEta.sumX0D(pointI, pointM, pointO);
78  return x0ToSigma * sumX0D / pT;
79  }
80 }
std::pair< PixelRecoPointRZ, bool > crossing(const PixelRecoLineRZ &line) const
Definition: MSLayer.cc:84
float x0(float cotTheta) const
Definition: MSLayer.cc:131
T sqrt(T t)
Definition: SSEVec.h:19
float r() const
virtual const MSLayersAtAngle & layers(float cotTheta) const =0
float sumX0D(const PixelRecoPointRZ &pointI, const PixelRecoPointRZ &pointO) const

◆ operator()() [5/5]

float MultipleScatteringParametrisation::operator() ( float  pT,
const PixelRecoPointRZ pointV,
const PixelRecoPointRZ pointO,
int  ol 
) const

Definition at line 82 of file MultipleScatteringParametrisation.cc.

References PixelRecoLineRZ::cotLine(), MSLayer::crossing(), MSLayersKeeper::layers(), pv::pT, MSLayer::seqNum(), MSLayersAtAngle::sumX0D(), theLayer, theLayerKeeper, x0ToSigma, and PixelRecoPointRZ::z().

85  {
86  PixelRecoLineRZ lineIO(pointV, pointO);
87  PixelRecoPointRZ pointI = theLayer.crossing(lineIO).first;
88  float cotTheta = lineIO.cotLine();
89 
90  const MSLayersAtAngle &layersAtEta = theLayerKeeper->layers(cotTheta);
91  float sumX0D = layersAtEta.sumX0D(pointV.z(), theLayer.seqNum(), ol, pointI, pointO);
92  return x0ToSigma * sumX0D / pT;
93 }
std::pair< PixelRecoPointRZ, bool > crossing(const PixelRecoLineRZ &line) const
Definition: MSLayer.cc:84
int seqNum() const
Definition: MSLayer.h:47
virtual const MSLayersAtAngle & layers(float cotTheta) const =0
float z() const
float sumX0D(const PixelRecoPointRZ &pointI, const PixelRecoPointRZ &pointO) const

Member Data Documentation

◆ theLayer

MSLayer MultipleScatteringParametrisation::theLayer
private

◆ theLayerKeeper

MSLayersKeeper const* MultipleScatteringParametrisation::theLayerKeeper = nullptr
private

◆ x0ToSigma

const float MultipleScatteringParametrisation::x0ToSigma = 0.0136f
staticprivate

Definition at line 48 of file MultipleScatteringParametrisation.h.

Referenced by operator()().