TrackingTools
GsfTracking
src
GsfMultipleScatteringUpdator.cc
Go to the documentation of this file.
1
#include "
TrackingTools/GsfTracking/interface/GsfMultipleScatteringUpdator.h
"
2
3
#include "
DataFormats/GeometrySurface/interface/MediumProperties.h
"
4
5
// #include "CommonDet/DetUtilities/interface/DetExceptions.h"
6
7
// #include "Utilities/Notification/interface/Verbose.h"
8
9
void
GsfMultipleScatteringUpdator::compute
(
const
TrajectoryStateOnSurface
& TSoS,
10
const
PropagationDirection
propDir,
11
Effect
effects[])
const
{
12
//
13
// Get surface and check presence of medium properties
14
//
15
const
Surface
& surface = TSoS.
surface
();
16
//
17
// calculate components
18
//
19
if
(surface.
mediumProperties
().
isValid
()) {
20
LocalVector
pvec = TSoS.
localMomentum
();
21
float
p
= TSoS.
localMomentum
().
mag
();
22
pvec *= 1. /
p
;
23
// thickness in radiation lengths
24
float
rl = surface.
mediumProperties
().
radLen
() / fabs(pvec.
z
());
25
// auxiliary variables for modified X0
26
constexpr
float
z
= 14;
// atomic number of silicon
27
const
float
logz =
log
(
z
);
28
const
float
h
= (
z
+ 1) /
z
*
log
(287 *
sqrt
(
z
)) /
log
(159 *
pow
(
z
, -1. / 3.));
29
float
beta2 = 1. / (1. +
mass
() *
mass
() /
p
/
p
);
30
// reduced thickness
31
float
dp1 = rl / beta2 /
h
;
32
float
logdp1 =
log
(dp1);
33
float
logdp2 = 2. / 3. * logz + logdp1;
34
// weights
35
float
w2
;
36
if
(logdp2 <
log
(0.5))
37
w2
= 0.05283 + 0.0077 * logdp2 + 0.00069 * logdp2 * logdp2;
38
else
39
w2
= -0.01517 + 0.1151 * logdp2 - 0.00653 * logdp2 * logdp2;
40
float
w1 = 1. -
w2
;
41
effects[0].
weight
*= w1;
42
effects[1].
weight
*=
w2
;
43
// reduced variances
44
float
var1 = 0.8510 + 0.03314 * logdp1 - 0.001825 * logdp1 * logdp1;
45
float
var2 = (1. - w1 * var1) /
w2
;
46
for
(
int
ic = 0; ic < 2; ic++) {
47
// choose component and multiply with total variance
48
float
var
= ic == 0 ? var1 : var2;
49
var
*= 225.e-6 * dp1 /
p
/
p
;
50
AlgebraicSymMatrix55
cov;
51
// transform from orthogonal planes containing the
52
// momentum vector to local parameters
53
float
sl = pvec.
perp
();
54
float
cl
= pvec.
z
();
55
float
cf = pvec.
x
() / sl;
56
float
sf = pvec.
y
() / sl;
57
using namespace
materialEffect
;
58
effects[ic].
deltaCov
[
msxx
] +=
var
* (sf * sf *
cl
*
cl
+ cf * cf) / (
cl
*
cl
*
cl
*
cl
);
59
effects[ic].
deltaCov
[
msxy
] +=
var
* (cf * sf * sl * sl) / (
cl
*
cl
*
cl
*
cl
);
60
effects[ic].
deltaCov
[
msyy
] +=
var
* (cf * cf *
cl
*
cl
+ sf * sf) / (
cl
*
cl
*
cl
*
cl
);
61
}
62
}
63
}
Vector3DBase< float, LocalTag >
w2
common ppss p3p6s2 common epss epspn46 common const1 w2
Definition:
inclppp.h:1
TrajectoryStateOnSurface::localMomentum
LocalVector localMomentum() const
Definition:
TrajectoryStateOnSurface.h:75
materialEffect::Effect
Definition:
MaterialEffectsUpdator.h:40
GsfMultipleScatteringUpdator::compute
void compute(const TrajectoryStateOnSurface &, const PropagationDirection, Effect[]) const override
Computation: generates vectors of weights, means and standard deviations.
Definition:
GsfMultipleScatteringUpdator.cc:9
PV3DBase::x
T x() const
Definition:
PV3DBase.h:59
MediumProperties::radLen
float radLen() const
Definition:
MediumProperties.h:20
AlCaHLTBitMon_ParallelJobs.p
p
Definition:
AlCaHLTBitMon_ParallelJobs.py:153
h
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
Definition:
L1TUtmAlgorithmRcd.h:4
Surface
Definition:
Surface.h:36
GsfMultipleScatteringUpdator.h
Surface::mediumProperties
const MediumProperties & mediumProperties() const
Definition:
Surface.h:83
materialEffect::msyy
Definition:
MaterialEffectsUpdator.h:19
PV3DBase::z
T z() const
Definition:
PV3DBase.h:61
trigObjTnPSource_cfi.var
var
Definition:
trigObjTnPSource_cfi.py:21
GetRecoTauVFromDQM_MC_cff.cl
cl
Definition:
GetRecoTauVFromDQM_MC_cff.py:38
TrajectoryStateOnSurface
Definition:
TrajectoryStateOnSurface.h:16
materialEffect::Effect::deltaCov
Covariance deltaCov
Definition:
MaterialEffectsUpdator.h:45
materialEffect::Effect::weight
float weight
Definition:
MaterialEffectsUpdator.h:41
mathSSE::sqrt
T sqrt(T t)
Definition:
SSEVec.h:19
GsfMaterialEffectsUpdator::mass
float mass() const
Definition:
GsfMaterialEffectsUpdator.h:35
DDAxes::z
MediumProperties.h
materialEffect::msxx
Definition:
MaterialEffectsUpdator.h:19
materialEffect
Definition:
MaterialEffectsUpdator.h:18
h
PV3DBase::y
T y() const
Definition:
PV3DBase.h:60
materialEffect::msxy
Definition:
MaterialEffectsUpdator.h:19
MediumProperties::isValid
bool isValid() const
Definition:
MediumProperties.h:26
PV3DBase::mag
T mag() const
Definition:
PV3DBase.h:64
PropagationDirection
PropagationDirection
Definition:
PropagationDirection.h:4
dqm-mbProfile.log
log
Definition:
dqm-mbProfile.py:17
TrajectoryStateOnSurface::surface
const SurfaceType & surface() const
Definition:
TrajectoryStateOnSurface.h:78
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition:
Power.h:29
AlgebraicSymMatrix55
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
Definition:
AlgebraicROOTObjects.h:23
PV3DBase::perp
T perp() const
Definition:
PV3DBase.h:69
Generated for CMSSW Reference Manual by
1.8.16