1 #include "Pythia8/Pythia.h"
3 using namespace Pythia8;
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);
49 i1 = decay[iDec].daughter1();
50 i2 = decay[iDec].daughter2();
51 for (
int i = i1;
i < i2 + 1; ++
i) {
52 if (decay[
i].
isLepton() && decay[
i].isCharged()) {
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) {
65 if (decay[
i].
isLepton() && decay[
i].isCharged()) {
66 if ((eDecays_ &&
abs(decay[
i].
id()) == 11) || (muDecays_ &&
abs(decay[
i].
id()) == 13)) {
74 i1 = decay[iDec].daughter1();
75 i2 = decay[iDec].daughter2();
76 for (
int i = i1;
i < i2 + 1; ++
i) {
77 idProd.push_back(decay[
i].
id());
78 mProd.push_back(decay[
i].
m());
79 pProd.push_back(decay[
i].
p());
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]);
BiasedTauDecayer(Pythia8::Info *infoPtr, Pythia8::Settings *settingsPtr)
bool isLepton(const Candidate &part)
Abs< T >::type abs(const T &t)
bool decay(std::vector< int > &idProd, std::vector< double > &mProd, std::vector< Pythia8::Vec4 > &pProd, int iDec, const Pythia8::Event &event) override