Back to home page

EIC code displayed by LXR

 
 

    


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