diff --git a/Shower/Dipole/Base/DipoleSplittingGenerator.cc b/Shower/Dipole/Base/DipoleSplittingGenerator.cc --- a/Shower/Dipole/Base/DipoleSplittingGenerator.cc +++ b/Shower/Dipole/Base/DipoleSplittingGenerator.cc @@ -1,814 +1,814 @@ // -*- C++ -*- // // DipoleSplittingGenerator.cc is a part of Herwig - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipoleSplittingGenerator class. // #include <config.h> #include "DipoleSplittingGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig/Shower/Dipole/DipoleShowerHandler.h" using namespace Herwig; DipoleSplittingGenerator::DipoleSplittingGenerator() : HandlerBase(), theExponentialGenerator(0), prepared(false), presampling(false), theDoCompensate(false), theSplittingWeight(1.) { if ( ShowerHandler::currentHandler() ) setGenerator(ShowerHandler::currentHandler()->generator()); } DipoleSplittingGenerator::~DipoleSplittingGenerator() { if ( theExponentialGenerator ) { delete theExponentialGenerator; theExponentialGenerator = 0; } } IBPtr DipoleSplittingGenerator::clone() const { return new_ptr(*this); } IBPtr DipoleSplittingGenerator::fullclone() const { return new_ptr(*this); } void DipoleSplittingGenerator::wrap(Ptr<DipoleSplittingGenerator>::ptr other) { assert(!prepared); theOtherGenerator = other; } void DipoleSplittingGenerator::resetVariations() { for ( map<string,double>::iterator w = currentWeights.begin(); w != currentWeights.end(); ++w ) w->second = 1.; } void DipoleSplittingGenerator::veto(const vector<double>&, double p, double r) { double factor = 1.; if ( splittingReweight() ) { if ( ( ShowerHandler::currentHandler()->firstInteraction() && splittingReweight()->firstInteraction() ) || ( !ShowerHandler::currentHandler()->firstInteraction() && splittingReweight()->secondaryInteractions() ) ) { factor = splittingReweight()->evaluate(generatedSplitting); theSplittingWeight *= (r-factor*p)/(r-p); } } splittingKernel()->veto(generatedSplitting, factor*p, r, currentWeights); } void DipoleSplittingGenerator::accept(const vector<double>&, double p, double r) { double factor = 1.; if ( splittingReweight() ) { if ( ( ShowerHandler::currentHandler()->firstInteraction() && splittingReweight()->firstInteraction() ) || ( !ShowerHandler::currentHandler()->firstInteraction() && splittingReweight()->secondaryInteractions() ) ) { factor = splittingReweight()->evaluate(generatedSplitting); theSplittingWeight *= factor; } } splittingKernel()->accept(generatedSplitting, factor*p, r, currentWeights); } void DipoleSplittingGenerator::prepare(const DipoleSplittingInfo& sp) { generatedSplitting = sp; generatedSplitting.splittingKinematics(splittingKernel()->splittingKinematics()); generatedSplitting.splittingParameters().resize(splittingKernel()->nDimAdditional()); if ( wrapping() ) { generatedSplitting.emitterData(theSplittingKernel->emitter(generatedSplitting.index())); generatedSplitting.spectatorData(theSplittingKernel->spectator(generatedSplitting.index())); generatedSplitting.emissionData(theSplittingKernel->emission(generatedSplitting.index())); parameters.resize(theOtherGenerator->nDim()); prepared = true; return; } generatedSplitting.emitterData(splittingKernel()->emitter(generatedSplitting.index())); generatedSplitting.spectatorData(splittingKernel()->spectator(generatedSplitting.index())); generatedSplitting.emissionData(splittingKernel()->emission(generatedSplitting.index())); presampledSplitting = generatedSplitting; prepared = true; parameters.resize(nDim()); theExponentialGenerator = new exsample::exponential_generator<DipoleSplittingGenerator,UseRandom>(); theExponentialGenerator->sampling_parameters().maxtry = maxtry(); theExponentialGenerator->sampling_parameters().presampling_points = presamplingPoints(); theExponentialGenerator->sampling_parameters().freeze_grid = freezeGrid(); theExponentialGenerator->detuning(detuning()); theExponentialGenerator->docompensate(theDoCompensate); theExponentialGenerator->function(this); theExponentialGenerator->initialize(); } void DipoleSplittingGenerator::fixParameters(const DipoleSplittingInfo& sp, Energy optHardPt) { assert(generator()); assert(!presampling); assert(prepared); assert(sp.index() == generatedSplitting.index()); generatedSplitting.scale(sp.scale()); // For dipoles containing a decayed particle, // the scale is fixed but the mass of the recoil // system is not so sample over recoilMass(), // so the parameter is related to recoilMass() if (generatedSplitting.index().incomingDecayEmitter() || generatedSplitting.index().incomingDecaySpectator() ) { generatedSplitting.recoilMass(sp.recoilMass()); parameters[3] = sp.recoilMass()/generator()->maximumCMEnergy(); } // If not a decay dipole, sample over the scale of the dipole, // so the parameter is related to scale() else parameters[3] = sp.scale()/generator()->maximumCMEnergy(); generatedSplitting.hardPt(sp.hardPt()); parameters[0] = splittingKinematics()->ptToRandom(optHardPt == ZERO ? generatedSplitting.hardPt() : min(generatedSplitting.hardPt(),optHardPt), sp.scale(), sp.emitterX(), sp.spectatorX(), generatedSplitting.index(), *splittingKernel()); size_t shift = 4; if ( generatedSplitting.index().emitterPDF().pdf() && generatedSplitting.index().spectatorPDF().pdf() ) { generatedSplitting.emitterX(sp.emitterX()); generatedSplitting.spectatorX(sp.spectatorX()); parameters[4] = sp.emitterX(); parameters[5] = sp.spectatorX(); shift += 2; } if ( generatedSplitting.index().emitterPDF().pdf() && !generatedSplitting.index().spectatorPDF().pdf() ) { generatedSplitting.emitterX(sp.emitterX()); parameters[4] = sp.emitterX(); ++shift; } if ( !generatedSplitting.index().emitterPDF().pdf() && generatedSplitting.index().spectatorPDF().pdf() ) { generatedSplitting.spectatorX(sp.spectatorX()); parameters[4] = sp.spectatorX(); ++shift; } if ( splittingKernel()->nDimAdditional() ) copy(sp.lastSplittingParameters().begin(), sp.lastSplittingParameters().end(), parameters.begin()+shift); if ( sp.emitter() ) generatedSplitting.emitter(sp.emitter()); if ( sp.spectator() ) generatedSplitting.spectator(sp.spectator()); } int DipoleSplittingGenerator::nDim() const { assert(!wrapping()); assert(prepared); int ret = 4; // 0 pt, 1 z, 2 phi, 3 scale, 4/5 xs + parameters if ( generatedSplitting.index().emitterPDF().pdf() ) { ++ret; } if ( generatedSplitting.index().spectatorPDF().pdf() ) { ++ret; } ret += splittingKernel()->nDimAdditional(); return ret; } const vector<bool>& DipoleSplittingGenerator::sampleFlags() { assert(!wrapping()); if ( !theFlags.empty() ) return theFlags; theFlags.resize(nDim(),false); theFlags[0] = true; theFlags[1] = true; theFlags[2] = true; // 0 pt, 1 z, 2 phi return theFlags; } const pair<vector<double>,vector<double> >& DipoleSplittingGenerator::support() { assert(!wrapping()); if ( !theSupport.first.empty() ) return theSupport; vector<double> lower(nDim(),0.); vector<double> upper(nDim(),1.); pair<double,double> kSupport = generatedSplitting.splittingKinematics()->kappaSupport(generatedSplitting); pair<double,double> xSupport = generatedSplitting.splittingKinematics()->xiSupport(generatedSplitting); lower[0] = kSupport.first; lower[1] = xSupport.first; upper[0] = kSupport.second; upper[1] = xSupport.second; theSupport.first = lower; theSupport.second = upper; return theSupport; } void DipoleSplittingGenerator::startPresampling() { assert(!wrapping()); splittingKernel()->startPresampling(generatedSplitting.index()); presampling = true; } void DipoleSplittingGenerator::stopPresampling() { assert(!wrapping()); splittingKernel()->stopPresampling(generatedSplitting.index()); presampling = false; } bool DipoleSplittingGenerator::haveOverestimate() const { assert(!wrapping()); assert(prepared); return generatedSplitting.splittingKinematics()->haveOverestimate() && splittingKernel()->haveOverestimate(generatedSplitting); } bool DipoleSplittingGenerator::overestimate(const vector<double>& point) { assert(!wrapping()); assert(prepared); assert(!presampling); assert(haveOverestimate()); if ( ! generatedSplitting.splittingKinematics()->generateSplitting(point[0],point[1],point[2], generatedSplitting, *splittingKernel()) ) return 0.; generatedSplitting.splittingKinematics()->prepareSplitting(generatedSplitting); return ( generatedSplitting.splittingKinematics()->jacobianOverestimate() * splittingKernel()->overestimate(generatedSplitting) ); } double DipoleSplittingGenerator::invertOverestimateIntegral(double value) const { assert(!wrapping()); assert(prepared); assert(!presampling); assert(haveOverestimate()); return splittingKernel()->invertOverestimateIntegral(generatedSplitting,value); } double DipoleSplittingGenerator::evaluate(const vector<double>& point) { assert(!wrapping()); assert(prepared); assert(generator()); DipoleSplittingInfo& split = ( !presampling ? generatedSplitting : presampledSplitting ); split.continuesEvolving(); size_t shift = 4; if ( presampling ) { // For dipoles containing a decayed particle, // the scale is fixed but the mass of the recoil // system is not so sample over recoilMass() if ( split.index().incomingDecaySpectator() ) { split.scale(split.index().spectatorData()->mass()); split.recoilMass(point[3] * generator()->maximumCMEnergy()); } // Currently do not have decaying emitters //else if ( split.index().incomingDecayEmitter() ) { // split.scale(split.index().emitterData()->mass()); // split.recoilMass(point[3] * generator()->maximumCMEnergy()); //} // If not a decay dipole, sample over the scale of the dipole else split.scale(point[3] * generator()->maximumCMEnergy()); if ( split.index().emitterPDF().pdf() && split.index().spectatorPDF().pdf() ) { split.emitterX(point[4]); split.spectatorX(point[5]); shift += 2; } if ( split.index().emitterPDF().pdf() && !split.index().spectatorPDF().pdf() ) { split.emitterX(point[4]); ++shift; } if ( !split.index().emitterPDF().pdf() && split.index().spectatorPDF().pdf() ) { split.spectatorX(point[4]); ++shift; } if ( splittingKernel()->nDimAdditional() ) copy(point.begin()+shift,point.end(),split.splittingParameters().begin()); split.hardPt(split.splittingKinematics()->ptMax(split.scale(), split.emitterX(), split.spectatorX(), split, *splittingKernel())); } if ( ! split.splittingKinematics()->generateSplitting(point[0], point[1], point[2], split, *splittingKernel()) ) { split.lastValue(0.); return 0.; } split.splittingKinematics()->prepareSplitting(split); if ( split.stoppedEvolving() ) { split.lastValue(0.); return 0.; } if ( !presampling ) splittingKernel()->clearAlphaPDFCache(); double kernel = splittingKernel()->evaluate(split); double jac = split.splittingKinematics()->jacobian(); // multiply in the profile scales when relevant assert(ShowerHandler::currentHandler()); if ( ShowerHandler::currentHandler()->firstInteraction() && ShowerHandler::currentHandler()->profileScales() && !presampling ) { Energy hard = ShowerHandler::currentHandler()->hardScale(); if ( hard > ZERO ) kernel *= ShowerHandler::currentHandler()->profileScales()-> hardScaleProfile(hard,split.lastPt()); } split.lastValue( abs(jac) * kernel ); if ( ! isfinite(split.lastValue()) ) { generator()->log() << "DipoleSplittingGenerator:evaluate():" <<"problematic splitting kernel encountered for " << splittingKernel()->name() << "\n" << flush; split.lastValue(0.0); } if ( kernel < 0. ) return 0.; return split.lastValue(); } void DipoleSplittingGenerator::doGenerate(map<string,double>& variations, Energy optCutoff) { assert(!wrapping()); double res = 0.; Energy startPt = generatedSplitting.hardPt(); double optKappaCutoff = 0.0; if ( optCutoff > splittingKinematics()->IRCutoff() ) { optKappaCutoff = splittingKinematics()->ptToRandom(optCutoff, generatedSplitting.scale(), generatedSplitting.emitterX(), generatedSplitting.spectatorX(), generatedSplitting.index(), *splittingKernel()); } resetVariations(); theSplittingWeight = 1.; while (true) { try { if ( optKappaCutoff == 0.0 ) { res = theExponentialGenerator->generate(); } else { res = theExponentialGenerator->generate(optKappaCutoff); } } catch (exsample::exponential_regenerate&) { resetVariations(); theSplittingWeight = 1.; generatedSplitting.hardPt(startPt); continue; } catch (exsample::hit_and_miss_maxtry&) { throw DipoleShowerHandler::RedoShower(); } catch (exsample::selection_maxtry&) { throw DipoleShowerHandler::RedoShower(); } break; } for ( map<string,double>::const_iterator w = currentWeights.begin(); w != currentWeights.end(); ++w ) { map<string,double>::iterator v = variations.find(w->first); if ( v != variations.end() ) v->second *= w->second; else variations[w->first] = w->second; } if ( res == 0. ) { generatedSplitting.lastPt(0.0*GeV); generatedSplitting.didStopEvolving(); } else { generatedSplitting.continuesEvolving(); if ( theMCCheck ) theMCCheck->book(generatedSplitting.emitterX(), generatedSplitting.spectatorX(), generatedSplitting.scale(), startPt, generatedSplitting.lastPt(), generatedSplitting.lastZ(), 1.); } } Energy DipoleSplittingGenerator::generate(const DipoleSplittingInfo& split, map<string,double>& variations, Energy optHardPt, Energy optCutoff) { fixParameters(split,optHardPt); if ( wrapping() ) { return theOtherGenerator->generateWrapped(generatedSplitting,variations,optHardPt,optCutoff); } doGenerate(variations,optCutoff); return generatedSplitting.lastPt(); } double DipoleSplittingGenerator::sudakovExpansion(const DipoleSplittingInfo& split, Energy down,Energy fixedScale){ fixParameters(split); if ( wrapping() ) { return theOtherGenerator->wrappedSudakovExpansion( generatedSplitting, down,fixedScale); } return dosudakovExpansion( split, down,fixedScale); } double DipoleSplittingGenerator::sudakov(const DipoleSplittingInfo& split,Energy down){ fixParameters(split); if ( wrapping() ) { return theOtherGenerator->wrappedSudakov( generatedSplitting, down); } return dosudakov( split, down); } double DipoleSplittingGenerator::dosudakovExpansion(const DipoleSplittingInfo& , Energy down,Energy fixedScale){ assert(down > splittingKinematics()->IRCutoff()); double optKappaCutoffd = splittingKinematics()->ptToRandom(down, generatedSplitting.scale(), generatedSplitting.emitterX(), generatedSplitting.spectatorX(), generatedSplitting.index(), *splittingKernel()); double optKappaCutoffu = splittingKinematics()->ptToRandom(generatedSplitting.hardPt(), generatedSplitting.scale(), generatedSplitting.emitterX(), generatedSplitting.spectatorX(), generatedSplitting.index(), *splittingKernel()); pair<double,double> xSupport = generatedSplitting.splittingKinematics()->xiSupport(generatedSplitting); vector<double> RN; RN.resize(3); double res=0.; double resq=0.; double varx=10.; int k=0; generatedSplitting.setCalcFixedExpansion(true); generatedSplitting.fixedScale(fixedScale); - while ( k<5000 ){ + while ( k<1000 ){ k+=1.; RN[0]= optKappaCutoffd+(optKappaCutoffu-optKappaCutoffd)*UseRandom::rnd(); //PT RN[1]=xSupport.first+UseRandom::rnd()*(xSupport.second-xSupport.first); // RN[2]= UseRandom::rnd(); //PHI double tmp=(xSupport.second-xSupport.first)* (optKappaCutoffu-optKappaCutoffd)* evaluate(RN); res+= tmp; resq+=pow(tmp,2.); if(k%50==0.){ varx=sqrt((resq/pow(1.*k,2)-pow(res,2)/pow(1.*k,3)))/(res/(1.0*k)); if(varx<theSudakovAccuracy)break; } } generatedSplitting.setCalcFixedExpansion(false); return -res/(1.0*k); } double DipoleSplittingGenerator::dosudakov(const DipoleSplittingInfo& ,Energy down){ double optKappaCutoffd = splittingKinematics()->ptToRandom(down, generatedSplitting.scale(), generatedSplitting.emitterX(), generatedSplitting.spectatorX(), generatedSplitting.index(), *splittingKernel()); double optKappaCutoffu = splittingKinematics()->ptToRandom(generatedSplitting.hardPt(), generatedSplitting.scale(), generatedSplitting.emitterX(), generatedSplitting.spectatorX(), generatedSplitting.index(), *splittingKernel()); pair<double,double> kSupport = generatedSplitting.splittingKinematics()->kappaSupport(generatedSplitting); assert(kSupport.first==0&&kSupport.second==1); pair<double,double> xSupport = generatedSplitting.splittingKinematics()->xiSupport(generatedSplitting); vector<double> RN; RN.resize(3); double res=0.; double resq=0.; double var=10.; double varx=10.; int k=0; while (((k<40.||var>theSudakovAccuracy)&&k<50000)){ k+=1.; RN[0]= optKappaCutoffd+(optKappaCutoffu-optKappaCutoffd)*UseRandom::rnd(); //PT RN[1]=xSupport.first+UseRandom::rnd()*(xSupport.second-xSupport.first); //Z RN[2]=UseRandom::rnd(); //PHI double tmp=(xSupport.second-xSupport.first)* (optKappaCutoffu-optKappaCutoffd)* evaluate(RN); res+= tmp; resq+=pow(tmp,2.); if(k%20==0.){ varx=sqrt((resq/pow(1.*k,2)-pow(res,2)/pow(1.*k,3))); var= (exp(-(res)/(1.0*k)+varx)-exp(-(res)/(1.0*k)-varx))/exp(-res/(1.0*k)); } } return exp(-res/(1.0*k)); } double DipoleSplittingGenerator::wrappedSudakovExpansion(DipoleSplittingInfo& split, Energy down,Energy fixedScale) { assert(!wrapping()); DipoleSplittingInfo backup = generatedSplitting; generatedSplitting = split; fixParameters(split); double res=dosudakovExpansion( split, down,fixedScale); split = generatedSplitting; generatedSplitting = backup; return res; } double DipoleSplittingGenerator::wrappedSudakov(DipoleSplittingInfo& split, Energy down) { assert(!wrapping()); DipoleSplittingInfo backup = generatedSplitting; generatedSplitting = split; fixParameters(split); double res=dosudakov( split, down); split = generatedSplitting; generatedSplitting = backup; return res; } Energy DipoleSplittingGenerator::generateWrapped(DipoleSplittingInfo& split, map<string,double>& variations, Energy optHardPt, Energy optCutoff) { assert(!wrapping()); DipoleSplittingInfo backup = generatedSplitting; generatedSplitting = split; fixParameters(split,optHardPt); try { doGenerate(variations,optCutoff); } catch (...) { split = generatedSplitting; generatedSplitting = backup; throw; } Energy pt = generatedSplitting.lastPt(); split = generatedSplitting; generatedSplitting = backup; return pt; } void DipoleSplittingGenerator::completeSplitting(DipoleSplittingInfo& sp) const { pair<bool,bool> conf = sp.configuration(); sp = generatedSplitting; sp.configuration(conf); } Ptr<DipoleSplittingKernel>::tptr DipoleSplittingGenerator::splittingKernel() const { if ( wrapping() ) return theOtherGenerator->splittingKernel(); return theSplittingKernel; } Ptr<DipoleSplittingReweight>::tptr DipoleSplittingGenerator::splittingReweight() const { if ( wrapping() ) return theOtherGenerator->splittingReweight(); return theSplittingReweight; } Ptr<DipoleSplittingKinematics>::tptr DipoleSplittingGenerator::splittingKinematics() const { if ( wrapping() ) return theOtherGenerator->splittingKinematics(); return theSplittingKernel->splittingKinematics(); } void DipoleSplittingGenerator::splittingKernel(Ptr<DipoleSplittingKernel>::tptr sp) { theSplittingKernel = sp; if ( theSplittingKernel->mcCheck() ) theMCCheck = theSplittingKernel->mcCheck(); } void DipoleSplittingGenerator::splittingReweight(Ptr<DipoleSplittingReweight>::tptr sp) { theSplittingReweight = sp; } void DipoleSplittingGenerator::debugGenerator(ostream& os) const { os << "--- DipoleSplittingGenerator ---------------------------------------------------\n"; os << " generating splittings using\n" << " splittingKernel = " << splittingKernel()->name() << " splittingKinematics = " << generatedSplitting.splittingKinematics()->name() << "\n" << " to sample splittings of type:\n"; os << generatedSplitting; os << "--------------------------------------------------------------------------------\n"; } void DipoleSplittingGenerator::debugLastEvent(ostream& os) const { os << "--- DipoleSplittingGenerator ---------------------------------------------------\n"; os << " last generated event:\n"; os << generatedSplitting; os << "--------------------------------------------------------------------------------\n"; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void DipoleSplittingGenerator::persistentOutput(PersistentOStream & os) const { os << theOtherGenerator << theSplittingKernel << theSplittingReweight << theMCCheck << theDoCompensate; } void DipoleSplittingGenerator::persistentInput(PersistentIStream & is, int) { is >> theOtherGenerator >> theSplittingKernel >> theSplittingReweight >> theMCCheck >> theDoCompensate; } ClassDescription<DipoleSplittingGenerator> DipoleSplittingGenerator::initDipoleSplittingGenerator; // Definition of the static class description member. void DipoleSplittingGenerator::Init() { static ClassDocumentation<DipoleSplittingGenerator> documentation ("DipoleSplittingGenerator is used by the dipole shower " "to sample splittings from a given dipole splitting kernel."); static Reference<DipoleSplittingGenerator,DipoleSplittingKernel> interfaceSplittingKernel ("SplittingKernel", "Set the splitting kernel to sample from.", &DipoleSplittingGenerator::theSplittingKernel, false, false, true, false, false); static Reference<DipoleSplittingGenerator,DipoleSplittingReweight> interfaceSplittingReweight ("SplittingReweight", "Set the splitting reweight.", &DipoleSplittingGenerator::theSplittingReweight, false, false, true, true, false); static Reference<DipoleSplittingGenerator,DipoleMCCheck> interfaceMCCheck ("MCCheck", "[debug option] MCCheck", &DipoleSplittingGenerator::theMCCheck, false, false, true, true, false); interfaceMCCheck.rank(-1); } diff --git a/src/Merging/LEP-Merging.in b/src/Merging/LEP-Merging.in --- a/src/Merging/LEP-Merging.in +++ b/src/Merging/LEP-Merging.in @@ -1,151 +1,151 @@ # -*- ThePEG-repository -*- ################################################## ## Herwig/Merging example input file ################################################## ################################################## ## Collider type ################################################## read snippets/DipoleMerging.in read snippets/EECollider.in read snippets/MonacoSampler.in ################################################## ## Beam energy sqrt(s) ################################################## cd /Herwig/EventHandlers set EventHandler:LuminosityFunction:Energy 91.2*GeV ################################################## ## Process selection ################################################## ## Note that event generation may fail if no matching matrix element has ## been found. Coupling orders are with respect to the Born process, ## i.e. NLO QCD does not require an additional power of alphas. ## Model assumptions read Matchbox/StandardModelLike.in read Matchbox/DiagonalCKM.in ## Set the order of the couplings cd /Herwig/Merging set MergingFactory:OrderInAlphaS 0 set MergingFactory:OrderInAlphaEW 2 ## Select the process ## You may use identifiers such as p, pbar, j, l, mu+, h0 etc. -do MergingFactory:Process e- e+ -> j j [ j , j ] +do MergingFactory:Process e- e+ -> j j [ j j ] set MergingFactory:NLOProcesses 2 set Merger:MergingScale 4.*GeV set Merger:MergingScaleSmearing 0.1 cd /Herwig/MatrixElements/Matchbox/Utility insert DiagramGenerator:ExcludeInternal 0 /Herwig/Particles/gamma ## Special settings required for on-shell production of unstable particles ## enable for on-shell top production # read Matchbox/OnShellTopProduction.in ## enable for on-shell W, Z or h production # read Matchbox/OnShellWProduction.in # read Matchbox/OnShellZProduction.in # read Matchbox/OnShellHProduction.in ################################################## ## Matrix element library selection ################################################## ## Select a generic tree/loop combination or a ## specialized NLO package # read Matchbox/MadGraph-GoSam.in # read Matchbox/MadGraph-MadGraph.in # read Matchbox/MadGraph-NJet.in # read Matchbox/MadGraph-OpenLoops.in ## Uncomment this to use ggh effective couplings ## currently only supported by MadGraph-GoSam # read Matchbox/HiggsEffective.in ################################################## ## Cut selection ## See the documentation for more options ################################################## ## cuts on additional jets # read Matchbox/DefaultEEJets.in # set NJetsCut:NJetsMin 3 ################################################## ## Scale choice ## See the documentation for more options ################################################## cd /Herwig/MatrixElements/Matchbox/Scales/ set /Herwig/Merging/MergingFactory:ScaleChoice SHatScale ################################################## ## Scale uncertainties ################################################## # read Matchbox/MuDown.in # read Matchbox/MuUp.in ################################################## ## Shower scale uncertainties ################################################## # read Matchbox/MuQDown.in # read Matchbox/MuQUp.in ################################################## ## CMW - Scheme ################################################## set /Herwig/Couplings/NLOAlphaS:input_alpha_s 0.118 ### Use factor in alpha_s argument: alpha_s(q) -> alpha_s(fac*q) ### with fac=exp(-(67-3pi^2-10/3*Nf)/(33-2Nf)) read Merging/FactorCMWScheme.in ### Linear CMW multiplication: ### alpha_s(q) -> alpha_s(q)(1+K_g*alpha_s(q)/2pi ) # read Merging/LinearCMWScheme.in ################################################## ## Analyses ################################################## cd /Herwig/Analysis insert /Herwig/Generators/EventGenerator:AnalysisHandlers 0 Rivet # insert /Herwig/Generators/EventGenerator:AnalysisHandlers 0 HepMC read Merging/LEP91-Analysis.in ################################################## ## Do not apply profile scales for LEP as hard ## scale coincides with kinematic limit ################################################## set /Herwig/Shower/ShowerHandler:HardScaleProfile NULL set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleProfile NULL ################################################## ## Save the generator ################################################## do /Herwig/Merging/MergingFactory:ProductionMode cd /Herwig/Generators saverun LEP-Merging EventGenerator diff --git a/src/Merging/setupfiles/setupLEP1 b/src/Merging/setupfiles/setupLEP1 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLEP1 +++ /dev/null @@ -1,13 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 1. -set EEMergingFactory:RenormalizationScaleFactor 1. -set EEMergingFactory:FactorizationScaleFactor 1. - - -set Merger:chooseHistory 8 -set Merger:MergingScale 3.5.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLEP10 b/src/Merging/setupfiles/setupLEP10 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLEP10 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 2. -set EEMergingFactory:RenormalizationScaleFactor 1. -set EEMergingFactory:FactorizationScaleFactor 1. - -set EEMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 5.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLEP2 b/src/Merging/setupfiles/setupLEP2 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLEP2 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 1. -set EEMergingFactory:RenormalizationScaleFactor 1. -set EEMergingFactory:FactorizationScaleFactor 1. - -set EEMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 5.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLEP3 b/src/Merging/setupfiles/setupLEP3 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLEP3 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 1. -set EEMergingFactory:RenormalizationScaleFactor 2. -set EEMergingFactory:FactorizationScaleFactor 2. - -set EEMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 6.5.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLEP4 b/src/Merging/setupfiles/setupLEP4 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLEP4 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 1. -set EEMergingFactory:RenormalizationScaleFactor 2. -set EEMergingFactory:FactorizationScaleFactor 2. - -set EEMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 5.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLEP5 b/src/Merging/setupfiles/setupLEP5 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLEP5 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 1. -set EEMergingFactory:RenormalizationScaleFactor 0.5 -set EEMergingFactory:FactorizationScaleFactor 0.5 - -set EEMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 5.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLEP6 b/src/Merging/setupfiles/setupLEP6 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLEP6 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 2. -set EEMergingFactory:RenormalizationScaleFactor 1. -set EEMergingFactory:FactorizationScaleFactor 1. - -set EEMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 5.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLEP7 b/src/Merging/setupfiles/setupLEP7 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLEP7 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 0.5 -set EEMergingFactory:RenormalizationScaleFactor 1. -set EEMergingFactory:FactorizationScaleFactor 1. - -set EEMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 5.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLEP8 b/src/Merging/setupfiles/setupLEP8 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLEP8 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 2. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 2. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 1. -set EEMergingFactory:RenormalizationScaleFactor 1. -set EEMergingFactory:FactorizationScaleFactor 1. - -set EEMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 5.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLEP9 b/src/Merging/setupfiles/setupLEP9 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLEP9 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 0.5 -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 0.5 -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 1. -set EEMergingFactory:RenormalizationScaleFactor 1. -set EEMergingFactory:FactorizationScaleFactor 1. - -set EEMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 5.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLHC1 b/src/Merging/setupfiles/setupLHC1 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLHC1 +++ /dev/null @@ -1,13 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 1. -set PPMergingFactory:RenormalizationScaleFactor 1. -set PPMergingFactory:FactorizationScaleFactor 1. - - -set Merger:chooseHistory 8 -set Merger:MergingScale 10.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLHC10 b/src/Merging/setupfiles/setupLHC10 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLHC10 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 2. -set PPMergingFactory:RenormalizationScaleFactor 1. -set PPMergingFactory:FactorizationScaleFactor 1. - -set PPMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 20.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLHC2 b/src/Merging/setupfiles/setupLHC2 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLHC2 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 1. -set PPMergingFactory:RenormalizationScaleFactor 1. -set PPMergingFactory:FactorizationScaleFactor 1. - -set PPMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 20.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLHC3 b/src/Merging/setupfiles/setupLHC3 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLHC3 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 1. -set PPMergingFactory:RenormalizationScaleFactor 2. -set PPMergingFactory:FactorizationScaleFactor 2. - -set PPMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 30.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLHC4 b/src/Merging/setupfiles/setupLHC4 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLHC4 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 1. -set PPMergingFactory:RenormalizationScaleFactor 2. -set PPMergingFactory:FactorizationScaleFactor 2. - -set PPMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 20.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLHC5 b/src/Merging/setupfiles/setupLHC5 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLHC5 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 1. -set PPMergingFactory:RenormalizationScaleFactor 0.5 -set PPMergingFactory:FactorizationScaleFactor 0.5 - -set PPMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 20.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLHC6 b/src/Merging/setupfiles/setupLHC6 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLHC6 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 2. -set PPMergingFactory:RenormalizationScaleFactor 1. -set PPMergingFactory:FactorizationScaleFactor 1. - -set PPMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 20.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLHC7 b/src/Merging/setupfiles/setupLHC7 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLHC7 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 1. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 0.5 -set PPMergingFactory:RenormalizationScaleFactor 1. -set PPMergingFactory:FactorizationScaleFactor 1. - -set PPMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 20.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLHC8 b/src/Merging/setupfiles/setupLHC8 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLHC8 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 2. -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 2. -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 1. -set PPMergingFactory:RenormalizationScaleFactor 1. -set PPMergingFactory:FactorizationScaleFactor 1. - -set PPMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 20.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1. diff --git a/src/Merging/setupfiles/setupLHC9 b/src/Merging/setupfiles/setupLHC9 deleted file mode 100644 --- a/src/Merging/setupfiles/setupLHC9 +++ /dev/null @@ -1,14 +0,0 @@ -cd /Herwig/Merging - -set /Herwig/DipoleShower/DipoleShowerHandler:RenormalizationScaleFactor 0.5 -set /Herwig/DipoleShower/DipoleShowerHandler:FactorizationScaleFactor 0.5 -set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleFactor 1. -set PPMergingFactory:RenormalizationScaleFactor 1. -set PPMergingFactory:FactorizationScaleFactor 1. - -set PPMergingFactory:onlyabove 0 - -set Merger:chooseHistory 8 -set Merger:MergingScale 20.*GeV -set Merger:MergingScaleSmearing 0.1 -set Merger:gamma 1.