File indexing completed on 2025-01-18 09:54:35
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef _PuncturedSmearedExp_h_
0012 #define _PuncturedSmearedExp_h_
0013 #include "CLHEP/GenericFunctions/AbsFunction.hh"
0014 #include "CLHEP/GenericFunctions/Parameter.hh"
0015
0016 namespace Genfun {
0017
0018
0019
0020
0021
0022 class PuncturedSmearedExp: public AbsFunction {
0023
0024 FUNCTION_OBJECT_DEF(PuncturedSmearedExp)
0025
0026 public:
0027
0028
0029 PuncturedSmearedExp();
0030
0031
0032 PuncturedSmearedExp(const PuncturedSmearedExp &right);
0033
0034
0035 virtual ~PuncturedSmearedExp();
0036
0037
0038 virtual double operator ()(double argument) const override;
0039 virtual double operator ()(const Argument & a) const override {return operator() (a[0]);}
0040
0041
0042 Parameter & lifetime();
0043 const Parameter & lifetime() const;
0044
0045
0046 Parameter & sigma();
0047 const Parameter & sigma() const;
0048
0049
0050 void puncture(double min, double max);
0051
0052
0053 Parameter & min(unsigned int i);
0054 Parameter & max(unsigned int i);
0055 const Parameter & min(unsigned int i) const;
0056 const Parameter & max(unsigned int i) const;
0057
0058
0059 private:
0060
0061
0062 double pow(double x, int n) const ;
0063 double erfc(double x) const ;
0064
0065
0066 const PuncturedSmearedExp & operator=(const PuncturedSmearedExp &right);
0067
0068 Parameter _lifetime;
0069 Parameter _sigma;
0070 std::vector<Parameter> _punctures;
0071
0072 };
0073 }
0074 #endif