// TODO: Some User warnings/errors but not complete list
if (_covariantBoost && _phaseSpaceSampler==0) throw Exception() << "Cannot use ClusterFissioner:CovariantBoost = Yes and ClusterFissioner:PhaseSpaceSampler = FullyAligned\nNot implemented yet\n" << Exception::runerror;
if (_matrixElement!=0 && _fissionApproach==0) generator()->logWarning( Exception(
"For non-trivial MatrixElement you need to enable FissionApproach=New or Hybrid\n",
Exception::warning));
if (_matrixElement==1 && !(_phaseSpaceSampler==2 && _massSampler==1 ) ) generator()->logWarning( Exception(
"The chosen ClusterFissioner:MatrixElement is only taken into account properly by using:\nMassSampler = Uniform & PhaseSpaceSampler = FullyIsotropic\n",
Exception::warning));
for ( const long& id : spectrum()->heavyHadronizingQuarks() ) {
if ( _pSplitHeavy.find(id) == _pSplitHeavy.end() ||
_clPowHeavy.find(id) == _clPowHeavy.end() ||
_clMaxHeavy.find(id) == _clMaxHeavy.end() )
throw InitException() << "not all parameters have been set for heavy quark cluster fission";
}
// for ( const long& id : spectrum()->lightHadronizingDiquarks() ) {
bool ClusterFissioner::phaseSpaceVetoConstituentMasses(const Energy Mc, const Energy Mc1, const Energy Mc2,
const Energy m, const Energy m1, const Energy m2) const {
return (UseRandom::rnd()>weightFlatPhaseSpace(Mc, Mc1, Mc2, m, m1, m2));
}
bool ClusterFissioner::phaseSpaceVetoHadronPairs(const Energy Mc, const Energy Mc1, const Energy Mc2, tcPPtr pQ1, tcPPtr pQ2, tcPPtr pQ, const Energy , const Energy , const Energy ) const {
auto LHP1 = spectrum()->lightestHadronPair(pQ1->dataPtr(),pQ->dataPtr());
auto LHP2 = spectrum()->lightestHadronPair(pQ2->dataPtr(),pQ->dataPtr());