|
OPALX (Object Oriented Parallel Accelerator Library for Exascal) MINIorX
OPALX
|
#include <LossDataSink.h>
Public Member Functions | |
| LossDataSink ()=default | |
| LossDataSink (std::string outfn, bool hdf5Save, CollectionType=CollectionType::TEMPORAL) | |
| LossDataSink (const LossDataSink &rsh) | |
| ~LossDataSink () noexcept(false) | |
| bool | inH5Mode () |
| void | save (unsigned int numSets=1, OpalData::OpenMode openMode=OpalData::OpenMode::UNDEFINED) |
| void | addReferenceParticle (const Vector_t< double, 3 > &x, const Vector_t< double, 3 > &p, double time, double spos, long long globalTrackStep) |
| void | addParticle (const OpalParticle &, const boost::optional< std::pair< int, short int > > &turnBunchNumPair=boost::none) |
| size_t | size () const |
| std::set< SetStatistics > | computeStatistics (unsigned int numSets) |
Private Member Functions | |
| void | openASCII () |
| void | openH5 (h5_int32_t mode=H5_O_WRONLY) |
| void | appendASCII () |
| void | writeHeaderASCII () |
| void | writeHeaderH5 () |
| void | saveASCII () |
| void | saveH5 (unsigned int setIdx) |
| void | closeASCII () |
| bool | hasNoParticlesToDump () const |
| bool | hasTurnInformations () const |
| void | reportOnError (h5_int64_t rc, const char *file, int line) |
| void | splitSets (unsigned int numSets) |
| SetStatistics | computeSetStatistics (unsigned int setIdx) |
Private Attributes | |
| std::string | fileName_m |
| bool | h5hut_mode_m |
| std::ofstream | os_m |
| h5_file_t | H5file_m |
| used to write out data in H5hut mode | |
| std::string | outputName_m |
| h5_int64_t | H5call_m |
| Current record, or time step, of H5 file. | |
| std::vector< OpalParticle > | particles_m |
| std::vector< size_t > | bunchNumber_m |
| std::vector< size_t > | turnNumber_m |
| std::vector< Vector_t< double, 3 > > | RefPartR_m |
| std::vector< Vector_t< double, 3 > > | RefPartP_m |
| std::vector< h5_int64_t > | globalTrackStep_m |
| std::vector< double > | refTime_m |
| std::vector< double > | spos_m |
| std::vector< unsigned long > | startSet_m |
| CollectionType | collectionType_m |
Definition at line 78 of file LossDataSink.h.
|
default |
References LossDataSink(), and TEMPORAL.
Referenced by LossDataSink(), and LossDataSink().
| LossDataSink::LossDataSink | ( | std::string | outfn, |
| bool | hdf5Save, | ||
| CollectionType | collectionType = CollectionType::TEMPORAL ) |
Definition at line 178 of file LossDataSink.cpp.
References OpalData::APPEND, bunchNumber_m, OpalData::checkAndAddOutputFileName(), collectionType_m, Options::enableHDF5, OpalData::getInstance(), H5call_m, H5file_m, h5hut_mode_m, outputName_m, particles_m, OpalData::setOpenMode(), and turnNumber_m.
| LossDataSink::LossDataSink | ( | const LossDataSink & | rsh | ) |
Definition at line 202 of file LossDataSink.cpp.
References bunchNumber_m, collectionType_m, globalTrackStep_m, H5call_m, H5file_m, h5hut_mode_m, LossDataSink(), outputName_m, particles_m, RefPartP_m, RefPartR_m, refTime_m, spos_m, and turnNumber_m.
| LossDataSink::~LossDataSink | ( | ) |
Definition at line 218 of file LossDataSink.cpp.
References CLOSE_FILE, and H5file_m.
| void LossDataSink::addParticle | ( | const OpalParticle & | , |
| const boost::optional< std::pair< int, short int > > & | turnBunchNumPair = boost::none ) |
Definition at line 314 of file LossDataSink.cpp.
References bunchNumber_m, particles_m, and turnNumber_m.
| void LossDataSink::addReferenceParticle | ( | const Vector_t< double, 3 > & | x, |
| const Vector_t< double, 3 > & | p, | ||
| double | time, | ||
| double | spos, | ||
| long long | globalTrackStep ) |
Definition at line 304 of file LossDataSink.cpp.
References globalTrackStep_m, RefPartP_m, RefPartR_m, refTime_m, and spos_m.
|
inlineprivate |
Definition at line 114 of file LossDataSink.h.
References fileName_m, and os_m.
Referenced by save().
|
inlineprivate |
Definition at line 126 of file LossDataSink.h.
References os_m.
Referenced by save().
|
private |
Definition at line 702 of file LossDataSink.cpp.
References SetStatistics::eps2_m, SetStatistics::eps_norm_m, SetStatistics::fac_m, OpalParticle::getPx(), OpalParticle::getPy(), OpalParticle::getPz(), OpalParticle::getTime(), OpalParticle::getX(), OpalParticle::getY(), OpalParticle::getZ(), SetStatistics::nTotal_m, outputName_m, SetStatistics::outputName_m, particles_m, SetStatistics::pmean_m, SetStatistics::prms_m, SetStatistics::psqsum_m, RefPartP_m, SetStatistics::RefPartP_m, RefPartR_m, SetStatistics::RefPartR_m, refTime_m, SetStatistics::refTime_m, SetStatistics::rmax_m, SetStatistics::rmean_m, SetStatistics::rmin_m, SetStatistics::rprms_m, SetStatistics::rpsum_m, SetStatistics::rrms_m, SetStatistics::rsqsum_m, spos_m, SetStatistics::spos_m, startSet_m, Util::KahanAccumulation::sum, SetStatistics::tmean_m, and SetStatistics::trms_m.
Referenced by computeStatistics().
|
inline |
Definition at line 176 of file LossDataSink.h.
References computeSetStatistics(), and splitSets().
|
private |
Definition at line 387 of file LossDataSink.cpp.
References particles_m.
Referenced by save().
|
private |
Definition at line 393 of file LossDataSink.cpp.
References turnNumber_m.
Referenced by saveH5(), and writeHeaderASCII().
|
inline |
Definition at line 87 of file LossDataSink.h.
References h5hut_mode_m, and inH5Mode().
Referenced by inH5Mode().
|
inlineprivate |
Definition at line 107 of file LossDataSink.h.
References fileName_m, and os_m.
Referenced by save().
|
private |
Definition at line 226 of file LossDataSink.cpp.
References fileName_m, and OPEN_FILE.
Referenced by save().
|
private |
| void LossDataSink::save | ( | unsigned int | numSets = 1, |
| OpalData::OpenMode | openMode = OpalData::OpenMode::UNDEFINED ) |
Definition at line 329 of file LossDataSink.cpp.
References appendASCII(), bunchNumber_m, CLOSE_FILE, closeASCII(), fileName_m, GET_NUM_STEPS, OpalData::getInstance(), OpalData::getOpenMode(), globalTrackStep_m, gmsg, H5file_m, h5hut_mode_m, hasNoParticlesToDump(), openASCII(), openH5(), outputName_m, particles_m, RefPartP_m, RefPartR_m, refTime_m, saveASCII(), saveH5(), spos_m, turnNumber_m, OpalData::UNDEFINED, OpalData::WRITE, writeHeaderASCII(), and writeHeaderH5().
|
private |
Definition at line 540 of file LossDataSink.cpp.
Referenced by save().
|
private |
Set current record/time step.
Definition at line 401 of file LossDataSink.cpp.
References bunchNumber_m, DistributionMoments::compute(), Options::computePercentiles, DistributionMoments::get68Percentile(), DistributionMoments::get95Percentile(), DistributionMoments::get99_99Percentile(), DistributionMoments::get99Percentile(), OpalParticle::getCharge(), DistributionMoments::getGeometricEmittance(), OpalParticle::getId(), OpalParticle::getMass(), DistributionMoments::getMaxR(), DistributionMoments::getMeanKineticEnergy(), DistributionMoments::getMeanMomentum(), DistributionMoments::getMeanPosition(), DistributionMoments::getMeanTime(), DistributionMoments::getNormalizedEmittance(), DistributionMoments::getNormalizedEmittance68Percentile(), DistributionMoments::getNormalizedEmittance95Percentile(), DistributionMoments::getNormalizedEmittance99_99Percentile(), DistributionMoments::getNormalizedEmittance99Percentile(), OpalParticle::getPx(), OpalParticle::getPy(), OpalParticle::getPz(), DistributionMoments::getStandardDeviationMomentum(), DistributionMoments::getStandardDeviationPosition(), DistributionMoments::getStdKineticEnergy(), DistributionMoments::getStdTime(), OpalParticle::getTime(), DistributionMoments::getTotalCharge(), DistributionMoments::getTotalMass(), OpalParticle::getX(), OpalParticle::getY(), OpalParticle::getZ(), globalTrackStep_m, H5call_m, hasTurnInformations(), particles_m, RefPartP_m, RefPartR_m, refTime_m, SET_NUM_PARTICLES, SET_STEP, size(), spos_m, startSet_m, turnNumber_m, WRITE_DATA_FLOAT64, WRITE_DATA_INT64, WRITE_STEPATTRIB_FLOAT64, and WRITE_STEPATTRIB_INT64.
Referenced by save().
|
inline |
Definition at line 172 of file LossDataSink.h.
References particles_m.
Referenced by saveH5().
|
private |
In Opal-T monitors can be traversed several times. We know how many times the bunch passes because we register the passage of the reference particle. This code tries to determine to which bunch (same bunch but different times) a particle belongs. For this we could use algorithms from data science such as k-means or dbscan. But they are an overkill for this application because the bunches are well separated.
In a first step we a assign to each bunch the same number of particles and compute the mean time of passage and with it a time range. Of course this is only an approximation. So we reassign the particles to the bunches using the time ranges compute a better approximation. Two iterations should be sufficient for Opal-T where the temporal separation is large.
| numSets | number of passes of the reference particle |
Definition at line 643 of file LossDataSink.cpp.
References particles_m, and startSet_m.
Referenced by computeStatistics().
|
private |
Definition at line 293 of file LossDataSink.cpp.
References hasTurnInformations(), and os_m.
Referenced by save().
|
private |
Definition at line 234 of file LossDataSink.cpp.
References collectionType_m, Options::computePercentiles, Util::getGitRevision(), OPAL_PROJECT_NAME, OPAL_PROJECT_VERSION, TEMPORAL, and WRITE_FILEATTRIB_STRING.
Referenced by save().
|
private |
Definition at line 158 of file LossDataSink.h.
Referenced by addParticle(), LossDataSink(), LossDataSink(), save(), and saveH5().
|
private |
Definition at line 169 of file LossDataSink.h.
Referenced by LossDataSink(), LossDataSink(), and writeHeaderH5().
|
private |
Definition at line 141 of file LossDataSink.h.
Referenced by appendASCII(), openASCII(), openH5(), and save().
|
private |
Definition at line 163 of file LossDataSink.h.
Referenced by addReferenceParticle(), LossDataSink(), save(), and saveH5().
|
private |
Current record, or time step, of H5 file.
Definition at line 155 of file LossDataSink.h.
Referenced by LossDataSink(), LossDataSink(), and saveH5().
|
private |
used to write out data in H5hut mode
Definition at line 150 of file LossDataSink.h.
Referenced by LossDataSink(), LossDataSink(), save(), and ~LossDataSink().
|
private |
Definition at line 144 of file LossDataSink.h.
Referenced by inH5Mode(), LossDataSink(), LossDataSink(), and save().
|
private |
Definition at line 147 of file LossDataSink.h.
Referenced by appendASCII(), closeASCII(), openASCII(), and writeHeaderASCII().
|
private |
Definition at line 152 of file LossDataSink.h.
Referenced by computeSetStatistics(), LossDataSink(), LossDataSink(), and save().
|
private |
Definition at line 157 of file LossDataSink.h.
Referenced by addParticle(), computeSetStatistics(), hasNoParticlesToDump(), LossDataSink(), LossDataSink(), save(), saveH5(), size(), and splitSets().
|
private |
Definition at line 162 of file LossDataSink.h.
Referenced by addReferenceParticle(), computeSetStatistics(), LossDataSink(), save(), and saveH5().
|
private |
Definition at line 161 of file LossDataSink.h.
Referenced by addReferenceParticle(), computeSetStatistics(), LossDataSink(), save(), and saveH5().
|
private |
Definition at line 164 of file LossDataSink.h.
Referenced by addReferenceParticle(), computeSetStatistics(), LossDataSink(), save(), and saveH5().
|
private |
Definition at line 165 of file LossDataSink.h.
Referenced by addReferenceParticle(), computeSetStatistics(), LossDataSink(), save(), and saveH5().
|
private |
Definition at line 167 of file LossDataSink.h.
Referenced by computeSetStatistics(), saveH5(), and splitSets().
|
private |
Definition at line 159 of file LossDataSink.h.
Referenced by addParticle(), hasTurnInformations(), LossDataSink(), LossDataSink(), save(), and saveH5().