|
ATLAS Offline Software
|
Go to the documentation of this file.
30 #ifndef XAOD_STANDALONE // For now metadata is Athena-only
78 return StatusCode::FAILURE;
81 if (
m_isPHYSLITE && jetkey.find(
"AnalysisJets") == std::string::npos){
82 ATH_MSG_ERROR(
"You are running on PHYSLITE derivation. Please change the Jets container to 'AnalysisJets'");
83 return StatusCode::FAILURE;
93 if (!jetkey.empty()) {
98 ATH_MSG_DEBUG(
"Key for retrieving jet collection: jetkey = " << jetkey_tmp);
102 if (containerToBeCopied !=
nullptr) {
103 jets = containerToBeCopied;
110 copy = shallowcopy.first;
111 copyaux = shallowcopy.second;
114 ATH_MSG_WARNING(
"Failed to set original object links on " << jetkey_tmp);
117 ATH_MSG_DEBUG(
"Not retrieving jet collecton, using existing one provided by user");
130 for (
const auto&
jet : *
copy) {
138 for (
const auto&
jet : *
copy) {
142 for (
const auto&
jet : *copy) {
145 dec_passJvt(*
jet) = acc_passFJvt(*
jet) && acc_passJvt(*
jet);
146 dec_fjvt(*
jet) = acc_fjvt(*
jet);
149 if ( acc_baseline(*
jet) ){
150 if( acc_passJvt(*
jet) ) dec_selected(*
jet) = 2;
151 else dec_selected(*
jet) = 1;
154 dec_selected(*
jet) = 0;
162 std::string auxname = copyaux->
name();
163 if (auxname.compare(
"UNKNOWN")==0) copyaux->
setName(std::string(
"STCalib" + jetkey_tmp +
m_currentSyst.
name() +
"AuxCopy").c_str());
167 return StatusCode::SUCCESS;
174 return StatusCode::FAILURE;
178 ATH_MSG_DEBUG(
"Function argument jetkey (trkjet): " << jetkey);
184 if (!jetkey.empty()) {
189 ATH_MSG_DEBUG(
"Key for retrieving trkjet collection (as well as bjet info): jetkey = " << jetkey_tmp);
193 if (containerToBeCopied !=
nullptr) {
194 jets = containerToBeCopied;
201 copy = shallowcopy.first;
202 copyaux = shallowcopy.second;
205 ATH_MSG_WARNING(
"Failed to set original object links on " << jetkey_tmp);
208 ATH_MSG_DEBUG(
"Not retrieving jet collection, using existing one provided by user");
216 for (
const auto&
jet : *
copy) {
224 if (!acc_signal(*jet1))
continue;
227 if (!acc_baseline(*jet2))
continue;
230 const xAOD::Jet* to_check = acc_VRradius(*jet1) < acc_VRradius(*jet2) ? jet1 : jet2;
231 if( dr_jets < acc_VRradius(*to_check)) dec_passDRcut(*to_check) =
false;
240 return StatusCode::SUCCESS;
247 return StatusCode::FAILURE;
251 ATH_MSG_ERROR(
"JetFatCalibTool was not initialized for largeR jet!!");
252 return StatusCode::FAILURE;
255 std::string jetkey_tmp = jetkey;
256 if (jetkey.empty()) {
262 if (containerToBeCopied !=
nullptr) {
263 jets = containerToBeCopied;
271 copy = shallowcopy.first;
272 copyaux = shallowcopy.second;
275 ATH_MSG_WARNING(
"Failed to set original object links on " << jetkey_tmp);
278 ATH_MSG_DEBUG(
"Not retrieving jet collection, using existing one provided by user");
282 if(
jets->size()==0) {
284 return StatusCode::SUCCESS;
292 ATH_MSG_DEBUG(
"Checking if decorator for JetTruthLabelingTool is available:");
302 for (
const auto&
jet : *
copy) {
307 if ( acc_baseline(*
jet) ){
308 dec_selected(*
jet) = 1;
311 dec_selected(*
jet) = 0;
318 return StatusCode::SUCCESS;
326 return StatusCode::FAILURE;
329 std::string jetkey_tmp = jetkey;
330 if (jetkey.empty()) {
335 copy = shallowcopy.first;
336 copyaux = shallowcopy.second;
340 ATH_MSG_WARNING(
"Failed to set original object links on " << jetkey_tmp);
347 if (jetkey!=
"AnalysisJets"){
355 for (
const auto&
jet : *
copy) {
359 for (
const auto&
jet : *copy) {
362 dec_passJvt(*
jet) = acc_passFJvt(*
jet) && acc_passJvt(*
jet);
365 if ( acc_baseline(*
jet) ){
366 if( acc_passJvt(*
jet) ) dec_selected(*
jet) = 2;
367 else dec_selected(*
jet) = 1;
370 dec_selected(*
jet) = 0;
381 return StatusCode::SUCCESS;
403 dec_bad(
input) =
false;
404 dec_signal(
input) =
false;
405 dec_bjet_loose(
input) =
false;
406 dec_effscalefact(
input) = 1.;
407 dec_passOR(
input) =
true;
408 dec_bjet_jetunc(
input) =
false;
409 dec_btag_weight(
input) = -999.;
411 dec_wtagged(
input) = -1;
412 dec_ztagged(
input) = -1;
413 dec_toptagged(
input) = -1;
414 if (doLargeRdecorations) {
422 if ( !acc_wValidKinRange(
input) ) {
423 ATH_MSG_VERBOSE(
"Large-R W candidate jet outside of recommended tagging range. Will set score to 0.");
424 dec_wtagged(
input) = 0;
430 if ( !acc_zValidKinRange(
input) ) {
431 ATH_MSG_VERBOSE(
"Large-R Z candidate jet outside of recommended tagging range. Will set score to 0.");
432 dec_ztagged(
input) = 0;
438 if ( !acc_topValidKinRange(
input) ) {
439 ATH_MSG_VERBOSE(
"Large-R Top candidate jet outside of recommended tagging range. Will set score to 0.");
440 dec_toptagged(
input) = 0;
442 else dec_toptagged(
input) = acc_toptagged(
input);
453 ATH_MSG_ERROR(
"Failed to apply largeR W-tag jet scale uncertainties.");
454 return StatusCode::FAILURE;
457 ATH_MSG_VERBOSE(
"No valid pt/eta/m range for largeR W-tag jet scale uncertainties. ");
463 ATH_MSG_DEBUG(
"No valid large-R W-tagged fat jet uncertainty, but FillJet called with a fat jet. Skipping uncertainties." );
470 ATH_MSG_ERROR(
"Failed to apply largeR Z-tag jet scale uncertainties.");
471 return StatusCode::FAILURE;
474 ATH_MSG_VERBOSE(
"No valid pt/eta/m range for largeR Z-tag jet scale uncertainties. ");
480 ATH_MSG_DEBUG(
"No valid large-R Z-tagged fat jet uncertainty, but FillJet called with a fat jet. Skipping uncertainties." );
487 ATH_MSG_ERROR(
"Failed to apply largeR Top-tag jet scale uncertainties.");
488 return StatusCode::FAILURE;
491 ATH_MSG_VERBOSE(
"No valid pt/eta/m range for largeR Top-tag jet scale uncertainties. ");
497 ATH_MSG_DEBUG(
"No valid large-R Top-tagged fat jet uncertainty, but FillJet called with a fat jet. Skipping uncertainties." );
504 ATH_MSG_ERROR(
"Failed to apply largeR jet scale uncertainties.");
505 return StatusCode::FAILURE;
508 ATH_MSG_VERBOSE(
"No valid pt/eta/m range for largeR jet scale uncertainties. ");
514 ATH_MSG_DEBUG(
"No valid fat jet uncertainty, but FillJet called with a fat jet. Skipping uncertainties." );
518 return StatusCode::SUCCESS;
524 dec_passOR(
input) =
true;
525 dec_bjet_jetunc(
input) =
false;
574 dec_bad(
input) =
false;
575 dec_signal_less_JVT(
input) =
false;
576 dec_signal(
input) =
false;
577 dec_bjet_loose(
input) =
false;
578 dec_effscalefact(
input) = 1.;
581 if (acc_baseline(
input) ){
582 if( acc_passJvt(
input) ) dec_selected(
input) = 2;
583 else dec_selected(
input) = 1;
586 dec_selected(
input) = 0;
605 return StatusCode::SUCCESS;
612 dec_btag_weight(
input) = -999.;
613 dec_effscalefact(
input) = 1.;
620 ATH_MSG_WARNING (
"The pt threshold of VR jets you set is: " <<
m_trkJetPt/1000. <<
" GeV. But VR jets with pt < 10GeV are uncalibrated.");
641 return StatusCode::SUCCESS;
646 bool isbjet_loose =
false;
647 if (m_orBJetPtUpperThres < 0 || m_orBJetPtUpperThres >
input.pt())
654 dec_passJvt(
input) = pass_jvt;
659 if ( !acc_baseline(
input) || !acc_passOR(
input) )
return false;
661 if (
input.pt() <=
ptcut || std::abs(
input.eta()) >= etacut)
return false;
663 bool isgoodjet = !acc_bad(
input) && acc_passJvt(
input);
665 dec_signal(
input) = isgoodjet;
672 float emfrac, hecf, LArQuality, HECQuality, Timing, fracSamplingMax, NegativeE, AverageLArQF;
673 std::vector<float> sumpttrk_vec;
686 if (!sumpttrk_vec.empty() && this->GetPrimVtx()) {
700 ATH_MSG_INFO(
"JET fracSamplingMax: " << fracSamplingMax );
712 if ( !acc_passOR(
input) )
return false;
724 ATH_MSG_VERBOSE(
"DFCommon jet cleaning variable not available ... setting 'bad' decorator to 0.");
732 return acc_bad(
input);
739 dec_bjet(
input) = isbjet;
742 ANA_MSG_ERROR(
"Couldn't set b-tag decorations for jet, is-b = " << (isbjet?
"true":
"false") <<
", pT = " <<
input.pt()/1000.);
750 dec_bjet(
input) = isbjet;
753 ANA_MSG_ERROR(
"Couldn't set b-tag decorations for trackjet, is-b = " << (isbjet?
"true":
"false") <<
", pT = " <<
input.pt()/1000.);
772 dec_bjet(
input) = isbjet;
775 ANA_MSG_ERROR(
"Couldn't set continuous b-tag decorations for jet, is-b = " << isbjet <<
", pT = " <<
input.pt()/1000.);
783 dec_bjet(
input) = isbjet;
786 ANA_MSG_ERROR(
"Couldn't set continuous b-tag decorations for trackjet, is-b = " << isbjet <<
", pT = " <<
input.pt()/1000.);
798 if ( std::abs(
jet->eta()) > 2.5 ) {
799 ATH_MSG_VERBOSE(
"Trying to retrieve b-tagging SF for jet with |eta|>2.5 (jet eta=" <<
jet->eta() <<
"), jet will be skipped");
800 }
else if (
jet->pt() < 20
e3 ){
801 ATH_MSG_VERBOSE(
"Trying to retrieve b-tagging SF for jet with invalid pt (jet pt=" <<
jet->pt() <<
"), jet will be skipped");
806 if (!
jet->getAttribute(
"HadronConeExclTruthLabelID", truthlabel)) {
817 ATH_MSG_ERROR(
"Failed to retrieve SF for b-tagged jets in SUSYTools_xAOD::BtagSF" );
820 ATH_MSG_VERBOSE(
"No valid SF for b-tagged jets in SUSYTools_xAOD::BtagSF" );
823 ATH_MSG_VERBOSE(
"Retrieve SF for b-tagged jets in SUSYTools_xAOD::BtagSF with value " <<
sf );
831 ATH_MSG_ERROR(
"Failed to retrieve SF for non-b-tagged jets in SUSYTools_xAOD::BtagSF" );
834 ATH_MSG_VERBOSE(
"No valid inefficiency SF for non-b-tagged jets in SUSYTools_xAOD::BtagSF" );
837 ATH_MSG_VERBOSE(
"Retrieve SF for non-b-tagged jets in SUSYTools_xAOD::BtagSF with value " <<
sf );
842 dec_effscalefact(*
jet) =
sf;
844 if( acc_signal(*
jet) && acc_passOR(*
jet) ) totalSF *=
sf;
858 if ( ret != StatusCode::SUCCESS) {
859 ATH_MSG_ERROR(
"Cannot configure BTaggingEfficiencyTool for systematic var. " << systConfig.
name() );
865 if ( ret != StatusCode::SUCCESS) {
866 ATH_MSG_ERROR(
"Cannot configure BTaggingEfficiencyTool for systematic var. " << systConfig.
name() );
875 for (
const xAOD::Jet* trkjet : *trkjets ) {
879 if ( std::abs(trkjet->eta()) > 2.5 ) {
880 ATH_MSG_VERBOSE(
"Trying to retrieve b-tagging SF for trkjet with |eta|>2.5 (trkjet eta=" << trkjet->eta() <<
"), trkjet will be skipped");
881 }
else if ( trkjet->pt() < 10
e3 ){
882 ATH_MSG_VERBOSE(
"Trying to retrieve b-tagging SF for trkjet with invalid pt (trkjet pt=" << trkjet->pt() <<
"), jet will be skipped");
887 if (!trkjet->getAttribute(
"HadronConeExclTruthLabelID", truthlabel)) {
890 ATH_MSG_VERBOSE(
"This jet is " << (acc_bjet(*trkjet) ?
"" :
"not ") <<
"b-tagged.");
893 if ( acc_bjet(*trkjet) ) {
898 ATH_MSG_ERROR(
"Failed to retrieve SF for b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet" );
901 ATH_MSG_VERBOSE(
"No valid SF for b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet" );
904 ATH_MSG_VERBOSE(
"Retrieve SF for b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet with value " <<
sf );
912 ATH_MSG_ERROR(
"Failed to retrieve SF for non-b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet" );
915 ATH_MSG_VERBOSE(
"No valid inefficiency SF for non-b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet" );
918 ATH_MSG_VERBOSE(
"Retrieve SF for non-b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet with value " <<
sf );
923 dec_effscalefact(*trkjet) =
sf;
925 if( acc_signal(*trkjet) ) totalSF *=
sf;
939 if ( ret != StatusCode::SUCCESS) {
940 ATH_MSG_ERROR(
"Cannot configure BTaggingEfficiencyTool (track jets) for systematic var. " << systConfig.
name() );
946 if ( ret != StatusCode::SUCCESS) {
947 ATH_MSG_ERROR(
"Cannot configure BTaggingEfficiencyTool (track jets) for systematic var. " << systConfig.
name() );
961 if (acc_signal_less_JVT(*
jet) && acc_passOR(*
jet)) {
967 float current_sf = 0;
971 if (acc_passJvt(*
jet)) {
985 ATH_MSG_VERBOSE(
"Skip SF application in SUSYTools_xAOD::JVT_SF as jet outside validate range" );
988 ATH_MSG_VERBOSE(
"Retrieve SF for jet in SUSYTools_xAOD::JVT_SF with value " << current_sf );
989 totalSF *= current_sf;
994 ATH_MSG_VERBOSE(
"Retrieve total SF for jet container in SUSYTools_xAOD::JVT_SF with value " << totalSF );
1007 if ( ret != StatusCode::SUCCESS) {
1008 ATH_MSG_ERROR(
"Cannot configure NNjvtEfficiencyTool for systematic var. " << systConfig.
name() );
1017 if ( ret != StatusCode::SUCCESS) {
1018 ATH_MSG_ERROR(
"Cannot configure NNjvtEfficiencyTool for systematic var. " << systConfig.
name() );
1033 if (acc_signal_less_JVT(*
jet) && acc_passOR(*
jet)) {
1039 float current_sf = 0;
1043 if (acc_passFJvt(*
jet)) {
1057 ATH_MSG_VERBOSE(
"Skip SF application in SUSYTools_xAOD::FJVT_SF as jet outside validate range" );
1060 ATH_MSG_VERBOSE(
"Retrieve SF for jet in SUSYTools_xAOD::FJVT_SF with value " << current_sf );
1061 totalSF *= current_sf;
1066 ATH_MSG_VERBOSE(
"Retrieve total SF for jet container in SUSYTools_xAOD::FJVT_SF with value " << totalSF );
1078 if ( ret != StatusCode::SUCCESS) {
1079 ATH_MSG_ERROR(
"Cannot configure fJvtEfficiencyTool for systematic var. " << systConfig.
name() );
1087 if ( ret != StatusCode::SUCCESS) {
1088 ATH_MSG_ERROR(
"Cannot configure fJvtEfficiencyTool for systematic var. " << systConfig.
name() );
1097 double totalSF = 1.;
1110 double totalSF = 1.;
1123 ATH_MSG_ERROR( btagSelTool->name() <<
": could not retrieve b-tag weight (" << btagTagger <<
")." );
1124 return StatusCode::FAILURE;
1129 double btag_pb(-10), btag_pc(-10), btag_pu(-10), btag_ptau(-10);
1131 std::string actualTagger = btagTagger;
1132 if (btagTagger ==
"GN2v00LegacyWP" || btagTagger ==
"GN2v00NewAliasWP"){
1133 actualTagger =
"GN2v00";
1139 dec_btag_pb(
input) = btag_pb;
1140 dec_btag_pc(
input) = btag_pc;
1141 dec_btag_pu(
input) = btag_pu;
1142 dec_btag_ptau(
input) = btag_ptau;
1143 ATH_MSG_DEBUG( btagSelTool->name() <<
" b-tag " << btagTagger <<
"-type pb: " << btag_pb );
1144 ATH_MSG_DEBUG( btagSelTool->name() <<
" b-tag " << btagTagger <<
"-type pc: " << btag_pc );
1145 ATH_MSG_DEBUG( btagSelTool->name() <<
" b-tag " << btagTagger <<
"-type pu: " << btag_pu );
1146 ATH_MSG_DEBUG( btagSelTool->name() <<
" b-tag " << btagTagger <<
"-type ptau: " << btag_ptau );
1148 if ( btagSelTool->name().find(
"DL1")!=std::string::npos ) {
1149 dec_btag_dl1pb(
input) = btag_pb;
1150 dec_btag_dl1pc(
input) = btag_pc;
1151 dec_btag_dl1pu(
input) = btag_pu;
1154 dec_btag_dl1pb(
input) = -10;
1155 dec_btag_dl1pc(
input) = -10;
1156 dec_btag_dl1pu(
input) = -10;
1158 return StatusCode::SUCCESS;
def retrieve(aClass, aKey=None)
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetfJvtEfficiencyTool
StatusCode GetJets(xAOD::JetContainer *©, xAOD::ShallowAuxContainer *©aux, const bool recordSG=true, const std::string &jetkey="", const xAOD::JetContainer *containerToBeCopied=nullptr) override final
float BtagSF(const xAOD::JetContainer *jets) override final
Const iterator class for DataVector/DataList.
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_ZTagjetUncertaintiesTool
int IsTrackBJetContinuous(const xAOD::Jet &input) const override final
bool IsTruthBJet(const xAOD::Jet &input) const override final
double JVT_SFsys(const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig) override final
SG::ReadDecorHandleKey< xAOD::JetContainer > m_label_truthKey
bool IsBJet(const xAOD::Jet &input) const override final
std::string m_ZTagUncConfig
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
DataVector adapter that acts like it holds const pointers.
asg::AnaToolHandle< JetPileupTag::JetVertexNNTagger > m_jetNNJvtMomentTool
Class creating a shallow copy of an existing auxiliary container.
Class to wrap a set of SystematicVariations.
asg::AnaToolHandle< JSSWTopTaggerDNN > m_TopTaggerTool
std::string name() const
returns: the systematics joined into a single string.
const char * name() const
Get the name of the container instance.
asg::AnaToolHandle< SmoothedWZTagger > m_WTaggerTool
const xAOD::Vertex * GetPrimVtx() const override final
StatusCode GetFatJets(xAOD::JetContainer *©, xAOD::ShallowAuxContainer *©aux, const bool recordSG=false, const std::string &jetkey="", const bool doLargeRdecorations=false, const xAOD::JetContainer *containerToBeCopied=nullptr) override final
#define ATH_MSG_VERBOSE(x)
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesPDSmearTool
StatusCode FillJet(xAOD::Jet &input, const bool doCalib=true, bool isFat=false, bool doLargeRdecorations=false) override final
asg::AnaToolHandle< JetVertexTaggerTool > m_jetJvtMomentTool
float BtagSF_trkJet(const xAOD::JetContainer *trkjets) override final
SG::ConstAccessor< char > m_acc_jetClean
bool IsTrackBJet(const xAOD::Jet &input) const override final
asg::AnaToolHandle< IBTaggingEfficiencyTool > m_btagEffTool_trkJet
StatusCode FillTrackJet(xAOD::Jet &input) override final
double FJVT_SFsys(const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig) override final
@ JetConstitScaleMomentum
StatusCode GetJetsSyst(const xAOD::JetContainer &calibjets, xAOD::JetContainer *©, xAOD::ShallowAuxContainer *©aux, const bool recordSG=true, const std::string &jetkey="") override final
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
@ OutOfValidityRange
Input object is out of validity range.
@ Error
Some error happened during the object correction.
std::string m_defaultJets
void addGhostMuonsToJets(const xAOD::MuonContainer &muons, xAOD::JetContainer &jets)
int IsBJetContinuous(const xAOD::Jet &input) const override final
Handle class for reading a decoration on an object.
bool pc(const std::string &taggername, double &value) const
asg::AnaToolHandle< IJetCalibrationTool > m_jetCalibTool
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
::StatusCode StatusCode
StatusCode definition for legacy code.
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesTool
bool IsSignalJet(const xAOD::Jet &input, const float ptcut, const float etacut) const override final
asg::AnaToolHandle< SmoothedWZTagger > m_ZTaggerTool
double FJVT_SF(const xAOD::JetContainer *jets) override final
asg::AnaToolHandle< IAsgSelectionTool > m_jetfJvtSelectionTool
bool m_jetUncertaintiesPDsmearing
StatusCode GetTrackJets(xAOD::JetContainer *©, xAOD::ShallowAuxContainer *©aux, const bool recordSG=true, const std::string &jetkey="", const xAOD::JetContainer *containerToBeCopied=nullptr) override final
asg::AnaToolHandle< JetPileupLabelingTool > m_jetPileupLabelingTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_WTagjetUncertaintiesTool
bool isData() const override final
bool IsBadJet(const xAOD::Jet &input) const override final
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool_trkJet
size_t index() const
Return the index of this element within its container.
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_fatjetUncertaintiesTool
std::string m_WTagUncConfig
StatusCode SetBtagWeightDecorations(const xAOD::Jet &input, const asg::AnaToolHandle< IBTaggingSelectionTool > &btagSelTool, const std::string &btagTagger) const override final
bool pu(const std::string &taggername, double &value) const
std::string m_ToptagConfig
bool m_useBtagging_trkJet
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool_OR
value_type push_back(value_type pElem)
Add an element to the end of the collection.
virtual StatusCode tag(const xAOD::Jet &jet) const override
Decorate single jet with tagging info.
std::string m_BtagWP_trkJet
void setName(const char *name)
Set the name of the container instance.
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, [[maybe_unused]] const EventContext &ctx)
Function making a shallow copy of a constant container.
double GetTotalJetSFsys(const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig, const bool btagSF=true, const bool jvtSF=true, const bool fjvtSF=false) override final
bool isPileup(int origin)
from pileup
const BTagging * getBTagging(const SG::AuxElement &part)
Access the default xAOD::BTagging object associated to an object.
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool
asg::AnaToolHandle< IAsgSelectionTool > m_jetNNJvtSelectionTool
@ Ok
The correction was done successfully.
asg::AnaToolHandle< IBTaggingEfficiencyTool > m_btagEffTool
std::string m_BtagTagger_trkJet
std::string m_JetTruthLabelName
double JVT_SF(const xAOD::JetContainer *jets) override final
#define ATH_MSG_WARNING(x)
DataVector adapter that acts like it holds const pointers.
float BtagSFsys_trkJet(const xAOD::JetContainer *trkjets, const CP::SystematicSet &systConfig) override final
bool setOriginalObjectLink(const IParticle &original, IParticle ©)
This function should be used by CP tools when they make a deep copy of an object in their correctedCo...
std::string m_defaultTrackJets
std::string m_TopTagUncConfig
Return value from object correction CP tools.
CP::SystematicSet m_currentSyst
asg::AnaToolHandle< IJetCalibrationTool > m_jetFatCalibTool
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetNNJvtEfficiencyTool
float BtagSFsys(const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig) override final
asg::AnaToolHandle< JetTruthLabelingTool > m_jetTruthLabelingTool
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
double GetTotalJetSF(const xAOD::JetContainer *jets, const bool btagSF=true, const bool jvtSF=true, const bool fjvtSF=false) override final
bool JetPassJVT(xAOD::Jet &input) override final
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_TopTagjetUncertaintiesTool
float updateJvt(const xAOD::Jet &jet) const override
Calculate the updated JVT.
virtual StatusCode decorate(const xAOD::JetContainer &jetCont) const override
Decorate a jet collection without otherwise modifying it.
setBGCode setTAP setLVL2ErrorBits bool
bool isAvailable()
Test to see if this variable exists in the store, for the referenced object.
std::string m_TopDecorName
virtual StatusCode tag(const xAOD::Jet &jet) const override
Decorate single jet with tagging info.
bool pb(const std::string &taggername, double &value) const
bool IsBJetLoose(const xAOD::Jet &input) const override final