44   static const int         WILDCARD    =  -1;
 
   46   static const std::string reset_t     = 
"reset";             
 
   47   static const std::string set_t       = 
"set";               
 
   48   static const std::string setx_t      = 
"setx";              
 
   49   static const std::string sety_t      = 
"sety";              
 
   50   static const std::string setz_t      = 
"setz";              
 
   51   static const std::string add_t       = 
"add";               
 
   52   static const std::string sub_t       = 
"sub";               
 
   53   static const std::string rot_t       = 
"rot";               
 
   54   static const std::string mul_t       = 
"mul";               
 
   55   static const std::string div_t       = 
"div";               
 
   56   static const std::string tilt_t      = 
"tilt";              
 
   57   static const std::string swap_t      = 
"swap";              
 
   59   static const std::string assign_t    = 
"assign";            
 
   60   static const std::string locate_t    = 
"locate";            
 
   61   static const std::string string_t    = 
"string";            
 
   63   static const std::string rand_t      = 
"rand";              
 
   64   static const std::string randset_t   =  rand_t + set_t;     
 
   65   static const std::string randadd_t   =  rand_t + add_t;     
 
   66   static const std::string randsub_t   =  rand_t + sub_t;     
 
   67   static const std::string randrot_t   =  rand_t + rot_t;     
 
   68   static const std::string randmul_t   =  rand_t + mul_t;     
 
   69   static const std::string randdiv_t   =  rand_t + div_t;     
 
   70   static const std::string randtilt_t  =  rand_t + tilt_t;    
 
   72   static const std::string RESET_t     = 
"RESET";             
 
   73   static const std::string SET_t       = 
"SET";               
 
   74   static const std::string ADD_t       = 
"ADD";               
 
   75   static const std::string SUB_t       = 
"SUB";               
 
   76   static const std::string ROT_t       = 
