/usr/include/CLHEP/GenericFunctions/Psi2Hydrogen.icc is in libclhep-dev 2.1.4.1-1.2.
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 | // -*- C++ -*-
// $Id:
#include "CLHEP/GenericFunctions/Psi2Hydrogen.hh"
#include "CLHEP/GenericFunctions/AssociatedLegendre.hh"
#include "CLHEP/GenericFunctions/AssociatedLaguerre.hh"
#include "CLHEP/GenericFunctions/Power.hh"
#include "CLHEP/GenericFunctions/Exponential.hh"
#include "CLHEP/GenericFunctions/FixedConstant.hh"
#include "CLHEP/GenericFunctions/Psi2Hydrogen.hh"
#include "CLHEP/GenericFunctions/Variable.hh"
#include "CLHEP/GenericFunctions/Power.hh"
#include <assert.h>
#include <cmath> // for pow()
namespace Genfun {
FUNCTION_OBJECT_IMP(Psi2Hydrogen)
// This is the product n (n-1) (n-1)...
inline double factorial (int n) {
if (n<=1) return 1.0;
else return n*factorial(n-1);
}
//
inline
Psi2Hydrogen::Psi2Hydrogen(unsigned int n, unsigned int l, unsigned int m):
_n(n),
_l(l),
_m(m)
{
assert(m<=l);
create();
}
inline
Psi2Hydrogen::~Psi2Hydrogen() {
delete _function;
}
inline
Psi2Hydrogen::Psi2Hydrogen(const Psi2Hydrogen & right):
_n(right._n),
_l(right._l),
_m(right._m)
{
create();
}
inline
double Psi2Hydrogen::operator() (const Argument & a) const {
assert (a.dimension()==3);
return (*_function)(a);
}
inline
double Psi2Hydrogen::operator() (double x) const {
std::cerr
<< "Warning. Psi2Hydrogen called with scalar argument"
<< std::endl;
assert(0);
return 0;
}
inline
unsigned int Psi2Hydrogen::n() const {
return _n;
}
inline
unsigned int Psi2Hydrogen::l() const {
return _l;
}
inline
unsigned int Psi2Hydrogen::m() const {
return _m;
}
inline
void Psi2Hydrogen::create() {
FixedConstant I(1.0);
Variable r;
double asq = pow(2.0/_n, 3.0)*factorial(_n-_l-1)/(2.0*_n*factorial(_n+_l));
GENFUNCTION ar = (2.0/_n)*r;
AssociatedLegendre P(_l, _m);
AssociatedLaguerre L(_n-_l-1, 2*_l+1);
Exponential exp;
Power pow2L(2*_l);
_function = (asq*exp(ar)*pow2L(ar)*L(ar)*L(ar)%(P*P)%(I*I)).clone();
}
}
|