15 TLorentzVector t_before, t_after;
16 TLorentzVector antit_before, antit_after;
17 TLorentzVector WfromTop;
18 TLorentzVector bFromTop;
19 TLorentzVector WfromTopDecay1;
20 TLorentzVector WfromTopDecay2;
21 int WfromTopDecay1_pdgId;
22 int WfromTopDecay2_pdgId;
25 WfromTopDecay1, WfromTopDecay1_pdgId, WfromTopDecay2,
26 WfromTopDecay2_pdgId);
28 TLorentzVector WfromAntiTop;
29 TLorentzVector bFromAntiTop;
30 TLorentzVector WfromAntiTopDecay1;
31 TLorentzVector WfromAntiTopDecay2;
32 int WfromAntiTopDecay1_pdgId;
33 int WfromAntiTopDecay2_pdgId;
36 bFromAntiTop, WfromAntiTopDecay1, WfromAntiTopDecay1_pdgId,
37 WfromAntiTopDecay2, WfromAntiTopDecay2_pdgId);
39 TLorentzVector WnotFromTop;
40 TLorentzVector WnotFromTopDecay1;
41 TLorentzVector WnotFromTopDecay2;
42 int WnotFromTop_pdgId;
43 int WnotFromTopDecay1_pdgId;
44 int WnotFromTopDecay2_pdgId;
47 WnotFromTopDecay1_pdgId, WnotFromTopDecay2,
48 WnotFromTopDecay2_pdgId);
50 TLorentzVector bNotFromTop_before;
51 TLorentzVector bNotFromTop_after;
52 int bNotFromTop_pdgId;
56 if (event_top && !event_antitop) {
57 wtbPartonHistory->
auxdecor<
float >(
"MC_top_beforeFSR_pt") = t_before.Pt();
58 wtbPartonHistory->
auxdecor<
float >(
"MC_top_beforeFSR_eta") = t_before.Eta();
59 wtbPartonHistory->
auxdecor<
float >(
"MC_top_beforeFSR_phi") = t_before.Phi();
60 wtbPartonHistory->
auxdecor<
float >(
"MC_top_beforeFSR_m") = t_before.M();
62 wtbPartonHistory->
auxdecor<
float >(
"MC_top_afterFSR_pt") = t_after.Pt();
63 wtbPartonHistory->
auxdecor<
float >(
"MC_top_afterFSR_eta") = t_after.Eta();
64 wtbPartonHistory->
auxdecor<
float >(
"MC_top_afterFSR_phi") = t_after.Phi();
65 wtbPartonHistory->
auxdecor<
float >(
"MC_top_afterFSR_m") = t_after.M();
67 wtbPartonHistory->
auxdecor<
float >(
"MC_b_from_top_pt") = bFromTop.Pt();
68 wtbPartonHistory->
auxdecor<
float >(
"MC_b_from_top_eta") = bFromTop.Eta();
69 wtbPartonHistory->
auxdecor<
float >(
"MC_b_from_top_phi") = bFromTop.Phi();
70 wtbPartonHistory->
auxdecor<
float >(
"MC_b_from_top_m") = bFromTop.M();
72 wtbPartonHistory->
auxdecor<
float >(
"MC_W_from_top_pt") = WfromTop.Pt();
73 wtbPartonHistory->
auxdecor<
float >(
"MC_W_from_top_eta") = WfromTop.Eta();
74 wtbPartonHistory->
auxdecor<
float >(
"MC_W_from_top_phi") = WfromTop.Phi();
75 wtbPartonHistory->
auxdecor<
float >(
"MC_W_from_top_m") = WfromTop.M();
77 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay1_from_top_pt") = WfromTopDecay1.Pt();
78 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay1_from_top_eta") = WfromTopDecay1.Eta();
79 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay1_from_top_phi") = WfromTopDecay1.Phi();
80 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay1_from_top_m") = WfromTopDecay1.M();
81 wtbPartonHistory->
auxdecor<
int >(
"MC_Wdecay1_from_top_pdgId") = WfromTopDecay1_pdgId;
83 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay2_from_top_pt") = WfromTopDecay2.Pt();
84 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay2_from_top_eta") = WfromTopDecay2.Eta();
85 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay2_from_top_phi") = WfromTopDecay2.Phi();
86 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay2_from_top_m") = WfromTopDecay2.M();
87 wtbPartonHistory->
auxdecor<
int >(
"MC_Wdecay2_from_top_pdgId") = WfromTopDecay2_pdgId;
88 }
else if (!event_top && event_antitop) {
89 wtbPartonHistory->
auxdecor<
float >(
"MC_top_beforeFSR_pt") = antit_before.Pt();
90 wtbPartonHistory->
auxdecor<
float >(
"MC_top_beforeFSR_eta") = antit_before.Eta();
91 wtbPartonHistory->
auxdecor<
float >(
"MC_top_beforeFSR_phi") = antit_before.Phi();
92 wtbPartonHistory->
auxdecor<
float >(
"MC_top_beforeFSR_m") = antit_before.M();
94 wtbPartonHistory->
auxdecor<
float >(
"MC_top_afterFSR_pt") = antit_after.Pt();
95 wtbPartonHistory->
auxdecor<
float >(
"MC_top_afterFSR_eta") = antit_after.Eta();
96 wtbPartonHistory->
auxdecor<
float >(
"MC_top_afterFSR_phi") = antit_after.Phi();
97 wtbPartonHistory->
auxdecor<
float >(
"MC_top_afterFSR_m") = antit_after.M();
99 wtbPartonHistory->
auxdecor<
float >(
"MC_b_from_top_pt") = bFromAntiTop.Pt();
100 wtbPartonHistory->
auxdecor<
float >(
"MC_b_from_top_eta") = bFromAntiTop.Eta();
101 wtbPartonHistory->
auxdecor<
float >(
"MC_b_from_top_phi") = bFromAntiTop.Phi();
102 wtbPartonHistory->
auxdecor<
float >(
"MC_b_from_top_m") = bFromAntiTop.M();
104 wtbPartonHistory->
auxdecor<
float >(
"MC_W_from_top_pt") = WfromAntiTop.Pt();
105 wtbPartonHistory->
auxdecor<
float >(
"MC_W_from_top_eta") = WfromAntiTop.Eta();
106 wtbPartonHistory->
auxdecor<
float >(
"MC_W_from_top_phi") = WfromAntiTop.Phi();
107 wtbPartonHistory->
auxdecor<
float >(
"MC_W_from_top_m") = WfromAntiTop.M();
109 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay1_from_top_pt") = WfromAntiTopDecay1.Pt();
110 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay1_from_top_eta") = WfromAntiTopDecay1.Eta();
111 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay1_from_top_phi") = WfromAntiTopDecay1.Phi();
112 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay1_from_top_m") = WfromAntiTopDecay1.M();
113 wtbPartonHistory->
auxdecor<
int >(
"MC_Wdecay1_from_top_pdgId") = WfromAntiTopDecay1_pdgId;
115 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay2_from_top_pt") = WfromAntiTopDecay2.Pt();
116 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay2_from_top_eta") = WfromAntiTopDecay2.Eta();
117 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay2_from_top_phi") = WfromAntiTopDecay2.Phi();
118 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay2_from_top_m") = WfromAntiTopDecay2.M();
119 wtbPartonHistory->
auxdecor<
int >(
"MC_Wdecay2_from_top_pdgId") = WfromAntiTopDecay2_pdgId;
122 if (((event_top && !event_antitop) || (!event_top && event_antitop)) && event_WnotTop) {
123 wtbPartonHistory->
auxdecor<
float >(
"MC_W_not_from_top_pt") = WnotFromTop.Pt();
124 wtbPartonHistory->
auxdecor<
float >(
"MC_W_not_from_top_eta") = WnotFromTop.Eta();
125 wtbPartonHistory->
auxdecor<
float >(
"MC_W_not_from_top_phi") = WnotFromTop.Phi();
126 wtbPartonHistory->
auxdecor<
float >(
"MC_W_not_from_top_m") = WnotFromTop.M();
128 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay1_not_from_top_pt") = WnotFromTopDecay1.Pt();
129 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay1_not_from_top_eta") = WnotFromTopDecay1.Eta();
130 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay1_not_from_top_phi") = WnotFromTopDecay1.Phi();
131 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay1_not_from_top_m") = WnotFromTopDecay1.M();
132 wtbPartonHistory->
auxdecor<
int >(
"MC_Wdecay1_not_from_top_pdgId") = WnotFromTopDecay1_pdgId;
134 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay2_not_from_top_pt") = WnotFromTopDecay2.Pt();
135 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay2_not_from_top_eta") = WnotFromTopDecay2.Eta();
136 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay2_not_from_top_phi") = WnotFromTopDecay2.Phi();
137 wtbPartonHistory->
auxdecor<
float >(
"MC_Wdecay2_not_from_top_m") = WnotFromTopDecay2.M();
138 wtbPartonHistory->
auxdecor<
int >(
"MC_Wdecay2_not_from_top_pdgId") = WnotFromTopDecay2_pdgId;
141 if (((event_top && !event_antitop) || (!event_top && event_antitop)) && event_b) {
142 wtbPartonHistory->
auxdecor<
float >(
"MC_b_not_from_top_beforeFSR_pt") = bNotFromTop_before.Pt();
143 wtbPartonHistory->
auxdecor<
float >(
"MC_b_not_from_top_beforeFSR_eta") = bNotFromTop_before.Eta();
144 wtbPartonHistory->
auxdecor<
float >(
"MC_b_not_from_top_beforeFSR_phi") = bNotFromTop_before.Phi();
145 wtbPartonHistory->
auxdecor<
float >(
"MC_b_not_from_top_beforeFSR_m") = bNotFromTop_before.M();
146 wtbPartonHistory->
auxdecor<
int >(
"MC_b_not_from_top_pdgId") = bNotFromTop_pdgId;
148 wtbPartonHistory->
auxdecor<
float >(
"MC_b_not_from_top_afterFSR_pt") = bNotFromTop_after.Pt();
149 wtbPartonHistory->
auxdecor<
float >(
"MC_b_not_from_top_afterFSR_eta") = bNotFromTop_after.Eta();
150 wtbPartonHistory->
auxdecor<
float >(
"MC_b_not_from_top_afterFSR_phi") = bNotFromTop_after.Phi();
151 wtbPartonHistory->
auxdecor<
float >(
"MC_b_not_from_top_afterFSR_m") = bNotFromTop_after.M();
159 if(
m_config->getDerivationStream() ==
"PHYS")
162 std::vector<std::string> collections = {
"TruthTop",
"TruthBosonsWithDecayParticles",
"HardScatterParticles"};
177 partonCont->setStore(partonAuxCont);
186 std::string outputSGKey =
m_config->sgKeyTopPartonHistory();
187 std::string outputSGKeyAux = outputSGKey +
"Aux.";
191 if (!
save || !saveAux) {
192 return StatusCode::FAILURE;
195 return StatusCode::SUCCESS;