40 const std::vector<G4double>& expa,
41 const std::vector<G4double>& expcs,
42 const std::vector<G4double>& experr,
45 : nuclz(z), izotop_chsq(0.), average_ratio(0.), aver_rat_err(0.),
46 aver_lhood(0.), aver_matched(0.), exper_as(expa), exper_cs(expcs),
47 exper_err(experr), checkable(check), nucleable(nucl) {}
52 if (std::abs(z-nuclz) >= small)
return;
55 G4int simulatedAsSize = simulated_as.size();
56 for (
G4int i = 0; i<simulatedAsSize && !here; i++) {
57 if (std::abs(simulated_as[i] - a) < small) {
58 simulated_cs[i] += 1.0;
64 simulated_as.push_back(a);
65 simulated_cs.push_back(1.0);
70 G4int simulatedAsSize = simulated_as.size();
71 for(
G4int i = 0; i < simulatedAsSize ; i++) {
72 double err = std::sqrt(simulated_cs[i]) / simulated_cs[i];
74 simulated_prob.push_back(simulated_cs[i] / nev);
75 simulated_cs[i] *= csec / nev;
76 simulated_errors.push_back(simulated_cs[i] * err);
84 G4int experAsSize = exper_as.size();
85 for(
G4int iz = 0; iz < experAsSize; iz++) {
90 return std::pair<G4double, G4double>(cs, err);
96 G4int simulatedAsSize = simulated_as.size();
97 for(
G4int iz = 0; iz < simulatedAsSize; iz++) {
98 cs += simulated_cs[iz];
99 err += simulated_errors[iz];
102 return std::pair<G4double, G4double>(cs, err);
108 G4cout <<
"\n ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "
109 <<
"\n **** izotop Z **** " << nuclz <<
G4endl;
118 std::vector<G4bool> not_used(simulated_cs.size(),
true);
119 G4int nmatched = exper_as.size();
120 G4int nused = simulated_cs.size();
122 G4int experAsSize = exper_as.size();
124 for (
G4int iz = 0; iz < experAsSize; iz++) {
127 exp_cs += exper_cs[iz];
128 exp_cs_err += exper_err[iz];
131 G4int simulatedAsSize = simulated_as.size();
132 for (
G4int i = 0; i<simulatedAsSize && !found; i++) {
133 if (std::fabs(simulated_as[i] - a) < small) {
134 G4double rat = simulated_cs[i] / exper_cs[iz];
136 lhood += std::log10(rat) * std::log10(rat);
139 = std::sqrt(simulated_errors[i]*simulated_errors[i] +
140 exper_err[iz]*exper_err[iz] * rat*rat) / exper_cs[iz];
141 average_ratio += rat;
142 aver_rat_err += rat_err;
144 G4cout <<
" A " << a <<
" exp.cs " << exper_cs[iz] <<
" err "
145 << exper_err[iz] <<
G4endl <<
" sim. cs " << simulated_cs[i]
146 <<
" err " << simulated_errors[i] <<
G4endl
147 <<
" ratio " << rat <<
" err " << rat_err <<
G4endl
148 <<
" simulated production rate " << simulated_prob[i] <<
G4endl;
151 izotop_chsq += (rat - 1.0) * (rat - 1.0) / rat_err / rat_err;
157 if (found) nmatched--;
159 G4cout <<
" not found exper.: A " << a <<
" exp.cs " << exper_cs[iz]
160 <<
" err " << exper_err[iz] <<
G4endl;
163 G4cout <<
" not found in simulations " << nmatched <<
G4endl
164 <<
" not found in exper: " << nused <<
G4endl;
166 G4int simulatedAsSize = simulated_as.size();
167 for(
G4int i = 0; i < simulatedAsSize; i++) {
168 inucl_cs += simulated_cs[i];
169 inucl_cs_err += simulated_errors[i];
172 G4cout <<
" extra simul.: A " << simulated_as[i] <<
" sim. cs "
173 << simulated_cs[i] <<
" err " << simulated_errors[i] <<
G4endl;
175 G4cout <<
" simulated production rate " << simulated_prob[i] <<
G4endl;
178 G4int matched = exper_as.size() - nmatched;
182 aver_matched = matched;
183 lhood = std::pow(10.0, std::sqrt(lhood/matched));
185 G4cout <<
" matched " << matched <<
" CHSQ " << std::sqrt(izotop_chsq) / matched
187 <<
" raw chsq " << izotop_chsq <<
G4endl
188 <<
" average ratio " << average_ratio / matched
189 <<
" err " << aver_rat_err / matched <<
G4endl
190 <<
" lhood " << lhood <<
G4endl;
197 G4cout <<
" exper. cs " << exp_cs <<
" err " << exp_cs_err <<
G4endl
198 <<
" inucl. cs " << inucl_cs <<
" err " << inucl_cs_err <<
G4endl
199 <<
" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "
G4GLOB_DLL std::ostream G4cout
std::pair< G4double, G4double > getInuclCs() const
std::pair< G4double, G4double > getExpCs() const
G4NuclWatcher(G4int z, const std::vector< G4double > &expa, const std::vector< G4double > &expcs, const std::vector< G4double > &experr, G4bool check, G4bool nucl)
void watch(G4int a, G4int z)
void setInuclCs(G4double csec, G4int nev)