16 const std::string& str_nu, PtEtaPhiMVector& p1,
17 int& pdgId1, PtEtaPhiMVector& p2,
int& pdgId2) {
23 std::vector<const xAOD::TruthParticle*> W_offshell_decay1_candidates;
24 std::vector<const xAOD::TruthParticle*> W_offshell_decay2_candidates;
31 for (
const auto* particle_1 : W_offshell_decay1_candidates) {
32 for (
const auto* particle_2 : W_offshell_decay2_candidates) {
37 if ((particle_1->pdgId() * particle_2->pdgId()) > 0)
41 if (std::abs(particle_1->absPdgId() - particle_2->absPdgId()) != 1)
47 if (particle_1->uid() > 10100 && particle_2->uid() > 10100)
51 pdgId1 = particle_1->pdgId();
53 pdgId2 = particle_2->pdgId();
63 PtEtaPhiMVector Wm, Wm_decay1, Wm_decay2;
64 PtEtaPhiMVector Wp, Wp_decay1, Wp_decay2;
65 int Wm_decay1_pdgId, Wm_decay2_pdgId;
66 int Wp_decay1_pdgId, Wp_decay2_pdgId;
72 Wp_decay1, Wp_decay1_pdgId, Wp_decay2, Wp_decay2_pdgId);
74 Wp = Wp_decay1 + Wp_decay2;
75 m_dec.decorateParticle(
"MC_W_" + fsr, Wp, 24);
76 m_dec.decorateParticle(
"MC_Wdecay1_" + fsr, Wp_decay1, Wp_decay1_pdgId);
77 m_dec.decorateParticle(
"MC_Wdecay2_" + fsr, Wp_decay2, Wp_decay2_pdgId);
82 Wm_decay1, Wm_decay1_pdgId, Wm_decay2, Wm_decay2_pdgId);
84 Wm = Wm_decay1 + Wm_decay2;
85 m_dec.decorateParticle(
"MC_W_" + fsr, Wm, -24);
86 m_dec.decorateParticle(
"MC_Wdecay1_" + fsr, Wm_decay1, Wm_decay1_pdgId);
87 m_dec.decorateParticle(
"MC_Wdecay2_" + fsr, Wm_decay2, Wm_decay2_pdgId);
89 }
else if (nWs == 2) {
93 Wp_decay1, Wp_decay1_pdgId, Wp_decay2, Wp_decay2_pdgId);
95 Wp = Wp_decay1 + Wp_decay2;
96 m_dec.decorateParticle(
"MC_W1_" + fsr, Wp, 24);
97 m_dec.decorateParticle(
"MC_W1decay1_" + fsr, Wp_decay1, Wp_decay1_pdgId);
98 m_dec.decorateParticle(
"MC_W1decay2_" + fsr, Wp_decay2, Wp_decay2_pdgId);
103 Wm_decay1, Wm_decay1_pdgId, Wm_decay2, Wm_decay2_pdgId);
105 Wm = Wm_decay1 + Wm_decay2;
106 m_dec.decorateParticle(
"MC_W2_" + fsr, Wm, -24);
107 m_dec.decorateParticle(
"MC_W2decay1_" + fsr, Wm_decay1, Wm_decay1_pdgId);
108 m_dec.decorateParticle(
"MC_W2decay2_" + fsr, Wm_decay2, Wm_decay2_pdgId);
bool RetrieveParticleInfo(const std::string &prefix, std::vector< const xAOD::TruthParticle * > &particles)
void FillWPartonHistory(const std::string &parent, int nWs=1, const std::string &mode="resonant")
bool getW(const std::string &str_lep, const std::string &str_nu, PtEtaPhiMVector &p1, int &pdgId1, PtEtaPhiMVector &p2, int &pdgId2)
std::string m_prefix
prefix applied to all decorator and m_particleMap names
void setW(const std::string &fsr, int nWs)
void FillGenericPartonHistory(const std::string &retrievalstring, const std::string &decorationstring, const int idx)