37 ttree_track_hits_(0), ttree_track_hits_strip_(0)
70 ttree_track_hits_strip_->Branch(
"strip_rechitx", &
strip_rechitx,
"strip_rechitx/F" , bufsize);
71 ttree_track_hits_strip_->Branch(
"strip_rechity", &
strip_rechity,
"strip_rechity/F" , bufsize);
72 ttree_track_hits_strip_->Branch(
"strip_rechitz", &
strip_rechitz,
"strip_rechitz/F" , bufsize);
74 ttree_track_hits_strip_->Branch(
"strip_rechiterrx", &
strip_rechiterrx,
"strip_rechiterrx/F" , bufsize);
75 ttree_track_hits_strip_->Branch(
"strip_rechiterry", &
strip_rechiterry,
"strip_rechiterry/F" , bufsize);
77 ttree_track_hits_strip_->Branch(
"strip_rechitresx", &
strip_rechitresx,
"strip_rechitresx/F" , bufsize);
79 ttree_track_hits_strip_->Branch(
"strip_rechitresx2", &
strip_rechitresx2,
"strip_rechitresx2/F" , bufsize);
82 ttree_track_hits_strip_->Branch(
"strip_rechitresy", &
strip_rechitresy,
"strip_rechitresy/F" , bufsize);
84 ttree_track_hits_strip_->Branch(
"strip_rechitpullx", &
strip_rechitpullx,
"strip_rechitpullx/F", bufsize);
85 ttree_track_hits_strip_->Branch(
"strip_rechitpully", &
strip_rechitpully,
"strip_rechitpully/F", bufsize);
87 ttree_track_hits_strip_->Branch(
"strip_is_stereo", &
strip_is_stereo,
"strip_is_stereo/I", bufsize);
88 ttree_track_hits_strip_->Branch(
"strip_hit_type" , &
strip_hit_type ,
"strip_hit_type/I" , bufsize);
89 ttree_track_hits_strip_->Branch(
"detector_type" , &
detector_type ,
"detector_type/I" , bufsize);
91 ttree_track_hits_strip_->Branch(
"strip_trk_pt" , &
strip_trk_pt ,
"strip_trk_pt/F" , bufsize);
92 ttree_track_hits_strip_->Branch(
"strip_cotalpha" , &
strip_cotalpha ,
"strip_cotalpha/F" , bufsize);
93 ttree_track_hits_strip_->Branch(
"strip_cotbeta" , &
strip_cotbeta ,
"strip_cotbeta/F" , bufsize);
94 ttree_track_hits_strip_->Branch(
"strip_locbx" , &
strip_locbx ,
"strip_locbx/F" , bufsize);
95 ttree_track_hits_strip_->Branch(
"strip_locby" , &
strip_locby ,
"strip_locby/F" , bufsize);
96 ttree_track_hits_strip_->Branch(
"strip_locbz" , &
strip_locbz ,
"strip_locbz/F" , bufsize);
97 ttree_track_hits_strip_->Branch(
"strip_charge" , &
strip_charge ,
"strip_charge/F" , bufsize);
98 ttree_track_hits_strip_->Branch(
"strip_size" , &
strip_size ,
"strip_size/I" , bufsize);
101 ttree_track_hits_strip_->Branch(
"strip_edge" , &
strip_edge ,
"strip_edge/I" , bufsize);
102 ttree_track_hits_strip_->Branch(
"strip_nsimhit", &
strip_nsimhit,
"strip_nsimhit/I" , bufsize);
103 ttree_track_hits_strip_->Branch(
"strip_pidhit" , &
strip_pidhit ,
"strip_pidhit/I" , bufsize);
104 ttree_track_hits_strip_->Branch(
"strip_simproc", &
strip_simproc,
"strip_simproc/I" , bufsize);
107 ttree_track_hits_strip_->Branch(
"strip_subdet_id" , &
strip_subdet_id ,
"strip_subdet_id/I" , bufsize);
109 ttree_track_hits_strip_->Branch(
"strip_tib_layer" , &
strip_tib_layer ,
"strip_tib_layer/I" , bufsize);
110 ttree_track_hits_strip_->Branch(
"strip_tib_module" , &
strip_tib_module ,
"strip_tib_module/I" , bufsize);
111 ttree_track_hits_strip_->Branch(
"strip_tib_order" , &
strip_tib_order ,
"strip_tib_order/I" , bufsize);
112 ttree_track_hits_strip_->Branch(
"strip_tib_side" , &
strip_tib_side ,
"strip_tib_side/I" , bufsize);
113 ttree_track_hits_strip_->Branch(
"strip_tib_is_double_side" , &
strip_tib_is_double_side ,
"strip_tib_is_double_side/I" , bufsize);
114 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);
115 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);
116 ttree_track_hits_strip_->Branch(
"strip_tib_layer_number" , &
strip_tib_layer_number ,
"strip_tib_layer_number/I" , bufsize);
117 ttree_track_hits_strip_->Branch(
"strip_tib_string_number" , &
strip_tib_string_number ,
"strip_tib_string_number/I" , bufsize);
118 ttree_track_hits_strip_->Branch(
"strip_tib_module_number" , &
strip_tib_module_number ,
"strip_tib_module_number/I" , bufsize);
119 ttree_track_hits_strip_->Branch(
"strip_tib_is_internal_string", &
strip_tib_is_internal_string,
"strip_tib_is_internal_string/I", bufsize);
120 ttree_track_hits_strip_->Branch(
"strip_tib_is_external_string", &
strip_tib_is_external_string,
"strip_tib_is_external_string/I", bufsize);
121 ttree_track_hits_strip_->Branch(
"strip_tib_is_rphi" , &
strip_tib_is_rphi ,
"strip_tib_is_rphi/I" , bufsize);
122 ttree_track_hits_strip_->Branch(
"strip_tib_is_stereo" , &
strip_tib_is_stereo ,
"strip_tib_is_stereo/I" , bufsize);
123 ttree_track_hits_strip_->Branch(
"strip_tob_layer" , &
strip_tob_layer ,
"strip_tob_layer/I" , bufsize);
124 ttree_track_hits_strip_->Branch(
"strip_tob_module" , &
strip_tob_module ,
"strip_tob_module/I" , bufsize);
125 ttree_track_hits_strip_->Branch(
"strip_tob_side" , &
strip_tob_side ,
"strip_tob_side/I" , bufsize);
126 ttree_track_hits_strip_->Branch(
"strip_tob_is_double_side" , &
strip_tob_is_double_side ,
"strip_tob_is_double_side/I" , bufsize);
127 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);
128 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);
129 ttree_track_hits_strip_->Branch(
"strip_tob_layer_number" , &
strip_tob_layer_number ,
"strip_tob_layer_number/I" , bufsize);
130 ttree_track_hits_strip_->Branch(
"strip_tob_rod_number" , &
strip_tob_rod_number ,
"strip_tob_rod_number/I" , bufsize);
131 ttree_track_hits_strip_->Branch(
"strip_tob_module_number" , &
strip_tob_module_number ,
"strip_tob_module_number/I" , bufsize);
134 ttree_track_hits_strip_->Branch(
"strip_prob", &
strip_prob,
"strip_prob/F" , bufsize);
135 ttree_track_hits_strip_->Branch(
"strip_qbin", &
strip_qbin,
"strip_qbin/I", bufsize);
137 ttree_track_hits_strip_->Branch(
"strip_nprm", &
strip_nprm,
"strip_nprm/I", bufsize);
139 ttree_track_hits_strip_->Branch(
"strip_pidhit1" , &
strip_pidhit1 ,
"strip_pidhit1/I" , bufsize);
140 ttree_track_hits_strip_->Branch(
"strip_simproc1", &
strip_simproc1,
"strip_simproc1/I" , bufsize);
142 ttree_track_hits_strip_->Branch(
"strip_pidhit2" , &
strip_pidhit2 ,
"strip_pidhit2/I" , bufsize);
143 ttree_track_hits_strip_->Branch(
"strip_simproc2", &
strip_simproc2,
"strip_simproc2/I" , bufsize);
145 ttree_track_hits_strip_->Branch(
"strip_pidhit3" , &
strip_pidhit3 ,
"strip_pidhit3/I" , bufsize);
146 ttree_track_hits_strip_->Branch(
"strip_simproc3", &
strip_simproc3,
"strip_simproc3/I" , bufsize);
148 ttree_track_hits_strip_->Branch(
"strip_pidhit4" , &
strip_pidhit4 ,
"strip_pidhit4/I" , bufsize);
149 ttree_track_hits_strip_->Branch(
"strip_simproc4", &
strip_simproc4,
"strip_simproc4/I" , bufsize);
151 ttree_track_hits_strip_->Branch(
"strip_pidhit5" , &
strip_pidhit5 ,
"strip_pidhit5/I" , bufsize);
152 ttree_track_hits_strip_->Branch(
"strip_simproc5", &
strip_simproc5,
"strip_simproc5/I" , bufsize);
154 ttree_track_hits_strip_->Branch(
"strip_split", &
strip_split,
"strip_split/I" , bufsize);
156 ttree_track_hits_strip_->Branch(
"strip_clst_err_x", &
strip_clst_err_x,
"strip_clst_err_x/F" , bufsize);
157 ttree_track_hits_strip_->Branch(
"strip_clst_err_y", &
strip_clst_err_y,
"strip_clst_err_y/F" , bufsize);
384 cout <<
"evt = " <<
evt << endl;
387 float radtodeg = 180.0 /
math_pi;
391 float mindist = 999999.9;
393 std::vector<PSimHit> matched;
420 for ( vector<Trajectory>::const_iterator it = trajCollectionHandle->begin(); it!=trajCollectionHandle->end(); ++it )
423 vector<TrajectoryMeasurement> tmColl = it->measurements();
424 for ( vector<TrajectoryMeasurement>::const_iterator itTraj = tmColl.begin(); itTraj!=tmColl.end(); ++itTraj )
427 if ( !itTraj->updatedState().isValid() )
517 if ( trans_trk_rec_hit_point ==
NULL )
522 if ( trk_rec_hit ==
NULL )
525 DetId detid = (trk_rec_hit)->geographicalId();
536 if ( !matchedhit && !hit2d && !hit1d )
539 position = (trk_rec_hit)->localPosition();
540 error = (trk_rec_hit)->localPositionError();
564 float locx = localDir.
x();
565 float locy = localDir.
y();
566 float locz = localDir.
z();
577 if ( StripSubdet.
stereo() == 0 )
588 if ( strip_geom_det_unit !=
NULL )
690 if ( cluster->getSplitClusterError() > 0.0 )
699 const std::vector<uint8_t>& stripCharges = cluster->amplitudes();
701 for (
unsigned int i = 0;
i < stripCharges.size(); ++
i)
703 charge += stripCharges.at(
i);
711 float mindist = 999999.9;
718 if ( !matched.empty())
724 int strip_nprimaries = 0;
725 int current_index = 0;
727 for ( vector<PSimHit>::const_iterator
m=matched.begin();
m<matched.end(); ++
m)
731 if ( (*m).processType() == 2 )
734 if ( current_index == 1 )
739 else if ( current_index == 2 )
744 else if ( current_index == 3 )
749 else if ( current_index == 4 )
754 else if ( current_index == 5 )
761 float dist =
abs( (hit1d)->localPosition().
x() - (*m).localPosition().x() );
835 const std::vector<uint8_t>& stripCharges = cluster->amplitudes();
837 for (
unsigned int i = 0;
i < stripCharges.size(); ++
i)
839 charge += stripCharges.at(
i);
846 float mindist = 999999.9;
853 if ( !matched.empty())
859 for ( vector<PSimHit>::const_iterator
m=matched.begin();
m<matched.end(); ++
m)
861 float dist =
abs( (hit2d)->localPosition().
x() - (*m).localPosition().x() );
925 for (TrackerGeometry::DetContainer::const_iterator it = pDD->dets().begin(); it != pDD->dets().end(); it++)
927 DetId detId = ((*it)->geographicalId());
930 if (dsmatch == recHitColl->end())
continue;
936 std::vector<PSimHit> matched;
939 for ( ; pixeliter != pixelrechitRangeIteratorEnd; ++pixeliter)
945 if ( matched.empty() )
947 cout <<
"SiPixelErrorEstimation::analyze: rechits without associated simhit !!!!!!!"
1090 cout <<
"SiPixelErrorEstimation::analyze: Not in a pixel detector !!!!!" << endl;
1099 if ( pixeliter->cluster()->getSplitClusterErrorX() > 0.0 &&
1100 pixeliter->cluster()->getSplitClusterErrorY() > 0.0 )
1113 const int maxPixelCol = pixeliter->cluster()->maxPixelCol();
1114 const int maxPixelRow = pixeliter->cluster()->maxPixelRow();
1115 const int minPixelCol = pixeliter->cluster()->minPixelCol();
1116 const int minPixelRow = pixeliter->cluster()->minPixelRow();
1156 if ( tmp_nrows == 80 )
1158 else if ( tmp_nrows == 160 )
1161 cout <<
"-------------------------------------------------- Wrong module size !!!" << endl;
1181 else std::cout <<
"We are not in the pixel detector" << (int)detId.
subdetId() << endl;
1196 bool found_hit_from_generated_particle =
false;
1199 float closest_dist = 99999.9;
1200 std::vector<PSimHit>::const_iterator closest_simhit = matched.begin();
1202 for (std::vector<PSimHit>::const_iterator
m = matched.begin();
m < matched.end();
m++)
1206 int pid = (*m).particleType();
1211 float simhitx = 0.5 * ( (*m).entryPoint().x() + (*m).exitPoint().x() );
1212 float simhity = 0.5 * ( (*m).entryPoint().y() + (*m).exitPoint().y() );
1214 float x_res = simhitx -
rechitx;
1215 float y_res = simhity -
rechity;
1217 float dist =
sqrt( x_res*x_res + y_res*y_res );
1219 if ( dist < closest_dist )
1221 closest_dist = dist;
1223 found_hit_from_generated_particle =
true;
1229 if (
checkType_ && !found_hit_from_generated_particle )
1232 all_x1 = (*closest_simhit).entryPoint().x();
1233 all_y1 = (*closest_simhit).entryPoint().y();
1234 all_z1 = (*closest_simhit).entryPoint().z();
1235 all_x2 = (*closest_simhit).exitPoint().x();
1236 all_y2 = (*closest_simhit).exitPoint().y();
1237 all_z2 = (*closest_simhit).exitPoint().z();
1240 (*closest_simhit).entryPoint().y(),
1241 (*closest_simhit).entryPoint().z() ) );
1244 (*closest_simhit).exitPoint().y(),
1245 (*closest_simhit).exitPoint().z() ) );
1255 (*closest_simhit).entryPoint().y(),
1256 (*closest_simhit).entryPoint().z() ) );
1259 (*closest_simhit).exitPoint().y(),
1260 (*closest_simhit).exitPoint().z() ) );
1297 all_simpx = (*closest_simhit).momentumAtEntry().x();
1298 all_simpy = (*closest_simhit).momentumAtEntry().y();
1299 all_simpz = (*closest_simhit).momentumAtEntry().z();
1300 all_eloss = (*closest_simhit).energyLoss();
1303 all_pidhit = (*closest_simhit).particleType();
1304 all_trkid = (*closest_simhit).trackId();
1313 SimTrackContainer::const_iterator trksiter;
1314 for (trksiter = trks.begin(); trksiter != trks.end(); trksiter++)
1315 if ( (
int)trksiter->trackId() ==
all_trkid )
1328 const std::vector<SiPixelCluster::Pixel>& pixvector = clust->pixels();
1329 for (
int i=0;
i<(int)pixvector.size(); ++
i)
1366 reco::TrackCollection::const_iterator tciter;
1368 if ( tracks->size() > 0 )
1371 for ( tciter=tracks->begin(); tciter!=tracks->end(); ++tciter)
1442 error = (*it)->localPositionError();
1455 if ( matchedhit->
cluster()->getSplitClusterErrorX() > 0.0 &&
1456 matchedhit->
cluster()->getSplitClusterErrorY() > 0.0 )
1475 nsimhit = (int)matched.size();
1477 if ( !matched.empty() )
1480 float distx, disty, dist;
1481 bool found_hit_from_generated_particle =
false;
1483 int n_assoc_muon = 0;
1485 vector<PSimHit>::const_iterator closestit = matched.begin();
1486 for (vector<PSimHit>::const_iterator
m=matched.begin();
m<matched.end(); ++
m)
1490 int pid = (*m).particleType();
1495 float simhitx = 0.5 * ( (*m).entryPoint().x() + (*m).exitPoint().x() );
1496 float simhity = 0.5 * ( (*m).entryPoint().y() + (*m).exitPoint().y() );
1498 distx = fabs(
rechitx - simhitx);
1499 disty = fabs(
rechity - simhity);
1500 dist =
sqrt( distx*distx + disty*disty );
1502 if ( dist < mindist )
1508 found_hit_from_generated_particle =
true;
1514 if (
checkType_ && !found_hit_from_generated_particle )
1523 DetId detId = (*it)->geographicalId();
1530 pidhit = (*closestit).particleType();
1531 simproc = (int)(*closestit).processType();
1533 simhitx = 0.5*( (*closestit).entryPoint().x() + (*closestit).exitPoint().x() );
1534 simhity = 0.5*( (*closestit).entryPoint().y() + (*closestit).exitPoint().y() );
1541 float simhitpx = (*closestit).momentumAtEntry().x();
1542 float simhitpy = (*closestit).momentumAtEntry().y();
1543 float simhitpz = (*closestit).momentumAtEntry().z();
1545 beta = atan2(simhitpz, simhitpy) * radtodeg;
1546 alpha = atan2(simhitpz, simhitpx) * radtodeg;
1552 float locx = simhitpx;
1553 float locy = simhitpy;
1554 float locz = simhitpz;
1556 bool isFlipped =
false;
1564 trk_alpha = acos(locx/
sqrt(locx*locx+locz*locz)) * radtodeg;
1568 trk_beta = acos(locy/
sqrt(locy*locy+locz*locz)) * radtodeg;
1571 phi = tciter->momentum().phi() /
math_pi*180.0;
1572 eta = tciter->momentum().eta();
1574 const int maxPixelCol = (*matchedhit).cluster()->maxPixelCol();
1575 const int maxPixelRow = (*matchedhit).cluster()->maxPixelRow();
1576 const int minPixelCol = (*matchedhit).cluster()->minPixelCol();
1577 const int minPixelRow = (*matchedhit).cluster()->minPixelRow();
1609 if ( tmp_nrows == 80 )
1611 else if ( tmp_nrows == 160 )
1614 cout <<
"-------------------------------------------------- Wrong module size !!!" << endl;
1653 cout <<
"---------------- RecHit with no associated SimHit !!! -------------------------- " << endl;
1680 cout <<
"---------------------------------------------- Not a pixel detector !!!!!!!!!!!!!!" << endl;
1687 float xcenter = cl.
x();
1688 float ycenter = cl.
y();
1696 float gp_mod =
sqrt( gp.
x()*gp.
x() + gp.
y()*gp.
y() + gp.
z()*gp.
z() );
1699 float gpx = gp.
x()/gp_mod;
1700 float gpy = gp.
y()/gp_mod;
1701 float gpz = gp.
z()/gp_mod;
1728 float gv_dot_gvx = gv.
x()*gvx.
x() + gv.
y()*gvx.
y() + gv.
z()*gvx.
z();
1729 float gv_dot_gvy = gv.
x()*gvy.
x() + gv.
y()*gvy.
y() + gv.
z()*gvy.
z();
1730 float gv_dot_gvz = gv.
x()*gvz.
x() + gv.
y()*gvz.
y() + gv.
z()*gvz.
z();
1733 alpha = atan2( gv_dot_gvz, gv_dot_gvx );
1734 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
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
unsigned int tibOrder(const DetId &id) const