CMS 3D CMS Logo

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

#include <MultipleScatteringParametrisation.h>

Public Types

enum  Consecutive { notAssumeConsecutive, useConsecutive }
 
enum  X0Source { useDetLayer = 0, useX0AtEta = 1, useX0DataAveraged = 2 }
 

Public Member Functions

void init (const DetLayer *layer, const edm::EventSetup &iSetup, X0Source x0source=useX0AtEta)
 
 MultipleScatteringParametrisation ()
 
 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, const PixelRecoPointRZ &pointV, const PixelRecoPointRZ &pointO, int ol) 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, float cotTheta, float transverseIP=0.) const
 

Static Public Member Functions

static void initKeepers (const edm::EventSetup &iSetup)
 

Private Attributes

MSLayer theLayer
 
const MSLayersKeepertheLayerKeeper = 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

Enumerator
notAssumeConsecutive 
useConsecutive 

Definition at line 21 of file MultipleScatteringParametrisation.h.

◆ X0Source

Enumerator
useDetLayer 
useX0AtEta 
useX0DataAveraged 

Definition at line 20 of file MultipleScatteringParametrisation.h.

20 { useDetLayer = 0, useX0AtEta = 1, useX0DataAveraged = 2 };

Constructor & Destructor Documentation

◆ MultipleScatteringParametrisation() [1/2]

MultipleScatteringParametrisation::MultipleScatteringParametrisation ( )
inline

Definition at line 23 of file MultipleScatteringParametrisation.h.

23 {}

◆ MultipleScatteringParametrisation() [2/2]

MultipleScatteringParametrisation::MultipleScatteringParametrisation ( const DetLayer layer,
const edm::EventSetup iSetup,
X0Source  x0source = useX0AtEta 
)
inline

Definition at line 25 of file MultipleScatteringParametrisation.h.

27  {
28  init(layer, iSetup, x0source);
29  }

References init(), and phase1PixelTopology::layer.

Member Function Documentation

◆ init()

void MultipleScatteringParametrisation::init ( const DetLayer layer,
const edm::EventSetup iSetup,
X0Source  x0source = useX0AtEta 
)

Definition at line 57 of file MultipleScatteringParametrisation.cc.

57  {
58  theLayerKeeper = keepers(x0Source);
59 
60  // FIXME not thread safe: move elsewhere...
61  initKeepers(iSetup);
62 
63  if (!layer)
64  return;
66 }

References phase1PixelTopology::layer.

Referenced by MultipleScatteringParametrisation().

◆ initKeepers()

void MultipleScatteringParametrisation::initKeepers ( const edm::EventSetup iSetup)
static

Definition at line 53 of file MultipleScatteringParametrisation.cc.

53 { keepers.init(iSetup); }

References MSLayersKeeper::init().

