OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
CSRIGFWakeFunction.hh
Go to the documentation of this file.
1 #ifndef CSRIGFWAKEFUNCTION_HH
2 #define CSRIGFWAKEFUNCTION_HH
3 
5 
6 #include <memory>
7 #include <vector>
8 #include <string>
9 
10 class Filter;
11 class ElementBase;
12 
14 public:
15  CSRIGFWakeFunction(const std::string &name, ElementBase *element, std::vector<Filter *> filters, const unsigned int &N);
16 
17  void apply(PartBunchBase<double, 3> *bunch);
18 
19  void initialize(const ElementBase * ref);
20 
21  virtual const std::string getType() const;
22 
23 private:
24  void calculateLineDensity(PartBunchBase<double, 3> * bunch, std::pair<double, double> &meshInfo);
25 
26  void calculateContributionInside(size_t sliceNumber, double angleOfSlice, double meshSpacing);
27  void calculateContributionAfter(size_t sliceNumber, double angleOfSlice, double meshSpacing);
28  void calculateGreenFunction(PartBunchBase<double, 3> *bunch, double meshSpacing);
29  double calcPsi(const double &psiInitial, const double &x, const double &Ds) const;
30 
31  std::vector<Filter *> filters_m;
32  std::shared_ptr<Filter> defaultFilter_m;
34 
37 
38  // Longitudinal CSR field.
39  std::vector<double> Ez_m;
40 
41  // Chi used to calculate the Green's function
42  std::vector<double> Chi_m;
43 
44  // Green's function
45  std::vector<double> Grn_m;
46 
47  // Retarded angle Psi; (for after dipole, Stupakov)
48  std::vector<double> Psi_m;
49 
50  // Start position of CSR wake.
51  double Begin_m;
52 
53  // Start position of equivalent hard edge dipole that approximates actual
54  // dipole.
55  double FieldBegin_m;
56 
57  // Effective length of dipole.
58  double Length_m;
59 
60  // Radius of curvature of effective dipole.
61  double bendRadius_m;
62 
63  std::string bendName_m;
64 
66 
67 };
68 
69 #endif //CSRIGFWAKEFUNCTION_HH
void initialize(const ElementBase *ref)
std::vector< double > Grn_m
std::vector< Filter * > filters_m
Interface for basic beam line object.
Definition: ElementBase.h:128
std::vector< double > Chi_m
Definition: Filter.h:8
LineDensity dlineDensitydz_m
void calculateContributionInside(size_t sliceNumber, double angleOfSlice, double meshSpacing)
void calculateContributionAfter(size_t sliceNumber, double angleOfSlice, double meshSpacing)
virtual const std::string getType() const
double calcPsi(const double &psiInitial, const double &x, const double &Ds) const
void apply(PartBunchBase< double, 3 > *bunch)
CSRIGFWakeFunction(const std::string &name, ElementBase *element, std::vector< Filter * > filters, const unsigned int &N)
std::shared_ptr< Filter > defaultFilter_m
void calculateLineDensity(PartBunchBase< double, 3 > *bunch, std::pair< double, double > &meshInfo)
const std::string name
std::vector< double > Ez_m
void calculateGreenFunction(PartBunchBase< double, 3 > *bunch, double meshSpacing)
std::vector< double > Psi_m