Jpp  18.2.0-rc.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Attributes | Private Attributes | List of all members
JACOUSTICS::JPlatypus Class Reference

Thread pool for global fits using super events. More...

#include <JPlatypus_t.hh>

Public Types

typedef JTOOLS::JHashMap< int,
JEmitter
JEmitters
 
typedef JLANG::JObjectIterator
< JSuperEvt
input_type
 

Public Member Functions

 JPlatypus (const JGeometry &geometry, const JEmitters &emitters, const JSoundVelocity &velocity, const JFitParameters &parameters, input_type &input, const size_t ns)
 Constructor. More...
 
 ~JPlatypus ()
 Destructor. More...
 

Static Public Attributes

static JQuantile Q
 chi2/NDF More...
 

Private Attributes

std::vector< std::thread > workers
 
input_typeinput
 
std::mutex in
 
std::mutex out
 
std::condition_variable cv
 
bool stop
 

Detailed Description

Thread pool for global fits using super events.

Definition at line 32 of file JPlatypus_t.hh.

Member Typedef Documentation

Definition at line 35 of file JPlatypus_t.hh.

Definition at line 36 of file JPlatypus_t.hh.

Constructor & Destructor Documentation

JACOUSTICS::JPlatypus::JPlatypus ( const JGeometry geometry,
const JEmitters emitters,
const JSoundVelocity velocity,
const JFitParameters parameters,
input_type input,
const size_t  ns 
)
inline

Constructor.

Parameters
geometrydetector geometry
emittersemitters geometry
velocitysound velocity
parametersparameters
inputinput
nsnumber of threads

Definition at line 48 of file JPlatypus_t.hh.

