35 const char*
const count_t =
"count";
36 const char*
const value_t =
"value";
40 double background = 5;
65 JParser<> zap(
"Program to test JRootfit algorithm.");
74 zap[
'O'] =
make_field(option) = count_t, value_t;
81 catch(
const exception& error) {
82 FATAL(error.what() << endl);
86 gRandom->SetSeed(seed);
90 const size_t nx = 20 * ls;
91 const double xmin = -5.0 * ls;
92 const double xmax = +5.0 * ls;
94 const size_t ny = 20 * ls;
95 const double ymin = -5.0 * ls;
96 const double ymax = +5.0 * ls;
98 const size_t nz = 20 * ls;
99 const double zmin = -5.0 * ls;
100 const double zmax = +5.0 * ls;
104 if (inputFile ==
"") {
106 h3 =
new TH3D(
"h3", NULL, nx,
xmin,
xmax, ny, ymin, ymax, nz, zmin, zmax);
123 TFile*
in = TFile::Open(inputFile.c_str(),
"exist");
125 in->GetObject(
"h3", h3);
131 const double x0 = h3->GetMean(1);
132 const double y0 = h3->GetMean(2);
133 const double z0 = h3->GetMean(3);
134 const double xs = h3->GetStdDev(1) * 0.17;
135 const double ys = h3->GetStdDev(2) * 0.17;
136 const double zs = h3->GetStdDev(3) * 0.17;
137 const double signal = h3->GetMaximum();
138 const double background = h3->GetMinimum() + 0.10;
143 auto f3 = (JGauss3X<1>(x0, xs) *
144 JGauss3Y<2>(y0, ys) *
145 JGauss3Z<3>(z0, zs) *
146 JP0<1>(signal)) + JP0<2>(background);
148 typedef decltype(
f3) function_type;
153 cout << setw(2) << i <<
' '
158 const chrono::steady_clock::time_point t0 = chrono::steady_clock::now();
160 const auto result = (option == count_t ?
161 (writeFits ? Fit<m_count>(h3,
f3, {},
X,
Y,
Z) : Fit<m_count>(*h3, f3, {},
X,
Y,
Z)) :
162 (writeFits ?
Fit<m_value>(h3, f3, {},
X,
Y,
Z) : Fit<m_value>(*h3, f3, {},
X,
Y,
Z)));
164 const chrono::steady_clock::time_point t1 = chrono::steady_clock::now();
166 cout <<
"chi2/NDF " <<
FIXED(7,3) <<
result.getChi2() <<
"/" <<
result.getNDF() << endl;
167 cout <<
"Number of iterations " <<
result.numberOfIterations << endl;
168 cout <<
"Elapsed time [us] " << setw(8) << chrono::duration_cast<chrono::microseconds>(t1 - t0).
count() << endl;
170 for (
size_t i = 0;
i !=
result.getNumberOfParameters(); ++
i) {
171 cout << setw(2) <<
i <<
' '
Utility class to parse command line options.
int getParameter(const std::string &text)
Get parameter number from text string.
#define gmake_property(A)
macros to convert (template) parameter to JPropertiesElement object
Utility class to parse parameter values.
then usage $script< input file >[option] nPossible options count
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
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
Auxiliary data structure for floating point format specification.
void FillRandom(TH1 *h1, const T &f1)
Fill 1D histogram according Poisson statistics with expectation values from given 1D function...
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
JRootfit_t< JF1_t > Fit(const TH1 &h1, const JF1_t &f1, const index_list &ls=index_list(), const range_type &X=range_type())
Global fit fuction.
then usage $script< input file >[option[primary[working directory]]] nWhere option can be N
then fatal The output file must have the wildcard in the e g root fi 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
no fit printf nominal n $STRING awk v X
do set_variable MODULE getModule a $WORKDIR detector_a datx L $STRING JEditDetector a $WORKDIR detector_a datx M $MODULE setz o $WORKDIR detector_a datx JEditDetector a $WORKDIR detector_b datx M $MODULE setz o $WORKDIR detector_b datx done echo Output stored at $WORKDIR detector_a datx and $WORKDIR tripod_a txt JDrawDetector2D a $WORKDIR detector_a datx a $WORKDIR detector_b datx L BL o detector $FORMAT $BATCH JDrawDetector2D T $WORKDIR tripod_a txt T $WORKDIR tripod_b txt L BL o tripod $FORMAT $BATCH JCompareDetector a $WORKDIR detector_a datx b $WORKDIR detector_b datx o $WORKDIR abc root &dev null for KEY in X Y Z
double f3(const double x, const double y, const double z)
3D function.
do echo n Creating graphics for string $STRING for((FLOOR=$FIRST_FLOOR;$FLOOR<=$LAST_FLOOR;FLOOR+=1))
size_t getNumberOfParameters()
Get number of parameters.