Skip to content

Commit 45742ca

Browse files
committed
Added plots to Vertex Validation to study pulls, residuals, MVA scores, sigma_t for correct/wrong/no PID tracks
1 parent eb45085 commit 45742ca

File tree

1 file changed

+248
-0
lines changed

1 file changed

+248
-0
lines changed

Validation/MtdValidation/plugins/Primary4DVertexValidation.cc

Lines changed: 248 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,42 @@ class Primary4DVertexValidation : public DQMEDAnalyzer {
530530
MonitorElement* meEndcapTruePAsPi_;
531531
MonitorElement* meEndcapTruePAsK_;
532532
MonitorElement* meEndcapTruePAsP_;
533+
534+
// Histograms for study of no PID tracks
535+
536+
//Time residual
537+
MonitorElement* meTrackTimeResCorrectPID_;
538+
MonitorElement* meTrackTimeResWrongPID_;
539+
MonitorElement* meTrackTimeResNoPID_;
540+
MonitorElement* meNoPIDTrackTimeResNoPIDType_[3];
541+
MonitorElement* meTrackTimeResNoPIDtruePi_;
542+
MonitorElement* meTrackTimeResNoPIDtrueK_;
543+
MonitorElement* meTrackTimeResNoPIDtrueP_;
544+
545+
//Time pull
546+
MonitorElement* meTrackTimePullCorrectPID_;
547+
MonitorElement* meTrackTimePullWrongPID_;
548+
MonitorElement* meTrackTimePullNoPID_;
549+
MonitorElement* meNoPIDTrackTimePullNoPIDType_[3];
550+
MonitorElement* meTrackTimePullNoPIDtruePi_;
551+
MonitorElement* meTrackTimePullNoPIDtrueK_;
552+
MonitorElement* meTrackTimePullNoPIDtrueP_;
553+
554+
//Sigma
555+
MonitorElement* meTrackTimeSigmaCorrectPID_;
556+
MonitorElement* meTrackTimeSigmaWrongPID_;
557+
MonitorElement* meTrackTimeSigmaNoPID_;
558+
MonitorElement* meNoPIDTrackSigmaNoPIDType_[3];
559+
560+
//MVA
561+
MonitorElement* meTrackMVACorrectPID_;
562+
MonitorElement* meTrackMVAWrongPID_;
563+
MonitorElement* meTrackMVANoPID_;
564+
MonitorElement* meNoPIDTrackMVANoPIDType_[3];
565+
566+
567+
568+
533569
};
534570

