Page MenuHomeHEPForge

No OneTemporary

diff --git a/MatrixElement/Matchbox/Scales/Makefile.am b/MatrixElement/Matchbox/Scales/Makefile.am
--- a/MatrixElement/Matchbox/Scales/Makefile.am
+++ b/MatrixElement/Matchbox/Scales/Makefile.am
@@ -1,28 +1,32 @@
pkglib_LTLIBRARIES = HwMatchboxScales.la
HwMatchboxScales_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:2:0
HwMatchboxScales_la_SOURCES = \
MatchboxHtScale.h \
MatchboxLeptonMassScale.h \
MatchboxLeptonPtScale.h \
MatchboxParticlePtScale.h \
MatchboxPtScale.h \
MatchboxHtScale.cc \
MatchboxLeptonMassScale.cc \
MatchboxLeptonPtScale.cc \
MatchboxParticlePtScale.cc \
MatchboxPtScale.cc \
MatchboxSHatScale.h \
MatchboxSHatScale.cc \
MatchboxTopMassScale.h \
MatchboxTopMassScale.cc \
MatchboxTopMTScale.h \
MatchboxTopMTScale.cc \
MatchboxTopSumMTScale.h \
MatchboxTopSumMTScale.cc \
MatchboxTopMinMTScale.h \
MatchboxTopMinMTScale.cc \
MatchboxTriVecScales.h \
-MatchboxTriVecScales.cc
+MatchboxTriVecScales.cc \
+MatchboxTopLinearSumMTScale.h \
+MatchboxTopLinearSumMTScale.cc \
+MatchboxTopIndividualMTScale.h \
+MatchboxTopIndividualMTScale.cc
diff --git a/MatrixElement/Matchbox/Scales/MatchboxTopIndividualMTScale.cc b/MatrixElement/Matchbox/Scales/MatchboxTopIndividualMTScale.cc
new file mode 100644
--- /dev/null
+++ b/MatrixElement/Matchbox/Scales/MatchboxTopIndividualMTScale.cc
@@ -0,0 +1,110 @@
+// -*- C++ -*-
+//
+// MatchboxTopIndividualMTScale.cc is a part of Herwig - A multi-purpose Monte Carlo event generator
+// Copyright (C) 2002-2012 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 MatchboxTopIndividualMTScale class.
+//
+
+#include "MatchboxTopIndividualMTScale.h"
+#include "ThePEG/Interface/ClassDocumentation.h"
+#include "ThePEG/Interface/Parameter.h"
+#include "ThePEG/Interface/Reference.h"
+#include "ThePEG/EventRecord/Particle.h"
+#include "ThePEG/Repository/UseRandom.h"
+#include "ThePEG/Repository/EventGenerator.h"
+#include "ThePEG/Utilities/DescribeClass.h"
+#include "Herwig/MatrixElement/Matchbox/Base/MatchboxMEBase.h"
+
+#include "ThePEG/Persistency/PersistentOStream.h"
+#include "ThePEG/Persistency/PersistentIStream.h"
+
+using namespace Herwig;
+
+MatchboxTopIndividualMTScale::MatchboxTopIndividualMTScale() :
+theFactor(1.) {}
+
+MatchboxTopIndividualMTScale::~MatchboxTopIndividualMTScale() {}
+
+IBPtr MatchboxTopIndividualMTScale::clone() const {
+ return new_ptr(*this);
+}
+
+IBPtr MatchboxTopIndividualMTScale::fullclone() const {
+ return new_ptr(*this);
+}
+
+Energy2 MatchboxTopIndividualMTScale::renormalizationScale() const {
+
+ size_t k = 2;
+ int top = -1;
+ int antitop = -1;
+
+ while ( (top == -1 || antitop == -1) && k < mePartonData().size() ){
+ if ( mePartonData()[k]->id() == 6 ) {
+ if ( top < 0 )
+ top = k;
+ else
+ assert(false);
+ } else if ( mePartonData()[k]->id() == -6 ) {
+ if ( antitop < 0 )
+ antitop = k;
+ else
+ assert(false);
+ }
+ k++;
+ }
+
+ if ( top < 2 || antitop < 2 ){
+ throw Exception() << "MatchboxTopIndividualMTScale: Could not find a top-antitop-pair in the final state!\n"
+ << Exception::runerror;
+ }
+
+ // Not using .mt() as this is signed and not what we want.
+ Energy topMt = sqrt(meMomenta()[top].mt2());
+ return sqr(topMt*theFactor);
+
+}
+
+Energy2 MatchboxTopIndividualMTScale::factorizationScale() const {
+ return(renormalizationScale());
+}
+
+// If needed, insert default implementations of virtual function defined
+// in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs).
+
+
+void MatchboxTopIndividualMTScale::persistentOutput(PersistentOStream & os) const {
+os << theFactor;
+}
+
+void MatchboxTopIndividualMTScale::persistentInput(PersistentIStream & is, int) {
+is >> theFactor;
+}
+
+// *** Attention *** The following static variable is needed for the type
+// description system in ThePEG. Please check that the template arguments
+// are correct (the class and its base class), and that the constructor
+// arguments are correct (the class name and the name of the dynamically
+// loadable library where the class implementation can be found).
+DescribeClass<MatchboxTopIndividualMTScale,MatchboxScaleChoice>
+ describeHerwigMatchboxTopIndividualMTScale("Herwig::MatchboxTopIndividualMTScale", "HwMatchboxScales.so");
+
+void MatchboxTopIndividualMTScale::Init() {
+
+ static ClassDocumentation<MatchboxTopIndividualMTScale> documentation
+ ("MatchboxTopIndividualMTScale implements the linear sum of the transverse masses of the top and antitop quark as a scale choice.");
+
+ static Parameter<MatchboxTopIndividualMTScale,double> interfaceMultiplicationFactor
+ ("MultiplicationFactor",
+ "Set a multiplicative factor to include in the scale choice definition.",
+ &MatchboxTopIndividualMTScale::theFactor, 1., 0., 0,
+ false, false, Interface::lowerlim);
+
+}
+
diff --git a/MatrixElement/Matchbox/Scales/MatchboxTopIndividualMTScale.h b/MatrixElement/Matchbox/Scales/MatchboxTopIndividualMTScale.h
new file mode 100644
--- /dev/null
+++ b/MatrixElement/Matchbox/Scales/MatchboxTopIndividualMTScale.h
@@ -0,0 +1,125 @@
+// -*- C++ -*-
+//
+// MatchboxTopIndividualMTScale.h is a part of Herwig - A multi-purpose Monte Carlo event generator
+// Copyright (C) 2002-2014 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.
+//
+#ifndef Herwig_MatchboxTopIndividualMTScale_H
+#define Herwig_MatchboxTopIndividualMTScale_H
+//
+// This is the declaration of the MatchboxTopIndividualMTScale class.
+//
+
+#include "Herwig/MatrixElement/Matchbox/Utility/MatchboxScaleChoice.h"
+
+namespace Herwig {
+
+using namespace ThePEG;
+
+/**
+ * \ingroup Matchbox
+ * \author Daniel Rauch
+ *
+ * \brief MatchboxTopIndividualMTScale implements a scale choice related to the quadratic
+ * sum of transverse masses of a top and antitop quark.
+ *
+ */
+class MatchboxTopIndividualMTScale: public MatchboxScaleChoice {
+
+public:
+
+ /** @name Standard constructors and destructors. */
+ //@{
+ /**
+ * The default constructor.
+ */
+ MatchboxTopIndividualMTScale();
+
+ /**
+ * The destructor.
+ */
+ virtual ~MatchboxTopIndividualMTScale();
+ //@}
+
+public:
+
+ /**
+ * Return the renormalization scale.
+ */
+ virtual Energy2 renormalizationScale() const;
+
+ /**
+ * Return the factorization scale.
+ */
+ virtual Energy2 factorizationScale() const;
+
+public:
+
+ /** @name Functions used by the persistent I/O system. */
+ //@{
+ /**
+ * Function used to write out object persistently.
+ * @param os the persistent output stream written to.
+ */
+ void persistentOutput(PersistentOStream & os) const;
+
+ /**
+ * Function used to read in object persistently.
+ * @param is the persistent input stream read from.
+ * @param version the version number of the object when written.
+ */
+ void persistentInput(PersistentIStream & is, int version);
+ //@}
+
+ /**
+ * The standard Init function used to initialize the interfaces.
+ * Called exactly once for each class by the class description system
+ * before the main function starts or
+ * when this class is dynamically loaded.
+ */
+ static void Init();
+
+protected:
+
+ /** @name Clone Methods. */
+ //@{
+ /**
+ * Make a simple clone of this object.
+ * @return a pointer to the new object.
+ */
+ virtual IBPtr clone() const;
+
+ /** Make a clone of this object, possibly modifying the cloned object
+ * to make it sane.
+ * @return a pointer to the new object.
+ */
+ virtual IBPtr fullclone() const;
+ //@}
+
+private:
+
+
+// If needed, insert declarations of virtual function defined in the
+// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
+
+
+private:
+
+ /**
+ * Multiplicative factor for the scale definition
+ **/
+ double theFactor;
+
+ /**
+ * The assignment operator is private and must never be called.
+ * In fact, it should not even be implemented.
+ */
+ MatchboxTopIndividualMTScale & operator=(const MatchboxTopIndividualMTScale &);
+
+};
+
+}
+
+#endif /* Herwig_MatchboxTopIndividualMTScale_H */
diff --git a/MatrixElement/Matchbox/Scales/MatchboxTopLinearSumMTScale.cc b/MatrixElement/Matchbox/Scales/MatchboxTopLinearSumMTScale.cc
new file mode 100644
--- /dev/null
+++ b/MatrixElement/Matchbox/Scales/MatchboxTopLinearSumMTScale.cc
@@ -0,0 +1,110 @@
+// -*- C++ -*-
+//
+// MatchboxTopLinearSumMTScale.cc is a part of Herwig - A multi-purpose Monte Carlo event generator
+// Copyright (C) 2002-2012 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 MatchboxTopLinearSumMTScale class.
+//
+
+#include "MatchboxTopLinearSumMTScale.h"
+#include "ThePEG/Interface/ClassDocumentation.h"
+#include "ThePEG/Interface/Parameter.h"
+#include "ThePEG/Interface/Reference.h"
+#include "ThePEG/EventRecord/Particle.h"
+#include "ThePEG/Repository/UseRandom.h"
+#include "ThePEG/Repository/EventGenerator.h"
+#include "ThePEG/Utilities/DescribeClass.h"
+#include "Herwig/MatrixElement/Matchbox/Base/MatchboxMEBase.h"
+
+#include "ThePEG/Persistency/PersistentOStream.h"
+#include "ThePEG/Persistency/PersistentIStream.h"
+
+using namespace Herwig;
+
+MatchboxTopLinearSumMTScale::MatchboxTopLinearSumMTScale() :
+theFactor(1.) {}
+
+MatchboxTopLinearSumMTScale::~MatchboxTopLinearSumMTScale() {}
+
+IBPtr MatchboxTopLinearSumMTScale::clone() const {
+ return new_ptr(*this);
+}
+
+IBPtr MatchboxTopLinearSumMTScale::fullclone() const {
+ return new_ptr(*this);
+}
+
+Energy2 MatchboxTopLinearSumMTScale::renormalizationScale() const {
+
+ size_t k = 2;
+ int top = -1;
+ int antitop = -1;
+
+ while ( (top == -1 || antitop == -1) && k < mePartonData().size() ){
+ if ( mePartonData()[k]->id() == 6 ) {
+ if ( top < 0 )
+ top = k;
+ else
+ assert(false);
+ } else if ( mePartonData()[k]->id() == -6 ) {
+ if ( antitop < 0 )
+ antitop = k;
+ else
+ assert(false);
+ }
+ k++;
+ }
+
+ if ( top < 2 || antitop < 2 ){
+ throw Exception() << "MatchboxTopLinearSumMTScale: Could not find a top-antitop-pair in the final state!\n"
+ << Exception::runerror;
+ }
+
+ // Not using .mt() as this is signed and not what we want.
+ Energy sum = sqrt(meMomenta()[top].mt2()) + sqrt(meMomenta()[antitop].mt2());
+ return sqr(sum*theFactor);
+
+}
+
+Energy2 MatchboxTopLinearSumMTScale::factorizationScale() const {
+ return(renormalizationScale());
+}
+
+// If needed, insert default implementations of virtual function defined
+// in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs).
+
+
+void MatchboxTopLinearSumMTScale::persistentOutput(PersistentOStream & os) const {
+os << theFactor;
+}
+
+void MatchboxTopLinearSumMTScale::persistentInput(PersistentIStream & is, int) {
+is >> theFactor;
+}
+
+// *** Attention *** The following static variable is needed for the type
+// description system in ThePEG. Please check that the template arguments
+// are correct (the class and its base class), and that the constructor
+// arguments are correct (the class name and the name of the dynamically
+// loadable library where the class implementation can be found).
+DescribeClass<MatchboxTopLinearSumMTScale,MatchboxScaleChoice>
+ describeHerwigMatchboxTopLinearSumMTScale("Herwig::MatchboxTopLinearSumMTScale", "HwMatchboxScales.so");
+
+void MatchboxTopLinearSumMTScale::Init() {
+
+ static ClassDocumentation<MatchboxTopLinearSumMTScale> documentation
+ ("MatchboxTopLinearSumMTScale implements the linear sum of the transverse masses of the top and antitop quark as a scale choice.");
+
+ static Parameter<MatchboxTopLinearSumMTScale,double> interfaceMultiplicationFactor
+ ("MultiplicationFactor",
+ "Set a multiplicative factor to include in the scale choice definition.",
+ &MatchboxTopLinearSumMTScale::theFactor, 1., 0., 0,
+ false, false, Interface::lowerlim);
+
+}
+
diff --git a/MatrixElement/Matchbox/Scales/MatchboxTopLinearSumMTScale.h b/MatrixElement/Matchbox/Scales/MatchboxTopLinearSumMTScale.h
new file mode 100644
--- /dev/null
+++ b/MatrixElement/Matchbox/Scales/MatchboxTopLinearSumMTScale.h
@@ -0,0 +1,125 @@
+// -*- C++ -*-
+//
+// MatchboxTopLinearSumMTScale.h is a part of Herwig - A multi-purpose Monte Carlo event generator
+// Copyright (C) 2002-2014 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.
+//
+#ifndef Herwig_MatchboxTopLinearSumMTScale_H
+#define Herwig_MatchboxTopLinearSumMTScale_H
+//
+// This is the declaration of the MatchboxTopLinearSumMTScale class.
+//
+
+#include "Herwig/MatrixElement/Matchbox/Utility/MatchboxScaleChoice.h"
+
+namespace Herwig {
+
+using namespace ThePEG;
+
+/**
+ * \ingroup Matchbox
+ * \author Daniel Rauch
+ *
+ * \brief MatchboxTopLinearSumMTScale implements a scale choice related to the linear
+ * sum of transverse masses of a top and antitop quark.
+ *
+ */
+class MatchboxTopLinearSumMTScale: public MatchboxScaleChoice {
+
+public:
+
+ /** @name Standard constructors and destructors. */
+ //@{
+ /**
+ * The default constructor.
+ */
+ MatchboxTopLinearSumMTScale();
+
+ /**
+ * The destructor.
+ */
+ virtual ~MatchboxTopLinearSumMTScale();
+ //@}
+
+public:
+
+ /**
+ * Return the renormalization scale.
+ */
+ virtual Energy2 renormalizationScale() const;
+
+ /**
+ * Return the factorization scale.
+ */
+ virtual Energy2 factorizationScale() const;
+
+public:
+
+ /** @name Functions used by the persistent I/O system. */
+ //@{
+ /**
+ * Function used to write out object persistently.
+ * @param os the persistent output stream written to.
+ */
+ void persistentOutput(PersistentOStream & os) const;
+
+ /**
+ * Function used to read in object persistently.
+ * @param is the persistent input stream read from.
+ * @param version the version number of the object when written.
+ */
+ void persistentInput(PersistentIStream & is, int version);
+ //@}
+
+ /**
+ * The standard Init function used to initialize the interfaces.
+ * Called exactly once for each class by the class description system
+ * before the main function starts or
+ * when this class is dynamically loaded.
+ */
+ static void Init();
+
+protected:
+
+ /** @name Clone Methods. */
+ //@{
+ /**
+ * Make a simple clone of this object.
+ * @return a pointer to the new object.
+ */
+ virtual IBPtr clone() const;
+
+ /** Make a clone of this object, possibly modifying the cloned object
+ * to make it sane.
+ * @return a pointer to the new object.
+ */
+ virtual IBPtr fullclone() const;
+ //@}
+
+private:
+
+
+// If needed, insert declarations of virtual function defined in the
+// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
+
+
+private:
+
+ /**
+ * Multiplicative factor for the scale definition
+ **/
+ double theFactor;
+
+ /**
+ * The assignment operator is private and must never be called.
+ * In fact, it should not even be implemented.
+ */
+ MatchboxTopLinearSumMTScale & operator=(const MatchboxTopLinearSumMTScale &);
+
+};
+
+}
+
+#endif /* Herwig_MatchboxTopLinearSumMTScale_H */

File Metadata

Mime Type
text/x-diff
Expires
Tue, Nov 19, 8:52 PM (1 d, 2 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3798458
Default Alt Text
(15 KB)

Event Timeline