1 #ifndef __JACOUSTICS__JFREMANTLE_T__
2 #define __JACOUSTICS__JFREMANTLE_T__
25 namespace JACOUSTICS {}
26 namespace JPP {
using namespace JACOUSTICS; }
28 namespace JACOUSTICS {
53 const size_t backlog = std::numeric_limits<size_t>::max()) :
62 for (
size_t i = 0;
i <
ns; ++
i) {
64 thread worker([
this, geometry, velocity, parameters]() {
68 for (
JGlobalfit katoomba(geometry, velocity, parameters); ; ) {
71 unique_lock<mutex> lock(
in);
73 cv.wait(lock, [
this]() {
return stop || !
input.empty(); });
79 data.swap(
input.front());
86 const auto result = katoomba(data.begin(), data.end());
88 if (
result.chi2 /
result.ndf <= katoomba.parameters.chi2perNDF) {
91 unique_lock<mutex> lock(
out);
112 workers.emplace_back(std::move(worker));
125 unique_lock<mutex> lock(
in);
148 unique_lock<mutex> lock(
in);
153 throw runtime_error(
"The thread pool has been stopped.");
156 input.emplace(std::move(data));
172 std::condition_variable
cv;
173 std::condition_variable
cw;
Fit function of acoustic model.
JLANG::JObjectOutput< JSuperEvt > output_type
void put(const double x)
Put value.
*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
void enqueue(input_type &data)
Queue data.
Global fit of prameterised detector geometry to acoustics data.
JFremantle(const JGeometry &geometry, const JSoundVelocity &velocity, const JFitParameters ¶meters, const size_t ns, const size_t backlog=std::numeric_limits< size_t >::max())
Constructor.
static int detid
detector identifier
std::queue< input_type > input
Implementation for depth dependend velocity of sound.
static JMATH::JQuantile_t Q
chi2/NDF
std::vector< JHit > input_type
static output_type * output
optional output
Thread pool for global fits.
Template interface of object output for single data type.
virtual bool put(const T &object)=0
Object output.
static bool squash
squash transmissions in output
Auxiliary data structure to convert model to super event.
std::vector< std::thread > workers
Auxiliary data structure for average.
std::condition_variable cw