54 const EventContext context = getContext();
75 if ( primaryVertex ==
nullptr ) {
77 return StatusCode::FAILURE;
94 std::vector< const xAOD::Jet* > qualityJetCollection;
100 qualityJetCollection.push_back(
jet );
109 int nJetsWithMuon = 0;
116 " eta=" <<
jet->eta() <<
117 " phi=" <<
jet->phi() );
126 std::vector< ElementLink< xAOD::VertexContainer > > SV1_vertex = SV1_verticesAcc(*bTag);
127 if(SV1_vertex.size() >= 1) nJetsWithSV++;
145 std::string flavour =
"DATA_";
149 if ( HadronConeExclTruthLabelIDAcc.
isAvailable( *
jet ) ==
false ) {
150 ATH_MSG_ERROR(
"Input sample is MC but jet has no 'HadronConeExclTruthLabelID' aux data. Something is wrong!" );
151 return StatusCode::FAILURE;
154 int HadronConeExclTruthLabelID = HadronConeExclTruthLabelIDAcc(*
jet);
155 ATH_MSG_DEBUG(
" ** 'HadronConeExclTruthLabelID' is " << HadronConeExclTruthLabelID );
158 if ( HadronConeExclTruthLabelID == 0 ) flavour =
"U_";
159 else if ( HadronConeExclTruthLabelID == 4 ) flavour =
"C_";
160 else if ( HadronConeExclTruthLabelID == 5 ) flavour =
"B_";
169 ATH_CHECK(
fillHistogram(
"fracJetsWithMuon" ,
double(nJetsWithMuon)/
double(qualityJetCollection.size()) ) );
173 return StatusCode::SUCCESS;
197 else if ( definitions.at(
HISTO::TYPE ) ==
"TH1F" )
204 else if ( definitions.at(
HISTO::TYPE ) ==
"TH1D" )
228 else if ( definitions.at(
HISTO::TYPE ) ==
"TH2F" )
238 else if ( definitions.at(
HISTO::TYPE ) ==
"TH2D" )
251 return StatusCode::SUCCESS;
416 const std::string& flavour,
419 if( chain !=
"" ) chain = chain +
"_";
421 float jetPt =
jet->p4().Et() / Gaudi::Units::GeV;
422 float jetEta =
jet->eta();
426 if ( !bTaggingObject ) {
427 ATH_MSG_ERROR(
"Could not retrieve b-tagging object from selected jet." );
428 return StatusCode::FAILURE;
438 bTaggingObject->
pu(
"IP2D",IP2D_pu );
439 bTaggingObject->
pb(
"IP2D",IP2D_pb );
440 bTaggingObject->
pc(
"IP2D",IP2D_pc );
445 ATH_MSG_DEBUG(
" ** IP2D [pu,pb,pc] = [" << IP2D_pu <<
"," << IP2D_pb <<
"," << IP2D_pc <<
"]" );
449 std::vector< float > IP2D_weightBOfTracks;
450 std::vector< float > IP2D_weightCOfTracks;
451 std::vector< float > IP2D_weightUOfTracks;
452 std::vector< int > IP2D_gradeOfTracks;
454 bTaggingObject->
variable<
int >(
"IP2D",
"nTrks", IP2D_nTrks );
457 IP2D_weightBOfTracks = IP2D_weightBOfTracksAcc.withDefault(*bTaggingObject, std::vector< float >());
460 IP2D_weightCOfTracks = IP2D_weightCOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
463 IP2D_weightUOfTracks = IP2D_weightUOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
466 IP2D_gradeOfTracks = IP2D_gradeOfTracksAcc.
withDefault(*bTaggingObject, std::vector< int >());
469 for (
unsigned int i(0); i < IP2D_gradeOfTracks.size(); i++ )
471 for (
unsigned int i(0); i < IP2D_weightBOfTracks.size(); i++ )
473 for (
unsigned int i(0); i < IP2D_weightCOfTracks.size(); i++ )
475 for (
unsigned int i(0); i < IP2D_weightUOfTracks.size(); i++ )
483 bTaggingObject->
pu(
"IP3D",IP3D_pu );
484 bTaggingObject->
pb(
"IP3D",IP3D_pb );
485 bTaggingObject->
pc(
"IP3D",IP3D_pc );
491 ATH_MSG_DEBUG(
" ** IP3D [pu,pb,pc] = [" << IP3D_pu <<
"," << IP3D_pb <<
"," << IP3D_pc <<
"]" );
494 std::vector< float > IP3D_weightBOfTracks;
495 std::vector< float > IP3D_weightCOfTracks;
496 std::vector< float > IP3D_weightUOfTracks;
497 std::vector< int > IP3D_gradeOfTracks;
498 std::vector< float > IP3D_D0wrtPVOfTracks;
499 std::vector< float > IP3D_sigD0wrtPVOfTracks;
500 std::vector< float > IP3D_Z0wrtPVOfTracks;
501 std::vector< float > IP3D_sigZ0wrtPVOfTracks;
503 bTaggingObject->
variable<
int >(
"IP3D",
"nTrks", IP3D_nTrks );
506 IP3D_weightBOfTracks = IP3D_weightBOfTracksAcc.withDefault(*bTaggingObject, std::vector< float >());
509 IP3D_weightCOfTracks = IP3D_weightCOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
512 IP3D_weightUOfTracks = IP3D_weightUOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
515 IP3D_gradeOfTracks = IP3D_gradeOfTracksAcc.
withDefault(*bTaggingObject, std::vector< int >());
518 IP3D_D0wrtPVOfTracks = IP3D_D0wrtPVOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
521 IP3D_Z0wrtPVOfTracks = IP3D_Z0wrtPVOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
524 IP3D_sigD0wrtPVOfTracks = IP3D_sigD0wrtPVOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
527 IP3D_sigZ0wrtPVOfTracks = IP3D_sigZ0wrtPVOfTracksAcc.
withDefault(*bTaggingObject, std::vector< float >());
529 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() );
531 for (
unsigned int i(0); i < IP3D_gradeOfTracks.size(); i++ )
533 for (
unsigned int i(0); i < IP3D_weightBOfTracks.size(); i++ )
535 for (
unsigned int i(0); i < IP3D_weightCOfTracks.size(); i++ )
537 for (
unsigned int i(0); i < IP3D_weightUOfTracks.size(); i++ )
539 for (
unsigned int i(0); i < IP3D_D0wrtPVOfTracks.size(); i++ )
541 for (
unsigned int i(0); i < IP3D_sigD0wrtPVOfTracks.size(); i++ )
543 for (
unsigned int i(0); i < IP3D_Z0wrtPVOfTracks.size(); i++ )
545 for (
unsigned int i(0); i < IP3D_sigZ0wrtPVOfTracks.size(); i++ )
553 bTaggingObject->
pu(
"SV1",SV1_pu );
554 bTaggingObject->
pb(
"SV1",SV1_pb );
555 bTaggingObject->
pc(
"SV1",SV1_pc );
560 ATH_MSG_DEBUG(
" ** SV1 [pu,pb,pc] = [" << SV1_pu <<
"," << SV1_pb <<
"," << SV1_pc <<
"]" );
562 float SV1_masssvx = -1;
563 float SV1_efracsvx = -1;
564 float SV1_deltaR = -1;
565 int SV1_N2Tpair = -1;
566 float SV1_significance3d = -1;
567 float SV1_energyTrkInJet = -1;
568 int SV1_NGTinSvx = -1;
571 bTaggingObject->
variable<
float >(
"SV1",
"masssvx", SV1_masssvx );
572 bTaggingObject->
variable<
float >(
"SV1",
"efracsvx", SV1_efracsvx );
573 bTaggingObject->
variable<
float >(
"SV1",
"deltaR", SV1_deltaR );
574 bTaggingObject->
variable<
int >(
"SV1",
"N2Tpair", SV1_N2Tpair );
575 bTaggingObject->
variable<
float >(
"SV1",
"significance3d", SV1_significance3d );
576 bTaggingObject->
variable<
float >(
"SV1",
"energyTrkInJet", SV1_energyTrkInJet );
577 bTaggingObject->
variable<
int >(
"SV1",
"NGTinSvx", SV1_NGTinSvx );
578 bTaggingObject->
variable<
float >(
"SV1",
"Lxy", SV1_Lxy );
599 ATH_MSG_DEBUG(
" ** SV1 [masssvx,efracsvx,deltaR,N2Tpair] = [" << SV1_masssvx <<
600 "," << SV1_efracsvx <<
602 "," << SV1_N2Tpair <<
"]" );
605 int JetFitter_N2Tpair = -1;
606 int JetFitter_nVTX = -1;
607 int JetFitter_nSingleTracks = -1;
608 int JetFitter_nTracksAtVtx = -1;
609 float JetFitter_mass = -1;
610 float JetFitter_energyFraction = -1;
611 float JetFitter_significance3d = -1;
612 bTaggingObject->
variable<
int >(
"JetFitter",
"N2Tpair",JetFitter_N2Tpair );
613 bTaggingObject->
variable<
int >(
"JetFitter",
"nVTX",JetFitter_nVTX );
614 bTaggingObject->
variable<
int >(
"JetFitter",
"nSingleTracks",JetFitter_nSingleTracks );
615 bTaggingObject->
variable<
int >(
"JetFitter",
"nTracksAtVtx",JetFitter_nTracksAtVtx );
616 bTaggingObject->
variable<
float >(
"JetFitter",
"mass",JetFitter_mass );
617 bTaggingObject->
variable<
float >(
"JetFitter",
"energyFraction",JetFitter_energyFraction );
618 bTaggingObject->
variable<
float >(
"JetFitter",
"significance3d",JetFitter_significance3d );
627 ATH_MSG_DEBUG(
" ** JetFitter [mass] = [" << JetFitter_mass <<
"]" );
630 double RNNIP_pu = -1;
631 double RNNIP_pb = -1;
632 double RNNIP_pc = -1;
633 double RNNIP_LLR = -1;
634 bTaggingObject->
pu(
"rnnip",RNNIP_pu );
635 bTaggingObject->
pb(
"rnnip",RNNIP_pb );
636 bTaggingObject->
pc(
"rnnip",RNNIP_pc );
643 ATH_MSG_DEBUG(
" ** RNNIP [pu,pb,pc] = [" << RNNIP_pu <<
"," << RNNIP_pb <<
"," << RNNIP_pc <<
"]" );
649 bTaggingObject->
pu(
"DL1",DL1_pu );
650 bTaggingObject->
pb(
"DL1",DL1_pb );
651 bTaggingObject->
pc(
"DL1",DL1_pc );
660 bTaggingObject->
pu(
"DL1r",DL1r_pu );
661 bTaggingObject->
pb(
"DL1r",DL1r_pb );
662 bTaggingObject->
pc(
"DL1r",DL1r_pc );
664 if ( DL1r_pu == -1 &&
667 bTaggingObject->
pu(
"DL1rnn",DL1r_pu );
668 bTaggingObject->
pb(
"DL1rnn",DL1r_pb );
669 bTaggingObject->
pc(
"DL1rnn",DL1r_pc );
672 float cFraction = 0.03;
674 if ( DL1r_pu != -1 && DL1r_pb != -1 && DL1r_pc != -1 )
675 DL1r = log( DL1r_pb / ( DL1r_pu * ( 1 - cFraction ) + DL1r_pc * cFraction ) );
677 float bFraction = 0.03;
679 if ( DL1r_pu != -1 && DL1r_pb != -1 && DL1r_pc != -1 )
680 DL1rc = log( DL1r_pb / ( DL1r_pu * ( 1 - bFraction ) + DL1r_pc * bFraction ) );
688 ATH_MSG_DEBUG(
" ** DL1r [pu,pb,pc] = [" << DL1r_pu <<
"," << DL1r_pb <<
"," << DL1r_pc <<
"]" );
691 double mv2c10_discriminant = -2;
697 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.