73 if ( primaryVertex ==
nullptr ) {
75 return StatusCode::FAILURE;
92 std::vector< const xAOD::Jet* > qualityJetCollection;
98 qualityJetCollection.push_back(
jet );
107 int nJetsWithMuon = 0;
114 " eta=" <<
jet->eta() <<
115 " phi=" <<
jet->phi() );
124 std::vector< ElementLink< xAOD::VertexContainer > > SV1_vertex = SV1_verticesAcc(*bTag);
125 if(SV1_vertex.size() >= 1) nJetsWithSV++;
143 std::string flavour =
"DATA_";
147 if ( HadronConeExclTruthLabelIDAcc.
isAvailable( *
jet ) ==
false ) {
148 ATH_MSG_ERROR(
"Input sample is MC but jet has no 'HadronConeExclTruthLabelID' aux data. Something is wrong!" );
149 return StatusCode::FAILURE;
152 int HadronConeExclTruthLabelID = HadronConeExclTruthLabelIDAcc(*
jet);
153 ATH_MSG_DEBUG(
" ** 'HadronConeExclTruthLabelID' is " << HadronConeExclTruthLabelID );
156 if ( HadronConeExclTruthLabelID == 0 ) flavour =
"U_";
157 else if ( HadronConeExclTruthLabelID == 4 ) flavour =
"C_";
158 else if ( HadronConeExclTruthLabelID == 5 ) flavour =
"B_";
167 ATH_CHECK(
fillHistogram(
"fracJetsWithMuon" ,
double(nJetsWithMuon)/
double(qualityJetCollection.size()) ) );
171 return StatusCode::SUCCESS;
195 else if ( definitions.at(
HISTO::TYPE ) ==
"TH1F" )
202 else if ( definitions.at(
HISTO::TYPE ) ==
"TH1D" )
226 else if ( definitions.at(
HISTO::TYPE ) ==
"TH2F" )
236 else if ( definitions.at(
HISTO::TYPE ) ==
"TH2D" )
249 return StatusCode::SUCCESS;
414 const std::string& flavour,
417 if( chain !=
"" ) chain = chain +
"_";
419 float jetPt =
jet->p4().Et() / Gaudi::Units::GeV;
420 float jetEta =
jet->eta();
424 if ( !bTaggingObject ) {
425 ATH_MSG_ERROR(
"Could not retrieve b-tagging object from selected jet." );
426 return StatusCode::FAILURE;
436 bTaggingObject->
pu(
"IP2D",IP2D_pu );
437 bTaggingObject->
pb(
"IP2D",IP2D_pb );
438 bTaggingObject->
pc(
"IP2D",IP2D_pc );
443 ATH_MSG_DEBUG(
" ** IP2D [pu,pb,pc] = [" << IP2D_pu <<
"," << IP2D_pb <<
"," << IP2D_pc <<
"]" );
447 std::vector< float > IP2D_weightBOfTracks;
448 std::vector< float > IP2D_weightCOfTracks;
449 std::vector< float > IP2D_weightUOfTracks;
450 std::vector< int > IP2D_gradeOfTracks;
452 bTaggingObject->
variable<
int >(
"IP2D",
"nTrks", IP2D_nTrks );
455 IP2D_weightBOfTracks = IP2D_weightBOfTracksAcc.withDefault(*bTaggingObject, std::vector< float >());
458 IP2D_weightCOfTracks = IP2D_weightCOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
461 IP2D_weightUOfTracks = IP2D_weightUOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
464 IP2D_gradeOfTracks = IP2D_gradeOfTracksAcc.
withDefault(*bTaggingObject, std::vector< int >());
467 for (
unsigned int i(0); i < IP2D_gradeOfTracks.size(); i++ )
469 for (
unsigned int i(0); i < IP2D_weightBOfTracks.size(); i++ )
471 for (
unsigned int i(0); i < IP2D_weightCOfTracks.size(); i++ )
473 for (
unsigned int i(0); i < IP2D_weightUOfTracks.size(); i++ )
481 bTaggingObject->
pu(
"IP3D",IP3D_pu );
482 bTaggingObject->
pb(
"IP3D",IP3D_pb );
483 bTaggingObject->
pc(
"IP3D",IP3D_pc );
489 ATH_MSG_DEBUG(
" ** IP3D [pu,pb,pc] = [" << IP3D_pu <<
"," << IP3D_pb <<
"," << IP3D_pc <<
"]" );
492 std::vector< float > IP3D_weightBOfTracks;
493 std::vector< float > IP3D_weightCOfTracks;
494 std::vector< float > IP3D_weightUOfTracks;
495 std::vector< int > IP3D_gradeOfTracks;
496 std::vector< float > IP3D_D0wrtPVOfTracks;
497 std::vector< float > IP3D_sigD0wrtPVOfTracks;
498 std::vector< float > IP3D_Z0wrtPVOfTracks;
499 std::vector< float > IP3D_sigZ0wrtPVOfTracks;
501 bTaggingObject->
variable<
int >(
"IP3D",
"nTrks", IP3D_nTrks );
504 IP3D_weightBOfTracks = IP3D_weightBOfTracksAcc.withDefault(*bTaggingObject, std::vector< float >());
507 IP3D_weightCOfTracks = IP3D_weightCOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
510 IP3D_weightUOfTracks = IP3D_weightUOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
513 IP3D_gradeOfTracks = IP3D_gradeOfTracksAcc.
withDefault(*bTaggingObject, std::vector< int >());
516 IP3D_D0wrtPVOfTracks = IP3D_D0wrtPVOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
519 IP3D_Z0wrtPVOfTracks = IP3D_Z0wrtPVOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
522 IP3D_sigD0wrtPVOfTracks = IP3D_sigD0wrtPVOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
525 IP3D_sigZ0wrtPVOfTracks = IP3D_sigZ0wrtPVOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
527 ATH_MSG_DEBUG(
"Size IP3D_gradeOfTracks/_weightBOfTracks/_weightUOfTracks/_D0wrtPVOfTracks/_sigD0wrtPVOfTracks/_Z0wrtPVOfTracks/_sigZ0wrtPVOfTracks: " << IP3D_gradeOfTracks.size() <<
", "<< IP3D_weightBOfTracks.size() <<
", " << IP3D_weightUOfTracks.size() <<
", " << IP3D_D0wrtPVOfTracks.size() <<
", " << IP3D_sigD0wrtPVOfTracks.size() <<
", " << IP3D_Z0wrtPVOfTracks.size() <<
", " << IP3D_sigZ0wrtPVOfTracks.size() );
529 for (
unsigned int i(0); i < IP3D_gradeOfTracks.size(); i++ )
531 for (
unsigned int i(0); i < IP3D_weightBOfTracks.size(); i++ )
533 for (
unsigned int i(0); i < IP3D_weightCOfTracks.size(); i++ )
535 for (
unsigned int i(0); i < IP3D_weightUOfTracks.size(); i++ )
537 for (
unsigned int i(0); i < IP3D_D0wrtPVOfTracks.size(); i++ )
539 for (
unsigned int i(0); i < IP3D_sigD0wrtPVOfTracks.size(); i++ )
541 for (
unsigned int i(0); i < IP3D_Z0wrtPVOfTracks.size(); i++ )
543 for (
unsigned int i(0); i < IP3D_sigZ0wrtPVOfTracks.size(); i++ )
551 bTaggingObject->
pu(
"SV1",SV1_pu );
552 bTaggingObject->
pb(
"SV1",SV1_pb );
553 bTaggingObject->
pc(
"SV1",SV1_pc );
558 ATH_MSG_DEBUG(
" ** SV1 [pu,pb,pc] = [" << SV1_pu <<
"," << SV1_pb <<
"," << SV1_pc <<
"]" );
560 float SV1_masssvx = -1;
561 float SV1_efracsvx = -1;
562 float SV1_deltaR = -1;
563 int SV1_N2Tpair = -1;
564 float SV1_significance3d = -1;
565 float SV1_energyTrkInJet = -1;
566 int SV1_NGTinSvx = -1;
569 bTaggingObject->
variable<
float >(
"SV1",
"masssvx", SV1_masssvx );
570 bTaggingObject->
variable<
float >(
"SV1",
"efracsvx", SV1_efracsvx );
571 bTaggingObject->
variable<
float >(
"SV1",
"deltaR", SV1_deltaR );
572 bTaggingObject->
variable<
int >(
"SV1",
"N2Tpair", SV1_N2Tpair );
573 bTaggingObject->
variable<
float >(
"SV1",
"significance3d", SV1_significance3d );
574 bTaggingObject->
variable<
float >(
"SV1",
"energyTrkInJet", SV1_energyTrkInJet );
575 bTaggingObject->
variable<
int >(
"SV1",
"NGTinSvx", SV1_NGTinSvx );
576 bTaggingObject->
variable<
float >(
"SV1",
"Lxy", SV1_Lxy );
597 ATH_MSG_DEBUG(
" ** SV1 [masssvx,efracsvx,deltaR,N2Tpair] = [" << SV1_masssvx <<
598 "," << SV1_efracsvx <<
600 "," << SV1_N2Tpair <<
"]" );
603 int JetFitter_N2Tpair = -1;
604 int JetFitter_nVTX = -1;
605 int JetFitter_nSingleTracks = -1;
606 int JetFitter_nTracksAtVtx = -1;
607 float JetFitter_mass = -1;
608 float JetFitter_energyFraction = -1;
609 float JetFitter_significance3d = -1;
610 bTaggingObject->
variable<
int >(
"JetFitter",
"N2Tpair",JetFitter_N2Tpair );
611 bTaggingObject->
variable<
int >(
"JetFitter",
"nVTX",JetFitter_nVTX );
612 bTaggingObject->
variable<
int >(
"JetFitter",
"nSingleTracks",JetFitter_nSingleTracks );
613 bTaggingObject->
variable<
int >(
"JetFitter",
"nTracksAtVtx",JetFitter_nTracksAtVtx );
614 bTaggingObject->
variable<
float >(
"JetFitter",
"mass",JetFitter_mass );
615 bTaggingObject->
variable<
float >(
"JetFitter",
"energyFraction",JetFitter_energyFraction );
616 bTaggingObject->
variable<
float >(
"JetFitter",
"significance3d",JetFitter_significance3d );
625 ATH_MSG_DEBUG(
" ** JetFitter [mass] = [" << JetFitter_mass <<
"]" );
628 double RNNIP_pu = -1;
629 double RNNIP_pb = -1;
630 double RNNIP_pc = -1;
631 double RNNIP_LLR = -1;
632 bTaggingObject->
pu(
"rnnip",RNNIP_pu );
633 bTaggingObject->
pb(
"rnnip",RNNIP_pb );
634 bTaggingObject->
pc(
"rnnip",RNNIP_pc );
641 ATH_MSG_DEBUG(
" ** RNNIP [pu,pb,pc] = [" << RNNIP_pu <<
"," << RNNIP_pb <<
"," << RNNIP_pc <<
"]" );
647 bTaggingObject->
pu(
"DL1",DL1_pu );
648 bTaggingObject->
pb(
"DL1",DL1_pb );
649 bTaggingObject->
pc(
"DL1",DL1_pc );
658 bTaggingObject->
pu(
"DL1r",DL1r_pu );
659 bTaggingObject->
pb(
"DL1r",DL1r_pb );
660 bTaggingObject->
pc(
"DL1r",DL1r_pc );
662 if ( DL1r_pu == -1 &&
665 bTaggingObject->
pu(
"DL1rnn",DL1r_pu );
666 bTaggingObject->
pb(
"DL1rnn",DL1r_pb );
667 bTaggingObject->
pc(
"DL1rnn",DL1r_pc );
670 float cFraction = 0.03;
672 if ( DL1r_pu != -1 && DL1r_pb != -1 && DL1r_pc != -1 )
673 DL1r = log( DL1r_pb / ( DL1r_pu * ( 1 - cFraction ) + DL1r_pc * cFraction ) );
675 float bFraction = 0.03;
677 if ( DL1r_pu != -1 && DL1r_pb != -1 && DL1r_pc != -1 )
678 DL1rc = log( DL1r_pb / ( DL1r_pu * ( 1 - bFraction ) + DL1r_pc * bFraction ) );
686 ATH_MSG_DEBUG(
" ** DL1r [pu,pb,pc] = [" << DL1r_pu <<
"," << DL1r_pb <<
"," << DL1r_pc <<
"]" );
689 double mv2c10_discriminant = -2;
695 return StatusCode::SUCCESS;
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .).
const ParametersCovMatrix_t definingParametersCovMatrix() const
Returns the 5x5 symmetric matrix containing the defining parameters covariance matrix.
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.