5#ifndef PYTHIA8_USERHOOKS_USERHOOKSUTILS_H
6#define PYTHIA8_USERHOOKS_USERHOOKSUTILS_H
7#include "Pythia8/Event.h"
19 inline double pTProj(
const Pythia8::Particle &leg,
const Pythia8::Particle &comparison){
20 return leg.px()*comparison.px() + leg.py()*comparison.py() + leg.pz()*comparison.pz();
27 inline double pTProj(
size_t legIndex,
size_t comparedIndex,
const Pythia8::Event &evt){
28 return pTProj(evt[legIndex], evt[comparedIndex]);
34 inline double pT2Leg(
const Pythia8::Particle &leg,
const Pythia8::Particle &comparison){
35 double proj =
pTProj(leg, comparison);
36 return leg.pAbs2() - (proj*proj) / comparison.pAbs2();
43 inline double pT2Leg(
size_t legIndex,
size_t comparedIndex,
const Pythia8::Event &evt){
44 return pT2Leg(evt[legIndex], evt[comparedIndex]);
50 inline double pTLeg(
const Pythia8::Particle &leg,
const Pythia8::Particle &comparison){
51 return std::sqrt(
pT2Leg(leg, comparison));
58 inline double pTLeg(
size_t legIndex,
size_t comparedIndex,
const Pythia8::Event &evt){
59 return std::sqrt(
pT2Leg(legIndex, comparedIndex, evt));
66 size_t emission = evt.size() - 1;
69 if (evt[emission].isFinal() && evt[emission].status() == status)
return emission;
82 if(emission == 0)
throw std::runtime_error(
"findLastISREmission:: Could not find ISR emission");
91 if(emission == 0)
throw std::runtime_error(
"findLastFSREmission:: Could not find FSR emission");
101 if(radiator == 0)
throw std::runtime_error(
"findLastISRRadiator:: Could not find ISR radiator");
111 return evt[emitted].mother1();
Some common functions for determining pTs and navigating event records for the PoWHEG + Pythia user h...
size_t findLastISRRadiator(const Pythia8::Event &evt)
size_t findLastFSRRadiator(const Pythia8::Event &evt)
size_t findLastISREmission(const Pythia8::Event &evt)
size_t findLastEmission(const Pythia8::Event &evt, int status)
Return the index of the most recent emission in a.
double pTProj(const Pythia8::Particle &leg, const Pythia8::Particle &comparison)
double pT2Leg(const Pythia8::Particle &leg, const Pythia8::Particle &comparison)
size_t findLastFSREmission(const Pythia8::Event &evt)
double pTLeg(const Pythia8::Particle &leg, const Pythia8::Particle &comparison)