29 int main(
int argc, 
char **argv)
 
   43     JParser<> zap(
"Auxiliary program to project single PMT data from 2D histogram.");
 
   45     zap[
'a'] = 
make_field(detectorFile,   
"detector file.");
 
   46     zap[
'f'] = 
make_field(inputFile,      
"input file.");
 
   54   catch(
const exception &error) {
 
   55     FATAL(error.what() << endl);
 
   59   gErrorIgnoreLevel = kError;
 
   67   catch(
const JException& error) {
 
   71   const JModuleRouter router(
detector);
 
   73   const JModule&      module = router.getModule(pmt.getModuleID());
 
   75   JCombinatorics combinatorics;
 
   77   combinatorics.configure(module.size());
 
   79   combinatorics.sort(JPairwiseComparator(module));
 
   83     for (
size_t i = 0; 
i != combinatorics.getNumberOfPairs(); ++
i) {
 
   87       cout << setw(3) << 
i << 
" -> (" << 
FILL(2,
'0') << pair.first << 
"," << 
FILL(2,
'0') << pair.second << 
FILL() << 
")" << endl;
 
   91   TFile 
in(inputFile.c_str(), 
"read");
 
   93   TH2D* h2 = (TH2D*) 
in.Get(
MAKE_CSTRING(pmt.getModuleID() << extension));
 
   96     FATAL(
"Missing histogram for module " << pmt.getModuleID() << endl);
 
   99   TH1D  ha(
MAKE_CSTRING(pmt.getModuleID() << 
'.' << 
FILL(2,
'0') << pmt.getTDC() << 
".1D"), NULL,
 
  100            h2->GetYaxis()->GetNbins(), h2->GetYaxis()->GetXmin(), h2->GetYaxis()->GetXmax());
 
  102   TH2D  hb(
MAKE_CSTRING(pmt.getModuleID() << 
'.' << 
FILL(2,
'0') << pmt.getTDC() << 
".2D"), NULL,
 
  103            module.size(), -0.5, module.size() - 0.5,
 
  104            h2->GetYaxis()->GetNbins(), h2->GetYaxis()->GetXmin(), h2->GetYaxis()->GetXmax());
 
  106   for (
int i = 0; 
i != (int) module.size(); ++
i) {
 
  108     if (
i != pmt.getTDC()) {
 
  110       const Int_t ix = combinatorics.getIndex(pmt.getTDC(), 
i) + 1;
 
  112       for (Int_t iy = 1; iy <= h2->GetYaxis()->GetNbins(); ++iy) {
 
  114         ha.SetBinContent(iy,       ha.GetBinContent(iy) + h2->GetBinContent(ix,iy));
 
  115         ha.SetBinError  (iy, hypot(ha.GetBinError  (iy),  h2->GetBinError  (ix,iy)));
 
  117         hb.SetBinContent(
i + 1, iy, h2->GetBinContent(ix,iy));
 
  118         hb.SetBinError  (
i + 1, iy, h2->GetBinError  (ix,iy));
 
Utility class to parse command line options. 
 
int main(int argc, char *argv[])
 
#define MAKE_CSTRING(A)
Make C-string. 
 
Data structure for detector geometry and calibration. 
 
static const char *const _2F
Name extension for 2F rate fitted. 
 
I/O formatting auxiliaries. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
static const char *const _2R
Name extension for 2D rate measured. 
 
General purpose messaging. 
 
Auxiliary data structure for sequence of same character. 
 
Direct access to module in detector data structure. 
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
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 JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
 
Utility class to parse command line options. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
static const char *const _2S
Name extension for 2D counts.