"ROT";               
 
   86   inline bool apply(
JModule& module, 
const std::string& action)
 
   88     if        (action == reset_t) {
 
   94       for (JModule::iterator pmt = module.begin(); pmt != module.end(); ++pmt) {
 
   99     } 
else if (action == RESET_t) {
 
  122   inline bool apply(
JModule& module, 
const std::string& action, 
const double value)
 
  124     if        (action == set_t) {                          
 
  128     } 
else if (action == setx_t) {
 
  132     } 
else if (action == sety_t) {
 
  136     } 
else if (action == setz_t) {
 
  140     } 
else if (action == add_t) {
 
  144     } 
else if (action == sub_t) {
 
  148     } 
else if (action == rot_t) {
 
  158     } 
else if (action == mul_t) {
 
  166     } 
else if (action == div_t) {
 
  174     } 
else if (action == SET_t) {
 
  178     } 
else if (action == ADD_t) {
 
  182     } 
else if (action == SUB_t) {
 
  186     } 
else if (action == ROT_t) {
 
  190     } 
else if (action == randadd_t) {                      
 
  192       module.
add(gRandom->Gaus(0.0, value));
 
  194     } 
else if (action == randsub_t) {
 
  196       module.
sub(gRandom->Gaus(0.0, value));
 
  198     } 
else if (action == randrot_t){
 
  208     } 
else if (action == randmul_t) {
 
  216     } 
else if (action == randdiv_t) {
 
  224     } 
else if (action == assign_t) {                       
 
  226       module.
setID((
int) value);
 
  228     } 
else if (action == string_t) {
 
  250   inline bool apply(
JModule& module, 
const std::string& action, 
const double first, 
const double second)
 
  252     if        (action == tilt_t) {                         
 
  254       const double Tx = 
first;
 
  255       const double Ty = second;
 
  256       const double Tz = sqrt(1.0 - Tx*Tx - Ty*Ty);
 
  258       const double x  = Tx * module.
getZ()  +  module.
getX();
 
  259       const double y  = Ty * module.
getZ()  +  module.
getY();
 
  260       const double z  = Tz * module.
getZ();
 
  264     } 
else if (action == locate_t) {
 
  268     } 
else if (action == swap_t) {
 
  270       std::swap(module[(
int) first], module[(
int) second]);
 
  289   inline bool apply(
JModule& module, 
const std::string& action, 
const JVector3D& pos)
 
  292                             gRandom->Gaus(0.0, pos.
getY()),
 
  293                             gRandom->Gaus(0.0, pos.
getZ()));
 
  297     else if (action == add_t)
 
  299     else if (action == sub_t)
 
  301     else if (action == randset_t)                      
 
  303     else if (action == randadd_t)
 
  305     else if (action == randsub_t)
 
  326     else if (action == ADD_t)
 
  328     else if (action == SUB_t)
 
  345   inline bool apply(
JModule& module, 
const std::string& action, 
const std::string& value)
 
  351       else if (action == reset_t)
 
  358     catch(
const std::exception&) {
 
  372   inline bool apply(
JPMT& pmt, 
const std::string& action, 
const std::string& value)
 
  378       else if (action == reset_t)
 
  385     catch(
const std::exception&) {
 
  409       return (action != 
"" && !data.empty());
 
  419     bool apply(
JModule& module)
 const 
  421       switch (data.size()) {
 
  424         return  ::apply(module, action);
 
  427         return  ::apply(module, action, data[0]);
 
  430         return  ::apply(module, action, data[0], data[1]);
 
  433         return  ::apply(module, action, 
JVector3D(data[0], data[1], data[2]));
 
  436         return  ::apply(module, action, 
JQuaternion3D(data[0], data[1], data[2], data[3]));
 
  451     friend inline std::istream& 
operator>>(std::istream& 
in, JModifier& modifier)
 
  453       if (in >> modifier.action) {
 
  455         modifier.data.clear();
 
  457         for (
double x; in >> 
x; ) {
 
  458           modifier.data.push_back(x);
 
  461         in.clear(std::ios_base::eofbit);
 
  475     friend inline std::ostream& 
operator<<(std::ostream& out, 
const JModifier& modifier)
 
  477       out << modifier.action;
 
  502   inline const JModifier& getModifier(
const int id, 
const JModifier& modifier)
 
  508     const string::size_type pos = modifier.action.find(rand_t);
 
  510     if (pos != string::npos) {
 
  512       JModifier& 
result = buffer[id][modifier.action][modifier.data.size()];
 
  514       if (!result.is_valid()) {      
 
  516         result.action = modifier.action.substr(pos + rand_t.length());
 
  518         for (
size_t i = 0; i != modifier.data.size(); ++i) {
 
  519           result.data.push_back(gRandom->Gaus(0.0, modifier.data[i]));
 
  535   struct JModuleModifier {
 
  549     bool apply(
JModule& module)
 const 
  551       return ::apply(module, action, value);
 
  562     friend inline std::istream& 
operator>>(std::istream& in, JModuleModifier& modifier)
 
  564       return in >> modifier.action >> modifier.value;
 
  575     friend inline std::ostream& 
operator<<(std::ostream& out, 
const JModuleModifier& modifier)
 
  577       out << modifier.action;
 
  579       out << modifier.value;
 
  593   struct JPMTModifier {
 
  607     bool apply(
JPMT& pmt)
 const 
  609       return ::apply(pmt, action, value);
 
  620     friend inline std::istream& 
operator>>(std::istream& in, JPMTModifier& modifier)
 
  622       return in >> modifier.action >> modifier.value;
 
  633     friend inline std::ostream& 
operator<<(std::ostream& out, 
const JPMTModifier& modifier)
 
  635       out << modifier.action;
 
  637       out << modifier.value;
 
  659     static const char SEPARATOR = 
'-';
 
  678       if (in >> range.
first) {
 
  682         if (in.peek() == (int) JRange_t::SEPARATOR) {
 
  707       return out << range.
first << JRange_t::SEPARATOR << range.
second;
 
  719   inline void print(std::ostream& out, 
const JModule& module, 
const JModifier& modifier)
 
  724     out << 
"Modifier"                                                                                           << 
' ' 
  726         << setw(10) << module.
getID()                                                                           << 
' ' 
  727         << 
"action" << 
' ' << modifier.action << 
JEEPZ() << modifier.data << endl;
 
  743     out << 
"module modifier"                    << 
' ' 
  744         << 
"(" << setw(10) << 
id.getID() << 
")" << 
' ' 
  745         << 
"action" << 
' ' << modifier.action << 
' '  
  746         << 
"value"  << 
' ' << modifier.value  << endl;
 
  757   inline void print(std::ostream& out, 
const JPMTIdentifier& pmt, 
const JPMTModifier& modifier)
 
  762     out << 
"PMT modifier"                                                                 << 
' ' 
  763         << 
"(" << setw(10) << pmt.
getID() << 
"," << setw(2) << pmt.
getPMTAddress() << 
")" << 
' ' 
  764         << 
"action" << 
' ' << modifier.action << 
' '  
  765         << 
"value"  << 
' ' << modifier.value  << endl;
 
  869 int main(
int argc, 
char **argv)
 
  883                JModuleModifier> >  wip;
 
  897     JParser<> zap(
"Auxiliary program to modify detector.");
 
  912     zap[
'O'] = 
make_field(option, 
"sort modules")                                           = 0, 1, 2;
 
  917   catch(
const exception &error) {
 
  918     FATAL(error.what() << endl);
 
  934   if ((keep.empty() ? 0 : 1  +
 
  935        rm  .empty() ? 0 : 1  +
 
  936        id  .empty() ? 0 : 1) > 1) {
 
  937     FATAL(
"Use either option -k, -r or -m." << endl);
 
  943   if (
detector.setToLatestVersion()) {
 
  944     NOTICE(
"Set detector version to " << 
detector.getVersion() << endl);
 
  958       istringstream 
is(*i);
 
  969   for (JDetector::iterator module = 
detector.begin(); module != 
detector.end(); ) {
 
  971     bool __rm__ = !keep.empty() && 
rm.empty();
 
  986       __rm__ = find(
id.begin(), 
id.end(), module->
getID()) == 
id.end();
 
  989     const auto range = del.equal_range(module->
getString());
 
  991     for (
auto i = range.
first; i != range.
second; ++i) {
 
  992       if (i->second == module->
getFloor()) {
 
 1006     for (JDetector::iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
 1008       if (module->
getID() == i->first || i->first == WILDCARD ){
 
 1011           print(cout, *module, i->second);
 
 1014         if (!i->second.apply(*module)) {
 
 1015           ERROR(
"No valid action: " << i->first << 
' ' << i->second << endl);
 
 1024     for (JDetector::iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
 1026       if (module->
getString() == i->first || i->first == WILDCARD) {
 
 1028         const JModifier modifier = getModifier(module->
getString(), i->second);
 
 1031           print(cout, *module, i->second);
 
 1034         if (!modifier.apply(*module)) {
 
 1035           ERROR(
"No valid action: " << i->first << 
' ' << i->second << endl);
 
 1044     for (JDetector::iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
 1048         if (module->
getString() == i->first || i->first == WILDCARD) {
 
 1050           const JModifier modifier = getModifier(module->
getString(), i->second);
 
 1053             print(cout, *module, i->second);
 
 1056           if (!modifier.apply(*module)) {
 
 1057             ERROR(
"No valid action: " << i->first << 
' ' << i->second << endl);
 
 1067     for (JDetector::iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
 1069       if (module->
getID() == i->first || i->first == WILDCARD ){
 
 1072           print(cout, *module, i->second);
 
 1075         if (!i->second.apply(*module)) {
 
 1076           ERROR(
"No valid action: " << i->first << 
' ' << i->second << endl);
 
 1085     for (JDetector::iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
 1087       if (module->
getID() == i->first.getModuleID() || i->first.getModuleID() == WILDCARD) {
 
 1090           print(cout, i->first, i->second);
 
 1093         if        (i->first.getPMTAddress() == WILDCARD) {
 
 1096             if (!i->second.apply(module->
getPMT(pmt))) {
 
 1097               ERROR(
"No valid action: " << i->first << 
' ' << i->second << endl);
 
 1101         } 
else if (i->first.getPMTAddress() <  0                         ||
 
 1103                    !i->second.apply(module->
getPMT(i->first.getPMTAddress()))) {
 
 1104           ERROR(
"No valid action: " << i->first << 
' ' << i->second << endl);
 
 1114       FATAL(
"Invalid detector identifier " << 
detector.getID() << endl);
 
 1119     for (JDetector::iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
 1128           print(cout, 
id, i->second);
 
 1131         if (!i->second.apply(module->
getPMT(
id.getPMTAddress()))) {
 
 1132           ERROR(
"No valid action: " << i->first << 
' ' << i->second << endl);
 
Utility class to parse command line options. 
 
static const JGetPMTStatusBit getPMTStatusBit
Function object to map key to PMT status bit. 
 
Q(UTCMax_s-UTCMin_s)-livetime_s
 
int main(int argc, char *argv[])
 
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member. 
 
int getFloor() const 
Get floor number. 
 
Data structure for a composite optical module. 
 
JQuaternion3D getConjugate() const 
Get conjugate of this quaternion. 
 
void setLocation(const JLocation &location)
Set location. 
 
const JCalibration & getCalibration() const 
Get calibration. 
 
bool hasDetectorAddressMap(const int id)
Check if detector address map is available. 
 
Utility class to parse parameter values. 
 
std::iterator_traits< T >::value_type getAverage(T __begin, T __end)
Get average. 
 
int getNumberOfPMTs(const JModule &module)
Get number of PMTs. 
 
void subT0(const double t0)
Subtract time offset. 
 
Lookup table for PMT addresses in detector. 
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
void reset(const int bit)
Reset PMT status. 
 
Data structure for time calibration. 
 
static const JGetModuleStatusBit getModuleStatusBit
Function object to map key to module status bit. 
 
JRange_t()
Default constructor. 
 
Data structure for detector geometry and calibration. 
 
const JModuleAddressMap & get(const int id) const 
Get module address map. 
 
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
 
const JQuaternion3D & getQuaternion() const 
Get quaternion. 
 
JModule & sub(const JVector3D &pos)
Subtract position. 
 
Lookup table for PMT addresses in optical module. 
 
Type definition of range. 
 
I/O formatting auxiliaries. 
 
Data structure for vector in three dimensions. 
 
void setQuaternion(const JQuaternion3D &quaternion)
Set quaternion. 
 
Logical location of module. 
 
const JLocation & getLocation() const 
Get location. 
 
void set(const int bit)
Set PMT status. 
 
#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. 
 
int getID() const 
Get identifier. 
 
Auxiliary class for handling status. 
 
This class represents a rotation around the z-axis. 
 
bool is_valid(const json &js)
Check validity of JSon data. 
 
Data structure for PMT geometry, calibration and status. 
 
void store(const std::string &file_name, const JDetector &detector)
Store detector to output file. 
 
JPosition3D getPosition(const Vec &pos)
Get position. 
 
int getPMTAddress() const 
Get PMT address (= TDC). 
 
double getY() const 
Get y position. 
 
Auxiliary data structure for streaming of STL containers. 
 
const JPosition3D & getPosition() const 
Get position. 
 
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map. 
 
const JPMT & getPMT(const int index) const 
Get PMT. 
 
void rotate(const JRotation3D &R)
Rotate module. 
 
General purpose messaging. 
 
Auxiliary data structure for sequence of same character. 
 
Data structure for unit quaternion in three dimensions. 
 
Direct access to module in detector data structure. 
 
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
 
int getString() const 
Get string number. 
 
std::istream & operator>>(std::istream &in, JAANET::JHead &header)
Read header from input. 
 
const JPMTAddressTranslator & getAddressTranslator(const int tdc) const 
Get PMT address translator. 
 
const JStatus & getStatus() const 
Get status. 
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
void setT0(const double t0)
Set time offset. 
 
Auxiliary class to define a range between two values. 
 
Utility class to parse command line options. 
 
Auxiliary class for object identification. 
 
Wrapper class around string. 
 
void setCalibration(const JCalibration &cal)
Set calibration. 
 
void setID(const int id)
Set identifier. 
 
double getX() const 
Get x position. 
 
Base class for data structures with artithmetic capabilities. 
 
void addT0(const double t0)
Add time offset. 
 
Data structure for position in three dimensions. 
 
Data structure for PMT physical address. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
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 source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
 
JModule & set(const JVector3D &pos)
Set position. 
 
double getZ() const 
Get z position. 
 
JModule & add(const JVector3D &pos)
Add position. 
 
double getT0() const 
Get time offset.