51int main(
int argc, 
char **argv)
 
   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);
 
   95    FATAL(
"Empty detector." << endl);
 
  100  for (vector<string>::const_iterator i = inputFile.begin(); i != inputFile.end(); ++i) {
 
  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,
 
  109                                          NUMBER_OF_PMTS,  -0.5, NUMBER_OF_PMTS  - 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);
 
  132    for (
int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
 
  136      for (
int i = 0; i != NUMBER_OF_FILES; ++i) {
 
  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;
 
  177      setAxisLabels(*i->second, 
"Y", demo.
get(
id));