OPAL (Object Oriented Parallel Accelerator Library)  2021.1.99
OPAL
RFCavity.h
Go to the documentation of this file.
1 #ifndef CLASSIC_RFCavity_HH
2 #define CLASSIC_RFCavity_HH
3 
4 // ------------------------------------------------------------------------
5 // $RCSfile: RFCavity.h,v $
6 // ------------------------------------------------------------------------
7 // $Revision: 1.1.1.1 $
8 // ------------------------------------------------------------------------
9 // Copyright: see Copyright.readme
10 // ------------------------------------------------------------------------
11 //
12 // Class: RFCavity
13 // Defines the abstract interface for an accelerating structure.
14 //
15 // ------------------------------------------------------------------------
16 // Class category: AbsBeamline
17 // ------------------------------------------------------------------------
18 //
19 // $Date: 2000/03/27 09:32:31 $
20 // $Author: fci $
21 //
22 // ------------------------------------------------------------------------
23 
24 
25 #include "AbsBeamline/Component.h"
27 #include "Physics/Physics.h"
28 
29 class Fieldmap;
30 
31 // Class RFCavity
32 // ------------------------------------------------------------------------
34 // Class RFCavity defines the abstract interface for RF cavities.
35 
36 
37 class RFCavity: public Component {
38 
39 public:
40 
41  enum CavityType { SW, SGSW };
43  explicit RFCavity(const std::string &name);
44 
45  RFCavity();
46  RFCavity(const RFCavity &);
47  virtual ~RFCavity();
48 
50  virtual void accept(BeamlineVisitor &) const override;
51 
53  virtual double getAmplitude() const = 0;
54 
56  virtual double getFrequency() const = 0;
57 
59  virtual double getPhase() const = 0;
60 
61  void dropFieldmaps();
62 
64  virtual void setFieldMapFN(std::string fmapfn);
65 
66  virtual std::string getFieldMapFN() const;
67 
68  virtual void setAmplitudem(double vPeak);
69  virtual double getAmplitudem() const;
70  virtual void setAmplitudeError(double vPeakError);
71  virtual double getAmplitudeError() const;
72 
73  virtual void setFrequencym(double freq);
74 
75  void setFrequency(double freq);
76 
77  virtual double getFrequencym() const ;
78 
79  virtual void setPhasem(double phase);
80 
81  virtual double getPhasem() const;
82  double getPhasem(double t) const;
83 
84  virtual void setPhaseError(double phaseError);
85  virtual double getPhaseError() const;
86 
87  void setCavityType(std::string type);
88 
89  std::string getCavityType() const;
90 
91  virtual void setFast(bool fast);
92 
93  virtual bool getFast() const;
94 
95  virtual void setAutophaseVeto(bool veto = true);
96 
97  virtual bool getAutophaseVeto() const;
98 
99  virtual double getAutoPhaseEstimate(const double & E0, const double & t0, const double & q, const double & m);
100  virtual double getAutoPhaseEstimateFallback(double E0, double t0, double q, double m);
101 
102  virtual std::pair<double, double> trackOnAxisParticle(const double & p0,
103  const double & t0,
104  const double & dt,
105  const double & q,
106  const double & mass,
107  std::ofstream *out = NULL);
108 
109  virtual bool apply(const size_t &i,
110  const double &t,
111  Vector_t &E,
112  Vector_t &B) override;
113 
114  virtual bool apply(const Vector_t &R,
115  const Vector_t &P,
116  const double &t,
117  Vector_t &E,
118  Vector_t &B) override;
119 
120  virtual bool applyToReferenceParticle(const Vector_t &R,
121  const Vector_t &P,
122  const double &t,
123  Vector_t &E,
124  Vector_t &B) override;
125 
126  virtual void initialise(PartBunchBase<double, 3> *bunch, double &startField, double &endField) override;
127 
128  virtual void initialise(PartBunchBase<double, 3> *bunch,
129  std::shared_ptr<AbstractTimeDependence> freq_atd,
130  std::shared_ptr<AbstractTimeDependence> ampl_atd,
131  std::shared_ptr<AbstractTimeDependence> phase_atd);
132 
133  virtual void finalise() override;
134 
135  virtual bool bends() const override;
136 
137  virtual void goOnline(const double &kineticEnergy) override;
138 
139  virtual void goOffline() override;
140 
141  virtual void setDesignEnergy(const double& ekin, bool changeable = true) override;
142  virtual double getDesignEnergy() const override;
143 
144  void setRmin(double rmin);
145 
146  void setRmax(double rmax);
147 
148  void setAzimuth(double angle);
149 
150  void setPerpenDistance(double pdis);
151 
152  void setGapWidth(double gapwidth);
153 
154  void setPhi0(double phi0);
155 
156  virtual double getRmin() const;
157 
158  virtual double getRmax() const;
159 
160  virtual double getAzimuth() const;
161 
162  virtual double getCosAzimuth() const;
163 
164  virtual double getSinAzimuth() const;
165 
166  virtual double getPerpenDistance() const;
167 
168  virtual double getGapWidth() const;
169 
170  virtual double getPhi0() const;
171 
172  virtual void setComponentType(std::string name) override;
173 
174  virtual std::string getComponentType()const override;
175 
176  virtual double getCycFrequency()const;
177 
178  void getMomentaKick(const double normalRadius, double momentum[], const double t, const double dtCorrt, const int PID, const double restMass,const int chargenumber);
179 
180  double spline(double z, double *za);
181 
182  virtual ElementBase::ElementType getType() const override;
183 
184  virtual void getDimensions(double &zBegin, double &zEnd) const override;
185 
186  virtual bool isInside(const Vector_t &r) const override;
187 
188  void setAmplitudeModel(std::shared_ptr<AbstractTimeDependence> time_dep);
189  void setAmplitudeModelName(std::string name);
190  std::string getAmplitudeModelName();
191 
192  void setPhaseModel(std::shared_ptr<AbstractTimeDependence> time_dep);
193  void setPhaseModelName(std::string name);
194  std::string getPhaseModelName();
195 
196  void setFrequencyModel(std::shared_ptr<AbstractTimeDependence> time_dep);
197  void setFrequencyModelName(std::string name);
198  std::string getFrequencyModelName();
199 
200  virtual double getElementLength() const override;
201  virtual void getElementDimensions(double &begin,
202  double &end) const override;
203 
204  virtual CoordinateSystemTrafo getEdgeToBegin() const override;
205  virtual CoordinateSystemTrafo getEdgeToEnd() const override;
206 
207 protected:
208  std::shared_ptr<AbstractTimeDependence> phase_td_m;
209  std::string phase_name_m;
210  std::shared_ptr<AbstractTimeDependence> amplitude_td_m;
211  std::string amplitude_name_m;
212  std::shared_ptr<AbstractTimeDependence> frequency_td_m;
213  std::string frequency_name_m;
214 
215  std::string filename_m;
217  double scale_m;
218  double scaleError_m;
219  double phase_m;
220  double phaseError_m;
221  double frequency_m;
223  bool fast_m;
225 
227 
229  double startField_m;
231 private:
232  double endField_m;
233 
235 
236  double rmin_m;
237  double rmax_m;
238  double angle_m;
239  double sinAngle_m;
240  double cosAngle_m;
241  double pdis_m;
242  double gapwidth_m;
243  double phi0_m;
244 
245  std::unique_ptr<double[]> RNormal_m;
246  std::unique_ptr<double[]> VrNormal_m;
247  std::unique_ptr<double[]> DvDr_m;
249 
250  double getdE(const int & i,
251  const std::vector<double> & t,
252  const double & dz,
253  const double & phi,
254  const double & frequency,
255  const std::vector<double> & F) const;
256 
257  double getdT(const int & i,
258  const std::vector<double> & E,
259  const double & dz,
260  const double mass) const;
261 
262  double getdA(const int & i,
263  const std::vector<double> & t,
264  const double & dz,
265  const double & frequency,
266  const std::vector<double> & F) const;
267 
268  double getdB(const int & i,
269  const std::vector<double> & t,
270  const double & dz,
271  const double & frequency,
272  const std::vector<double> & F) const;
273 
274  // Not implemented.
275  void operator=(const RFCavity &);
276 };
277 
278 inline
279 double RFCavity::getdE(const int & i,
280  const std::vector<double> & t,
281  const double & dz,
282  const double & phi,
283  const double & frequency,
284  const std::vector<double> & F) const {
285  return dz / (frequency * frequency * (t[i] - t[i-1]) * (t[i] - t[i-1])) *
286  (frequency * (t[i] - t[i-1]) * (F[i] * std::sin(frequency * t[i] + phi) - F[i-1] * std::sin(frequency * t[i-1] + phi)) +
287  (F[i] - F[i-1]) * (std::cos(frequency * t[i] + phi) - std::cos(frequency * t[i-1] + phi)));
288 }
289 
290 inline
291 double RFCavity::getdT(const int & i,
292  const std::vector<double> & E,
293  const double & dz,
294  const double mass) const {
295  double gamma1 = 1. + (19. * E[i-1] + 1. * E[i]) / (20. * mass);
296  double gamma2 = 1. + (17. * E[i-1] + 3. * E[i]) / (20. * mass);
297  double gamma3 = 1. + (15. * E[i-1] + 5. * E[i]) / (20. * mass);
298  double gamma4 = 1. + (13. * E[i-1] + 7. * E[i]) / (20. * mass);
299  double gamma5 = 1. + (11. * E[i-1] + 9. * E[i]) / (20. * mass);
300  double gamma6 = 1. + (9. * E[i-1] + 11. * E[i]) / (20. * mass);
301  double gamma7 = 1. + (7. * E[i-1] + 13. * E[i]) / (20. * mass);
302  double gamma8 = 1. + (5. * E[i-1] + 15. * E[i]) / (20. * mass);
303  double gamma9 = 1. + (3. * E[i-1] + 17. * E[i]) / (20. * mass);
304  double gamma10 = 1. + (1. * E[i-1] + 19. * E[i]) / (20. * mass);
305  return dz *
306  (1. / std::sqrt(1. - 1. / (gamma1 * gamma1)) +
307  1. / std::sqrt(1. - 1. / (gamma2 * gamma2)) +
308  1. / std::sqrt(1. - 1. / (gamma3 * gamma3)) +
309  1. / std::sqrt(1. - 1. / (gamma4 * gamma4)) +
310  1. / std::sqrt(1. - 1. / (gamma5 * gamma5)) +
311  1. / std::sqrt(1. - 1. / (gamma6 * gamma6)) +
312  1. / std::sqrt(1. - 1. / (gamma7 * gamma7)) +
313  1. / std::sqrt(1. - 1. / (gamma8 * gamma8)) +
314  1. / std::sqrt(1. - 1. / (gamma9 * gamma9)) +
315  1. / std::sqrt(1. - 1. / (gamma10 * gamma10))) / (10. * Physics::c);
316 }
317 
318 inline
319 double RFCavity::getdA(const int & i,
320  const std::vector<double> & t,
321  const double & dz,
322  const double & frequency,
323  const std::vector<double> & F) const {
324  double dt = t[i] - t[i-1];
325  return dz / (frequency * frequency * dt * dt) *
326  (frequency * dt * (F[i] * std::cos(frequency * t[i]) - F[i-1] * std::cos(frequency * t[i-1])) -
327  (F[i] - F[i-1]) * (std::sin(frequency * t[i]) - std::sin(frequency * t[i-1])));
328 }
329 
330 inline
331 double RFCavity::getdB(const int & i,
332  const std::vector<double> & t,
333  const double & dz,
334  const double & frequency,
335  const std::vector<double> & F) const {
336  double dt = t[i] - t[i-1];
337  return dz / (frequency * frequency * dt * dt) *
338  (frequency * dt * (F[i] * std::sin(frequency * t[i]) - F[i-1] * std::sin(frequency * t[i-1])) +
339  (F[i] - F[i-1]) * (std::cos(frequency * t[i]) - std::cos(frequency * t[i-1])));
340 }
341 
342 inline
343 void RFCavity::setDesignEnergy(const double& ekin, bool) {
344  designEnergy_m = ekin;
345 }
346 
347 inline
349  return designEnergy_m;
350 }
351 
352 inline
354  fieldmap_m = NULL;
355 }
356 
357 inline
358 void RFCavity::setFieldMapFN(std::string fn) {
359  filename_m = fn;
360 }
361 
362 inline
363 std::string RFCavity::getFieldMapFN() const {
364  return filename_m;
365 }
366 
367 inline
368 void RFCavity::setAmplitudem(double vPeak) {
369  scale_m = vPeak;
370 }
371 
372 inline
373 double RFCavity::getAmplitudem() const {
374  return scale_m;
375 }
376 
377 inline
378 void RFCavity::setAmplitudeError(double vPeakError) {
379  scaleError_m = vPeakError;
380 }
381 
382 inline
384  return scaleError_m;
385 }
386 
387 inline
388 void RFCavity::setFrequency(double freq) {
389  frequency_m = freq;
390 }
391 
392 inline
393 void RFCavity::setFrequencym(double freq) {
394  frequency_m = freq;
395 }
396 
397 inline
398 double RFCavity::getFrequencym() const {
399  return frequency_m;
400 }
401 
402 inline
403 void RFCavity::setPhasem(double phase) {
404  phase_m = phase;
405 }
406 
407 inline
408 double RFCavity::getPhasem() const {
409  return phase_m;
410 }
411 
412 inline
413 double RFCavity::getPhasem(double t) const {
414  return phase_m + t * frequency_m;
415 }
416 
417 inline
418 void RFCavity::setPhaseError(double phaseError) {
419  phaseError_m = phaseError;
420 }
421 
422 inline
423 double RFCavity::getPhaseError() const {
424  return phaseError_m;
425 }
426 
427 inline
428 void RFCavity::setCavityType(std::string /*type*/) {
429 
430 }
431 
432 inline
433 std::string RFCavity::getCavityType() const {
434  return "SW";
435 }
436 
437 inline
438 void RFCavity::setFast(bool fast) {
439  fast_m = fast;
440 }
441 
442 inline
443 bool RFCavity::getFast() const {
444  return fast_m;
445 }
446 
447 inline
448 void RFCavity::setAutophaseVeto(bool veto) {
449  autophaseVeto_m = veto;
450 }
451 
452 inline
454  return autophaseVeto_m;
455 }
456 
457 inline
458 void RFCavity::setAmplitudeModel(std::shared_ptr<AbstractTimeDependence> amplitude_td) {
459  amplitude_td_m = amplitude_td;
460 }
461 
462 inline
465 }
466 
467 inline
469  return amplitude_name_m;
470 }
471 
472 inline
473 void RFCavity::setPhaseModel(std::shared_ptr<AbstractTimeDependence> phase_td) {
474  phase_td_m = phase_td;
475 }
476 
477 inline
480 }
481 
482 inline
484  return phase_name_m;
485 }
486 
487 inline
488 void RFCavity::setFrequencyModel(std::shared_ptr<AbstractTimeDependence> frequency_td) {
489  frequency_td_m = frequency_td;
490 }
491 
492 inline
495 }
496 
497 inline
499  return frequency_name_m;
500 }
501 
502 
503 inline
506  Quaternion(1, 0, 0, 0));
507  return ret;
508 }
509 
510 inline
513  Quaternion(1, 0, 0, 0));
514  return ret;
515 }
516 
517 #endif // CLASSIC_RFCavity_HH
Tps< T > cos(const Tps< T > &x)
Cosine.
Definition: TpsMath.h:129
Tps< T > sin(const Tps< T > &x)
Sine.
Definition: TpsMath.h:111
Tps< T > sqrt(const Tps< T > &x)
Square root.
Definition: TpsMath.h:91
PartBunchBase< T, Dim >::ConstIterator end(PartBunchBase< T, Dim > const &bunch)
PartBunchBase< T, Dim >::ConstIterator begin(PartBunchBase< T, Dim > const &bunch)
const std::string name
constexpr double c
The velocity of light in m/s.
Definition: Physics.h:51
boost::function< boost::tuple< double, bool >arguments_t)> type
Definition: function.hpp:21
Interface for a single beam element.
Definition: Component.h:50
Interface for RF cavity.
Definition: RFCavity.h:37
void setCavityType(std::string type)
Definition: RFCavity.h:428
std::string amplitude_name_m
Definition: RFCavity.h:211
virtual std::string getComponentType() const override
Definition: RFCavity.cpp:347
void setFrequencyModel(std::shared_ptr< AbstractTimeDependence > time_dep)
Definition: RFCavity.h:488
virtual bool isInside(const Vector_t &r) const override
Definition: RFCavity.cpp:714
virtual double getPhasem() const
Definition: RFCavity.h:408
virtual bool bends() const override
Definition: RFCavity.cpp:252
bool fast_m
Definition: RFCavity.h:223
std::string getPhaseModelName()
Definition: RFCavity.h:483
virtual double getRmax() const
Definition: RFCavity.cpp:297
double phi0_m
Definition: RFCavity.h:243
void setPerpenDistance(double pdis)
Definition: RFCavity.cpp:281
void getMomentaKick(const double normalRadius, double momentum[], const double t, const double dtCorrt, const int PID, const double restMass, const int chargenumber)
used in OPAL-cycl
Definition: RFCavity.cpp:368
virtual double getAzimuth() const
Definition: RFCavity.cpp:301
Fieldmap * fieldmap_m
Definition: RFCavity.h:228
std::string getAmplitudeModelName()
Definition: RFCavity.h:468
virtual void setAmplitudeError(double vPeakError)
Definition: RFCavity.h:378
double getdE(const int &i, const std::vector< double > &t, const double &dz, const double &phi, const double &frequency, const std::vector< double > &F) const
Definition: RFCavity.h:279
virtual void accept(BeamlineVisitor &) const override
Apply visitor to RFCavity.
Definition: RFCavity.cpp:118
double endField_m
Definition: RFCavity.h:232
double getdB(const int &i, const std::vector< double > &t, const double &dz, const double &frequency, const std::vector< double > &F) const
Definition: RFCavity.h:331
double designEnergy_m
Definition: RFCavity.h:226
std::string filename_m
Definition: RFCavity.h:215
CavityType type_m
Definition: RFCavity.h:234
std::unique_ptr< double[]> DvDr_m
Definition: RFCavity.h:247
void setPhaseModelName(std::string name)
Definition: RFCavity.h:478
virtual void finalise() override
Definition: RFCavity.cpp:249
virtual ~RFCavity()
Definition: RFCavity.cpp:115
void setRmin(double rmin)
Definition: RFCavity.cpp:269
void operator=(const RFCavity &)
void setPhaseModel(std::shared_ptr< AbstractTimeDependence > time_dep)
Definition: RFCavity.h:473
CavityType
Definition: RFCavity.h:41
@ SGSW
Definition: RFCavity.h:41
virtual std::pair< double, double > trackOnAxisParticle(const double &p0, const double &t0, const double &dt, const double &q, const double &mass, std::ofstream *out=NULL)
Definition: RFCavity.cpp:665
std::shared_ptr< AbstractTimeDependence > amplitude_td_m
Definition: RFCavity.h:210
virtual double getFrequency() const =0
Get RF frequencey.
void setFrequencyModelName(std::string name)
Definition: RFCavity.h:493
virtual double getPhase() const =0
Get RF phase.
virtual void getElementDimensions(double &begin, double &end) const override
Definition: RFCavity.cpp:733
virtual double getCosAzimuth() const
Definition: RFCavity.cpp:309
virtual double getAmplitudem() const
Definition: RFCavity.h:373
double rmin_m
Definition: RFCavity.h:236
double scale_m
Definition: RFCavity.h:217
void setFrequency(double freq)
Definition: RFCavity.h:388
void setAmplitudeModelName(std::string name)
Definition: RFCavity.h:463
RFCavity()
Definition: RFCavity.cpp:41
virtual bool getAutophaseVeto() const
Definition: RFCavity.h:453
double phaseError_m
Definition: RFCavity.h:220
virtual void setAmplitudem(double vPeak)
Definition: RFCavity.h:368
virtual bool getFast() const
Definition: RFCavity.h:443
virtual void initialise(PartBunchBase< double, 3 > *bunch, double &startField, double &endField) override
Definition: RFCavity.cpp:165
double cosAngle_m
Definition: RFCavity.h:240
std::shared_ptr< AbstractTimeDependence > frequency_td_m
Definition: RFCavity.h:212
virtual void setPhaseError(double phaseError)
Definition: RFCavity.h:418
virtual CoordinateSystemTrafo getEdgeToBegin() const override
Definition: RFCavity.h:504
std::unique_ptr< double[]> RNormal_m
Definition: RFCavity.h:245
double gapwidth_m
Definition: RFCavity.h:242
virtual void setPhasem(double phase)
Definition: RFCavity.h:403
std::string phase_name_m
Definition: RFCavity.h:209
double sinAngle_m
Definition: RFCavity.h:239
std::shared_ptr< AbstractTimeDependence > phase_td_m
Definition: RFCavity.h:208
virtual void setComponentType(std::string name) override
Definition: RFCavity.cpp:325
virtual double getSinAzimuth() const
Definition: RFCavity.cpp:305
void setPhi0(double phi0)
Definition: RFCavity.cpp:289
virtual bool applyToReferenceParticle(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override
Definition: RFCavity.cpp:145
double spline(double z, double *za)
Definition: RFCavity.cpp:424
double frequency_m
Definition: RFCavity.h:221
virtual std::string getFieldMapFN() const
Definition: RFCavity.h:363
virtual void setFrequencym(double freq)
Definition: RFCavity.h:393
virtual double getFrequencym() const
Definition: RFCavity.h:398
void setAzimuth(double angle)
Definition: RFCavity.cpp:277
std::unique_ptr< double[]> VrNormal_m
Definition: RFCavity.h:246
virtual void goOnline(const double &kineticEnergy) override
Definition: RFCavity.cpp:257
double pdis_m
Definition: RFCavity.h:241
double startField_m
Definition: RFCavity.h:229
void dropFieldmaps()
Definition: RFCavity.h:353
virtual CoordinateSystemTrafo getEdgeToEnd() const override
Definition: RFCavity.h:511
virtual void setAutophaseVeto(bool veto=true)
Definition: RFCavity.h:448
virtual double getCycFrequency() const
Definition: RFCavity.cpp:354
virtual double getAmplitudeError() const
Definition: RFCavity.h:383
double getdA(const int &i, const std::vector< double > &t, const double &dz, const double &frequency, const std::vector< double > &F) const
Definition: RFCavity.h:319
virtual double getAmplitude() const =0
Get RF amplitude.
virtual double getGapWidth() const
Definition: RFCavity.cpp:317
virtual double getAutoPhaseEstimate(const double &E0, const double &t0, const double &q, const double &m)
Definition: RFCavity.cpp:536
double rmax_m
Definition: RFCavity.h:237
virtual void getDimensions(double &zBegin, double &zEnd) const override
Definition: RFCavity.cpp:484
virtual double getPhaseError() const
Definition: RFCavity.h:423
double scaleError_m
Definition: RFCavity.h:218
std::string getFrequencyModelName()
Definition: RFCavity.h:498
virtual double getPerpenDistance() const
Definition: RFCavity.cpp:313
virtual double getDesignEnergy() const override
Definition: RFCavity.h:348
virtual ElementBase::ElementType getType() const override
Get element type std::string.
Definition: RFCavity.cpp:490
virtual void setDesignEnergy(const double &ekin, bool changeable=true) override
Definition: RFCavity.h:343
void setGapWidth(double gapwidth)
Definition: RFCavity.cpp:285
virtual void setFast(bool fast)
Definition: RFCavity.h:438
virtual double getElementLength() const override
Get design length.
Definition: RFCavity.cpp:722
double phase_m
Definition: RFCavity.h:219
virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B) override
Definition: RFCavity.cpp:122
bool autophaseVeto_m
Definition: RFCavity.h:224
virtual void goOffline() override
Definition: RFCavity.cpp:263
double angle_m
Definition: RFCavity.h:238
virtual double getPhi0() const
Definition: RFCavity.cpp:321
virtual double getAutoPhaseEstimateFallback(double E0, double t0, double q, double m)
Definition: RFCavity.cpp:494
std::string frequency_name_m
Definition: RFCavity.h:213
void setRmax(double rmax)
Definition: RFCavity.cpp:273
void setAmplitudeModel(std::shared_ptr< AbstractTimeDependence > time_dep)
Definition: RFCavity.h:458
virtual double getRmin() const
Definition: RFCavity.cpp:293
int num_points_m
Definition: RFCavity.h:248
std::string getCavityType() const
Definition: RFCavity.h:433
virtual void setFieldMapFN(std::string fmapfn)
Set the name of the field map.
Definition: RFCavity.h:358
double getdT(const int &i, const std::vector< double > &E, const double &dz, const double mass) const
Definition: RFCavity.h:291
Vektor< double, 3 > Vector_t
Definition: Vektor.h:6