◆ operator()() [1/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 102 of file MultipleScatteringParametrisation.cc.

106  {
107  PixelRecoLineRZ lineIO(pointI, pointO, tip);
108  PixelRecoPointRZ pointM = theLayer.crossing(lineIO).first;
109  float cotTheta = lineIO.cotLine();
110 
111  if (consecutive == useConsecutive) {
112  float dist = fabs((pointO.r() - pointM.r()) * (pointM.r() - pointI.r()) / (pointO.r() - pointI.r()));
113  return x0ToSigma * sqrt(theLayer.x0(cotTheta)) * dist / pT;
114  } else {
115  const MSLayersAtAngle &layersAtEta = theLayerKeeper->layers(cotTheta);
116  float sumX0D = layersAtEta.sumX0D(pointI, pointM, pointO);
117  return x0ToSigma * sumX0D / pT;
118  }
119 }

References PixelRecoLineRZ::cotLine(), PVValHelper::pT, PixelRecoPointRZ::r(), mathSSE::sqrt(), MSLayersAtAngle::sumX0D(), and qcdUeDQM_cfi::tip.

◆ operator()() [2/5]

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

Definition at line 121 of file MultipleScatteringParametrisation.cc.

124  {
125  PixelRecoLineRZ lineIO(pointV, pointO);
126  PixelRecoPointRZ pointI = theLayer.crossing(lineIO).first;
127  float cotTheta = lineIO.cotLine();
128 
129  const MSLayersAtAngle &layersAtEta = theLayerKeeper->layers(cotTheta);
130  float sumX0D = layersAtEta.sumX0D(pointV.z(), theLayer.seqNum(), ol, pointI, pointO);
131  return x0ToSigma * sumX0D / pT;
132 }

References PixelRecoLineRZ::cotLine(), PVValHelper::pT, MSLayersAtAngle::sumX0D(), and PixelRecoPointRZ::z().

◆ operator()() [3/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 75 of file MultipleScatteringParametrisation.cc.

78  {
79  PixelRecoLineRZ lineIO(pointI, cotTheta, tip);
80  PixelRecoPointRZ pointO = theLayer.crossing(lineIO).first;
81 
82  const MSLayersAtAngle &layersAtEta = theLayerKeeper->layers(cotTheta);
83 
84  float sumX0D = layersAtEta.sumX0D(pointI, pointO);
85  return x0ToSigma * sumX0D / pT;
86 }

References PVValHelper::pT, MSLayersAtAngle::sumX0D(), and qcdUeDQM_cfi::tip.

◆ operator()() [4/5]

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

Definition at line 88 of file MultipleScatteringParametrisation.cc.

91  {
92  PixelRecoLineRZ lineIO(pointI, cotTheta);
93  PixelRecoPointRZ pointO = theLayer.crossing(lineIO).first;
94 
95  const MSLayersAtAngle &layersAtEta = theLayerKeeper->layers(cotTheta);
96 
97  float sumX0D = layersAtEta.sumX0D(il, theLayer.seqNum(), pointI, pointO);
98  return x0ToSigma * sumX0D / pT;
99 }

References PVValHelper::pT, and MSLayersAtAngle::sumX0D().

◆ operator()() [5/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 69 of file MultipleScatteringParametrisation.cc.

69  {
70  float sumX0D = theLayer.sumX0D(cotTheta);
71  return x0ToSigma * sumX0D / pT;
72 }

References PVValHelper::pT.

Member Data Documentation

◆ theLayer

MSLayer MultipleScatteringParametrisation::theLayer
private

Definition at line 57 of file MultipleScatteringParametrisation.h.

◆ theLayerKeeper

const MSLayersKeeper* MultipleScatteringParametrisation::theLayerKeeper = nullptr
private

Definition at line 58 of file MultipleScatteringParametrisation.h.

◆ x0ToSigma

const float MultipleScatteringParametrisation::x0ToSigma = 0.0136f
staticprivate

Definition at line 59 of file MultipleScatteringParametrisation.h.

MultipleScatteringParametrisation::notAssumeConsecutive
Definition: MultipleScatteringParametrisation.h:21
MSLayer::sumX0D
float sumX0D(float cotTheta) const
Definition: MSLayer.cc:144
MultipleScatteringParametrisation::useDetLayer
Definition: MultipleScatteringParametrisation.h:20
PixelRecoPointRZ::r
float r() const
Definition: PixelRecoPointRZ.h:10
MSLayer::crossing
std::pair< PixelRecoPointRZ, bool > crossing(const PixelRecoLineRZ &line) const
Definition: MSLayer.cc:84
PixelRecoPointRZ::z
float z() const
Definition: PixelRecoPointRZ.h:11
MSLayer::seqNum
int seqNum() const
Definition: MSLayer.h:47
MultipleScatteringParametrisation::useX0AtEta
Definition: MultipleScatteringParametrisation.h:20
PVValHelper::pT
Definition: PVValidationHelpers.h:71
MSLayersKeeper::layer
virtual MSLayer layer(const DetLayer *dl) const
Definition: MSLayersKeeper.h:14
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
MultipleScatteringParametrisation::initKeepers
static void initKeepers(const edm::EventSetup &iSetup)
Definition: MultipleScatteringParametrisation.cc:53
MSLayersAtAngle::sumX0D
float sumX0D(const PixelRecoPointRZ &pointI, const PixelRecoPointRZ &pointO) const
Definition: MSLayersAtAngle.cc:51
MSLayersAtAngle
Definition: MSLayersAtAngle.h:16
MultipleScatteringParametrisation::useX0DataAveraged
Definition: MultipleScatteringParametrisation.h:20
MultipleScatteringParametrisation::x0ToSigma
static const float x0ToSigma
Definition: MultipleScatteringParametrisation.h:59
phase1PixelTopology::layer
constexpr std::array< uint8_t, layerIndexSize > layer
Definition: phase1PixelTopology.h:99
qcdUeDQM_cfi.tip
tip
Definition: qcdUeDQM_cfi.py:23
MultipleScatteringParametrisation::theLayerKeeper
const MSLayersKeeper * theLayerKeeper
Definition: MultipleScatteringParametrisation.h:58
MSLayersKeeper::layers
virtual const MSLayersAtAngle & layers(float cotTheta) const =0
PixelRecoLineRZ
Definition: PixelRecoLineRZ.h:12
MSLayer::x0
float x0(float cotTheta) const
Definition: MSLayer.cc:131
MultipleScatteringParametrisation::theLayer
MSLayer theLayer
Definition: MultipleScatteringParametrisation.h:57
PixelRecoPointRZ
Definition: PixelRecoPointRZ.h:6
MultipleScatteringParametrisation::init
void init(const DetLayer *layer, const edm::EventSetup &iSetup, X0Source x0source=useX0AtEta)
Definition: MultipleScatteringParametrisation.cc:57
MultipleScatteringParametrisation::useConsecutive
Definition: MultipleScatteringParametrisation.h:21