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)) {
 
   95         const TH1*    
h1 = ( 
dynamic_cast<TProfile*
>(p) != NULL ? dynamic_cast<TProfile*>(p) :
 
   96                             (
dynamic_cast<TH1*
>(p)      != NULL ? dynamic_cast<TH1*>(p)      : NULL) );
 
   97         const TGraph* 
g1 = ( 
dynamic_cast<TGraph*
>(p)   != NULL ? dynamic_cast<TGraph*>(p)   : NULL );
 
   99         for (map_type::const_iterator i = zmap.begin(); i != zmap.end(); ++i) {
 
  101           const double    value = 
getResult(i->first, p);
 
  102           const JRange_t& 
range = i->second;
 
  104           DEBUG(
"Global test " << i->first << 
' ' << (range(value) ? 
"passed" : 
"failed") << endl);
 
  110         int number_of_events   = 0;
 
  111         int number_of_outliers = 0;
 
  115           for (Int_t i = 1; i <= h1->GetNbinsX(); ++i) {
 
  117             const Double_t 
x = h1->GetBinCenter (i);
 
  118             const Double_t y = h1->GetBinContent(i);
 
  120             if (
X(x) == !invertX) {
 
  124               const bool ok = (
Y(y) == !invertY);
 
  126               DEBUG(
"Test outlier " << h1->GetName() << 
" bin (" << i << 
") " << y << 
' ' << (ok ? 
"passed" : 
"failed") << endl);
 
  129                 ++number_of_outliers;
 
  134         } 
else if (g1 != NULL) {
 
  136           for (Int_t i = 0; i != g1->GetN(); ++i) {
 
  138             const Double_t x = g1->GetX()[i];
 
  139             const Double_t y = g1->GetY()[i];
 
  141             if (
X(x) == !invertX) {
 
  145               const bool ok = (
Y(y) == !invertY);
 
  147               DEBUG(
"Test outlier " << g1->GetName() << 
" bin (" << i << 
") " << y << 
' ' << (ok ? 
"passed" : 
"failed") << endl);
 
  150                 ++number_of_outliers;
 
  157           FATAL(
"Object at " << *input << 
" is not TH1 nor TGraph." << endl);
 
  161         cout << (number_of_outliers > numberOfOutliers ? 
RED : 
GREEN);
 
  162         NOTICE(
"Number of outliers \"" << p->GetName() << 
"\" = " << number_of_outliers << 
"/" << number_of_events << endl);
 
  165         if (number_of_outliers > numberOfOutliers) {
 
  166           ++number_of_failures;
 
  172   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.