|
|
|||
File indexing completed on 2026-08-06 09:24:00
0001 // -*- C++ -*- 0002 #ifndef Herwig_ExperimentalOmnesFunction_H 0003 #define Herwig_ExperimentalOmnesFunction_H 0004 // 0005 // This is the declaration of the ExperimentalOmnesFunction class. 0006 // 0007 0008 #include "OmnesFunction.h" 0009 0010 namespace Herwig { 0011 0012 using namespace ThePEG; 0013 0014 /** 0015 * Here is the documentation of the ExperimentalOmnesFunction class. 0016 * 0017 * @see \ref ExperimentalOmnesFunctionInterfaces "The interfaces" 0018 * defined for ExperimentalOmnesFunction. 0019 */ 0020 class ExperimentalOmnesFunction: public OmnesFunction { 0021 0022 public: 0023 0024 /** 0025 * The default constructor. 0026 */ 0027 ExperimentalOmnesFunction(); 0028 0029 /** 0030 * Method to return the function value 0031 */ 0032 virtual Complex D(Energy2 s) const; 0033 0034 /** 0035 * Output the setup information for the particle database 0036 * @param os The stream to output the information to 0037 * @param header Whether or not to output the information for MySQL 0038 * @param create Whether or not to add a statement creating the object 0039 */ 0040 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; 0041 0042 public: 0043 0044 /** 0045 * Integrand for the Omnes function 0046 */ 0047 InvEnergy4 operator ()(Energy2 xpoint) const { 0048 InvEnergy4 output = InvEnergy4(); 0049 Energy q(sqrt(xpoint)); 0050 if(abs(xpoint-s_)>sqr(epsCut_)) 0051 output= (*interpolator_)(q)/xpoint/(xpoint-s_); 0052 return output; 0053 } 0054 /** Return type for the GaussianIntegrator */ 0055 typedef InvEnergy4 ValType; 0056 /** Argument type for the GaussianIntegrator */ 0057 typedef Energy2 ArgType; 0058 0059 public: 0060 0061 /** @name Functions used by the persistent I/O system. */ 0062 //@{ 0063 /** 0064 * Function used to write out object persistently. 0065 * @param os the persistent output stream written to. 0066 */ 0067 void persistentOutput(PersistentOStream & os) const; 0068 0069 /** 0070 * Function used to read in object persistently. 0071 * @param is the persistent input stream read from. 0072 * @param version the version number of the object when written. 0073 */ 0074 void persistentInput(PersistentIStream & is, int version); 0075 //@} 0076 0077 /** 0078 * The standard Init function used to initialize the interfaces. 0079 * Called exactly once for each class by the class description system 0080 * before the main function starts or 0081 * when this class is dynamically loaded. 0082 */ 0083 static void Init(); 0084 0085 protected: 0086 0087 /** @name Clone Methods. */ 0088 //@{ 0089 /** 0090 * Make a simple clone of this object. 0091 * @return a pointer to the new object. 0092 */ 0093 virtual IBPtr clone() const; 0094 0095 /** Make a clone of this object, possibly modifying the cloned object 0096 * to make it sane. 0097 * @return a pointer to the new object. 0098 */ 0099 virtual IBPtr fullclone() const; 0100 //@} 0101 0102 protected: 0103 0104 /** @name Standard Interfaced functions. */ 0105 //@{ 0106 /** 0107 * Initialize this object after the setup phase before saving an 0108 * EventGenerator to disk. 0109 * @throws InitException if object could not be initialized properly. 0110 */ 0111 virtual void doinit(); 0112 //@} 0113 0114 private: 0115 0116 /** 0117 * The assignment operator is private and must never be called. 0118 * In fact, it should not even be implemented. 0119 */ 0120 ExperimentalOmnesFunction & operator=(const ExperimentalOmnesFunction &) = delete; 0121 0122 private: 0123 0124 /** 0125 * Energy values for the experimental data on the phase shift 0126 */ 0127 vector<Energy> energy_; 0128 0129 /** 0130 * Experimental values of the phase shift 0131 */ 0132 vector<double> phase_; 0133 0134 /** 0135 * Energy values for the interpolation table for the Omnes function. 0136 */ 0137 vector<Energy> omnesEnergy_; 0138 0139 /** 0140 * Real part of the Omnes function for the interpolation table 0141 */ 0142 vector<double> omnesFunctionRe_; 0143 0144 /** 0145 * Imaginary part of the Omnes function for the interpolation table 0146 */ 0147 vector<double> omnesFunctionIm_; 0148 0149 /** 0150 * set up of the interpolation table 0151 */ 0152 bool initialize_; 0153 0154 /** 0155 * Number of points for the intepolation of the experimental Omnes function 0156 */ 0157 unsigned int nPoints_; 0158 0159 /** 0160 * Interpolators for the experimental Omnes function. 0161 */ 0162 //@{ 0163 /** 0164 * The interpolator for the real part 0165 */ 0166 mutable Interpolator<double,Energy>::Ptr oRe_; 0167 0168 /** 0169 * The interpolator for the imaginary part 0170 */ 0171 mutable Interpolator<double,Energy>::Ptr oIm_; 0172 //@} 0173 0174 /** 0175 * Cut-off parameter for the integral of the experimental function 0176 */ 0177 Energy epsCut_; 0178 0179 /** 0180 * Size of the vectors for the experimental data 0181 */ 0182 unsigned int nsizea_; 0183 0184 /** 0185 * Size of the vectors for the interpolation tables 0186 */ 0187 unsigned int nsizeb_; 0188 0189 /** 0190 * Interpolator and scale for the Omes function integral 0191 */ 0192 //@ 0193 /** 0194 * The interpolator 0195 */ 0196 Interpolator<double,Energy>::Ptr interpolator_; 0197 0198 /** 0199 * The scale 0200 */ 0201 Energy2 s_; 0202 //@} 0203 0204 }; 0205 0206 } 0207 0208 #endif /* Herwig_ExperimentalOmnesFunction_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|