herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MatchboxFactory.h
1 // -*- C++ -*-
2 //
3 // MatchboxFactory.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2019 The Herwig Collaboration
5 //
6 // Herwig is licenced under version 3 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef HERWIG_MatchboxFactory_H
10 #define HERWIG_MatchboxFactory_H
11 //
12 // This is the declaration of the MatchboxFactory class.
13 //
14 
15 #include "ThePEG/Handlers/SubProcessHandler.h"
16 
17 #include "Herwig/MatrixElement/Matchbox/Base/MatchboxAmplitude.h"
18 #include "Herwig/MatrixElement/Matchbox/Utility/Tree2toNGenerator.h"
19 #include "Herwig/MatrixElement/Matchbox/Utility/ProcessData.h"
20 #include "Herwig/MatrixElement/Matchbox/Utility/MatchboxScaleChoice.h"
21 #include "Herwig/MatrixElement/Matchbox/Phasespace/MatchboxPhasespace.h"
22 #include "Herwig/MatrixElement/Matchbox/Base/MatchboxMEBase.h"
23 #include "Herwig/MatrixElement/Matchbox/Base/SubtractedME.h"
24 #include "Herwig/MatrixElement/Matchbox/MatchboxFactory.fh"
25 
26 namespace Herwig {
27 
28 using namespace ThePEG;
29 
41 
42 public:
43 
50 
54  virtual ~MatchboxFactory();
56 
57 public:
58 
62  static const Ptr<MatchboxFactory>::tptr currentFactory() {
63  assert(theCurrentFactory);
64  return theCurrentFactory;
65  }
66 
67 private:
68 
72  static Ptr<MatchboxFactory>::tptr theCurrentFactory;
73 
74 public:
75 
79  static bool isMatchboxRun() {
80  return theIsMatchboxRun();
81  }
82 
85 
89  Ptr<Tree2toNGenerator>::tptr diagramGenerator() const { return theDiagramGenerator; }
90 
94  void diagramGenerator(Ptr<Tree2toNGenerator>::ptr dg) { theDiagramGenerator = dg; }
95 
99  Ptr<ProcessData>::tptr processData() const { return theProcessData; }
100 
104  void processData(Ptr<ProcessData>::ptr pd) { theProcessData = pd; }
105 
110  unsigned int nLight() const { return theNLight; }
111 
116  void nLight(unsigned int n) { theNLight = n; }
117 
123  vector<long> nLightJetVec() const { return theNLightJetVec; }
124 
130  void nLightJetVec(long n) { theNLightJetVec.push_back(n); }
131 
137  vector<long> nHeavyJetVec() const { return theNHeavyJetVec; }
138 
144  void nHeavyJetVec(long n) { theNHeavyJetVec.push_back(n); }
145 
151  vector<long> nLightProtonVec() const { return theNLightProtonVec; }
152 
158  void nLightProtonVec(long n) { theNLightProtonVec.push_back(n); }
159 
163  unsigned int orderInAlphaS() const { return theOrderInAlphaS; }
164 
168  void orderInAlphaS(unsigned int o) { theOrderInAlphaS = o; }
169 
173  unsigned int orderInAlphaEW() const { return theOrderInAlphaEW; }
174 
178  void orderInAlphaEW(unsigned int o) { theOrderInAlphaEW = o; }
179 
183  size_t highestVirt() const {return theHighestVirtualSize;}
184 
188  void setHighestVirt(size_t n){theHighestVirtualSize=n;}
189 
193  const vector<vector<string> > getProcesses() const {return processes;}
194 
198  bool allProcesses() const { return theAllProcesses; }
199 
203  void setAllProcesses(bool on = true) { theAllProcesses = on; }
204 
208  bool bornContributions() const { return theBornContributions; }
209 
213  void setBornContributions(bool on = true) { theBornContributions = on; }
214 
218  bool virtualContributions() const { return theVirtualContributions; }
219 
223  void setVirtualContributions(bool on = true) { theVirtualContributions = on; }
224 
228  bool meCorrectionsOnly() const { return theMECorrectionsOnly; }
229 
233  void setMECorrectionsOnly(bool on = true) { theMECorrectionsOnly = on; }
234 
238  bool loopSimCorrections() const { return theLoopSimCorrections; }
239 
243  void setLoopSimCorrections(bool on = true) { theLoopSimCorrections = on; }
244 
248  bool realContributions() const { return theRealContributions; }
249 
253  void setRealContributions(bool on = true) { theRealContributions = on; }
254 
258  bool independentVirtuals() const { return theIndependentVirtuals; }
259 
263  void setIndependentVirtuals(bool on = true) { theIndependentVirtuals = on; }
264 
268  bool independentPKs() const { return theIndependentPKs; }
269 
273  void setIndependentPKs(bool on = true) { theIndependentPKs = on; }
274 
281  virtual bool subProcessGroups() const { return !showerApproximation(); }
282 
286  bool realEmissionScales() const { return theRealEmissionScales; }
287 
291  void setRealEmissionScales(bool on = true) { theRealEmissionScales = on; }
292 
296  void showerApproximation(Ptr<ShowerApproximation>::tptr app) { theShowerApproximation = app; }
297 
301  Ptr<ShowerApproximation>::tptr showerApproximation() const { return theShowerApproximation; }
302 
304 
307 
311  Ptr<MatchboxPhasespace>::tptr phasespace() const { return thePhasespace; }
312 
316  void phasespace(Ptr<MatchboxPhasespace>::ptr ps) { thePhasespace = ps; }
317 
321  void scaleChoice(Ptr<MatchboxScaleChoice>::ptr sc) { theScaleChoice = sc; }
322 
326  Ptr<MatchboxScaleChoice>::tptr scaleChoice() const { return theScaleChoice; }
327 
331  double factorizationScaleFactor() const { return theFactorizationScaleFactor; }
332 
336  void factorizationScaleFactor(double f) { theFactorizationScaleFactor = f; }
337 
341  double renormalizationScaleFactor() const { return theRenormalizationScaleFactor; }
342 
346  void renormalizationScaleFactor(double f) { theRenormalizationScaleFactor = f; }
347 
351  bool fixedCouplings() const { return theFixedCouplings; }
352 
356  void setFixedCouplings(bool on = true) { theFixedCouplings = on; }
357 
361  bool fixedQEDCouplings() const { return theFixedQEDCouplings; }
362 
366  void setFixedQEDCouplings(bool on = true) { theFixedQEDCouplings = on; }
367 
372  bool vetoScales() const { return theVetoScales; }
373 
377  void doVetoScales() { theVetoScales = true; }
378 
382  void noVetoScales() { theVetoScales = true; }
383 
385 
388 
392  const vector<Ptr<MatchboxAmplitude>::ptr>& amplitudes() const { return theAmplitudes; }
393 
397  vector<Ptr<MatchboxAmplitude>::ptr>& amplitudes() { return theAmplitudes; }
398 
400 
403 
407  const vector<Ptr<MatchboxMEBase>::ptr>& bornMEs() const { return theBornMEs; }
408 
412  vector<Ptr<MatchboxMEBase>::ptr>& bornMEs() { return theBornMEs; }
413 
417  const vector<Ptr<MatchboxMEBase>::ptr>& loopInducedMEs() const { return theLoopInducedMEs; }
418 
422  vector<Ptr<MatchboxMEBase>::ptr>& loopInducedMEs() { return theLoopInducedMEs; }
423 
427  const map<Ptr<MatchboxAmplitude>::tptr,
428  map<pair<Process,int>,int> >&
429  olpProcesses() const { return theOLPProcesses; }
430 
434  map<Ptr<MatchboxAmplitude>::tptr,
435  map<pair<Process,int>,int> >&
436  olpProcesses() { return theOLPProcesses; }
437 
441  int orderOLPProcess(const Process& p,
442  Ptr<MatchboxAmplitude>::tptr amp,
443  int type);
444 
448  const set<Ptr<MatchboxAmplitude>::tptr>& externalAmplitudes() const {
449  return theExternalAmplitudes;
450  }
451 
455  set<Ptr<MatchboxAmplitude>::tptr>& externalAmplitudes() {
456  return theExternalAmplitudes;
457  }
458 
462  const vector<Ptr<MatchboxInsertionOperator>::ptr>& virtuals() const { return theVirtuals; }
463 
467  vector<Ptr<MatchboxInsertionOperator>::ptr>& virtuals() { return theVirtuals; }
468 
472  const vector<Ptr<MatchboxMEBase>::ptr>& bornVirtualMEs() const { return theBornVirtualMEs; }
473 
477  vector<Ptr<MatchboxMEBase>::ptr>& bornVirtualMEs() { return theBornVirtualMEs; }
478 
482  const vector<Ptr<MatchboxMEBase>::ptr>& realEmissionMEs() const { return theRealEmissionMEs; }
483 
487  vector<Ptr<MatchboxMEBase>::ptr>& realEmissionMEs() { return theRealEmissionMEs; }
488 
492  int dipoleSet() const { return theDipoleSet; }
493 
497  void dipoleSet(int s) { theDipoleSet = s; }
498 
502  const vector<Ptr<SubtractedME>::ptr>& subtractedMEs() const { return theSubtractedMEs; }
503 
507  vector<Ptr<SubtractedME>::ptr>& subtractedMEs() { return theSubtractedMEs; }
508 
512  const vector<Ptr<MatchboxMEBase>::ptr>& finiteRealMEs() const { return theFiniteRealMEs; }
513 
517  vector<Ptr<MatchboxMEBase>::ptr>& finiteRealMEs() { return theFiniteRealMEs; }
518 
522  const map<cPDVector,set<Ptr<SubtractionDipole>::ptr> >& splittingDipoles() const {
523  return theSplittingDipoles;
524  }
525 
530 
534  StdXCombPtr bornXComb;
535 
539  StdXCombPtr realXComb;
540 
544  vector<StdXCombPtr> tildeXCombs;
545 
549  Ptr<SubtractionDipole>::ptr dipole;
550 
554  void print(ostream&) const;
555 
556  };
557 
562  list<SplittingChannel> getSplittingChannels(tStdXCombPtr xc) const;
563 
567  const vector<ReweightPtr>& reweighters() const { return theReweighters; }
568 
572  vector<ReweightPtr>& reweighters() { return theReweighters; }
573 
577  const vector<ReweightPtr>& preweighters() const { return thePreweighters; }
578 
582  vector<ReweightPtr>& preweighters() { return thePreweighters; }
583 
585 
588 
595  virtual bool preInitialize() const { return true; }
596 
600  void prepareME(Ptr<MatchboxMEBase>::ptr);
601 
605  virtual void productionMode();
606 
610  virtual void setup();
611 
616  size_t highestVirt(){return theHighestVirtualsize;}
617 
619 
622 
626  bool verbose() const { return theVerbose; }
627 
631  void setVerbose(bool on = true) { theVerbose = on; }
632 
636  bool initVerbose() const { return theInitVerbose || verbose(); }
637 
641  void setInitVerbose(bool on = true) { theInitVerbose = on; }
642 
646  void print(ostream&) const;
647 
651  const string& subtractionData() const { return theSubtractionData; }
652 
656  void subtractionData(const string& s) { theSubtractionData = s; }
657 
661  const int& subtractionPlotType() const { return theSubtractionPlotType; }
662 
666  void subtractionPlotType(const int& t) { theSubtractionPlotType = t; }
667 
671  const bool& subtractionScatterPlot() const { return theSubtractionScatterPlot; }
672 
676  void subtractionScatterPlot(const bool& s) { theSubtractionScatterPlot = s; }
677 
681  const string& poleData() const { return thePoleData; }
682 
686  void poleData(const string& s) { thePoleData = s; }
687 
691  bool checkPoles() const { return poleData() != ""; }
692 
694 
697 
701  const map<string,PDVector>& particleGroups() const { return theParticleGroups; }
702 
706  map<string,PDVector>& particleGroups() { return theParticleGroups; }
707 
711  bool isIncoming(cPDPtr p) const {
712  return theIncoming.find(p->id()) != theIncoming.end();
713  }
714 
718  bool spinCorrelations() const { return theSpinCorrelations; }
719 
723  void setSpinCorrelations(bool yes) { theSpinCorrelations = yes; }
724 
726 
729 
733  tSubProPtr hardTreeSubprocess() { return theHardtreeSubprocess; }
734 
738  void setHardTreeSubprocess(tSubProPtr hardTree) { theHardtreeSubprocess = hardTree; }
739 
743  int hardTreeEmitter() { return theHardtreeEmitter; }
744 
748  void setHardTreeEmitter(int emitter) { theHardtreeEmitter = emitter; }
749 
753  int hardTreeSpectator() { return theHardtreeSpectator; }
754 
758  void setHardTreeSpectator(int spectator) { theHardtreeSpectator = spectator; }
759 
761 
768  const string& buildStorage();
769 
774  const string& runStorage();
775 
780  double alphaParameter() const { return theAlphaParameter; }
781 
785  void setAlphaParameter(double a)const { theAlphaParameter = a; }
786 
788 
789 public:
790 
794  void summary(ostream&) const;
795 
796 public:
797 
804  void persistentOutput(PersistentOStream & os) const;
805 
811  void persistentInput(PersistentIStream & is, int version);
813 
820  static void Init();
821 
822 protected:
823 
830  virtual IBPtr clone() const;
831 
836  virtual IBPtr fullclone() const;
838 
839 protected:
840 
848  virtual void doinit();
849 
854  virtual void doinitrun();
856 
857 private:
858 
862  static bool& theIsMatchboxRun();
863 
867  Ptr<Tree2toNGenerator>::ptr theDiagramGenerator;
868 
872  Ptr<ProcessData>::ptr theProcessData;
873 
878  unsigned int theNLight;
879 
884  vector<long> theNLightJetVec;
885 
890  vector<long> theNHeavyJetVec;
891 
896  vector<long> theNLightProtonVec;
897 
901  unsigned int theOrderInAlphaS;
902 
906  unsigned int theOrderInAlphaEW;
907 
911  unsigned int theHighestVirtualSize;
912 
917 
922 
927 
932 
937 
941  Ptr<MatchboxPhasespace>::ptr thePhasespace;
942 
946  Ptr<MatchboxScaleChoice>::ptr theScaleChoice;
947 
952 
957 
962 
967 
973 
977  vector<Ptr<MatchboxAmplitude>::ptr> theAmplitudes;
978 
982  vector<Ptr<MatchboxMEBase>::ptr> theBornMEs;
983 
987  vector<Ptr<MatchboxMEBase>::ptr> theLoopInducedMEs;
988 
992  vector<Ptr<MatchboxInsertionOperator>::ptr> theVirtuals;
993 
997  vector<Ptr<MatchboxMEBase>::ptr> theRealEmissionMEs;
998 
1002  vector<Ptr<MatchboxMEBase>::ptr> theBornVirtualMEs;
1003 
1007  vector<Ptr<SubtractedME>::ptr> theSubtractedMEs;
1008 
1012  vector<Ptr<MatchboxMEBase>::ptr> theFiniteRealMEs;
1013 
1018 
1023 
1028 
1033 
1038 
1043 
1047  string thePoleData;
1048 
1052  string doSingleRealProcess(string);
1053 
1058  vector<vector<string> > realEmissionProcesses;
1059 
1063  map<string,PDVector> theParticleGroups;
1064 
1068  string startParticleGroup(string);
1069 
1074 
1079 
1083  string endParticleGroup(string);
1084 
1085 protected:
1086 
1090  virtual vector<string> parseProcess(string);
1091 
1092 private:
1093 
1097  string doProcess(string);
1098 
1102  string doLoopInducedProcess(string);
1103 
1107  vector<vector<string> > processes;
1108 
1112  vector<vector<string> > loopInducedProcesses;
1113 
1117  set<PDVector> makeSubProcesses(const vector<string>&) const;
1118 
1119 
1120 public:
1121 
1125  vector<Ptr<MatchboxMEBase>::ptr> makeMEs(const vector<string>&,
1126  unsigned int orderas,
1127  bool virt);
1128 
1129 
1130 private:
1134  Ptr<ShowerApproximation>::ptr theShowerApproximation;
1135 
1139  map<cPDVector,set<Ptr<SubtractionDipole>::ptr> > theSplittingDipoles;
1140 
1145 
1151 
1155  map<Ptr<MatchboxAmplitude>::tptr,map<pair<Process,int>,int> > theOLPProcesses;
1156 
1160  set<Ptr<MatchboxAmplitude>::tptr> theExternalAmplitudes;
1161 
1165  vector<Ptr<MatchboxAmplitude>::ptr> theSelectedAmplitudes;
1166 
1170  vector<Ptr<MatchboxAmplitude>::ptr> theDeselectedAmplitudes;
1171 
1175  vector<ReweightPtr> theReweighters;
1176 
1180  vector<ReweightPtr> thePreweighters;
1181 
1186 
1191 
1196 
1200  bool ranSetup;
1201 
1205  set<long> theIncoming;
1206 
1211 
1216 
1221 
1227 
1233 
1239 
1244 
1250  mutable double theAlphaParameter;
1251 
1257 
1263 
1269 
1275 
1280 
1285 
1289  string doProductionMode(string) {
1290  productionMode(); return "";
1291  }
1292 
1293 private:
1294 
1299  MatchboxFactory & operator=(const MatchboxFactory &) = delete;
1300 
1301 };
1302 
1303 }
1304 
1305 #endif /* HERWIG_MatchboxFactory_H */
void phasespace(Ptr< MatchboxPhasespace >::ptr ps)
Set the phase space generator to be used.
const vector< vector< string > > getProcesses() const
Access the processes vector.
vector< Ptr< MatchboxMEBase >::ptr > theBornMEs
The Born matrix elements to be considered.
const vector< Ptr< MatchboxMEBase >::ptr > & bornMEs() const
Return the Born matrix elements to be considered.
bool fixedQEDCouplings() const
Return true, if fixed couplings are used.
const map< cPDVector, set< Ptr< SubtractionDipole >::ptr > > & splittingDipoles() const
Return the map of Born processes to splitting dipoles.
double theAlphaParameter
The alpha parameter to be used for the dipole subtraction JB: The parameter is muatble, since we need to be able to change it while calculating the difference of IPK with and without alpha.
void processData(Ptr< ProcessData >::ptr pd)
Set the process data.
const vector< ReweightPtr > & preweighters() const
Return the preweight objects for matrix elements.
const int & subtractionPlotType() const
Return the subtraction plot type.
bool meCorrectionsOnly() const
Produce matrix element corrections, but no NLO.
bool realContributions() const
Return true, if subtracted real emission contributions should be included.
vector< Ptr< MatchboxMEBase >::ptr > & bornMEs()
Access the Born matrix elements to be considered.
bool independentPKs() const
Return true, if PK operator contributions should be treated as independent subprocesses.
double factorizationScaleFactor() const
Get the factorization scale factor.
set< Ptr< MatchboxAmplitude >::tptr > theExternalAmplitudes
Amplitudes which need external initialization.
vector< Ptr< MatchboxMEBase >::ptr > & loopInducedMEs()
Access the loop induced matrix elements to be considered.
string particleGroupName
The name of the particle group currently edited.
int hardTreeEmitter()
Return the born emitter.
StdXCombPtr realXComb
The real XComb.
int dipoleSet() const
Return, which set of dipoles should be considered.
void subtractionScatterPlot(const bool &s)
Set whether subtraction data should be plotted for all phase space points individually.
bool theQuarkFlavourDiagonal
Assume flavour diagonal quark interactions.
bool theMECorrectionsOnly
Produce matrix element corrections, but no NLO.
void setRealEmissionScales(bool on=true)
Switch on/off that subtraction scales should be caluclated from real emission kinematics.
bool theEnforceChargeConservation
Wether or not charge conservation should be enforced for the processes constructed.
vector< long > theNHeavyJetVec
Vector with the PDG ids of the heavy quark flavours, which are contained in the jet particle group...
double renormalizationScaleFactor() const
Get the renormalization scale factor.
set< long > theIncoming
PDG ids of incoming particles.
static const Ptr< MatchboxFactory >::tptr currentFactory()
Pointer to the current factory object.
Ptr< MatchboxScaleChoice >::tptr scaleChoice() const
Return the scale choice object.
bool theSpinCorrelations
True, if spin correlation information should be provided, if possible.
size_t highestVirt()
The highest multiplicity of legs having virtual contributions.
const set< Ptr< MatchboxAmplitude >::tptr > & externalAmplitudes() const
Return the amplitudes which need external initialization.
vector< Ptr< MatchboxMEBase >::ptr > theLoopInducedMEs
The loop induced matrix elements to be considered.
vector< Ptr< MatchboxMEBase >::ptr > theBornVirtualMEs
The produced NLO matrix elements.
bool theAllProcesses
Consider all processes with order in couplings specifying the maximum order.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
bool theRealEmissionScales
True, if subtraction scales should be caluclated from real emission kinematics.
string theSubtractionData
Prefix for subtraction data.
map< string, PDVector > theParticleGroups
Particle groups.
bool theIndependentVirtuals
True if virtual contributions should be treated as independent subprocesses.
bool fixedCouplings() const
Return true, if fixed couplings are used.
const vector< Ptr< MatchboxMEBase >::ptr > & loopInducedMEs() const
Return the loop induced matrix elements to be considered.
vector< Ptr< MatchboxMEBase >::ptr > & bornVirtualMEs()
Access the produced NLO matrix elements.
void nHeavyJetVec(long n)
Set the elements of the vector that contains the PDG ids of the heavy flavours, which are contained i...
map< Ptr< MatchboxAmplitude >::tptr, map< pair< Process, int >, int > > & olpProcesses()
Access the processes to be ordered from an OLP.
vector< vector< string > > realEmissionProcesses
The real emission process to be included; if empty, all possible ones will be considered.
void setIndependentVirtuals(bool on=true)
Switch on/off virtual contributions should be treated as independent subprocesses.
virtual bool subProcessGroups() const
Return true, if SubProcessGroups should be setup from this MEGroup.
ThePEG::Ptr< ParticleData >::const_pointer cPDPtr
void setAllProcesses(bool on=true)
Switch on/off inclusino off all processes up to a maximum order.
void nLightProtonVec(long n)
Set the elements of the vector that contains the PDG ids of the light flavours, which are contained i...
bool loopSimCorrections() const
Produce matrix element corrections, with LoopSim NLO.
void nLight(unsigned int n)
Set the number of light flavours, this matrix element is calculated for.
static Ptr< MatchboxFactory >::tptr theCurrentFactory
Pointer to the current factory object.
bool inProductionMode
True, if this Factory is in production mode.
bool theEnforceLeptonNumberConservation
Wether or not lepton number conservation should be enforced for the processes constructed.
vector< Ptr< MatchboxMEBase >::ptr > & finiteRealMEs()
Access the produced finite real emission elements.
void dipoleSet(int s)
Return, which set of dipoles should be considered.
void setLoopSimCorrections(bool on=true)
Switch to produce matrix element corrections, with LoopSim NLO.
double alphaParameter() const
alpha of http://arxiv.org/pdf/hep-ph/0307268v2.pdf to restrict dipole phase space ...
bool theVetoScales
True, if veto scales should be set for the real emission.
void setSpinCorrelations(bool yes)
Indicate that spin correlation information should be provided, if possible.
vector< Ptr< MatchboxAmplitude >::ptr > theDeselectedAmplitudes
Amplitudes to be deselected on clashing responsibilities.
map< string, PDVector > & particleGroups()
Access the particle groups.
unsigned int theNLight
The number of light flavours, this matrix element is calculated for.
bool initVerbose() const
Return true, if verbose while initializing.
bool spinCorrelations() const
Return true, if spin correlation information should be provided, if possible.
void doVetoScales()
Switch on setting veto scales.
bool vetoScales() const
Return true, if veto scales should be set for the real emission.
int theHardtreeEmitter
The born emitter used when calculating the hardtree in the truncated shower.
vector< long > nHeavyJetVec() const
Return the vector that contains the PDG ids of the heavy flavours, which are contained in the jet par...
int hardTreeSpectator()
Return the born spectator.
bool theFixedCouplings
Use non-running couplings.
vector< Ptr< SubtractedME >::ptr > & subtractedMEs()
Access the produced subtracted matrix elements.
const vector< Ptr< SubtractedME >::ptr > & subtractedMEs() const
Return the produced subtracted matrix elements.
const map< string, PDVector > & particleGroups() const
Return the particle groups.
vector< Ptr< MatchboxAmplitude >::ptr > theAmplitudes
The amplitudes to be considered.
Ptr< Tree2toNGenerator >::ptr theDiagramGenerator
The diagram generator.
Ptr< MatchboxPhasespace >::ptr thePhasespace
The phase space generator to be used.
Identify a splitting channel.
int theSubtractionPlotType
Set the type of plot that is to be generated for subtraction checking.
Ptr< MatchboxScaleChoice >::ptr theScaleChoice
The scale choice object.
vector< ReweightPtr > thePreweighters
Preweight objects for matrix elements.
vector< Ptr< MatchboxAmplitude >::ptr > & amplitudes()
Access the amplitudes to be considered.
bool bornContributions() const
Return true, if Born contributions should be included.
bool checkPoles() const
Return true, if cancellationn of epsilon poles should be checked.
static bool isMatchboxRun()
Flag to indicate that at least one MatchboxFactory object is in action.
bool allProcesses() const
Return true, if all processes up to a maximum order are considered.
void setHardTreeSubprocess(tSubProPtr hardTree)
Set the subprocess of the real emission for use in calculating the shower hardtree.
const vector< Ptr< MatchboxMEBase >::ptr > & bornVirtualMEs() const
Return the produced NLO matrix elements.
const string & poleData() const
Return the pole data prefix.
bool theSecondPerturbativePDF
True, if second incoming partons originate from perturbative PDF.
Process information with coupling order.
bool theInitVerbose
True, if verbose while initializing.
const vector< Ptr< MatchboxMEBase >::ptr > & finiteRealMEs() const
Return the produced finite real emission matrix elements.
vector< Ptr< MatchboxMEBase >::ptr > theFiniteRealMEs
The produced finite real emission matrix elements.
unsigned int orderInAlphaS() const
Return the order in .
vector< long > nLightProtonVec() const
Return the vector that contains the PDG ids of the light flavours, which are contained in the proton ...
const vector< Ptr< MatchboxAmplitude >::ptr > & amplitudes() const
Return the amplitudes to be considered.
int theDipoleSet
Which set of dipoles should be considered.
MatchboxFactory automatically sets up a NLO QCD calculation carried out in dipole subtraction...
void setIndependentPKs(bool on=true)
Switch on/off PK operator contributions should be treated as independent subprocesses.
PDVector particleGroup
The particle group currently edited.
Ptr< ProcessData >::tptr processData() const
Return the process data.
bool theEnforceColourConservation
Wether or not colour conservation should be enforced for the processes constructed.
bool isIncoming(cPDPtr p) const
Return true, if the given particle is incoming.
void showerApproximation(Ptr< ShowerApproximation >::tptr app)
Set the shower approximation.
void orderInAlphaEW(unsigned int o)
Set the order in .
const vector< ReweightPtr > & reweighters() const
Return the reweight objects for matrix elements.
unsigned int theOrderInAlphaEW
The order in .
void setHighestVirt(size_t n)
Set the highest.
vector< StdXCombPtr > tildeXCombs
The set of tilde XCombs to consider for the real xcomb.
void setAlphaParameter(double a) const
set the alpha parameter (needed for massive PK-Operator)
tSubProPtr theHardtreeSubprocess
The real emission subprocess used when calculating the hardtree in the truncated qtilde shower...
vector< Ptr< MatchboxMEBase >::ptr > theRealEmissionMEs
The real emission matrix elements to be considered.
vector< Ptr< MatchboxMEBase >::ptr > & realEmissionMEs()
Access the real emission matrix elements to be considered.
tSubProPtr hardTreeSubprocess()
Return the subprocess of the real emission.
void setBornContributions(bool on=true)
Switch on or off Born contributions.
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
vector< Ptr< MatchboxInsertionOperator >::ptr > & virtuals()
Access the virtual corrections to be considered.
void setFixedCouplings(bool on=true)
Switch on fixed couplings.
bool verbose() const
Return true, if verbose.
unsigned int theOrderInAlphaS
The order in .
vector< ReweightPtr > & reweighters()
Access the reweight objects for matrix elements.
const vector< Ptr< MatchboxMEBase >::ptr > & realEmissionMEs() const
Return the real emission matrix elements to be considered.
void setHardTreeEmitter(int emitter)
Set the born emitter for use in calculating the shower hardtree.
int theHighestVirtualsize
The highest multiplicity of legs having virtual contributions.
int theHardtreeSpectator
The born spectator used when calculating the hardtree in the truncated shower.
void nLightJetVec(long n)
Set the elements of the vector that contains the PDG ids of the light flavours, which are contained i...
vector< Ptr< MatchboxAmplitude >::ptr > theSelectedAmplitudes
Amplitudes to be selected on clashing responsibilities.
bool theFirstPerturbativePDF
True, if first incoming partons originate from perturbative PDF.
string thePoleData
Prefix for pole data.
void setInitVerbose(bool on=true)
Switch on diagnostic information while initializing.
bool theVirtualContributions
Switch on or off virtual contributions.
void subtractionPlotType(const int &t)
Set the subtraction plot type.
virtual bool preInitialize() const
Return true if this object needs to be initialized before all other objects (except those for which t...
vector< vector< string > > processes
The process to consider in terms of particle groups.
vector< ReweightPtr > & preweighters()
Access the preweight objects for matrix elements.
unsigned int orderInAlphaEW() const
Return the order in .
bool theFixedQEDCouplings
Use non-running couplings.
void setVerbose(bool on=true)
Switch on diagnostic information.
bool realEmissionScales() const
Return true, if subtraction scales should be caluclated from real emission kinematics.
Ptr< ProcessData >::ptr theProcessData
The process data object to be used.
set< Ptr< MatchboxAmplitude >::tptr > & externalAmplitudes()
Access the amplitudes which need external initialization.
bool theEnforceQuarkNumberConservation
Wether or not quark number conservation should be enforced for the processes constructed.
vector< vector< string > > loopInducedProcesses
The loop induced process to consider in terms of particle groups.
string doProductionMode(string)
Command for production mode.
const vector< Ptr< MatchboxInsertionOperator >::ptr > & virtuals() const
Return the virtual corrections to be considered.
vector< ReweightPtr > theReweighters
Reweight objects for matrix elements.
map< Ptr< MatchboxAmplitude >::tptr, map< pair< Process, int >, int > > theOLPProcesses
The processes to be ordered from an OLP.
void poleData(const string &s)
Set the pole data prefix.
void setFixedQEDCouplings(bool on=true)
Switch on fixed couplings.
Ptr< ShowerApproximation >::tptr showerApproximation() const
Return the shower approximation.
bool theIndependentPKs
True if PK operator contributions should be treated as independent subprocesses.
bool theBornContributions
Switch on or off Born contributions.
vector< Ptr< MatchboxInsertionOperator >::ptr > theVirtuals
The virtual corrections to be considered.
void subtractionData(const string &s)
Set the subtraction data prefix.
vector< Ptr< SubtractedME >::ptr > theSubtractedMEs
The produced subtracted matrix elements.
void setMECorrectionsOnly(bool on=true)
Switch to produce matrix element corrections, but no NLO.
-*- C++ -*-
StdXCombPtr bornXComb
The Born XComb.
bool virtualContributions() const
Return true, if virtual contributions should be included.
map< cPDVector, set< Ptr< SubtractionDipole >::ptr > > theSplittingDipoles
The map of Born processes to splitting dipoles.
bool theVerbose
Switch on or off verbosity.
vector< long > theNLightProtonVec
Vector with the PDG ids of the light quark flavours, which are contained in the proton particle group...
bool theSubtractionScatterPlot
Set whether subtraction data should be plotted for all phase space points individually.
vector< PDPtr > PDVector
void setHardTreeSpectator(int spectator)
Set the born spectator for use in calculating the shower hardtree.
void setRealContributions(bool on=true)
Switch on or off subtracted real emission contributions.
vector< long > theNLightJetVec
Vector with the PDG ids of the light quark flavours, which are contained in the jet particle group...
bool theLoopSimCorrections
Produce matrix element corrections, with LoopSim NLO.
size_t highestVirt() const
The multiplicity of legs with virtual contributions.
bool independentVirtuals() const
Return true, if virtual contributions should be treated as independent subprocesses.
bool theLeptonFlavourDiagonal
Assume flavour diagonal lepton interactions.
vector< long > nLightJetVec() const
Return the vector that contains the PDG ids of the light flavours, which are contained in the jet par...
Ptr< MatchboxPhasespace >::tptr phasespace() const
Return the phase space generator to be used.
unsigned int nLight() const
Return the number of light flavours, this matrix element is calculated for.
unsigned int theHighestVirtualSize
The maximum number of legs with virtual corrections.
void noVetoScales()
Switch off setting veto scales.
double theFactorizationScaleFactor
The factorization scale factor.
const map< Ptr< MatchboxAmplitude >::tptr, map< pair< Process, int >, int > > & olpProcesses() const
Return the processes to be ordered from an OLP.
const bool & subtractionScatterPlot() const
Return whether subtraction data should be plotted for all phase space points individually.
Ptr< ShowerApproximation >::ptr theShowerApproximation
The shower approximation.
void setVirtualContributions(bool on=true)
Switch on or off virtual contributions.
void factorizationScaleFactor(double f)
Set the factorization scale factor.
const string & subtractionData() const
Return the subtraction data prefix.
bool theRealContributions
Switch on or off subtracted real emission contributions should be included.
Ptr< SubtractionDipole >::ptr dipole
The dipole in charge of the splitting.
void scaleChoice(Ptr< MatchboxScaleChoice >::ptr sc)
Set the scale choice object.
double theRenormalizationScaleFactor
The renormalization scale factor.
Ptr< Tree2toNGenerator >::tptr diagramGenerator() const
Return the diagram generator.
void diagramGenerator(Ptr< Tree2toNGenerator >::ptr dg)
Set the diagram generator.
void orderInAlphaS(unsigned int o)
Set the order in .
void renormalizationScaleFactor(double f)
Set the renormalization scale factor.
bool ranSetup
True, if the setup has already been run.