35   typedef JRange<Double_t>        JRange_t;
 
   49     JParser<> zap(
"Auxiliary program to test contents of 1D histograms.");
 
   51     zap[
'f'] = 
make_field(inputFile,  
"measurement histogram, e.g: <file name>:<object name>");
 
   52     zap[
'x'] = 
make_field(
X,          
"accepted x-range values")   = JRange_t();
 
   53     zap[
'y'] = 
make_field(
Y,          
"accepted y-range values")   = JRange_t();
 
   62   catch(
const exception &error) {
 
   63     FATAL(error.what() << endl);
 
   67   int number_of_failures = 0;
 
   71     DEBUG(
"Input: " << *input << endl);
 
   76       FATAL(
"File: " << input->getFullFilename() << 
" not opened." << endl);
 
   79     const TRegexp regexp(input->getObjectName());
 
   81     TIter iter(dir->GetListOfKeys());
 
   83     for (TKey* key; (key = (TKey*) iter.Next()) != NULL; ) {
 
   85       const TString tag(key->GetName());
 
   87       DEBUG(
"Key: " << tag << 
" match = " << tag.Contains(regexp) << endl);
 
   91       if (tag.Contains(regexp) && 
isTObject(key)) {
 
   99         if (h1 == NULL && dynamic_cast<TProfile*>(p) != NULL) { h1 = 
dynamic_cast<TProfile*
>(p)->ProjectionX(); }
 
  101         if (h1 == NULL && dynamic_cast<TH1*>(p)      != NULL) { h1 = 
dynamic_cast<TH1*
>(p); }
 
  103         if (g1 == NULL && dynamic_cast<TGraph*>(p)   != NULL) { g1 = 
dynamic_cast<TGraph*
>(p); }
 
  106         for (map_type::const_iterator i = zmap.begin(); i != zmap.end(); ++i) {
 
  108           const double    value = 
getResult(i->first, p);
 
  109           const JRange_t& 
range = i->second;
 
  111           DEBUG(
"Global test " << i->first << 
' ' << (range(value) ? 
"passed" : 
"failed") << endl);
 
  117         int number_of_events   = 0;
 
  118         int number_of_outliers = 0;
 
  122           for (Int_t i = 1; i <= h1->GetNbinsX(); ++i) {
 
  124             const Double_t 
x = h1->GetBinCenter (i);
 
  125             const Double_t y = h1->GetBinContent(i);
 
  127             if (
X(x) == !invertX) {
 
  131               const bool ok = (
Y(y) == !invertY);
 
  133               DEBUG(
"Test outlier " << h1->GetName() << 
" bin (" << i << 
") " << y << 
' ' << (ok ? 
"passed" : 
"failed") << endl);
 
  136                 ++number_of_outliers;
 
  141         } 
else if (g1 != NULL) {
 
  143           for (Int_t i = 0; i != g1->GetN(); ++i) {
 
  145             const Double_t x = g1->GetX()[i];
 
  146             const Double_t y = g1->GetY()[i];
 
  148             if (
X(x) == !invertX) {
 
  152               const bool ok = (
Y(y) == !invertY);
 
  154               DEBUG(
"Test outlier " << g1->GetName() << 
" bin (" << i << 
") " << y << 
' ' << (ok ? 
"passed" : 
"failed") << endl);
 
  157                 ++number_of_outliers;
 
  164           FATAL(
"Object at " << *input << 
" is not TH1 nor TGraph." << endl);
 
  168         cout << (number_of_outliers > numberOfOutliers ? 
RED : 
GREEN);
 
  169         NOTICE(
"Number of outliers \"" << p->GetName() << 
"\" = " << number_of_outliers << 
"/" << number_of_events << endl);
 
  172         if (number_of_outliers > numberOfOutliers) {
 
  173           ++number_of_failures;
 
  179   ASSERT(number_of_failures == 0);
 
Utility class to parse command line options. 
 
then for HISTOGRAM in h0 h1
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
then fatal Wrong number of arguments fi set_variable STRING $argv[1] set_variable DETECTORXY_TXT $WORKDIR $DETECTORXY_TXT tail read X Y CHI2 RMS printf optimum n $X $Y $CHI2 $RMS awk v Y
 
#define ASSERT(A,...)
Assert macro. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
Double_t getResult(const TString &text, TObject *object=NULL)
Get result of given textual formula. 
 
then break fi done getCenter read X Y Z let X
 
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
 
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
 
bool isTObject(const TKey *key)
Check if given key corresponds to a TObject. 
 
TDirectory * getDirectory(const JRootObjectID &id)
Get TDirectory pointer. 
 
Double_t g1(const Double_t x)
Function.