13 #ifndef Pythia8_MergingHooks_H 14 #define Pythia8_MergingHooks_H 16 #include "Pythia8/Basics.h" 17 #include "Pythia8/BeamParticle.h" 18 #include "Pythia8/Event.h" 19 #include "Pythia8/Info.h" 20 #include "Pythia8/ParticleData.h" 21 #include "Pythia8/PartonSystems.h" 22 #include "Pythia8/PhysicsBase.h" 23 #include "Pythia8/PythiaStdlib.h" 24 #include "Pythia8/Settings.h" 48 vector<int> hardOutgoing2;
56 vector<int> PosOutgoing2;
70 : state(hardProcessIn.state),
71 tms(hardProcessIn.tms) {
74 for(
int i =0; i < int(hardProcessIn.
hardOutgoing1.size());++i)
76 for(
int i =0; i < int(hardProcessIn.hardOutgoing2.size());++i)
77 hardOutgoing2.push_back( hardProcessIn.hardOutgoing2[i]);
80 for(
int i =0; i < int(hardProcessIn.
PosOutgoing1.size());++i)
82 for(
int i =0; i < int(hardProcessIn.PosOutgoing2.size());++i)
83 PosOutgoing2.push_back( hardProcessIn.PosOutgoing2[i]);
90 hardIncoming2(), tms() {
92 state.
init(
"(hard process)", particleData);
113 virtual bool allowCandidates(
int iPos, vector<int> Pos1, vector<int> Pos2,
127 vector<int> candidates2,
128 unordered_map<int,int> further1, unordered_map<int,int> further2);
172 doUserMergingSave(false),
173 doMGMergingSave(false),
174 doKTMergingSave(false),
175 doPTLundMergingSave(false),
176 doCutBasedMergingSave(false),
177 doDynamicMergingSave(false), includeMassiveSave(),
178 enforceStrongOrderingSave(),
179 orderInRapiditySave(), pickByFullPSave(), pickByPoPT2Save(),
180 includeRedundantSave(), pickBySumPTSave(), allowColourShufflingSave(),
181 resetHardQRenSave(), resetHardQFacSave(), unorderedScalePrescipSave(),
182 unorderedASscalePrescipSave(), unorderedPDFscalePrescipSave(),
183 incompleteScalePrescipSave(), ktTypeSave(), nReclusterSave(),
184 nQuarksMergeSave(), nRequestedSave(), scaleSeparationFactorSave(),
185 nonJoinedNormSave(), fsrInRecNormSave(), herwigAcollFSRSave(),
186 herwigAcollISRSave(), pT0ISRSave(), pTcutSave(),
187 doNL3TreeSave(false),
188 doNL3LoopSave(false),
189 doNL3SubtSave(false),
190 doUNLOPSTreeSave(false),
191 doUNLOPSLoopSave(false),
192 doUNLOPSSubtSave(false),
193 doUNLOPSSubtNLOSave(false),
194 doUMEPSTreeSave(false),
195 doUMEPSSubtSave(false),
196 doEstimateXSection(false),
197 doRuntimeAMCATNLOInterfaceSave(false),
199 doRemoveDecayProducts(false), muMISave(), kFactor0jSave(), kFactor1jSave(),
200 kFactor2jSave(), tmsValueSave(), tmsValueNow(),
201 DparameterSave(), SparameterSave(),
202 nJetMaxSave(), nJetMaxNLOSave(),
203 doOrderHistoriesSave(true),
204 doCutOnRecStateSave(false),
205 doWeakClusteringSave(false),
206 doSQCDClusteringSave(false), muFSave(), muRSave(), muFinMESave(),
208 doIgnoreEmissionsSave(true),
209 doIgnoreStepSave(true), pTsave(), weightCKKWL1Save(), weightCKKWL2Save(),
210 nMinMPISave(), weightCKKWLSave(), weightFIRSTSave(),
211 doVariations(false), nWgts(0), nJetMaxLocal(), nJetMaxNLOLocal(),
212 hasJetMaxLocal(false),
213 includeWGTinXSECSave(false), nHardNowSave(), nJetNowSave(),
214 tmsHardNowSave(), tmsNowSave() {
215 inputEvent =
Event(); resonances.resize(0);
216 useOwnHardProcess =
false; hardProcess = 0; stopScaleSave= 0.0;
217 nVetoedInMainShower = 0;}
240 if(
false) cout << inEvent[0].e();
253 if(
false) cout <<
event[0].e();
256 for(
int i=0; i < int(event.
size()); ++i)
257 if( event[i].isFinal()
258 && (
event[i].isGluon() ||
event[i].isQuark()) )
261 if( hasEffectiveG2EW() && nPartons < 2){
262 if(event[3].
id() != 21 &&
event[4].id() != 21)
276 if (
false ) cout << inEvent[0].e();
285 if(doCutBasedMergingSave)
return 0.;
287 else return tmsValueNow;
290 if (doCutBasedMergingSave)
return 0.;
291 if (doDynamicMergingSave) {
293 const double QbarCut = tmsValueSave;
294 const double Q2 = infoPtr->Q2DIS();
296 return QbarCut/sqrt(1. +
pow2(QbarCut/SparameterSave)/Q2);
300 void tms(
double tmsIn ) { tmsValueNow = tmsIn; }
305 return ((tmsListSave.size() == 3) ? tmsListSave[0] : 0.);
310 return ((tmsListSave.size() == 3) ? tmsListSave[1] : 0.);
315 return ((tmsListSave.size() == 3) ? tmsListSave[2] : 0.);
318 int nMaxJets() {
return (hasJetMaxLocal) ? nJetMaxLocal : nJetMaxSave;}
322 {
return (hasJetMaxLocal) ? nJetMaxNLOLocal : nJetMaxNLOSave;}
352 bool doCKKWLMerging() {
return (doUserMergingSave || doMGMergingSave
353 || doKTMergingSave || doPTLundMergingSave || doCutBasedMergingSave
354 || doDynamicMergingSave); }
358 bool doUMEPSSubt() {
return doUMEPSSubtSave;}
359 bool doUMEPSMerging() {
return (doUMEPSTreeSave || doUMEPSSubtSave);}
363 bool doNL3Loop() {
return doNL3LoopSave;}
364 bool doNL3Subt() {
return doNL3SubtSave;}
365 bool doNL3Merging() {
return (doNL3TreeSave || doNL3LoopSave
370 bool doUNLOPSLoop() {
return doUNLOPSLoopSave;}
371 bool doUNLOPSSubt() {
return doUNLOPSSubtSave;}
372 bool doUNLOPSSubtNLO() {
return doUNLOPSSubtNLOSave;}
373 bool doUNLOPSMerging() {
return (doUNLOPSTreeSave || doUNLOPSLoopSave
374 || doUNLOPSSubtSave || doUNLOPSSubtNLOSave); }
391 bool isFirstEmission(
const Event& event);
395 if ( getProcessString().compare(
"pp>h") == 0 )
return true;
400 if ( getProcessString().compare(
"ta+ta->jj") == 0
401 || getProcessString().compare(
"ta-ta+>jj") == 0 ) {
402 int nInFermions(0), nOutFermions(0);
403 for (
int i=0; i < int(in.size()); ++i)
404 if (abs(in[i])<20) nInFermions++;
405 for (
int i=0; i < int(out.size()); ++i)
406 if (abs(out[i])<20) nOutFermions++;
407 return (nInFermions%2==0 && nOutFermions%2==0);
413 Event bareEvent(
const Event& inputEventIn,
bool storeInputEvent );
415 bool reattachResonanceDecays(
Event& process );
418 bool isInHard(
int iPos,
const Event& event);
421 virtual int getNumberOfClusteringSteps(
const Event& event,
422 bool resetNjetMax =
false);
432 doOrderHistoriesSave = doOrderHistoriesIn; }
436 doCutOnRecStateSave = doCutOnRecStateIn; }
440 doWeakClusteringSave = doWeakClusteringIn; }
448 bool checkAgainstCut(
const Particle& particle);
451 virtual double tmsNow(
const Event& event );
453 double rhoms(
const Event& event,
bool withColour);
455 double kTms(
const Event & event);
458 double cutbasedms(
const Event& event );
466 doIgnoreEmissionsSave = doIgnoreIn;}
470 virtual bool doVetoEmission(
const Event& );
477 virtual bool useShowerPlugin() {
return useShowerPluginSave; }
478 virtual bool usesVincia() {
return false;}
492 double tmsHardNow() {
return tmsHardNowSave; }
493 int nJetsNow() {
return nJetNowSave; }
494 double tmsNow() {
return tmsNowSave;}
496 void setHardProcessPtr(
HardProcess* hardProcIn) { hardProcess = hardProcIn; }
502 int nMuRVar() {
return muRVarFactors.size(); }
503 void printIndividualWeights();
514 void setShowerPointer(
PartonLevel* psIn ) {showers = psIn;}
527 doPTLundMergingSave, doCutBasedMergingSave, doDynamicMergingSave,
528 includeMassiveSave, enforceStrongOrderingSave, orderInRapiditySave,
529 pickByFullPSave, pickByPoPT2Save, includeRedundantSave,
530 pickBySumPTSave, allowColourShufflingSave, resetHardQRenSave,
532 int unorderedScalePrescipSave, unorderedASscalePrescipSave,
533 unorderedPDFscalePrescipSave, incompleteScalePrescipSave,
534 ktTypeSave, nReclusterSave, nQuarksMergeSave, nRequestedSave;
536 double scaleSeparationFactorSave, nonJoinedNormSave,
537 fsrInRecNormSave, herwigAcollFSRSave, herwigAcollISRSave,
538 pT0ISRSave, pTcutSave, pTminISRSave, pTminFSRSave;
539 bool doNL3TreeSave, doNL3LoopSave, doNL3SubtSave;
540 bool doUNLOPSTreeSave, doUNLOPSLoopSave, doUNLOPSSubtSave,
542 bool doUMEPSTreeSave, doUMEPSSubtSave;
557 vector< pair<int,int> > resonances;
558 bool doRemoveDecayProducts;
565 double kFactor1jSave;
566 double kFactor2jSave;
573 string processSave, processNow;
607 vector<double> weightCKKWL1Save, weightCKKWL2Save;
614 vector<double> wtSave;
615 vector<double> pdfWeightSave;
616 vector<double> mpiWeightSave;
617 vector<double> asWeightSave;
618 vector<double> aemWeightSave;
619 vector<double> bornAsVarFac;
639 int nHardNowSave, nJetNowSave;
640 double tmsHardNowSave, tmsNowSave;
659 lheInputFile = lheFile.substr(0,lheFile.size()-6); }
667 AlphaStrong* AlphaS_ISR() {
return &AlphaS_ISRSave;}
668 AlphaEM* AlphaEM_FSR() {
return &AlphaEM_FSRSave;}
669 AlphaEM* AlphaEM_ISR() {
return &AlphaEM_ISRSave;}
735 void muMI(
double mu) { muMISave = mu; }
736 double muMI() {
return muMISave;}
740 return (njet == 0) ? kFactor0jSave
741 :(njet == 1) ? kFactor1jSave
746 return (kFactor(njet) - 1)/infoPtr->alphaS();
764 double muF() {
return (muFSave > 0.) ? muFSave : infoPtr->QFac();}
765 double muR() {
return (muRSave > 0.) ? muRSave : infoPtr->QRen();}
769 string mus = infoPtr->getEventAttribute(
"muf2",
true);
770 double mu = (mus.empty()) ? 0. : atof((
char*)mus.c_str());
773 if (infoPtr->scales) mu = infoPtr->getScalesAttribute(
"muf");
774 return (mu > 0.) ? mu : (muFinMESave > 0.) ? muFinMESave
779 string mus = infoPtr->getEventAttribute(
"mur2",
true);
780 double mu = (mus.empty()) ? 0. : atof((
char*)mus.c_str());
783 if (infoPtr->scales) mu = infoPtr->getScalesAttribute(
"mur");
784 return (mu > 0.) ? mu : (muRinMESave > 0.) ? muRinMESave
800 weightCKKWL1Save = weightCKKWL2Save = weight;}
803 virtual bool doVetoStep(
const Event& process,
const Event& event,
804 bool doResonance =
false);
807 virtual bool setShowerStartingScales(
bool isTrial,
bool doMergeFirstEmm,
808 double& pTscaleIn,
const Event& event,
809 double& pTmaxFSRIn,
bool& limitPTmaxFSRin,
810 double& pTmaxISRIn,
bool& limitPTmaxISRin,
811 double& pTmaxMPIIn,
bool& limitPTmaxMPIin );
816 void setShowerStoppingScale(
double scale = 0.) {stopScaleSave = scale;}
817 double getShowerStoppingScale() {
return stopScaleSave;}
819 void nMinMPI(
int nMinMPIIn) {nMinMPISave = nMinMPIIn; }
820 int nMinMPI() {
return nMinMPISave;}
827 double kTdurham(
const Particle& RadAfterBranch,
828 const Particle& EmtAfterBranch,
int Type,
double D );
830 double rhoPythia(
const Event& event,
int rad,
int emt,
int rec,
835 int findColour(
int col,
int iExclude1,
int iExclude2,
836 const Event& event,
int type,
bool isHardIn);
838 double deltaRij(
Vec4 jet1,
Vec4 jet2);
846 - weightFIRSTSave[i]);}
853 weightCKKWLSave = weightIn;
854 infoPtr->weightContainerPtr
855 ->weightsMerging.setValueVector(weightIn); }
858 weightFIRSTSave = weightIn;
859 infoPtr->weightContainerPtr->weightsMerging
860 .setValueFirstVector(weightIn); }
865 vector<double> ret = individualWeights.wtSave;
866 for (
int i = 0; i < nWgts; ++i) {
867 ret[i] *= individualWeights.pdfWeightSave[i] *
868 individualWeights.mpiWeightSave[i];
874 vector<double> ret = individualWeights.asWeightSave;
875 for (
int i = 0; i < nWgts; ++i) {
876 ret[i] *= individualWeights.aemWeightSave[i];
891 nJetNowSave = nJetNowIn; tmsNowSave = tmsNowIn; }
895 nHardNowSave = nHardNowIn; tmsHardNowSave = tmsHardNowIn; }
899 void addVetoInMainShower() {++nVetoedInMainShower;}
900 int getNumberVetoedInMainShower() {
return nVetoedInMainShower;}
vector< int > hardIntermediate
Flavour of intermediate bosons in the hard 2->2.
Definition: MergingHooks.h:50
bool resetHardQRen()
Allow use of dynamical renormalisation scale of the core 2-> 2 process.
Definition: MergingHooks.h:710
bool pickByFull()
Pick history probabilistically by full (correct) splitting probabilities.
Definition: MergingHooks.h:679
bool doKTMerging()
Function to determine if KT merging should be applied.
Definition: MergingHooks.h:345
double pTiMS()
Definition: MergingHooks.h:309
constexpr double pow2(const double &x)
Powers of small integers - for balance speed/code clarity.
Definition: PythiaStdlib.h:182
bool applyVeto
Definition: MergingHooks.h:553
Event state
Current reference event.
Definition: MergingHooks.h:53
Definition: StandardModel.h:23
vector< int > hardOutgoing1
Flavours of the outgoing particles.
Definition: MergingHooks.h:47
vector< double > getWeightFIRST()
Return O() weight.
Definition: MergingHooks.h:850
int unorderedASscalePrescip()
Definition: MergingHooks.h:694
bool orderInRapidity()
Prefer histories ordered in rapidity and evolution pT.
Definition: MergingHooks.h:677
int nHardInLeptons()
Function to return the number of incoming leptons in the core process.
Definition: MergingHooks.h:336
int nHardOutPartons()
Function to return the number of outgoing partons in the core process.
Definition: MergingHooks.h:326
void setLHEInputFile(string lheFile)
Definition: MergingHooks.h:658
bool pickByPoPT2()
Pick history probabilistically, with easier form of probabilities.
Definition: MergingHooks.h:681
Definition: PhysicsBase.h:27
Struct to save individual weights.
Definition: MergingHooks.h:613
virtual bool allowCandidates(int iPos, vector< int > Pos1, vector< int > Pos2, const Event &event)
Definition: MergingHooks.cc:915
int nVetoedInMainShower
Statistics.
Definition: MergingHooks.h:898
vector< double > getWeightCKKWL()
Return CKKW-L weight.
Definition: MergingHooks.h:848
virtual void translateProcessString(string process)
Function to translate the process string (in MG/ME notation)
Definition: MergingHooks.cc:554
virtual bool canVetoStep()
Function to allow event veto.
Definition: MergingHooks.h:796
double muFinME()
Store / get factorisation scale used in matrix element calculation.
Definition: MergingHooks.h:767
The Event class holds all info on the generated event.
Definition: Event.h:408
int hardIncoming2
Flavour of the second incoming particle.
Definition: MergingHooks.h:45
The TimeShower class does timelike showers.
Definition: TimeShower.h:33
MergingHooks()
Constructor.
Definition: MergingHooks.h:171
AlphaStrong AlphaS_FSRSave
AlphaS objects for alphaS reweighting use.
Definition: MergingHooks.h:517
double kFactor0jSave
Precalculated K-factors.
Definition: MergingHooks.h:564
bool useShowerPluginSave
Functions used as clusterings / probabilities.
Definition: MergingHooks.h:476
bool doUserMergingSave
Flags for merging procedure definition.
Definition: MergingHooks.h:526
bool doIgnoreStepSave
Flag to indicate if events should be vetoed.
Definition: MergingHooks.h:604
double nonJoinedNorm()
Definition: MergingHooks.h:719
HardProcess(const HardProcess &hardProcessIn)
Copy constructor.
Definition: MergingHooks.h:69
double stopScaleSave
Definition: MergingHooks.h:815
bool doIgnoreEmissionsSave
Flag to indicate trial shower usage.
Definition: MergingHooks.h:602
bool doWeakClusteringSave
INTERNAL Hooks to allow clustering W bosons.
Definition: MergingHooks.h:591
double muF()
Store / get first scale in PDF's that Pythia should have used.
Definition: MergingHooks.h:764
void allowCutOnRecState(bool doCutOnRecStateIn)
Definition: MergingHooks.h:435
vector< double > muRVarFactors
Vector of variation factors applied to renormalization scale.
Definition: MergingHooks.h:627
HardProcess()
Default constructor.
Definition: MergingHooks.h:64
virtual bool matchesAnyOutgoing(int iPos, const Event &event)
Definition: MergingHooks.cc:1559
int nJetMaxLocal
Local copies of nJetMax inputs, if recalculation is necessary.
Definition: MergingHooks.h:632
int nWgts
Number of weights, nominal + variations.
Definition: MergingHooks.h:629
int nHardNow()
Functions to retrieve event veto information.
Definition: MergingHooks.h:491
void doIgnoreEmissions(bool doIgnoreIn)
Functions to steer shower evolution (public to allow for PS plugin)
Definition: MergingHooks.h:465
bool doUMEPSTree()
Definition: MergingHooks.h:357
virtual double hardProcessME(const Event &inEvent)
Function to calculate the hard process matrix element.
Definition: MergingHooks.h:274
Event inputEvent
Save input event in case decay products need to be detached.
Definition: MergingHooks.h:556
double muFSave
Store / get first scale in PDF's that Pythia should have used.
Definition: MergingHooks.h:594
bool hasResInProc()
Function to report if a resonace decay was found in the 2->2 hard process.
Definition: MergingHooks.cc:1948
bool allowEffectiveVertex(vector< int > in, vector< int > out)
Function to allow effective gg -> EW boson couplings.
Definition: MergingHooks.h:399
bool resetHardQFac()
Allow use of dynamical factorisation scale of the core 2-> 2 process.
Definition: MergingHooks.h:712
virtual bool doVetoTrialEmission(const Event &, const Event &)
Function to check if trial emission should be rejected.
Definition: MergingHooks.h:270
int nQuarksIn()
Definition: MergingHooks.cc:1878
void list() const
Function to print the hard process (for debug)
Definition: MergingHooks.cc:1970
void clear()
Function to clear hard process information.
Definition: MergingHooks.cc:2007
AlphaStrong * AlphaS_FSR()
Functions for output of class members.
Definition: MergingHooks.h:666
Definition: StandardModel.h:106
bool doOrderHistoriesSave
Definition: MergingHooks.h:583
int unorderedScalePrescip()
Definition: MergingHooks.h:690
bool pickBySumPT()
Pick by winner-takes-it-all, with minimum sum of scalar evolution pT.
Definition: MergingHooks.h:685
double pTsave
Stored weights in case veot needs to be revoked.
Definition: MergingHooks.h:606
virtual bool canVetoTrialEmission()
Function to allow not counting a trial emission.
Definition: MergingHooks.h:268
bool doUNLOPSTree()
Definition: MergingHooks.h:369
void storeWeights(vector< double > weight)
Stored weights in case veto needs to be revoked.
Definition: MergingHooks.h:799
bool hasEffectiveG2EW()
Function to allow effective gg -> EW boson couplings.
Definition: MergingHooks.h:394
double muFinMESave
Store / get factorisation scale used in matrix element calculation.
Definition: MergingHooks.h:598
double tmsCut()
Definition: MergingHooks.h:289
int nMaxJetsNLO()
Definition: MergingHooks.h:321
vector< double > weightCKKWLSave
Save CKKW-L weight / O() weight.
Definition: MergingHooks.h:610
virtual double dampenIfFailCuts(const Event &inEvent)
Definition: MergingHooks.h:238
double fsrInRecNorm()
Definition: MergingHooks.h:722
double scaleSeparationFactor()
Definition: MergingHooks.h:716
void doWeakClustering(bool doWeakClusteringIn)
Function to allow final state clusterings of weak bosons.
Definition: MergingHooks.h:439
virtual bool canVetoEmission()
Function to allow not counting a trial emission.
Definition: MergingHooks.h:468
bool doCutBasedMerging()
Function to determine if cut based merging should be applied.
Definition: MergingHooks.h:349
string getProcessString()
Function to return hard process string.
Definition: MergingHooks.h:324
bool includeWGTinXSECSave
Definition: MergingHooks.h:638
double kFactor(int njet=0)
Full k-Factor for current event.
Definition: MergingHooks.h:739
int nHardInPartons()
Definition: MergingHooks.h:334
double tms
Information on merging scale read from LHE file.
Definition: MergingHooks.h:61
int incompleteScalePrescip()
Definition: MergingHooks.h:704
bool includeRedundant()
Include redundant terms (e.g. PDF ratios) in the splitting probabilities.
Definition: MergingHooks.h:683
int hasResInCurrent()
Definition: MergingHooks.cc:1902
bool doMGMerging()
Function to determine if automated MG/ME merging should be applied.
Definition: MergingHooks.h:343
Definition: PartonLevel.h:45
bool doDynamicMerging()
Function to determine if merging with dynamic scale should be applied.
Definition: MergingHooks.h:351
int nResInCurrent()
Definition: MergingHooks.cc:1924
vector< int > PosOutgoing1
Potential positions of outgoing particles in reference event.
Definition: MergingHooks.h:55
bool doNL3Tree()
Definition: MergingHooks.h:362
double dRijMS()
Definition: MergingHooks.h:304
int nResInCurrent()
Definition: MergingHooks.h:339
int nBosonsOut()
Definition: MergingHooks.cc:1861
double tmsValueSave
Saved members.
Definition: MergingHooks.h:569
double tms()
Function returning the value of the merging scale.
Definition: MergingHooks.h:284
void listCandidates() const
Definition: MergingHooks.cc:1989
void initOnLHEF(string LHEfile, ParticleData *particleData)
Constructor with path to LHE file input.
Definition: MergingHooks.cc:36
Definition: MergingHooks.h:38
void setWeightFIRST(vector< double > weightIn)
Set O() weight.
Definition: MergingHooks.h:857
int nHardOutLeptons()
Function to return the number of outgoing leptons in the core process.
Definition: MergingHooks.h:328
double muRinME()
Definition: MergingHooks.h:777
void doIgnoreStep(bool doIgnoreIn)
Functions to steer merging code.
Definition: MergingHooks.h:794
void orderHistories(bool doOrderHistoriesIn)
Functions to steer construction of histories.
Definition: MergingHooks.h:431
int size() const
Event record size.
Definition: Event.h:459
bool orderHistories()
Definition: MergingHooks.h:751
int nMaxJets()
Function returning the value of the maximal number of merged jets.
Definition: MergingHooks.h:318
bool doPTLundMerging()
Function to determine if PTLund merging should be applied.
Definition: MergingHooks.h:347
bool doSQCDClustering()
INTERNAL Hooks to allow clustering clustering of gluons to squarks.
Definition: MergingHooks.h:761
void setEventVetoInfo(int nJetNowIn, double tmsNowIn)
Functions and members to store the event veto information.
Definition: MergingHooks.h:890
vector< double > getCouplingWeight()
Function to return coupling weight.
Definition: MergingHooks.h:873
double k1Factor(int njet=0)
O()-term of the k-Factor for current event.
Definition: MergingHooks.h:745
bool doUserMerging()
Function to determine if user defined merging should be applied.
Definition: MergingHooks.h:341
string lheInputFile
Saved path to LHE file for more automated merging.
Definition: MergingHooks.h:523
void setHardProcessInfo(int nHardNowIn, double tmsHardNowIn)
Set the hard process information.
Definition: MergingHooks.h:894
bool doCutOnRecStateSave
Definition: MergingHooks.h:588
int nMuRVar()
Functions related to renormalization scale variations.
Definition: MergingHooks.h:502
bool doRuntimeAMCATNLOInterfaceSave
Flag for runtime aMC interface. Needed for aMC-Delta.
Definition: MergingHooks.h:548
bool doVariations
Flag to indicate whether renormalization scale variations are performed.
Definition: MergingHooks.h:625
virtual bool findOtherCandidates(int iPos, const Event &event, bool doReplace)
Definition: MergingHooks.cc:1631
vector< double > tmsListSave
Definition: MergingHooks.h:579
double pT0ISR()
ISR regularisation scale.
Definition: MergingHooks.h:730
bool includeWGTinXSEC()
Definition: MergingHooks.h:485
virtual void storeCandidates(const Event &event, string process)
Function to identify the hard subprocess in the current event.
Definition: MergingHooks.cc:986
void setWeightCKKWL(vector< double > weightIn)
Set CKKW-L weight.
Definition: MergingHooks.h:852
int nRecluster()
Return the number clustering steps that have actually been done.
Definition: MergingHooks.h:380
Header for classes to set beam momentum and interaction vertex spread.
Definition: Analysis.h:20
The Pythia class contains the top-level routines to generate an event.
Definition: Pythia.h:71
virtual double tmsDefinition(const Event &event)
Function encoding the functional definition of the merging scale.
Definition: MergingHooks.h:235
double pTcut()
Shower cut-off scale.
Definition: MergingHooks.h:732
vector< double > getSudakovWeight()
Definition: MergingHooks.h:864
void storeHardProcessCandidates(const Event &event)
Generic setup functions.
Definition: MergingHooks.h:648
int nQuarksOut()
Definition: MergingHooks.cc:1786
double herwigAcollISR()
Definition: MergingHooks.h:728
double herwigAcollFSR()
Definition: MergingHooks.h:725
void init(string headerIn="", ParticleData *particleDataPtrIn=0, int startColTagIn=100)
Initialize header for event listing, particle data table, and colour.
Definition: Event.h:422
bool allowColourShuffling()
Allow swapping one colour index while reclustering.
Definition: MergingHooks.h:707
double QijMS()
Definition: MergingHooks.h:314
bool doRuntimeAMCATNLOInterface()
Function to determine if we have a runtime interface to aMC.
Definition: MergingHooks.h:377
virtual bool canCutOnRecState()
Definition: MergingHooks.h:246
int nHardOutBosons()
Definition: MergingHooks.h:331
The SpaceShower class does spacelike showers.
Definition: SpaceShower.h:33
int nLeptonIn()
Definition: MergingHooks.cc:1890
bool includeMassive()
Definition: MergingHooks.h:673
vector< int > PosIntermediate
Potential positions of intermediate bosons in reference event.
Definition: MergingHooks.h:58
HardProcess(string LHEfile, ParticleData *particleData)
Constructor with path to LHE file.
Definition: MergingHooks.h:89
bool allowCutOnRecState()
Definition: MergingHooks.h:756
virtual void initOnProcess(string process, ParticleData *particleData)
Constructor with core process input.
Definition: MergingHooks.cc:27
bool enforceStrongOrdering()
Prefer strongly ordered histories.
Definition: MergingHooks.h:675
MergingHooks is base class for user input to the merging procedure.
Definition: MergingHooks.h:166
bool useOwnHardProcess
The members, switches etc.
Definition: MergingHooks.h:510
int nLeptonOut()
Definition: MergingHooks.cc:1814
This class holds a map of all ParticleDataEntries.
Definition: ParticleData.h:422
virtual bool exchangeCandidates(vector< int > candidates1, vector< int > candidates2, unordered_map< int, int > further1, unordered_map< int, int > further2)
Function to exchange a stored hard process candidate with another choice.
Definition: MergingHooks.cc:1751
int nRequested()
Return number of requested additional jets on top of the Born process.
Definition: MergingHooks.h:383
virtual bool doCutOnRecState(const Event &event)
Definition: MergingHooks.h:251
int hardIncoming1
Flavour of the first incoming particle.
Definition: MergingHooks.h:43
virtual ~HardProcess()
Default destructor.
Definition: MergingHooks.h:66
int unorderedPDFscalePrescip()
Definition: MergingHooks.h:699
bool doEstimateXSection
Flag to only do phase space cut, rejecting events below the tms cut.
Definition: MergingHooks.h:545
double muMISave
Starting scale for attaching MPI.
Definition: MergingHooks.h:561
Definition: History.h:116
double getWeightNLO(int i=0)
Functions for weight management.
Definition: MergingHooks.h:845
bool doWeakClustering()
INTERNAL Hooks to allow clustering W bosons.
Definition: MergingHooks.h:759
void translateLHEFString(string LHEpath)
Function to access the LHE file and read relevant information.
Definition: MergingHooks.cc:52
void muMI(double mu)
MI starting scale.
Definition: MergingHooks.h:735