46int main(
int argc, 
char **argv)
 
   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, NOPMTs_t;
 
   85  catch(
const exception &error) {
 
   86    FATAL(error.what() << endl);
 
   93    header = getARCADetectorHeader();
 
   94  else if (option == ORCA_t) 
 
   95    header = getORCADetectorHeader();
 
   96  else if (option == Antares_t) 
 
   98  else if (option == NOPMTs_t) 
 
  101    FATAL(
"Invalid option " << option << endl);
 
  106  if (!hasDetectorAddressMap(
detector.getID())) {
 
  107    FATAL(
"No detector address map for detector identifier " << 
detector.getID() << endl);
 
  115  deque<JAnchor> footprint;
 
  117  if (inputFile != 
"") {
 
  119    const string file_name = getFullFilename(LD_LIBRARY_PATH, inputFile);
 
  121    NOTICE(
"Reading file " << file_name << 
".. " << flush);
 
  123    ifstream in(file_name.c_str());
 
  128        footprint.push_back(anchor);
 
  137      FATAL(
"Error opening file " << inputFile);
 
  144    footprint.push_back(
JAnchor(  1,     6,    -7));
 
  145    footprint.push_back(
JAnchor(  2,   188,     9));
 
  146    footprint.push_back(
JAnchor(  3,   131,   153));
 
  147    footprint.push_back(
JAnchor(  4,   -85,   120));
 
  148    footprint.push_back(
JAnchor(  5,  -175,    39));
 
  149    footprint.push_back(
JAnchor(  6,   -64,  -181));
 
  150    footprint.push_back(
JAnchor(  7,    90,  -178));
 
  151    footprint.push_back(
JAnchor(  8,   368,    20));
 
  152    footprint.push_back(
JAnchor(  9,   251,   159));
 
  153    footprint.push_back(
JAnchor( 10,   264,  -146));
 
  154    footprint.push_back(
JAnchor( 11,   189,   293));
 
  155    footprint.push_back(
JAnchor( 12,    12,   309));
 
  156    footprint.push_back(
JAnchor( 13,  -176,   338));
 
  157    footprint.push_back(
JAnchor( 14,  -266,   149));
 
  158    footprint.push_back(
JAnchor( 15,  -336,    -1));
 
  159    footprint.push_back(
JAnchor( 16,  -248,  -174));
 
  160    footprint.push_back(
JAnchor( 17,  -196,  -348));
 
  161    footprint.push_back(
JAnchor( 18,   -18,  -350));
 
  162    footprint.push_back(
JAnchor( 19,   211,  -339));
 
  163    footprint.push_back(
JAnchor( 20,   541,   -12));
 
  164    footprint.push_back(
JAnchor( 21,   442,   183));
 
  165    footprint.push_back(
JAnchor( 22,   422,  -125));
 
  166    footprint.push_back(
JAnchor( 23,   364,   287));
 
  167    footprint.push_back(
JAnchor( 24,   342,  -323));
 
  168    footprint.push_back(
JAnchor( 25,   297,   499));
 
  169    footprint.push_back(
JAnchor( 26,    51,   452));
 
  170    footprint.push_back(
JAnchor( 27,   -78,   488));
 
  171    footprint.push_back(
JAnchor( 28,  -281,   508));
 
  172    footprint.push_back(
JAnchor( 29,  -325,   304));
 
  173    footprint.push_back(
JAnchor( 30,  -455,   128));
 
  174    footprint.push_back(
JAnchor( 31,  -541,    15));
 
  175    footprint.push_back(
JAnchor( 32,  -429,  -142));
 
  176    footprint.push_back(
JAnchor( 33,  -327,  -316));
 
  177    footprint.push_back(
JAnchor( 34,  -255,  -488));
 
  178    footprint.push_back(
JAnchor( 35,  -103,  -508));
 
  179    footprint.push_back(
JAnchor( 36,    74,  -469));
 
  180    footprint.push_back(
JAnchor( 37,   289,  -452));
 
  181    footprint.push_back(
JAnchor( 38,   715,     0));
 
  182    footprint.push_back(
JAnchor( 39,   653,   154));
 
  183    footprint.push_back(
JAnchor( 40,   614,  -141));
 
  184    footprint.push_back(
JAnchor( 41,   530,   269));
 
  185    footprint.push_back(
JAnchor( 42,   512,  -323));
 
  186    footprint.push_back(
JAnchor( 43,   473,   472));
 
  187    footprint.push_back(
JAnchor( 44,   458,  -473));
 
  188    footprint.push_back(
JAnchor( 45,   395,   632));
 
  189    footprint.push_back(
JAnchor( 46,   205,   630));
 
  190    footprint.push_back(
JAnchor( 47,     1,   667));
 
  191    footprint.push_back(
JAnchor( 48,  -160,   644));
 
  192    footprint.push_back(
JAnchor( 49,  -352,   639));
 
  193    footprint.push_back(
JAnchor( 50,  -413,   460));
 
  194    footprint.push_back(
JAnchor( 51,  -564,   286));
 
  195    footprint.push_back(
JAnchor( 52,  -636,   125));
 
  196    footprint.push_back(
JAnchor( 53,  -717,    23));
 
  197    footprint.push_back(
JAnchor( 54,  -605,  -139));
 
  198    footprint.push_back(
JAnchor( 55,  -518,  -279));
 
  199    footprint.push_back(
JAnchor( 56,  -482,  -448));
 
  200    footprint.push_back(
JAnchor( 57,  -379,  -595));
 
  201    footprint.push_back(
JAnchor( 58,  -211,  -619));
 
  202    footprint.push_back(
JAnchor( 59,     8,  -652));
 
  203    footprint.push_back(
JAnchor( 60,   214,  -619));
 
  204    footprint.push_back(
JAnchor( 61,   395,  -617));
 
  205    footprint.push_back(
JAnchor( 62,   886,   -12));
 
  206    footprint.push_back(
JAnchor( 63,   802,   155));
 
  207    footprint.push_back(
JAnchor( 64,   844,  -128));
 
  208    footprint.push_back(
JAnchor( 65,   697,   285));
 
  209    footprint.push_back(
JAnchor( 66,   731,  -275));
 
  210    footprint.push_back(
JAnchor( 67,   621,   450));
 
  211    footprint.push_back(
JAnchor( 68,   600,  -497));
 
  212    footprint.push_back(
JAnchor( 69,   568,   593));
 
  213    footprint.push_back(
JAnchor( 70,   517,  -586));
 
  214    footprint.push_back(
JAnchor( 71,   430,   776));
 
  215    footprint.push_back(
JAnchor( 72,   240,   758));
 
  216    footprint.push_back(
JAnchor( 73,    70,   783));
 
  217    footprint.push_back(
JAnchor( 74,   -75,   803));
 
  218    footprint.push_back(
JAnchor( 75,  -252,   809));
 
  219    footprint.push_back(
JAnchor( 76,  -478,   771));
 
  220    footprint.push_back(
JAnchor( 77,  -510,   590));
 
  221    footprint.push_back(
JAnchor( 78,  -643,   468));
 
  222    footprint.push_back(
JAnchor( 79,  -741,   284));
 
  223    footprint.push_back(
JAnchor( 80,  -845,   175));
 
  224    footprint.push_back(
JAnchor( 81,  -907,    -6));
 
  225    footprint.push_back(
JAnchor( 82,  -792,  -142));
 
  226    footprint.push_back(
JAnchor( 83,  -737,  -340));
 
  227    footprint.push_back(
JAnchor( 84,  -639,  -492));
 
  228    footprint.push_back(
JAnchor( 85,  -518,  -596));
 
  229    footprint.push_back(
JAnchor( 86,  -455,  -751));
 
  230    footprint.push_back(
JAnchor( 87,  -260,  -814));
 
  231    footprint.push_back(
JAnchor( 88,  -103,  -819));
 
  232    footprint.push_back(
JAnchor( 89,   106,  -764));
 
  233    footprint.push_back(
JAnchor( 90,   274,  -754));
 
  234    footprint.push_back(
JAnchor( 91,   417,  -762));
 
  235    footprint.push_back(
JAnchor( 92,  1094,    -4));
 
  236    footprint.push_back(
JAnchor( 93,  1010,   120));
 
  237    footprint.push_back(
JAnchor( 94,   992,  -171));
 
  238    footprint.push_back(
JAnchor( 95,   898,   324));
 
  239    footprint.push_back(
JAnchor( 96,   901,  -298));
 
  240    footprint.push_back(
JAnchor( 97,   768,   471));
 
  241    footprint.push_back(
JAnchor( 98,   818,  -477));
 
  242    footprint.push_back(
JAnchor( 99,   731,   632));
 
  243    footprint.push_back(
JAnchor(100,   713,  -633));
 
  244    footprint.push_back(
JAnchor(101,   625,   772));
 
  245    footprint.push_back(
JAnchor(102,   661,  -759));
 
  246    footprint.push_back(
JAnchor(103,   530,   949));
 
  247    footprint.push_back(
JAnchor(104,   345,   960));
 
  248    footprint.push_back(
JAnchor(105,   221,   931));
 
  249    footprint.push_back(
JAnchor(106,   -29,   962));
 
  250    footprint.push_back(
JAnchor(107,  -155,   967));
 
  251    footprint.push_back(
JAnchor(108,  -382,   917));
 
  252    footprint.push_back(
JAnchor(109,  -545,   965));
 
  253    footprint.push_back(
JAnchor(110,  -634,   779));
 
  254    footprint.push_back(
JAnchor(111,  -731,   600));
 
  255    footprint.push_back(
JAnchor(112,  -852,   471));
 
  256    footprint.push_back(
JAnchor(113,  -903,   322));
 
  257    footprint.push_back(
JAnchor(114,  -976,   166));
 
  258    footprint.push_back(
JAnchor(115, -1100,    11));
 
  259    footprint.push_back(
JAnchor(116, -1006,  -131));
 
  260    footprint.push_back(
JAnchor(117,  -867,  -332));
 
  261    footprint.push_back(
JAnchor(118,  -800,  -504));
 
  262    footprint.push_back(
JAnchor(119,  -706,  -593));
 
  263    footprint.push_back(
JAnchor(120,  -604,  -800));
 
  264    footprint.push_back(
JAnchor(121,  -503,  -933));
 
  265    footprint.push_back(
JAnchor(122,  -318,  -927));
 
  266    footprint.push_back(
JAnchor(123,  -177,  -926));
 
  267    footprint.push_back(
JAnchor(124,   -10,  -894));
 
  268    footprint.push_back(
JAnchor(125,   155,  -919));
 
  269    footprint.push_back(
JAnchor(126,   381,  -967));
 
  270    footprint.push_back(
JAnchor(127,   531,  -900));
 
  271    footprint.push_back(
JAnchor(128,  1091,   311));
 
  272    footprint.push_back(
JAnchor(129,  1061,  -285));
 
  273    footprint.push_back(
JAnchor(130,   966,   481));
 
  274    footprint.push_back(
JAnchor(131,   958,  -457));
 
  275    footprint.push_back(
JAnchor(132,   905,   658));
 
  276    footprint.push_back(
JAnchor(133,   863,  -630));
 
  277    footprint.push_back(
JAnchor(134,   788,   742));
 
  278    footprint.push_back(
JAnchor(135,   686,   911));
 
  279    footprint.push_back(
JAnchor(136,   277,  1113));
 
  280    footprint.push_back(
JAnchor(137,    92,  1094));
 
  281    footprint.push_back(
JAnchor(138,   -84,  1127));
 
  282    footprint.push_back(
JAnchor(139,  -302,  1062));
 
  283    footprint.push_back(
JAnchor(140,  -732,   892));
 
  284    footprint.push_back(
JAnchor(141,  -793,   761));
 
  285    footprint.push_back(
JAnchor(142,  -901,   661));
 
  286    footprint.push_back(
JAnchor(143, -1012,   456));
 
  287    footprint.push_back(
JAnchor(144, -1101,   280));
 
  288    footprint.push_back(
JAnchor(145, -1077,  -326));
 
  289    footprint.push_back(
JAnchor(146,  -973,  -457));
 
  290    footprint.push_back(
JAnchor(147,  -883,  -602));
 
  291    footprint.push_back(
JAnchor(148,  -822,  -771));
 
  292    footprint.push_back(
JAnchor(149,  -689,  -910));
 
  293    footprint.push_back(
JAnchor(150,  -457, -1066));
 
  294    footprint.push_back(
JAnchor(151,  -268, -1067));
 
  295    footprint.push_back(
JAnchor(152,   -58, -1080));
 
  296    footprint.push_back(
JAnchor(153,    72, -1100));
 
  297    footprint.push_back(
JAnchor(154,   280, -1081));
 
  301    for (deque<JAnchor>::iterator i = footprint.begin(); i != footprint.end(); ++i) {
 
  306      FATAL(
"Available footprint inconsistent with specified number of lines " 
  307            << parameters.
numberOfLines << 
" > " << footprint.size() << endl); 
 
  312    sort(footprint.begin(), footprint.end());
 
  316        footprint.pop_front();
 
  320        footprint.pop_back();
 
  326    for (deque<JAnchor>::iterator i = footprint.begin(); i != footprint.end(); ++i) {
 
  327      static_cast<JObjectID&
>(*i) = JObjectID(
distance(footprint.begin(),i) + 1);
 
  332  for (deque<JAnchor>::iterator i = footprint.begin(); i != footprint.end(); ++i) {
 
  333    DEBUG(i->getID() << 
' ' << i->getX() << 
' ' << i->getY() << endl);
 
  341  for (deque<JAnchor>::const_iterator anchor = footprint.begin(); anchor != footprint.end(); ++anchor) {
 
  346                               option == ARCA_t ? ARCA_TBARZ_M :
 
  347                               option == ORCA_t ? ORCA_TBARZ_M :
 
  350      const JLocation location(anchor->getID(), 0);
 
  356      module.set(position);
 
  363    for (
unsigned int floor = 1; floor <= parameters.
numberOfFloors; ++floor) {
 
  369      const JLocation location(anchor->getID(), floor);
 
  375      if      (option == ARCA_t || option == ORCA_t) 
 
  376        module = getModule<JKM3NeT_t> (id, location);
 
  377      else if (option == Antares_t) 
 
  378        module = getModule<JAntares_t>(id, location);
 
  379      else if (option == NOPMTs_t)
 
  380        module = JModule(id, location);
 
  382        FATAL(
"Invalid option " << option << endl);
 
  384      module.add(position);
 
  386      for (JModule::iterator pmt = module.begin(); pmt != module.end(); ++pmt, ++
PMT) {