Program Listing for File Output.h
↰ Return to documentation for file (include/crpropa/module/Output.h)
#ifndef CRPROPA_OUTPUT_H
#define CRPROPA_OUTPUT_H
#include "crpropa/Module.h"
#include "crpropa/Variant.h"
#include <bitset>
#include <vector>
#include <string>
namespace crpropa {
class Output: public Module {
public:
struct Property
{
std::string name;
std::string comment;
Variant defaultValue;
};
protected:
double lengthScale, timeScale, energyScale;
std::bitset<64> fields;
std::vector<Property> properties;
bool oneDimensional;
mutable size_t count;
void modify();
public:
enum OutputColumn {
TrajectoryLengthColumn,
ColumnDensityColumn,
RedshiftColumn,
CurrentIdColumn,
CurrentEnergyColumn,
CurrentPositionColumn,
CurrentDirectionColumn,
SourceIdColumn,
SourceEnergyColumn,
SourcePositionColumn,
SourceDirectionColumn,
CreatedIdColumn,
CreatedEnergyColumn,
CreatedPositionColumn,
CreatedDirectionColumn,
CandidateTagColumn,
SerialNumberColumn,
WeightColumn,
TimeColumn
};
enum OutputType {
Trajectory1D,
Trajectory3D,
Event1D,
Event3D,
Everything
};
std::string OutputTypeName(OutputType outputtype);
const std::string outputName;
Output();
Output(OutputType outputType);
void setEnergyScale(double scale);
double getEnergyScale() const;
void setLengthScale(double scale);
double getLengthScale() const;
void setTimeScale(double scale);
double getTimeScale() const;
void setOutputType(OutputType outputType);
void set(OutputColumn field, bool value);
void enableProperty(const std::string &property, const Variant& defaultValue, const std::string &comment = "");
void enable(OutputColumn field);
void disable(OutputColumn field);
void enableAll();
void disableAll();
void set1D(bool value);
size_t size() const;
void process(Candidate *) const;
virtual void dumpIndexList(std::vector<int> indices) {
std::cout << "indices:\t";
for (int i = 0; i < indices.size(); i++)
std::cout << indices[i] << ", ";
std::cout << "\n";
};
};
} // namespace crpropa
#endif // CRPROPA_OUTPUT_H