42  inline double getRange(
const double E, 
const double l_abs)
 
   44    const double precision = 1.0e-6;
 
   45    const double y0        = 1.0e-3;
 
   50    for (
int i = 0; i != 1000; ++i) {
 
   52      const double x = 0.5 * (xmin + xmax);
 
   53      const double R = 1.0e3 * 
pow(10.0, x);
 
   55      const double y = E * 2.0e-9 * exp(-R/l_abs) / R;
 
   57      if (fabs(y - y0) <= precision) {
 
   67    return pow(10.0, 0.5 * (xmin + xmax));
 
   76int main(
int argc, 
char **argv)
 
   88  size_t           numberOfEvents;
 
   98    double         ZMax_m = 150.0;         
 
  112    JParser<> zap(
" Auxiliary program to write signal acoustic data.");
 
  114    zap[
'a'] = 
make_field(detectorFile,        
"detector.");
 
  118    zap[
'E'] = 
make_field(E_GeV,               
"neutrino energy [GeV]");
 
  119    zap[
'R'] = 
make_field(run,                 
"run number")            = -1;
 
  120    zap[
'T'] = 
make_field(T_s,                 
"time interval between events [s]");
 
  125    zap[
'W'] = 
make_field(
id,                  
"waveform identifier");
 
  131  catch(
const exception &error) {
 
  132    FATAL(error.what() << endl);
 
  136  gRandom->SetSeed(seed);
 
  147  const double RMax_m = 
getRange(E_GeV, parameters.l_abs);
 
  152  TH1D h1(
"h1", NULL, 60, 6.0, 12.0);
 
  154  for (Int_t i = 1; i <= h1.GetXaxis()->GetNbins(); ++i) {
 
  156    const double x = h1.GetXaxis()->GetBinCenter(i);
 
  157    const double E = 
pow(10.0, x);
 
  159    h1.SetBinContent(i, 
getRange(E, parameters.l_abs));
 
  175  for (
size_t i = 0; i != numberOfEvents; ++i) {
 
  185    gRandom->Sphere(x, y, z, 1.0);
 
  191    const double t0 = T_s * i;             
 
  193    size_t number_of_hits = 0;
 
  195    for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  197      if (module->getFloor() != 0) {
 
  204        if (sqrt(P.
getX()*P.
getX() + P.
getY()*P.
getY()) <= RMax_m && fabs(P.
getZ()) <= parameters.ZMax_m) {
 
  206          const JReceiver receiver(module->getID(), module->getPosition(), module->getT0() * 1.0e-9);
 
  211          toa.
TOA_NS       = llrint(1E9*receiver.
putT(t0 + t1));
 
  220    STATUS(
"event: " << setw(6) << i << 
' ' 
  221           << 
FIXED(12,2) <<  t0                          << 
' ' 
  228           << setw(4)     <<  number_of_hits << 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.
 
General purpose messaging.
 
Utility class to parse command line options.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Utility class to parse parameter values.
 
#define gmake_property(A)
macros to convert (template) parameter to JPropertiesElement object
 
Auxiliary class to define a range between two values.
 
int main(int argc, char **argv)
 
Utility class to parse parameter values.
 
double getY() const
Get y position.
 
double getX() const
Get x position.
 
double getZmin() const
Get minimal z position.
 
double getZmax() const
Get maximal z position.
 
Data structure for position in three dimensions.
 
JPosition3D & rotate(const JRotation3D &R)
Rotate.
 
double getY() const
Get y position.
 
JVector3D & add(const JVector3D &vector)
Add vector.
 
double getDistance(const JVector3D &pos) const
Get distance to point.
 
double getZ() const
Get z position.
 
JVector3D & sub(const JVector3D &vector)
Subtract vector.
 
double getX() const
Get x position.
 
Data structure for normalised vector in three dimensions.
 
double getDY() const
Get y direction.
 
double getDX() const
Get x direction.
 
double getDZ() const
Get z direction.
 
int getID() const
Get identifier.
 
Utility class to parse command line options.
 
Auxiliary classes and methods for acoustic position calibration.
 
static const JSoundVelocity getSoundVelocity(1541.0, -17.0e-3, -2000.0)
Function object for velocity of sound.
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
 
T pow(const T &x, const double y)
Power .
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Auxiliary classes and methods for ROOT I/O.
 
range_type getRange(TAxis *pAxis)
Get range of given axis.
 
Auxiliary data structure for floating point format specification.
 
Type definition of range.
 
double putT(const double t_s) const
Get uncorrected time.
 
Implementation for depth dependend velocity of sound.
 
virtual double getTime(const double D_m, const double z1, const double z2) const override
Get propagation time of sound.
 
Time-of-arrival data from acoustic piezo sensor or hydrophone.
 
uint32_t DOMID
DAQ run number.
 
int64_t TOA_NS
Unique ID of the waveform that best described the signal around TOA_NS.
 
uint32_t QUALITYFACTOR
The ticks (16ns) part of the DAQ frame timestamp.
 
uint32_t QUALITYNORMALISATION
A measure of how good the waveform match was to the signal.
 
int32_t WAVEFORMID
DOM unique identifeir.
 
int32_t RUN
detector identifier
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...