Warning, /include/ThePEG/PDT/Matcher.tcc is written in an unsupported language. File is not indexed.
0001 // -*- C++ -*-
0002 //
0003 // Matcher.tcc is a part of ThePEG - Toolkit for HEP Event Generation
0004 // Copyright (C) 1999-2019 Leif Lonnblad
0005 //
0006 // ThePEG is licenced under version 3 of the GPL, see COPYING for details.
0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
0008 //
0009 //
0010 // This is the implementation of the non-inlined templated member
0011 // functions of the Matcher class.
0012 //
0013
0014 namespace ThePEG {
0015
0016 template <class T>
0017 Matcher<T>::~Matcher() {
0018 if( !initMatcher.check() ) assert(false);
0019 }
0020
0021 template <class T>
0022 NoPIOClassDescription< Matcher<T> > Matcher<T>::initMatcher;
0023
0024 template <class T>
0025 PMPtr Matcher<T>::Create(const string & newName, string antiName) {
0026 typedef typename Ptr< Matcher<T> >::pointer MatcherPtr;
0027 typedef typename Ptr< Matcher<typename T::CC> >::pointer AMatcherPtr;
0028 PMPtr pm = new_ptr<MatcherPtr>();
0029 registerRepository(pm, newName);
0030 if ( typeid(T) == typeid(typename T::CC) ) return pm;
0031 if ( antiName.empty() ) antiName = newName + "~";
0032 PMPtr apm = new_ptr<AMatcherPtr>();
0033 setCC(pm, apm);
0034 registerRepository(apm, antiName);
0035 return pm;
0036 }
0037
0038 template <class T>
0039 PMPtr Matcher<T>::pmclone() const {
0040 return new_ptr(*this);
0041 }
0042
0043 template <class T>
0044 IBPtr Matcher<T>::clone() const {
0045 return pmclone();
0046 }
0047
0048 template <class T>
0049 IBPtr Matcher<T>::fullclone() const {
0050 PMPtr pm = pmclone();
0051 registerRepository(pm);
0052 if ( !CC() ) return pm;
0053 PMPtr apm = CC()->pmclone();
0054 setCC(pm, apm);
0055 registerRepository(apm);
0056 return pm;
0057 }
0058
0059 }
0060