35   inline double getEfficiency(
const JPMTParameters& 
parameters)
 
   40   static const char* 
const EFFICIENCY = 
"EFFICIENCY";
 
   51 int main(
int argc, 
char **argv)
 
   55   using namespace KM3NETDAQ;
 
   68     JParser<> zap(
"Auxiliary application to plot PMT parameters.");
 
   70     zap[
'a'] = 
make_field(detectorFile,      
"detector file.");
 
   71     zap[
'P'] = 
make_field(inputFile,         
"PMT calibration data file(s)");
 
   73     zap[
'r'] = 
make_field(regexp,            
"regular expresion to extract bin labels for the x-axis")  = 
"";
 
   74     zap[
'A'] = 
make_field(showPMTAddress,    
"show PMT address on y-axis");
 
   75     zap[
'L'] = 
make_field(labelInterval,     
"interval between x-axis bins for which labels are shown") = 1;
 
   76     zap[
'R'] = 
make_field(relative,          
"monitor changes relative to first input");
 
   81   catch(
const exception &error) {
 
   82     FATAL(error.what() << endl);
 
   90   catch(
const JException& error) {
 
   95     FATAL(
"Empty detector." << endl);
 
  101     parameters.push_back(JPMTParametersMap(
i->c_str()));
 
  105   const int NUMBER_OF_FILES = 
parameters.size();
 
  107   JManager<string, TH2D> manager(
new TH2D(
"%", NULL,
 
  108                                           NUMBER_OF_FILES, -0.5, NUMBER_OF_FILES - 0.5,
 
  111   manager->Sumw2(kFALSE);
 
  115     const int n = (NUMBER_OF_FILES < labelInterval) ? 1 : labelInterval;
 
  117     const TPRegexp buffer(regexp);
 
  119     for (
int i = 0; 
i != NUMBER_OF_FILES; ++
i) {
 
  122         manager->GetXaxis()->SetBinLabel(
i+1 , 
parse(buffer, TString(inputFile[
i].c_str())));
 
  124         manager->GetXaxis()->SetBinLabel(
i+1 , 
" ");
 
  128   for (JDetector::iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  130     DEBUG(
"Module " << setw(10) << module->getID() << endl);
 
  136       for (
int i = 0; 
i != NUMBER_OF_FILES; ++
i) {
 
  138         const JProperties properties = 
parameters[
i].getPMTParameters(JPMTIdentifier(module->getID(), pmt)).getProperties();
 
  140         for (JProperties::const_iterator p = properties.begin(); p != properties.end(); ++p) {
 
  144           try { value = (p->second.getValue<
const double>()); }           
catch(
const exception& error) {}
 
  145           try { value = (p->second.getValue<
const bool>() ? 1.0 : 0.0); } 
catch(
const exception& error) {}
 
  147           if (
i  ==  0) { buffer[p->first] = value;  }
 
  148           if (relative) { value -= buffer[p->first]; }
 
  150           manager[
MAKE_CSTRING(module->getID() << 
"." << p->first)]->SetBinContent(
i + 1, pmt + 1, value);
 
  153         double value = getEfficiency(
parameters[
i].getPMTParameters(JPMTIdentifier(module->getID(), pmt)));
 
  155         if (
i  ==  0) { buffer[EFFICIENCY] = value;  }
 
  156         if (relative) { value -= buffer[EFFICIENCY]; }
 
  158         manager[
MAKE_CSTRING(module->getID() << 
"." << EFFICIENCY)]->SetBinContent(
i + 1, pmt + 1, value);
 
  163   for (JManager<string, TH2D>::iterator 
i = manager.begin(); 
i != manager.end(); ++
i) {
 
  164     i->second->Sumw2(kFALSE);
 
  167   if (showPMTAddress) {
 
  171     for (JManager<string, TH2D>::iterator 
i = manager.begin(); 
i != manager.end(); ++
i) {
 
  175       istringstream(
i->first) >> id;
 
Utility class to parse command line options. 
 
int main(int argc, char *argv[])
 
Utility class to parse parameter values. 
 
*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
 
#define MAKE_CSTRING(A)
Make C-string. 
 
Dynamic ROOT object management. 
 
Data structure for detector geometry and calibration. 
 
boost::property_tree::ptree parse(std::string str)
 
I/O formatting auxiliaries. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
void setAxisLabels(TAxis *axis, const JModuleAddressMap &memo)
Set axis with PMT address labels. 
 
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map. 
 
General purpose messaging. 
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
Utility class to parse command line options. 
 
double getSurvivalProbability(const JPMTParameters ¶meters)
Get model dependent probability that a one photo-electron hit survives the simulation of the PMT assu...
 
Data structure for PMT parameters. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
KM3NeT DAQ constants, bit handling, etc. 
 
static const int NUMBER_OF_PMTS
Total number of PMTs in module. 
 
#define DEBUG(A)
Message macros.