OPAL (Object Oriented Parallel Accelerator Library) 2022.1
OPAL
TrackRun.h
Go to the documentation of this file.
1//
2// Class TrackRun
3// The RUN command.
4//
5// Copyright (c) 200x - 2022, Paul Scherrer Institut, Villigen PSI, Switzerland
6// All rights reserved
7//
8// This file is part of OPAL.
9//
10// OPAL is free software: you can redistribute it and/or modify
11// it under the terms of the GNU General Public License as published by
12// the Free Software Foundation, either version 3 of the License, or
13// (at your option) any later version.
14//
15// You should have received a copy of the GNU General Public License
16// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
17//
18#ifndef OPAL_TrackRun_HH
19#define OPAL_TrackRun_HH
20
22
23#include <boost/bimap.hpp>
24#include <memory>
25#include <string>
26#include <vector>
27
28class Beam;
29class OpalData;
30class DataSink;
31class Distribution;
32class FieldSolver;
33class H5PartWrapper;
34class Inform;
36class Tracker;
37
38class TrackRun: public Action {
39
40public:
42 TrackRun();
43
44 virtual ~TrackRun();
45
47 virtual TrackRun* clone(const std::string& name);
48
50 virtual void execute();
51
52 using Action::print;
53 Inform& print(Inform& os) const;
54
55 static std::shared_ptr<Tracker> getTracker();
56
57private:
58 enum class RunMethod: unsigned short {
59 NONE,
60 PARALLELT,
61 CYCLOTRONT,
62 THICK
63 };
64
65 // Not implemented.
67 void operator=(const TrackRun&);
68
69 // Clone constructor.
70 TrackRun(const std::string& name, TrackRun* parent);
71
72 void setRunMethod();
73 std::string getRunMethodName() const;
74
75 void setupTTracker();
77 void setupThickTracker();
78 void setupFieldsolver();
79
80 void initDataSink(const int& numBunch = 1);
81
83
84 double setDistributionParallelT(Beam* beam);
85
86 /* itsTracker is a static object; this enables access to the last executed
87 * tracker object without excessive gymnastics, e.g. for access to the
88 * field maps in PyField
89 */
90 static std::shared_ptr<Tracker> itsTracker;
91
93
94 std::vector<Distribution*> distrs_m;
95
97
99
101
103
105
106 static const std::string defaultDistribution;
107
109 static const boost::bimap<RunMethod, std::string> stringMethod_s;
110
111 // macromass and charge for simulation particles
114};
115
116inline Inform& operator<<(Inform& os, const TrackRun& b) {
117 return b.print(os);
118}
119
120#endif // OPAL_TrackRun_HH
Inform & operator<<(Inform &os, const TrackRun &b)
Definition: TrackRun.h:116
const std::string name
The base class for all OPAL actions.
Definition: Action.h:30
virtual void print(std::ostream &) const
Print the object.
Definition: Object.cpp:161
The global OPAL structure.
Definition: OpalData.h:49
Definition: Beam.h:31
static std::shared_ptr< Tracker > itsTracker
Definition: TrackRun.h:90
RunMethod method_m
Definition: TrackRun.h:108
H5PartWrapper * phaseSpaceSink_m
Definition: TrackRun.h:100
virtual void execute()
Execute the command.
Definition: TrackRun.cpp:170
void setupTTracker()
Definition: TrackRun.cpp:357
std::vector< Distribution * > distrs_m
Definition: TrackRun.h:94
bool isFollowupTrack_m
Definition: TrackRun.h:104
Distribution * dist
Definition: TrackRun.h:92
void setRunMethod()
Definition: TrackRun.cpp:253
virtual ~TrackRun()
Definition: TrackRun.cpp:160
void operator=(const TrackRun &)
void initDataSink(const int &numBunch=1)
Definition: TrackRun.cpp:615
TrackRun(const TrackRun &)
TrackRun()
Exemplar constructor.
Definition: TrackRun.cpp:93
double macromass_m
Definition: TrackRun.h:112
virtual TrackRun * clone(const std::string &name)
Make clone.
Definition: TrackRun.cpp:165
static const std::string defaultDistribution
Definition: TrackRun.h:106
double setDistributionParallelT(Beam *beam)
Definition: TrackRun.cpp:642
std::string getRunMethodName() const
Definition: TrackRun.cpp:265
void setBoundaryGeometry()
Definition: TrackRun.cpp:629
void setupFieldsolver()
Definition: TrackRun.cpp:581
void setupCyclotronTracker()
Definition: TrackRun.cpp:454
double macrocharge_m
Definition: TrackRun.h:113
DataSink * ds
Definition: TrackRun.h:98
OpalData * opal
Definition: TrackRun.h:102
FieldSolver * fs
Definition: TrackRun.h:96
Inform & print(Inform &os) const
Definition: TrackRun.cpp:713
static const boost::bimap< RunMethod, std::string > stringMethod_s
Definition: TrackRun.h:109
void setupThickTracker()
Definition: TrackRun.cpp:269
static std::shared_ptr< Tracker > getTracker()
Definition: TrackRun.cpp:737
Definition: Inform.h:42