1 #include "Pythia8/Pythia.h"
12 decayer = TauDecays();
13 decayer.initInfoPtr(*infoPtr);
15 filter_ = settingsPtr->flag(
"BiasedTauDecayer:filter");
16 eDecays_ = settingsPtr->flag(
"BiasedTauDecayer:eDecays");
17 muDecays_ = settingsPtr->flag(
"BiasedTauDecayer:muDecays");
21 std::vector<int>& idProd, std::vector<double>& mProd, std::vector<Vec4>& pProd,
int iDec,
const Event&
event) {
24 if (idProd[0] != 15 && idProd[0] != -15)
26 int iStart =
event[iDec].iTopCopyId();
27 int iMom =
event[iStart].mother1();
28 int idMom =
event[iMom].idAbs();
29 if (idMom != 23 && idMom != 24 && idMom != 25)
31 int iDau1 =
event[iMom].daughter1();
32 int iDau2 =
event[iMom].daughter2();
33 int iBot1 =
event[iDau1].iBotCopyId();
34 int iBot2 =
event[iDau2].iBotCopyId();
35 int iDecSis = (iDec == iBot1) ? iBot2 : iBot1;
38 bool notDecayed =
event[iDecSis].status() > 0 ?
true :
false;
41 bool hasLepton = (eDecays_ || muDecays_) ?
false :
true;
47 decayer.decay(iDec,
decay);
51 for (
int i =
i1;
i <
i2 + 1; ++
i) {
53 if ((eDecays_ &&
abs(
decay[
i].
id()) == 11) || (muDecays_ &&
abs(
decay[
i].
id()) == 13)) {
62 i1 =
decay[iDecSis].daughter1();
63 i2 =
decay[iDecSis].daughter2();
64 for (
int i =
i1;
i <
i2 + 1; ++
i) {
66 if ((eDecays_ &&
abs(
decay[
i].
id()) == 11) || (muDecays_ &&
abs(
decay[
i].
id()) == 13)) {
76 for (
int i =
i1;
i <
i2 + 1; ++
i) {
77 idProd.push_back(
decay[
i].
id());
82 i1 =
decay[iDecSis].daughter1();
83 i2 =
decay[iDecSis].daughter2();
87 for (
int i =
i1;
i <
i2 + 1; ++
i) {
88 idProdSave.push_back(
decay[
i].
id());
89 mProdSave.push_back(
decay[
i].
m());
90 pProdSave.push_back(
decay[
i].
p());
94 for (
size_t i = 0;
i < idProdSave.size(); ++
i) {
95 idProd.push_back(idProdSave[
i]);
96 mProd.push_back(mProdSave[
i]);
97 pProd.push_back(pProdSave[
i]);