/usr/include/ThePEG/PDT/Matcher.h is in libthepeg-dev 1.8.0-3build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | // -*- C++ -*-
//
// Matcher.h is a part of ThePEG - Toolkit for HEP Event Generation
// Copyright (C) 1999-2011 Leif Lonnblad
//
// ThePEG is licenced under version 2 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
#ifndef ThePEG_Matcher_H
#define ThePEG_Matcher_H
// This is the declaration of the Matcher class.
#include "MatcherBase.h"
namespace ThePEG {
/**
* Matcher is a templated class inheriting from MatcherBase. It is
* used to conveniently create interfaced classes inheriting from
* MatcherBase giving a class with a static T::Check() method as
* template argument.
*
* @see MatcherBase
*
*/
template <class T>
class Matcher: public MatcherBase {
public:
/** @name Standard constructors and destructors. */
//@{
/**
* Destructor.
*/
virtual ~Matcher();
//@}
/** @name Special clone and create functions used by the Repository. */
//@{
/**
* Create and clone Matcher objects.
*/
static PMPtr Create(const string & newName, string antiName);
/**
* Create and clone Matcher objects.
*/
virtual PMPtr pmclone() const;
//@}
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;
//@}
/** @name Virtual and static versions of the check functions. */
//@{
/**
* Virtual function overriding the one in MatcherBase. Simply calls
* Check().
*/
virtual bool check(const ParticleData & pd) const { return T::Check(pd); }
/**
* Static check function. Return true if a given particle type, \a
* pd, is matched by this Matcher, ie. if the T::Check() function of
* the template argument returns true.
*/
static bool Check(const ParticleData & pd) { return T::Check(pd); }
//@}
protected:
/**
* Set antipartner.
*/
static void setCC(tPMPtr pm, tPMPtr apm) { MatcherBase::setCC(pm,apm); }
private:
/**
* The static object used to initialize the description of this class.
* Indicates that this is a concrete class without persistent data.
*/
static NoPIOClassDescription< Matcher<T> > initMatcher;
};
/**
* MatcherType is an empty non-polymorphic base class for all matcher
* classes to be used as template argument to Matcher.
*/
struct MatcherType {};
/** @cond TRAITSPECIALIZATIONS */
/** This partial template specialization informs ThePEG about the base
* classes of Matcher<T>. */
template <typename T>
struct BaseClassTrait<Matcher<T>,1>: public ClassTraitsType {
/** Typedef of the first base class of Matcher<T>. */
typedef MatcherBase NthBase;
};
/** This partial template specialization informs ThePEG about the name
* of the Matcher<T> class. Note that the template argument class is
* assumed to have a specialization of ClassTraits of its own.*/
template <typename T>
struct ClassTraits< Matcher<T> >: public ClassTraitsBase< Matcher<T> > {
/** Return a platform-independent class name */
static string className() {
return "ThePEG::Matcher<" + T::className() + ">";
}
};
/** @endcond */
}
#ifndef ThePEG_TEMPLATES_IN_CC_FILE
#include "Matcher.tcc"
#endif
#endif /* ThePEG_Matcher_H */
|