Main Page
Namespaces
Classes
Package Documentation
CVS Directory
WorkBook
Offline Guide
Release schedule
•
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