OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
TrackRun.h
Go to the documentation of this file.
1//
2// Class TrackRun
3// The RUN command.
4//
5// Copyright (c) 200x - 2023, 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 {
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 initPhaseSpaceSink();
81
82 void initDataSink(const int& numBunch = 1);
83
85
86 double setDistributionParallelT(Beam* beam);
87
88 /* itsTracker_m is a static object; this enables access to the last executed
89 * tracker object without excessive gymnastics, e.g. for access to the
90 * field maps in PyField
91 */
92 static std::shared_ptr<Tracker> itsTracker_m;
93
95 std::vector<Distribution*> distrs_m;
96
98
100
102
104
106
107 static const std::string defaultDistribution;
108
110 static const boost::bimap<RunMethod, std::string> stringMethod_s;
111
112 // macromass and charge for simulation particles
115};
116
117inline Inform& operator<<(Inform& os, const TrackRun& b) {
118 return b.print(os);
119}
120
121#endif // OPAL_TrackRun_HH
Inform & operator<<(Inform &os, const TrackRun &b)
Definition TrackRun.h:117
const std::string name
Action(int size, const char *name, const char *help)
Constructor for exemplars.
Definition Action.cpp:54
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
RunMethod method_m
Definition TrackRun.h:109
DataSink * dataSink_m
Definition TrackRun.h:99
H5PartWrapper * phaseSpaceSink_m
Definition TrackRun.h:101
virtual void execute()
Execute the command.
Definition TrackRun.cpp:170
void setupTTracker()
Definition TrackRun.cpp:344
std::vector< Distribution * > distrs_m
Definition TrackRun.h:95
bool isFollowupTrack_m
Definition TrackRun.h:105
void setRunMethod()
Definition TrackRun.cpp:253
virtual ~TrackRun()
Definition TrackRun.cpp:160
static std::shared_ptr< Tracker > itsTracker_m
Definition TrackRun.h:92
FieldSolver * fieldSolver_m
Definition TrackRun.h:97
void operator=(const TrackRun &)
void initDataSink(const int &numBunch=1)
Definition TrackRun.cpp:611
TrackRun(const TrackRun &)
TrackRun()
Exemplar constructor.
Definition TrackRun.cpp:93
double macromass_m
Definition TrackRun.h:113
virtual TrackRun * clone(const std::string &name)
Make clone.
Definition TrackRun.cpp:165
static const std::string defaultDistribution
Definition TrackRun.h:107
double setDistributionParallelT(Beam *beam)
Definition TrackRun.cpp:638
std::string getRunMethodName() const
Definition TrackRun.cpp:265
void initPhaseSpaceSink()
Definition TrackRun.cpp:575
void setBoundaryGeometry()
Definition TrackRun.cpp:625
Distribution * dist_m
Definition TrackRun.h:94
void setupFieldsolver()
Definition TrackRun.cpp:542
void setupCyclotronTracker()
Definition TrackRun.cpp:428
double macrocharge_m
Definition TrackRun.h:114
OpalData * opalData_m
Definition TrackRun.h:103
Inform & print(Inform &os) const
Definition TrackRun.cpp:709
static const boost::bimap< RunMethod, std::string > stringMethod_s
Definition TrackRun.h:110
void setupThickTracker()
Definition TrackRun.cpp:269
static std::shared_ptr< Tracker > getTracker()
Definition TrackRun.cpp:733