13 #ifndef Pythia8_MergingHooks_H
14 #define Pythia8_MergingHooks_H
17 #include "BeamParticle.h"
20 #include "ParticleData.h"
21 #include "PartonSystems.h"
22 #include "PythiaStdlib.h"
43 vector<int> hardOutgoing1;
44 vector<int> hardOutgoing2;
46 vector<int> hardIntermediate;
51 vector<int> PosOutgoing1;
52 vector<int> PosOutgoing2;
54 vector<int> PosIntermediate;
68 tms(hardProcessIn.tms), meGenType(hardProcessIn.meGenType) {
69 hardIncoming1 = hardProcessIn.hardIncoming1;
70 hardIncoming2 = hardProcessIn.hardIncoming2;
71 for(
int i =0; i < int(hardProcessIn.hardOutgoing1.size());++i)
72 hardOutgoing1.push_back( hardProcessIn.hardOutgoing1[i]);
73 for(
int i =0; i < int(hardProcessIn.hardOutgoing2.size());++i)
74 hardOutgoing2.push_back( hardProcessIn.hardOutgoing2[i]);
75 for(
int i =0; i < int(hardProcessIn.hardIntermediate.size());++i)
76 hardIntermediate.push_back( hardProcessIn.hardIntermediate[i]);
77 for(
int i =0; i < int(hardProcessIn.PosOutgoing1.size());++i)
78 PosOutgoing1.push_back( hardProcessIn.PosOutgoing1[i]);
79 for(
int i =0; i < int(hardProcessIn.PosOutgoing2.size());++i)
80 PosOutgoing2.push_back( hardProcessIn.PosOutgoing2[i]);
81 for(
int i =0; i < int(hardProcessIn.PosIntermediate.size());++i)
82 PosIntermediate.push_back( hardProcessIn.PosIntermediate[i]);
88 state.init(
"(hard process)", particleData);
89 translateLHEFString(LHEfile);
93 void initOnProcess(
string process,
ParticleData* particleData);
96 void initOnLHEF(
string LHEfile,
ParticleData* particleData);
99 void translateLHEFString(
string LHEpath);
102 void translateProcessString(
string process);
108 void storeCandidates(
const Event& event);
111 bool matchesAnyOutgoing(
int iPos,
const Event& event);
128 int hasResInCurrent();
138 void listCandidates()
const;
155 virtual double tmsDefinition(
const Event& event){
return event[0].e();}
158 double tms() {
return tmsValueSave;}
160 int nMaxJets() {
return nJetMaxSave;}
163 int nHardOutPartons(){
return hardProcess.nQuarksOut();}
165 int nHardOutLeptons(){
return hardProcess.nLeptonOut();}
168 int nHardInPartons(){
return hardProcess.nQuarksIn();}
170 int nHardInLeptons(){
return hardProcess.nLeptonIn();}
173 int nResInCurrent(){
return hardProcess.nResInCurrent();}
176 int getNumberOfClusteringSteps(
const Event& event);
179 bool doUserMerging(){
return doUserMergingSave;}
181 bool doMGMerging() {
return doMGMergingSave;}
183 bool doKTMerging() {
return doKTMergingSave;}
187 virtual double dampenIfFailCuts(
const Event& inEvent ) {
189 if(
false) cout << inEvent[0].e();
196 virtual bool canCutOnRecState() {
return false; }
201 virtual bool doCutOnRecState(
const Event& event ) {
203 if(
false) cout <<
event[0].e();
222 void storeHardProcessCandidates(
const Event& event){
223 hardProcess.storeCandidates(event);
227 void setLHEInputFile(
string lheFile);
230 void setWeight(
double wgt){ weightSave = wgt;}
233 double kTms(
const Event & event);
236 double getWeight() {
return weightSave;}
252 AlphaStrong* AlphaS_FSR() {
return &AlphaS_FSRSave;}
253 AlphaStrong* AlphaS_ISR() {
return &AlphaS_ISRSave;}
258 bool doUserMergingSave, doMGMergingSave, doKTMergingSave,
259 includeMassiveSave, enforceStrongOrderingSave, orderInRapiditySave,
260 pickByFullPSave, pickByPoPT2Save, includeRedundantSave,
261 pickBySumPTSave, allowColourShufflingSave;
262 int unorderedScalePrescipSave, unorderedASscalePrescipSave,
263 incompleteScalePrescipSave, ktTypeSave;
264 double scaleSeparationFactorSave, nonJoinedNormSave,
265 fsrInRecNormSave, herwigAcollFSRSave, herwigAcollISRSave,
266 pT0ISRSave, pTcutSave;
270 bool includeMassive() {
return includeMassiveSave;}
272 bool enforceStrongOrdering() {
return enforceStrongOrderingSave;}
274 bool orderInRapidity() {
return orderInRapiditySave;}
276 bool pickByFull() {
return pickByFullPSave;}
278 bool pickByPoPT2() {
return pickByPoPT2Save;}
280 bool includeRedundant(){
return includeRedundantSave;}
282 bool pickBySumPT(){
return pickBySumPTSave;}
287 int unorderedScalePrescip() {
return unorderedScalePrescipSave;}
291 int unorderedASscalePrescip() {
return unorderedASscalePrescipSave;}
296 int incompleteScalePrescip() {
return incompleteScalePrescipSave;}
299 bool allowColourShuffling() {
return allowColourShufflingSave;}
302 double scaleSeparationFactor() {
return scaleSeparationFactorSave;}
305 double nonJoinedNorm() {
return nonJoinedNormSave;}
308 double fsrInRecNorm() {
return fsrInRecNormSave;}
311 double herwigAcollFSR() {
return herwigAcollFSRSave;}
314 double herwigAcollISR() {
return herwigAcollISRSave;}
316 double pT0ISR() {
return pT0ISRSave;}
318 double pTcut() {
return pTcutSave;}
321 double kTdurham(
const Particle& RadAfterBranch,
322 const Particle& EmtAfterBranch,
int Type,
double D );
336 #endif // Pythia8_MergingHooks_H