|
18 | 18 | #include "Framework/TimingInfo.h" |
19 | 19 | #include "Framework/InputRecord.h" |
20 | 20 | #include "DataFormatsTRD/Constants.h" |
21 | | -#include "Fit/Fitter.h" |
22 | 21 | #include "TStopwatch.h" |
23 | 22 | #include "CCDB/CcdbApi.h" |
24 | 23 | #include "CCDB/BasicCCDBManager.h" |
@@ -110,6 +109,20 @@ void CalibratorVdExB::initProcessing() |
110 | 109 | for (int iDet = 0; iDet < MAXCHAMBER; ++iDet) { |
111 | 110 | mFitFunctor.profiles[iDet] = std::make_unique<TProfile>(Form("profAngleDiff_%i", iDet), Form("profAngleDiff_%i", iDet), NBINSANGLEDIFF, -MAXIMPACTANGLE, MAXIMPACTANGLE); |
112 | 111 | } |
| 112 | + |
| 113 | + mFitter.SetFCN<FitFunctor>(2, mFitFunctor, mParamsStart); |
| 114 | + mFitter.Config().ParSettings(ParamIndex::LA).SetLimits(-0.7, 0.7); |
| 115 | + mFitter.Config().ParSettings(ParamIndex::LA).SetStepSize(.01); |
| 116 | + mFitter.Config().ParSettings(ParamIndex::VD).SetLimits(0., 3.); |
| 117 | + mFitter.Config().ParSettings(ParamIndex::VD).SetStepSize(.01); |
| 118 | + ROOT::Math::MinimizerOptions opt; |
| 119 | + opt.SetMinimizerType("Minuit2"); |
| 120 | + opt.SetMinimizerAlgorithm("Migrad"); |
| 121 | + opt.SetPrintLevel(0); |
| 122 | + opt.SetMaxFunctionCalls(1'000); |
| 123 | + opt.SetTolerance(.001); |
| 124 | + mFitter.Config().SetMinimizerOptions(opt); |
| 125 | + |
113 | 126 | mInitDone = true; |
114 | 127 | } |
115 | 128 |
|
@@ -165,24 +178,11 @@ void CalibratorVdExB::finalizeSlot(Slot& slot) |
165 | 178 | LOGF(debug, "Chamber %d did not reach minimum amount of entries for refit", iDet); |
166 | 179 | continue; |
167 | 180 | } |
168 | | - ROOT::Fit::Fitter fitter; |
169 | | - double paramsStart[2]; |
170 | | - paramsStart[ParamIndex::LA] = 0. * TMath::DegToRad(); |
171 | | - paramsStart[ParamIndex::VD] = 1.; |
172 | | - fitter.SetFCN<FitFunctor>(2, mFitFunctor, paramsStart); |
173 | | - fitter.Config().ParSettings(ParamIndex::LA).SetLimits(-0.7, 0.7); |
174 | | - fitter.Config().ParSettings(ParamIndex::LA).SetStepSize(.01); |
175 | | - fitter.Config().ParSettings(ParamIndex::VD).SetLimits(0., 3.); |
176 | | - fitter.Config().ParSettings(ParamIndex::VD).SetStepSize(.01); |
177 | | - ROOT::Math::MinimizerOptions opt; |
178 | | - opt.SetMinimizerType("Minuit2"); |
179 | | - opt.SetMinimizerAlgorithm("Migrad"); |
180 | | - opt.SetPrintLevel(0); |
181 | | - opt.SetMaxFunctionCalls(1'000); |
182 | | - opt.SetTolerance(.001); |
183 | | - fitter.Config().SetMinimizerOptions(opt); |
184 | | - fitter.FitFCN(); |
185 | | - auto fitResult = fitter.Result(); |
| 181 | + // Reset Start Parameter |
| 182 | + mParamsStart[ParamIndex::LA] = 0.0; |
| 183 | + mParamsStart[ParamIndex::VD] = 1.0; |
| 184 | + mFitter.FitFCN(); |
| 185 | + auto fitResult = mFitter.Result(); |
186 | 186 | laFitResults[iDet] = fitResult.Parameter(ParamIndex::LA); |
187 | 187 | vdFitResults[iDet] = fitResult.Parameter(ParamIndex::VD); |
188 | 188 | LOGF(debug, "Fit result for chamber %i: vd=%f, la=%f", iDet, vdFitResults[iDet], laFitResults[iDet] * TMath::RadToDeg()); |
|
0 commit comments