6#ifndef SSV_Weights_ALG_H
7#define SSV_Weights_ALG_H
30#include <nlohmann/json.hpp>
38 virtual StatusCode
execute()
override;
52 const std::vector<const xAOD::Jet*> &jets,
53 const std::vector<const xAOD::Electron*> &electrons,
54 const std::vector<const xAOD::Muon*> &muons,
55 const std::vector<const xAOD::Vertex*> &SSVs)
const;
58 const std::vector<const xAOD::TruthParticle*> &truthBhs,
59 const std::vector<const xAOD::Jet*> &jets)
const;
62 const std::vector<const xAOD::TruthParticle*> &truthBhs,
63 const std::vector<const xAOD::Vertex*> &SSVs)
const;
66 const std::vector<const xAOD::TruthParticle*> &truthBhs,
67 const std::vector<const xAOD::Vertex*> &SSVs)
const;
70 const std::vector<const xAOD::TruthParticle*> &truthBhs,
71 const std::vector<bool> &matched_vector)
const;
79 const double lambda)
const;
82 const std::vector<bool> &matching_vector)
const;
85 const std::vector<bool> &matching_vector)
const;
89 const int type)
const;
92 const std::vector<const xAOD::TruthParticle*> &accepted_truthBh,
93 const std::vector<bool> &truthBh_to_SSV_matched,
97 const int b_jet_count,
99 const double SF_eff)
const;
102 const double muactual,
103 const int b_jet_count,
105 const double SF_fake_low,
106 const double SF_fake_high)
const;
109 const double muactual,
110 const int N_fake)
const;
113 const double muactual,
115 const double SF_fake_low,
116 const double SF_fake_high)
const;
120 this,
"eventInfo",
"EventInfo",
"the EventInfo container"};
123 this,
"TruthParticleContainer",
"TruthParticles",
"input TruthParticles container"};
126 this,
"jets",
"",
"the jet container to use"};
130 this,
"electrons",
"",
"the electron container to use"};
133 this,
"muons",
"",
"the muon container to use"};
137 this,
"NVSI_WP",
"",
"The NewVrtSecInclusiveTool output container to use (NewVrtSecInclusiveTool = algorithm that constructs the soft secondary vertices (SSVs))"};
static const SG::AuxElement::ConstAccessor< float > m_ssv_pt_accessor
std::vector< bool > truthBh_to_SSV_matching(const std::vector< const xAOD::TruthParticle * > &truthBhs, const std::vector< const xAOD::Vertex * > &SSVs) const
int count_not_matched_objects(const std::vector< bool > &matching_vector) const
CP::SysWriteDecorHandle< float > m_number_of_good_SSVs_decor
const double m_lowMuHighMuThreshold
CP::SysReadHandle< xAOD::JetContainer > m_jetsHandle
CP::SysReadHandle< xAOD::VertexContainer > m_ssvHandle
CP::SysWriteDecorHandle< float > m_SSV_weight_decor
std::string m_OutputVariable_Size
std::vector< const xAOD::Vertex * > create_good_SSVs(const std::vector< const xAOD::Jet * > &jets, const std::vector< const xAOD::Electron * > &electrons, const std::vector< const xAOD::Muon * > &muons, const std::vector< const xAOD::Vertex * > &SSVs) const
CP::SysReadHandle< xAOD::MuonContainer > m_muonsHandle
virtual StatusCode initialize() override
double compute_DeltaR_between_SSV_and_particle(const xAOD::Vertex *vtx, const xAOD::IParticle *part) const
static const SG::AuxElement::ConstAccessor< float > m_ssv_phi_accessor
CP::SysWriteDecorHandle< float > m_P_fake_pileup_based_linearfit_decor
double calculate_P_ineff_bjet_based(const int b_jet_count, const int N_missed, const double SF_eff) const
double calculate_P_fake_pileup_based_binned(const double muactual, const int N_fake, const double SF_fake_low, const double SF_fake_high) const
nlohmann::json m_jsonConfig_SSVWeightsAlg
bool isHFHadronFinalState(const xAOD::TruthParticle *part, const int type) const
std::vector< const xAOD::TruthParticle * > create_accepted_truthBhs(const std::vector< const xAOD::TruthParticle * > &truthBhs, const std::vector< const xAOD::Jet * > &jets) const
double calculate_P_fake_pileup_bjet_based(const double muactual, const int b_jet_count, const int N_fake, const double SF_fake_low, const double SF_fake_high) const
double calculate_P_ineff_Bhadron_pt_eta_based(const std::vector< const xAOD::TruthParticle * > &accepted_truthBh, const std::vector< bool > &truthBh_to_SSV_matched, double SF_eff) const
CP::SysWriteDecorHandle< float > m_N_missed_decor
CP::SysWriteDecorHandle< float > m_number_of_accepted_Bhadrons_decor
CP::SysWriteDecorHandle< float > m_number_of_bjets_decor
virtual StatusCode execute() override
int count_matched_objects(const std::vector< bool > &matching_vector) const
CP::SysWriteDecorHandle< float > m_N_matched_decor
CP::SysWriteDecorHandle< float > m_P_fake_pileup_bjet_based_decor
CP::SysReadHandle< xAOD::TruthParticleContainer > m_truthParticlesHandle
double poisson_pmf(const int k, const double lambda) const
CP::SysWriteDecorHandle< float > m_P_ineff_bjet_based_decor
CP::SysWriteDecorHandle< float > m_P_ineff_decor
SSVWeightsAlg(const std::string &name, ISvcLocator *pSvcLocator)
int count_number_of_fake_SSVs(const std::vector< const xAOD::TruthParticle * > &truthBhs, const std::vector< const xAOD::Vertex * > &SSVs) const
CP::SysReadHandle< xAOD::EventInfo > m_eventInfoHandle
CP::SysListHandle m_systematicsList
double calculate_P_fake_pileup_based_linearfit(const double muactual, const int N_fake) const
static const SG::AuxElement::ConstAccessor< float > m_ssv_m_accessor
std::string m_OverlapRemoval
const std::vector< const xAOD::TruthParticle * > construct_not_matched_vectors(const std::vector< const xAOD::TruthParticle * > &truthBhs, const std::vector< bool > &matched_vector) const
CP::SysWriteDecorHandle< float > m_P_ineff_pt_eta_based_decor
CP::SysWriteDecorHandle< float > m_P_fake_pileup_based_binned_decor
std::string m_efficiency_Method
CP::SysWriteDecorHandle< float > m_N_fake_decor
std::string m_BTagging_WP
std::string m_jsonConfigPath_SSVWeightsAlg
CP::SysWriteDecorHandle< float > m_P_fake_decor
CP::SysReadHandle< xAOD::ElectronContainer > m_electronsHandle
static const SG::AuxElement::ConstAccessor< float > m_ssv_eta_accessor
CP::SysWriteDecorHandle< float > m_P_eff_decor
a class managing the property to configure the list of systematics to process
a data handle for reading systematics varied input data
a data handle for reading systematics varied input data
the (new) base class for EventLoop algorithms
SG::ConstAccessor< T, ALLOC > ConstAccessor
Class providing the definition of the 4-vector interface.
Select isolated Photons, Electrons and Muons.
Vertex_v1 Vertex
Define the latest version of the vertex class.
TruthParticle_v1 TruthParticle
Typedef to implementation.