@@ -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