14 SimTrackContainer::const_iterator st,
23 std::pair<bool,reco::TrackBase::ParameterVector> params = parametersAtClosestApproach(vert, momAtVtx, st->charge(), bs);
30 double chi2 = ROOT::Math::Dot(diffParameters * invertedCovariance, diffParameters);
47 for (TrackCollection::const_iterator track=rtColl.begin(); track!=rtColl.end(); track++){
54 for (
unsigned int i=0;
i<5;
i++){
55 for (
unsigned int j=0;
j<5;
j++){
56 if (
i!=
j) recoTrackCovMatrix(
i,
j)=0;
60 recoTrackCovMatrix.Invert();
62 for (SimTrackContainer::const_iterator st=stColl.begin(); st!=stColl.end(); st++){
67 std::pair<bool,reco::TrackBase::ParameterVector> params = parametersAtClosestApproach(vert, momAtVtx, st->charge(), bs);
73 double chi2 = ROOT::Math::Dot(diffParameters * recoTrackCovMatrix, diffParameters);
75 if (chi2<chi2cut) outMap[chi2]=*st;
85 TrackingParticleCollection::const_iterator tp,
94 for (
unsigned int i=0;
i<5;
i++){
95 for (
unsigned int j=0;
j<5;
j++){
96 if (
i!=
j) recoTrackCovMatrix(
i,
j)=0;
100 recoTrackCovMatrix.Invert();
105 std::pair<bool,reco::TrackBase::ParameterVector> params = parametersAtClosestApproach(vert, momAtVtx, tp->charge(), bs);
111 chi2 = ROOT::Math::Dot(diffParameters * recoTrackCovMatrix, diffParameters);
114 LogDebug(
"TrackAssociator") <<
"====NEW RECO TRACK WITH PT=" << rt->pt() <<
"====\n"
115 <<
"qoverp sim: " << sParameters[0] <<
"\n"
116 <<
"lambda sim: " << sParameters[1] <<
"\n"
117 <<
"phi sim: " << sParameters[2] <<
"\n"
118 <<
"dxy sim: " << sParameters[3] <<
"\n"
119 <<
"dsz sim: " << sParameters[4] <<
"\n"
121 <<
"qoverp rec: " << rt->qoverp() <<
"\n"
122 <<
"lambda rec: " << rt->lambda() <<
"\n"
123 <<
"phi rec: " << rt->phi() <<
"\n"
124 <<
"dxy rec: " << rt->dxy(bs.
position()) <<
"\n"
125 <<
"dsz rec: " << rt->dsz(bs.
position()) <<
"\n"
127 <<
"chi2: " << chi2 <<
"\n";
135 pair<bool,TrackBase::ParameterVector>
154 sParameters[2] = p.
phi();
158 return pair<bool,TrackBase::ParameterVector>(
true,sParameters);
160 return pair<bool,TrackBase::ParameterVector>(
false,sParameters);
181 LogDebug(
"TrackAssociator") <<
"=========LOOKING FOR ASSOCIATION===========" <<
"\n"
182 <<
"rec::Track #"<<tindex<<
" with pt=" << (*rt)->pt() <<
"\n"
183 <<
"===========================================" <<
"\n";
189 for (
unsigned int i=0;
i<5;
i++){
190 for (
unsigned int j=0;
j<5;
j++){
191 if (
i!=
j) recoTrackCovMatrix(
i,
j)=0;
196 recoTrackCovMatrix.Invert();
199 for (TrackingParticleCollection::const_iterator tp=tPC.begin(); tp!=tPC.end(); tp++, ++tpindex){
206 std::pair<bool,reco::TrackBase::ParameterVector> params = parametersAtClosestApproach(vert, momAtVtx, tp->charge(), bs);
213 chi2 = ROOT::Math::Similarity(diffParameters, recoTrackCovMatrix);
216 LogTrace(
"TrackAssociator") <<
"====TP index=" << tpindex <<
" RECO TRACK index="<<tindex<<
" WITH PT=" << (*rt)->pt() <<
"====\n"
217 <<
"qoverp sim: " << sParameters[0] <<
"\n"
218 <<
"lambda sim: " << sParameters[1] <<
"\n"
219 <<
"phi sim: " << sParameters[2] <<
"\n"
220 <<
"dxy sim: " << sParameters[3] <<
"\n"
221 <<
"dsz sim: " << sParameters[4] <<
"\n"
223 <<
"qoverp rec: " << (*rt)->qoverp() <<
" err: " << (*rt)->error(0) <<
"\n"
224 <<
"lambda rec: " << (*rt)->lambda() <<
" err: " << (*rt)->error(1) <<
"\n"
225 <<
"phi rec: " << (*rt)->phi() <<
" err: " << (*rt)->error(2) <<
"\n"
226 <<
"dxy rec: " << (*rt)->dxy(bs.
position()) <<
" err: " << (*rt)->error(3) <<
"\n"
227 <<
"dsz rec: " << (*rt)->dsz(bs.
position()) <<
" err: " << (*rt)->error(4) <<
"\n"
229 <<
"chi2: " << chi2 <<
"\n";
232 outputCollection.
insert(tC[tindex],
240 return outputCollection;
260 for (TrackingParticleCollection::const_iterator tp=tPC.begin(); tp!=tPC.end(); tp++, ++tpindex){
265 LogDebug(
"TrackAssociator") <<
"=========LOOKING FOR ASSOCIATION===========" <<
"\n"
266 <<
"TrackingParticle #"<<tpindex<<
" with pt=" <<
sqrt(tp->momentum().perp2()) <<
"\n"
267 <<
"===========================================" <<
"\n";
272 std::pair<bool,reco::TrackBase::ParameterVector> params = parametersAtClosestApproach(vert, momAtVtx, tp->charge(), bs);
283 for (
unsigned int i=0;
i<5;
i++){
284 for (
unsigned int j=0;
j<5;
j++){
285 if (
i!=
j) recoTrackCovMatrix(
i,
j)=0;
290 recoTrackCovMatrix.Invert();
295 chi2 = ROOT::Math::Similarity(recoTrackCovMatrix, diffParameters);
298 LogTrace(
"TrackAssociator") <<
"====TP index=" << tpindex <<
" RECO TRACK index="<<tindex<<
" WITH PT=" << (*rt)->pt() <<
"====\n"
299 <<
"qoverp sim: " << sParameters[0] <<
"\n"
300 <<
"lambda sim: " << sParameters[1] <<
"\n"
301 <<
"phi sim: " << sParameters[2] <<
"\n"
302 <<
"dxy sim: " << sParameters[3] <<
"\n"
303 <<
"dsz sim: " << sParameters[4] <<
"\n"
305 <<
"qoverp rec: " << (*rt)->qoverp() <<
" err: " << (*rt)->error(0) <<
"\n"
306 <<
"lambda rec: " << (*rt)->lambda() <<
" err: " << (*rt)->error(1) <<
"\n"
307 <<
"phi rec: " << (*rt)->phi() <<
" err: " << (*rt)->error(2) <<
"\n"
308 <<
"dxy rec: " << (*rt)->dxy(bs.
position()) <<
" err: " << (*rt)->error(3) <<
"\n"
309 <<
"dsz rec: " << (*rt)->dsz(bs.
position()) <<
" err: " << (*rt)->error(4) <<
"\n"
311 <<
"chi2: " << chi2 <<
"\n";
315 std::make_pair(tC[tindex],
322 return outputCollection;
T y() const
Cartesian y coordinate.
T x() const
Cartesian x coordinate.
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > XYZTLorentzVectorD
Lorentz vector with cylindrical internal representation using pseudorapidity.
std::vector< TrackingParticle > TrackingParticleCollection
C const * product() const
Accessor for product collection.
Sin< T >::type sin(const T &t)
Geom::Phi< T > phi() const
const_iterator end() const
Global3DPoint GlobalPoint
std::vector< Track > TrackCollection
collection of Tracks
std::pair< bool, reco::TrackBase::ParameterVector > parametersAtClosestApproach(Basic3DVector< double >, Basic3DVector< double >, float, const reco::BeamSpot &) const
propagate the track parameters of TrackinParticle from production vertex to the point of closest appr...
std::pair< reco::Track, Chi2SimMap > RecoToSimPair
math::Vector< dimension >::type ParameterVector
parameter vector
TrackCharge charge() const
double compareTracksParam(reco::TrackCollection::const_iterator, edm::SimTrackContainer::const_iterator, const math::XYZTLorentzVectorD, GlobalVector, reco::TrackBase::CovarianceMatrix, const reco::BeamSpot &) const
compare reco::TrackCollection and edm::SimTrackContainer iterators: returns the chi2 ...
Geom::Theta< T > theta() const
T z() const
Cartesian z coordinate.
void post_insert()
post insert action
Cos< T >::type cos(const T &t)
reco::SimToRecoCollection associateSimToReco(const edm::RefToBaseVector< reco::Track > &, const edm::RefVector< TrackingParticleCollection > &, const edm::Event *event=0, const edm::EventSetup *setup=0) const
Association Sim To Reco with Collections.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
GlobalVector momentum() const
double associateRecoToSim(reco::TrackCollection::const_iterator, TrackingParticleCollection::const_iterator, const reco::BeamSpot &) const
compare reco::TrackCollection and TrackingParticleCollection iterators: returns the chi2 ...
FTS const & trackStateAtPCA() const
double deltaPhi(double phi1, double phi2)
GlobalPoint position() const
void insert(const key_type &k, const data_type &v)
insert an association
std::vector< SimVertex > SimVertexContainer
const_iterator begin() const
std::map< double, SimTrack > Chi2SimMap
std::vector< RecoToSimPair > RecoToSimPairAssociation
size_type size() const
Size of the RefVector.
const Point & position() const
position
std::vector< SimTrack > SimTrackContainer
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
math::Error< dimension >::type CovarianceMatrix
5 parameter covariance matrix
Global3DVector GlobalVector