1 #include "Pythia8/Pythia.h"
12 Info* infoPtr, Settings* settingsPtr,
ParticleData* particleDataPtr, Rndm* rndmPtr, Couplings* couplingsPtr) {
13 decayer = TauDecays();
14 decayer.init(infoPtr, settingsPtr, particleDataPtr, rndmPtr, couplingsPtr);
15 filter_ = settingsPtr->flag(
"BiasedTauDecayer:filter");
16 eMuDecays_ = settingsPtr->flag(
"BiasedTauDecayer:eMuDecays");
20 std::vector<int>& idProd, std::vector<double>& mProd, std::vector<Vec4>& pProd,
int iDec,
const Event&
event) {
23 if (idProd[0] != 15 && idProd[0] != -15)
25 int iStart =
event[iDec].iTopCopyId();
26 int iMom =
event[iStart].mother1();
27 int idMom =
event[iMom].idAbs();
28 if (idMom != 23 && idMom != 24 && idMom != 25)
30 int iDau1 =
event[iMom].daughter1();
31 int iDau2 =
event[iMom].daughter2();
32 int iBot1 =
event[iDau1].iBotCopyId();
33 int iBot2 =
event[iDau2].iBotCopyId();
34 int iDecSis = (iDec == iBot1) ? iBot2 : iBot1;
37 bool notDecayed =
event[iDecSis].status() > 0 ?
true :
false;
40 bool hasLepton = (eMuDecays_) ?
false :
true;
46 decayer.decay(iDec,
decay);
50 for (
int i =
i1;
i <
i2 + 1; ++
i) {
59 i1 =
decay[iDecSis].daughter1();
60 i2 =
decay[iDecSis].daughter2();
61 for (
int i =
i1;
i <
i2 + 1; ++
i) {
71 for (
int i =
i1;
i <
i2 + 1; ++
i) {
72 idProd.push_back(
decay[
i].
id());
77 i1 =
decay[iDecSis].daughter1();
78 i2 =
decay[iDecSis].daughter2();
82 for (
int i =
i1;
i <
i2 + 1; ++
i) {
83 idProdSave.push_back(
decay[
i].
id());
84 mProdSave.push_back(
decay[
i].
m());
85 pProdSave.push_back(
decay[
i].
p());
89 for (
size_t i = 0;
i < idProdSave.size(); ++
i) {
90 idProd.push_back(idProdSave[
i]);
91 mProd.push_back(mProdSave[
i]);
92 pProd.push_back(pProdSave[
i]);