37 ttree_track_hits_(0), ttree_track_hits_strip_(0),
38 trackerHitAssociatorConfig_(consumesCollector())
71 ttree_track_hits_strip_->Branch(
"strip_rechitx", &
strip_rechitx,
"strip_rechitx/F" , bufsize);
72 ttree_track_hits_strip_->Branch(
"strip_rechity", &
strip_rechity,
"strip_rechity/F" , bufsize);
73 ttree_track_hits_strip_->Branch(
"strip_rechitz", &
strip_rechitz,
"strip_rechitz/F" , bufsize);
75 ttree_track_hits_strip_->Branch(
"strip_rechiterrx", &
strip_rechiterrx,
"strip_rechiterrx/F" , bufsize);
76 ttree_track_hits_strip_->Branch(
"strip_rechiterry", &
strip_rechiterry,
"strip_rechiterry/F" , bufsize);
78 ttree_track_hits_strip_->Branch(
"strip_rechitresx", &
strip_rechitresx,
"strip_rechitresx/F" , bufsize);
80 ttree_track_hits_strip_->Branch(
"strip_rechitresx2", &
strip_rechitresx2,
"strip_rechitresx2/F" , bufsize);
83 ttree_track_hits_strip_->Branch(
"strip_rechitresy", &
strip_rechitresy,
"strip_rechitresy/F" , bufsize);
85 ttree_track_hits_strip_->Branch(
"strip_rechitpullx", &
strip_rechitpullx,
"strip_rechitpullx/F", bufsize);
86 ttree_track_hits_strip_->Branch(
"strip_rechitpully", &
strip_rechitpully,
"strip_rechitpully/F", bufsize);
88 ttree_track_hits_strip_->Branch(
"strip_is_stereo", &
strip_is_stereo,
"strip_is_stereo/I", bufsize);
89 ttree_track_hits_strip_->Branch(
"strip_hit_type" , &
strip_hit_type ,
"strip_hit_type/I" , bufsize);
90 ttree_track_hits_strip_->Branch(
"detector_type" , &
detector_type ,
"detector_type/I" , bufsize);
92 ttree_track_hits_strip_->Branch(
"strip_trk_pt" , &
strip_trk_pt ,
"strip_trk_pt/F" , bufsize);
93 ttree_track_hits_strip_->Branch(
"strip_cotalpha" , &
strip_cotalpha ,
"strip_cotalpha/F" , bufsize);
94 ttree_track_hits_strip_->Branch(
"strip_cotbeta" , &
strip_cotbeta ,
"strip_cotbeta/F" , bufsize);
95 ttree_track_hits_strip_->Branch(
"strip_locbx" , &
strip_locbx ,
"strip_locbx/F" , bufsize);
96 ttree_track_hits_strip_->Branch(
"strip_locby" , &
strip_locby ,
"strip_locby/F" , bufsize);
97 ttree_track_hits_strip_->Branch(
"strip_locbz" , &
strip_locbz ,
"strip_locbz/F" , bufsize);
98 ttree_track_hits_strip_->Branch(
"strip_charge" , &
strip_charge ,
"strip_charge/F" , bufsize);
99 ttree_track_hits_strip_->Branch(
"strip_size" , &
strip_size ,
"strip_size/I" , bufsize);
102 ttree_track_hits_strip_->Branch(
"strip_edge" , &
strip_edge ,
"strip_edge/I" , bufsize);
103 ttree_track_hits_strip_->Branch(
"strip_nsimhit", &
strip_nsimhit,
"strip_nsimhit/I" , bufsize);
104 ttree_track_hits_strip_->Branch(
"strip_pidhit" , &
strip_pidhit ,
"strip_pidhit/I" , bufsize);
105 ttree_track_hits_strip_->Branch(
"strip_simproc", &
strip_simproc,
"strip_simproc/I" , bufsize);
108 ttree_track_hits_strip_->Branch(
"strip_subdet_id" , &
strip_subdet_id ,
"strip_subdet_id/I" , bufsize);
110 ttree_track_hits_strip_->Branch(
"strip_tib_layer" , &
strip_tib_layer ,
"strip_tib_layer/I" , bufsize);
111 ttree_track_hits_strip_->Branch(
"strip_tib_module" , &
strip_tib_module ,
"strip_tib_module/I" , bufsize);
112 ttree_track_hits_strip_->Branch(
"strip_tib_order" , &
strip_tib_order ,
"strip_tib_order/I" , bufsize);
113 ttree_track_hits_strip_->Branch(
"strip_tib_side" , &
strip_tib_side ,
"strip_tib_side/I" , bufsize);
114 ttree_track_hits_strip_->Branch(
"strip_tib_is_double_side" , &
strip_tib_is_double_side ,
"strip_tib_is_double_side/I" , bufsize);
115 ttree_track_hits_strip_->Branch(
"strip_tib_is_z_plus_side" , &
strip_tib_is_z_plus_side ,
"strip_tib_is_z_plus_side/I" , bufsize);
116 ttree_track_hits_strip_->Branch(
"strip_tib_is_z_minus_side" , &
strip_tib_is_z_minus_side ,
"strip_tib_is_z_minus_side/I" , bufsize);
117 ttree_track_hits_strip_->Branch(
"strip_tib_layer_number" , &
strip_tib_layer_number ,
"strip_tib_layer_number/I" , bufsize);
118 ttree_track_hits_strip_->Branch(
"strip_tib_string_number" , &
strip_tib_string_number ,
"strip_tib_string_number/I" , bufsize);
119 ttree_track_hits_strip_->Branch(
"strip_tib_module_number" , &
strip_tib_module_number ,
"strip_tib_module_number/I" , bufsize);
120 ttree_track_hits_strip_->Branch(
"strip_tib_is_internal_string", &
strip_tib_is_internal_string,
"strip_tib_is_internal_string/I", bufsize);
121 ttree_track_hits_strip_->Branch(
"strip_tib_is_external_string", &
strip_tib_is_external_string,
"strip_tib_is_external_string/I", bufsize);
122 ttree_track_hits_strip_->Branch(
"strip_tib_is_rphi" , &
strip_tib_is_rphi ,
"strip_tib_is_rphi/I" , bufsize);
123 ttree_track_hits_strip_->Branch(
"strip_tib_is_stereo" , &
strip_tib_is_stereo ,
"strip_tib_is_stereo/I" , bufsize);
124 ttree_track_hits_strip_->Branch(
"strip_tob_layer" , &
strip_tob_layer ,
"strip_tob_layer/I" , bufsize);
125 ttree_track_hits_strip_->Branch(
"strip_tob_module" , &
strip_tob_module ,
"strip_tob_module/I" , bufsize);
126 ttree_track_hits_strip_->Branch(
"strip_tob_side" , &
strip_tob_side ,
"strip_tob_side/I" , bufsize);
127 ttree_track_hits_strip_->Branch(
"strip_tob_is_double_side" , &
strip_tob_is_double_side ,
"strip_tob_is_double_side/I" , bufsize);
128 ttree_track_hits_strip_->Branch(
"strip_tob_is_z_plus_side" , &
strip_tob_is_z_plus_side ,
"strip_tob_is_z_plus_side/I" , bufsize);
129 ttree_track_hits_strip_->Branch(
"strip_tob_is_z_minus_side" , &
strip_tob_is_z_minus_side ,
"strip_tob_is_z_minus_side/I" , bufsize);
130 ttree_track_hits_strip_->Branch(
"strip_tob_layer_number" , &
strip_tob_layer_number ,
"strip_tob_layer_number/I" , bufsize);
131 ttree_track_hits_strip_->Branch(
"strip_tob_rod_number" , &
strip_tob_rod_number ,
"strip_tob_rod_number/I" , bufsize);
132 ttree_track_hits_strip_->Branch(
"strip_tob_module_number" , &
strip_tob_module_number ,
"strip_tob_module_number/I" , bufsize);
135 ttree_track_hits_strip_->Branch(
"strip_prob", &
strip_prob,
"strip_prob/F" , bufsize);
136 ttree_track_hits_strip_->Branch(
"strip_qbin", &
strip_qbin,
"strip_qbin/I", bufsize);
138 ttree_track_hits_strip_->Branch(
"strip_nprm", &
strip_nprm,
"strip_nprm/I", bufsize);
140 ttree_track_hits_strip_->Branch(
"strip_pidhit1" , &
strip_pidhit1 ,
"strip_pidhit1/I" , bufsize);
141 ttree_track_hits_strip_->Branch(
"strip_simproc1", &
strip_simproc1,
"strip_simproc1/I" , bufsize);
143 ttree_track_hits_strip_->Branch(
"strip_pidhit2" , &
strip_pidhit2 ,
"strip_pidhit2/I" , bufsize);
144 ttree_track_hits_strip_->Branch(
"strip_simproc2", &
strip_simproc2,
"strip_simproc2/I" , bufsize);
146 ttree_track_hits_strip_->Branch(
"strip_pidhit3" , &
strip_pidhit3 ,
"strip_pidhit3/I" , bufsize);
147 ttree_track_hits_strip_->Branch(
"strip_simproc3", &
strip_simproc3,
"strip_simproc3/I" , bufsize);
149 ttree_track_hits_strip_->Branch(
"strip_pidhit4" , &
strip_pidhit4 ,
"strip_pidhit4/I" , bufsize);
150 ttree_track_hits_strip_->Branch(
"strip_simproc4", &
strip_simproc4,
"strip_simproc4/I" , bufsize);
152 ttree_track_hits_strip_->Branch(
"strip_pidhit5" , &
strip_pidhit5 ,
"strip_pidhit5/I" , bufsize);
153 ttree_track_hits_strip_->Branch(
"strip_simproc5", &
strip_simproc5,
"strip_simproc5/I" , bufsize);
155 ttree_track_hits_strip_->Branch(
"strip_split", &
strip_split,
"strip_split/I" , bufsize);
157 ttree_track_hits_strip_->Branch(
"strip_clst_err_x", &
strip_clst_err_x,
"strip_clst_err_x/F" , bufsize);
158 ttree_track_hits_strip_->Branch(
"strip_clst_err_y", &
strip_clst_err_y,
"strip_clst_err_y/F" , bufsize);
385 cout <<
"evt = " <<
evt << endl;
388 float radtodeg = 180.0 /
math_pi;
392 float mindist = 999999.9;
394 std::vector<PSimHit> matched;
421 for ( vector<Trajectory>::const_iterator it = trajCollectionHandle->begin(); it!=trajCollectionHandle->end(); ++it )
424 vector<TrajectoryMeasurement> tmColl = it->measurements();
425 for ( vector<TrajectoryMeasurement>::const_iterator itTraj = tmColl.begin(); itTraj!=tmColl.end(); ++itTraj )
428 if ( !itTraj->updatedState().isValid() )
518 if ( trans_trk_rec_hit_point ==
NULL )
523 if ( trk_rec_hit ==
NULL )
526 DetId detid = (trk_rec_hit)->geographicalId();
537 if ( !matchedhit && !hit2d && !hit1d )
540 position = (trk_rec_hit)->localPosition();
541 error = (trk_rec_hit)->localPositionError();
565 float locx = localDir.
x();
566 float locy = localDir.
y();
567 float locz = localDir.
z();
578 if ( StripSubdet.
stereo() == 0 )
589 if ( strip_geom_det_unit !=
NULL )
691 if ( cluster->getSplitClusterError() > 0.0 )
700 const auto & stripCharges = cluster->amplitudes();
702 for (
unsigned int i = 0;
i < stripCharges.size(); ++
i)
704 charge += stripCharges[
i];
712 float mindist = 999999.9;
719 if ( !matched.empty())
725 int strip_nprimaries = 0;
726 int current_index = 0;
728 for ( vector<PSimHit>::const_iterator
m=matched.begin();
m<matched.end(); ++
m)
732 if ( (*m).processType() == 2 )
735 if ( current_index == 1 )
740 else if ( current_index == 2 )
745 else if ( current_index == 3 )
750 else if ( current_index == 4 )
755 else if ( current_index == 5 )
762 float dist =
abs( (hit1d)->localPosition().
x() - (*m).localPosition().x() );
836 auto & stripCharges = cluster->amplitudes();
838 for (
unsigned int i = 0;
i < stripCharges.size(); ++
i)
840 charge += stripCharges[
i];
847 float mindist = 999999.9;
854 if ( !matched.empty())
860 for ( vector<PSimHit>::const_iterator
m=matched.begin();
m<matched.end(); ++
m)
862 float dist =
abs( (hit2d)->localPosition().
x() - (*m).localPosition().x() );
926 for (TrackerGeometry::DetContainer::const_iterator it = pDD->dets().begin(); it != pDD->dets().end(); it++)
928 DetId detId = ((*it)->geographicalId());
931 if (dsmatch == recHitColl->end())
continue;
937 std::vector<PSimHit> matched;
940 for ( ; pixeliter != pixelrechitRangeIteratorEnd; ++pixeliter)
946 if ( matched.empty() )
948 cout <<
"SiPixelErrorEstimation::analyze: rechits without associated simhit !!!!!!!"
1091 cout <<
"SiPixelErrorEstimation::analyze: Not in a pixel detector !!!!!" << endl;
1100 if ( pixeliter->cluster()->getSplitClusterErrorX() > 0.0 &&
1101 pixeliter->cluster()->getSplitClusterErrorY() > 0.0 )
1114 const int maxPixelCol = pixeliter->cluster()->maxPixelCol();
1115 const int maxPixelRow = pixeliter->cluster()->maxPixelRow();
1116 const int minPixelCol = pixeliter->cluster()->minPixelCol();
1117 const int minPixelRow = pixeliter->cluster()->minPixelRow();
1157 if ( tmp_nrows == 80 )
1159 else if ( tmp_nrows == 160 )
1162 cout <<
"-------------------------------------------------- Wrong module size !!!" << endl;
1182 else std::cout <<
"We are not in the pixel detector" << (int)detId.
subdetId() << endl;
1197 bool found_hit_from_generated_particle =
false;
1200 float closest_dist = 99999.9;
1201 std::vector<PSimHit>::const_iterator closest_simhit = matched.begin();
1203 for (std::vector<PSimHit>::const_iterator
m = matched.begin();
m < matched.end();
m++)
1207 int pid = (*m).particleType();
1212 float simhitx = 0.5 * ( (*m).entryPoint().x() + (*m).exitPoint().x() );
1213 float simhity = 0.5 * ( (*m).entryPoint().y() + (*m).exitPoint().y() );
1215 float x_res = simhitx -
rechitx;
1216 float y_res = simhity -
rechity;
1218 float dist =
sqrt( x_res*x_res + y_res*y_res );
1220 if ( dist < closest_dist )
1222 closest_dist = dist;
1224 found_hit_from_generated_particle =
true;
1230 if (
checkType_ && !found_hit_from_generated_particle )
1233 all_x1 = (*closest_simhit).entryPoint().x();
1234 all_y1 = (*closest_simhit).entryPoint().y();
1235 all_z1 = (*closest_simhit).entryPoint().z();
1236 all_x2 = (*closest_simhit).exitPoint().x();
1237 all_y2 = (*closest_simhit).exitPoint().y();
1238 all_z2 = (*closest_simhit).exitPoint().z();
1241 (*closest_simhit).entryPoint().y(),
1242 (*closest_simhit).entryPoint().z() ) );
1245 (*closest_simhit).exitPoint().y(),
1246 (*closest_simhit).exitPoint().z() ) );
1256 (*closest_simhit).entryPoint().y(),
1257 (*closest_simhit).entryPoint().z() ) );
1260 (*closest_simhit).exitPoint().y(),
1261 (*closest_simhit).exitPoint().z() ) );
1298 all_simpx = (*closest_simhit).momentumAtEntry().x();
1299 all_simpy = (*closest_simhit).momentumAtEntry().y();
1300 all_simpz = (*closest_simhit).momentumAtEntry().z();
1301 all_eloss = (*closest_simhit).energyLoss();
1304 all_pidhit = (*closest_simhit).particleType();
1305 all_trkid = (*closest_simhit).trackId();
1314 SimTrackContainer::const_iterator trksiter;
1315 for (trksiter = trks.begin(); trksiter != trks.end(); trksiter++)
1316 if ( (
int)trksiter->trackId() ==
all_trkid )
1329 const std::vector<SiPixelCluster::Pixel>& pixvector = clust->pixels();
1330 for (
int i=0;
i<(int)pixvector.size(); ++
i)
1367 reco::TrackCollection::const_iterator tciter;
1369 if ( tracks->size() > 0 )
1372 for ( tciter=tracks->begin(); tciter!=tracks->end(); ++tciter)
1443 error = (*it)->localPositionError();
1456 if ( matchedhit->
cluster()->getSplitClusterErrorX() > 0.0 &&
1457 matchedhit->
cluster()->getSplitClusterErrorY() > 0.0 )
1476 nsimhit = (int)matched.size();
1478 if ( !matched.empty() )
1481 float distx, disty, dist;
1482 bool found_hit_from_generated_particle =
false;
1484 int n_assoc_muon = 0;
1486 vector<PSimHit>::const_iterator closestit = matched.begin();
1487 for (vector<PSimHit>::const_iterator
m=matched.begin();
m<matched.end(); ++
m)
1491 int pid = (*m).particleType();
1496 float simhitx = 0.5 * ( (*m).entryPoint().x() + (*m).exitPoint().x() );
1497 float simhity = 0.5 * ( (*m).entryPoint().y() + (*m).exitPoint().y() );
1499 distx = fabs(
rechitx - simhitx);
1500 disty = fabs(
rechity - simhity);
1501 dist =
sqrt( distx*distx + disty*disty );
1503 if ( dist < mindist )
1509 found_hit_from_generated_particle =
true;
1515 if (
checkType_ && !found_hit_from_generated_particle )
1524 DetId detId = (*it)->geographicalId();
1531 pidhit = (*closestit).particleType();
1532 simproc = (int)(*closestit).processType();
1534 simhitx = 0.5*( (*closestit).entryPoint().x() + (*closestit).exitPoint().x() );
1535 simhity = 0.5*( (*closestit).entryPoint().y() + (*closestit).exitPoint().y() );
1542 float simhitpx = (*closestit).momentumAtEntry().x();
1543 float simhitpy = (*closestit).momentumAtEntry().y();
1544 float simhitpz = (*closestit).momentumAtEntry().z();
1546 beta = atan2(simhitpz, simhitpy) * radtodeg;
1547 alpha = atan2(simhitpz, simhitpx) * radtodeg;
1553 float locx = simhitpx;
1554 float locy = simhitpy;
1555 float locz = simhitpz;
1557 bool isFlipped =
false;
1565 trk_alpha = acos(locx/
sqrt(locx*locx+locz*locz)) * radtodeg;
1569 trk_beta = acos(locy/
sqrt(locy*locy+locz*locz)) * radtodeg;
1572 phi = tciter->momentum().phi() /
math_pi*180.0;
1573 eta = tciter->momentum().eta();
1575 const int maxPixelCol = (*matchedhit).cluster()->maxPixelCol();
1576 const int maxPixelRow = (*matchedhit).cluster()->maxPixelRow();
1577 const int minPixelCol = (*matchedhit).cluster()->minPixelCol();
1578 const int minPixelRow = (*matchedhit).cluster()->minPixelRow();
1610 if ( tmp_nrows == 80 )
1612 else if ( tmp_nrows == 160 )
1615 cout <<
"-------------------------------------------------- Wrong module size !!!" << endl;
1654 cout <<
"---------------- RecHit with no associated SimHit !!! -------------------------- " << endl;
1681 cout <<
"---------------------------------------------- Not a pixel detector !!!!!!!!!!!!!!" << endl;
1688 float xcenter = cl.
x();
1689 float ycenter = cl.
y();
1697 float gp_mod =
sqrt( gp.
x()*gp.
x() + gp.
y()*gp.
y() + gp.
z()*gp.
z() );
1700 float gpx = gp.
x()/gp_mod;
1701 float gpy = gp.
y()/gp_mod;
1702 float gpz = gp.
z()/gp_mod;
1729 float gv_dot_gvx = gv.
x()*gvx.
x() + gv.
y()*gvx.
y() + gv.
z()*gvx.
z();
1730 float gv_dot_gvy = gv.
x()*gvy.
x() + gv.
y()*gvy.
y() + gv.
z()*gvy.
z();
1731 float gv_dot_gvz = gv.
x()*gvz.
x() + gv.
y()*gvz.
y() + gv.
z()*gvz.
z();
1734 alpha = atan2( gv_dot_gvz, gv_dot_gvx );
1735 beta = atan2( gv_dot_gvz, gv_dot_gvy );
ClusterRef cluster() const
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
T getParameter(std::string const &) const
EventNumber_t event() const
T getUntrackedParameter(std::string const &, T const &) const
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
bool tobIsDoubleSide(const DetId &id) const
float clusterProbability(unsigned int flags=0) const
bool tibIsDoubleSide(const DetId &id) const
unsigned int tibLayer(const DetId &id) const
unsigned int tibString(const DetId &id) const
int strip_tib_is_internal_string
virtual LocalPoint localPosition(const MeasurementPoint &) const =0
TTree * ttree_track_hits_
bool tobIsStereo(const DetId &id) const
virtual int ncolumns() const =0
TrackerHitAssociator::Config trackerHitAssociatorConfig_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
int strip_tib_is_z_minus_side
int strip_tob_is_z_minus_side
#define DEFINE_FWK_MODULE(type)
unsigned int pxfDisk(const DetId &id) const
edm::EDGetTokenT< reco::TrackCollection > tTrackCollection
unsigned int pxbLadder(const DetId &id) const
std::vector< Track > TrackCollection
collection of Tracks
virtual int nrows() const =0
virtual ~SiPixelErrorEstimation()
unsigned int pxbModule(const DetId &id) const
LocalVector toLocal(const reco::Track::Vector &v, const Surface &s)
int strip_tob_is_z_plus_side
bool tobIsRPhi(const DetId &id) const
const Plane & surface() const
The nominal surface of the GeomDet.
int strip_tob_is_double_side
bool tibIsZPlusSide(const DetId &id) const
unsigned int tibSide(const DetId &id) const
int strip_tob_module_number
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
virtual bool isItEdgePixelInX(int ixbin) const =0
bool tibIsExternalString(const DetId &id) const
bool tibIsRPhi(const DetId &id) const
edm::EDGetTokenT< edm::SimTrackContainer > tSimTrackContainer
virtual bool containsBigPixelInY(int iymin, int iymax) const =0
bool tibIsZMinusSide(const DetId &id) const
Local3DPoint localPosition() const
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
bool tobIsZPlusSide(const DetId &id) const
unsigned int tobSide(const DetId &id) const
bool tobIsZMinusSide(const DetId &id) const
Abs< T >::type abs(const T &t)
virtual bool containsBigPixelInX(int ixmin, int ixmax) const =0
SiPixelErrorEstimation(const edm::ParameterSet &)
ClusterRef cluster() const
int strip_tob_layer_number
virtual MeasurementPoint measurementPosition(const LocalPoint &) const =0
LocalVector momentum() const
Momentum vector in the local frame.
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
unsigned int tibModule(const DetId &id) const
unsigned int pxfModule(const DetId &id) const
unsigned int pxbLayer(const DetId &id) const
edm::EDGetTokenT< std::vector< Trajectory > > tTrajectory
Point3DBase< float, LocalTag > Local3DPoint
Detector identifier class for the strip tracker.
unsigned int stereo() const
stereo
virtual TrackingRecHit const * hit() const
float all_pixel_clst_err_y
int strip_tib_is_z_plus_side
T const * product() const
void computeAnglesFromDetPosition(const SiPixelCluster &cl, const GeomDetUnit &det, float &alpha, float &beta)
ClusterRef cluster() const
bool tibIsStereo(const DetId &id) const
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
T const * product() const
unsigned short processType() const
unsigned int tobModule(const DetId &id) const
int strip_tib_string_number
Pixel cluster – collection of neighboring pixels above threshold.
virtual bool isItEdgePixelInY(int iybin) const =0
static int position[264][3]
int strip_tib_module_number
unsigned int pxfSide(const DetId &id) const
std::vector< PSimHit > associateHit(const TrackingRecHit &thit) const
int strip_tib_layer_number
edm::EDGetTokenT< SiPixelRecHitCollection > tPixRecHitCollection
TTree * ttree_track_hits_strip_
int strip_tib_is_external_string
unsigned int tobRod(const DetId &id) const
float all_pixel_clst_err_x
ModuleGeometry moduleGeometry() const
virtual void analyze(const edm::Event &, const edm::EventSetup &)
bool tibIsInternalString(const DetId &id) const
const PositionType & position() const
std::vector< SimTrack > SimTrackContainer
int strip_tib_is_double_side
tuple size
Write out results.
unsigned int pxfPanel(const DetId &id) const
unsigned int pxfBlade(const DetId &id) const
unsigned int tobLayer(const DetId &id) const
TrackingRecHitCollection::base::const_iterator trackingRecHit_iterator
iterator over a vector of reference to TrackingRecHit in the same collection
unsigned int tibOrder(const DetId &id) const