36{
   39 
   41  string               usr;
   42  string               pwd;
   43  string               cookie;
   44  string               detectorFile;
   45  string               inputFile;
   49 
   50  try {
   51 
   52    JParser<> zap(
"Auxiliary application to plot PMT parameters as a function of variant.");
 
   53    
   58    zap[
'a'] = 
make_field(detectorFile,      
"detector file.");
 
   59    zap[
'f'] = 
make_field(inputFile,         
"output of JPrintDB -q \"integration\" -c \";\" -W1")  = 
"";
 
   61    zap[
'P'] = 
make_field(parameters,        
"PMT calibration data (or corresponding file name)");
 
   63 
   64    zap(argc, argv);
   65  }
   66  catch(const exception &error) {
   67    FATAL(error.what() << endl);
 
   68  }
   69 
   70 
   72 
   73  try {
   75  }
   78  }
   79 
   81 
   83 
   84  string detid = "";
   85 
   86  try {
   87 
   88    JDB::reset(usr, pwd, cookie);
   89 
   91  }
   92  catch(const exception& error) {
   93    FATAL(error.what() << endl);
 
   94  }
   95 
   96  if (inputFile != "") {
   97 
   98    integration.
load(inputFile.c_str());
 
   99 
  100  } else {
  101 
  102    DEBUG(
"Reading database table " << getTable<JDetectorIntegration_t>() << endl); 
 
  103 
  104    try {
  105 
  106      ResultSet& rs  = 
getResultSet(getTable<JDetectorIntegration_t>());
 
  107 
  108      if (! (rs >> integration)) {
  110      }
  111    }
  112    catch(const exception& error) {
  113      FATAL(error.what() << endl);
 
  114    }
  115  }
  116  
  118 
  119  const JProductRouter product(integration, getPBSSequences(PBS::PMT));
 
  120 
  122 
  123  JManager<string, TH1D> H1(new TH1D("TTS_ns[%]",     NULL, 100, 0.0, 4.0));
  124  JManager<string, TH1D> H2(new TH1D("QE[%]",         NULL, 100, 0.0, 2.0));
  125  JManager<string, TH1D> H3(new TH1D("gain[%]",       NULL, 100, 0.0, 2.0));
  126  JManager<string, TH1D> H4(new TH1D("gainSpread[%]", NULL, 100, 0.0, 1.0));
  127 
  129    
  130    const JUPI_t      upi      = integration[i->second].content.getUPI();
 
  131    const JLocation_t location = product.getLocation(upi);
 
  132 
  133    DEBUG(
"PMT " << left << setw(24) << upi.
getVariant() << right << 
' ' << location << endl); 
 
  134 
  136 
  139    
  144    }
  145  }
  146 
  148 
  149  out << H1 << H2 << H3 << H4;
  150 
  151  out.Write();
  152  out.Close();
  153}
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Router for direct addressing of location data in detector data structure.
Logical location of module.
Data structure for a composite optical module.
Auxiliary class for map of PMT parameters.
const JPMTParameters & getPMTParameters(const JPMTIdentifier &id) const
Get PMT parameters.
Data structure for PMT parameters.
double QE
relative quantum efficiency
double gainSpread
gain spread [unit]
double TTS_ns
transition time spread [ns]
int getID() const
Get identifier.
Utility class to parse command line options.
ResultSet & getResultSet(const std::string &query)
Get result set.
JDetectorsHelper & getDetector()
Auxiliary function for helper object initialisation.
std::vector< JServer > getServernames()
Get list of names of available database servers.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
void load(const char *const file_name, const std::string &separator=";")
Load detector integration from CSV formatted input file.
map_type::const_iterator range_const_iterator
void configure(const std::string &detid, const bool option=false)
Configure detector integration for given detector identifier.
range_type find(const JUPI_t &upi) const
Find range of products with given UPI.
Auxiliary data structure for location of product in detector.
int string
position in detector
bool is_valid() const
Check validity of location.
int floor
position in string
int position
position in floor
Auxiliary class to map UPI to location in detector.
Wrapper class for server name.
Universal product identifier (UPI).
const std::string & getVariant() const
Get variant.