70     JParser<> zap(
"Auxiliary program to generate detector files.");
 
   74     zap[
'f'] = 
make_field(inputFile,   
"anchor positions")           = 
"";
 
   76     zap[
'D'] = 
make_field(detectorID,  
"detector identifier");
 
   77     zap[
'V'] = 
make_field(variant,     
"detector version")           = getDetectorVersions<string>();
 
   79     zap[
'z'] = 
make_field(Zmin_m,      
"distance from seabed [m]")   = 100.;
 
   80     zap[
'O'] = 
make_field(option,      
"detector type")              = ARCA_t, ORCA_t, Antares_t;
 
   85   catch(
const exception &error) {
 
   86     FATAL(error.what() << endl);
 
   94   else if (option == ORCA_t) 
 
   96   else if (option == Antares_t) 
 
   99     FATAL(
"Invalid option " << option << endl);
 
  105     FATAL(
"No detector address map for detector identifier " << 
detector.getID() << endl);
 
  113   deque<JAnchor> footprint;
 
  115   if (inputFile != 
"") {
 
  119     NOTICE(
"Reading file " << file_name << 
".. " << flush);
 
  121     ifstream 
in(file_name.c_str());
 
  126         footprint.push_back(anchor);
 
  135       FATAL(
"Error opening file " << inputFile);
 
  142     footprint.push_back(
JAnchor(  1,     6,    -7));
 
  143     footprint.push_back(
JAnchor(  2,   188,     9));
 
  144     footprint.push_back(
JAnchor(  3,   131,   153));
 
  145     footprint.push_back(
JAnchor(  4,   -85,   120));
 
  146     footprint.push_back(
JAnchor(  5,  -175,    39));
 
  147     footprint.push_back(
JAnchor(  6,   -64,  -181));
 
  148     footprint.push_back(
JAnchor(  7,    90,  -178));
 
  149     footprint.push_back(
JAnchor(  8,   368,    20));
 
  150     footprint.push_back(
JAnchor(  9,   251,   159));
 
  151     footprint.push_back(
JAnchor( 10,   264,  -146));
 
  152     footprint.push_back(
JAnchor( 11,   189,   293));
 
  153     footprint.push_back(
JAnchor( 12,    12,   309));
 
  154     footprint.push_back(
JAnchor( 13,  -176,   338));
 
  155     footprint.push_back(
JAnchor( 14,  -266,   149));
 
  156     footprint.push_back(
JAnchor( 15,  -336,    -1));
 
  157     footprint.push_back(
JAnchor( 16,  -248,  -174));
 
  158     footprint.push_back(
JAnchor( 17,  -196,  -348));
 
  159     footprint.push_back(
JAnchor( 18,   -18,  -350));
 
  160     footprint.push_back(
JAnchor( 19,   211,  -339));
 
  161     footprint.push_back(
JAnchor( 20,   541,   -12));
 
  162     footprint.push_back(
JAnchor( 21,   442,   183));
 
  163     footprint.push_back(
JAnchor( 22,   422,  -125));
 
  164     footprint.push_back(
JAnchor( 23,   364,   287));
 
  165     footprint.push_back(
JAnchor( 24,   342,  -323));
 
  166     footprint.push_back(
JAnchor( 25,   297,   499));
 
  167     footprint.push_back(
JAnchor( 26,    51,   452));
 
  168     footprint.push_back(
JAnchor( 27,   -78,   488));
 
  169     footprint.push_back(
JAnchor( 28,  -281,   508));
 
  170     footprint.push_back(
JAnchor( 29,  -325,   304));
 
  171     footprint.push_back(
JAnchor( 30,  -455,   128));
 
  172     footprint.push_back(
JAnchor( 31,  -541,    15));
 
  173     footprint.push_back(
JAnchor( 32,  -429,  -142));
 
  174     footprint.push_back(
JAnchor( 33,  -327,  -316));
 
  175     footprint.push_back(
JAnchor( 34,  -255,  -488));
 
  176     footprint.push_back(
JAnchor( 35,  -103,  -508));
 
  177     footprint.push_back(
JAnchor( 36,    74,  -469));
 
  178     footprint.push_back(
JAnchor( 37,   289,  -452));
 
  179     footprint.push_back(
JAnchor( 38,   715,     0));
 
  180     footprint.push_back(
JAnchor( 39,   653,   154));
 
  181     footprint.push_back(
JAnchor( 40,   614,  -141));
 
  182     footprint.push_back(
JAnchor( 41,   530,   269));
 
  183     footprint.push_back(
JAnchor( 42,   512,  -323));
 
  184     footprint.push_back(
JAnchor( 43,   473,   472));
 
  185     footprint.push_back(
JAnchor( 44,   458,  -473));
 
  186     footprint.push_back(
JAnchor( 45,   395,   632));
 
  187     footprint.push_back(
JAnchor( 46,   205,   630));
 
  188     footprint.push_back(
JAnchor( 47,     1,   667));
 
  189     footprint.push_back(
JAnchor( 48,  -160,   644));
 
  190     footprint.push_back(
JAnchor( 49,  -352,   639));
 
  191     footprint.push_back(
JAnchor( 50,  -413,   460));
 
  192     footprint.push_back(
JAnchor( 51,  -564,   286));
 
  193     footprint.push_back(
JAnchor( 52,  -636,   125));
 
  194     footprint.push_back(
JAnchor( 53,  -717,    23));
 
  195     footprint.push_back(
JAnchor( 54,  -605,  -139));
 
  196     footprint.push_back(
JAnchor( 55,  -518,  -279));
 
  197     footprint.push_back(
JAnchor( 56,  -482,  -448));
 
  198     footprint.push_back(
JAnchor( 57,  -379,  -595));
 
  199     footprint.push_back(
JAnchor( 58,  -211,  -619));
 
  200     footprint.push_back(
JAnchor( 59,     8,  -652));
 
  201     footprint.push_back(
JAnchor( 60,   214,  -619));
 
  202     footprint.push_back(
JAnchor( 61,   395,  -617));
 
  203     footprint.push_back(
JAnchor( 62,   886,   -12));
 
  204     footprint.push_back(
JAnchor( 63,   802,   155));
 
  205     footprint.push_back(
JAnchor( 64,   844,  -128));
 
  206     footprint.push_back(
JAnchor( 65,   697,   285));
 
  207     footprint.push_back(
JAnchor( 66,   731,  -275));
 
  208     footprint.push_back(
JAnchor( 67,   621,   450));
 
  209     footprint.push_back(
JAnchor( 68,   600,  -497));
 
  210     footprint.push_back(
JAnchor( 69,   568,   593));
 
  211     footprint.push_back(
JAnchor( 70,   517,  -586));
 
  212     footprint.push_back(
JAnchor( 71,   430,   776));
 
  213     footprint.push_back(
JAnchor( 72,   240,   758));
 
  214     footprint.push_back(
JAnchor( 73,    70,   783));
 
  215     footprint.push_back(
JAnchor( 74,   -75,   803));
 
  216     footprint.push_back(
JAnchor( 75,  -252,   809));
 
  217     footprint.push_back(
JAnchor( 76,  -478,   771));
 
  218     footprint.push_back(
JAnchor( 77,  -510,   590));
 
  219     footprint.push_back(
JAnchor( 78,  -643,   468));
 
  220     footprint.push_back(
JAnchor( 79,  -741,   284));
 
  221     footprint.push_back(
JAnchor( 80,  -845,   175));
 
  222     footprint.push_back(
JAnchor( 81,  -907,    -6));
 
  223     footprint.push_back(
JAnchor( 82,  -792,  -142));
 
  224     footprint.push_back(
JAnchor( 83,  -737,  -340));
 
  225     footprint.push_back(
JAnchor( 84,  -639,  -492));
 
  226     footprint.push_back(
JAnchor( 85,  -518,  -596));
 
  227     footprint.push_back(
JAnchor( 86,  -455,  -751));
 
  228     footprint.push_back(
JAnchor( 87,  -260,  -814));
 
  229     footprint.push_back(
JAnchor( 88,  -103,  -819));
 
  230     footprint.push_back(
JAnchor( 89,   106,  -764));
 
  231     footprint.push_back(
JAnchor( 90,   274,  -754));
 
  232     footprint.push_back(
JAnchor( 91,   417,  -762));
 
  233     footprint.push_back(
JAnchor( 92,  1094,    -4));
 
  234     footprint.push_back(
JAnchor( 93,  1010,   120));
 
  235     footprint.push_back(
JAnchor( 94,   992,  -171));
 
  236     footprint.push_back(
JAnchor( 95,   898,   324));
 
  237     footprint.push_back(
JAnchor( 96,   901,  -298));
 
  238     footprint.push_back(
JAnchor( 97,   768,   471));
 
  239     footprint.push_back(
JAnchor( 98,   818,  -477));
 
  240     footprint.push_back(
JAnchor( 99,   731,   632));
 
  241     footprint.push_back(
JAnchor(100,   713,  -633));
 
  242     footprint.push_back(
JAnchor(101,   625,   772));
 
  243     footprint.push_back(
JAnchor(102,   661,  -759));
 
  244     footprint.push_back(
JAnchor(103,   530,   949));
 
  245     footprint.push_back(
JAnchor(104,   345,   960));
 
  246     footprint.push_back(
JAnchor(105,   221,   931));
 
  247     footprint.push_back(
JAnchor(106,   -29,   962));
 
  248     footprint.push_back(
JAnchor(107,  -155,   967));
 
  249     footprint.push_back(
JAnchor(108,  -382,   917));
 
  250     footprint.push_back(
JAnchor(109,  -545,   965));
 
  251     footprint.push_back(
JAnchor(110,  -634,   779));
 
  252     footprint.push_back(
JAnchor(111,  -731,   600));
 
  253     footprint.push_back(
JAnchor(112,  -852,   471));
 
  254     footprint.push_back(
JAnchor(113,  -903,   322));
 
  255     footprint.push_back(
JAnchor(114,  -976,   166));
 
  256     footprint.push_back(
JAnchor(115, -1100,    11));
 
  257     footprint.push_back(
JAnchor(116, -1006,  -131));
 
  258     footprint.push_back(
JAnchor(117,  -867,  -332));
 
  259     footprint.push_back(
JAnchor(118,  -800,  -504));
 
  260     footprint.push_back(
JAnchor(119,  -706,  -593));
 
  261     footprint.push_back(
JAnchor(120,  -604,  -800));
 
  262     footprint.push_back(
JAnchor(121,  -503,  -933));
 
  263     footprint.push_back(
JAnchor(122,  -318,  -927));
 
  264     footprint.push_back(
JAnchor(123,  -177,  -926));
 
  265     footprint.push_back(
JAnchor(124,   -10,  -894));
 
  266     footprint.push_back(
JAnchor(125,   155,  -919));
 
  267     footprint.push_back(
JAnchor(126,   381,  -967));
 
  268     footprint.push_back(
JAnchor(127,   531,  -900));
 
  269     footprint.push_back(
JAnchor(128,  1091,   311));
 
  270     footprint.push_back(
JAnchor(129,  1061,  -285));
 
  271     footprint.push_back(
JAnchor(130,   966,   481));
 
  272     footprint.push_back(
JAnchor(131,   958,  -457));
 
  273     footprint.push_back(
JAnchor(132,   905,   658));
 
  274     footprint.push_back(
JAnchor(133,   863,  -630));
 
  275     footprint.push_back(
JAnchor(134,   788,   742));
 
  276     footprint.push_back(
JAnchor(135,   686,   911));
 
  277     footprint.push_back(
JAnchor(136,   277,  1113));
 
  278     footprint.push_back(
JAnchor(137,    92,  1094));
 
  279     footprint.push_back(
JAnchor(138,   -84,  1127));
 
  280     footprint.push_back(
JAnchor(139,  -302,  1062));
 
  281     footprint.push_back(
JAnchor(140,  -732,   892));
 
  282     footprint.push_back(
JAnchor(141,  -793,   761));
 
  283     footprint.push_back(
JAnchor(142,  -901,   661));
 
  284     footprint.push_back(
JAnchor(143, -1012,   456));
 
  285     footprint.push_back(
JAnchor(144, -1101,   280));
 
  286     footprint.push_back(
JAnchor(145, -1077,  -326));
 
  287     footprint.push_back(
JAnchor(146,  -973,  -457));
 
  288     footprint.push_back(
JAnchor(147,  -883,  -602));
 
  289     footprint.push_back(
JAnchor(148,  -822,  -771));
 
  290     footprint.push_back(
JAnchor(149,  -689,  -910));
 
  291     footprint.push_back(
JAnchor(150,  -457, -1066));
 
  292     footprint.push_back(
JAnchor(151,  -268, -1067));
 
  293     footprint.push_back(
JAnchor(152,   -58, -1080));
 
  294     footprint.push_back(
JAnchor(153,    72, -1100));
 
  295     footprint.push_back(
JAnchor(154,   280, -1081));
 
  299     for (deque<JAnchor>::iterator i = footprint.begin(); i != footprint.end(); ++i) {
 
  300       i->mul(
parameters.lineDistance_m * 0.5 / 90.0);
 
  303     if (
parameters.numberOfLines > footprint.size()) {
 
  304       FATAL(
"Available footprint inconsistent with specified number of lines " 
  305             << 
parameters.numberOfLines << 
" > " << footprint.size() << endl); 
 
  310     sort(footprint.begin(), footprint.end());
 
  313       while (
parameters.numberOfLines < footprint.size()) {
 
  314         footprint.pop_front();
 
  317       while (
parameters.numberOfLines < footprint.size()) {
 
  318         footprint.pop_back();
 
  324     for (deque<JAnchor>::iterator i = footprint.begin(); i != footprint.end(); ++i) {
 
  330   for (deque<JAnchor>::iterator i = footprint.begin(); i != footprint.end(); ++i) {
 
  331     DEBUG(i->getID() << 
' ' << i->getX() << 
' ' << i->getY() << endl);
 
  339   for (deque<JAnchor>::const_iterator anchor = footprint.begin(); anchor != footprint.end(); ++anchor) {
 
  348       const JLocation location(anchor->getID(), 0);
 
  350       const int id = demo.getModuleID(location);
 
  354       module.set(position);
 
  361     for (
unsigned int floor = 1; floor <= 
parameters.numberOfFloors; ++floor) {
 
  365                                Zmin_m + (floor - 1) * 
parameters.floorDistance_m);
 
  367       const JLocation location(anchor->getID(), floor);
 
  369       const int id = demo.getModuleID(location);
 
  373       if      (option == ARCA_t || option == ORCA_t) 
 
  374         module = getModule<JKM3NeT_t> (id, location);
 
  375       else if (option == Antares_t) 
 
  376         module = getModule<JAntares_t>(id, location);
 
  378         FATAL(
"Invalid option " << option << endl);
 
  380       module.
add(position);
 
  382       for (JModule::iterator pmt = module.begin(); pmt != module.end(); ++pmt, ++
PMT) {
 
JDetectorHeader getORCADetectorHeader()
Get detector header for ORCA. 
 
Utility class to parse command line options. 
 
Auxiliary class for I/O of JDetectorParameters data structure. 
 
Data structure for a composite optical module. 
 
static const double ARCA_TBARZ_M
ORCA T-bar position relative to seabed [m]. 
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance. 
 
static const char *const LD_LIBRARY_PATH
Nick names of environment variables. 
 
static const JPBS_t PMT(3, 4, 2, 3)
PBS of photo-multiplier tube (PMT) 
 
bool hasDetectorAddressMap(const int id)
Check if detector address map is available. 
 
*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
 
Lookup table for PMT addresses in detector. 
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
Data structure for parameters for detector geometry. 
 
static const double ORCA_TBARZ_M
ORCA T-bar position relative to seabed [m]. 
 
Data structure for vector in three dimensions. 
 
Logical location of module. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
void store(const std::string &file_name, const JDetector &detector)
Store detector to output file. 
 
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map. 
 
Auxiliary class for object identification. 
 
void setID(const int id)
Set identifier. 
 
JDetectorHeader getARCADetectorHeader()
Get detector header for ARCA. 
 
Data structure for anchor position on sea bed. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
std::string getFullFilename(const std::string &variable, const std::string &file_name)
Get full file name (see JEEP::getPath). 
 
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
 
JModule & add(const JVector3D &pos)
Add position. 
 
#define DEBUG(A)
Message macros.