53  :
54  input(input),
55  stop(false)
56  {
57  using namespace std;
58  using namespace JPP;
59 
60  Q.reset();
61 
62  for (size_t i = 0; i < ns; ++i) {
63 
64  thread worker([this, geometry, emitters, velocity, parameters]() {
65 
67 
68  for (JKatoomba<JGandalf> katoomba(geometry, velocity, parameters.option); ; ) {
69 
70  katoomba.estimator.reset(getMEstimator(parameters.mestimator));
71 
72  {
73  unique_lock<mutex> lock(in);
74 
75  cv.wait(lock, [this]() { return stop || this->input.hasNext(); });
76 
77  if (stop && !this->input.hasNext()) {
78  return;
79  }
80 
81  const JSuperEvt* evt = this->input.next();
82 
83  data.clear();
84 
85  for (JSuperEvt::rx_type::const_iterator hit = evt->rx.begin(); hit != evt->rx.end(); ++hit) {
86 
87  data.push_back(JHit(emitters[hit->id],
88  hit->counter,
89  JLocation(hit->string, hit->floor),
90  hit->toa,
91  parameters.sigma_s,
92  hit->weight));
93  }
94 
95  katoomba.value = getModel(*evt);
96  }
97 
98  const double chi2 = katoomba (data.begin(), data.end()) / katoomba.estimator->getRho(1.0);
99  const double ndf = getWeight(data.begin(), data.end()) - katoomba.value.getN();
100 
101  {
102  unique_lock<mutex> lock(out);
103 
104  Q.put(chi2 / ndf);
105  }
106  }
107  });
108 
109  workers.emplace_back(std::move(worker));
110  }
111  }
JModel getModel(const JEvt &evt)
Get model.
void reset()
Reset.
Definition: JKatoomba_t.hh:88
double getWeight(T __begin, T __end)
Get total weight of data points.
Definition: JKatoomba_t.hh:60
std::vector< size_t > ns
Acoustics hit.
Template specialisation of fit function of acoustic model based on JGandalf minimiser.
Definition: JKatoomba_t.hh:735
virtual const pointer_type & next()=0
Get next element.
Logical location of module.
Definition: JLocation.hh:37
static JQuantile Q
chi2/NDF
Definition: JPlatypus_t.hh:134
virtual bool hasNext()=0
Check availability of next element.
std::vector< std::thread > workers
Definition: JPlatypus_t.hh:137
Acoustic super event fit.
Definition: JSuperEvt.hh:36
void put(const double x)
Put value.
Definition: JKatoomba_t.hh:100
then if[[!-f $DETECTOR]] then JDetector sh $DETECTOR fi cat $WORKDIR trigger_parameters txt<< EOFtrigger3DMuon.enabled=1;trigger3DMuon.numberOfHits=5;trigger3DMuon.gridAngle_deg=1;ctMin=0.0;TMaxLocal_ns=15.0;EOF set_variable TRIGGEREFFICIENCY_TRIGGERED_EVENTS_ONLY INPUT_FILES=() for((i=1;$i<=$NUMBER_OF_RUNS;++i));do JSirene.sh $DETECTOR $JPP_DATA/genhen.km3net_wpd_V2_0.evt.gz $WORKDIR/sirene_ ${i}.root JTriggerEfficiency.sh $DETECTOR $DETECTOR $WORKDIR/sirene_ ${i}.root $WORKDIR/trigger_efficiency_ ${i}.root $WORKDIR/trigger_parameters.txt $JPP_DATA/PMT_parameters.txt INPUT_FILES+=($WORKDIR/trigger_efficiency_ ${i}.root) done for ANGLE_DEG in $ANGLES_DEG[*];do set_variable SIGMA_NS 3.0 set_variable OUTLIERS 3 set_variable OUTPUT_FILE $WORKDIR/matrix\[${ANGLE_DEG}\deg\].root $JPP_DIR/examples/JReconstruction-f"$INPUT_FILES[*]"-o $OUTPUT_FILE-S ${SIGMA_NS}-A ${ANGLE_DEG}-O ${OUTLIERS}-d ${DEBUG}--!fiif[[$OPTION=="plot"]];then if((0));then for H1 in h0 h1;do JPlot1D-f"$WORKDIR/matrix["${^ANGLES_DEG}" deg].root:${H1}"-y"1 2e3"-Y-L TR-T""-\^"number of events [a.u.]"-> o chi2
Definition: JMatrixNZ.sh:106
double sigma_s
time-of-arrival resolution [s]
int mestimator
M-estimator.
JMEstimator * getMEstimator(const int type)
Get M-Estimator.
Definition: JMEstimator.hh:203
std::condition_variable cv
Definition: JPlatypus_t.hh:141
JACOUSTICS::JPlatypus::~JPlatypus ( )
inline

Destructor.

Definition at line 117 of file JPlatypus_t.hh.

118  {
119  using namespace std;
120 
121  {
122  unique_lock<mutex> lock(in);
123 
124  stop = true;
125  }
126 
127  cv.notify_all();
128 
129  for (auto& worker : workers) {
130  worker.join();
131  }
132  }
std::vector< std::thread > workers
Definition: JPlatypus_t.hh:137
std::condition_variable cv
Definition: JPlatypus_t.hh:141

Member Data Documentation

JQuantile JACOUSTICS::JPlatypus::Q
static

chi2/NDF

Definition at line 134 of file JPlatypus_t.hh.

std::vector<std::thread> JACOUSTICS::JPlatypus::workers
private

Definition at line 137 of file JPlatypus_t.hh.

input_type& JACOUSTICS::JPlatypus::input
private

Definition at line 138 of file JPlatypus_t.hh.

std::mutex JACOUSTICS::JPlatypus::in
private

Definition at line 139 of file JPlatypus_t.hh.

std::mutex JACOUSTICS::JPlatypus::out
private

Definition at line 140 of file JPlatypus_t.hh.

std::condition_variable JACOUSTICS::JPlatypus::cv
private

Definition at line 141 of file JPlatypus_t.hh.

bool JACOUSTICS::JPlatypus::stop
private

Definition at line 142 of file JPlatypus_t.hh.


The documentation for this class was generated from the following files: