00001 #ifndef DCHAIN_ANALYSISFUNCTION_H 00002 #define DCHAIN_ANALYSISFUNCTION_H 00003 // -*- C++ -*- 00004 // 00005 // Package: DChain 00006 // Module: AnalysisFunction 00007 // 00008 // Description: Base class for analysis functional objects 00009 // 00010 // Usage: 00011 // <usage> 00012 // 00013 // Author: Simon Patton 00014 // Created: Wed Sep 18 15:46:35 EDT 1996 00015 // $Id: DCAnalysisFunction.h,v 1.1.1.1 2009/03/03 06:06:56 maqm Exp $ 00016 // 00017 // Revision history 00018 // 00019 // $Log: DCAnalysisFunction.h,v $ 00020 // Revision 1.1.1.1 2009/03/03 06:06:56 maqm 00021 // first import of DecayChain 00022 // 00023 // Revision 1.2 2006/01/11 20:28:12 cdj 00024 // massive class renaming, addition of [] for selection and unit tests 00025 // 00026 // Revision 1.1.1.1 2000/12/18 22:16:49 cdj 00027 // imported DChain 00028 // 00029 // Revision 1.5 1998/08/27 04:55:16 sjp 00030 // added include of defn when required 00031 // 00032 // Revision 1.4 1997/08/15 21:31:47 sjp 00033 // Updated to use <package>/<file>.h include structure. 00034 // Updated to use bug flags specified in Experiement.h 00035 // 00036 // Revision 1.3 1997/01/21 20:31:18 sjp 00037 // Changed CPP flags and include because of library reorganization 00038 // 00039 // Revision 1.2 1996/12/20 21:08:13 sjp 00040 // Modified to support FILENAME_ONLY 00041 // 00042 // Revision 1.1 1996/11/04 16:49:40 sjp 00043 // New function for use in conjunction with new `Lists' 00044 // 00045 00046 // system include files 00047 00048 // user include files 00049 00050 // forward declarations 00051 00052 template < class Arg > 00053 class DCAnalysisFunction 00054 { 00055 // friend classses and functions 00056 00057 public: 00058 // constants, enums and typedefs 00059 00060 // Constructors and destructor 00061 DCAnalysisFunction(); 00062 virtual ~DCAnalysisFunction(); 00063 00064 // member functions 00065 virtual void operator()( const Arg& ) = 0 ; 00066 00067 // const member functions 00068 void operator()( const Arg& iArg ) const { 00069 const_cast<DCAnalysisFunction<Arg>*>(this)->operator()(iArg); 00070 } 00071 00072 // static member functions 00073 00074 protected: 00075 // protected member functions 00076 00077 // protected const member functions 00078 00079 private: 00080 // Constructors and destructor 00081 DCAnalysisFunction( const DCAnalysisFunction< Arg >& ) ; // stop default 00082 00083 // assignment operator(s) 00084 const DCAnalysisFunction& operator=( const DCAnalysisFunction< Arg >& ) ; // stop default 00085 00086 // private member functions 00087 00088 // private const member functions 00089 00090 // data members 00091 00092 // static data members 00093 00094 }; 00095 00096 // inline function definitions 00097 00098 #endif /* DCHAIN_ANALYSISFUNCTION_H */