9 #include "Pythia8/Pythia.h"
10 using namespace Pythia8;
17 Hist pTtrial(
"trial pT spectrum", 100, 0., 400.);
18 Hist pTselect(
"selected pT spectrum (before veto)", 100, 0., 400.);
19 Hist pTaccept(
"accepted pT spectrum (after veto)", 100, 0., 400.);
20 Hist nPartonsB(
"number of partons before veto", 20, -0.5, 19.5);
21 Hist nJets(
"number of jets before veto", 20, -0.5, 19.5);
22 Hist nPartonsA(
"number of partons after veto", 20, -0.5, 19.5);
23 Hist nFSRatISR(
"number of FSR emissions at first ISR emission",
41 virtual bool canModifySigma() {
return true;}
44 virtual double multiplySigmaBy(
const SigmaProcess* sigmaProcessPtr,
45 const PhaseSpace* phaseSpacePtr,
bool inEvent) {
48 if (sigmaProcessPtr->nFinal() != 2)
return 0.;
53 pTHat = phaseSpacePtr->pTHat();
55 pTtrial.fill( pTHat );
63 virtual bool canVetoPT() {
return true;}
66 virtual double scaleVetoPT() {
return 5.;}
69 virtual bool doVetoPT(
int iPos,
const Event& event) {
72 if (iPos > 3)
return false;
79 nPartonsB.fill( workEvent.size() );
82 slowJet->analyze(event);
83 int nJet = slowJet->sizeJet();
87 if (nJet != 3)
return true;
90 nPartonsA.fill( workEvent.size() );
99 virtual bool canVetoStep() {
return true;}
102 virtual bool doVetoStep(
int iPos,
int nISR,
int nFSR,
const Event& ) {
105 if (iPos == 2 && nISR == 1) nFSRatISR.fill( nFSR );
129 pythia.readString(
"HardQCD:all = on");
130 pythia.readString(
"PhaseSpace:pTHatMin = 50.");
131 pythia.readString(
"HadronLevel:all = off");
135 pythia.setUserHooksPtr( myUserHooks);
138 pythia.readString(
"Beams:idB = -2212");
139 pythia.readString(
"Beams:eCM = 1960.");
143 for (
int iEvent = 0; iEvent < 1000; ++iEvent) {
153 cout << pTtrial << pTselect << pTaccept
154 << nPartonsB << nJets << nPartonsA