30 #if (!defined(__CINT__) && !defined(__CLING__))
33 #if defined(__MAKECINT__) || defined(__ROOTCLING__) || defined(COMPILER)
39 using namespace RestFrames;
41 void example_ttbar_to_bWlnubWlnu(
const std::string output_name =
42 "output_ttbar_to_bWlnubWlnu.root"){
54 g_Log << LogInfo <<
"Initializing generator frames and tree..." << LogEnd;
71 LAB_Gen.SetChildFrame(TT_Gen);
72 TT_Gen.AddChildFrame(Ta_Gen);
73 TT_Gen.AddChildFrame(Tb_Gen);
74 Ta_Gen.AddChildFrame(Ba_Gen);
75 Ta_Gen.AddChildFrame(Wa_Gen);
76 Tb_Gen.AddChildFrame(Bb_Gen);
77 Tb_Gen.AddChildFrame(Wb_Gen);
78 Wa_Gen.AddChildFrame(La_Gen);
79 Wa_Gen.AddChildFrame(Na_Gen);
80 Wb_Gen.AddChildFrame(Lb_Gen);
81 Wb_Gen.AddChildFrame(Nb_Gen);
83 if(LAB_Gen.InitializeTree())
84 g_Log << LogInfo <<
"...Successfully initialized generator tree" << LogEnd;
86 g_Log << LogError <<
"...Failed initializing generator tree" << LogEnd;
91 TT_Gen.SetVariableMass();
93 Ta_Gen.SetMass(mT); Tb_Gen.SetMass(mT);
95 Wa_Gen.SetMass(mW); Wb_Gen.SetMass(mW);
97 Ba_Gen.SetMass(mB); Bb_Gen.SetMass(mB);
99 La_Gen.SetMass(mL); Lb_Gen.SetMass(mL);
101 Na_Gen.SetMass(mN); Nb_Gen.SetMass(mN);
104 Ba_Gen.SetPtCut(20.); Bb_Gen.SetPtCut(20.);
105 Ba_Gen.SetEtaCut(2.5); Bb_Gen.SetEtaCut(2.5);
106 La_Gen.SetPtCut(15.); Lb_Gen.SetPtCut(15.);
107 La_Gen.SetEtaCut(2.5); Lb_Gen.SetEtaCut(2.5);
109 if(LAB_Gen.InitializeAnalysis())
110 g_Log << LogInfo <<
"...Successfully initialized generator analysis" << LogEnd;
112 g_Log << LogError <<
"...Failed initializing generator analysis" << LogEnd;
116 g_Log << LogInfo <<
"Initializing reconstruction frames and trees..." << LogEnd;
146 LAB_R1.SetChildFrame(TT_R1); LAB_R2.SetChildFrame(TT_R2);
147 TT_R1.AddChildFrame(Ta_R1); TT_R2.AddChildFrame(Ta_R2);
148 TT_R1.AddChildFrame(Tb_R1); TT_R2.AddChildFrame(Tb_R2);
149 Ta_R1.AddChildFrame(Ba_R1); Ta_R2.AddChildFrame(Ba_R2);
150 Ta_R1.AddChildFrame(Wa_R1); Ta_R2.AddChildFrame(Wa_R2);
151 Tb_R1.AddChildFrame(Bb_R1); Tb_R2.AddChildFrame(Bb_R2);
152 Tb_R1.AddChildFrame(Wb_R1); Tb_R2.AddChildFrame(Wb_R2);
153 Wa_R1.AddChildFrame(La_R1); Wa_R2.AddChildFrame(La_R2);
154 Wa_R1.AddChildFrame(Na_R1); Wa_R2.AddChildFrame(Na_R2);
155 Wb_R1.AddChildFrame(Lb_R1); Wb_R2.AddChildFrame(Lb_R2);
156 Wb_R1.AddChildFrame(Nb_R1); Wb_R2.AddChildFrame(Nb_R2);
158 LAB_R3.SetChildFrame(TT_R3); LAB_R4.SetChildFrame(TT_R4);
159 TT_R3.AddChildFrame(Ta_R3); TT_R4.AddChildFrame(Ta_R4);
160 TT_R3.AddChildFrame(Tb_R3); TT_R4.AddChildFrame(Tb_R4);
161 Ta_R3.AddChildFrame(Ba_R3); Ta_R4.AddChildFrame(Ba_R4);
162 Ta_R3.AddChildFrame(Wa_R3); Ta_R4.AddChildFrame(Wa_R4);
163 Tb_R3.AddChildFrame(Bb_R3); Tb_R4.AddChildFrame(Bb_R4);
164 Tb_R3.AddChildFrame(Wb_R3); Tb_R4.AddChildFrame(Wb_R4);
165 Wa_R3.AddChildFrame(La_R3); Wa_R4.AddChildFrame(La_R4);
166 Wa_R3.AddChildFrame(Na_R3); Wa_R4.AddChildFrame(Na_R4);
167 Wb_R3.AddChildFrame(Lb_R3); Wb_R4.AddChildFrame(Lb_R4);
168 Wb_R3.AddChildFrame(Nb_R3); Wb_R4.AddChildFrame(Nb_R4);
170 if(LAB_R1.InitializeTree() && LAB_R2.InitializeTree() &&
171 LAB_R3.InitializeTree() && LAB_R4.InitializeTree())
172 g_Log << LogInfo <<
"...Successfully initialized reconstruction trees" << LogEnd;
174 g_Log << LogError <<
"...Failed initializing reconstruction trees" << LogEnd;
179 std::string group_name;
182 group_name =
"#splitline{#nu #nu Jigsaws for}{min M_{top} , M_{top}^{ a} = M_{top}^{ b}}";
184 INV_R1.AddFrame(Na_R1);
185 INV_R1.AddFrame(Nb_R1);
188 B_R1.AddFrame(Ba_R1);
189 B_R1.AddFrame(Bb_R1);
191 B_R1.SetNElementsForFrame(Ba_R1, 1);
192 B_R1.SetNElementsForFrame(Bb_R1, 1);
194 group_name =
"#splitline{#nu #nu Jigsaws for}{min M_{W}, M_{W}^{ a} = M_{W}^{ b}}";
196 INV_R2.AddFrame(Na_R2);
197 INV_R2.AddFrame(Nb_R2);
199 B_R2.AddFrame(Ba_R2);
200 B_R2.AddFrame(Bb_R2);
201 B_R2.SetNElementsForFrame(Ba_R2, 1);
202 B_R2.SetNElementsForFrame(Bb_R2, 1);
204 group_name =
"#splitline{#nu #nu Jigsaws for}{min M_{top a}^{2}+ M_{top b}^{2}}";
206 INV_R3.AddFrame(Na_R3);
207 INV_R3.AddFrame(Nb_R3);
209 B_R3.AddFrame(Ba_R3);
210 B_R3.AddFrame(Bb_R3);
211 B_R3.SetNElementsForFrame(Ba_R3, 1);
212 B_R3.SetNElementsForFrame(Bb_R3, 1);
214 group_name =
"#splitline{#nu #nu Jigsaws for}{min (M_{top a}- M_{top b})^{2}}";
216 INV_R4.AddFrame(Na_R4);
217 INV_R4.AddFrame(Nb_R4);
219 B_R4.AddFrame(Ba_R4);
220 B_R4.AddFrame(Bb_R4);
221 B_R4.SetNElementsForFrame(Ba_R4, 1);
222 B_R4.SetNElementsForFrame(Bb_R4, 1);
225 std::string jigsaw_name;
228 jigsaw_name =
"M_{#nu#nu} = f(m_{b#it{l}b#it{l}} , m_{b#it{l}}^{ a} , m_{b#it{l}}^{ b})";
230 INV_R1.AddJigsaw(NuNuM_R1);
232 jigsaw_name =
"#eta_{#nu#nu} = #eta_{b #it{l} b #it{l}}";
234 INV_R1.AddJigsaw(NuNuR_R1);
235 NuNuR_R1.AddVisibleFrames(La_R1+Ba_R1+Lb_R1+Bb_R1);
237 jigsaw_name =
"min M_{top}, M_{top}^{ a} = M_{top}^{ b}";
239 INV_R1.AddJigsaw(MinMt_R1);
240 MinMt_R1.AddVisibleFrames(La_R1+Ba_R1, 0);
241 MinMt_R1.AddVisibleFrames(Lb_R1+Bb_R1, 1);
242 MinMt_R1.AddInvisibleFrame(Na_R1, 0);
243 MinMt_R1.AddInvisibleFrame(Nb_R1, 1);
246 jigsaw_name =
"M_{#nu#nu} = f(m_{#it{l}#it{l}} , m_{#it{l}}^{ a} , m_{#it{l}}^{ b})";
248 INV_R2.AddJigsaw(NuNuM_R2);
250 jigsaw_name =
"#eta_{#nu#nu} = #eta_{b #it{l} b #it{l}}";
252 INV_R2.AddJigsaw(NuNuR_R2);
253 NuNuR_R2.AddVisibleFrames(La_R2+Ba_R2+Lb_R2+Bb_R2);
255 jigsaw_name =
"min M_{W}, M_{W}^{ a} = M_{W}^{ b}";
257 INV_R2.AddJigsaw(MinMW_R2);
258 MinMW_R2.AddVisibleFrame(La_R2, 0);
259 MinMW_R2.AddVisibleFrame(Lb_R2, 1);
260 MinMW_R2.AddInvisibleFrame(Na_R2, 0);
261 MinMW_R2.AddInvisibleFrame(Nb_R2, 1);
264 jigsaw_name =
"M_{#nu#nu} = f(m_{#it{l}#it{l}} , m_{#it{l}}^{ a} , m_{#it{l}}^{ b})";
266 INV_R3.AddJigsaw(NuNuM_R3);
268 jigsaw_name =
"#eta_{#nu#nu} = #eta_{b #it{l} b #it{l}}";
270 INV_R3.AddJigsaw(NuNuR_R3);
271 NuNuR_R3.AddVisibleFrames(LAB_R3.GetListVisibleFrames());
273 jigsaw_name =
"min #Sigma M_{top}^{2}";
275 INV_R3.AddJigsaw(MinMt_R3);
276 MinMt_R3.AddInvisibleFrame(Na_R3, 0);
277 MinMt_R3.AddInvisibleFrame(Nb_R3, 1);
278 MinMt_R3.AddVisibleFrames(La_R3+Ba_R3, 0);
279 MinMt_R3.AddVisibleFrames(Lb_R3+Bb_R3, 1);
280 MinMt_R3.AddMassFrame(La_R3, 0);
281 MinMt_R3.AddMassFrame(Lb_R3, 1);
284 jigsaw_name =
"M_{#nu#nu} = f(m_{#it{l}#it{l}} , m_{#it{l}}^{ a} , m_{#it{l}}^{ b})";
286 INV_R4.AddJigsaw(NuNuM_R4);
288 jigsaw_name =
"#eta_{#nu#nu} = #eta_{b #it{l} b #it{l}}";
290 INV_R4.AddJigsaw(NuNuR_R4);
291 NuNuR_R4.AddVisibleFrames(LAB_R4.GetListVisibleFrames());
293 jigsaw_name =
"min ( M_{top a}- M_{top b} )^{2}";
295 INV_R4.AddJigsaw(MinDeltaMt_R4);
296 MinDeltaMt_R4.AddInvisibleFrame(Na_R4, 0);
297 MinDeltaMt_R4.AddInvisibleFrame(Nb_R4, 1);
298 MinDeltaMt_R4.AddVisibleFrames(La_R4+Ba_R4, 0);
299 MinDeltaMt_R4.AddVisibleFrames(Lb_R4+Bb_R4, 1);
300 MinDeltaMt_R4.AddMassFrame(La_R4, 0);
301 MinDeltaMt_R4.AddMassFrame(Lb_R4, 1);
304 jigsaw_name =
"Minimize M(b #it{l} )_{a} , M(b #it{l} )_{b}";
307 B_R1.AddJigsaw(MinBL_R1);
308 MinBL_R1.AddFrames(La_R1+Ba_R1,0);
309 MinBL_R1.AddFrames(Lb_R1+Bb_R1,1);
312 B_R2.AddJigsaw(MinBL_R2);
313 MinBL_R2.AddFrames(La_R2+Ba_R2,0);
314 MinBL_R2.AddFrames(Lb_R2+Bb_R2,1);
317 B_R3.AddJigsaw(MinBL_R3);
318 MinBL_R3.AddFrames(La_R3+Ba_R3,0);
319 MinBL_R3.AddFrames(Lb_R3+Bb_R3,1);
322 B_R4.AddJigsaw(MinBL_R4);
323 MinBL_R4.AddFrames(La_R4+Ba_R4,0);
324 MinBL_R4.AddFrames(Lb_R4+Bb_R4,1);
326 if(LAB_R1.InitializeAnalysis() && LAB_R2.InitializeAnalysis() &&
327 LAB_R3.InitializeAnalysis() && LAB_R4.InitializeAnalysis())
328 g_Log << LogInfo <<
"...Successfully initialized analysis" << LogEnd;
330 g_Log << LogError <<
"...Failed initializing analysis" << LogEnd;
338 treePlot->
Draw(
"GenTree",
"Generator Tree",
true);
341 treePlot->
Draw(
"RecoTree",
"Reconstruction Tree");
344 treePlot->
Draw(
"VisTree",
"b-jet Jigsaws",
true);
347 treePlot->
Draw(
"InvTree_R1",
"Inivisibl Jigsaws",
true);
350 treePlot->
Draw(
"InvTree_R2",
"Inivisibl Jigsaws",
true);
353 treePlot->
Draw(
"InvTree_R3",
"Inivisibl Jigsaws",
true);
356 treePlot->
Draw(
"InvTree_R4",
"Inivisibl Jigsaws",
true);
360 HistPlot* histPlot =
new HistPlot(
"HistPlot",
"t #bar{t} #rightarrow b W(#it{l} #nu) b W(#it{l} #nu)");
369 const HistPlotVar& Eb_ta = histPlot->
GetNewVar(
"Eb_ta",
"E_{b a}^{top a} / E_{b a}^{top a gen}", 0., 2.);
370 const HistPlotVar& Eb_tb = histPlot->
GetNewVar(
"Eb_tb",
"E_{b b}^{top b} / E_{b b}^{top b gen}", 0., 2.);
371 const HistPlotVar& El_Wa = histPlot->
GetNewVar(
"El_Wa",
"E_{#it{l} a}^{W a} / E_{#it{l} a}^{W a gen}", 0., 2.);
372 const HistPlotVar& El_Wb = histPlot->
GetNewVar(
"El_Wb",
"E_{#it{l} b}^{W b} / E_{#it{l} b}^{W b gen}", 0., 2.);
378 const HistPlotVar& Dcostt = histPlot->
GetNewVar(
"Dcostt",
"#theta_{t #bar{t}} - #theta_{t #bar{t}}^{gen}",
379 -acos(-1.)/2., acos(-1.)/2.);
380 const HistPlotVar& Dcosta = histPlot->
GetNewVar(
"Dcosta",
"#theta_{top a} - #theta_{top a}^{gen}",
381 -acos(-1.)/2., acos(-1.)/2.);
382 const HistPlotVar& Dcostb = histPlot->
GetNewVar(
"Dcostb",
"#theta_{top b} - #theta_{top b}^{gen}",
383 -acos(-1.)/2., acos(-1.)/2.);
385 -acos(-1.)/2., acos(-1.)/2.);
387 -acos(-1.)/2., acos(-1.)/2.);
389 histPlot->
AddPlot(Mtt, cat_R1+cat_R2+cat_R3+cat_R4);
390 histPlot->
AddPlot(Eb_ta, cat_R1+cat_R2+cat_R3+cat_R4);
391 histPlot->
AddPlot(El_Wa, cat_R1+cat_R2+cat_R3+cat_R4);
392 histPlot->
AddPlot(Dcostt, cat_R1+cat_R2+cat_R3+cat_R4);
393 histPlot->
AddPlot(Dcosta, cat_R1+cat_R2+cat_R3+cat_R4);
394 histPlot->
AddPlot(DcosWa, cat_R1+cat_R2+cat_R3+cat_R4);
396 histPlot->
AddPlot(Mtt, Eb_ta, cat_R4);
397 histPlot->
AddPlot(Mtt, El_Wa, cat_R4);
398 histPlot->
AddPlot(Eb_ta, Eb_tb, cat_R4);
399 histPlot->
AddPlot(El_Wa, El_Wb, cat_R4);
400 histPlot->
AddPlot(Eb_ta, El_Wa, cat_R4);
401 histPlot->
AddPlot(Eb_ta, El_Wb, cat_R4);
402 histPlot->
AddPlot(Dcostt, Mtt, cat_R4);
403 histPlot->
AddPlot(Dcosta, Eb_ta, cat_R4);
404 histPlot->
AddPlot(DcosWa, El_Wa, cat_R4);
405 histPlot->
AddPlot(Dcostt, Dcosta, cat_R4);
406 histPlot->
AddPlot(Dcosta, Dcostb, cat_R4);
407 histPlot->
AddPlot(DcosWa, DcosWb, cat_R4);
408 histPlot->
AddPlot(Dcosta, DcosWa, cat_R4);
413 for(
int igen = 0; igen < Ngen; igen++){
414 if(igen%((std::max(Ngen,10))/10) == 0)
415 g_Log << LogInfo <<
"Generating event " << igen <<
" of " << Ngen << LogEnd;
418 LAB_Gen.ClearEvent();
420 LAB_Gen.AnalyzeEvent();
423 TVector3 MET = LAB_Gen.GetInvisibleMomentum();
431 INV_R1.SetLabFrameThreeVector(MET);
432 INV_R2.SetLabFrameThreeVector(MET);
433 INV_R3.SetLabFrameThreeVector(MET);
434 INV_R4.SetLabFrameThreeVector(MET);
436 La_R1.SetLabFrameFourVector(La_Gen.GetFourVector());
437 Lb_R1.SetLabFrameFourVector(Lb_Gen.GetFourVector());
438 La_R2.SetLabFrameFourVector(La_Gen.GetFourVector());
439 Lb_R2.SetLabFrameFourVector(Lb_Gen.GetFourVector());
440 La_R3.SetLabFrameFourVector(La_Gen.GetFourVector());
441 Lb_R3.SetLabFrameFourVector(Lb_Gen.GetFourVector());
442 La_R4.SetLabFrameFourVector(La_Gen.GetFourVector());
443 Lb_R4.SetLabFrameFourVector(Lb_Gen.GetFourVector());
445 std::vector<RFKey> B_R1_ID;
446 B_R1_ID.push_back(B_R1.AddLabFrameFourVector(Ba_Gen.GetFourVector()));
447 B_R1_ID.push_back(B_R1.AddLabFrameFourVector(Bb_Gen.GetFourVector()));
448 B_R2.AddLabFrameFourVector(Ba_Gen.GetFourVector());
449 B_R2.AddLabFrameFourVector(Bb_Gen.GetFourVector());
450 B_R3.AddLabFrameFourVector(Ba_Gen.GetFourVector());
451 B_R3.AddLabFrameFourVector(Bb_Gen.GetFourVector());
452 B_R4.AddLabFrameFourVector(Ba_Gen.GetFourVector());
453 B_R4.AddLabFrameFourVector(Bb_Gen.GetFourVector());
455 LAB_R1.AnalyzeEvent();
456 LAB_R2.AnalyzeEvent();
457 LAB_R3.AnalyzeEvent();
458 LAB_R4.AnalyzeEvent();
464 double Mttgen = TT_Gen.GetMass();
465 double Eb_tagen = Ba_Gen.GetFourVector(Ta_Gen).E();
466 double Eb_tbgen = Bb_Gen.GetFourVector(Tb_Gen).E();
467 double El_Wagen = La_Gen.GetFourVector(Wa_Gen).E();
468 double El_Wbgen = Lb_Gen.GetFourVector(Wb_Gen).E();
469 double costtgen = TT_Gen.GetCosDecayAngle();
470 double costagen = Ta_Gen.GetCosDecayAngle();
471 double costbgen = Tb_Gen.GetCosDecayAngle();
472 double cosWagen = Wa_Gen.GetCosDecayAngle();
473 double cosWbgen = Wb_Gen.GetCosDecayAngle();
475 Mtt = TT_R1.GetMass()/Mttgen;
480 Eb_ta = Ba_R1.GetFourVector(Ta_R1).E()/Eb_tagen;
481 Eb_tb = Bb_R1.GetFourVector(Tb_R1).E()/Eb_tbgen;
482 El_Wa = La_R1.GetFourVector(Wa_R1).E()/El_Wagen;
483 El_Wb = Lb_R1.GetFourVector(Wb_R1).E()/El_Wbgen;
484 costt = TT_R1.GetCosDecayAngle();
485 costa = Ta_R1.GetCosDecayAngle();
486 costb = Tb_R1.GetCosDecayAngle();
487 cosWa = Wa_R1.GetCosDecayAngle();
488 cosWb = Wb_R1.GetCosDecayAngle();
489 Dcostt = asin(sqrt(1.-costt*costt)*costtgen-sqrt(1.-costtgen*costtgen)*costt);
490 Dcosta = asin(sqrt(1.-costa*costa)*costagen-sqrt(1.-costagen*costagen)*costa);
491 Dcostb = asin(sqrt(1.-costb*costb)*costbgen-sqrt(1.-costbgen*costbgen)*costb);
492 DcosWa = asin(sqrt(1.-cosWa*cosWa)*cosWagen-sqrt(1.-cosWagen*cosWagen)*cosWa);
493 DcosWb = asin(sqrt(1.-cosWb*cosWb)*cosWbgen-sqrt(1.-cosWbgen*cosWbgen)*cosWb);
495 histPlot->
Fill(cat_R1);
497 Mtt = TT_R2.GetMass()/Mttgen;
502 Eb_ta = Ba_R2.GetFourVector(Ta_R2).E()/Eb_tagen;
503 Eb_tb = Bb_R2.GetFourVector(Tb_R2).E()/Eb_tbgen;
504 El_Wa = La_R2.GetFourVector(Wa_R2).E()/El_Wagen;
505 El_Wb = Lb_R2.GetFourVector(Wb_R2).E()/El_Wbgen;
506 costt = TT_R2.GetCosDecayAngle();
507 costa = Ta_R2.GetCosDecayAngle();
508 costb = Tb_R2.GetCosDecayAngle();
509 cosWa = Wa_R2.GetCosDecayAngle();
510 cosWb = Wb_R2.GetCosDecayAngle();
511 Dcostt = asin(sqrt(1.-costt*costt)*costtgen-sqrt(1.-costtgen*costtgen)*costt);
512 Dcosta = asin(sqrt(1.-costa*costa)*costagen-sqrt(1.-costagen*costagen)*costa);
513 Dcostb = asin(sqrt(1.-costb*costb)*costbgen-sqrt(1.-costbgen*costbgen)*costb);
514 DcosWa = asin(sqrt(1.-cosWa*cosWa)*cosWagen-sqrt(1.-cosWagen*cosWagen)*cosWa);
515 DcosWb = asin(sqrt(1.-cosWb*cosWb)*cosWbgen-sqrt(1.-cosWbgen*cosWbgen)*cosWb);
517 histPlot->
Fill(cat_R2);
519 Mtt = TT_R3.GetMass()/Mttgen;
524 Eb_ta = Ba_R3.GetFourVector(Ta_R3).E()/Eb_tagen;
525 Eb_tb = Bb_R3.GetFourVector(Tb_R3).E()/Eb_tbgen;
526 El_Wa = La_R3.GetFourVector(Wa_R3).E()/El_Wagen;
527 El_Wb = Lb_R3.GetFourVector(Wb_R3).E()/El_Wbgen;
528 costt = TT_R3.GetCosDecayAngle();
529 costa = Ta_R3.GetCosDecayAngle();
530 costb = Tb_R3.GetCosDecayAngle();
531 cosWa = Wa_R3.GetCosDecayAngle();
532 cosWb = Wb_R3.GetCosDecayAngle();
533 Dcostt = asin(sqrt(1.-costt*costt)*costtgen-sqrt(1.-costtgen*costtgen)*costt);
534 Dcosta = asin(sqrt(1.-costa*costa)*costagen-sqrt(1.-costagen*costagen)*costa);
535 Dcostb = asin(sqrt(1.-costb*costb)*costbgen-sqrt(1.-costbgen*costbgen)*costb);
536 DcosWa = asin(sqrt(1.-cosWa*cosWa)*cosWagen-sqrt(1.-cosWagen*cosWagen)*cosWa);
537 DcosWb = asin(sqrt(1.-cosWb*cosWb)*cosWbgen-sqrt(1.-cosWbgen*cosWbgen)*cosWb);
539 histPlot->
Fill(cat_R3);
541 Mtt = TT_R4.GetMass()/Mttgen;
546 Eb_ta = Ba_R4.GetFourVector(Ta_R4).E()/Eb_tagen;
547 Eb_tb = Bb_R4.GetFourVector(Tb_R4).E()/Eb_tbgen;
548 El_Wa = La_R4.GetFourVector(Wa_R4).E()/El_Wagen;
549 El_Wb = Lb_R4.GetFourVector(Wb_R4).E()/El_Wbgen;
550 costt = TT_R4.GetCosDecayAngle();
551 costa = Ta_R4.GetCosDecayAngle();
552 costb = Tb_R4.GetCosDecayAngle();
553 cosWa = Wa_R4.GetCosDecayAngle();
554 cosWb = Wb_R4.GetCosDecayAngle();
555 Dcostt = asin(sqrt(1.-costt*costt)*costtgen-sqrt(1.-costtgen*costtgen)*costt);
556 Dcosta = asin(sqrt(1.-costa*costa)*costagen-sqrt(1.-costagen*costagen)*costa);
557 Dcostb = asin(sqrt(1.-costb*costb)*costbgen-sqrt(1.-costbgen*costbgen)*costb);
558 DcosWa = asin(sqrt(1.-cosWa*cosWa)*cosWagen-sqrt(1.-cosWagen*cosWagen)*cosWa);
559 DcosWb = asin(sqrt(1.-cosWb*cosWb)*cosWbgen-sqrt(1.-cosWbgen*cosWbgen)*cosWb);
561 histPlot->
Fill(cat_R4);
567 LAB_Gen.PrintGeneratorEfficiency();
569 TFile fout(output_name.c_str(),
"RECREATE");
575 g_Log << LogInfo <<
"Finished" << LogEnd;
578 # ifndef __CINT__ // main function for stand-alone compilation
580 example_ttbar_to_bWlnubWlnu();