Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
#include <FFJetSmearingTool.h>
|
| FFJetSmearingTool (const std::string &name) |
| Proper constructor for Athena. More...
|
|
virtual | ~FFJetSmearingTool () |
|
virtual StatusCode | initialize () override |
| Dummy implementation of the initialisation function. More...
|
|
virtual CP::CorrectionCode | applyCorrection (xAOD::Jet &jet_reco) const override |
| Apply a systematic variation of get a new copy. More...
|
|
virtual CP::CorrectionCode | correctedCopy (const xAOD::Jet &input, xAOD::Jet *&output) const override |
|
virtual CP::CorrectionCode | applyContainerCorrection (xAOD::JetContainer &inputs) const override |
|
StatusCode | getMatchedTruthJet (xAOD::Jet &jet_reco, xAOD::Jet &jet_truth_matched) const |
|
virtual void | print () const |
| Print the state of the tool. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysInitialize () override |
| Perform system initialization for an algorithm. More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
virtual bool | isAffectedBySystematic (const CP::SystematicVariation &systematic) const override |
| Specify whether tool is affected by provided systematic. More...
|
|
virtual CP::SystematicSet | affectingSystematics () const override |
| List of all systematics affecting this tool. More...
|
|
virtual CP::SystematicSet | recommendedSystematics () const override |
| List of all systematics recommended for this tool. More...
|
|
virtual StatusCode | applySystematicVariation (const CP::SystematicSet &systematics) override |
| Configure tool to apply systematic variation. More...
|
|
|
StatusCode | readFFJetSmearingToolSimplifiedData (TEnv &settings) |
|
StatusCode | getJMSJMR (xAOD::Jet &jet_reco, double jet_mass, JetTools::FFJetAllowedMassDefEnum MassDef_of_syst, const std::string &jetTopology, double &JMS_err, double &JMR_err) const |
|
StatusCode | getJetTopology (xAOD::Jet &jet_reco, std::string &jetTopology) const |
|
double | Read3DHistogram (const TH3 *histo, double x, double y, double z) const |
|
double | Interpolate2D (const TH2 *histo, double x, double y) const |
|
void | replaceAllOccurrences (std::string &str, const std::string &to_find, const std::string &to_replace) |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
bool | m_isInit {} |
|
std::string | m_release |
|
std::string | m_truth_jetColl |
|
std::string | m_truthlabelaccessor |
|
std::string | m_supportedmctypes |
|
float | m_EtaRange {} |
|
float | m_MaxMass {} |
|
float | m_MaxPt {} |
|
std::string | m_calibArea |
|
std::string | m_histFileName |
|
std::string | m_MassDef_string |
|
std::string | m_MCType_string |
|
JetTools::FFJetAllowedMassDefEnum | m_MassDef {} |
|
std::string | m_configFile |
|
std::string | m_path |
|
std::string | m_HistogramsFilePath |
|
bool | m_doGaussianSmearing {} |
|
std::unique_ptr< TH2 > | m_CALO_ResponseMap |
|
std::unique_ptr< TH2 > | m_TA_ResponseMap |
|
std::unique_ptr< TH2 > | m_UFO_ResponseMap |
|
std::unique_ptr< TH3F > | m_caloMassWeight |
|
std::unique_ptr< TH3F > | m_TAMassWeight |
|
CP::SystematicSet | m_SysList {} |
|
std::map< std::string, std::string > | m_Syst_MassDefAffected_map |
|
std::map< std::string, std::string > | m_Syst_TopologyAffected_map |
|
std::map< std::string, std::string > | m_Syst_HistPath_map |
|
std::map< std::string, std::unique_ptr< TH2 > > | m_Syst_Hist_map |
|
std::map< std::string, std::unique_ptr< TH3F > > | m_Syst_Hist_map3d |
|
std::map< std::string, std::string > | m_Syst_HistTAPath_map |
|
std::map< std::string, std::unique_ptr< TH2 > > | m_Syst_HistTA_map |
|
std::map< std::string, std::unique_ptr< TH3F > > | m_Syst_HistTA_map3d |
|
std::map< std::string, std::string > | m_Syst_Affects_JMSorJMR |
|
std::map< std::string, std::string > | m_Syst_uncertparam |
|
std::unordered_map< CP::SystematicSet, SysData > | m_sysData |
|
SysData * | m_currentSysData {nullptr} |
| Points to the current systematic configuration. More...
|
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Definition at line 101 of file FFJetSmearingTool.h.
◆ StoreGateSvc_t
◆ FFJetSmearingTool()
CP::FFJetSmearingTool::FFJetSmearingTool |
( |
const std::string & |
name | ) |
|
◆ ~FFJetSmearingTool()
CP::FFJetSmearingTool::~FFJetSmearingTool |
( |
| ) |
|
|
virtualdefault |
◆ affectingSystematics()
◆ applyContainerCorrection()
◆ applyCorrection()
Apply a systematic variation of get a new copy.
Implements ICPJetCorrectionTool.
Definition at line 661 of file FFJetSmearingTool.cxx.
663 ATH_MSG_VERBOSE(
"//---------------------------------------------------------------//");
664 ATH_MSG_VERBOSE(
"Reco Jet to Smear: pt = " << jet_reco.
pt() <<
", mass = " << jet_reco.
m() <<
", eta = " << jet_reco.
eta());
675 ATH_MSG_DEBUG(
"This jet exceeds the maximum pt that the tool allows jet_pt <" <<
m_MaxPt <<
" MeV)");
678 if (jet_reco.
m() <= 0){
688 ATH_MSG_VERBOSE(
"No truth jet match with this reco jet. The jet will not be smeared.");
692 ATH_MSG_VERBOSE(
"Matched truth Jet: pt = " << jet_truth_matched.
pt() <<
", mass = " << jet_truth_matched.
m() <<
", eta = " << jet_truth_matched.
eta());
695 std::string jetTopology;
701 if (jetTopology ==
"no_match"){
707 double jet_mass_UFO = 0;
708 double jet_mass_CALO = 0;
709 double jet_mass_TA = 0;
710 double calo_mass_weight=1;
712 float JetTrackAssistedMassCalibrated_from_JetCalibTools;
728 jet_mass_CALO = jet_reco_CALO.mass();
729 jet_mass_TA = jet_reco_TA.mass();
730 jet_reco.
getAttribute<
float>(
"JetTrackAssistedMassCalibrated", JetTrackAssistedMassCalibrated_from_JetCalibTools);
733 jet_mass_CALO = jet_reco.
m();
734 calo_mass_weight = 1;
736 jet_mass_TA = jet_reco.
m();
737 jet_reco.
getAttribute<
float>(
"JetTrackAssistedMassCalibrated", JetTrackAssistedMassCalibrated_from_JetCalibTools);
738 calo_mass_weight = 0;
740 jet_mass_UFO = jet_reco.
m();
741 calo_mass_weight = 1;
746 double avg_response_UFO=1;
747 double avg_response_CALO=1;
748 double avg_response_TA=1;
752 if (avg_response_CALO == 0) avg_response_CALO=1;
757 if (avg_response_TA == 0) avg_response_TA = 1;
762 if (avg_response_UFO == 0) avg_response_UFO = 1;
767 double JMS(1), JMS_err(0), JMR(1), JMR_err(0);
771 double smeared_UFO_mass = jet_mass_UFO;
772 double smeared_CALO_mass = jet_mass_CALO;
773 double smeared_TA_mass = jet_mass_TA;
775 bool is_UFO_mass_smeared =
false;
776 bool is_CALO_mass_smeared =
false;
777 bool is_TA_mass_smeared =
false;
785 scale = JMS + JMS_err;
788 if (TMath::Abs(
scale-1) > 0.0001 || TMath::Abs(
resolution-1) > 0.0001){
789 is_CALO_mass_smeared =
true;
791 ATH_MSG_VERBOSE(
"Forward Folding CALO procedure will use scale=" <<
scale <<
", resolution=" <<
resolution <<
" and average respose=" << avg_response_CALO);
794 smeared_CALO_mass = jet_mass_CALO *
scale + (jet_mass_CALO - avg_response_CALO*jet_truth_matched.
m())*(
resolution-
scale);
805 scale = JMS + JMS_err;
808 if (TMath::Abs(
scale-1) > 0.0001 || TMath::Abs(
resolution-1) > 0.0001){
810 is_TA_mass_smeared =
true;
812 ATH_MSG_VERBOSE(
"Forward Folding TA procedure will use scale=" <<
scale <<
", resolution=" <<
resolution <<
" and average respose=" << avg_response_TA);
815 smeared_TA_mass = jet_mass_TA *
scale + (jet_mass_TA - avg_response_TA*jet_truth_matched.
m())*(
resolution-
scale);
826 scale = JMS + JMS_err;
829 if (TMath::Abs(
scale-1) > 0.0001 || TMath::Abs(
resolution-1) > 0.0001){
830 is_UFO_mass_smeared =
true;
832 ATH_MSG_VERBOSE(
"Forward Folding UFO procedure will use scale=" <<
scale <<
", resolution=" <<
resolution <<
" and average respose=" << avg_response_UFO);
835 smeared_UFO_mass = jet_mass_UFO *
scale + (jet_mass_UFO - avg_response_UFO*jet_truth_matched.
m())*(
resolution-
scale);
841 if (!is_CALO_mass_smeared && !is_TA_mass_smeared && !is_UFO_mass_smeared){
842 ATH_MSG_VERBOSE(
"This jet is not affected by the systematic. The jet won't be modified");
843 ATH_MSG_VERBOSE(
"//---------------------------------------------------------------//");
867 p4_aux =
xAOD::JetFourMom_t(jet_reco_CALO.pt(),jet_reco_CALO.eta(),jet_reco_CALO.phi(),smeared_CALO_mass);
868 jet_reco_CALO = p4_aux;
870 p4_aux =
xAOD::JetFourMom_t(jet_reco_TA.pt(),jet_reco_TA.eta(),jet_reco_TA.phi(),smeared_TA_mass);
871 jet_reco_TA = p4_aux;
888 caloFactor = 0; TAFactor = 1;
889 }
else if (TARes == 0){
890 caloFactor = 1; TAFactor = 0;
892 caloFactor = 1./(caloRes*caloRes);
893 TAFactor = 1./(TARes*TARes);
896 calo_mass_weight = caloFactor /(caloFactor + TAFactor);
900 }
else if (JetTrackAssistedMassCalibrated_from_JetCalibTools == 0){
901 calo_mass_weight = 1;
902 }
else if (jet_mass_CALO == 0){
903 calo_mass_weight = 0;
907 double smeared_mass = 0;
909 smeared_mass = smeared_UFO_mass;
912 smeared_mass = calo_mass_weight*smeared_CALO_mass + (1 - calo_mass_weight)*smeared_TA_mass;
922 ATH_MSG_VERBOSE(
"Smeared Reco Jet: pt = " << jet_reco.
pt() <<
", mass = " << jet_reco.
m() <<
", eta = " << jet_reco.
eta());
924 ATH_MSG_VERBOSE(
"//---------------------------------------------------------------//");
◆ applySystematicVariation()
Configure tool to apply systematic variation.
Implements CP::ISystematicsTool.
Definition at line 257 of file FFJetSmearingTool.cxx.
268 filterForAffectingSystematics(
systematics, affectingSysts, filteredSysts) != StatusCode::SUCCESS ){
270 return StatusCode::FAILURE;
277 if (filteredSysts.
size() > 1){
278 ATH_MSG_ERROR(
"No support for more than one JMS/JMR sys at a time: " << filteredSysts.
name());
279 return StatusCode::FAILURE;
281 if (filteredSysts.
size() == 0) {
283 return StatusCode::SUCCESS;
291 myData.SysParameter =
sys.parameter();
292 myData.SysBaseName =
sys.basename();
300 return StatusCode::SUCCESS;
◆ correctedCopy()
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ getJetTopology()
StatusCode CP::FFJetSmearingTool::getJetTopology |
( |
xAOD::Jet & |
jet_reco, |
|
|
std::string & |
jetTopology |
|
) |
| const |
|
private |
Definition at line 527 of file FFJetSmearingTool.cxx.
529 if (!accTruthLabel.isAvailable(jet_reco) )
531 ATH_MSG_ERROR(
"Unable to retrieve the FatjetTruthLabel from the jet. Please call the BoostedJetTaggers decorateTruthLabel() function before calling this function.");
532 return StatusCode::FAILURE;
546 jetTopology=
"no_match";
547 ATH_MSG_DEBUG(
"No truth jet match with this reco jet. The jet will not be smeared.");
552 ATH_MSG_VERBOSE(
"The topology of this jet correspond to a " << jetTopology <<
" large-R jet");
554 return StatusCode::SUCCESS;
◆ getJMSJMR()
Definition at line 562 of file FFJetSmearingTool.cxx.
581 return StatusCode::SUCCESS;
584 if (topologyAffected !=
"All" && !TString(topologyAffected).Contains(jetTopology)){
585 ATH_MSG_VERBOSE(
"The systematic does not affect to this jet topology");
586 return StatusCode::SUCCESS;
596 const TH2*
hist =
nullptr;
602 if (MassDef_of_syst == calo){
604 }
else if (MassDef_of_syst == ta){
614 const TH2*
hist =
nullptr;
615 const TH3F* hist3d =
nullptr;
619 if (uncertparam ==
"eLOGmOeAbsEta"){
625 if (MassDef_of_syst == calo){
626 if (uncertparam ==
"eLOGmOeAbsEta"){
631 }
else if (MassDef_of_syst == ta){
632 if (uncertparam ==
"eLOGmOeAbsEta"){
640 if (uncertparam ==
"eLOGmOeAbsEta"){
653 return StatusCode::SUCCESS;
◆ getKey()
Get the (hashed) key of an object that is in the event store.
This is a bit of a special one. StoreGateSvc
and xAOD::TEvent
both provide ways for getting the SG::sgkey_t
key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.
In order to allow tools to efficiently perform this operation, they can use this helper function.
- See also
- asg::AsgTool::getName
- Parameters
-
ptr | The bare pointer to the object that the event store should know about |
- Returns
- The hashed key of the object in the store. If not found, an invalid (zero) key.
Definition at line 119 of file AsgTool.cxx.
121 #ifdef XAOD_STANDALONE
127 return (
proxy ==
nullptr ? 0 :
proxy->sgkey() );
128 #endif // XAOD_STANDALONE
◆ getMatchedTruthJet()
StatusCode CP::FFJetSmearingTool::getMatchedTruthJet |
( |
xAOD::Jet & |
jet_reco, |
|
|
xAOD::Jet & |
jet_truth_matched |
|
) |
| const |
Definition at line 495 of file FFJetSmearingTool.cxx.
502 double dRmax_truthJet = 0.75;
507 for (
const auto *
const jet_truth : *jets_truth){
508 float dR_Test = jet_reco.
p4().DeltaR(jet_truth->p4());
509 if (dR_Test < dRmax_truthJet){
510 if (dR_Test < dRmin){
511 close_jet = jet_truth;
516 if (dRmin > 999){
return StatusCode::FAILURE;}
519 return StatusCode::SUCCESS;
◆ getName()
const std::string & asg::AsgTool::getName |
( |
const void * |
ptr | ) |
const |
|
inherited |
Get the name of an object that is / should be in the event store.
This is a bit of a special one. StoreGateSvc
and xAOD::TEvent
both provide ways for getting the std::string
name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.
In order to allow tools to efficiently perform this operation, they can use this helper function.
- See also
- asg::AsgTool::getKey
- Parameters
-
ptr | The bare pointer to the object that the event store should know about |
- Returns
- The string name of the object in the store. If not found, an empty string.
Definition at line 106 of file AsgTool.cxx.
108 #ifdef XAOD_STANDALONE
114 static const std::string
dummy =
"";
116 #endif // XAOD_STANDALONE
◆ getProperty()
template<class T >
const T* asg::AsgTool::getProperty |
( |
const std::string & |
name | ) |
const |
|
inherited |
Get one of the tool's properties.
◆ initialize()
StatusCode CP::FFJetSmearingTool::initialize |
( |
| ) |
|
|
overridevirtual |
Dummy implementation of the initialisation function.
It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...
Reimplemented from asg::AsgTool.
Definition at line 54 of file FFJetSmearingTool.cxx.
58 return StatusCode::FAILURE;
65 return StatusCode::FAILURE;
70 return StatusCode::FAILURE;
75 return StatusCode::FAILURE;
87 if (settings.ReadFile( configFilePath.Data(),kEnvGlobal)){
88 ATH_MSG_ERROR(
"Cannot read config file: " << configFilePath.Data());
89 return StatusCode::FAILURE;
92 ATH_MSG_INFO(
"================================================");
97 m_release = settings.GetValue(
"UncertaintyRelease",
"UNKNOWN");
103 ATH_MSG_ERROR(
"Cannot find the truth jet collection to use in config");
104 return StatusCode::FAILURE;
111 ATH_MSG_ERROR(
"Cannot find the TruthLabelAccessor to use in config");
112 return StatusCode::FAILURE;
119 ATH_MSG_ERROR(
"Cannot find the SupportedMCTypes to use in config");
120 return StatusCode::FAILURE;
127 ATH_MSG_ERROR(
"You are not running with a supported MC type");
128 return StatusCode::FAILURE;
134 ATH_MSG_ERROR(
"Cannot find the EtaRange parameter in the config file");
135 return StatusCode::FAILURE;
140 m_MaxMass = settings.GetValue(
"MaxMass",0);
142 ATH_MSG_ERROR(
"Cannot find the MaxMass parameter in the config file");
143 return StatusCode::FAILURE;
148 m_MaxPt = settings.GetValue(
"MaxPt",0);
150 ATH_MSG_ERROR(
"Cannot find the MaxPt parameter in the config file");
151 return StatusCode::FAILURE;
159 ATH_MSG_ERROR(
"Cannot find uncertainty histogram file in the config file");
160 return StatusCode::FAILURE;
171 if (
registry.registerSystematics(*
this) != StatusCode::SUCCESS){
173 return StatusCode::FAILURE;
180 return StatusCode::SUCCESS;
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ Interpolate2D()
double CP::FFJetSmearingTool::Interpolate2D |
( |
const TH2 * |
histo, |
|
|
double |
x, |
|
|
double |
y |
|
) |
| const |
|
private |
Definition at line 998 of file FFJetSmearingTool.cxx.
1000 ATH_MSG_ERROR(
"Histogram pointer is null in FFJetSmearingTool::Interpolate2D");
1003 Int_t bin_x =
histo->GetXaxis()->FindFixBin(
x);
1004 Int_t bin_y =
histo->GetYaxis()->FindFixBin(
y);
1005 if (bin_x<1 || bin_x>
histo->GetNbinsX() || bin_y<1 || bin_y>
histo->GetNbinsY()){
1011 return interpolated_value;
◆ isAffectedBySystematic()
◆ msg() [1/2]
◆ msg() [2/2]
◆ msg_level_name()
const std::string & asg::AsgTool::msg_level_name |
( |
| ) |
const |
|
inherited |
A deprecated function for getting the message level's name.
Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:
MSG::name( msg().level() )
This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.
- Returns
- The string name of the current minimum message level that's printed
Definition at line 101 of file AsgTool.cxx.
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ print()
void asg::AsgTool::print |
( |
| ) |
const |
|
virtualinherited |
Print the state of the tool.
Implements asg::IAsgTool.
Reimplemented in JetRecTool, JetFinder, JetModifiedMassDrop, JetFromPseudojet, JetReclusterer, JetReclusteringTool, JetTruthLabelingTool, JetPileupLabelingTool, HI::HIPileupTool, JetDumper, JetBottomUpSoftDrop, JetRecursiveSoftDrop, JetSoftDrop, JetConstituentsRetriever, JetSubStructureMomentToolsBase, JetSplitter, JetToolRunner, JetPruner, JetPseudojetRetriever, JetTrimmer, AsgHelloTool, and KtDeltaRTool.
Definition at line 131 of file AsgTool.cxx.
◆ Read3DHistogram()
double CP::FFJetSmearingTool::Read3DHistogram |
( |
const TH3 * |
histo, |
|
|
double |
x, |
|
|
double |
y, |
|
|
double |
z |
|
) |
| const |
|
private |
Definition at line 961 of file FFJetSmearingTool.cxx.
964 ATH_MSG_ERROR(
"Histogram pointer is null in FFJetSmearingTool::Read3DHistogram");
975 double xMax =
histo->GetXaxis()->GetBinLowEdge(
histo->GetNbinsX()+1);
976 double xMin =
histo->GetXaxis()->GetBinLowEdge(1);
977 double yMax =
histo->GetYaxis()->GetBinLowEdge(
histo->GetNbinsY()+1);
978 double yMin =
histo->GetYaxis()->GetBinLowEdge(1);
979 double zMax =
histo->GetZaxis()->GetBinLowEdge(
histo->GetNbinsZ()+1);
980 double zMin =
histo->GetZaxis()->GetBinLowEdge(1);
982 if (
x >= xMax) aux_x = xMax-1
e-6 ;
983 if (
x <= xMin) aux_x = xMin+1
e-6 ;
984 if (std::isnan(
y))
return 0;
985 if (
y >= yMax) aux_y = yMax-1
e-6 ;
986 if (
y <= yMin) aux_y = yMin+1
e-6 ;
987 if (
z >= zMax) aux_z = zMax-1
e-6 ;
988 if (
z <= zMin) aux_z = zMin+1
e-6 ;
◆ readFFJetSmearingToolSimplifiedData()
StatusCode CP::FFJetSmearingTool::readFFJetSmearingToolSimplifiedData |
( |
TEnv & |
settings | ) |
|
|
private |
Definition at line 308 of file FFJetSmearingTool.cxx.
310 if (!data_file || data_file->IsZombie()){
312 return StatusCode::FAILURE;
320 TString CaloResponseMap_path = settings.GetValue(
"CaloResponseMap",
"");
322 if (CaloResponseMap_path.IsNull()){
323 ATH_MSG_ERROR(
"Cannot find the CaloResponseMap in the config file");
324 return StatusCode::FAILURE;
327 m_CALO_ResponseMap = std::unique_ptr<TH2>(
dynamic_cast<TH2*
>(data_file->Get( CaloResponseMap_path )));
334 TString TAResponseMap_path = settings.GetValue(
"TAResponseMap",
"");
336 if (TAResponseMap_path.IsNull()){
337 ATH_MSG_ERROR(
"Cannot find the TAResponseMap in the config file");
338 return StatusCode::FAILURE;
341 m_TA_ResponseMap = std::unique_ptr<TH2>(
dynamic_cast<TH2*
>(data_file->Get( TAResponseMap_path )));
348 TString UFOResponseMap_path = settings.GetValue(
"UFOResponseMap",
"");
350 if (UFOResponseMap_path.IsNull()){
351 ATH_MSG_ERROR(
"Cannot find the UFOResponseMap in the config file");
352 return StatusCode::FAILURE;
355 m_UFO_ResponseMap = std::unique_ptr<TH2>(
dynamic_cast<TH2*
>(data_file->Get( UFOResponseMap_path )));
362 for (
size_t iComp = 0; iComp < 999; ++iComp){
364 const TString
prefix = Form(
"JMSComponent.%zu.",iComp);
365 std::string Syst_Name = settings.GetValue(
prefix+
"Name",
"");
367 if (!Syst_Name.empty()){
393 for (
size_t iComp = 0; iComp < 999; ++iComp){
395 const TString
prefix = Form(
"JMRComponent.%zu.",iComp);
396 std::string Syst_Name = settings.GetValue(
prefix+
"Name",
"");
398 std::string to_find =
"MCTYPE";
402 if (!Syst_Name.empty()){
445 TString Calo_TA_weight_file_name = settings.GetValue(
"JetUncertainties_UncertaintyRootFile",
"");
448 if (Calo_TA_weight_file_path.IsNull()){
449 ATH_MSG_ERROR(
"Cannot find the file with the Calo and TA weights");
450 return StatusCode::FAILURE;
453 TString Calo_weight_hist_name = settings.GetValue(
"CombMassWeightCaloHist",
"");
454 if (Calo_weight_hist_name.IsNull()){
455 ATH_MSG_ERROR(
"Cannot find the histogram name that contains the Calo weights in the config file");
456 return StatusCode::FAILURE;
459 TString TA_weight_hist_name = settings.GetValue(
"CombMassWeightTAHist",
"");
460 if (TA_weight_hist_name.IsNull()){
461 ATH_MSG_ERROR(
"Cannot find the histogram name that contains the TA weights in the config file");
462 return StatusCode::FAILURE;
465 ATH_MSG_INFO(Form(
" Calo weights hist: \"%s\"",Calo_weight_hist_name.Data()));
466 ATH_MSG_INFO(Form(
" TA weights hist: \"%s\"",TA_weight_hist_name.Data()));
467 ATH_MSG_INFO(Form(
" Location: %s",Calo_TA_weight_file_path.Data()));
470 std::unique_ptr<TFile> Calo_TA_weight_file ( TFile::Open(Calo_TA_weight_file_path));
471 if (!Calo_TA_weight_file || Calo_TA_weight_file->IsZombie()){
472 ATH_MSG_FATAL(
"Could not open the first input file: " << Calo_TA_weight_file_path );
473 return StatusCode::FAILURE;
476 m_caloMassWeight = std::unique_ptr<TH3F>(
dynamic_cast<TH3F*
>(Calo_TA_weight_file->Get(Calo_weight_hist_name)));
477 m_TAMassWeight = std::unique_ptr<TH3F>(
dynamic_cast<TH3F*
>(Calo_TA_weight_file->Get(TA_weight_hist_name)));
483 Calo_TA_weight_file->Close();
487 return StatusCode::SUCCESS;
◆ recommendedSystematics()
List of all systematics recommended for this tool.
Implements CP::IReentrantSystematicsTool.
Definition at line 206 of file FFJetSmearingTool.cxx.
212 if ((*ci).basename().find(
"CALO_")!=std::string::npos){
213 filteredSysts.
insert(*ci);
216 return filteredSysts;
222 if ((*ci).basename().find(
"TA_") !=std::string::npos){
223 filteredSysts.
insert(*ci);
226 return filteredSysts;
232 if ((*ci).basename().find(
"COMB_")!=std::string::npos){
233 filteredSysts.
insert(*ci);
236 return filteredSysts;
242 if ((*ci).basename().find(
"JET_JMRUnc_")!=std::string::npos){
243 filteredSysts.
insert(*ci);
246 return filteredSysts;
◆ renounce()
◆ renounceArray()
◆ replaceAllOccurrences()
void CP::FFJetSmearingTool::replaceAllOccurrences |
( |
std::string & |
str, |
|
|
const std::string & |
to_find, |
|
|
const std::string & |
to_replace |
|
) |
| |
|
private |
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_calibArea
std::string CP::FFJetSmearingTool::m_calibArea |
|
private |
◆ m_CALO_ResponseMap
std::unique_ptr<TH2> CP::FFJetSmearingTool::m_CALO_ResponseMap |
|
private |
◆ m_caloMassWeight
std::unique_ptr<TH3F> CP::FFJetSmearingTool::m_caloMassWeight |
|
private |
◆ m_configFile
std::string CP::FFJetSmearingTool::m_configFile |
|
private |
◆ m_currentSysData
SysData* CP::FFJetSmearingTool::m_currentSysData {nullptr} |
|
private |
◆ m_detStore
◆ m_doGaussianSmearing
bool CP::FFJetSmearingTool::m_doGaussianSmearing {} |
|
private |
◆ m_EtaRange
float CP::FFJetSmearingTool::m_EtaRange {} |
|
private |
◆ m_evtStore
◆ m_histFileName
std::string CP::FFJetSmearingTool::m_histFileName |
|
private |
◆ m_HistogramsFilePath
std::string CP::FFJetSmearingTool::m_HistogramsFilePath |
|
private |
◆ m_isInit
bool CP::FFJetSmearingTool::m_isInit {} |
|
private |
◆ m_MassDef
◆ m_MassDef_string
std::string CP::FFJetSmearingTool::m_MassDef_string |
|
private |
◆ m_MaxMass
float CP::FFJetSmearingTool::m_MaxMass {} |
|
private |
◆ m_MaxPt
float CP::FFJetSmearingTool::m_MaxPt {} |
|
private |
◆ m_MCType_string
std::string CP::FFJetSmearingTool::m_MCType_string |
|
private |
◆ m_MeVtoGeV
constexpr float CP::FFJetSmearingTool::m_MeVtoGeV = 1.e-3 |
|
staticconstexprprivate |
◆ m_path
std::string CP::FFJetSmearingTool::m_path |
|
private |
◆ m_release
std::string CP::FFJetSmearingTool::m_release |
|
private |
◆ m_supportedmctypes
std::string CP::FFJetSmearingTool::m_supportedmctypes |
|
private |
◆ m_sysData
◆ m_SysList
◆ m_Syst_Affects_JMSorJMR
std::map<std::string,std::string> CP::FFJetSmearingTool::m_Syst_Affects_JMSorJMR |
|
private |
◆ m_Syst_Hist_map
std::map<std::string,std::unique_ptr<TH2> > CP::FFJetSmearingTool::m_Syst_Hist_map |
|
private |
◆ m_Syst_Hist_map3d
std::map<std::string,std::unique_ptr<TH3F> > CP::FFJetSmearingTool::m_Syst_Hist_map3d |
|
private |
◆ m_Syst_HistPath_map
std::map<std::string,std::string> CP::FFJetSmearingTool::m_Syst_HistPath_map |
|
private |
◆ m_Syst_HistTA_map
std::map<std::string,std::unique_ptr<TH2> > CP::FFJetSmearingTool::m_Syst_HistTA_map |
|
private |
◆ m_Syst_HistTA_map3d
std::map<std::string,std::unique_ptr<TH3F> > CP::FFJetSmearingTool::m_Syst_HistTA_map3d |
|
private |
◆ m_Syst_HistTAPath_map
std::map<std::string,std::string> CP::FFJetSmearingTool::m_Syst_HistTAPath_map |
|
private |
◆ m_Syst_MassDefAffected_map
std::map<std::string,std::string> CP::FFJetSmearingTool::m_Syst_MassDefAffected_map |
|
private |
◆ m_Syst_TopologyAffected_map
std::map<std::string,std::string> CP::FFJetSmearingTool::m_Syst_TopologyAffected_map |
|
private |
◆ m_Syst_uncertparam
std::map<std::string,std::string> CP::FFJetSmearingTool::m_Syst_uncertparam |
|
private |
◆ m_TA_ResponseMap
std::unique_ptr<TH2> CP::FFJetSmearingTool::m_TA_ResponseMap |
|
private |
◆ m_TAMassWeight
std::unique_ptr<TH3F> CP::FFJetSmearingTool::m_TAMassWeight |
|
private |
◆ m_truth_jetColl
std::string CP::FFJetSmearingTool::m_truth_jetColl |
|
private |
◆ m_truthlabelaccessor
std::string CP::FFJetSmearingTool::m_truthlabelaccessor |
|
private |
◆ m_UFO_ResponseMap
std::unique_ptr<TH2> CP::FFJetSmearingTool::m_UFO_ResponseMap |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
size_t size() const
returns: size of the set
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Class to wrap a set of SystematicVariations.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
std::string name() const
returns: the systematics joined into a single string.
JetFourMom_t jetP4() const
The full 4-momentum of the particle : internal jet type.
virtual double phi() const
The azimuthal angle ( ) of the particle.
Helper class to provide constant type-safe access to aux data.
#define ATH_MSG_VERBOSE(x)
double resolution[nGasTypes][nParametersResolution]
bool getAttribute(AttributeID type, T &value) const
Retrieve attribute moment by enum.
virtual void setOwner(IDataHandleHolder *o)=0
void setJetP4(const JetFourMom_t &p4)
double Interpolate(const TH1 *histo, const double x)
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.
const_iterator end() const
description: const iterator to the end of the set
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.
void insert(const SystematicVariation &systematic)
description: insert a systematic into the set
void makePrivateStore()
Create a new (empty) private store for this object.
@ Ok
The correction was done successfully.
TString findFilePath(const TString &fileName, const TString &path="", const TString &calibArea="")
virtual FourMom_t p4() const
The full 4-momentum of the particle.
virtual double m() const
The invariant mass of the particle.
bool empty() const noexcept
virtual double e() const
The total energy of the particle.
This module implements the central registry for handling systematic uncertainties with CP tools.
const_iterator begin() const
description: const iterator to the beginning of the set
TypeEnum intToEnum(const int type)
Return value from object correction CP tools.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
virtual double pt() const
The transverse momentum ( ) of the particle.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Jet_v1 Jet
Definition of the current "jet version".
static SystematicRegistry & getInstance()
Get the singleton instance of the registry for the curren thread.