7 #include <TDirectory.h> 19 LogTrace(
"TestTrackHits") << iConfig;
26 theGToken = esConsumes<edm::Transition::BeginRun>();
27 theMFToken = esConsumes<edm::Transition::BeginRun>();
51 file =
new TFile(
out.c_str(),
"recreate");
52 for (
int i = 0;
i != 6;
i++)
53 for (
int j = 0;
j != 9;
j++) {
68 title <<
"Chi2Increment_" <<
i + 1 <<
"-" <<
j + 1;
71 title <<
"Chi2IncrementVsEta_" <<
i + 1 <<
"-" <<
j + 1;
73 new TH2F(
title.str().c_str(),
title.str().c_str(), 50, -2.5, 2.5, 1000, 0, 100);
75 title <<
"Chi2GoodHit_" <<
i + 1 <<
"-" <<
j + 1;
78 title <<
"Chi2BadHit_" <<
i + 1 <<
"-" <<
j + 1;
81 title <<
"Chi2DeltaHit_" <<
i + 1 <<
"-" <<
j + 1;
84 title <<
"Chi2NSharedHit_" <<
i + 1 <<
"-" <<
j + 1;
87 title <<
"Chi2SharedHit_" <<
i + 1 <<
"-" <<
j + 1;
91 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts";
94 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts";
97 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts";
101 title <<
"PullGM_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts";
104 title <<
"PullGM_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts";
107 title <<
"PullGM_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts";
111 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr";
114 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr";
117 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr";
121 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs";
124 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs";
127 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs";
130 if (((
i == 2 ||
i == 4) && (
j == 0 ||
j == 1)) || (
i == 3 ||
i == 5)) {
133 title <<
"Chi2Increment_mono_" <<
i + 1 <<
"-" <<
j + 1;
137 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_mono";
140 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_mono";
143 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_mono";
147 title <<
"PullGM_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_mono";
150 title <<
"PullGM_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_mono";
153 title <<
"PullGM_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_mono";
157 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr_mono";
160 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr_mono";
163 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr_mono";
167 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs_mono";
170 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs_mono";
173 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs_mono";
178 title <<
"Chi2Increment_stereo_" <<
i + 1 <<
"-" <<
j + 1;
182 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_stereo";
185 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_stereo";
188 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_stereo";
192 title <<
"PullGM_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_stereo";
195 title <<
"PullGM_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_stereo";
198 title <<
"PullGM_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_stereo";
202 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr_stereo";
205 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr_stereo";
208 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr_stereo";
212 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs_stereo";
215 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs_stereo";
218 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs_stereo";
222 hTotChi2Increment =
new TH1F(
"TotChi2Increment",
"TotChi2Increment", 1000, 0, 100);
223 hTotChi2GoodHit =
new TH1F(
"TotChi2GoodHit",
"TotChi2GoodHit", 1000, 0, 100);
224 hTotChi2BadHit =
new TH1F(
"TotChi2BadHit",
"TotChi2BadHit", 1000, 0, 100);
225 hTotChi2DeltaHit =
new TH1F(
"TotChi2DeltaHit",
"TotChi2DeltaHit", 1000, 0, 100);
226 hTotChi2NSharedHit =
new TH1F(
"TotChi2NSharedHit",
"TotChi2NSharedHit", 1000, 0, 100);
227 hTotChi2SharedHit =
new TH1F(
"TotChi2SharedHit",
"TotChi2SharedHit", 1000, 0, 100);
228 hProcess_vs_Chi2 =
new TH2F(
"Process_vs_Chi2",
"Process_vs_Chi2", 1000, 0, 100, 17, -0.5, 16.5);
229 hClsize_vs_Chi2 =
new TH2F(
"Clsize_vs_Chi2",
"Clsize_vs_Chi2", 1000, 0, 100, 17, -0.5, 16.5);
230 hPixClsize_vs_Chi2 =
new TH2F(
"PixClsize_vs_Chi2",
"PixClsize_vs_Chi2", 1000, 0, 100, 17, -0.5, 16.5);
231 hPrjClsize_vs_Chi2 =
new TH2F(
"PrjClsize_vs_Chi2",
"PrjClsize_vs_Chi2", 1000, 0, 100, 17, -0.5, 16.5);
232 hSt1Clsize_vs_Chi2 =
new TH2F(
"St1Clsize_vs_Chi2",
"St1Clsize_vs_Chi2", 1000, 0, 100, 17, -0.5, 16.5);
233 hSt2Clsize_vs_Chi2 =
new TH2F(
"St2Clsize_vs_Chi2",
"St2Clsize_vs_Chi2", 1000, 0, 100, 17, -0.5, 16.5);
234 hGoodHit_vs_Chi2 =
new TH2F(
"GoodHit_vs_Chi2",
"GoodHit_vs_Chi2", 10000, 0, 1000, 2, -0.5, 1.5);
235 hClusterSize =
new TH1F(
"ClusterSize",
"ClusterSize", 40, -0.5, 39.5);
236 hPixClusterSize =
new TH1F(
"PixClusterSize",
"PixClusterSize", 40, -0.5, 39.5);
237 hPrjClusterSize =
new TH1F(
"PrjClusterSize",
"PrjClusterSize", 40, -0.5, 39.5);
238 hSt1ClusterSize =
new TH1F(
"St1ClusterSize",
"St1ClusterSize", 40, -0.5, 39.5);
239 hSt2ClusterSize =
new TH1F(
"St2ClusterSize",
"St2ClusterSize", 40, -0.5, 39.5);
240 hSimHitVecSize =
new TH1F(
"hSimHitVecSize",
"hSimHitVecSize", 40, -0.5, 39.5);
241 hPixSimHitVecSize =
new TH1F(
"PixSimHitVecSize",
"PixSimHitVecSize", 40, -0.5, 39.5);
242 hPrjSimHitVecSize =
new TH1F(
"PrjSimHitVecSize",
"PrjSimHitVecSize", 40, -0.5, 39.5);
243 hSt1SimHitVecSize =
new TH1F(
"St1SimHitVecSize",
"St1SimHitVecSize", 40, -0.5, 39.5);
244 hSt2SimHitVecSize =
new TH1F(
"St2SimHitVecSize",
"St2SimHitVecSize", 40, -0.5, 39.5);
245 goodbadmerged =
new TH1F(
"goodbadmerged",
"goodbadmerged", 5, 0.5, 5.5);
246 energyLossRatio =
new TH1F(
"energyLossRatio",
"energyLossRatio", 100, 0, 1);
247 mergedPull =
new TH1F(
"mergedPull",
"mergedPull", 200, 0, 20);
248 probXgood =
new TH1F(
"probXgood",
"probXgood", 110, 0, 1.1);
249 probXbad =
new TH1F(
"probXbad",
"probXbad", 110, 0, 1.1);
250 probXdelta =
new TH1F(
"probXdelta",
"probXdelta", 110, 0, 1.1);
251 probXshared =
new TH1F(
"probXshared",
"probXshared", 110, 0, 1.1);
252 probXnoshare =
new TH1F(
"probXnoshare",
"probXnoshare", 110, 0, 1.1);
253 probYgood =
new TH1F(
"probYgood",
"probYgood", 110, 0, 1.1);
254 probYbad =
new TH1F(
"probYbad",
"probYbad", 110, 0, 1.1);
255 probYdelta =
new TH1F(
"probYdelta",
"probYdelta", 110, 0, 1.1);
256 probYshared =
new TH1F(
"probYshared",
"probYshared", 110, 0, 1.1);
257 probYnoshare =
new TH1F(
"probYnoshare",
"probYnoshare", 110, 0, 1.1);
264 LogDebug(
"TestTrackHits") <<
"new event";
290 LogTrace(
"TestTrackHits") <<
"\n*****************new trajectory********************";
293 std::vector<TrajectoryMeasurement> tmColl = it->measurements();
304 std::vector<std::pair<TrackingParticleRef, double> > tP;
306 tP = recSimColl[
track];
309 <<
" associated with quality:" << tP.begin()->second <<
" good track #" 310 << ++
yy <<
" has hits:" <<
track->numberOfValidHits() <<
"\n";
314 <<
" NOT associated to any TrackingParticle" 330 LogTrace(
"TestTrackHits") <<
"a tp is associated with fraction=" << tP.begin()->second;
332 std::vector<unsigned int> tpids;
334 LogTrace(
"TestTrackHits") <<
"tp id=" << g4T->trackId();
335 tpids.push_back(g4T->trackId());
340 for (std::vector<TrajectoryMeasurement>::iterator tm = tmColl.begin(); tm != tmColl.end(); ++tm) {
341 tchi2 += tm->estimate();
343 LogTrace(
"TestTrackHits") <<
"+++++++++++++++++new hit+++++++++++++++++";
344 CTTRHp rhit = tm->recHit();
347 TSOS state =
combiner(tm->backwardPredictedState(), tm->forwardPredictedState());
349 if (rhit->isValid() == 0 && rhit->det() !=
nullptr)
352 LogTrace(
"TestTrackHits") <<
"valid hit #" << ++
pp <<
"of hits=" <<
track->numberOfValidHits();
354 int subdetId = rhit->det()->geographicalId().subdetId();
355 DetId id = rhit->
det()->geographicalId();
356 int layerId = tTopo->
layer(
id);
357 LogTrace(
"TestTrackHits") <<
"subdetId=" << subdetId <<
" layerId=" << layerId;
359 const Surface* surf = rhit->surface();
363 double energyLoss_ = 0.;
364 unsigned int monoId = 0;
365 std::vector<double> energyLossM;
366 std::vector<double> energyLossS;
367 std::vector<PSimHit> assSimHits =
hitAssociator.associateHit(*(rhit)->
hit());
368 unsigned int simhitvecsize = assSimHits.size();
369 if (simhitvecsize == 0)
372 std::vector<unsigned int> trackIds;
375 for (std::vector<PSimHit>::const_iterator
m = assSimHits.begin();
m < assSimHits.end();
m++) {
376 unsigned int tId =
m->trackId();
377 if (
find(trackIds.begin(), trackIds.end(), tId) == trackIds.end())
378 trackIds.push_back(tId);
379 if (
m->energyLoss() > energyLoss_) {
381 energyLoss_ =
m->energyLoss();
383 if (dynamic_cast<const SiStripMatchedRecHit2D*>(rhit->hit())) {
385 monoId =
m->detUnitId();
386 if (monoId ==
m->detUnitId()) {
387 energyLossM.push_back(
m->energyLoss());
389 energyLossS.push_back(
m->energyLoss());
393 energyLossM.push_back(
m->energyLoss());
410 double chi2increment = tm->estimate();
411 LogTrace(
"TestTrackHits") <<
"tm->estimate()=" << tm->estimate();
413 title <<
"Chi2Increment_" << subdetId <<
"-" << layerId;
416 title <<
"Chi2IncrementVsEta_" << subdetId <<
"-" << layerId;
422 bool mergedhit =
false;
423 if (dynamic_cast<const SiPixelRecHit*>(rhit->hit())) {
424 clustersize = ((
const SiPixelRecHit*)(rhit->hit()))->cluster()->size();
428 if (simhitvecsize > 1)
430 }
else if (dynamic_cast<const SiStripRecHit2D*>(rhit->hit())) {
431 clustersize = ((
const SiStripRecHit2D*)(rhit->hit()))->cluster()->amplitudes().size();
435 if (simhitvecsize > 1)
437 }
else if (dynamic_cast<const SiStripMatchedRecHit2D*>(rhit->hit())) {
440 if (clsize1 > clsize2)
441 clustersize = clsize1;
443 clustersize = clsize2;
447 if (simhitvecsize > 2)
449 }
else if (dynamic_cast<const ProjectedSiStripRecHit2D*>(rhit->hit())) {
454 if (simhitvecsize > 1)
466 std::vector<SimHitIdpr> simTrackIds =
hitAssociator.associateHitId(*(rhit)->
hit());
467 bool goodhit =
false;
468 for (
size_t j = 0;
j < simTrackIds.size();
j++) {
469 LogTrace(
"TestTrackHits") <<
"hit id=" << simTrackIds[
j].first;
470 for (
size_t jj = 0;
jj < tpids.size();
jj++) {
471 if (simTrackIds[
j].
first == tpids[
jj])
477 bool ioniOnly =
true;
480 if (energyLossM.size() > 1 && energyLossS.size() <= 1) {
481 sort(energyLossM.begin(), energyLossM.end(), greater<double>());
483 }
else if (energyLossS.size() > 1 && energyLossM.size() <= 1) {
484 sort(energyLossS.begin(), energyLossS.end(), greater<double>());
486 }
else if (energyLossS.size() > 1 && energyLossM.size() > 1) {
487 sort(energyLossM.begin(), energyLossM.end(), greater<double>());
488 sort(energyLossS.begin(), energyLossS.end(), greater<double>());
489 energyLossM[1] / energyLossM[0] > energyLossS[1] / energyLossS[0]
495 LogVerbatim(
"TestTrackHits") <<
"MERGED HIT" << std::endl;
496 unsigned int idc = 0;
497 for (
size_t jj = 0;
jj < tpids.size();
jj++) {
498 idc +=
std::count(trackIds.begin(), trackIds.end(), tpids[
jj]);
500 if (idc == trackIds.size()) {
503 for (std::vector<PSimHit>::const_iterator
m = assSimHits.begin() + 1;
m < assSimHits.end();
m++) {
504 if ((
m->processType() != 7 &&
m->processType() != 8 &&
m->processType() != 9) &&
505 abs(
m->particleType()) != 11) {
510 if (ioniOnly && !shared) {
512 title <<
"Chi2DeltaHit_" << subdetId <<
"-" << layerId;
519 }
else if (!ioniOnly && !shared) {
521 title <<
"Chi2NSharedHit_" << subdetId <<
"-" << layerId;
530 title <<
"Chi2SharedHit_" << subdetId <<
"-" << layerId;
539 for (std::vector<PSimHit>::const_iterator
m = assSimHits.begin();
m < assSimHits.end();
m++) {
540 unsigned int tId =
m->trackId();
541 LogVerbatim(
"TestTrackHits") <<
"component with id=" << tId <<
" eLoss=" <<
m->energyLoss()
542 <<
" pType=" <<
m->processType();
543 if (
find(tpids.begin(), tpids.end(), tId) == tpids.end())
545 if (
m->processType() == 2) {
549 LogVerbatim(
"TestTrackHits") << gpr <<
" " << gps <<
" " << ger;
550 ROOT::Math::SVector<double, 3>
delta;
557 LogVerbatim(
"TestTrackHits") <<
"hit pull=" << mpull;
565 title <<
"Chi2GoodHit_" << subdetId <<
"-" << layerId;
576 title <<
"Chi2BadHit_" << subdetId <<
"-" << layerId;
589 if (dynamic_cast<const SiStripMatchedRecHit2D*>(rhit->hit())) {
590 if (simhitvecsize > 2 && goodhit) {
591 if (ioniOnly && !shared)
593 else if (!ioniOnly && !shared)
599 double rechitmatchedx = rhit->localPosition().x();
600 double rechitmatchedy = rhit->localPosition().y();
601 double mindist = 999999;
603 std::pair<LocalPoint, LocalVector> closestPair;
605 const BoundPlane& plane = (rhit)->det()->surface();
606 for (std::vector<PSimHit>::const_iterator
m = assSimHits.begin();
m < assSimHits.end();
m++) {
608 std::pair<LocalPoint, LocalVector> hitPair =
projectHit((*
m), stripDet, plane);
609 distx = fabs(rechitmatchedx - hitPair.first.x());
610 disty = fabs(rechitmatchedy - hitPair.first.y());
611 double dist = distx * distx + disty * disty;
612 if (
sqrt(dist) < mindist) {
614 closestPair = hitPair;
617 shitLPos = closestPair.first;
618 shitLMom = closestPair.second;
620 if (simhitvecsize > 1 && goodhit) {
621 if (ioniOnly && !shared)
623 else if (!ioniOnly && !shared)
641 GlobalError rhitGPEr = (rhit)->globalPositionError();
643 LogVerbatim(
"TestTrackHits") <<
"assSimHits.size()=" << assSimHits.size();
644 LogVerbatim(
"TestTrackHits") <<
"tsos globalPos =" << tsosGPos;
645 LogVerbatim(
"TestTrackHits") <<
"sim hit globalPos=" << shitGPos;
646 LogVerbatim(
"TestTrackHits") <<
"rec hit globalPos=" << rhitGPos;
647 LogVerbatim(
"TestTrackHits") <<
"geographicalId =" << rhit->det()->geographicalId().rawId();
651 if (rhit->detUnit())
LogTrace(
"TestTrackHits") <<
"rhit->detUnit()->geographicalId()=" 652 << rhit->detUnit()->geographicalId().rawId() ;
653 LogTrace(
"TestTrackHits") <<
"rhit->det()->surface().position()=" 654 << rhit->det()->surface().position() ;
655 if (rhit->detUnit())
LogTrace(
"TestTrackHits") <<
"rhit->detUnit()->surface().position()=" 656 << rhit->detUnit()->surface().position() ;
657 LogTrace(
"TestTrackHits") <<
"rhit->det()->position()=" << rhit->det()->position() ;
658 if (rhit->detUnit())
LogTrace(
"TestTrackHits") <<
"rhit->detUnit()->position()=" 659 << rhit->detUnit()->position() ;
660 LogTrace(
"TestTrackHits") <<
"rhit->det()->surface().bounds().length()=" 661 << rhit->det()->surface().bounds().length() ;
662 if (rhit->detUnit())
LogTrace(
"TestTrackHits") <<
"rhit->detUnit()->surface().bounds().length()=" 663 << rhit->detUnit()->surface().bounds().length() ;
664 LogTrace(
"TestTrackHits") <<
"rhit->det()->surface().bounds().width()=" 665 << rhit->det()->surface().bounds().width() ;
666 if (rhit->detUnit())
LogTrace(
"TestTrackHits") <<
"rhit->detUnit()->surface().bounds().width()=" 667 << rhit->detUnit()->surface().bounds().width() ;
668 LogTrace(
"TestTrackHits") <<
"rhit->det()->surface().bounds().thickness()=" 669 << rhit->det()->surface().bounds().thickness() ;
670 if (rhit->detUnit())
LogTrace(
"TestTrackHits") <<
"rhit->detUnit()->surface().bounds().thickness()=" 671 << rhit->detUnit()->surface().bounds().thickness() ;
674 double pullGPX_rs = (rhitGPos.
x() - shitGPos.
x()) /
sqrt(rhitGPEr.
cxx());
675 double pullGPY_rs = (rhitGPos.
y() - shitGPos.
y()) /
sqrt(rhitGPEr.
cyy());
676 double pullGPZ_rs = (rhitGPos.
z() - shitGPos.
z()) /
sqrt(rhitGPEr.
czz());
684 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_rs";
687 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_rs";
690 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_rs";
693 double pullGPX_tr = (tsosGPos.
x() - rhitGPos.
x()) /
sqrt(tsosGPEr.
cxx() + rhitGPEr.
cxx());
694 double pullGPY_tr = (tsosGPos.
y() - rhitGPos.
y()) /
sqrt(tsosGPEr.
cyy() + rhitGPEr.
cyy());
695 double pullGPZ_tr = (tsosGPos.
z() - rhitGPos.
z()) /
sqrt(tsosGPEr.
czz() + rhitGPEr.
czz());
703 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_tr";
706 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_tr";
709 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_tr";
712 double pullGPX_ts = (tsosGPos.
x() - shitGPos.
x()) /
sqrt(tsosGPEr.
cxx());
713 double pullGPY_ts = (tsosGPos.
y() - shitGPos.
y()) /
sqrt(tsosGPEr.
cyy());
714 double pullGPZ_ts = (tsosGPos.
z() - shitGPos.
z()) /
sqrt(tsosGPEr.
czz());
722 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_ts";
725 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_ts";
728 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_ts";
731 double pullGMX_ts = (tsosGMom.
x() - shitGMom.
x()) /
sqrt(tsosGMEr.
cxx());
732 double pullGMY_ts = (tsosGMom.
y() - shitGMom.
y()) /
sqrt(tsosGMEr.
cyy());
733 double pullGMZ_ts = (tsosGMom.
z() - shitGMom.
z()) /
sqrt(tsosGMEr.
czz());
741 title <<
"PullGM_X_" << subdetId <<
"-" << layerId <<
"_ts";
744 title <<
"PullGM_Y_" << subdetId <<
"-" << layerId <<
"_ts";
747 title <<
"PullGM_Z_" << subdetId <<
"-" << layerId <<
"_ts";
749 if (dynamic_cast<const SiStripMatchedRecHit2D*>(rhit->hit())) {
752 LogTrace(
"TestTrackHits") <<
"MONO HIT";
755 if (tMonoHit ==
nullptr)
757 vector<PSimHit> assMonoSimHits =
hitAssociator.associateHit(*tMonoHit->hit());
758 if (assMonoSimHits.empty())
760 const PSimHit sMonoHit = *(assMonoSimHits.begin());
761 const Surface* monoSurf = &(tMonoHit->det()->surface());
762 if (monoSurf ==
nullptr)
781 GlobalPoint monoRhitGPos = tMonoHit->globalPosition();
782 GlobalError monoRhitGPEr = tMonoHit->globalPositionError();
784 double pullGPX_rs_mono = (monoRhitGPos.
x() - monoShitGPos.
x()) /
sqrt(monoRhitGPEr.
cxx());
785 double pullGPY_rs_mono = (monoRhitGPos.
y() - monoShitGPos.
y()) /
sqrt(monoRhitGPEr.
cyy());
786 double pullGPZ_rs_mono = (monoRhitGPos.
z() - monoShitGPos.
z()) /
sqrt(monoRhitGPEr.
czz());
795 title <<
"Chi2Increment_mono_" << subdetId <<
"-" << layerId;
799 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_rs_mono";
802 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_rs_mono";
805 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_rs_mono";
808 double pullGPX_tr_mono = (monoTsosGPos.
x() - monoRhitGPos.
x()) /
sqrt(monoTsosGPEr.
cxx() + monoRhitGPEr.
cxx());
809 double pullGPY_tr_mono = (monoTsosGPos.
y() - monoRhitGPos.
y()) /
sqrt(monoTsosGPEr.
cyy() + monoRhitGPEr.
cyy());
810 double pullGPZ_tr_mono = (monoTsosGPos.
z() - monoRhitGPos.
z()) /
sqrt(monoTsosGPEr.
czz() + monoRhitGPEr.
czz());
816 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_tr_mono";
819 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_tr_mono";
822 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_tr_mono";
825 double pullGPX_ts_mono = (monoTsosGPos.
x() - monoShitGPos.
x()) /
sqrt(monoTsosGPEr.
cxx());
826 double pullGPY_ts_mono = (monoTsosGPos.
y() - monoShitGPos.
y()) /
sqrt(monoTsosGPEr.
cyy());
827 double pullGPZ_ts_mono = (monoTsosGPos.
z() - monoShitGPos.
z()) /
sqrt(monoTsosGPEr.
czz());
833 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_ts_mono";
836 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_ts_mono";
839 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_ts_mono";
842 double pullGMX_ts_mono = (monoTsosGMom.
x() - monoShitGMom.
x()) /
sqrt(monoTsosGMEr.
cxx());
843 double pullGMY_ts_mono = (monoTsosGMom.
y() - monoShitGMom.
y()) /
sqrt(monoTsosGMEr.
cyy());
844 double pullGMZ_ts_mono = (monoTsosGMom.
z() - monoShitGMom.
z()) /
sqrt(monoTsosGMEr.
czz());
850 title <<
"PullGM_X_" << subdetId <<
"-" << layerId <<
"_ts_mono";
853 title <<
"PullGM_Y_" << subdetId <<
"-" << layerId <<
"_ts_mono";
856 title <<
"PullGM_Z_" << subdetId <<
"-" << layerId <<
"_ts_mono";
860 LogTrace(
"TestTrackHits") <<
"STEREO HIT";
863 if (tStereoHit ==
nullptr)
865 vector<PSimHit> assStereoSimHits =
hitAssociator.associateHit(*tStereoHit->hit());
866 if (assStereoSimHits.empty())
868 const PSimHit sStereoHit = *(assStereoSimHits.begin());
869 const Surface* stereoSurf = &(tStereoHit->det()->surface());
870 if (stereoSurf ==
nullptr)
873 if (stereoState.
isValid() == 0)
889 GlobalPoint stereoRhitGPos = tStereoHit->globalPosition();
890 GlobalError stereoRhitGPEr = tStereoHit->globalPositionError();
896 title <<
"Chi2Increment_stereo_" << subdetId <<
"-" << layerId;
899 double pullGPX_rs_stereo = (stereoRhitGPos.
x() - stereoShitGPos.
x()) /
sqrt(stereoRhitGPEr.
cxx());
900 double pullGPY_rs_stereo = (stereoRhitGPos.
y() - stereoShitGPos.
y()) /
sqrt(stereoRhitGPEr.
cyy());
901 double pullGPZ_rs_stereo = (stereoRhitGPos.
z() - stereoShitGPos.
z()) /
sqrt(stereoRhitGPEr.
czz());
907 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_rs_stereo";
910 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_rs_stereo";
913 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_rs_stereo";
916 double pullGPX_tr_stereo =
917 (stereoTsosGPos.
x() - stereoRhitGPos.
x()) /
sqrt(stereoTsosGPEr.
cxx() + stereoRhitGPEr.
cxx());
918 double pullGPY_tr_stereo =
919 (stereoTsosGPos.
y() - stereoRhitGPos.
y()) /
sqrt(stereoTsosGPEr.
cyy() + stereoRhitGPEr.
cyy());
920 double pullGPZ_tr_stereo =
921 (stereoTsosGPos.
z() - stereoRhitGPos.
z()) /
sqrt(stereoTsosGPEr.
czz() + stereoRhitGPEr.
czz());
927 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_tr_stereo";
930 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_tr_stereo";
933 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_tr_stereo";
936 double pullGPX_ts_stereo = (stereoTsosGPos.
x() - stereoShitGPos.
x()) /
sqrt(stereoTsosGPEr.
cxx());
937 double pullGPY_ts_stereo = (stereoTsosGPos.
y() - stereoShitGPos.
y()) /
sqrt(stereoTsosGPEr.
cyy());
938 double pullGPZ_ts_stereo = (stereoTsosGPos.
z() - stereoShitGPos.
z()) /
sqrt(stereoTsosGPEr.
czz());
944 title <<
"PullGP_X_" << subdetId <<
"-" << layerId <<
"_ts_stereo";
947 title <<
"PullGP_Y_" << subdetId <<
"-" << layerId <<
"_ts_stereo";
950 title <<
"PullGP_Z_" << subdetId <<
"-" << layerId <<
"_ts_stereo";
953 double pullGMX_ts_stereo = (stereoTsosGMom.
x() - stereoShitGMom.
x()) /
sqrt(stereoTsosGMEr.
cxx());
954 double pullGMY_ts_stereo = (stereoTsosGMom.
y() - stereoShitGMom.
y()) /
sqrt(stereoTsosGMEr.
cyy());
955 double pullGMZ_ts_stereo = (stereoTsosGMom.
z() - stereoShitGMom.
z()) /
sqrt(stereoTsosGMEr.
czz());
961 title <<
"PullGM_X_" << subdetId <<
"-" << layerId <<
"_ts_stereo";
964 title <<
"PullGM_Y_" << subdetId <<
"-" << layerId <<
"_ts_stereo";
967 title <<
"PullGM_Z_" << subdetId <<
"-" << layerId <<
"_ts_stereo";
971 LogTrace(
"TestTrackHits") <<
"traj chi2=" << tchi2;
975 LogTrace(
"TestTrackHits") <<
"end of event: processd hits=" << evtHits;
980 TDirectory* chi2d =
file->mkdir(
"Chi2Increment");
982 TDirectory* gp_ts =
file->mkdir(
"GP_TSOS-SimHit");
983 TDirectory* gm_ts =
file->mkdir(
"GM_TSOS-SimHit");
984 TDirectory* gp_tr =
file->mkdir(
"GP_TSOS-RecHit");
985 TDirectory* gp_rs =
file->mkdir(
"GP_RecHit-SimHit");
987 TDirectory* gp_tsx = gp_ts->mkdir(
"X");
988 TDirectory* gp_tsy = gp_ts->mkdir(
"Y");
989 TDirectory* gp_tsz = gp_ts->mkdir(
"Z");
990 TDirectory* gm_tsx = gm_ts->mkdir(
"X");
991 TDirectory* gm_tsy = gm_ts->mkdir(
"Y");
992 TDirectory* gm_tsz = gm_ts->mkdir(
"Z");
993 TDirectory* gp_trx = gp_tr->mkdir(
"X");
994 TDirectory* gp_try = gp_tr->mkdir(
"Y");
995 TDirectory* gp_trz = gp_tr->mkdir(
"Z");
996 TDirectory* gp_rsx = gp_rs->mkdir(
"X");
997 TDirectory* gp_rsy = gp_rs->mkdir(
"Y");
998 TDirectory* gp_rsz = gp_rs->mkdir(
"Z");
1000 TDirectory* gp_tsx_mono = gp_ts->mkdir(
"MONOX");
1001 TDirectory* gp_tsy_mono = gp_ts->mkdir(
"MONOY");
1002 TDirectory* gp_tsz_mono = gp_ts->mkdir(
"MONOZ");
1003 TDirectory* gm_tsx_mono = gm_ts->mkdir(
"MONOX");
1004 TDirectory* gm_tsy_mono = gm_ts->mkdir(
"MONOY");
1005 TDirectory* gm_tsz_mono = gm_ts->mkdir(
"MONOZ");
1006 TDirectory* gp_trx_mono = gp_tr->mkdir(
"MONOX");
1007 TDirectory* gp_try_mono = gp_tr->mkdir(
"MONOY");
1008 TDirectory* gp_trz_mono = gp_tr->mkdir(
"MONOZ");
1009 TDirectory* gp_rsx_mono = gp_rs->mkdir(
"MONOX");
1010 TDirectory* gp_rsy_mono = gp_rs->mkdir(
"MONOY");
1011 TDirectory* gp_rsz_mono = gp_rs->mkdir(
"MONOZ");
1013 TDirectory* gp_tsx_stereo = gp_ts->mkdir(
"STEREOX");
1014 TDirectory* gp_tsy_stereo = gp_ts->mkdir(
"STEREOY");
1015 TDirectory* gp_tsz_stereo = gp_ts->mkdir(
"STEREOZ");
1016 TDirectory* gm_tsx_stereo = gm_ts->mkdir(
"STEREOX");
1017 TDirectory* gm_tsy_stereo = gm_ts->mkdir(
"STEREOY");
1018 TDirectory* gm_tsz_stereo = gm_ts->mkdir(
"STEREOZ");
1019 TDirectory* gp_trx_stereo = gp_tr->mkdir(
"STEREOX");
1020 TDirectory* gp_try_stereo = gp_tr->mkdir(
"STEREOY");
1021 TDirectory* gp_trz_stereo = gp_tr->mkdir(
"STEREOZ");
1022 TDirectory* gp_rsx_stereo = gp_rs->mkdir(
"STEREOX");
1023 TDirectory* gp_rsy_stereo = gp_rs->mkdir(
"STEREOY");
1024 TDirectory* gp_rsz_stereo = gp_rs->mkdir(
"STEREOZ");
1063 for (
int i = 0;
i != 6;
i++)
1064 for (
int j = 0;
j != 9;
j++) {
1065 if (
i == 0 &&
j > 2)
1067 if (
i == 1 &&
j > 1)
1069 if (
i == 2 &&
j > 3)
1071 if (
i == 3 &&
j > 2)
1073 if (
i == 4 &&
j > 5)
1075 if (
i == 5 &&
j > 8)
1079 title <<
"Chi2Increment_" <<
i + 1 <<
"-" <<
j + 1;
1082 title <<
"Chi2IncrementVsEta_" <<
i + 1 <<
"-" <<
j + 1;
1085 title <<
"Chi2GoodHit_" <<
i + 1 <<
"-" <<
j + 1;
1088 title <<
"Chi2BadHit_" <<
i + 1 <<
"-" <<
j + 1;
1091 title <<
"Chi2DeltaHit_" <<
i + 1 <<
"-" <<
j + 1;
1094 title <<
"Chi2NSharedHit_" <<
i + 1 <<
"-" <<
j + 1;
1097 title <<
"Chi2SharedHit_" <<
i + 1 <<
"-" <<
j + 1;
1103 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts";
1107 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts";
1111 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts";
1117 title <<
"PullGM_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts";
1121 title <<
"PullGM_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts";
1125 title <<
"PullGM_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts";
1131 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr";
1135 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr";
1139 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr";
1145 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs";
1149 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs";
1153 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs";
1156 if (((
i == 2 ||
i == 4) && (
j == 0 ||
j == 1)) || (
i == 3 ||
i == 5)) {
1159 title <<
"Chi2Increment_mono_" <<
i + 1 <<
"-" <<
j + 1;
1162 title <<
"Chi2Increment_stereo_" <<
i + 1 <<
"-" <<
j + 1;
1168 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_mono";
1172 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_mono";
1176 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_mono";
1182 title <<
"PullGM_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_mono";
1186 title <<
"PullGM_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_mono";
1190 title <<
"PullGM_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_mono";
1196 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr_mono";
1200 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr_mono";
1204 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr_mono";
1210 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs_mono";
1214 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs_mono";
1218 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs_mono";
1223 gp_tsx_stereo->cd();
1225 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_stereo";
1227 gp_tsy_stereo->cd();
1229 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_stereo";
1231 gp_tsz_stereo->cd();
1233 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_stereo";
1237 gm_tsx_stereo->cd();
1239 title <<
"PullGM_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_stereo";
1241 gm_tsy_stereo->cd();
1243 title <<
"PullGM_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_stereo";
1245 gm_tsz_stereo->cd();
1247 title <<
"PullGM_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_ts_stereo";
1251 gp_trx_stereo->cd();
1253 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr_stereo";
1255 gp_try_stereo->cd();
1257 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr_stereo";
1259 gp_trz_stereo->cd();
1261 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_tr_stereo";
1265 gp_rsx_stereo->cd();
1267 title <<
"PullGP_X_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs_stereo";
1269 gp_rsy_stereo->cd();
1271 title <<
"PullGP_Y_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs_stereo";
1273 gp_rsz_stereo->cd();
1275 title <<
"PullGP_Z_" <<
i + 1 <<
"-" <<
j + 1 <<
"_rs_stereo";
1290 LocalPoint localHit = plane.toLocal(globalpos);
1307 return std::pair<LocalPoint, LocalVector>(projectedPos, localStripDir);
1310 template <
unsigned int D>
1314 VecD
r = asSVector<D>(rhit->parameters()) -
me.measuredParameters<
D>(*rhit);
1316 SMatDD
R = asSMatrix<D>(rhit->parametersError()) +
me.measuredError<
D>(*rhit);
1318 return ROOT::Math::Similarity(
r,
R);
std::map< std::string, TH2F * > hChi2IncrementVsEta
std::map< std::string, TH1F * > hPullGM_Y_ts_stereo
std::map< std::string, TH1F * > hPullGM_Z_ts
Log< level::Info, true > LogVerbatim
edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecord > theBuilderToken
TH2F * hPrjClsize_vs_Chi2
T getParameter(std::string const &) const
std::map< std::string, TH1F * > hPullGP_X_tr
std::map< std::string, TH1F * > hPullGP_Z_rs
TrackerHitAssociator::Config trackerHitAssociatorConfig_
reco::RecoToSimCollection associateRecoToSim(const edm::Handle< edm::View< reco::Track >> &tCH, const edm::Handle< TrackingParticleCollection > &tPCH) const
std::map< std::string, TH1F * > hChi2Increment_stereo
virtual float stripAngle(float strip) const =0
ROOT::Math::SMatrix< double, D1, D1, ROOT::Math::MatRepSym< double, D1 > > SymMatrix
std::map< std::string, TH1F * > hPullGM_Y_ts_mono
std::map< std::string, TH1F * > hChi2BadHit
std::map< std::string, TH1F * > hPullGP_Y_ts
float probabilityX() const
#define DEFINE_FWK_MODULE(type)
TH2F * hSt2Clsize_vs_Chi2
std::map< std::string, TH1F * > hPullGP_X_ts_mono
Sin< T >::type sin(const T &t)
edm::Handle< std::vector< Trajectory > > trajCollectionHandle
std::map< std::string, TH1F * > hPullGP_Y_ts_stereo
void analyze(const edm::Event &, const edm::EventSetup &) override
std::map< std::string, TH1F * > hChi2DeltaHit
TH2F * hSt1Clsize_vs_Chi2
void beginRun(edm::Run const &run, const edm::EventSetup &) override
TransientTrackingRecHit::ConstRecHitPointer CTTRHp
edm::Handle< reco::TrackToTrackingParticleAssociator > trackAssociator
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
std::map< std::string, TH1F * > hChi2Increment_mono
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
constexpr Detector det() const
get the detector field from this detid
std::map< std::string, TH1F * > hChi2Increment
edm::ESGetToken< TrajectoryStateUpdator, TrackingComponentsRecord > theUpdatorToken
std::map< std::string, TH1F * > hPullGP_X_rs_stereo
const_iterator find(const key_type &k) const
find element with specified reference key
const CartesianTrajectoryError cartesianError() const
unsigned int layer(const DetId &id) const
TH2F * hPixClsize_vs_Chi2
virtual float strip(const LocalPoint &) const =0
std::map< std::string, TH1F * > hPullGP_X_ts
const_iterator end() const
last iterator over the map (read only)
edm::ESHandle< Propagator > thePropagator
std::map< std::string, TH1F * > hPullGP_X_rs_mono
T const * product() const
edm::Handle< edm::View< reco::Track > > trackCollectionHandle
GlobalPoint globalPosition() const
edm::ESHandle< MagneticField > theMF
std::map< std::string, TH1F * > hPullGP_Y_tr_mono
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
const GlobalError position() const
Position error submatrix.
std::map< std::string, TH1F * > hPullGP_Z_ts
TestTrackHits(const edm::ParameterSet &)
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
edm::ESHandle< TrajectoryStateUpdator > theUpdator
unsigned short processType() const
Cos< T >::type cos(const T &t)
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
Abs< T >::type abs(const T &t)
std::map< std::string, TH1F * > hPullGP_Y_rs_mono
TransientTrackingRecHit::ConstRecHitPointer CTTRHp
std::map< std::string, TH1F * > hPullGM_Y_ts
std::map< std::string, TH1F * > hPullGM_Z_ts_stereo
std::map< std::string, TH1F * > hPullGP_Z_rs_mono
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
std::map< std::string, TH1F * > hPullGP_Y_tr
std::map< std::string, TH1F * > hPullGP_Z_tr_mono
std::map< std::string, TH1F * > hPullGP_X_tr_mono
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > theGToken
std::map< std::string, TH1F * > hPullGP_X_ts_stereo
edm::ESHandle< TransientTrackingRecHitBuilder > theBuilder
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
std::vector< SimTrack >::const_iterator g4t_iterator
edm::Handle< TrackingParticleCollection > trackingParticleCollectionHandle
std::map< std::string, TH1F * > hChi2SharedHit
const Plane & surface() const
The nominal surface of the GeomDet.
const PositionType & position() const
TH1F * hTotChi2NSharedHit
DecomposeProduct< arg, typename Div::arg > D
std::map< std::string, TH1F * > hChi2GoodHit
Local3DPoint localPosition() const
GlobalVector globalMomentum() const
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > theTopoToken
std::map< std::string, TH1F * > hPullGM_X_ts
edm::ESHandle< TrackerGeometry > theG
std::map< std::string, TH1F * > hPullGP_Y_rs_stereo
float probabilityY() const
std::map< std::string, TH1F * > hPullGP_Z_tr
ROOT::Math::SVector< double, D1 > Vector
std::map< std::string, TH1F * > hPullGP_Z_tr_stereo
std::map< std::string, TH1F * > hPullGP_Z_ts_stereo
std::map< std::string, TH1F * > hPullGM_Z_ts_mono
std::map< std::string, TH1F * > hPullGP_Z_ts_mono
std::pair< LocalPoint, LocalVector > projectHit(const PSimHit &, const StripGeomDetUnit *, const BoundPlane &)
std::map< std::string, TH1F * > hPullGP_Z_rs_stereo
std::map< std::string, TH1F * > hPullGP_X_rs
const AlgebraicSymMatrix66 & matrix() const
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepSym< double, 3 > > AlgebraicSymMatrix33
edm::Handle< TrajTrackAssociationCollection > trajTrackAssociationCollectionHandle
std::map< std::string, TH1F * > hPullGM_X_ts_stereo
std::map< std::string, TH1F * > hChi2NSharedHit
~TestTrackHits() override
double computeChi2Increment(MeasurementExtractor, TransientTrackingRecHit::ConstRecHitPointer)
std::map< std::string, TH1F * > hPullGP_X_tr_stereo
TrajectoryStateOnSurface TSOS
LocalVector momentumAtEntry() const
The momentum of the track that produced the hit, at entry point.
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > theMFToken
std::string propagatorName
std::map< std::string, TH1F * > hPullGP_Y_tr_stereo
std::map< std::string, TH1F * > hPullGP_Y_ts_mono
edm::ESGetToken< Propagator, TrackingComponentsRecord > thePropagatorToken
std::map< std::string, TH1F * > hPullGP_Y_rs
std::map< std::string, TH1F * > hPullGM_X_ts_mono