@@ -530,6 +530,38 @@ 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 ];
533565};
534566
535567// constructors and destructor
@@ -1207,6 +1239,118 @@ void Primary4DVertexValidation::bookHistograms(DQMStore::IBooker& ibook,
12071239 -1 .,
12081240 1 .,
12091241 " s" );
1242+
1243+ meTrackTimeResCorrectPID_ = ibook.book1D (
1244+ " TrackTimeResCorrectPID" , " Time residual of tracks with correct PID; t_{rec} - t_{sim} [ns]; " , 100 , -5 ., 5 .);
1245+
1246+ meTrackTimeResWrongPID_ = ibook.book1D (
1247+ " TrackTimeResWrongPID" , " Time residual of tracks with wrong PID; t_{rec} - t_{sim} [ns]; " , 100 , -5 ., 5 .);
1248+ meTrackTimeResNoPID_ = ibook.book1D (
1249+ " TrackTimeResNoPID" , " Time residual of tracks with no PID; t_{rec} - t_{sim} [ns]; " , 100 , -5 ., 5 .);
1250+ meTrackTimeResNoPIDtruePi_ = ibook.book1D (
1251+ " TrackTimeResNoPIDtruePi" , " Time residual of no PID tracks, true Pi; t_{rec} - t_{sim} [ns]; " , 100 , -5 ., 5 .);
1252+
1253+ meTrackTimeResNoPIDtrueK_ = ibook.book1D (
1254+ " TrackTimeResNoPIDtrueK" , " Time residual of no PID tracks, true K; t_{rec} - t_{sim} [ns]; " , 100 , -5 ., 5 .);
1255+ meTrackTimeResNoPIDtrueP_ = ibook.book1D (
1256+ " TrackTimeResNoPIDtrueP" , " Time residual of no PID tracks, true P; t_{rec} - t_{sim} [ns]; " , 100 , -5 ., 5 .);
1257+
1258+ meNoPIDTrackTimeResNoPIDType_[0 ] =
1259+ ibook.book1D (" NoPIDTrackTimeResNoPIDType1" ,
1260+ " Time residual of no PID tracks, no PID type 1; t_{rec} - t_{sim} [ns];" ,
1261+ 100 ,
1262+ -5 .,
1263+ 5 .);
1264+
1265+ meNoPIDTrackTimeResNoPIDType_[1 ] =
1266+ ibook.book1D (" NoPIDTrackTimeResNoPIDType2" ,
1267+ " Time residual of no PID tracks, no PID type 2; t_{rec} - t_{sim} [ns];" ,
1268+ 100 ,
1269+ -5 .,
1270+ 5 .);
1271+ meNoPIDTrackTimeResNoPIDType_[2 ] =
1272+ ibook.book1D (" NoPIDTrackTimeResNoPIDType3" ,
1273+ " Time residual of no PID tracks, no PID type 3; t_{rec} - t_{sim} [ns];" ,
1274+ 100 ,
1275+ -5 .,
1276+ 5 .);
1277+
1278+ meTrackTimePullCorrectPID_ =
1279+ ibook.book1D (" TrackTimePullCorrectPID" ,
1280+ " Time pull of tracks with correct PID; (t_{rec} - t_{sim})/#sigma_{t rec}; " ,
1281+ 100 ,
1282+ -10 .,
1283+ 10 .);
1284+
1285+ meTrackTimePullWrongPID_ = ibook.book1D (" TrackTimePullWrongPID" ,
1286+ " Time pull of tracks with wrong PID; (t_{rec} - t_{sim})/#sigma_{t rec}; " ,
1287+ 100 ,
1288+ -10 .,
1289+ 10 .);
1290+ meTrackTimePullNoPID_ = ibook.book1D (
1291+ " TrackTimePullNoPID" , " Time pull of tracks with no PID; (t_{rec} - t_{sim})/#sigma_{t rec}; " , 100 , -10 ., 10 .);
1292+
1293+ meTrackTimePullNoPIDtruePi_ =
1294+ ibook.book1D (" TrackTimePullNoPIDtruePi" ,
1295+ " Time pull of no PID tracks, true Pi; (t_{rec} - t_{sim})/#sigma_{t rec}; " ,
1296+ 100 ,
1297+ -10 .,
1298+ 10 .);
1299+ meTrackTimePullNoPIDtrueK_ =
1300+ ibook.book1D (" TrackTimePullNoPIDtrueK" ,
1301+ " Time pull of no PID tracks, true K; (t_{rec} - t_{sim})/#sigma_{t rec}; " ,
1302+ 100 ,
1303+ -10 .,
1304+ 10 .);
1305+ meTrackTimePullNoPIDtrueP_ =
1306+ ibook.book1D (" TrackTimePullNoPIDtrueP" ,
1307+ " Time pull of no PID tracks, true P; (t_{rec} - t_{sim})/#sigma_{t rec}; " ,
1308+ 100 ,
1309+ -10 .,
1310+ 10 .);
1311+
1312+ meNoPIDTrackTimePullNoPIDType_[0 ] =
1313+ ibook.book1D (" NoPIDTrackTimePullNoPIDType1" ,
1314+ " Time pull of no PID tracks, no PID type 1; (t_{rec} - t_{sim})/#sigma_{t rec}; " ,
1315+ 100 ,
1316+ -10 .,
1317+ 10 .);
1318+ meNoPIDTrackTimePullNoPIDType_[1 ] =
1319+ ibook.book1D (" NoPIDTrackTimePullNoPIDType2" ,
1320+ " Time pull of no PID tracks, no PID type 2; (t_{rec} - t_{sim})/#sigma_{t rec}; " ,
1321+ 100 ,
1322+ -10 .,
1323+ 10 .);
1324+ meNoPIDTrackTimePullNoPIDType_[2 ] =
1325+ ibook.book1D (" NoPIDTrackTimePullNoPIDType3" ,
1326+ " Time pull of no PID tracks, no PID type 3; (t_{rec} - t_{sim})/#sigma_{t rec}; " ,
1327+ 100 ,
1328+ -10 .,
1329+ 10 .);
1330+
1331+ meTrackTimeSigmaCorrectPID_ = ibook.book1D (
1332+ " TrackTimeSigmaCorrectPID" , " Time sigma of tracks with correct PID; #sigma_{t0Safe} [ns]; " , 100 , 0 ., 4 .);
1333+ meTrackTimeSigmaWrongPID_ = ibook.book1D (
1334+ " TrackTimeSigmaWrongPID" , " Time sigma of tracks with wrong PID; #sigma_{t0Safe} [ns]; " , 100 , 0 ., 4 .);
1335+ meTrackTimeSigmaNoPID_ =
1336+ ibook.book1D (" TrackTimeSigmaNoPID" , " Time sigma of tracks with no PID; #sigma_{t0Safe} [ns]; " , 100 , 0 ., 4 .);
1337+ meNoPIDTrackSigmaNoPIDType_[0 ] = ibook.book1D (
1338+ " NoPIDTrackSigmaNoPIDType1" , " Time sigma of no PID tracks, no PID type 1; #sigma_{t0Safe} [ns]; " , 100 , 0 ., 4 .);
1339+ meNoPIDTrackSigmaNoPIDType_[1 ] = ibook.book1D (
1340+ " NoPIDTrackSigmaNoPIDType2" , " Time sigma of no PID tracks, no PID type 2; #sigma_{t0Safe} [ns]; " , 100 , 0 ., 4 .);
1341+ meNoPIDTrackSigmaNoPIDType_[2 ] = ibook.book1D (
1342+ " NoPIDTrackSigmaNoPIDType3" , " Time sigma of no PID tracks, no PID type 3; #sigma_{t0Safe} [ns]; " , 100 , 0 ., 4 .);
1343+ meTrackMVACorrectPID_ =
1344+ ibook.book1D (" TrackMVACorrectPID" , " MVA of tracks with correct PID; MVA score; " , 100 , 0 ., 1 .);
1345+
1346+ meTrackMVAWrongPID_ = ibook.book1D (" TrackMVAWrongPID" , " MVA of tracks with wrong PID; MVA score; " , 100 , 0 ., 1 .);
1347+ meTrackMVANoPID_ = ibook.book1D (" TrackMVANoPID" , " MVA of tracks with no PID; MVA score; " , 100 , 0 ., 1 .);
1348+ meNoPIDTrackMVANoPIDType_[0 ] =
1349+ ibook.book1D (" NoPIDTrackMVANoPIDType1" , " MVA of no PID tracks, no PID type 1; MVA score; " , 100 , 0 ., 1 .);
1350+ meNoPIDTrackMVANoPIDType_[1 ] =
1351+ ibook.book1D (" NoPIDTrackMVANoPIDType2" , " MVA of no PID tracks, no PID type 2; MVA score; " , 100 , 0 ., 1 .);
1352+ meNoPIDTrackMVANoPIDType_[2 ] =
1353+ ibook.book1D (" NoPIDTrackMVANoPIDType3" , " MVA of no PID tracks, no PID type 3; MVA score; " , 100 , 0 ., 1 .);
12101354 }
12111355
12121356 // some tests
@@ -2429,6 +2573,56 @@ void Primary4DVertexValidation::analyze(const edm::Event& iEvent, const edm::Eve
24292573 meTrackResTot_->Fill (t0Safe[*iTrack] - tsim);
24302574 meTrackPullTot_->Fill ((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
24312575 meTrackZposResTot_->Fill (dZ);
2576+ if (selectRecoTrk && optionalPlots_) {
2577+ unsigned int no_PIDtype = 0 ;
2578+ bool no_PID, is_Pi, is_K, is_P;
2579+ isParticle (*iTrack, sigmat0, sigmat0Safe, probPi, probK, probP, no_PIDtype, no_PID, is_Pi, is_K, is_P);
2580+ if (no_PID) {
2581+ meTrackTimeResNoPID_->Fill (t0Safe[*iTrack] - tsim);
2582+ meTrackTimePullNoPID_->Fill ((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2583+ meTrackTimeSigmaNoPID_->Fill (sigmat0Safe[*iTrack]);
2584+ meTrackMVANoPID_->Fill (mtdQualMVA[(*iTrack)]);
2585+ if (no_PIDtype == 1 ) {
2586+ meNoPIDTrackTimeResNoPIDType_[0 ]->Fill (t0Safe[*iTrack] - tsim);
2587+ meNoPIDTrackTimePullNoPIDType_[0 ]->Fill ((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2588+ meNoPIDTrackSigmaNoPIDType_[0 ]->Fill (sigmat0Safe[*iTrack]);
2589+ meNoPIDTrackMVANoPIDType_[0 ]->Fill (mtdQualMVA[(*iTrack)]);
2590+ } else if (no_PIDtype == 2 ) {
2591+ meNoPIDTrackTimeResNoPIDType_[1 ]->Fill (t0Safe[*iTrack] - tsim);
2592+ meNoPIDTrackTimePullNoPIDType_[1 ]->Fill ((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2593+ meNoPIDTrackSigmaNoPIDType_[1 ]->Fill (sigmat0Safe[*iTrack]);
2594+ meNoPIDTrackMVANoPIDType_[1 ]->Fill (mtdQualMVA[(*iTrack)]);
2595+ } else if (no_PIDtype == 3 ) {
2596+ meNoPIDTrackTimeResNoPIDType_[2 ]->Fill (t0Safe[*iTrack] - tsim);
2597+ meNoPIDTrackTimePullNoPIDType_[2 ]->Fill ((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2598+ meNoPIDTrackSigmaNoPIDType_[2 ]->Fill (sigmat0Safe[*iTrack]);
2599+ meNoPIDTrackMVANoPIDType_[2 ]->Fill (mtdQualMVA[(*iTrack)]);
2600+ }
2601+ if (std::abs ((*tp_info)->pdgId ()) == 211 ) {
2602+ meTrackTimeResNoPIDtruePi_->Fill (t0Safe[*iTrack] - tsim);
2603+ meTrackTimePullNoPIDtruePi_->Fill ((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2604+ } else if (std::abs ((*tp_info)->pdgId ()) == 321 ) {
2605+ meTrackTimeResNoPIDtrueK_->Fill (t0Safe[*iTrack] - tsim);
2606+ meTrackTimePullNoPIDtrueK_->Fill ((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2607+ } else if (std::abs ((*tp_info)->pdgId ()) == 2212 ) {
2608+ meTrackTimeResNoPIDtrueP_->Fill (t0Safe[*iTrack] - tsim);
2609+ meTrackTimePullNoPIDtrueP_->Fill ((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2610+ }
2611+ } else if ((is_Pi && std::abs ((*tp_info)->pdgId ()) == 211 ) ||
2612+ (is_K && std::abs ((*tp_info)->pdgId ()) == 321 ) ||
2613+ (is_P && std::abs ((*tp_info)->pdgId ()) == 2212 )) {
2614+ meTrackTimeResCorrectPID_->Fill (t0Safe[*iTrack] - tsim);
2615+ meTrackTimePullCorrectPID_->Fill ((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2616+ meTrackTimeSigmaCorrectPID_->Fill (sigmat0Safe[*iTrack]);
2617+ meTrackMVACorrectPID_->Fill (mtdQualMVA[(*iTrack)]);
2618+ } else {
2619+ meTrackTimeResWrongPID_->Fill (t0Safe[*iTrack] - tsim);
2620+ meTrackTimePullWrongPID_->Fill ((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
2621+ meTrackTimeSigmaWrongPID_->Fill (sigmat0Safe[*iTrack]);
2622+ meTrackMVAWrongPID_->Fill (mtdQualMVA[(*iTrack)]);
2623+ }
2624+ }
2625+
24322626 if ((*iTrack)->p () <= 2 ) {
24332627 meTrackResLowPTot_->Fill (t0Safe[*iTrack] - tsim);
24342628 meTrackPullLowPTot_->Fill ((t0Safe[*iTrack] - tsim) / sigmat0Safe[*iTrack]);
0 commit comments