76   tripods_container        tripods;                
 
   77   hydrophones_container    hydrophones;            
 
   83     JParser<> zap(
"Main program to trigger acoustic data.");
 
   85     zap[
'f'] = 
make_field(inputFile,    
"output of JConvertDB -q toashort");
 
   86     zap[
'n'] = 
make_field(numberOfEvents)                                    = JLimit::max();    
 
   90     zap[
'a'] = 
make_field(detectorFile, 
"detector file");
 
   94     zap[
'p'] = 
make_field(precision,    
"precision time-of-arrival")         = 1.0e-6;
 
   99   catch(
const exception &error) {
 
  100     FATAL(error.what() << endl);
 
  118   for (JDetector::const_iterator i = 
detector.begin(); i != 
detector.end(); ++i) {
 
  122     if (i->getFloor() == 0) {                    
 
  129       catch(
const exception&) {
 
  134     receivers[i->getID()] = 
JReceiver(i->getID(), 
 
  135                                       i->getPosition() + pos, 
 
  136                                       i->getT0() * 1.0e-9);
 
  139   for (tripods_container::const_iterator i = tripods.begin(); i != tripods.end(); ++i) {
 
  140     emitters[i->getID()]  = 
JEmitter(i->getID(),
 
  141                                      i->getUTMPosition() - 
detector.getUTMPosition());
 
  157    public map<int, JQuantile>
 
  159     long long int sum()
 const  
  161       long long int count = 0;
 
  163       for (const_iterator i = this->begin(); i != this->end(); ++i) {
 
  164         count += i->second.getCount();
 
  171   map_type number_of_entries;
 
  172   map_type number_of_triggers;
 
  173   map_type number_of_events;
 
  183   while (inputFile.hasNext()) {
 
  185     if (inputFile.getCounter()%1000 == 0) {
 
  186       STATUS(
"counter: " << setw(8) << inputFile.getCounter() << 
'\r' << flush); 
DEBUG(endl);
 
  192       oid = parameters->
DETID;
 
  195     if (oid != parameters->
DETID) {              
 
  196       FATAL(
"Invalid detector identifier " << parameters->
DETID << 
" != " << oid << endl);
 
  201     number_of_entries[parameters->
EMITTERID].put(1);
 
  203     if (emitters.has(
id) && receivers.has(parameters->
DOMID)) {
 
  207       f1[transceiver.emitter.getID()][transceiver.receiver.getID()].push_back(transceiver.getTransmission(*parameters, V));
 
  212   for (map_type::const_iterator i = number_of_entries.begin();  i != number_of_entries.end();  ++i) {
 
  213     STATUS(
"number of entries:  " << setw(3) << i->first << 
' ' << setw(8) << i->second.getCount() << endl);
 
  223       buffer_type& buffer = receiver->second;
 
  242       buffer_type&    f2   = receiver->second;
 
  243       double          Qmin = parameters.Q;
 
  245       if (parameters.Q > 0.0 && parameters.Q < 1.0) {
 
  247         const JQuantile Q1(
"quality", 
make_array(f2.begin(), f2.end(), &JTransmission::getQ), 
true);
 
  249         Qmin = Q1.getQuantile(parameters.Q);
 
  254       copy(f2.begin(), __end, back_inserter(buffer));
 
  258     sort(buffer.begin(), buffer.end());          
 
  260     STATUS(
"number of toes:     " << setw(3) << i->first << 
' ' << setw(8) << buffer.size() << endl);
 
  264     for (buffer_type::const_iterator p = buffer.begin(); p != buffer.end(); ++p) {
 
  266       buffer_type::const_iterator q = p;
 
  270       while (++q != buffer.end() && q->getToE() - p->getToE() <= parameters.TMax_s) {}
 
  272       if (
distance(p,q) >= parameters.numberOfHits) {
 
  274         STATUS(
"trigger: " << setw(8) << number_of_triggers.sum() << 
'\r' << flush); 
DEBUG(endl);
 
  276         JEvent event(oid, number_of_triggers.sum(), i->first, p, q);
 
  278         number_of_triggers[i->first].put(event.size());
 
  280         DEBUG(
"trigger: " << endl << event);
 
  282         data.push_back(event);
 
  288     for (JTriggerOutput::const_iterator event = data.begin(); 
event != data.end(); ++event) {
 
  290       number_of_events[
event->getID()].put(event->size());
 
  297   for (map_type::const_iterator i = number_of_triggers.begin(); i != number_of_triggers.end(); ++i) {
 
  298     STATUS(
"number of triggers: " << setw(3) << i->first << 
' ' << setw(8) << i->second.getCount() << endl);
 
  301   for (map_type::const_iterator i = number_of_events.begin();   i != number_of_events.end();   ++i) {
 
  302     STATUS(
"number of events:   " << setw(3) << i->first << 
' ' << setw(8) << i->second.getCount() << 
' ' << 
FIXED(7,3) << i->second.getMean() << endl);
 
Utility class to parse command line options. 
 
JPredicate< JResult_t T::*, JComparison::eq > make_predicate(JResult_t T::*member, const JResult_t value)
Helper method to create predicate for data member. 
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance. 
 
std::string DETID
constraint 
 
*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)...
 
Auxiliary data structure for floating point format specification. 
 
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. 
 
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. 
 
JPosition3D getPosition(const Vec &pos)
Get position. 
 
Implementation for velocity of sound. 
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
General purpose class for object reading from a list of file names. 
 
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
 
Auxiliary class to compare transmissions. 
 
void copy(const Head &from, JHead &to)
Copy header from from to to. 
 
Data structure for position in three dimensions. 
 
const JLimit & getLimit() const 
Get limit. 
 
bool equals(const JFirst_t &first, const JSecond_t &second, const double precision=std::numeric_limits< double >::min())
Check equality. 
 
static JEmitterID getEmitterID
Function object for emitter identification. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
Match of two events considering overlap in time. 
 
int EMITTERID
waveform identifier