29   static const char WILDCARD_RING       = 
'*';   
 
   30   static const int  WILDCARD_POSITION   = -1;    
 
   31   static const int  WILDCARD            = -1;    
 
   43     return (((first          == second))                                                                                          ||
 
   48             ((first.
ring     == WILDCARD_RING     || second.
ring     == WILDCARD_RING)  && 
 
   49              (first.
position == WILDCARD_POSITION || second.
position == WILDCARD_POSITION)));
 
   62     return (((first          == second))                                                                        ||
 
   67             ((first.
getID()  == WILDCARD || second.
getID()  == WILDCARD)  && 
 
   68              (first.
getTDC() == WILDCARD || second.
getTDC() == WILDCARD)));
 
   75   template<
class JAddress_t>
 
   97         if        (this->action == 
"set") {
 
  101         } 
else if (this->action == 
"add") {
 
  105         } 
else if (this->action == 
"sub") {
 
  109         } 
else if (this->action == 
"mul") {
 
  113         } 
else if (this->action == 
"div") {
 
  122       catch(
const std::exception& error) {
 
  123         cerr << error.what() << endl;
 
  138     friend inline std::istream& 
operator>>(std::istream& 
in, JModifier& modifier)
 
  140       return in >> modifier.address
 
  154     friend inline std::ostream& 
operator<<(std::ostream& out, 
const JModifier& modifier)
 
  156       return out << modifier.address << 
' ' 
  157                  << modifier.action  << 
' ' 
  158                  << modifier.key     << 
' ' 
  191 int main(
int argc, 
char **argv)
 
  210     JParser<> zap(
"Auxiliary program to edit PMT parameters map.");
 
  212     zap[
'a'] = 
make_field(detectorFile,     
"detector file.")                                                   = 
"";
 
  213     zap[
'D'] = 
make_field(detectorID,       
"detector identifier (in absence of detector file).")               = 0;
 
  217     zap[
'E'] = 
make_field(mu,               
"expectation value for npe given two-fold coincidence")             = 0.0;
 
  218     zap[
'T'] = 
make_field(T_ns,             
"time-over-threshold range.")                                       = JRange_t();
 
  224   catch(
const exception &error) {
 
  225     FATAL(error.what() << endl);
 
  229   if (detectorFile != 
"") {
 
  236       load(detectorFile, detector);
 
  242     if        (detectorID == 0) {
 
  244       detectorID = detector.
getID();
 
  246     } 
else if (detectorID != detector.
getID()) {
 
  248       FATAL(
"Inconsistent detector identifier " << detectorID << 
" != " << detector.
getID() << endl);
 
  252     for (JDetector::const_iterator module = detector.begin(); module != detector.end(); ++module) {
 
  254       for (
unsigned int pmt = 0; pmt != module->size(); ++pmt) {
 
  258         if (parameters.find(
id) == parameters.end()) {
 
  260           DEBUG(
"Setting default parameters for PMT " << 
id << endl);
 
  262           parameters[id] = parameters.getDefaultPMTParameters();
 
  271       FATAL(
"Invalid detector identifier " << detectorID << endl);
 
  276     for (JPMTParametersMap::iterator ps = parameters.begin(); ps != parameters.end(); ++ps) {
 
  280       for (
vector< JModifier<JPMTPhysicalAddress> >::const_iterator i = mod.begin(); i != mod.end(); ++i) {
 
  282         if (compare(i->address, address)) {
 
  284           DEBUG(
"Modifying parameters for PMT " << ps->first << 
' ' << i->action << 
' ' << i->key << 
' ' << i->value << endl);
 
  286           if (!i->apply(ps->second)) {
 
  287             ERROR(
"No valid action: " << *i << endl);
 
  296     for (JPMTParametersMap::iterator ps = parameters.begin(); ps != parameters.end(); ++ps) {
 
  298       for (
vector< JModifier<JPMTIdentifier> >::const_iterator i = daq.begin(); i != daq.end(); ++i) {
 
  300         if (compare(ps->first, i->address)) {
 
  302           DEBUG(
"Modifying parameters for PMT " << ps->first << 
' ' << i->action << 
' ' << i->key << 
' ' << i->value << endl);
 
  304           if (!i->apply(ps->second)) {
 
  305             ERROR(
"No valid action: " << *i << endl);
 
  315     DEBUG(
"Correct measured QE for two-hit probability " << mu << endl);
 
  318       parameters.convertHitProbabilityToQE(mu);
 
  324   } 
else if (mu < 0.0) {
 
  326     FATAL(
"Invalid expection value for two-hit probability " << mu << endl);
 
  330   if (T_ns != JRange_t()) {
 
  332     DEBUG(
"Correct measured QE for time-over-threshold range " << T_ns << endl);
 
  336     for (JPMTParametersMap::iterator i = parameters.begin(); i != parameters.end(); ++i) {
 
  341                                                           cpu.
getNPE(T_ns.getUpperLimit(), NPE),
 
  345                                                           cpu.
getNPE(T_ns.getUpperLimit(), NPE),
 
  353     parameters.comment.add(
JMeta(argc, argv));
 
  357     out << parameters << endl;
 
Utility class to parse command line options. 
 
double getIntegralOfChargeProbability(const double xmin, const double xmax, const int NPE) const 
Get integral of probability. 
 
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)...
 
JProperties getProperties(const JEquationParameters &equation=JPMTParameters::getEquationParameters())
Get properties of this class. 
 
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
 
int getTDC() const 
Get TDC. 
 
const T & getValue(const std::string &key) const 
Get value. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
int getID() const 
Get identifier. 
 
Auxiliary class for map of PMT parameters. 
 
char ring
ring number ['A','F'] 
 
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map. 
 
General purpose messaging. 
 
PMT analogue signal processor. 
 
virtual double getNPE(const double tot_ns, const double eps=1.0e-3) const 
Get number of photo-electrons. 
 
std::istream & operator>>(std::istream &in, JAANET::JHead &header)
Read header from input. 
 
virtual const char * what() const override
Get error message. 
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
Auxiliary class to define a range between two values. 
 
Utility class to parse command line options. 
 
int position
position within ring [1,6] 
 
PMT analogue signal processor. 
 
Data structure for PMT physical address. 
 
Data structure for PMT parameters. 
 
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 typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
 
#define DEBUG(A)
Message macros. 
 
int main(int argc, char *argv[])