Main Page
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
o
p
q
r
s
t
u
v
w
z
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Properties
_
a
d
e
f
l
m
o
p
s
t
u
v
Related Functions
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Package Documentation
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Modules
Pages
TrackingTools
GeomPropagators
src
StateOnTrackerBound.cc
Go to the documentation of this file.
1
#include "
TrackingTools/GeomPropagators/interface/StateOnTrackerBound.h
"
2
#include "
TrackingTools/GeomPropagators/interface/Propagator.h
"
3
#include "
TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h
"
4
#include "
TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h
"
5
#include "
TrackingTools/GeomPropagators/interface/TrackerBounds.h
"
6
#include "
DataFormats/GeometrySurface/interface/BoundDisk.h
"
7
#include "
DataFormats/GeometrySurface/interface/BoundCylinder.h
"
8
9
//Ported from ORCA
10
11
StateOnTrackerBound::StateOnTrackerBound
(
const
Propagator
* prop) : thePropagator(prop->
clone
()) {}
12
13
StateOnTrackerBound::~StateOnTrackerBound
() {
delete
thePropagator
; }
14
15
TrajectoryStateOnSurface
StateOnTrackerBound::operator()
(
const
TrajectoryStateOnSurface
& tsos)
const
{
16
return
operator()
(*tsos.
freeState
());
17
}
18
19
TrajectoryStateOnSurface
StateOnTrackerBound::operator()
(
const
FreeTrajectoryState
& fts)
const
{
20
// try to guess if propagation should be first to cylinder or first to disk
21
float
tanTheta = (fts.
position
().
perp
() > 70) ? fts.
position
().
perp
() / fts.
position
().
z
()
22
: fts.
momentum
().
perp
() / fts.
momentum
().
z
();
23
float
corner
=
TrackerBounds::radius
() /
TrackerBounds::halfLength
();
24
25
TrajectoryStateOnSurface
firstTry;
26
if
(tanTheta < 0 && fabs(tanTheta) <
corner
) {
27
firstTry =
thePropagator
->
propagate
(fts,
TrackerBounds::negativeEndcapDisk
());
28
29
if
(!firstTry.
isValid
()) {
30
return
thePropagator
->
propagate
(fts,
TrackerBounds::barrelBound
());
31
}
32
if
(firstTry.
globalPosition
().
perp
() >
TrackerBounds::radius
()) {
33
// the propagation should have gone to the cylinder
34
return
thePropagator
->
propagate
(fts,
TrackerBounds::barrelBound
());
35
}
else
36
return
firstTry;
37
}
else
if
(tanTheta > 0 && fabs(tanTheta) <
corner
) {
38
firstTry =
thePropagator
->
propagate
(fts,
TrackerBounds::positiveEndcapDisk
());
39
if
(!firstTry.
isValid
()) {
40
return
thePropagator
->
propagate
(fts,
TrackerBounds::barrelBound
());
41
}
42
if
(firstTry.
globalPosition
().
perp
() >
TrackerBounds::radius
()) {
43
return
thePropagator
->
propagate
(fts,
TrackerBounds::barrelBound
());
44
}
else
45
return
firstTry;
46
}
else
{
47
// barrel
48
firstTry =
thePropagator
->
propagate
(fts,
TrackerBounds::barrelBound
());
49
if
(!firstTry.
isValid
()) {
50
if
(tanTheta < 0)
51
return
thePropagator
->
propagate
(fts,
TrackerBounds::negativeEndcapDisk
());
52
if
(tanTheta >= 0)
53
return
thePropagator
->
propagate
(fts,
TrackerBounds::positiveEndcapDisk
());
54
return
firstTry;
55
}
56
if
(firstTry.
globalPosition
().
z
() < -
TrackerBounds::halfLength
()) {
57
// the propagation should have gone to the negative disk
58
return
thePropagator
->
propagate
(fts,
TrackerBounds::negativeEndcapDisk
());
59
}
else
if
(firstTry.
globalPosition
().
z
() >
TrackerBounds::halfLength
()) {
60
// the propagation should have gone to the positive disk
61
return
thePropagator
->
propagate
(fts,
TrackerBounds::positiveEndcapDisk
());
62
}
else
63
return
firstTry;
64
}
65
return
firstTry;
66
}
Propagator.h
FreeTrajectoryState::momentum
GlobalVector momentum() const
Definition:
FreeTrajectoryState.h:68
TrajectoryStateOnSurface.h
FreeTrajectoryState.h
TrackerBounds::halfLength
static float halfLength()
Definition:
TrackerBounds.h:33
BoundDisk.h
TrajectoryStateOnSurface::globalPosition
GlobalPoint globalPosition() const
Definition:
TrajectoryStateOnSurface.h:65
TrackerBounds::radius
static float radius()
Definition:
TrackerBounds.h:32
distTCMET_cfi.corner
corner
Definition:
distTCMET_cfi.py:38
BoundCylinder.h
FreeTrajectoryState::position
GlobalPoint position() const
Definition:
FreeTrajectoryState.h:67
TrackerBounds::barrelBound
static const Cylinder & barrelBound()
Definition:
TrackerBounds.h:26
PV3DBase::z
T z() const
Definition:
PV3DBase.h:61
Propagator
Definition:
Propagator.h:44
TrajectoryStateOnSurface
Definition:
TrajectoryStateOnSurface.h:16
TrajectoryStateOnSurface::freeState
FreeTrajectoryState const * freeState(bool withErrors=true) const
Definition:
TrajectoryStateOnSurface.h:58
TrackerBounds.h
clone
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition:
eve_macros.cc:135
TrackerBounds::negativeEndcapDisk
static const Disk & negativeEndcapDisk()
Definition:
TrackerBounds.h:27
Propagator::propagate
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition:
Propagator.h:50
StateOnTrackerBound::~StateOnTrackerBound
~StateOnTrackerBound()
Definition:
StateOnTrackerBound.cc:13
StateOnTrackerBound::StateOnTrackerBound
StateOnTrackerBound(const Propagator *prop)
Definition:
StateOnTrackerBound.cc:11
StateOnTrackerBound::operator()
TrajectoryStateOnSurface operator()(const TrajectoryStateOnSurface &tsos) const
Definition:
StateOnTrackerBound.cc:15
FreeTrajectoryState
Definition:
FreeTrajectoryState.h:27
TrackerBounds::positiveEndcapDisk
static const Disk & positiveEndcapDisk()
Definition:
TrackerBounds.h:28
StateOnTrackerBound.h
PV3DBase::perp
T perp() const
Definition:
PV3DBase.h:69
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition:
TrajectoryStateOnSurface.h:54
StateOnTrackerBound::thePropagator
Propagator * thePropagator
Definition:
StateOnTrackerBound.h:24
Generated for CMSSW Reference Manual by
1.8.16