30{
33
35
38 JRange_t X;
39 JRange_t Y;
40 JRange_t Z;
41 double precision;
43
44 try {
45
46 JParser<> zap(
"Auxiliary program to zoom 3D histograms.");
47
48 zap[
'f'] =
make_field(inputFile,
"<input file>:<object name>");
55
57 }
58 catch(const exception &error) {
60 }
61
63
65
67
69
71 ERROR(
"File: " << input->getFullFilename() <<
" not opened." <<
endl);
72 continue;
73 }
74
76
78
80
81 const TString tag(
key->GetName());
82
84
85
86
88
90
92
93 const Int_t ix1 = max(
ha->GetXaxis()->FindBin(X.getLowerLimit()), 1);
94 const Int_t ix2 = min(
ha->GetXaxis()->FindBin(X.getUpperLimit()),
ha->GetXaxis()->GetNbins());
95 const Int_t iy1 = max(
ha->GetYaxis()->FindBin(Y.getLowerLimit()), 1);
96 const Int_t iy2 = min(
ha->GetYaxis()->FindBin(Y.getUpperLimit()),
ha->GetYaxis()->GetNbins());
97 const Int_t iz1 = max(
ha->GetZaxis()->FindBin(Z.getLowerLimit()), 1);
98 const Int_t iz2 = min(
ha->GetZaxis()->FindBin(Z.getUpperLimit()),
ha->GetZaxis()->GetNbins());
99
101 <<
"[" <<
ix1 <<
"," <<
ix2 <<
"]" <<
" x "
102 <<
"[" <<
iy1 <<
"," <<
iy2 <<
"]" <<
" x "
104
106 ix2 -
ix1 + 1,
ha->GetXaxis()->GetBinLowEdge(
ix1),
ha->GetXaxis()->GetBinUpEdge(
ix2),
107 iy2 -
iy1 + 1,
ha->GetYaxis()->GetBinLowEdge(
iy1),
ha->GetYaxis()->GetBinUpEdge(
iy2),
108 iz2 -
iz1 + 1,
ha->GetZaxis()->GetBinLowEdge(
iz1),
ha->GetZaxis()->GetBinUpEdge(
iz2));
109
110 if (fabs(
ha->GetXaxis()->GetBinWidth(1) -
hb->GetXaxis()->GetBinWidth(1)) > precision) {
111 FATAL(
"Binwidth x " <<
FIXED(9,5) <<
ha->GetXaxis()->GetBinWidth(1) <<
" != " <<
FIXED(9,5) <<
hb->GetXaxis()->GetBinWidth(1) <<
endl);
112 }
113 if (fabs(
ha->GetYaxis()->GetBinWidth(1) -
hb->GetYaxis()->GetBinWidth(1)) > precision) {
114 FATAL(
"Binwidth y " <<
FIXED(9,5) <<
ha->GetYaxis()->GetBinWidth(1) <<
" != " <<
FIXED(9,5) <<
hb->GetYaxis()->GetBinWidth(1) <<
endl);
115 }
116 if (fabs(
ha->GetZaxis()->GetBinWidth(1) -
hb->GetZaxis()->GetBinWidth(1)) > precision) {
117 FATAL(
"Binwidth z " <<
FIXED(9,5) <<
ha->GetZaxis()->GetBinWidth(1) <<
" != " <<
FIXED(9,5) <<
hb->GetZaxis()->GetBinWidth(1) <<
endl);
118 }
119
123
125
126 if (
ha->GetSumw2N()) {
128 }
129 }
130 }
131 }
132
134 }
135 }
136 }
137 }
138
140
142
144 (*i)->Write();
145 }
146
147 out.Write();
148 out.Close();
149 }
150}
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
#define MAKE_CSTRING(A)
Make C-string.
Template definition of a multi-dimensional oscillation probability interpolation table.
Utility class to parse command line options.
TDirectory * getDirectory(const JRootObjectID &id)
Get TDirectory pointer.
bool isTObject(const TKey *key)
Check if given key corresponds to a TObject.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary data structure for floating point format specification.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...