17 const std::string& str_nu, PtEtaPhiMVector& p1,
18 int& pdgId1, PtEtaPhiMVector& p2,
int& pdgId2) {
24 std::vector<const xAOD::TruthParticle*> W_offshell_decay1_candidates;
25 std::vector<const xAOD::TruthParticle*> W_offshell_decay2_candidates;
32 for (
const auto* particle_1 : W_offshell_decay1_candidates) {
33 for (
const auto* particle_2 : W_offshell_decay2_candidates) {
38 if ((particle_1->pdgId() * particle_2->pdgId()) > 0)
42 if (std::abs(particle_1->absPdgId() - particle_2->absPdgId()) != 1)
48 if (particle_1->uid() > 10100 && particle_2->uid() > 10100)
52 pdgId1 = particle_1->pdgId();
54 pdgId2 = particle_2->pdgId();
64 PtEtaPhiMVector Wm, Wm_decay1, Wm_decay2;
65 PtEtaPhiMVector Wp, Wp_decay1, Wp_decay2;
66 int Wm_decay1_pdgId, Wm_decay2_pdgId;
67 int Wp_decay1_pdgId, Wp_decay2_pdgId;
73 Wp_decay1, Wp_decay1_pdgId, Wp_decay2, Wp_decay2_pdgId);
75 Wp = Wp_decay1 + Wp_decay2;
76 m_dec.decorateParticle(
"MC_W_" + fsr, Wp, 24);
77 m_dec.decorateParticle(
"MC_Wdecay1_" + fsr, Wp_decay1, Wp_decay1_pdgId);
78 m_dec.decorateParticle(
"MC_Wdecay2_" + fsr, Wp_decay2, Wp_decay2_pdgId);
83 Wm_decay1, Wm_decay1_pdgId, Wm_decay2, Wm_decay2_pdgId);
85 Wm = Wm_decay1 + Wm_decay2;
86 m_dec.decorateParticle(
"MC_W_" + fsr, Wm, -24);
87 m_dec.decorateParticle(
"MC_Wdecay1_" + fsr, Wm_decay1, Wm_decay1_pdgId);
88 m_dec.decorateParticle(
"MC_Wdecay2_" + fsr, Wm_decay2, Wm_decay2_pdgId);
90 }
else if (nWs == 2) {
94 Wp_decay1, Wp_decay1_pdgId, Wp_decay2, Wp_decay2_pdgId);
96 Wp = Wp_decay1 + Wp_decay2;
97 m_dec.decorateParticle(
"MC_W1_" + fsr, Wp, 24);
98 m_dec.decorateParticle(
"MC_W1decay1_" + fsr, Wp_decay1, Wp_decay1_pdgId);
99 m_dec.decorateParticle(
"MC_W1decay2_" + fsr, Wp_decay2, Wp_decay2_pdgId);
104 Wm_decay1, Wm_decay1_pdgId, Wm_decay2, Wm_decay2_pdgId);
106 Wm = Wm_decay1 + Wm_decay2;
107 m_dec.decorateParticle(
"MC_W2_" + fsr, Wm, -24);
108 m_dec.decorateParticle(
"MC_W2decay1_" + fsr, Wm_decay1, Wm_decay1_pdgId);
109 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)