535571
// constructors and destructor
@@ -1207,6 +1243,168 @@ void Primary4DVertexValidation::bookHistograms(DQMStore::IBooker& ibook,
12071243
-1.,
12081244
1.,
12091245
"s");
1246+
1247+
meTrackTimeResCorrectPID_ = ibook.book1D("TrackTimeResCorrectPID",
1248+
"Time residual of tracks with correct PID; t_{rec} - t_{sim} [ns]; ",
1249+
100,
1250+
-5.,
1251+
5.);
1252+
1253+
meTrackTimeResWrongPID_ = ibook.book1D("TrackTimeResWrongPID",
1254+
"Time residual of tracks with wrong PID; t_{rec} - t_{sim} [ns]; ",
1255+
100,
1256+
-5.,
1257+
5.);
1258+
meTrackTimeResNoPID_ = ibook.book1D("TrackTimeResNoPID",
1259+
"Time residual of tracks with no PID; t_{rec} - t_{sim} [ns]; ",
1260+
100,
1261+
-5.,
1262+
5.);
1263+
meTrackTimeResNoPIDtruePi_ = ibook.book1D("TrackTimeResNoPIDtruePi",
1264+
"Time residual of no PID tracks, true Pi; t_{rec} - t_{sim} [ns]; ",
1265+
100,
1266+
-5.,
1267+
5.);
1268+
1269+
meTrackTimeResNoPIDtrueK_ = ibook.book1D("TrackTimeResNoPIDtrueK",
1270+
"Time residual of no PID tracks, true K; t_{rec} - t_{sim} [ns]; ",
1271+
100,
1272+
-5.,
1273+
5.);
1274+
meTrackTimeResNoPIDtrueP_ = ibook.book1D("TrackTimeResNoPIDtrueP",
1275+
"Time residual of no PID tracks, true P; t_{rec} - t_{sim} [ns]; ",
1276+
100,
1277+
-5.,
1278+
5.);
1279+
1280+
meNoPIDTrackTimeResNoPIDType_[0] = ibook.book1D("NoPIDTrackTimeResNoPIDType1",
1281+
"Time residual of no PID tracks, no PID type 1; t_{rec} - t_{sim} [ns];",
1282+
100,
1283+
-5.,
1284+
5.);
1285+
1286+
meNoPIDTrackTimeResNoPIDType_[1] = ibook.book1D("NoPIDTrackTimeResNoPIDType2",
1287+
"Time residual of no PID tracks, no PID type 2; t_{rec} - t_{sim} [ns];",
1288+
100,
1289+
-5.,
1290+
5.);
1291+
meNoPIDTrackTimeResNoPIDType_[2] = ibook.book1D("NoPIDTrackTimeResNoPIDType3",
1292+
"Time residual of no PID tracks, no PID type 3; t_{rec} - t_{sim} [ns];",
1293+
100,
1294+
-5.,
1295+
5.);
1296+
1297+
meTrackTimePullCorrectPID_ = ibook.book1D("TrackTimePullCorrectPID",
1298+
"Time pull of tracks with correct PID; (t_{rec} - t_{sim})/#sigma_{t rec}; ",
1299+
100,
1300+
-10.,
1301+
10.);
1302+
1303+
meTrackTimePullWrongPID_ = ibook.book1D("TrackTimePullWrongPID",
1304+
"Time pull of tracks with wrong PID; (t_{rec} - t_{sim})/#sigma_{t rec}; ",
1305+
100,
1306+
-10.,
1307+
10.);
1308+
meTrackTimePullNoPID_ = ibook.book1D("TrackTimePullNoPID",
1309+
"Time pull of tracks with no PID; (t_{rec} - t_{sim})/#sigma_{t rec}; ",
1310+
100,
1311+
-10.,
1312+
10.);
1313+
1314+
meTrackTimePullNoPIDtruePi_ = ibook.book1D("TrackTimePullNoPIDtruePi",
1315+
"Time pull of no PID tracks, true Pi; (t_{rec} - t_{sim})/#sigma_{t rec}; ",
1316+
100,
1317+
-10.,
1318+
10.);
1319+
meTrackTimePullNoPIDtrueK_ = ibook.book1D("TrackTimePullNoPIDtrueK",
1320+
"Time pull of no PID tracks, true K; (t_{rec} - t_{sim})/#sigma_{t rec}; ",
1321+
100,
1322+
-10.,
1323+
10.);
1324+
meTrackTimePullNoPIDtrueP_ = ibook.book1D("TrackTimePullNoPIDtrueP",
1325+
"Time pull of no PID tracks, true P; (t_{rec} - t_{sim})/#sigma_{t rec}; ",
1326+
100,
1327+
-10.,
1328+
10.);
1329+
1330+
meNoPIDTrackTimePullNoPIDType_[0] = ibook.book1D("NoPIDTrackTimePullNoPIDType1",
1331+
"Time pull of no PID tracks, no PID type 1; (t_{rec} - t_{sim})/#sigma_{t rec}; ",
1332+
100,
1333+
-10.,
1334+
10.);
1335+
meNoPIDTrackTimePullNoPIDType_[1] = ibook.book1D("NoPIDTrackTimePullNoPIDType2",
1336+
"Time pull of no PID tracks, no PID type 2; (t_{rec} - t_{sim})/#sigma_{t rec}; ",
1337+
100,
1338+
-10.,
1339+
10.);
1340+
meNoPIDTrackTimePullNoPIDType_[2] = ibook.book1D("NoPIDTrackTimePullNoPIDType3",
1341+
"Time pull of no PID tracks, no PID type 3; (t_{rec} - t_{sim})/#sigma_{t rec}; ",
1342+
100,
1343+
-10.,
1344+
10.);
1345+
1346+
meTrackTimeSigmaCorrectPID_ = ibook.book1D("TrackTimeSigmaCorrectPID",
1347+
"Time sigma of tracks with correct PID; #sigma_{t0Safe} [ns]; ",
1348+
100,
1349+
0.,
1350+
4.);
1351+
meTrackTimeSigmaWrongPID_ = ibook.book1D("TrackTimeSigmaWrongPID",
1352+
"Time sigma of tracks with wrong PID; #sigma_{t0Safe} [ns]; ",
1353+
100,
1354+
0.,
1355+
4.);
1356+
meTrackTimeSigmaNoPID_ = ibook.book1D("TrackTimeSigmaNoPID",
1357+
"Time sigma of tracks with no PID; #sigma_{t0Safe} [ns]; ",
1358+
100,
1359+
0.,
1360+
4.);
1361+
meNoPIDTrackSigmaNoPIDType_[0] = ibook.book1D("NoPIDTrackSigmaNoPIDType1",
1362+
"Time sigma of no PID tracks, no PID type 1; #sigma_{t0Safe} [ns]; ",
1363+
100,
1364+
0.,
1365+
4.);
1366+
meNoPIDTrackSigmaNoPIDType_[1] = ibook.book1D("NoPIDTrackSigmaNoPIDType2",
1367+
"Time sigma of no PID tracks, no PID type 2; #sigma_{t0Safe} [ns]; ",
1368+
100,
1369+
0.,
1370+
4.);
1371+
meNoPIDTrackSigmaNoPIDType_[2] = ibook.book1D("NoPIDTrackSigmaNoPIDType3",
1372+
"Time sigma of no PID tracks, no PID type 3; #sigma_{t0Safe} [ns]; ",
1373+
100,
1374+
0.,
1375+
4.);
1376+
meTrackMVACorrectPID_ = ibook.book1D("TrackMVACorrectPID",
1377+
"MVA of tracks with correct PID; MVA score; ",
1378+
100,
1379+
0.,
1380+
1.);
1381+
1382+
meTrackMVAWrongPID_ = ibook.book1D("TrackMVAWrongPID",
1383+
"MVA of tracks with wrong PID; MVA score; ",
1384+
100,
1385+
0.,
1386+
1.);
1387+
meTrackMVANoPID_ = ibook.book1D("TrackMVANoPID",
1388+
"MVA of tracks with no PID; MVA score; ",
1389+
100,
1390+
0.,
1391+
1.);
1392+
meNoPIDTrackMVANoPIDType_[0] = ibook.book1D("NoPIDTrackMVANoPIDType1",
1393+
"MVA of no PID tracks, no PID type 1; MVA score; ",
1394+
100,
1395+
0.,
1396+
1.);
1397+
meNoPIDTrackMVANoPIDType_[1] = ibook.book1D("NoPIDTrackMVANoPIDType2",
1398+
"MVA of no PID tracks, no PID type 2; MVA score; ",
1399+
100,
1400+
0.,
1401+
1.);
1402+
meNoPIDTrackMVANoPIDType_[2] = ibook.book1D("NoPIDTrackMVANoPIDType3",
1403+
"MVA of no PID tracks, no PID type 3; MVA score; ",
1404+
100,
1405+
0.,
1406+
1.);
1407+
12101408
}
12111409

