Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
src
SimTracker
TrackAssociation
src
CosmicParametersDefinerForTP.cc
Go to the documentation of this file.
1
#include "
SimTracker/TrackAssociation/interface/CosmicParametersDefinerForTP.h
"
2
#include "
FWCore/Utilities/interface/typelookup.h
"
3
#include "
DataFormats/GeometryVector/interface/GlobalVector.h
"
4
#include "
DataFormats/GeometryVector/interface/GlobalPoint.h
"
5
#include "
TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h
"
6
#include "
TrackingTools/PatternTools/interface/TSCBLBuilderNoMaterial.h
"
7
#include "
TrackingTools/PatternTools/interface/TSCPBuilderNoMaterial.h
"
8
#include "
MagneticField/Engine/interface/MagneticField.h
"
9
#include "
MagneticField/Records/interface/IdealMagneticFieldRecord.h
"
10
#include "
Geometry/Records/interface/TrackerDigiGeometryRecord.h
"
11
#include <
Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h
>
12
#include <
DataFormats/GeometrySurface/interface/Surface.h
>
13
#include <
DataFormats/GeometrySurface/interface/GloballyPositioned.h
>
14
#include <
Geometry/CommonDetUnit/interface/GeomDet.h
>
15
#include "
FWCore/Framework/interface/Event.h
"
16
#include <
FWCore/Framework/interface/ESHandle.h
>
17
18
class
TrajectoryStateClosestToBeamLineBuilder
;
19
20
21
ParticleBase::Vector
22
CosmicParametersDefinerForTP::momentum
(
const
edm::Event
&
iEvent
,
const
edm::EventSetup
& iSetup,
const
TrackingParticle
& tp)
const
{
23
// to add a new implementation for cosmic. For the moment, it is just as for the base class:
24
using namespace
edm;
25
using namespace
std;
26
using namespace
reco
;
27
28
ESHandle<TrackerGeometry>
tracker
;
29
iSetup.
get
<
TrackerDigiGeometryRecord
>().
get
(
tracker
);
30
31
edm::ESHandle<MagneticField>
theMF;
32
iSetup.
get
<
IdealMagneticFieldRecord
>().
get
(theMF);
33
34
edm::Handle<reco::BeamSpot>
bs;
35
iEvent.
getByLabel
(
InputTag
(
"offlineBeamSpot"
),bs);
36
37
// cout<<"TrackingParticle pdgId = "<<tp.pdgId()<<endl;
38
// cout<<"with tp.vertex(): ("<<tp.vertex().x()<<", "<<tp.vertex().y()<<", "<<tp.vertex().z()<<")"<<endl;
39
// cout<<"with tp.momentum(): ("<<tp.momentum().x()<<", "<<tp.momentum().y()<<", "<<tp.momentum().z()<<")"<<endl;
40
41
GlobalVector
finalGV;
42
GlobalPoint
finalGP;
43
double
radius
(9999);
44
bool
found
(0);
45
ParticleBase::Vector
momentum
(0,0,0);
46
47
const
vector<PSimHit> &
simHits
= tp.
trackPSimHit
(
DetId::Tracker
);
48
for
(vector<PSimHit>::const_iterator it=
simHits
.begin(); it!=
simHits
.end(); ++it){
49
const
GeomDet
* tmpDet =
tracker
->idToDet(
DetId
(it->detUnitId()) ) ;
50
LocalVector
lv = it->momentumAtEntry();
51
Local3DPoint
lp = it->localPosition ();
52
GlobalVector
gv = tmpDet->
surface
().
toGlobal
( lv );
53
GlobalPoint
gp = tmpDet->
surface
().
toGlobal
( lp );
54
if
(gp.
perp
()<
radius
){
55
found=
true
;
56
radius = gp.
perp
();
57
finalGV = gv;
58
finalGP = gp;
59
}
60
}
61
62
//cout<<"found = "<<found<<endl;
63
// cout<<"Closest Hit Position: ("<<finalGP.x()<<", "<<finalGP.y()<<", "<<finalGP.z()<<")"<<endl;
64
//cout<<"Momentum at Closest Hit to BL: ("<<finalGV.x()<<", "<<finalGV.y()<<", "<<finalGV.z()<<")"<<endl;
65
66
if
(found)
67
{
68
FreeTrajectoryState
ftsAtProduction(finalGP,finalGV,
TrackCharge
(tp.
charge
()),theMF.product());
69
TSCBLBuilderNoMaterial
tscblBuilder;
70
TrajectoryStateClosestToBeamLine
tsAtClosestApproach = tscblBuilder(ftsAtProduction,*bs);
//as in TrackProducerAlgorithm
71
if
(tsAtClosestApproach.
isValid
()){
72
GlobalVector
p
= tsAtClosestApproach.
trackStateAtPCA
().
momentum
();
73
momentum =
ParticleBase::Vector
(p.
x
(), p.
y
(), p.
z
());
74
}
75
return
momentum
;
76
}
77
return
momentum
;
78
}
79
80
ParticleBase::Point
CosmicParametersDefinerForTP::vertex
(
const
edm::Event
&
iEvent
,
const
edm::EventSetup
& iSetup,
const
TrackingParticle
& tp)
const
{
81
82
using namespace
edm;
83
using namespace
std;
84
using namespace
reco
;
85
86
ESHandle<TrackerGeometry>
tracker
;
87
iSetup.
get
<
TrackerDigiGeometryRecord
>().
get
(
tracker
);
88
89
edm::ESHandle<MagneticField>
theMF;
90
iSetup.
get
<
IdealMagneticFieldRecord
>().
get
(theMF);
91
92
edm::Handle<reco::BeamSpot>
bs;
93
iEvent.
getByLabel
(
InputTag
(
"offlineBeamSpot"
),bs);
94
95
GlobalVector
finalGV;
96
GlobalPoint
finalGP;
97
double
radius
(9999);
98
bool
found
(0);
99
ParticleBase::Point
vertex
(0,0,0);
100
101
const
vector<PSimHit> &
simHits
= tp.
trackPSimHit
(
DetId::Tracker
);
102
for
(vector<PSimHit>::const_iterator it=
simHits
.begin(); it!=
simHits
.end(); ++it){
103
const
GeomDet
* tmpDet =
tracker
->idToDet(
DetId
(it->detUnitId()) ) ;
104
LocalVector
lv = it->momentumAtEntry();
105
Local3DPoint
lp = it->localPosition ();
106
GlobalVector
gv = tmpDet->
surface
().
toGlobal
( lv );
107
GlobalPoint
gp = tmpDet->
surface
().
toGlobal
( lp );
108
if
(gp.
perp
()<
radius
){
109
found=
true
;
110
radius = gp.
perp
();
111
finalGV = gv;
112
finalGP = gp;
113
}
114
}
115
if
(found)
116
{
117
FreeTrajectoryState
ftsAtProduction(finalGP,finalGV,
TrackCharge
(tp.
charge
()),theMF.product());
118
TSCBLBuilderNoMaterial
tscblBuilder;
119
TrajectoryStateClosestToBeamLine
tsAtClosestApproach = tscblBuilder(ftsAtProduction,*bs);
//as in TrackProducerAlgorithm
120
if
(tsAtClosestApproach.
isValid
()){
121
GlobalPoint
v
= tsAtClosestApproach.
trackStateAtPCA
().
position
();
122
vertex =
ParticleBase::Point
(v.
x
()-bs->x0(),v.
y
()-bs->y0(),v.
z
()-bs->z0());
123
}
124
return
vertex
;
125
}
126
return
vertex
;
127
}
128
129
130
TYPELOOKUP_DATA_REG
(
CosmicParametersDefinerForTP
);
Surface::toGlobal
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition:
Surface.h:78
TrackerDigiGeometryRecord.h
PV3DBase::perp
T perp() const
Definition:
PV3DBase.h:71
ParticleBase::charge
int charge() const
electric charge
Definition:
ParticleBase.h:54
GeomDet.h
TrackingParticle::trackPSimHit
const std::vector< PSimHit > & trackPSimHit() const
Definition:
TrackingParticle.h:102
Vector3DBase
Definition:
Vector3DBase.h:9
Event.h
GeomDet
Definition:
GeomDet.h:24
PV3DBase::y
T y() const
Definition:
PV3DBase.h:62
IdealMagneticFieldRecord
Definition:
IdealMagneticFieldRecord.h:11
ParticleBase::Vector
math::XYZVectorD Vector
point in the space
Definition:
ParticleBase.h:30
TrajectoryStateClosestToBeamLineBuilder
Definition:
TrajectoryStateClosestToBeamLineBuilder.h:14
TrajectoryStateClosestToBeamLine
Definition:
TrajectoryStateClosestToBeamLine.h:15
edm::Handle< reco::BeamSpot >
dt_dqm_sourceclient_common_cff.reco
tuple reco
Definition:
dt_dqm_sourceclient_common_cff.py:105
CosmicParametersDefinerForTP::vertex
virtual ParticleBase::Point vertex(const edm::Event &iEvent, const edm::EventSetup &iSetup, const TrackingParticle &tp) const
Definition:
CosmicParametersDefinerForTP.cc:80
CosmicParametersDefinerForTP.h
typelookup.h
MagneticField.h
TrajectoryStateClosestToBeamLine::isValid
bool isValid() const
Definition:
TrajectoryStateClosestToBeamLine.h:63
TrackCharge
int TrackCharge
Definition:
TrackCharge.h:4
ParticleBase::Point
math::XYZPointD Point
point in the space
Definition:
ParticleBase.h:28
iEvent
int iEvent
Definition:
GenABIO.cc:243
DetId::Tracker
Definition:
DetId.h:26
FreeTrajectoryState
Definition:
FreeTrajectoryState.h:31
edm::ESHandle< TrackerGeometry >
PV3DBase::z
T z() const
Definition:
PV3DBase.h:63
Surface.h
ESHandle.h
GloballyPositioned.h
patCandidatesForDimuonsSequences_cff.tracker
tuple tracker
Definition:
patCandidatesForDimuonsSequences_cff.py:69
edm::EventSetup
Definition:
EventSetup.h:44
TSCBLBuilderNoMaterial.h
edm::Event::getByLabel
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition:
Event.h:356
FreeTrajectoryState::momentum
GlobalVector momentum() const
Definition:
FreeTrajectoryState.h:78
TSCPBuilderNoMaterial.h
TrajectoryStateClosestToBeamLine::trackStateAtPCA
FTS const & trackStateAtPCA() const
Definition:
TrajectoryStateClosestToBeamLine.h:33
GlobalVector.h
TYPELOOKUP_DATA_REG
#define TYPELOOKUP_DATA_REG(_dataclass_)
Definition:
typelookup.h:97
DetId
Definition:
DetId.h:20
FreeTrajectoryState::position
GlobalPoint position() const
Definition:
FreeTrajectoryState.h:75
edm::EventSetup::get
const T & get() const
Definition:
EventSetup.h:55
trackerHits.simHits
tuple simHits
Definition:
trackerHits.py:16
AlCaHLTBitMon_ParallelJobs.p
tuple p
Definition:
AlCaHLTBitMon_ParallelJobs.py:152
Point3DBase< float, GlobalTag >
CosmicParametersDefinerForTP::momentum
virtual ParticleBase::Vector momentum(const edm::Event &iEvent, const edm::EventSetup &iSetup, const TrackingParticle &tp) const
Definition:
CosmicParametersDefinerForTP.cc:22
edm::InputTag
Definition:
InputTag.h:12
GeomDet::surface
const BoundPlane & surface() const
The nominal surface of the GeomDet.
Definition:
GeomDet.h:35
TrackerGeometry.h
TrackingParticle
Definition:
TrackingParticle.h:25
edm::Event
Definition:
Event.h:50
TrackerDigiGeometryRecord
Definition:
TrackerDigiGeometryRecord.h:32
newFWLiteAna.found
found
Definition:
newFWLiteAna.py:118
PV3DBase::x
T x() const
Definition:
PV3DBase.h:61
CosmicsPD_Skims.radius
tuple radius
Definition:
CosmicsPD_Skims.py:135
v
mathSSE::Vec4< T > v
Definition:
newBasic3DVector.h:354
CosmicParametersDefinerForTP
Definition:
CosmicParametersDefinerForTP.h:13
TSCBLBuilderNoMaterial
Definition:
TSCBLBuilderNoMaterial.h:13
FreeTrajectoryState.h
IdealMagneticFieldRecord.h
GlobalPoint.h
Generated for CMSSW Reference Manual by
1.8.5