thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
HardSphereYukawaFormFactor.h
1// -*- C++ -*-
2#ifndef ThePEG_HardSphereYukawaFormFactor_H
3#define ThePEG_HardSphereYukawaFormFactor_H
4//
5// This is the declaration of the HardSphereYukawaFormFactor class.
6//
7
8#include "NucleonFormFactor.h"
9#include "ThePEG/PDT/ParticleData.h"
10
11namespace ThePEG {
12
20
21public:
22
26 HardSphereYukawaFormFactor() : yukawaRange_(0.7*femtometer), aFact_(1.2*femtometer)
27 {}
28
32 Complex formFactor(tcPDPtr nucleon, Energy2 q2) const {
33 pair<int,int> AZ = massAndZ(nucleon->id());
34 Length R = aFact_*pow(AZ.first,1./3.);
35 double Rq = sqrt(q2)*R/hbarc;
36 return 3./pow(Rq,3)*(sin(Rq)-Rq*cos(Rq))/(1.+sqr(yukawaRange_/hbarc)*q2);
37 }
38
39public:
40
48
54 void persistentInput(PersistentIStream & is, int version);
56
63 static void Init();
64
65protected:
66
70 pair<int,int> massAndZ(long pid) const {
71 pair<int,int> output;
72 output.first = (abs(pid)%10000)/10;
73 output.second = (abs(pid)%10000000)/10000;
74 return output;
75 }
76
77protected:
78
85 virtual IBPtr clone() const;
86
91 virtual IBPtr fullclone() const;
93
94private:
95
101
102private :
103
108
113
114
115};
116
117}
118
119#endif /* ThePEG_HardSphereYukawaFormFactor_H */
The HardSphereYukawaFormFactor class implements a form factor model using a hard space + yukawaw inte...
Length aFact_
Prefactor for the nucleur radius .
Complex formFactor(tcPDPtr nucleon, Energy2 q2) const
Convolution of hard sphere and Yukawa for heavy nuclei.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
HardSphereYukawaFormFactor()
The default constructor.
virtual IBPtr clone() const
Make a simple clone of this object.
Length yukawaRange_
Range of the Yukawa potential.
pair< int, int > massAndZ(long pid) const
Extract the mass and atomic number for the nuclear PDG code.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
HardSphereYukawaFormFactor & operator=(const HardSphereYukawaFormFactor &)=delete
The assignment operator is private and must never be called.
static void Init()
The standard Init function used to initialize the interfaces.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
The documentation of the NucleonFormFactor class provides a base class for the implementation of nucl...
PersistentIStream is used to read persistent objects from a stream where they were previously written...
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition: RCPtr.h:696
constexpr Qty< 1, 1, 0 > hbarc
Planck's constant times c (PDG 2006 value 197.326968(17) MeV fm)
Definition: Unitsystem.h:245
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
Definition: Complex.h:23
constexpr auto sqr(const T &x) -> decltype(x *x)
The square function should really have been included in the standard C++ library.
Definition: ThePEG.h:117