115 const std::vector<Trajectory>&);
116 void insertMeasurement(std::multimap<
const uint32_t, std::pair<LocalPoint, double> >&,
123 const std::vector<Trajectory>&);
129 void insertMeasurement(std::multimap<
const uint32_t, std::pair<std::pair<float, float>,
int> >&,
136 std::map<uint32_t, float>
delay(
const std::vector<std::string>&);
168 std::multimap<const uint32_t, const FedChannelConnection*>
connections_;
229 : siStripClusterInfo_(consumesCollector(), std::
string(
"")),
278 ntrajs_ =
new uint32_t[trackSize];
283 for (
size_t i = 0;
i < trackSize; ++
i) {
296 clusters_ = dir->
make<TTree>(
"clusters",
"cluster information");
297 clusters_->Branch(
"eventid", &
eventid_,
"eventid/i");
298 clusters_->Branch(
"runid", &
runid_,
"runid/i");
299 for (
size_t i = 0;
i < trackSize; ++
i) {
302 sprintf(buffer1,
"trackid%lu", (
unsigned long)
i);
303 sprintf(buffer2,
"trackid%lu/i", (
unsigned long)i);
304 clusters_->Branch(buffer1,
trackid_ + i, buffer2);
306 clusters_->Branch(
"onTrack", &
onTrack_,
"onTrack/O");
307 clusters_->Branch(
"clWidth", &
clWidth_,
"clWidth/F");
308 clusters_->Branch(
"clPosition", &
clPosition_,
"clPosition/F");
309 clusters_->Branch(
"clglobalX", &
globalX_,
"clglobalX/F");
310 clusters_->Branch(
"clglobalY", &
globalY_,
"clglobalY/F");
311 clusters_->Branch(
"clglobalZ", &
globalZ_,
"clglobalZ/F");
312 clusters_->Branch(
"angle", &
angle_,
"angle/F");
313 clusters_->Branch(
"thickness", &
thickness_,
"thickness/F");
314 clusters_->Branch(
"maxCharge", &
maxCharge_,
"maxCharge/F");
320 clusters_->Branch(
"clBareCharge", &
clBareCharge_,
"clBareCharge/F");
321 clusters_->Branch(
"clBareNoise", &
clBareNoise_,
"clBareNoise/F");
322 clusters_->Branch(
"stripLength", &
stripLength_,
"stripLength/F");
323 clusters_->Branch(
"detid", &
detid_,
"detid/i");
324 clusters_->Branch(
"lldChannel", &
lldChannel_,
"lldChannel/s");
327 pixclusters_ = dir->
make<TTree>(
"pixclusters",
"pixel cluster information");
330 for (
size_t i = 0;
i < trackSize; ++
i) {
333 sprintf(buffer1,
"trackid%lu", (
unsigned long)
i);
334 sprintf(buffer2,
"trackid%lu/i", (
unsigned long)i);
353 for (
size_t i = 0;
i < trackSize; ++
i) {
356 sprintf(buffer1,
"tracks%lu", (
unsigned long)
i);
357 sprintf(buffer2,
"track%lu information", (
unsigned long)i);
358 TTree* thetracks_ = dir->
make<TTree>(buffer1, buffer2);
359 sprintf(buffer1,
"trackid%lu", (
unsigned long)i);
360 sprintf(buffer2,
"trackid%lu/i", (
unsigned long)i);
362 thetracks_->Branch(
"eventid", &
eventid_,
"eventid/i");
363 thetracks_->Branch(
"runid", &
runid_,
"runid/i");
364 thetracks_->Branch(
"chi2", &
chi2_,
"chi2/F");
365 thetracks_->Branch(
"eta", &
eta_,
"eta/F");
366 thetracks_->Branch(
"etaerr", &
etaerr_,
"etaerr/F");
367 thetracks_->Branch(
"phi", &
phi_,
"phi/F");
368 thetracks_->Branch(
"phierr", &
phierr_,
"phierr/F");
369 thetracks_->Branch(
"dedx1", &
dedx1_,
"dedx1/F");
370 thetracks_->Branch(
"dedx2", &
dedx2_,
"dedx2/F");
371 thetracks_->Branch(
"dedx3", &
dedx3_,
"dedx3/F");
372 thetracks_->Branch(
"dedxNoM", &
dedxNoM_,
"dedxNoM/i");
373 thetracks_->Branch(
"charge", &
charge_,
"charge/F");
374 thetracks_->Branch(
"quality", &
quality_,
"quality/i");
375 thetracks_->Branch(
"foundhits", &
foundhits_,
"foundhits/i");
376 thetracks_->Branch(
"lostHits", &
lostHits_,
"lostHits/i");
377 thetracks_->Branch(
"foundhitsStrips", &
foundhitsStrips_,
"foundhitsStrips/i");
378 thetracks_->Branch(
"foundhitsPixels", &
foundhitsPixels_,
"foundhitsPixels/i");
379 thetracks_->Branch(
"losthitsStrips", &
losthitsStrips_,
"losthitsStrips/i");
380 thetracks_->Branch(
"losthitsPixels", &
losthitsPixels_,
"losthitsPixels/i");
381 thetracks_->Branch(
"p", &
p_,
"p/F");
382 thetracks_->Branch(
"pt", &
pt_,
"pt/F");
383 thetracks_->Branch(
"pterr", &
pterr_,
"pterr/F");
384 thetracks_->Branch(
"ndof", &
ndof_,
"ndof/i");
385 thetracks_->Branch(
"dz", &
dz_,
"dz/F");
386 thetracks_->Branch(
"dzerr", &
dzerr_,
"dzerr/F");
387 thetracks_->Branch(
"dzCorr", &
dzCorr_,
"dzCorr/F");
388 thetracks_->Branch(
"dxy", &
dxy_,
"dxy/F");
389 thetracks_->Branch(
"dxyerr", &
dxyerr_,
"dxyerr/F");
390 thetracks_->Branch(
"dxyCorr", &
dxyCorr_,
"dxyCorr/F");
391 thetracks_->Branch(
"qoverp", &
qoverp_,
"qoverp/F");
392 thetracks_->Branch(
"xPCA", &
xPCA_,
"xPCA/F");
393 thetracks_->Branch(
"yPCA", &
yPCA_,
"yPCA/F");
394 thetracks_->Branch(
"zPCA", &
zPCA_,
"zPCA/F");
395 thetracks_->Branch(
"nLayers", &
nLayers_,
"nLayers/i");
396 thetracks_->Branch(
"trkWeightpvtx", &
trkWeightpvtx_,
"trkWeightpvtx/F");
397 thetracks_->Branch(
"vertexid", &
vertexid_,
"vertexid/i");
402 for (
size_t i = 0;
i < trackSize; ++
i) {
405 sprintf(buffer1,
"misingHits%lu", (
unsigned long)
i);
406 sprintf(buffer2,
"missing hits from track collection %lu", (
unsigned long)i);
407 TTree* themissingHits_ = dir->
make<TTree>(buffer1, buffer2);
408 sprintf(buffer1,
"trackid%lu", (
unsigned long)i);
409 sprintf(buffer2,
"trackid%lu/i", (
unsigned long)i);
411 themissingHits_->Branch(
"eventid", &
eventid_,
"eventid/i");
412 themissingHits_->Branch(
"runid", &
runid_,
"runid/i");
413 themissingHits_->Branch(
"detid", &
detid_,
"detid/i");
414 themissingHits_->Branch(
"type", &
type_,
"type/i");
415 themissingHits_->Branch(
"localX", &
clPositionX_,
"localX/F");
416 themissingHits_->Branch(
"localY", &
clPositionY_,
"localY/F");
417 themissingHits_->Branch(
"globalX", &
globalX_,
"globalX/F");
418 themissingHits_->Branch(
"globalY", &
globalY_,
"globalY/F");
419 themissingHits_->Branch(
"globalZ", &
globalZ_,
"globalZ/F");
420 themissingHits_->Branch(
"measX", &
measX_,
"measX/F");
421 themissingHits_->Branch(
"measY", &
measY_,
"measY/F");
422 themissingHits_->Branch(
"errorX", &
errorX_,
"errorX/F");
423 themissingHits_->Branch(
"errorY", &
errorY_,
"errorY/F");
428 vertices_ = dir->
make<TTree>(
"vertices",
"vertex information");
459 event_ = dir->
make<TTree>(
"events",
"event information");
474 sprintf(buffer,
"ntracks[%lu]/i", (
unsigned long)trackSize);
475 event_->Branch(
"ntracks", ntracks_, buffer);
476 sprintf(buffer,
"ntrajs[%lu]/i", (
unsigned long)trackSize);
478 sprintf(buffer,
"lowPixelProbabilityFraction[%lu]/F", (
unsigned long)trackSize);
498 event_->Branch(
"MagneticField", &
fBz_,
"MagneticField/F");
503 iConfig.
getUntrackedParameter<std::vector<std::string> >(
"DelayFileNames", std::vector<std::string>(0));
539 using namespace reco;
571 for (
int bit = 0; bit < 128; ++bit) {
575 for (
int bit = 0; bit < 64; ++bit) {
579 for (
int bit = 0; bit < 64; ++bit) {
586 size_t ntrh = trh->size();
587 for (
size_t bit = 0; bit < 256; ++bit)
595 ?
Point(recoBeamSpotHandle->x0(), recoBeamSpotHandle->y0(), recoBeamSpotHandle->z0())
597 if (recoBeamSpotHandle.isValid()) {
619 for (reco::VertexCollection::const_iterator
v = vertexColl.begin();
v != vertexColl.end(); ++
v) {
620 if (
v->isValid() && !
v->isFake())
663 std::vector<edm::Handle<reco::TrackCollection> > trackCollectionHandle;
664 trackCollectionHandle.resize(trackSize);
679 std::vector<std::vector<Trajectory> > trajectoryCollection;
680 std::vector<edm::Handle<std::vector<Trajectory> > > trajectoryCollectionHandle;
681 trajectoryCollectionHandle.resize(trackSize);
691 trajectoryCollection.push_back(*trajectoryCollectionHandle[
index].product());
696 std::vector<TrajTrackAssociationCollection> TrajToTrackMap;
707 TrajToTrackMap.push_back(*trajTrackAssociationHandle.product());
715 std::vector<std::map<size_t, int> > trackVertices;
716 for (
size_t i = 0;
i < trackSize; ++
i) {
722 for (reco::VertexCollection::const_iterator
v = vertexColl.begin();
v != vertexColl.end(); ++
v) {
740 for (reco::VertexCollection::const_iterator
v = pixelVertexColl.begin();
v != pixelVertexColl.end(); ++
v) {
758 std::vector<std::pair<double, double> > pixclusterOntrackAngles =
777 std::vector<std::vector<int> > stripClusterOntrackIndices;
778 for (
size_t i = 0;
i < trackSize; ++
i) {
781 std::vector<std::vector<int> > pixelClusterOntrackIndices;
782 for (
size_t i = 0;
i < trackSize; ++
i) {
786 stripClusterOntrackIndices[0].
begin(), stripClusterOntrackIndices[0].
end(), [](
auto c) {
return c != -1; });
788 pixelClusterOntrackIndices[0].
begin(), pixelClusterOntrackIndices[0].
end(), [](
auto c) {
return c != -1; });
792 uint32_t n_hits_barrel = 0;
793 uint32_t n_hits_lowprob = 0;
795 it != TrajToTrackMap[coll].end();
799 eta_ = itTrack->eta();
800 phi_ = itTrack->phi();
802 dedxNoM_ = dEdxTrack1[itTrack].numberOfMeasurements();
803 dedx1_ = dEdxTrack1[itTrack].dEdx();
804 dedx2_ = dEdxTrack2[itTrack].dEdx();
805 dedx3_ = dEdxTrack3[itTrack].dEdx();
820 nLayers_ = uint32_t(itTrack->hitPattern().trackerLayersWithMeasurement());
823 chi2_ = itTrack->chi2();
824 ndof_ = (uint32_t)itTrack->ndof();
826 dzerr_ = itTrack->dzError();
828 dxy_ = itTrack->dxy();
831 pterr_ = itTrack->ptError();
835 xPCA_ = itTrack->vertex().x();
836 yPCA_ = itTrack->vertex().y();
837 zPCA_ = itTrack->vertex().z();
839 if (!vertexColl.empty() && !vertexColl.begin()->isFake()) {
847 std::map<size_t, int>::const_iterator theV = trackVertices[coll].find(itTrack.
key());
848 vertexid_ = (theV != trackVertices[coll].end()) ? theV->second : 0;
852 for (Trajectory::DataContainer::const_iterator it = measurements.begin(); it != measurements.end(); ++it) {
854 if (!rechit->isValid()) {
856 detid_ = rechit->geographicalId();
858 type_ = rechit->getType();
860 LocalPoint local = it->predictedState().localPosition();
864 GlobalPoint global = it->predictedState().globalPosition();
912 std::vector<double>::const_iterator angleIt = clusterOntrackAngles.begin();
913 uint32_t localCounter = 0;
918 uint32_t detid = DSViter->id();
922 ++iter, ++angleIt, ++localCounter) {
925 for (
size_t i = 0;
i < trackSize; ++
i) {
926 trackid_[
i] = stripClusterOntrackIndices[
i][localCounter];
932 thickness_ = ((((DSViter->id() >> 25) & 0x7f) == 0xd) ||
933 ((((DSViter->id() >> 25) & 0x7f) == 0xe) && (((DSViter->id() >> 5) & 0x7) > 4)))
958 lldChannel_ = 1 + (int(floor(iter->barycenter())) / 256);
969 std::vector<std::pair<double, double> >::const_iterator pixAngleIt = pixclusterOntrackAngles.begin();
972 DSViter != pixelclusters->end();
976 uint32_t detid = DSViter->id();
980 ++iter, ++pixAngleIt, ++localCounter) {
982 for (
size_t i = 0;
i < trackSize; ++
i) {
983 trackid_[
i] = pixelClusterOntrackIndices[
i][localCounter];
991 alpha_ = pixAngleIt->first;
992 beta_ = pixAngleIt->second;
993 charge_ = (iter->charge()) / 1000.;
1039 for (std::vector<std::string>::const_iterator it =
hlNames_.begin(); it <
hlNames_.end(); ++it) {
1040 std::cout << (i++) <<
" = " << (*it) << std::endl;
1050 auto feds = cabling.fedIds();
1051 for (
auto fedid =
feds.begin(); fedid <
feds.end(); ++fedid) {
1052 auto connections = cabling.fedConnections(*fedid);
1055 if (
conn->isConnected())
1058 if (
conn->isConnected()) {
1083 if (!delayMap.empty())
1084 tmap.
save(
true, 0, 0,
"delaymap.png");
1088 if (cablingFile.is_open()) {
1090 cablingFile.getline(buffer, 1024);
1091 while (!cablingFile.eof()) {
1092 std::istringstream
line(buffer);
1096 strncpy(
PSUname_, name.c_str(), 256);
1097 while (!line.eof()) {
1101 cablingFile.getline(buffer, 1024);
1104 edm::LogWarning(
"BadConfig") <<
" The PSU file does not exist. The psumap tree will not be filled." << std::endl
1106 <<
" Please specify a valid filename through the PSUFileName untracked parameter.";
1112 for (
size_t i = 0;
i <
tracks_.size(); ++
i) {
1114 sprintf(buffer,
"trackid%lu", (
unsigned long)
i);
1116 tracks_[
i]->BuildIndex(buffer,
"eventid");
1126 vertices_->BuildIndex(
"vertexid",
"eventid");
1127 if (
event_->GetEntries())
1128 event_->BuildIndex(
"runid",
"eventid");
1136 const std::vector<Trajectory>& trajVec) {
1137 std::vector<double>
result;
1139 std::multimap<const uint32_t, std::pair<LocalPoint, double> > onTrackPositions;
1140 for (std::vector<Trajectory>::const_iterator traj = trajVec.begin(); traj < trajVec.end(); ++traj) {
1142 for (Trajectory::DataContainer::iterator meas = measurements.begin(); meas != measurements.end(); ++meas) {
1143 double tla = meas->updatedState().localDirection().theta();
1153 std::pair<std::multimap<uint32_t, std::pair<LocalPoint, double> >::const_iterator,
1154 std::multimap<uint32_t, std::pair<LocalPoint, double> >::const_iterator>
1155 range = onTrackPositions.equal_range(DSViter->id());
1159 for (std::multimap<uint32_t, std::pair<LocalPoint, double> >::const_iterator
cl = range.first;
cl != range.second;
1162 angle =
cl->second.second;
1165 result.push_back(angle);
1181 }
else if (singlehit) {
1184 }
else if (multihit) {
1185 std::vector<const TrackingRecHit*> childs = multihit->
recHits();
1186 for (std::vector<const TrackingRecHit*>::const_iterator it = childs.begin(); it != childs.end(); ++it) {
1194 uint32_t firstTrack) {
1197 std::multimap<const uint32_t, std::pair<int, int> > onTrackPositions;
1198 uint32_t trackid = firstTrack;
1199 for (reco::TrackCollection::const_iterator itTrack = trackVec.begin(); itTrack != trackVec.end();
1200 ++itTrack, ++trackid) {
1207 int thetrackid = -1;
1212 std::pair<std::multimap<uint32_t, std::pair<int, int> >::const_iterator,
1213 std::multimap<uint32_t, std::pair<int, int> >::const_iterator>
1214 range = onTrackPositions.equal_range(DSViter->id());
1217 for (std::multimap<uint32_t, std::pair<int, int> >::const_iterator
cl = range.first;
cl != range.second; ++
cl) {
1218 if (fabs(
cl->second.first - iter->barycenter()) < 2) {
1219 thetrackid =
cl->second.second;
1222 result.push_back(thetrackid);
1239 }
else if (singlehit) {
1241 std::make_pair(
int(singlehit->
cluster()->barycenter()), trackid)));
1242 }
else if (multihit) {
1243 std::vector<const TrackingRecHit*> childs = multihit->
recHits();
1244 for (std::vector<const TrackingRecHit*>::const_iterator it = childs.begin(); it != childs.end(); ++it) {
1252 uint32_t firstVertex) {
1254 std::map<size_t, int>
output;
1255 uint32_t vertexid = firstVertex;
1256 for (reco::VertexCollection::const_iterator
v = vertices.begin();
v != vertices.end(); ++
v, ++vertexid) {
1259 for (; it != lastTrack; ++it) {
1260 output[it->key()] = vertexid;
1268 std::vector<std::pair<double, double> >
result;
1270 std::multimap<const uint32_t, std::pair<LocalPoint, std::pair<double, double> > > onTrackPositions;
1271 for (std::vector<Trajectory>::const_iterator traj = trajVec.begin(); traj < trajVec.end(); ++traj) {
1273 for (Trajectory::DataContainer::iterator meas = measurements.begin(); meas != measurements.end(); ++meas) {
1274 LocalVector localDir = meas->updatedState().localDirection();
1275 double alpha = atan2(localDir.
z(), localDir.
x());
1276 double beta = atan2(localDir.
z(), localDir.
y());
1290 std::pair<std::multimap<uint32_t, std::pair<LocalPoint, std::pair<double, double> > >::const_iterator,
1291 std::multimap<uint32_t, std::pair<LocalPoint, std::pair<double, double> > >::const_iterator>
1292 range = onTrackPositions.equal_range(DSViter->id());
1294 for (std::multimap<uint32_t, std::pair<
LocalPoint, std::pair<double, double> > >::const_iterator
cl = range.first;
1299 alpha =
cl->second.second.first;
1300 beta =
cl->second.second.second;
1303 result.push_back(std::make_pair(alpha, beta));
1319 std::make_pair(pixhit->
localPosition(), std::make_pair(alpha, beta))));
1325 uint32_t firstTrack) {
1328 std::multimap<const uint32_t, std::pair<std::pair<float, float>,
int> > onTrackPositions;
1329 uint32_t trackid = firstTrack;
1330 for (reco::TrackCollection::const_iterator itTrack = trackVec.begin(); itTrack != trackVec.end();
1331 ++itTrack, ++trackid) {
1338 int thetrackid = -1;
1345 std::pair<std::multimap<uint32_t, std::pair<std::pair<float, float>,
int> >::const_iterator,
1346 std::multimap<uint32_t, std::pair<std::pair<float, float>,
int> >::const_iterator>
1347 range = onTrackPositions.equal_range(DSViter->id());
1348 for (std::multimap<uint32_t, std::pair<std::pair<float, float>,
int> >::const_iterator
cl = range.first;
1351 if ((fabs(
cl->second.first.first - iter->x()) < 2) && (fabs(
cl->second.first.second - iter->y()) < 2)) {
1352 thetrackid =
cl->second.second;
1355 result.push_back(thetrackid);
1362 std::multimap<
const uint32_t, std::pair<std::pair<float, float>,
int> >&
collection,
1371 std::make_pair(std::make_pair(pixhit->
cluster()->x(), pixhit->
cluster()->y()), trackid)));
1378 std::stringstream
output;
1384 output <<
" layer ";
1386 output <<
", string ";
1389 output <<
", module ";
1392 output <<
" (double)";
1394 output << (tTopo.
tibIsRPhi(rawid) ?
" (rphi)" :
" (stereo)");
1404 output <<
", ring ";
1405 output << tTopo.
tidRing(rawid);
1407 output <<
", module ";
1410 output <<
" (double)";
1412 output << (tTopo.
tidIsRPhi(rawid) ?
" (rphi)" :
" (stereo)");
1420 output <<
" layer ";
1423 output << tTopo.
tobRod(rawid);
1424 output <<
", module ";
1427 output <<
" (double)";
1429 output << (tTopo.
tobIsRPhi(rawid) ?
" (rphi)" :
" (stereo)");
1439 output <<
" sector ";
1441 output << (tTopo.
tecIsFrontPetal(rawid) ?
" Front Petal" :
" Back Petal");
1442 output <<
", module ";
1443 output << tTopo.
tecRing(rawid);
1446 output <<
" (double)";
1448 output << (tTopo.
tecIsRPhi(rawid) ?
" (rphi)" :
" (stereo)");
1453 output <<
"UNKNOWN";
1462 std::stringstream
output;
1463 output << rawid <<
" (0x" << std::hex << rawid <<
std::dec <<
")";
1483 if (latencyShift > 32)
1485 if ((latencyCode >> 6) == 2)
1487 if ((latencyCode >> 6) == 1)
1489 float correctedDelay =
1490 delay - (latencyShift * 25.);
1491 return correctedDelay;
1498 std::map<uint32_t, float> delayMap;
1500 for (std::vector<std::string>::const_iterator
file = files.begin();
file < files.end(); ++
file) {
1502 std::ifstream cablingFile(
file->c_str());
1503 if (cablingFile.is_open()) {
1506 cablingFile.getline(buffer, 1024);
1507 while (!cablingFile.eof()) {
1509 size_t pos = line.find(
"dcuid");
1511 if (pos != std::string::npos) {
1513 std::string dcuids = line.substr(pos + 7, line.find(
' ', pos) - pos - 8);
1514 std::istringstream dcuidstr(dcuids);
1515 dcuidstr >> std::hex >> dcuid;
1517 pos = line.find(
"difpll");
1518 std::string diffs = line.substr(pos + 8, line.find(
' ', pos) - pos - 9);
1519 std::istringstream diffstr(diffs);
1522 delayMap[dcuid] =
delay;
1525 cablingFile.getline(buffer, 1024);
1528 edm::LogWarning(
"BadConfig") <<
" The delay file does not exist. The delay map will not be filled properly."
1530 <<
" Looking for " <<
file->c_str() <<
"." << std::endl
1531 <<
" Please specify valid filenames through the DelayFileNames untracked parameter.";
ClusterRef cluster() const
static const std::string kSharedResource
uint8_t maxCharge() const
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
EventNumber_t event() const
uint32_t foundhitsPixels_
T getUntrackedParameter(std::string const &, T const &) const
std::vector< TTree * > tracks_
bool tecIsDoubleSide(const DetId &id) const
bool tobIsDoubleSide(const DetId &id) const
const edm::EventSetup & c
void beginRun(const edm::Run &, const edm::EventSetup &) override
std::string cablingFileName_
Point3DBase< Scalar, LocalTag > LocalPoint
float clusterProbability(unsigned int flags=0) const
bool tibIsDoubleSide(const DetId &id) const
void setCluster(const SiStripCluster &cluster, int detId)
unsigned int tibLayer(const DetId &id) const
unsigned int tibString(const DetId &id) const
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
unsigned int tidRing(const DetId &id) const
bool functionality_ontrackClusters_
virtual LocalPoint localPosition(const MeasurementPoint &) const =0
virtual const GeomDetType & type() const
std::vector< int > onTrack(edm::Handle< edmNew::DetSetVector< SiStripCluster > > &, const reco::TrackCollection &, uint32_t)
friend struct const_iterator
double sumPtSquared(const reco::Vertex &)
static float planarity(const reco::TrackCollection &)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
virtual const Topology & topology() const
float noiseRescaledByGain() const
#define DEFINE_FWK_MODULE(type)
unsigned int tecRing(const DetId &id) const
ring id
~TrackerDpgAnalysis() override
const std::vector< std::string > & triggerNames() const
names of trigger paths
edm::EDGetTokenT< edm::TriggerResults > HLTToken_
Global3DPoint GlobalPoint
constexpr uint32_t rawId() const
get the raw id
std::multimap< const uint32_t, const FedChannelConnection * > connections_
std::vector< Track > TrackCollection
collection of Tracks
Timestamp const & time() const
unsigned long long EventNumber_t
const TrackerGeometry * tracker_
bool tidIsFrontRing(const DetId &id) const
std::vector< Vertex > VertexCollection
collection of Vertex objects
SiStripClusterInfo siStripClusterInfo_
unsigned int tidWheel(const DetId &id) const
auto const & tracks
cannot be loose
float clCorrectedSignalOverNoise_
data_type const * const_iterator
uint16_t physicsDeclared_
static math::XYZTLorentzVectorF thrust(const reco::TrackCollection &)
key_type key() const
Accessor for product key.
EventAuxiliary const & eventAuxiliary() const override
std::string toStringId(uint32_t)
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
void analyze(const edm::Event &, const edm::EventSetup &) override
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
bool tobIsRPhi(const DetId &id) const
const Plane & surface() const
The nominal surface of the GeomDet.
int bunchCrossing() const
bool functionality_missingHits_
LuminosityBlockNumber_t luminosityBlock() const
const uint16_t range(const Frame &aFrame)
static float sphericity(const reco::TrackCollection &)
edm::EDGetTokenT< reco::BeamSpot > bsToken_
bool getData(T &iHolder) const
bool tibIsZPlusSide(const DetId &id) const
std::vector< bool > DecisionWordExtended
float signalOverNoise() const
bool functionality_pixvertices_
float * lowPixelProbabilityFraction_
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
bool functionality_events_
bool tibIsExternalString(const DetId &id) const
std::vector< TrajectoryMeasurement > DataContainer
bool tibIsRPhi(const DetId &id) const
uint32_t * globaltrackid_
uint32_t npixClustersOntrack_
std::vector< std::string > delayFileNames_
Class containning control, module, detector and connection information, at the level of a FED channel...
std::vector< bool > DecisionWord
typedefs
edm::EventNumber_t eventid_
unsigned int tidModule(const DetId &id) const
void save(bool print_total=true, float minval=0., float maxval=0., std::string s="svgmap.svg", int width=1500, int height=800)
static const int nMaxPVs_
float clNormalizedCharge_
bool tobIsZPlusSide(const DetId &id) const
Cos< T >::type cos(const T &t)
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
edm::EDGetTokenT< L1GlobalTriggerReadoutRecord > L1Token_
Tan< T >::type tan(const T &t)
trackRef_iterator tracks_end() const
last iterator over tracks
static float aplanarity(const reco::TrackCollection &)
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
ClusterRef cluster() const
virtual MeasurementPoint measurementPosition(const LocalPoint &) const =0
T * make(const Args &...args) const
make new ROOT object
trackRef_iterator tracks_begin() const
first iterator over tracks
std::vector< double > onTrackAngles(edm::Handle< edmNew::DetSetVector< SiStripCluster > > &, const std::vector< Trajectory > &)
bool tecIsRPhi(const DetId &id) const
const TrackerGeomDet * idToDet(DetId) const override
std::vector< edm::InputTag > trackLabels_
edm::ESGetToken< SiStripFedCabling, SiStripFedCablingRcd > fedCablingToken_
HLTConfigProvider hltConfig_
unsigned int tibModule(const DetId &id) const
unsigned int tecModule(const DetId &id) const
bool tecIsFrontPetal(const DetId &id) const
void insertMeasurement(std::multimap< const uint32_t, std::pair< LocalPoint, double > > &, const TransientTrackingRecHit *, double)
Detector identifier class for the strip tracker.
edm::EDGetTokenT< SiStripEventSummary > summaryToken_
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magFieldToken_
SubDetector subDetector() const
std::vector< edm::EDGetTokenT< reco::TrackCollection > > trackTokens_
bool tidIsRPhi(const DetId &id) const
void endRun(const edm::Run &, const edm::EventSetup &) override
edm::EDGetTokenT< edm::ValueMap< reco::DeDxData > > dedx2Token_
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
TrackerDpgAnalysis(const edm::ParameterSet &)
bool tidIsZPlusSide(const DetId &id) const
XYZPointD XYZPoint
point in space with cartesian internal representation
edm::EDGetTokenT< reco::VertexCollection > vertexToken_
uint32_t foundhitsStrips_
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
ClusterRef cluster() const
bool tidIsDoubleSide(const DetId &id) const
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
T getParameter(std::string const &) const
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > tkGeomToken_
const DecisionWord & gtDecisionWord() const
get/set/print algorithms bits (decision word)
TrackingRecHit::ConstRecHitPointer ConstRecHitPointer
bool HLTDecisionBits_[256]
std::map< size_t, int > inVertex(const reco::TrackCollection &, const reco::VertexCollection &, uint32_t)
bool functionality_vertices_
unsigned int tobModule(const DetId &id) const
bool tecIsZPlusSide(const DetId &id) const
bool L1TechnicalBits_[64]
float delay(const SiStripEventSummary &)
edm::EDGetTokenT< edm::ValueMap< reco::DeDxData > > dedx1Token_
Structure Point Contains parameters of Gaussian fits to DMRs.
std::vector< TTree * > missingHits_
edm::EDGetTokenT< edmNew::DetSetVector< SiPixelCluster > > pixelclusterToken_
std::vector< edm::EDGetTokenT< TrajTrackAssociationCollection > > trajTrackAssoTokens_
LocalPoint localPosition() const override
edm::EDGetTokenT< edm::ValueMap< reco::DeDxData > > dedx3Token_
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusterToken_
bool functionality_pixclusters_
virtual LocalPoint localPosition(float strip) const =0
void fill_current_val(int idmod, float current_val)
unsigned int tecPetalNumber(const DetId &id) const
bool L1DecisionBits_[192]
DetId geographicalId() const
uint32_t nclustersOntrack_
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< float > > XYZTLorentzVectorF
Lorentz vector with cylindrical internal representation using pseudorapidity.
Log< level::Warning, false > LogWarning
unsigned int tobRod(const DetId &id) const
void initEvent(const edm::EventSetup &iSetup)
unsigned int tecWheel(const DetId &id) const
bool functionality_offtrackClusters_
TimeValue_t value() const
std::vector< edm::EDGetTokenT< std::vector< Trajectory > > > trajectoryTokens_
edm::EDGetTokenT< reco::VertexCollection > pixelVertexToken_
std::string toStringName(uint32_t, const TrackerTopology &)
Power< A, B >::type pow(const A &a, const B &b)
bool functionality_tracks_
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector<TrackRef>
std::vector< std::string > hlNames_
std::vector< const TrackingRecHit * > recHits() const override
Access to component RecHits (if any)
unsigned int tobLayer(const DetId &id) const
T angle(T x1, T y1, T z1, T x2, T y2, T z2)