60int main(
int argc, 
char **argv)
 
   73  JLimit_t&               numberOfEvents = inputFile.getLimit();
 
   79  disable_container       disable;                              
 
   87    JParser<> zap(
"Application to fit position calibration model to acoustic data.");
 
   89    zap[
'f'] = 
make_field(inputFile,       
"output of JAcousticEventBuilder[.sh]");
 
  101                          "Precede name of data structure by a '+' or '-' " 
  102                          "to add or remove data types in the output, respectively." 
  105    zap[
'q'] = 
make_field(squash,          
"squash meta data");
 
  110  catch(
const exception &error) {
 
  111    FATAL(error.what() << endl);
 
  129  for (JDetector::const_iterator i = 
detector.begin(); i != 
detector.end(); ++i) {
 
  130    receivers[i->getID()] = i->getLocation();
 
  133  for (tripods_container::const_iterator i = tripods.begin(); i != tripods.end(); ++i) {
 
  134    emitters[i->getID()]  = 
JEmitter(i->getID(), i->getUTMPosition() - 
detector.getUTMPosition());
 
  137  for (transmitters_container::const_iterator i = transmitters.begin(); i != transmitters.end(); ++i) {
 
  139      emitters[i->getID()]  = 
JEmitter(i->getID(), i->getPosition() + 
detector.getModule(i->getLocation()).getPosition());
 
  141    catch(
const exception&) {}                       
 
  156  TH1D h0(
"chi2/NDF", NULL, 50000,  0.0, 1000.0);
 
  157  TH1D h1(
"h1",       NULL,    51, -0.5,   50.5);
 
  158  TH1D hn(
"hn",       NULL,   100,  0.0,    6.0);
 
  168  for (Int_t i = 1; i <= HA->GetXaxis()->GetNbins(); ++i) {
 
  169    HA->GetXaxis()->SetBinLabel(i, 
MAKE_CSTRING(geometry.at(i-1).first));
 
  170    HB->GetXaxis()->SetBinLabel(i, 
MAKE_CSTRING(geometry.at(i-1).first));
 
  173  if (inputFile.size() > 1u) {                       
 
  177    for (
const string& file_name : inputFile) {
 
  183        const JEvent* evt = in.next();
 
  190          zmap[evt->begin()->getToE()] = file_name;
 
  199      inputFile.push_back(i->second);
 
  211  catch(
const exception&) {}
 
  213  int counter[] = { 0, 0 };
 
  227      if (!evt->empty() && emitters.
has(evt->
getID())) {
 
  228        if (utc(evt->begin()->getToA()) && utc(evt->rbegin()->getToA())) {
 
  229          zbuf.push_back(*evt);
 
  234    sort(zbuf.begin(), zbuf.end());                  
 
  236    for (buffer_type::iterator p = zbuf.begin(), q; p != zbuf.end(); p = q) {
 
  238      for (q = p; ++q != zbuf.end() && q->begin()->getToE() <= p->rbegin()->getToE() + parameters.
Tmax_s; ) {}
 
  240      if (q == zbuf.end()) {
 
  244          zbuf.erase(zbuf.begin(), p);               
 
  260        for (buffer_type::iterator evt = p; evt != q; ++evt) {
 
  266          const JEmitter& emitter = emitters [evt->getID()];
 
  267          const double    weight  = 
getWeight(evt->getID());
 
  269          for (JEvent::const_iterator i = evt->begin(); i != __end; ++i) {
 
  274              if (receivers.
has(i->getID()) && geometry.
hasLocation(receivers[i->getID()]) && i->getQ() >= parameters.
Qmin * (parameters.
Qmin <= 1.0 ? i->getW() : 1.0)) {
 
  276                data.push_back(
JHit(emitter,
 
  278                                    receivers[i->getID()],
 
  289          for (data_type::const_iterator hit = data.begin(); hit != data.end(); ++hit) {
 
  290            HA[hit->getID()]->Fill(geometry.
getIndex(hit->getString()), hit->getFloor(), 1.0);
 
  295          const auto result = katoomba(data.begin(), data.end());
 
  297          for (data_type::const_iterator hit = 
result.begin; hit != 
result.end; ++hit) {
 
  298            HB[hit->getID()]->Fill(geometry.
getIndex(hit->getString()), hit->getFloor(), 1.0);
 
  303            cout << 
"result:"                                                     << 
' ' 
  307            for (data_type::const_iterator hit = 
result.begin; hit != 
result.end; ++hit) {
 
  333              for (buffer_type::iterator i = p; i != q; ++i) {
 
  339                for (JEvent::iterator hit = out.begin(); hit != out.end(); ++hit) {
 
  368  STATUS(
"Number of events written / rejected: " << counter[0] << 
" / " << counter[1] << endl);
 
 
ROOT TTree parameter settings.
 
Data structure for detector geometry and calibration.
 
Recording of objects on file according a format that follows from the file name extension.
 
Fit function of acoustic model.
 
General purpose class for hash map of unique elements.
 
Data structure for hydrophone.
 
Dynamic ROOT object management.
 
General purpose messaging.
 
#define DEBUG(A)
Message macros.
 
Data structure for optical module.
 
Scanning of objects from multiple files according a format that follows from the extension of each fi...
 
Utility class to parse command line options.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
#define MAKE_CSTRING(A)
Make C-string.
 
Auxiliary class to define a range between two values.
 
Scanning of objects from a single file according a format that follows from the extension of each fil...
 
Acoustic transmission identifier.
 
Data structure for transmitter.
 
Data structure for tripod.
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
 
Utility class to parse command line options.
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys.
 
JTreeWriter object output.
 
JTreeWriter< T > & getTreeWriter()
Get TreeWriter.
 
General purpose class for object reading from a list of file names.
 
virtual bool hasNext() override
Check availability of next element.
 
virtual const pointer_type & next() override
Get next element.
 
const std::string & getFilename() const
Get current file name.
 
Object reading from a list of files.
 
virtual bool hasNext() override
Check availability of next element.
 
size_t getMinimumNumberOfEmitters(T __begin, T __end)
Get minimum number of emitters for any string in data.
 
double getWeight(T __begin, T __end)
Get total weight of data points.
 
JContainer< std::vector< JTripod > > tripods_container
 
JContainer< std::vector< JTransmitter > > transmitters_container
 
JContainer< std::vector< JHydrophone > > hydrophones_container
 
size_t getNumberOfEmitters(T __begin, T __end)
Get number of emitters.
 
static const JSoundVelocity getSoundVelocity(1541.0, -17.0e-3, -2000.0)
Function object for velocity of sound.
 
static JDetectorMechanics getMechanics
Function object to get string mechanics.
 
JEvt getEvt(const JHead &header, const JModel &model)
Get event.
 
floor_range getRangeOfFloors(const JDetector &detector)
Get range of floors.
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
 
static const JStringCounter getNumberOfStrings
Function object to count unique strings.
 
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
std::vector< JHitW0 > buffer_type
hits
 
std::vector< event_type > data_type
 
int main(int argc, char **argv)
 
Auxiliary data structure for floating point format specification.
 
int getID() const
Get emitter identifier.
 
const int getDetectorID() const
Get detector identifier.
 
double Qmin
minimal quality transmission
 
double deadTime_s
dead time between events [s]
 
size_t Nmin
minimum number of emitters
 
double sigma_s
time-of-arrival resolution [s]
 
double Tmax_s
time window to combine events [s]
 
double chi2perNDF
maximal chi2/NDF to store event
 
bool hasLocation(const JLocation &location) const
Check if this detector has given location.
 
Global fit of prameterised detector geometry to acoustics data.
 
JKatoomba< JGandalf > gandalf
 
JKatoomba< JAbstractMinimiser > evaluator
 
Template definition of fit function of acoustic model.
 
Implementation for depth dependend velocity of sound.
 
JSoundVelocity & set(const double z0)
Set depth.
 
Acoustic transmission identifier.
 
int getID() const
Get identifier.
 
Auxiliary data structure to unify weights of acoustics data according to the number of pings per emit...
 
Data structure for measured coincidence rates of all pairs of PMTs in optical module.
 
Auxiliary wrapper for I/O of container with optional comment (see JComment).
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
Auxiliary class for ROOT class selection.
 
bool is_valid() const
Get status of given data type.
 
Auxiliary class for defining the range of iterations of objects.
 
static counter_type max()
Get maximum counter value.