47 namespace JACOUSTICS {
86 public JClonable< JMatch<hit_type>, JMatch3D>
116 const double dt = fabs(first.
getToA() - second.
getToA());
155 if (first .empty())
return false;
156 if (second.empty())
return false;
182 int main(
int argc,
char **argv)
194 int factoryLimit = 10000;
195 double TMaxExtra_s = 100.0e-6;
213 JParser<> zap(
"Main program to trigger acoustic data.");
215 zap[
'f'] =
make_field(inputFile,
"output of JConvertDB -q toashort");
216 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
217 zap[
'@'] =
make_field(properties,
"trigger parameters");
220 zap[
'a'] =
make_field(detectorFile,
"detector file");
222 zap[
'p'] =
make_field(precision,
"precision time-of-arrival") = 1.0e-6;
228 catch(
const exception &error) {
229 FATAL(error.what() << endl);
256 if (
i->getFloor() == 0) {
263 catch(
const exception&) {
269 i->getPosition() + pos,
270 i->getT0() * 1.0e-9);
289 while (inputFile.hasNext()) {
291 if (inputFile.getCounter()%100000 == 0) {
292 STATUS(
"counter: " << setw(8) << inputFile.getCounter() <<
'\r' << flush);
DEBUG(endl);
298 FATAL(
"Invalid detector identifier " << parameters->
DETID <<
" != " <<
detector.getID() << endl);
301 if (receivers.has(parameters->
DOMID)) {
305 double toa = parameters->
TOA_S();
316 catch(
const exception&) {}
331 buffer_type::iterator __end = unique(receiver->second.begin(), receiver->second.end(),
JTransmission::equals(precision));
335 for (buffer_type::const_iterator p = receiver->second.begin(); p != __end; ++p) {
347 for (buffer_type::const_iterator p = data.begin(); p != data.end(); ++p) {
349 if (
distance(data.cbegin(),p)%1000 == 0) {
350 STATUS(
"processed[" <<
i->first <<
"]: " <<
FIXED(5,1) << (
double) (100 *
distance(data.cbegin(),p)) / (double) data.size() <<
"%" <<
'\r' << flush);
DEBUG(endl);
353 buffer_type::const_iterator q = p;
355 while (++q != data.end() && q->getToA() - p->getToA() <=
parameters.TMax_s) {}
361 buffer_type::iterator
root = buffer.begin();
362 buffer_type::iterator __p = buffer.begin();
363 buffer_type::iterator __q = buffer.begin();
370 for (buffer_type::const_iterator
i = p; ++
i != q; ) {
391 if (out[0].empty()) {
395 }
else if (
overlap(out[0],out[1])) {
397 out[0].
merge(out[1]);
410 if (!out[0].empty()) {
415 STATUS(
"triggers[" <<
i->first <<
"]: " << setw(7) << out[0].getCounter() << endl);
hit_type(const JPosition3D &position, const JTransmission &transmission)
Constructor.
Utility class to parse command line options.
bool operator()(const JEvent &first, const JEvent &second) const
Match criterion.
JPredicate< JResult_t T::*, JComparison::eq > make_predicate(JResult_t T::*member, const JResult_t value)
Helper method to create predicate for data member.
int main(int argc, char *argv[])
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
void merge(const JEvent &event)
Merge event.
Algorithms for hit clustering and sorting.
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
JVector3D getPosition(T __begin, T __end, const JPredicate< JTypename_t, JComparator_t > &predicate)
Get position from element in data which corresponds to given predicate.
#define gmake_property(A)
macros to convert (template) parameter to JPropertiesElement object
General purpose class for hash map of unique elements.
ROOT TTree parameter settings.
int getCounter() const
Get counter.
Match of two events considering overlap in time.
Recording of objects on file according a format that follows from the file name extension.
virtual bool operator()(const hit_type &first, const hit_type &second) const override
Match operator.
Utility class to parse parameter values.
int32_t WAVEFORMID
DOM unique identifeir.
*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
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Time-of-arrival data from acoustic piezo sensor or hydrophone.
Function object interface for hit matching.
Auxiliary data structure for floating point format specification.
3D match criterion for acoustic signals.
JMatch3D(const JSoundVelocity &V, const double Tmax_s=0.0)
Constructor.
Data structure for detector geometry and calibration.
do JPlot2D f $WORKDIR canberra[${EMITTER}\] root
std::vector< JHitW0 > buffer_type
hits
Utility class to parse parameter values.
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
double getDistance(const JFirst_t &first, const JSecond_t &second)
Get distance between objects.
Data structure for hydrophone.
const JPolynome f1(1.0, 2.0, 3.0)
Function.
Auxiliary class for defining the range of iterations of objects.
static const JSoundVelocity getSoundVelocity(1541.0,-17.0e-3,-2000.0)
Function object for velocity of sound.
Base class for match operations for cluster and hit-preprocessing methods.
I/O formatting auxiliaries.
JContainer< std::vector< JHydrophone > > hydrophones_container
Auxiliary wrapper for I/O of container with optional comment (see JComment).
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
const array_type< JValue_t > & make_array(const JValue_t(&array)[N])
Method to create array of values.
int32_t RUN
detector identifier
int getID() const
Get identifier.
Template class for object cloning.
uint32_t QUALITYFACTOR
The ticks (16ns) part of the DAQ frame timestamp.
const JPosition3D & getPosition() const
Get position.
double TOA_S() const
Time of Arrival, expressed in seconds relative to Unix epoch (1 January 1970 00:00:00 UTC) ...
General purpose messaging.
uint32_t QUALITYNORMALISATION
A measure of how good the waveform match was to the signal.
Implementation for depth dependend velocity of sound.
Scanning of objects from multiple files according a format that follows from the extension of each fi...
double getT(const double t_s) const
Get corrected time.
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
int getString() const
Get string number.
JRange< double > time_range
Type definition of time range.
virtual double getTime(const double D_m, const double z1, const double z2) const override
Get propagation time of sound.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
Acoustic trigger parameters.
Auxiliary class to define a range between two values.
General purpose class for object reading from a list of file names.
Utility class to parse command line options.
hit_type()
Default constructor.
double getToA() const
Get calibrated time of arrival.
Auxiliary class to compare transmissions.
const JLimit & getLimit() const
Get limit.
Data structure for position in three dimensions.
bool equals(const JFirst_t &first, const JSecond_t &second, const double precision=std::numeric_limits< double >::min())
Check equality.
JEventOverlap(const double Tmax_s=0.0)
Constructor.
uint32_t DOMID
DAQ run number.
static JEmitterID getEmitterID
Function object for emitter identification.
do set_variable DETECTOR_TXT $WORKDIR detector
JSoundVelocity & set(const double z0)
Set depth.
double getZ() const
Get z position.
static struct JTRIGGER::clusterize clusterize
#define DEBUG(A)
Message macros.