12121410
// some tests
@@ -2429,6 +2627,56 @@ void Primary4DVertexValidation::analyze(const edm::Event& iEvent, const edm::Eve
24292627
meTrackResTot_->Fill(t0Safe[*iTrack] - tsim);
24302628
meTrackPullTot_->Fill((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
24312629
meTrackZposResTot_->Fill(dZ);
2630+
if (selectRecoTrk && optionalPlots_) {
2631+
unsigned int no_PIDtype = 0;
2632+
bool no_PID, is_Pi, is_K, is_P;
2633+
isParticle(*iTrack, sigmat0, sigmat0Safe, probPi, probK, probP, no_PIDtype, no_PID, is_Pi, is_K, is_P);
2634+
if (no_PID){
2635+
meTrackTimeResNoPID_->Fill(t0Safe[*iTrack] - tsim);
2636+
meTrackTimePullNoPID_->Fill((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2637+
meTrackTimeSigmaNoPID_->Fill(sigmat0Safe[*iTrack]);
2638+
meTrackMVANoPID_->Fill(mtdQualMVA[(*iTrack)]);
2639+
if (no_PIDtype == 1) {
2640+
meNoPIDTrackTimeResNoPIDType_[0]->Fill(t0Safe[*iTrack] - tsim);
2641+
meNoPIDTrackTimePullNoPIDType_[0]->Fill((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2642+
meNoPIDTrackSigmaNoPIDType_[0]->Fill(sigmat0Safe[*iTrack]);
2643+
meNoPIDTrackMVANoPIDType_[0]->Fill(mtdQualMVA[(*iTrack)]);
2644+
} else if (no_PIDtype == 2) {
2645+
meNoPIDTrackTimeResNoPIDType_[1]->Fill(t0Safe[*iTrack] - tsim);
2646+
meNoPIDTrackTimePullNoPIDType_[1]->Fill((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2647+
meNoPIDTrackSigmaNoPIDType_[1]->Fill(sigmat0Safe[*iTrack]);
2648+
meNoPIDTrackMVANoPIDType_[1]->Fill(mtdQualMVA[(*iTrack)]);
2649+
} else if (no_PIDtype == 3) {
2650+
meNoPIDTrackTimeResNoPIDType_[2]->Fill(t0Safe[*iTrack] - tsim);
2651+
meNoPIDTrackTimePullNoPIDType_[2]->Fill((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2652+
meNoPIDTrackSigmaNoPIDType_[2]->Fill(sigmat0Safe[*iTrack]);
2653+
meNoPIDTrackMVANoPIDType_[2]->Fill(mtdQualMVA[(*iTrack)]);
2654+
}
2655+
if (std::abs((*tp_info)->pdgId()) == 211){
2656+
meTrackTimeResNoPIDtruePi_->Fill(t0Safe[*iTrack] - tsim);
2657+
meTrackTimePullNoPIDtruePi_->Fill((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2658+
} else if (std::abs((*tp_info)->pdgId()) == 321){
2659+
meTrackTimeResNoPIDtrueK_->Fill(t0Safe[*iTrack] - tsim);
2660+
meTrackTimePullNoPIDtrueK_->Fill((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2661+
} else if (std::abs((*tp_info)->pdgId()) == 2212){
2662+
meTrackTimeResNoPIDtrueP_->Fill(t0Safe[*iTrack] - tsim);
2663+
meTrackTimePullNoPIDtrueP_->Fill((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2664+
}
2665+
} else if ((is_Pi && std::abs((*tp_info)->pdgId()) == 211) ||
2666+
(is_K && std::abs((*tp_info)->pdgId()) == 321) ||
2667+
(is_P && std::abs((*tp_info)->pdgId()) == 2212)){
2668+
meTrackTimeResCorrectPID_->Fill(t0Safe[*iTrack] - tsim);
2669+
meTrackTimePullCorrectPID_->Fill((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2670+
meTrackTimeSigmaCorrectPID_->Fill(sigmat0Safe[*iTrack]);
2671+
meTrackMVACorrectPID_->Fill(mtdQualMVA[(*iTrack)]);
2672+
} else {
2673+
meTrackTimeResWrongPID_->Fill(t0Safe[*iTrack] - tsim);
2674+
meTrackTimePullWrongPID_->Fill((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2675+
meTrackTimeSigmaWrongPID_->Fill(sigmat0Safe[*iTrack]);
2676+
meTrackMVAWrongPID_->Fill(mtdQualMVA[(*iTrack)]);
2677+
}
2678+
}
2679+
24322680
if ((*iTrack)->p() <= 2) {
24332681
meTrackResLowPTot_->Fill(t0Safe[*iTrack] - tsim);
24342682
meTrackPullLowPTot_->Fill((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);

0 commit comments

Comments
 (0)