73 #include "CLHEP/Units/PhysicalConstants.h" 102 return (
b << 32) |
a;
104 return (
a << 32) |
b;
377 optionalPlots_(iConfig.getParameter<
bool>(
"optionalPlots")),
378 trackMaxPt_(iConfig.getParameter<double>(
"trackMaximumPt")),
379 trackMaxBtlEta_(iConfig.getParameter<double>(
"trackMaximumBtlEta")),
380 trackMinEtlEta_(iConfig.getParameter<double>(
"trackMinimumEtlEta")),
381 trackMaxEtlEta_(iConfig.getParameter<double>(
"trackMaximumEtlEta")) {
414 mtdgeoToken_ = esConsumes<MTDGeometry, MTDDigiGeometryRecord>();
416 mtdlayerToken_ = esConsumes<MTDDetLayerGeometry, MTDRecoGeometryRecord>();
417 magfieldToken_ = esConsumes<MagneticField, IdealMagneticFieldRecord>();
434 std::unordered_map<uint32_t, MTDHit> m_btlHits;
435 std::unordered_map<uint32_t, MTDHit> m_etlHits;
436 std::unordered_map<uint32_t, std::set<unsigned long int>> m_btlTrkPerCell;
437 std::unordered_map<uint32_t, std::set<unsigned long int>> m_etlTrkPerCell;
458 r2s_ = recoToSimH.product();
460 unsigned int index = 0;
463 for (
const auto& trackGen : *GenRecTrackHandle) {
467 if (trackAssoc[trackref] == -1) {
468 LogWarning(
"mtdTracks") <<
"Extended track not associated";
477 bool ETLdisc1 =
false;
478 bool ETLdisc2 =
false;
479 bool twoETLdiscs =
false;
484 if (std::round(SigmatMtd[trackref] - Sigmat0Pid[trackref]) != 0) {
486 <<
"TimeError associated to refitted track is different from TimeError stored in tofPID " 487 "sigmat0 ValueMap: this should not happen";
507 bool MTDEtlZnegD1 =
false;
508 bool MTDEtlZnegD2 =
false;
509 bool MTDEtlZposD1 =
false;
510 bool MTDEtlZposD2 =
false;
511 std::vector<edm::Ref<edmNew::DetSetVector<FTLCluster>,
FTLCluster>> recoClustersRefs;
520 int numMTDBtlvalidhits = 0;
521 for (
const auto hit :
track.recHits()) {
522 if (
hit->isValid() ==
false)
525 if ((
Hit.det() == 6) && (
Hit.subdetId() == 1) && (
Hit.mtdSubDetector() == 1)) {
527 numMTDBtlvalidhits++;
529 const auto& hitCluster = mtdhit->
mtdCluster();
530 if (hitCluster.size() != 0) {
532 recoClustersRefs.push_back(recoClusterRef);
539 if (MTDBtl ==
true) {
547 if (isBTL && Sigmat0Safe[trackref] < 0.) {
558 int numMTDEtlvalidhits = 0;
559 for (
const auto hit :
track.recHits()) {
560 if (
hit->isValid() ==
false)
563 if ((
Hit.det() == 6) && (
Hit.subdetId() == 1) && (
Hit.mtdSubDetector() == 2)) {
568 const auto& hitCluster = mtdhit->
mtdCluster();
569 if (hitCluster.size() != 0) {
571 recoClustersRefs.push_back(recoClusterRef);
574 if ((ETLHit.
zside() == -1) && (ETLHit.
nDisc() == 1)) {
578 numMTDEtlvalidhits++;
580 if ((ETLHit.
zside() == -1) && (ETLHit.
nDisc() == 2)) {
584 numMTDEtlvalidhits++;
586 if ((ETLHit.
zside() == 1) && (ETLHit.
nDisc() == 1)) {
590 numMTDEtlvalidhits++;
592 if ((ETLHit.
zside() == 1) && (ETLHit.
nDisc() == 2)) {
596 numMTDEtlvalidhits++;
601 if (
isETL && Sigmat0Safe[trackref] < 0.) {
606 ETLdisc1 = (MTDEtlZnegD1 || MTDEtlZposD1);
607 ETLdisc2 = (MTDEtlZnegD2 || MTDEtlZposD2);
609 ((MTDEtlZnegD1 ==
true) && (MTDEtlZnegD2 ==
true)) || ((MTDEtlZposD1 ==
true) && (MTDEtlZposD2 ==
true));
610 if (ETLdisc1 || ETLdisc2) {
627 LogDebug(
"MtdTracksValidation") <<
"Track p/pt = " << trackGen.p() <<
" " << trackGen.pt() <<
" eta " 628 << trackGen.eta() <<
" BTL " << isBTL <<
" ETL " <<
isETL <<
" 2disks " 634 if (tp_info !=
nullptr &&
trkTPSelAll(**tp_info)) {
640 std::abs(trackGen.pt() - (*tp_info)->pt()));
647 (trackGen.pt() - (*tp_info)->pt()) / (*tp_info)->pt());
649 (
track.pt() - (*tp_info)->pt()) / (*tp_info)->pt());
654 std::abs(trackGen.pt() - (*tp_info)->pt()));
661 (trackGen.pt() - (*tp_info)->pt()) / ((*tp_info)->pt()));
663 (
track.pt() - (*tp_info)->pt()) / ((*tp_info)->pt()));
665 if (
isETL && twoETLdiscs) {
667 std::abs(trackGen.pt() - (*tp_info)->pt()));
674 (trackGen.pt() - (*tp_info)->pt()) / ((*tp_info)->pt()));
676 (
track.pt() - (*tp_info)->pt()) / ((*tp_info)->pt()));
709 bool hasTime =
false;
710 double tsim = (*tp_info)->parentVertex()->position().t() *
simUnit_;
712 double pullT(-9999.);
713 if (Sigmat0Safe[trackref] != -1.) {
714 dT = t0Safe[trackref] - tsim;
715 pullT = dT / Sigmat0Safe[trackref];
720 bool isTPmtdDirectBTL =
false, isTPmtdOtherBTL =
false, isTPmtdDirectCorrectBTL =
false,
721 isTPmtdOtherCorrectBTL =
false, isTPmtdETLD1 =
false, isTPmtdETLD2 =
false, isTPmtdCorrectETLD1 =
false,
722 isTPmtdCorrectETLD2 =
false;
724 auto simClustersRefsIt = tp2SimAssociationMap.find(*tp_info);
725 const bool withMTD = (simClustersRefsIt != tp2SimAssociationMap.end());
730 std::vector<edm::Ref<MtdSimLayerClusterCollection>> simClustersRefs;
731 for (
const auto& ref : simClustersRefsIt->val) {
732 simClustersRefs.push_back(ref);
733 MTDDetId mtddetid = ref->detIds_and_rows().front().first;
736 if (
detid.nDisc() == 1)
738 if (
detid.nDisc() == 2)
745 std::vector<edm::Ref<MtdSimLayerClusterCollection>>::iterator directSimClusIt;
747 std::sort(simClustersRefs.begin(), simClustersRefs.end(), [](
const auto&
a,
const auto&
b) {
748 return a->simLCTime() <
b->simLCTime();
751 directSimClusIt = std::find_if(simClustersRefs.begin(), simClustersRefs.end(), [](
const auto& simCluster) {
752 return simCluster->trackIdOffset() == 0;
755 for (
const auto& simClusterRef : simClustersRefs) {
756 if (directSimClusIt != simClustersRefs.end() && simClusterRef == *directSimClusIt) {
757 isTPmtdDirectBTL =
true;
758 }
else if (simClusterRef->trackIdOffset() != 0) {
759 isTPmtdOtherBTL =
true;
765 for (
const auto& recClusterRef : recoClustersRefs) {
766 if (recClusterRef.isNonnull()) {
767 auto itp = r2sAssociationMap.equal_range(recClusterRef);
768 if (itp.first != itp.second) {
769 auto& simClustersRefs_RecoMatch = (*itp.first).
second;
771 for (
const auto& simClusterRef_RecoMatch : simClustersRefs_RecoMatch) {
774 std::find(simClustersRefs.begin(), simClustersRefs.end(), simClusterRef_RecoMatch);
777 if (simClusterIt != simClustersRefs.end()) {
779 if (directSimClusIt != simClustersRefs.end() && simClusterRef_RecoMatch == *directSimClusIt) {
780 isTPmtdDirectCorrectBTL =
true;
781 }
else if (simClusterRef_RecoMatch->trackIdOffset() != 0) {
782 isTPmtdOtherCorrectBTL =
true;
786 MTDDetId mtddetid = (*simClusterIt)->detIds_and_rows().front().first;
788 if (
detid.nDisc() == 1)
789 isTPmtdCorrectETLD1 =
true;
790 if (
detid.nDisc() == 2)
791 isTPmtdCorrectETLD2 =
true;
802 if (isTPmtdDirectBTL) {
805 }
else if (isTPmtdOtherBTL) {
811 if (isTPmtdDirectBTL) {
813 if (isTPmtdDirectCorrectBTL) {
821 mtdQualMVA[trackref],
835 mtdQualMVA[trackref],
842 else if (isTPmtdOtherBTL) {
843 if (isTPmtdOtherCorrectBTL) {
851 mtdQualMVA[trackref],
865 mtdQualMVA[trackref],
874 if (isTPmtdDirectBTL) {
877 }
else if (isTPmtdOtherBTL) {
886 if (isTPmtdETLD1 || isTPmtdETLD2) {
891 if (isTPmtdETLD1 && isTPmtdETLD2) {
897 if (isTPmtdETLD1 || isTPmtdETLD2) {
899 if ((isTPmtdETLD1 && !isTPmtdETLD2 && ETLdisc1 && isTPmtdCorrectETLD1) ||
900 (isTPmtdETLD2 && !isTPmtdETLD1 && ETLdisc2 && isTPmtdCorrectETLD2) ||
901 (isTPmtdETLD1 && isTPmtdETLD2 && ETLdisc1 && ETLdisc2 && isTPmtdCorrectETLD1 &&
902 isTPmtdCorrectETLD2)) {
910 mtdQualMVA[trackref],
916 else if ((isTPmtdETLD1 && !isTPmtdCorrectETLD1) || (isTPmtdETLD2 && !isTPmtdCorrectETLD2)) {
924 mtdQualMVA[trackref],
931 if (isTPmtdETLD1 && isTPmtdETLD2) {
933 if (ETLdisc1 && ETLdisc2 && isTPmtdCorrectETLD1 && isTPmtdCorrectETLD2) {
941 mtdQualMVA[trackref],
947 else if ((ETLdisc1 || ETLdisc2) && (!isTPmtdCorrectETLD1 || !isTPmtdCorrectETLD2)) {
955 mtdQualMVA[trackref],
965 if (isTPmtdETLD1 || isTPmtdETLD2) {
970 if (isTPmtdETLD1 && isTPmtdETLD2) {
981 if (!isTPmtdDirectBTL && !isTPmtdOtherBTL) {
992 mtdQualMVA[trackref],
1000 else if (!isTPmtdETLD1 && !isTPmtdETLD2) {
1011 mtdQualMVA[trackref],
1048 <<
"MtdTracksValidation: extender fail in " <<
iEvent.id().run() <<
" " <<
iEvent.id().event()
1049 <<
" pt= " << trackGen.pt() <<
" eta= " << trackGen.eta();
1058 if (Sigmat0Safe[trackref] != -1.) {
1059 if (isBTL ||
isETL) {
1072 if (trackGen.pt() < 0.45) {
1078 bool MTDEtlZnegD1 =
false;
1079 bool MTDEtlZnegD2 =
false;
1080 bool MTDEtlZposD1 =
false;
1081 bool MTDEtlZposD2 =
false;
1082 for (
const auto hit :
track.recHits()) {
1083 if (
hit->isValid() ==
false)
1086 if ((
Hit.det() == 6) && (
Hit.subdetId() == 1) && (
Hit.mtdSubDetector() == 2)) {
1089 if ((ETLHit.
zside() == -1) && (ETLHit.
nDisc() == 1)) {
1090 MTDEtlZnegD1 =
true;
1092 if ((ETLHit.
zside() == -1) && (ETLHit.
nDisc() == 2)) {
1093 MTDEtlZnegD2 =
true;
1095 if ((ETLHit.
zside() == 1) && (ETLHit.
nDisc() == 1)) {
1096 MTDEtlZposD1 =
true;
1098 if ((ETLHit.
zside() == 1) && (ETLHit.
nDisc() == 2)) {
1099 MTDEtlZposD2 =
true;
1104 twoETLdiscs = (MTDEtlZnegD1 ==
true) && (MTDEtlZnegD2 ==
true);
1107 twoETLdiscs = (MTDEtlZposD1 ==
true) && (MTDEtlZposD2 ==
true);
1110 if (trackGen.pt() < 0.45) {
1116 if (
isETL && twoETLdiscs) {
1117 if (trackGen.pt() < 0.45) {
1156 auto tTrack = ttrackBuilder->build(
track);
1160 std::unique_ptr<MeasurementEstimator> theEstimator =
1168 <<
"MtdTracksValidation: extrapolating track, pt= " <<
track.pt() <<
" eta= " <<
track.eta();
1173 const std::vector<const DetLayer*>& layersBTL = layerGeo->
allBTLLayers();
1174 for (
const DetLayer* ilay : layersBTL) {
1175 std::pair<bool, TrajectoryStateOnSurface>
comp = ilay->compatible(tsos, prop, *theEstimator);
1180 extrho =
comp.second.globalPosition().perp();
1181 exteta =
comp.second.globalPosition().eta();
1182 extphi =
comp.second.globalPosition().phi();
1183 edm::LogVerbatim(
"MtdTracksValidation") <<
"MtdTracksValidation: extrapolation at BTL surface, rho= " << extrho
1184 <<
" eta= " << exteta <<
" phi= " << extphi;
1186 std::vector<DetLayer::DetWithState> compDets = ilay->compatibleDets(tsos, prop, *theEstimator);
1187 for (
const auto& detWithState : compDets) {
1188 const auto& det = detWithState.first;
1193 <<
"MtdTracksValidation: DetId= " << det->geographicalId().rawId()
1194 <<
" gp= " << detWithState.second.globalPosition().x() <<
" " << detWithState.second.globalPosition().y()
1195 <<
" " << detWithState.second.globalPosition().z() <<
" rho= " << detWithState.second.globalPosition().perp()
1196 <<
" eta= " << detWithState.second.globalPosition().eta()
1197 <<
" phi= " << detWithState.second.globalPosition().phi();
1199 for (
const auto&
recHit : *btlRecHitsHandle) {
1203 if (thedet ==
nullptr)
1204 throw cms::Exception(
"MtdTracksValidation") <<
"GeographicalID: " << std::hex << geoId.
rawId() <<
" (" 1205 <<
detId.rawId() <<
") is invalid!" <<
std::dec << std::endl;
1206 if (geoId == det->geographicalId()) {
1212 const auto& global_point = thedet->
toGlobal(local_point);
1214 <<
"MtdTracksValidation: Hit id= " <<
detId.rawId() <<
" ene= " <<
recHit.energy()
1215 <<
" dr= " <<
reco::deltaR(global_point, detWithState.second.globalPosition());
1217 eneSum +=
recHit.energy();
1230 <<
"MtdTracksValidation: BTL matched, energy= " << eneSum <<
" #layers= " << nlayers;
1234 return std::make_pair(inBTL,
isMatched);
1239 const std::vector<const DetLayer*>& layersETL = layerGeo->
allETLLayers();
1240 for (
const DetLayer* ilay : layersETL) {
1243 const double diskZ = disk.position().z();
1246 std::pair<bool, TrajectoryStateOnSurface>
comp = ilay->compatible(tsos, prop, *theEstimator);
1251 extrho =
comp.second.globalPosition().perp();
1252 exteta =
comp.second.globalPosition().eta();
1253 extphi =
comp.second.globalPosition().phi();
1255 edm::LogVerbatim(
"MtdTracksValidation") <<
"MtdTracksValidation: extrapolation at ETL surface, rho= " << extrho
1256 <<
" eta= " << exteta <<
" phi= " << extphi;
1257 std::vector<DetLayer::DetWithState> compDets = ilay->compatibleDets(tsos, prop, *theEstimator);
1258 for (
const auto& detWithState : compDets) {
1259 const auto& det = detWithState.first;
1264 <<
"MtdTracksValidation: DetId= " << det->geographicalId().rawId()
1265 <<
" gp= " << detWithState.second.globalPosition().x() <<
" " << detWithState.second.globalPosition().y()
1266 <<
" " << detWithState.second.globalPosition().z() <<
" rho= " << detWithState.second.globalPosition().perp()
1267 <<
" eta= " << detWithState.second.globalPosition().eta()
1268 <<
" phi= " << detWithState.second.globalPosition().phi();
1270 for (
const auto&
recHit : *etlRecHitsHandle) {
1274 if (thedet ==
nullptr)
1275 throw cms::Exception(
"MtdTracksValidation") <<
"GeographicalID: " << std::hex << geoId.
rawId() <<
" (" 1276 <<
detId.rawId() <<
") is invalid!" <<
std::dec << std::endl;
1277 if (geoId == det->geographicalId()) {
1282 const auto& global_point = thedet->
toGlobal(local_point);
1284 <<
"MtdTracksValidation: Hit id= " <<
detId.rawId() <<
" time= " <<
recHit.time()
1285 <<
" dr= " <<
reco::deltaR(global_point, detWithState.second.globalPosition());
1299 selvar = (
float)hcount;
1302 <<
"MtdTracksValidation: ETL matched, counts= " << hcount <<
" #layers= " << nlayers;
1306 if (!inBTL && !inETL) {
1308 <<
"MtdTracksValidation: track not extrapolating to MTD: pt= " <<
track.pt() <<
" eta= " <<
track.eta()
1309 <<
" phi= " <<
track.phi() <<
" vz= " <<
track.vz()
1312 return std::make_pair(inETL,
isMatched);
1328 ibook.
book1D(
"TrackBTLPtRes",
"Track pT resolution ;pT_{Gentrack}-pT_{MTDtrack}/pT_{Gentrack} ", 100, -0.1, 0.1);
1336 ibook.
book1D(
"TrackETLEtaTotLowPt0",
"Eta of tracks, 0.2 < pt < 0.45 (Tot);#eta_{RECO}", 30, 1.5, 3.0);
1338 ibook.
book1D(
"TrackETLEtaTotLowPt1",
"Eta of tracks, 0.45 < pt < 0.7 (Tot);#eta_{RECO}", 30, 1.5, 3.0);
1342 ibook.
book1D(
"TrackETLEtaMtdLowPt0",
"Eta of tracks, 0.2 < pt < 0.45 (Mtd);#eta_{RECO}", 30, 1.5, 3.0);
1344 ibook.
book1D(
"TrackETLEtaMtdLowPt1",
"Eta of tracks, 0.45 < pt < 0.7 (Mtd);#eta_{RECO}", 30, 1.5, 3.0);
1346 ibook.
book1D(
"TrackETLEta2MtdLowPt0",
"Eta of tracks, 0.2 < pt < 0.45 (Mtd 2 hit);#eta_{RECO}", 30, 1.5, 3.0);
1348 ibook.
book1D(
"TrackETLEta2MtdLowPt1",
"Eta of tracks, 0.45 < pt < 0.7 (Mtd 2 hit);#eta_{RECO}", 30, 1.5, 3.0);
1353 meETLTrackPhi2Mtd_ = ibook.
book1D(
"TrackETLPhi2Mtd",
"Phi of tracks (Mtd 2 hit);#phi_{RECO} [rad]", 100, -3.2, 3.2);
1357 ibook.
book1D(
"TrackETLPtRes",
"Track pT resolution;pT_{Gentrack}-pT_{MTDtrack}/pT_{Gentrack} ", 100, -0.1, 0.1);
1359 meTracktmtd_ = ibook.
book1D(
"Tracktmtd",
"Track time from TrackExtenderWithMTD;tmtd [ns]", 150, 1, 16);
1360 meTrackt0Src_ = ibook.
book1D(
"Trackt0Src",
"Track time from TrackExtenderWithMTD;t0Src [ns]", 100, -1.5, 1.5);
1362 ibook.
book1D(
"TrackSigmat0Src",
"Time Error from TrackExtenderWithMTD; #sigma_{t0Src} [ns]", 100, 0, 0.1);
1364 meTrackt0Pid_ = ibook.
book1D(
"Trackt0Pid",
"Track t0 as stored in TofPid;t0 [ns]", 100, -1, 1);
1365 meTrackSigmat0Pid_ = ibook.
book1D(
"TrackSigmat0Pid",
"Sigmat0 as stored in TofPid; #sigma_{t0} [ns]", 100, 0, 0.1);
1368 "TrackSigmat0SafePID",
"Log10(Sigmat0 Safe) as stored in TofPid; Log10(#sigma_{t0} [ns])", 80, -3, 1);
1369 meTrackNumHits_ = ibook.
book1D(
"TrackNumHits",
"Number of valid MTD hits per track ; Number of hits", 10, -5, 5);
1371 "TrackNumHitsNT",
"Number of valid MTD hits per track no time associated; Number of hits", 10, -5, 5);
1372 meTrackMVAQual_ = ibook.
book1D(
"TrackMVAQual",
"Track MVA Quality as stored in Value Map ; MVAQual", 100, -1, 1);
1374 "TrackPathLenghtvsEta",
"MTD Track pathlength vs MTD track Eta;|#eta|;Pathlength", 100, 0, 3.2, 100.0, 400.0,
"S");
1380 ibook.
book1D(
"TrackSigmaTof_Pion",
"Sigma(TOF) for pion hypothesis; #sigma_{t0} [ps]", 10, 0, 5);
1382 ibook.
book1D(
"TrackSigmaTof_Kaon",
"Sigma(TOF) for kaon hypothesis; #sigma_{t0} [ps]", 25, 0, 25);
1384 ibook.
book1D(
"TrackSigmaTof_Proton",
"Sigma(TOF) for proton hypothesis; #sigma_{t0} [ps]", 50, 0, 50);
1387 "Sigma(TOF) for pion hypothesis vs p; p [GeV]; #sigma_{t0} [ps]",
1395 "Sigma(TOF) for kaon hypothesis vs p; p [GeV]; #sigma_{t0} [ps]",
1403 "Sigma(TOF) for proton hypothesis vs p; p [GeV]; #sigma_{t0} [ps]",
1412 ibook.
book1D(
"ExtraPtMtd",
"Pt of tracks associated to LV extrapolated to hits; track pt [GeV] ", 110, 0., 11.);
1414 "Pt of tracks associated to LV extrapolated to hits, 2 ETL layers; track pt [GeV] ",
1419 ibook.
book1D(
"ExtraEtaMtd",
"Eta of tracks associated to LV extrapolated to hits; track eta ", 66, 0., 3.3);
1421 "ExtraEtaEtl2Mtd",
"Eta of tracks associated to LV extrapolated to hits, 2 ETL layers; track eta ", 66, 0., 3.3);
1423 ibook.
book1D(
"MatchedTPEtaTotLV",
"Eta of tracks associated to LV matched to TP; track eta ", 66, 0., 3.3);
1425 ibook.
book1D(
"MatchedTPPtTotLV",
"Pt of tracks associated to LV matched to TP; track pt [GeV] ", 110, 0., 11.);
1428 ibook.
book1D(
"BTLTrackMatchedTPEtaTot",
"Eta of tracks matched to TP; track eta ", 30, 0., 1.5);
1430 ibook.
book1D(
"BTLTrackMatchedTPEtaMtd",
"Eta of tracks matched to TP with time; track eta ", 30, 0., 1.5);
1432 ibook.
book1D(
"BTLTrackMatchedTPPtTot",
"Pt of tracks matched to TP; track pt [GeV] ", 50, 0., 10.);
1434 ibook.
book1D(
"BTLTrackMatchedTPPtMtd",
"Pt of tracks matched to TP with time; track pt [GeV] ", 50, 0., 10.);
1436 ibook.
book1D(
"ETLTrackMatchedTPEtaTot",
"Eta of tracks matched to TP; track eta ", 30, 1.5, 3.0);
1438 "ETLTrackMatchedTPEtaMtd",
"Eta of tracks matched to TP with time (>=1 ETL hit); track eta ", 30, 1.5, 3.0);
1440 "ETLTrackMatchedTPEta2Mtd",
"Eta of tracks matched to TP with time (2 ETL hits); track eta ", 30, 1.5, 3.0);
1442 ibook.
book1D(
"ETLTrackMatchedTPPtTot",
"Pt of tracks matched to TP; track pt [GeV] ", 50, 0., 10.);
1444 "ETLTrackMatchedTPPtMtd",
"Pt of tracks matched to TP with time (>=1 ETL hit); track pt [GeV] ", 50, 0., 10.);
1446 "ETLTrackMatchedTPPt2Mtd",
"Pt of tracks matched to TP with time (2 ETL hits); track pt [GeV] ", 50, 0., 10.);
1450 "TrackMatchedTPBTLPtResMtd",
1451 "Pt resolution of tracks matched to TP-BTL hit ;|pT_{MTDtrack}-pT_{truth}|/|pT_{Gentrack}-pT_{truth}| ",
1456 "TrackMatchedTPETLPtResMtd",
1457 "Pt resolution of tracks matched to TP-ETL hit ;|pT_{MTDtrack}-pT_{truth}|/|pT_{Gentrack}-pT_{truth}| ",
1462 "TrackMatchedTPETL2PtResMtd",
1463 "Pt resolution of tracks matched to TP-ETL 2hits ;|pT_{MTDtrack}-pT_{truth}|/|pT_{Gentrack}-pT_{truth}| ",
1468 "TrackMatchedTPBTLPtRatioGen",
"Pt ratio of Gentracks (BTL) ;pT_{Gentrack}/pT_{truth} ", 100, 0.9, 1.1);
1470 "TrackMatchedTPETLPtRatioGen",
"Pt ratio of Gentracks (ETL 1hit) ;pT_{Gentrack}/pT_{truth} ", 100, 0.9, 1.1);
1472 "TrackMatchedTPETL2PtRatioGen",
"Pt ratio of Gentracks (ETL 2hits) ;pT_{Gentrack}/pT_{truth} ", 100, 0.9, 1.1);
1474 ibook.
book1D(
"TrackMatchedTPBTLPtRatioMtd",
1475 "Pt ratio of tracks matched to TP-BTL hit ;pT_{MTDtrack}/pT_{truth} ",
1480 ibook.
book1D(
"TrackMatchedTPETLPtRatioMtd",
1481 "Pt ratio of tracks matched to TP-ETL hit ;pT_{MTDtrack}/pT_{truth} ",
1486 ibook.
book1D(
"TrackMatchedTPETL2PtRatioMtd",
1487 "Pt ratio of tracks matched to TP-ETL 2hits ;pT_{MTDtrack}/pT_{truth} ",
1492 ibook.
bookProfile(
"TrackMatchedTPBTLPtResvsPtMtd",
1493 "Pt resolution of tracks matched to TP-BTL hit vs Pt;pT_{truth} " 1494 "[GeV];|pT_{MTDtrack}-pT_{truth}|/|pT_{Gentrack}-pT_{truth}| ",
1502 ibook.
bookProfile(
"TrackMatchedTPETLPtResvsPtMtd",
1503 "Pt resolution of tracks matched to TP-ETL hit vs Pt;pT_{truth} " 1504 "[GeV];|pT_{MTDtrack}-pT_{truth}|/|pT_{Gentrack}-pT_{truth}| ",
1512 ibook.
bookProfile(
"TrackMatchedTPETL2PtResvsPtMtd",
1513 "Pt resolution of tracks matched to TP-ETL 2hits Pt pT;pT_{truth} " 1514 "[GeV];|pT_{MTDtrack}-pT_{truth}|/|pT_{Gentrack}-pT_{truth}| ",
1522 "TrackMatchedTPBTLDPtvsPtGen",
1523 "Pt relative difference of Gentracks (BTL) vs Pt;pT_{truth} [GeV];pT_{Gentrack}-pT_{truth}/pT_{truth} ",
1531 "TrackMatchedTPETLDPtvsPtGen",
1532 "Pt relative difference of Gentracks (ETL 1hit) vs Pt;pT_{truth} [GeV];pT_{Gentrack}-pT_{truth}/pT_{truth} ",
1540 "TrackMatchedTPETL2DPtvsPtGen",
1541 "Pt relative difference of Gentracks (ETL 2hits) vs Pt;pT_{truth} [GeV];pT_{Gentrack}-pT_{truth}/pT_{truth} ",
1549 "Pt relative difference of tracks matched to TP-BTL hits vs " 1550 "Pt;pT_{truth} [GeV];pT_{MTDtrack}-pT_{truth}/pT_{truth} ",
1558 "Pt relative difference of tracks matched to TP-ETL hits vs " 1559 "Pt;pT_{truth} [GeV];pT_{MTDtrack}-pT_{truth}/pT_{truth} ",
1567 "Pt relative difference of tracks matched to TP-ETL 2hits vs " 1568 "Pt;pT_{truth} [GeV];pT_{MTDtrack}-pT_{truth}/pT_{truth} ",
1578 "TrackRes",
"t_{rec} - t_{sim} for LV associated tracks matched to TP; t_{rec} - t_{sim} [ns] ", 120, -0.15, 0.15);
1580 "TrackPull",
"Pull for LV associated tracks matched to TP; (t_{rec}-t_{sim})/#sigma_{t}", 50, -5., 5.);
1583 "t_{rec} - t_{sim} for LV associated tracks matched to TP vs MVA Quality; MVAQual; t_{rec} - t_{sim} [ns] ",
1592 "Pull for LV associated tracks matched to TP vs MVA Quality; MVAQual; (t_{rec}-t_{sim})/#sigma_{t}",
1601 "ExtraPhiAtBTL",
"Phi at BTL surface of extrapolated tracks associated to LV; phi [deg]", 720, -180., 180.);
1603 ibook.
book1D(
"ExtraPhiAtBTLmatched",
1604 "Phi at BTL surface of extrapolated tracks associated to LV matched with BTL hits; phi [deg]",
1609 ibook.
book1D(
"ExtraBTLeneInCone",
1610 "BTL reconstructed energy in cone arounnd extrapolated track associated to LV; E [MeV]",
1615 ibook.
book1D(
"ExtraMTDfailExtenderEta",
1616 "Eta of tracks associated to LV extrapolated to MTD with no track extender match to hits; track eta",
1622 "ExtraMTDfailExtenderPt",
1623 "Pt of tracks associated to LV extrapolated to MTD with no track extender match to hits; track pt [GeV] ",
1630 ibook.
book1D(
"BTLTrackMatchedTPmtdDirectEta",
1631 "Eta of tracks matched to TP with sim hit in MTD (direct);#eta_{RECO}",
1636 ibook.
book1D(
"BTLTrackMatchedTPmtdDirectPt",
1637 "Pt of tracks matched to TP with sim hit in MTD (direct); track pt [GeV]",
1643 "Eta of tracks matched to TP with sim hit in MTD (other);#eta_{RECO}",
1648 ibook.
book1D(
"BTLTrackMatchedTPmtdOtherPt",
1649 "Pt of tracks matched to TP with sim hit in MTD (other); track pt [GeV]",
1655 "BTLTrackMatchedTPnomtdEta",
"Eta of tracks matched to TP w/o sim hit in MTD;#eta_{RECO}", 30, 0., 1.5);
1657 "BTLTrackMatchedTPnomtdPt",
"Pt of tracks matched to TP w/o sim hit in MTD; track pt [GeV]", 50, 0., 10.);
1660 "BTLTrackMatchedTPmtdDirectCorrectAssocEta",
1661 "Eta of tracks matched to TP with sim hit in MTD (direct), correct track-MTD association;#eta_{RECO}",
1666 "BTLTrackMatchedTPmtdDirectCorrectAssocPt",
1667 "Pt of tracks matched to TP with sim hit in MTD (direct) - correct track-MTD association;track pt [GeV]",
1672 "BTLTrackMatchedTPmtdDirectCorrectAssocMVAQual",
1673 "MVA of tracks matched to TP with sim hit in MTD (direct) - correct track-MTD association; MVA score",
1678 ibook.
book1D(
"BTLTrackMatchedTPmtdDirectCorrectAssocTimeRes",
1679 "Time resolution of tracks matched to TP with sim hit in MTD (direct) - correct track-MTD " 1680 "association; t_{rec} - t_{sim} [ns] ",
1685 ibook.
book1D(
"BTLTrackMatchedTPmtdDirectCorrectAssocTimePull",
1686 "Time pull of tracks matched to TP with sim hit in MTD (direct) - correct track-MTD association; " 1687 "(t_{rec}-t_{sim})/#sigma_{t}",
1693 ibook.
book1D(
"BTLTrackMatchedTPmtdDirectWrongAssocEta",
1694 "Eta of tracks matched to TP with sim hit in MTD (direct) - wrong track-MTD association;#eta_{RECO}",
1699 "BTLTrackMatchedTPmtdDirectWrongAssocPt",
1700 "Pt of tracks matched to TP with sim hit in MTD (direct) - wrong track-MTD association;track pt [GeV]",
1705 ibook.
book1D(
"BTLTrackMatchedTPmtdDirectWrongAssocMVAQual",
1706 "MVA of tracks matched to TP with sim hit in MTD (direct) - wrong track-MTD association; MVA score",
1711 ibook.
book1D(
"BTLTrackMatchedTPmtdDirectWrongAssocTimeRes",
1712 "Time resolution of tracks matched to TP with sim hit in MTD (direct) - wrong track-MTD " 1713 "association; t_{rec} - t_{sim} [ns] ",
1718 ibook.
book1D(
"BTLTrackMatchedTPmtdDirectWrongAssocTimePull",
1719 "Time pull of tracks matched to TP with sim hit in MTD (direct) - wrong track-MTD association; " 1720 "(t_{rec}-t_{sim})/#sigma_{t}",
1726 ibook.
book1D(
"BTLTrackMatchedTPmtdDirectNoAssocEta",
1727 "Eta of tracks matched to TP with sim hit in MTD (direct) - no track-MTD association;#eta_{RECO}",
1732 ibook.
book1D(
"BTLTrackMatchedTPmtdDirectNoAssocPt",
1733 "Pt of tracks matched to TP with sim hit in MTD (direct) - no track-MTD association;track pt [GeV]",
1739 "BTLTrackMatchedTPmtdOtherCorrectAssocEta",
1740 "Eta of tracks matched to TP with sim hit in MTD (direct), correct track-MTD association;#eta_{RECO}",
1745 "BTLTrackMatchedTPmtdOtherCorrectAssocPt",
1746 "Pt of tracks matched to TP with sim hit in MTD (direct) - correct track-MTD association;track pt [GeV]",
1751 "BTLTrackMatchedTPmtdOtherCorrectAssocMVAQual",
1752 "MVA of tracks matched to TP with sim hit in MTD (direct) - correct track-MTD association; MVA score",
1757 ibook.
book1D(
"BTLTrackMatchedTPmtdOtherCorrectAssocTimeRes",
1758 "Time resolution of tracks matched to TP with sim hit in MTD (direct) - correct track-MTD " 1759 "association; t_{rec} - t_{sim} [ns] ",
1764 ibook.
book1D(
"BTLTrackMatchedTPmtdOtherCorrectAssocTimePull",
1765 "Time pull of tracks matched to TP with sim hit in MTD (direct) - correct track-MTD association; " 1766 "(t_{rec}-t_{sim})/#sigma_{t}",
1772 ibook.
book1D(
"BTLTrackMatchedTPmtdOtherWrongAssocEta",
1773 "Eta of tracks matched to TP with sim hit in MTD (direct) - wrong track-MTD association;#eta_{RECO}",
1778 "BTLTrackMatchedTPmtdOtherWrongAssocPt",
1779 "Pt of tracks matched to TP with sim hit in MTD (direct) - wrong track-MTD association;track pt [GeV]",
1784 ibook.
book1D(
"BTLTrackMatchedTPmtdOtherWrongAssocMVAQual",
1785 "MVA of tracks matched to TP with sim hit in MTD (direct) - wrong track-MTD association; MVA score",
1790 ibook.
book1D(
"BTLTrackMatchedTPmtdOtherWrongAssocTimeRes",
1791 "Time resolution of tracks matched to TP with sim hit in MTD (direct) - wrong track-MTD " 1792 "association; t_{rec} - t_{sim} [ns] ",
1797 ibook.
book1D(
"BTLTrackMatchedTPmtdOtherWrongAssocTimePull",
1798 "Time pull of tracks matched to TP with sim hit in MTD (direct) - wrong track-MTD association; " 1799 "(t_{rec}-t_{sim})/#sigma_{t}",
1805 ibook.
book1D(
"BTLTrackMatchedTPmtdOtherNoAssocEta",
1806 "Eta of tracks matched to TP with sim hit in MTD (direct) - no track-MTD association;#eta_{RECO}",
1811 ibook.
book1D(
"BTLTrackMatchedTPmtdOtherNoAssocPt",
1812 "Pt of tracks matched to TP with sim hit in MTD (direct) - no track-MTD association;track pt [GeV]",
1818 ibook.
book1D(
"BTLTrackMatchedTPnomtdAssocEta",
1819 "Eta of tracks matched to TP w/o sim hit in MTD, with associated reco cluster;#eta_{RECO}",
1824 ibook.
book1D(
"BTLTrackMatchedTPnomtdAssocPt",
1825 "Pt of tracks matched to TP w/o sim hit in MTD, with associated reco cluster;track pt [GeV]",
1830 ibook.
book1D(
"BTLTrackMatchedTPnomtdAssocMVAQual",
1831 "MVA of tracks matched to TP w/o sim hit in MTD, with associated reco cluster; MVA score",
1836 "Time resolution of tracks matched to TP w/o sim hit in MTD, " 1837 "with associated reco cluster; t_{rec} - t_{sim} [ns] ",
1842 "Time pull of tracks matched to TP w/o sim hit in MTD, with " 1843 "associated reco cluster; (t_{rec}-t_{sim})/#sigma_{t}",
1849 "Eta of tracks matched to TP with sim hit in MTD (>= 1 hit);#eta_{RECO}",
1854 "Pt of tracks matched to TP with sim hit in MTD (>= 1 hit); track pt [GeV]",
1860 "ETLTrackMatchedTPmtd2Eta",
"Eta of tracks matched to TP with sim hit in MTD (2 hits);#eta_{RECO}", 30, 1.5, 3.0);
1862 "ETLTrackMatchedTPmtd2Pt",
"Pt of tracks matched to TP with sim hit in MTD (2 hits); track pt [GeV]", 50, 0., 10.);
1865 "ETLTrackMatchedTPnomtdEta",
"Eta of tracks matched to TP w/o sim hit in MTD;#eta_{RECO}", 30, 1.5, 3.0);
1867 "ETLTrackMatchedTPnomtdPt",
"Pt of tracks matched to TP w/o sim hit in MTD; track pt [GeV]", 50, 0., 10.);
1870 "ETLTrackMatchedTPmtd1CorrectAssocEta",
1871 "Eta of tracks matched to TP with sim hit in MTD (>= 1 hit), correct track-MTD association;#eta_{RECO}",
1876 "ETLTrackMatchedTPmtd1CorrectAssocPt",
1877 "Pt of tracks matched to TP with sim hit in MTD (>= 1 hit) - correct track-MTD association;track pt [GeV]",
1882 "ETLTrackMatchedTPmtd1CorrectAssocMVAQual",
1883 "MVA of tracks matched to TP with sim hit in MTD (>= 1 hit) - correct track-MTD association; MVA score",
1888 ibook.
book1D(
"ETLTrackMatchedTPmtd1CorrectAssocTimeRes",
1889 "Time resolution of tracks matched to TP with sim hit in MTD (>= 1 hit) - correct track-MTD " 1890 "association; t_{rec} - t_{sim} [ns] ",
1895 ibook.
book1D(
"ETLTrackMatchedTPmtd1CorrectAssocTimePull",
1896 "Time pull of tracks matched to TP with sim hit in MTD (>= 1 hit) - correct track-MTD association; " 1897 "(t_{rec}-t_{sim})/#sigma_{t}",
1903 "ETLTrackMatchedTPmtd2CorrectAssocEta",
1904 "Eta of tracks matched to TP with sim hit in MTD (2 hits), correct track-MTD association;#eta_{RECO}",
1909 "ETLTrackMatchedTPmtd2CorrectAssocPt",
1910 "Pt of tracks matched to TP with sim hit in MTD (2 hits) - correct track-MTD association;track pt [GeV]",
1915 "ETLTrackMatchedTPmtd2CorrectAssocMVAQual",
1916 "MVA of tracks matched to TP with sim hit in MTD (2 hits) - correct track-MTD association; MVA score",
1921 ibook.
book1D(
"ETLTrackMatchedTPmtd2CorrectAssocTimeRes",
1922 "Time resolution of tracks matched to TP with sim hit in MTD (2 hits) - correct track-MTD " 1923 "association; t_{rec} - t_{sim} [ns] ",
1928 ibook.
book1D(
"ETLTrackMatchedTPmtd2CorrectAssocTimePull",
1929 "Time pull of tracks matched to TP with sim hit in MTD (2 hits) - correct track-MTD association; " 1930 "(t_{rec}-t_{sim})/#sigma_{t}",
1936 "ETLTrackMatchedTPmtd1WrongAssocEta",
1937 "Eta of tracks matched to TP with sim hit in MTD (>= 1 hit), wrong track-MTD association;#eta_{RECO}",
1942 "ETLTrackMatchedTPmtd1WrongAssocPt",
1943 "Pt of tracks matched to TP with sim hit in MTD (>= 1 hit) - wrong track-MTD association;track pt [GeV]",
1948 "ETLTrackMatchedTPmtd1WrongAssocMVAQual",
1949 "MVA of tracks matched to TP with sim hit in MTD (>= 1 hit) - wrong track-MTD association; MVA score",
1954 ibook.
book1D(
"ETLTrackMatchedTPmtd1WrongAssocTimeRes",
1955 "Time resolution of tracks matched to TP with sim hit in MTD (>= 1 hit) - wrong track-MTD " 1956 "association; t_{rec} - t_{sim} [ns] ",
1961 ibook.
book1D(
"ETLTrackMatchedTPmtd1WrongAssocTimePull",
1962 "Time pull of tracks matched to TP with sim hit in MTD (>= 1 hit) - wrong track-MTD association; " 1963 "(t_{rec}-t_{sim})/#sigma_{t}",
1969 ibook.
book1D(
"ETLTrackMatchedTPmtd2WrongAssocEta",
1970 "Eta of tracks matched to TP with sim hit in MTD (2 hits), wrong track-MTD association;#eta_{RECO}",
1975 "ETLTrackMatchedTPmtd2WrongAssocPt",
1976 "Pt of tracks matched to TP with sim hit in MTD (2 hits) - wrong track-MTD association;track pt [GeV]",
1981 ibook.
book1D(
"ETLTrackMatchedTPmtd2WrongAssocMVAQual",
1982 "MVA of tracks matched to TP with sim hit in MTD (2 hits) - wrong track-MTD association; MVA score",
1987 ibook.
book1D(
"ETLTrackMatchedTPmtd2WrongAssocTimeRes",
1988 "Time resolution of tracks matched to TP with sim hit in MTD (2 hits) - wrong track-MTD " 1989 "association; t_{rec} - t_{sim} [ns] ",
1994 ibook.
book1D(
"ETLTrackMatchedTPmtd2WrongAssocTimePull",
1995 "Time pull of tracks matched to TP with sim hit in MTD (2 hits) - wrong track-MTD association; " 1996 "(t_{rec}-t_{sim})/#sigma_{t}",
2002 "ETLTrackMatchedTPmtd1NoAssocEta",
2003 "Eta of tracks matched to TP with sim hit in MTD (>= 1 hit), missing track-MTD association;#eta_{RECO}",
2008 "ETLTrackMatchedTPmtd1NoAssocPt",
2009 "Pt of tracks matched to TP with sim hit in MTD (>= 1 hit) - missing track-MTD association;track pt [GeV]",
2015 "ETLTrackMatchedTPmtd2NoAssocEta",
2016 "Eta of tracks matched to TP with sim hit in MTD (2 hits), missing track-MTD association;#eta_{RECO}",
2021 "ETLTrackMatchedTPmtd2NoAssocPt",
2022 "Pt of tracks matched to TP with sim hit in MTD (2 hits) - missing track-MTD association;track pt [GeV]",
2027 ibook.
book1D(
"ETLTrackMatchedTPnomtdAssocEta",
2028 "Eta of tracks matched to TP w/o sim hit in MTD, with associated reco cluster;#eta_{RECO}",
2033 ibook.
book1D(
"ETLTrackMatchedTPnomtdAssocPt",
2034 "Pt of tracks matched to TP w/o sim hit in MTD, with associated reco cluster;track pt [GeV]",
2039 ibook.
book1D(
"ETLTrackMatchedTPnomtdAssocMVAQual",
2040 "MVA of tracks matched to TP w/o sim hit in MTD, with associated reco cluster; MVA score",
2045 "Time resolution of tracks matched to TP w/o sim hit in MTD, " 2046 "with associated reco cluster; t_{rec} - t_{sim} [ns] ",
2051 "Time pull of tracks matched to TP w/o sim hit in MTD, with " 2052 "associated reco cluster; (t_{rec}-t_{sim})/#sigma_{t}",
2064 desc.add<
bool>(
"optionalPlots",
false);
2082 ->setComment(
"Association between General and MTD Extended tracks");
2093 edm::InputTag(
"trackExtenderWithMTD:generalTrackOutermostHitPosition"));
2094 desc.add<
double>(
"trackMaximumPt", 12.);
2095 desc.add<
double>(
"trackMaximumBtlEta", 1.5);
2096 desc.add<
double>(
"trackMinimumEtlEta", 1.6);
2097 desc.add<
double>(
"trackMaximumEtlEta", 3.);
2099 descriptions.
add(
"mtdTracksValid",
desc);
2103 bool match = (
tp.status() != 1) ?
false :
true;
2110 auto x_pv =
tp.parentVertex()->position().x();
2111 auto y_pv =
tp.parentVertex()->position().y();
2112 auto z_pv =
tp.parentVertex()->position().z();
2114 auto r_pv =
std::sqrt(x_pv * x_pv + y_pv * y_pv);
2141 for (
const auto&
tp :
found->val) {
2142 if (
tp.first->eventId().bunchCrossing() == 0)
MonitorElement * meBTLTrackMatchedTPmtdDirectCorrectAssocTimePull_
edm::EDGetTokenT< edm::ValueMap< int > > trackAssocToken_
static constexpr double etacutGEN_
MonitorElement * meETLTrackMatchedTPmtd2CorrectAssocEta_
Log< level::Info, true > LogVerbatim
MonitorElement * meBTLTrackMatchedTPPtResMtd_
edm::Ref< typename HandleT::element_type, typename HandleT::element_type::value_type::value_type > makeRefTo(const HandleT &iHandle, typename HandleT::element_type::value_type::const_iterator itIter)
MonitorElement * meETLTrackPt2Mtd_
edm::EDGetTokenT< edm::ValueMap< float > > trackMVAQualToken_
MonitorElement * meETLTrackEtaTotLowPt_[2]
edm::EDGetTokenT< edm::ValueMap< float > > pathLengthToken_
MonitorElement * meBTLTrackMatchedTPmtdOtherCorrectAssocEta_
MonitorElement * meETLTrackPtTot_
T getParameter(std::string const &) const
MonitorElement * meETLTrackMatchedTPPtResvsPtMtd_
MonitorElement * meTrackNumHits_
MonitorElement * meTrackt0Pid_
MonitorElement * meExtraMTDfailExtenderEta_
MonitorElement * meETLTrackEta2MtdLowPt_[2]
const std::pair< bool, bool > checkAcceptance(const reco::Track &, const edm::Event &, const edm::EventSetup &, size_t &, float &, float &, float &, float &)
MonitorElement * meETLTrackMatchedTPmtd1NoAssocTimeRes_
MonitorElement * meETLTrackMatchedTP2DPtvsPtGen_
const bool optionalPlots_
MonitorElement * meETLTrackRPTime_
MonitorElement * meBTLTrackMatchedTPmtdOtherCorrectAssocPt_
MonitorElement * meTrackPullTotvsMVAQual_
MonitorElement * meETLTrackMatchedTP2PtResMtd_
edm::EDGetTokenT< edm::ValueMap< float > > t0SafePidToken_
edm::EDGetTokenT< edm::ValueMap< float > > t0SrcToken_
edm::EDGetTokenT< FTLClusterCollection > btlRecCluToken_
static constexpr double rBTL_
MonitorElement * meETLTrackMatchedTPmtd2CorrectAssocPt_
MonitorElement * meETLTrackMatchedTP2PtRatioMtd_
MonitorElement * meETLTrackMatchedTPmtd1NoAssocEta_
edm::ESGetToken< MTDTopology, MTDTopologyRcd > mtdtopoToken_
MonitorElement * meETLTrackMatchedTPmtd2NoAssocEta_
virtual void setCurrentFolder(std::string const &fullpath)
MonitorElement * meETLTrackMatchedTPmtd2WrongAssocTimePull_
const std::string folder_
MonitorElement * meBTLTrackMatchedTPmtdDirectNoAssocPt_
const bool trkRecSel(const reco::TrackBase &)
MonitorElement * meBTLTrackMatchedTPEtaMtd_
MonitorElement * meETLTrackMatchedTPmtd1WrongAssocPt_
MonitorElement * meBTLTrackMatchedTPmtdDirectCorrectAssocTimeRes_
static constexpr double pTcutETL_
virtual const Topology & topology() const
MonitorElement * meETLTrackMatchedTPmtd2NoAssocPt_
MonitorElement * meETLTrackMatchedTPEta2Mtd_
edm::ESGetToken< TransientTrackBuilder, TransientTrackRecord > builderToken_
MonitorElement * meETLTrackMatchedTPmtd1CorrectAssocPt_
MonitorElement * meBTLTrackMatchedTPmtdDirectEta_
constexpr NumType convertRadToDeg(NumType radians)
virtual const PixelTopology & specificTopology() const
MonitorElement * meETLTrackMatchedTP2PtResvsPtMtd_
MonitorElement * meTrackResTotvsMVAQual_
MonitorElement * meBTLTrackMatchedTPmtdDirectWrongAssocPt_
MonitorElement * meETLTrackMatchedTPmtd2WrongAssocPt_
MonitorElement * meETLTrackMatchedTPmtd1WrongAssocTimePull_
static constexpr double etacutREC_
MonitorElement * meBTLTrackPtRes_
FTLCluster const & mtdCluster() const
MonitorElement * meBTLTrackMatchedTPnomtdAssocTimeRes_
edm::EDGetTokenT< edm::ValueMap< float > > tmtdToken_
int mtdSubDetector() const
MonitorElement * meBTLTrackMatchedTPmtdOtherNoAssocEta_
MonitorElement * meExtraBTLeneInCone_
MonitorElement * meETLTrackMatchedTPmtd1Pt_
MonitorElement * meETLTrackMatchedTPmtd1Eta_
MonitorElement * meETLTrackMatchedTPEtaMtd_
edm::EDGetTokenT< edm::ValueMap< float > > outermostHitPositionToken_
MonitorElement * meExtraMTDfailExtenderPt_
MonitorElement * meExtraEtaMtd_
MonitorElement * meETLTrackMatchedTPmtd2NoAssocMVAQual_
const float trackMaxEtlEta_
MonitorElement * meBTLTrackMatchedTPnomtdEta_
const float trackMaxBtlEta_
MonitorElement * meBTLTrackMatchedTPmtdOtherPt_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
const unsigned long int uniqueId(const uint32_t x, const EncodedEventId &y)
MonitorElement * meBTLTrackMatchedTPPtRatioMtd_
LocalPoint pixelToModuleLocalPoint(const LocalPoint &plp, int row, int col) const
MonitorElement * meETLTrackMatchedTPEtaTot_
static constexpr double cluDRradius_
const reco::RecoToSimCollection * r2s_
const edm::Ref< std::vector< TrackingParticle > > * getMatchedTP(const reco::TrackBaseRef &)
const_iterator find(const key_type &k) const
find element with specified reference key
Detector identifier base class for the MIP Timing Layer.
MonitorElement * meETLTrackMatchedTP2PtRatioGen_
MonitorElement * meETLTrackMatchedTPmtd2NoAssocTimePull_
MonitorElement * meETLTrackMatchedTPPtMtd_
edm::EDGetTokenT< reco::TrackCollection > GenRecTrackToken_
MonitorElement * meBTLTrackEtaMtd_
edm::EDGetTokenT< reco::TPToSimCollectionMtd > tp2SimAssociationMapToken_
MonitorElement * meETLTrackMatchedTPmtd2Pt_
MonitorElement * meTrackResTot_
const_iterator end() const
last iterator over the map (read only)
edm::EDGetTokenT< MtdRecoClusterToSimLayerClusterAssociationMap > r2sAssociationMapToken_
U second(std::pair< T, U > const &p)
MonitorElement * meBTLTrackMatchedTPmtdDirectWrongAssocTimePull_
MonitorElement * meBTLTrackMatchedTPmtdDirectWrongAssocEta_
MonitorElement * meETLTrackMatchedTPmtd2WrongAssocEta_
edm::EDGetTokenT< edm::ValueMap< float > > SigmaTofPToken_
edm::EDGetTokenT< reco::TrackCollection > RecTrackToken_
MonitorElement * meExtraEtaEtl2Mtd_
edm::ESGetToken< MTDDetLayerGeometry, MTDRecoGeometryRecord > mtdlayerToken_
MonitorElement * meETLTrackMatchedTPmtd2Eta_
const bool trkTPSelAll(const TrackingParticle &)
MonitorElement * meBTLTrackMatchedTPnomtdAssocTimePull_
MonitorElement * meETLTrackMatchedTPnomtdEta_
GlobalPoint globalPosition() const
float localX(const float mpX) const override
MonitorElement * meETLTrackMatchedTPmtd1WrongAssocTimeRes_
edm::EDGetTokenT< FTLRecHitCollection > etlRecHitsToken_
MonitorElement * meBTLTrackMatchedTPmtdOtherWrongAssocTimePull_
MonitorElement * meBTLTrackRPTime_
MonitorElement * meBTLTrackMatchedTPDPtvsPtMtd_
static constexpr double depositBTLthreshold_
MonitorElement * meETLTrackPtRes_
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
MonitorElement * meETLTrackEta2Mtd_
const bool trkTPSelLV(const TrackingParticle &)
MonitorElement * meETLTrackEtaMtd_
MonitorElement * meETLTrackMatchedTPDPtvsPtGen_
MonitorElement * meTrackt0SafePid_
MonitorElement * meETLTrackMatchedTPmtd2WrongAssocTimeRes_
MonitorElement * meBTLTrackMatchedTPmtdOtherWrongAssocMVAQual_
void fillTrackClusterMatchingHistograms(MonitorElement *me1, MonitorElement *me2, MonitorElement *me3, MonitorElement *me4, MonitorElement *me5, float var1, float var2, float var3, float var4, float var5, bool flag)
MonitorElement * meBTLTrackMatchedTPmtdDirectCorrectAssocMVAQual_
MonitorElement * meETLTrackMatchedTPDPtvsPtMtd_
MonitorElement * meTrackMatchedTPEtaTotLV_
MonitorElement * meBTLTrackMatchedTPmtdOtherWrongAssocTimeRes_
Abs< T >::type abs(const T &t)
MonitorElement * meETLTrackMatchedTPmtd1NoAssocPt_
MonitorElement * meETLTrackMatchedTPmtd1WrongAssocEta_
MonitorElement * meBTLTrackMatchedTPmtdOtherWrongAssocEta_
MonitorElement * meBTLTrackPtMtd_
MonitorElement * meETLTrackMatchedTPnomtdAssocEta_
bool isETL(const double eta) const
MonitorElement * meETLTrackMatchedTPmtd2NoAssocTimeRes_
MonitorElement * meETLTrackPtMtd_
MonitorElement * meBTLTrackMatchedTPnomtdAssocPt_
bool isMatched(TrackingRecHit const &hit)
MonitorElement * meBTLTrackMatchedTPPtResvsPtMtd_
MonitorElement * meTrackSigmaTof_[3]
#define DEFINE_FWK_MODULE(type)
int nrows() const override
MonitorElement * meBTLTrackMatchedTPmtdOtherWrongAssocPt_
MonitorElement * meBTLTrackEtaTot_
MonitorElement * meETLTrackPhi2Mtd_
static constexpr double simUnit_
MonitorElement * meTrackOutermostHitZ_
MonitorElement * meETLTrackMatchedTPnomtdAssocTimeRes_
MonitorElement * meBTLTrackMatchedTPmtdOtherNoAssocPt_
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
edm::EDGetTokenT< edm::ValueMap< float > > t0PidToken_
edm::EDGetTokenT< FTLRecHitCollection > btlRecHitsToken_
MonitorElement * meETLTrackMatchedTPPtRatioMtd_
MonitorElement * meTrackMVAQual_
MonitorElement * meETLTrackMatchedTPPtTot_
MonitorElement * meETLTrackMatchedTPmtd2CorrectAssocTimeRes_
float localY(const float mpY) const override
MonitorElement * meBTLTrackMatchedTPmtdDirectWrongAssocMVAQual_
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
const std::vector< const DetLayer * > & allBTLLayers() const
return the BTL DetLayers (barrel), inside-out
edm::EDGetTokenT< edm::ValueMap< float > > SigmatmtdToken_
MonitorElement * meBTLTrackPhiTot_
const bool trkRecSelLowPt(const reco::TrackBase &)
MonitorElement * meETLTrackMatchedTPmtd2CorrectAssocMVAQual_
MonitorElement * meETLTrackMatchedTPnomtdAssocMVAQual_
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
edm::EDGetTokenT< TrackingParticleCollection > trackingParticleCollectionToken_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
MonitorElement * meTrackNumHitsNT_
edm::EDGetTokenT< edm::ValueMap< float > > SigmaTofPiToken_
MonitorElement * meETLTrackMatchedTPmtd1NoAssocMVAQual_
Log< level::Info, false > LogInfo
const float trackMinEtlEta_
MonitorElement * meETLTrackMatchedTPmtd2WrongAssocMVAQual_
MonitorElement * meETLTrackMatchedTPmtd2CorrectAssocTimePull_
edm::EDGetTokenT< reco::SimToRecoCollection > simToRecoAssociationToken_
MonitorElement * meTrackOutermostHitR_
static constexpr double etaMatchCut_
static constexpr double zETL_
static constexpr double depositETLthreshold_
unsigned long long uint64_t
MonitorElement * meETLTrackMatchedTPnomtdAssocTimePull_
MonitorElement * meETLTrackMatchedTPmtd1CorrectAssocMVAQual_
MonitorElement * meBTLTrackMatchedTPEtaTot_
constexpr uint32_t rawId() const
get the raw id
MonitorElement * meBTLTrackMatchedTPmtdOtherCorrectAssocTimePull_
MonitorElement * meBTLTrackMatchedTPmtdDirectNoAssocEta_
MonitorElement * meBTLTrackMatchedTPDPtvsPtGen_
void analyze(const edm::Event &, const edm::EventSetup &) override
MonitorElement * meTrackMatchedTPPtTotLV_
A 2D TrackerRecHit with time and time error information.
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
MonitorElement * meETLTrackMatchedTPPt2Mtd_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
MonitorElement * meTrackSigmat0SafePid_
MonitorElement * meBTLTrackMatchedTPnomtdAssocEta_
edm::EDGetTokenT< edm::ValueMap< float > > SigmaTofKToken_
MonitorElement * meTrackSigmat0Pid_
MonitorElement * meTrackt0Src_
edm::EDGetTokenT< edm::ValueMap< float > > Sigmat0PidToken_
MonitorElement * meTracktmtd_
MonitorElement * meBTLTrackPhiMtd_
MonitorElement * meBTLTrackMatchedTPmtdOtherCorrectAssocTimeRes_
MonitorElement * meTrackPathLenghtvsEta_
MonitorElement * meETLTrackMatchedTPmtd1WrongAssocMVAQual_
Detector identifier class for the Endcap Timing Layer.
MonitorElement * meETLTrackMatchedTPPtResMtd_
MonitorElement * meTrackPullTot_
MonitorElement * meBTLTrackMatchedTPPtTot_
MonitorElement * meBTLTrackMatchedTPmtdDirectCorrectAssocPt_
Detector identifier class for the Barrel Timing Layer. The crystal count must start from 0...
MonitorElement * meETLTrackMatchedTPnomtdAssocPt_
MonitorElement * meETLTrackMatchedTPPtRatioGen_
MonitorElement * meETLTrackPhiTot_
MonitorElement * meExtraPtMtd_
ESTransientHandle< T > getTransientHandle(const ESGetToken< T, R > &iToken) const
MonitorElement * meExtraPhiAtBTLmatched_
edm::EDGetTokenT< reco::RecoToSimCollection > recoToSimAssociationToken_
Monte Carlo truth information used for tracking validation.
MonitorElement * meBTLTrackMatchedTPPtRatioGen_
MonitorElement * meBTLTrackPtTot_
edm::EDGetTokenT< edm::ValueMap< float > > Sigmat0SrcToken_
MonitorElement * meBTLTrackMatchedTPmtdDirectCorrectAssocEta_
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
~MtdTracksValidation() override
MonitorElement * meExtraPtEtl2Mtd_
MonitorElement * meBTLTrackMatchedTPmtdOtherCorrectAssocMVAQual_
BTLDetId::CrysLayout crysLayoutFromTopoMode(const int &topoMode)
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
edm::EDGetTokenT< FTLClusterCollection > etlRecCluToken_
MonitorElement * meETLTrackMatchedTPmtd1CorrectAssocTimeRes_
Log< level::Warning, false > LogWarning
MonitorElement * meBTLTrackMatchedTPmtdDirectPt_
auto makeValid(const U &iOtherHandleType) noexcept(false)
MonitorElement * meETLTrackMatchedTPmtd1NoAssocTimePull_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
MonitorElement * meBTLTrackMatchedTPnomtdPt_
MonitorElement * meETLTrackMatchedTP2DPtvsPtMtd_
MonitorElement * meETLTrackEtaMtdLowPt_[2]
MonitorElement * meBTLTrackMatchedTPPtMtd_
MonitorElement * meETLTrackMatchedTPmtd1CorrectAssocEta_
MonitorElement * meETLTrackPhiMtd_
MonitorElement * meTrackSigmat0Src_
MonitorElement * meBTLTrackMatchedTPmtdOtherEta_
MonitorElement * meETLTrackEtaTot_
MonitorElement * meETLTrackMatchedTPnomtdPt_
const std::vector< const DetLayer * > & allETLLayers() const
return the ETL DetLayers (endcap), -Z to +Z
static constexpr double pTcutBTL_
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magfieldToken_
MonitorElement * meTrackSigmaTofvsP_[3]
edm::EDGetTokenT< edm::ValueMap< float > > Sigmat0SafePidToken_
MtdTracksValidation(const edm::ParameterSet &)
MonitorElement * meBTLTrackMatchedTPnomtdAssocMVAQual_
MonitorElement * meETLTrackMatchedTPmtd1CorrectAssocTimePull_
MonitorElement * meExtraPhiAtBTL_
MonitorElement * meBTLTrackMatchedTPmtdDirectWrongAssocTimeRes_