1 #ifndef __JACOUSTICS__JFREMANTLE_T__
2 #define __JACOUSTICS__JFREMANTLE_T__
24 namespace JACOUSTICS {}
25 namespace JPP {
using namespace JACOUSTICS; }
27 namespace JACOUSTICS {
55 for (
size_t i = 0;
i <
ns; ++
i) {
57 thread worker([
this, geometry, velocity, parameters]() {
61 for (
JGlobalfit katoomba(geometry, velocity, parameters); ; ) {
64 unique_lock<mutex> lock(
in);
66 cv.wait(lock, [
this]() {
return stop || !
input.empty(); });
72 data.swap(
input.front());
77 const auto result = katoomba(data.begin(), data.end());
79 if (
result.chi2 /
result.ndf <= katoomba.parameters.chi2perNDF) {
82 unique_lock<mutex> lock(
out);
103 workers.emplace_back(move(worker));
116 unique_lock<mutex> lock(
in);
139 unique_lock<mutex> lock(
in);
156 unique_lock<mutex> lock(
in);
159 throw runtime_error(
"The thread pool has been stopped.");
162 input.emplace(move(data));
179 std::condition_variable
cv;
Fit function of acoustic model.
JLANG::JObjectOutput< JSuperEvt > output_type
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
std::condition_variable cv
Global fit of prameterised detector geometry to acoustics data.
static std::string oid
detector identifier
size_t backlog()
Get number of pending data.
std::queue< data_type > input
JFremantle(const JGeometry &geometry, const JSoundVelocity &velocity, const JFitParameters ¶meters, const size_t ns)
Constructor.
Implementation for depth dependend velocity of sound.
void enqueue(data_type &data)
Queue data.
static output_type * output
optional output
Thread pool for global fits.
static JTOOLS::JQuantile Q
chi2/NDF
Template interface of object output for single data type.
virtual bool put(const T &object)=0
Object output.
std::vector< JHit > data_type
Auxiliary data structure to convert model to super event.
std::vector< std::thread > workers