37 ttree_all_hits_(nullptr),
38 ttree_track_hits_(nullptr),
39 ttree_track_hits_strip_(nullptr),
40 trackerHitAssociatorConfig_(consumesCollector()) {
382 evt =
e.id().event();
385 cout <<
"evt = " <<
evt << endl;
388 float radtodeg = 180.0 /
math_pi;
392 float mindist = 999999.9;
414 for (vector<Trajectory>::const_iterator it = trajCollectionHandle->begin(); it != trajCollectionHandle->end(); ++it) {
415 vector<TrajectoryMeasurement> tmColl = it->measurements();
416 for (vector<TrajectoryMeasurement>::const_iterator itTraj = tmColl.begin(); itTraj != tmColl.end(); ++itTraj) {
417 if (!itTraj->updatedState().isValid())
505 if (trans_trk_rec_hit_point ==
nullptr)
510 if (trk_rec_hit ==
nullptr)
513 DetId detid = (trk_rec_hit)->geographicalId();
522 dynamic_cast<const SiStripMatchedRecHit2D*>((*trans_trk_rec_hit_point).hit());
523 const SiStripRecHit2D* hit2d = dynamic_cast<const SiStripRecHit2D*>((*trans_trk_rec_hit_point).hit());
524 const SiStripRecHit1D* hit1d = dynamic_cast<const SiStripRecHit1D*>((*trans_trk_rec_hit_point).hit());
526 if (!matchedhit && !hit2d && !hit1d)
529 position = (trk_rec_hit)->localPosition();
530 error = (trk_rec_hit)->localPositionError();
553 float locx = localDir.
x();
554 float locy = localDir.
y();
555 float locz = localDir.
z();
565 if (StripSubdet.
stereo() == 0)
575 if (strip_geom_det_unit !=
nullptr) {
652 if (cluster->getSplitClusterError() > 0.0)
661 const auto& stripCharges = cluster->amplitudes();
663 for (
unsigned int i = 0;
i < stripCharges.size(); ++
i) {
671 float mindist = 999999.9;
683 int strip_nprimaries = 0;
684 int current_index = 0;
686 for (vector<PSimHit>::const_iterator
m =
matched.begin();
m <
matched.end(); ++
m) {
689 if ((*m).processType() == 2)
692 if (current_index == 1) {
695 }
else if (current_index == 2) {
698 }
else if (current_index == 3) {
701 }
else if (current_index == 4) {
704 }
else if (current_index == 5) {
709 float dist =
abs((hit1d)->localPosition().
x() - (*m).localPosition().x());
711 if (dist < mindist) {
773 auto& stripCharges = cluster->amplitudes();
775 for (
unsigned int i = 0;
i < stripCharges.size(); ++
i) {
783 float mindist = 999999.9;
795 for (vector<PSimHit>::const_iterator
m =
matched.begin();
m <
matched.end(); ++
m) {
796 float dist =
abs((hit2d)->localPosition().
x() - (*m).localPosition().x());
798 if (dist < mindist) {
842 for (TrackerGeometry::DetContainer::const_iterator it = pDD->
dets().begin(); it != pDD->
dets().end(); it++) {
843 DetId detId = ((*it)->geographicalId());
846 if (dsmatch == recHitColl->
end())
856 for (; pixeliter != pixelrechitRangeIteratorEnd; ++pixeliter) {
862 cout <<
"SiPixelErrorEstimation::analyze: rechits without associated simhit !!!!!!!" << endl;
1003 cout <<
"SiPixelErrorEstimation::analyze: Not in a pixel detector !!!!!" << endl;
1011 if (pixeliter->cluster()->getSplitClusterErrorX() > 0.0 && pixeliter->cluster()->getSplitClusterErrorY() > 0.0) {
1020 const int maxPixelCol = pixeliter->cluster()->maxPixelCol();
1021 const int maxPixelRow = pixeliter->cluster()->maxPixelRow();
1022 const int minPixelCol = pixeliter->cluster()->minPixelCol();
1023 const int minPixelRow = pixeliter->cluster()->minPixelRow();
1032 if (topol->isItEdgePixelInX(minPixelRow) || topol->isItEdgePixelInX(maxPixelRow))
1037 if (topol->isItEdgePixelInY(minPixelCol) || topol->isItEdgePixelInY(maxPixelCol))
1043 if (topol->containsBigPixelInX(minPixelRow, maxPixelRow))
1048 if (topol->containsBigPixelInY(minPixelCol, maxPixelCol))
1059 if (tmp_nrows == 80)
1061 else if (tmp_nrows == 160)
1064 cout <<
"-------------------------------------------------- Wrong module size !!!" << endl;
1093 LocalError le = pixeliter->localPositionError();
1097 bool found_hit_from_generated_particle =
false;
1100 float closest_dist = 99999.9;
1101 std::vector<PSimHit>::const_iterator closest_simhit =
matched.begin();
1103 for (std::vector<PSimHit>::const_iterator
m =
matched.begin();
m <
matched.end();
m++) {
1105 int pid = (*m).particleType();
1110 float simhitx = 0.5 * ((*m).entryPoint().x() + (*m).exitPoint().x());
1111 float simhity = 0.5 * ((*m).entryPoint().y() + (*m).exitPoint().y());
1116 float dist =
sqrt(x_res * x_res + y_res * y_res);
1118 if (dist < closest_dist) {
1119 closest_dist = dist;
1121 found_hit_from_generated_particle =
true;
1127 if (
checkType_ && !found_hit_from_generated_particle)
1130 all_x1 = (*closest_simhit).entryPoint().x();
1131 all_y1 = (*closest_simhit).entryPoint().y();
1132 all_z1 = (*closest_simhit).entryPoint().z();
1133 all_x2 = (*closest_simhit).exitPoint().x();
1134 all_y2 = (*closest_simhit).exitPoint().y();
1135 all_z2 = (*closest_simhit).exitPoint().z();
1137 (*closest_simhit).entryPoint().x(), (*closest_simhit).entryPoint().y(), (*closest_simhit).entryPoint().z()));
1139 (*closest_simhit).exitPoint().x(), (*closest_simhit).exitPoint().y(), (*closest_simhit).exitPoint().z()));
1148 (*closest_simhit).entryPoint().x(), (*closest_simhit).entryPoint().y(), (*closest_simhit).entryPoint().z()));
1150 (*closest_simhit).exitPoint().x(), (*closest_simhit).exitPoint().y(), (*closest_simhit).exitPoint().z()));
1187 all_simpx = (*closest_simhit).momentumAtEntry().x();
1188 all_simpy = (*closest_simhit).momentumAtEntry().y();
1189 all_simpz = (*closest_simhit).momentumAtEntry().z();
1190 all_eloss = (*closest_simhit).energyLoss();
1193 all_pidhit = (*closest_simhit).particleType();
1194 all_trkid = (*closest_simhit).trackId();
1203 SimTrackContainer::const_iterator trksiter;
1204 for (trksiter =
trks.begin(); trksiter !=
trks.end(); trksiter++)
1205 if ((
int)trksiter->trackId() ==
all_trkid) {
1217 const std::vector<SiPixelCluster::Pixel>& pixvector = clust->pixels();
1218 for (
int i = 0;
i < (
int)pixvector.size(); ++
i) {
1249 reco::TrackCollection::const_iterator tciter;
1253 for (tciter =
tracks->begin(); tciter !=
tracks->end(); ++tciter) {
1255 for (
auto const hit : tciter->recHits()) {
1333 if (matchedhit->
cluster()->getSplitClusterErrorX() > 0.0 &&
1334 matchedhit->
cluster()->getSplitClusterErrorY() > 0.0)
1356 float distx, disty, dist;
1357 bool found_hit_from_generated_particle =
false;
1359 int n_assoc_muon = 0;
1361 vector<PSimHit>::const_iterator closestit =
matched.begin();
1362 for (vector<PSimHit>::const_iterator
m =
matched.begin();
m <
matched.end(); ++
m) {
1364 int pid = (*m).particleType();
1369 float simhitx = 0.5 * ((*m).entryPoint().x() + (*m).exitPoint().x());
1370 float simhity = 0.5 * ((*m).entryPoint().y() + (*m).exitPoint().y());
1374 dist =
sqrt(distx * distx + disty * disty);
1376 if (dist < mindist) {
1381 found_hit_from_generated_particle =
true;
1387 if (
checkType_ && !found_hit_from_generated_particle)
1396 DetId detId =
hit->geographicalId();
1398 const PixelGeomDetUnit* theGeomDet = dynamic_cast<const PixelGeomDetUnit*>((*tracker).idToDet(detId));
1402 pidhit = (*closestit).particleType();
1405 simhitx = 0.5 * ((*closestit).entryPoint().x() + (*closestit).exitPoint().x());
1406 simhity = 0.5 * ((*closestit).entryPoint().y() + (*closestit).exitPoint().y());
1413 float simhitpx = (*closestit).momentumAtEntry().x();
1414 float simhitpy = (*closestit).momentumAtEntry().y();
1415 float simhitpz = (*closestit).momentumAtEntry().z();
1417 beta = atan2(simhitpz, simhitpy) * radtodeg;
1418 alpha = atan2(simhitpz, simhitpx) * radtodeg;
1424 float locx = simhitpx;
1425 float locy = simhitpy;
1426 float locz = simhitpz;
1428 bool isFlipped =
false;
1436 trk_alpha = acos(locx /
sqrt(locx * locx + locz * locz)) * radtodeg;
1440 trk_beta = acos(locy /
sqrt(locy * locy + locz * locz)) * radtodeg;
1442 phi = tciter->momentum().phi() /
math_pi * 180.0;
1443 eta = tciter->momentum().eta();
1445 const int maxPixelCol = (*matchedhit).cluster()->maxPixelCol();
1446 const int maxPixelRow = (*matchedhit).cluster()->maxPixelRow();
1447 const int minPixelCol = (*matchedhit).cluster()->minPixelCol();
1448 const int minPixelRow = (*matchedhit).cluster()->minPixelRow();
1451 if (theTopol->isItEdgePixelInX(minPixelRow) || theTopol->isItEdgePixelInX(maxPixelRow))
1456 if (theTopol->isItEdgePixelInY(minPixelCol) || theTopol->isItEdgePixelInY(maxPixelCol))
1462 if (theTopol->containsBigPixelInX(minPixelRow, maxPixelRow))
1467 if (theTopol->containsBigPixelInY(minPixelCol, maxPixelCol))
1476 if (tmp_nrows == 80)
1478 else if (tmp_nrows == 160)
1481 cout <<
"-------------------------------------------------- Wrong module size !!!" << endl;
1516 cout <<
"---------------- RecHit with no associated SimHit !!! -------------------------- " << endl;
1536 const PixelGeomDetUnit* theDet = dynamic_cast<const PixelGeomDetUnit*>(&det);
1538 cout <<
"---------------------------------------------- Not a pixel detector !!!!!!!!!!!!!!" << endl;
1545 float xcenter =
cl.x();
1546 float ycenter =
cl.y();
1557 float gpx =
gp.x() / gp_mod;
1558 float gpy =
gp.y() / gp_mod;
1559 float gpz =
gp.z() / gp_mod;
1586 float gv_dot_gvx = gv.
x() * gvx.
x() + gv.
y() * gvx.
y() + gv.
z() * gvx.
z();
1587 float gv_dot_gvy = gv.
x() * gvy.
x() + gv.
y() * gvy.
y() + gv.
z() * gvy.
z();
1588 float gv_dot_gvz = gv.
x() * gvz.
x() + gv.
y() * gvz.
y() + gv.
z() * gvz.
z();
1591 alpha = atan2(gv_dot_gvz, gv_dot_gvx);
1592 beta = atan2(gv_dot_gvz, gv_dot_gvy);