42{
   45 
   47  JLimit_t&       numberOfEvents = inputFile.getLimit();
 
   48  string          detectorFile;
   50  double          Tmax_s;
   52 
   53  try {
   54 
   55    JParser<> zap(
"Example program to check contents of acoustic events.");
 
   56 
   57    zap[
'f'] = 
make_field(inputFile,       
"output of JKatoomba[.sh]");
 
   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 
   80 
   82 
   83  STATUS(
"loading input from file(s) " << inputFile << 
"... " << flush);
 
   84 
   85  dynamics.load(inputFile);
   86 
   88 
   90 
   91  const double Z = cylinder.getZmax() * 0.5;
   92  
   95 
   96  Double_t xmin = numeric_limits<Double_t>::max();
   97  Double_t xmax = numeric_limits<Double_t>::lowest();
   98 
  100 
  101    if (!string->second.empty()) {
  102      xmin = min(xmin, string->second.getXmin());
  103      xmax = max(xmax, string->second.getXmax());
  104    }
  105  }
  106 
  107  const JFormat_t format(4, 0, std::ios_base::fmtflags(), 
'0');
 
  108 
  109  JManager<int, TH2D> H2(
new TH2D  (
"[%].tilt", NULL, 300, -3.0, +3.0, 300, -3.0, +3.0), 
'%', format);
 
  111 
  112  JManager<int, TH1D> HO(
new TH1D  (
"H[%].orientation", NULL, 1000, xmin, xmax), 
'%', format);
 
  114 
  116 
  117    TH1D* ho = HO[string->first];
  118    TH1D* ha = HA[string->first];
  119 
  120    for (Int_t i = 1; i <= HO->GetXaxis()->GetNbins(); ++i) {
  121 
  122      const Double_t 
x = HO->GetXaxis()->GetBinCenter(i);
 
  123 
  124      try {
  125 
  127 
  128        ho->SetBinContent(i, tilt.
getAngle());
 
  130      }
  131      catch(const exception& error) {
  132        
  133      }
  134    }
  135  }
  136 
  137 
  139 
  140    if (string->second.size() > 1) {
  141 
  142      TH2D* h2 = H2[string->first];
  143      TH1D* ht = HT[string->first];
  144 
  146 
  147        const double t1 = q->getX() - p->getX();
  148        
  149        HT->Fill(log10(t1));
  150        ht->Fill(log10(t1));
  151 
  152        const double tx = 600.0e3 * ((q->getY().tx + q->getY().tx2 * Z) - (p->getY().tx + p->getY().tx2 * Z)) / t1;     
  153        const double ty = 600.0e3 * ((q->getY().ty + q->getY().ty2 * Z) - (p->getY().ty + p->getY().ty2 * Z)) / t1;     
  154        
  155        if (t1 > 0 && t1 < Tmax_s) {
  156          H2->Fill(tx, ty);
  157          h2->Fill(tx, ty);
  158        }
  159      }
  160 
  162        ZO[string->first].put(i->getX(), i->getY().getAngle());
  163        ZA[string->first].put(i->getX(), i->getY().getLength());
  164      }
  165    }
  166  }
  167 
  168  
  170 
  171  out << *H2 << H2 << *HT << HT << HO << HA;
  172 
  175  }
  176 
  179  }
  180 
  181  out.Write();
  182  out.Close();
  183}
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
#define MAKE_CSTRING(A)
Make C-string.
 
Utility class to parse command line options.
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys.
 
General purpose class for object reading from a list of file names.
 
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).
 
Auxiliary data structure for sequence of same character.
 
double getAngle() const
Get angle.
 
double getLength() const
Get length.
 
data_type::const_iterator const_iterator
 
Dynamic detector calibration.
 
Auxiliary data structure to build TGraph.
 
Auxiliary class for defining the range of iterations of objects.
 
static counter_type max()
Get maximum counter value.