97TGHorizontalFrame*
TParameterInput::Build(
const std::string& name,
const Int_t& baseId,
const Double_t& xmin,
const Double_t& xmax)
106 fLabel =
new TGLabel(
this, name.c_str());
107 fSlider =
new TGTripleHSlider(
this, 200, kDoubleScaleBoth,
fBaseId, kHorizontalFrame);
108 fEntryLow =
new TGNumberEntry(
this, 0, 6,
fBaseId, TGNumberFormat::kNESRealOne, TGNumberFormat::kNEANonNegative, TGNumberFormat::kNELLimitMinMax, xmin, xmax);
109 fEntry =
new TGNumberEntry(
this, 0, 6,
fBaseId + 2, TGNumberFormat::kNESRealOne, TGNumberFormat::kNEANonNegative, TGNumberFormat::kNELLimitMinMax, xmin, xmax);
110 fEntryHigh =
new TGNumberEntry(
this, 0, 6,
fBaseId + 1, TGNumberFormat::kNESRealOne, TGNumberFormat::kNEANonNegative, TGNumberFormat::kNELLimitMinMax, xmin, xmax);
113 AddFrame(
fLabel,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 1, 1, 1, 1));
114 AddFrame(
fSlider,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
116 AddFrame(
fEntryHigh,
new TGLayoutHints(kLHintsTop | kLHintsRight, 1, 1, 1, 1));
117 AddFrame(
fEntry,
new TGLayoutHints(kLHintsTop | kLHintsRight, 1, 1, 1, 1));
118 AddFrame(
fEntryLow,
new TGLayoutHints(kLHintsTop | kLHintsRight, 1, 1, 1, 1));
223 fLeftFrame =
new TGVerticalFrame(
this, 400, 400);
235 std::array<Int_t, 3> parts = {25, 25, 50};
236 fStatusBar->SetParts(parts.data(), parts.size());
292 fLeftFrame->AddFrame(
fFitCanvas,
new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX | kLHintsExpandY, 1, 1, 1, 2));
293 fLeftFrame->AddFrame(
fStatusBar,
new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 1, 1, 1, 2));
294 fLeftFrame->AddFrame(
fCalibrationCanvas,
new TGLayoutHints(kLHintsBottom | kLHintsCenterX | kLHintsExpandX | kLHintsExpandY, 1, 1, 2, 1));
296 fRightFrame->AddFrame(
fAmplitude,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
297 fRightFrame->AddFrame(
fPosition,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
298 fRightFrame->AddFrame(
fSigma,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
299 fRightFrame->AddFrame(
fDSigma,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
300 fRightFrame->AddFrame(
fPeakAmp,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
301 fRightFrame->AddFrame(
fPeakPos,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
302 fRightFrame->AddFrame(
fPeakSigma,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
303 fRightFrame->AddFrame(
fNoiseAmp,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
304 fRightFrame->AddFrame(
fNoisePos,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
305 fRightFrame->AddFrame(
fNoiseSigma,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
306 fRightFrame->AddFrame(
fThreshold,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
308 fRightFrame->AddFrame(
fBgConst,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
309 fRightFrame->AddFrame(
fBgAmp,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
311 fRightFrame->AddFrame(
fCutoff,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
315 fRightFrame->AddFrame(
fTopButtonFrame,
new TGLayoutHints(kLHintsBottom | kLHintsLeft | kLHintsExpandX | kLHintsExpandY, 1, 1, 1, 1));
317 AddFrame(
fLeftFrame,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX | kLHintsExpandY, 1, 1, 1, 1));
318 AddFrame(
fRightFrame,
new TGLayoutHints(kLHintsTop | kLHintsRight | kLHintsExpandX | kLHintsExpandY, 1, 1, 1, 1));
320 SetWindowName(
"Descant Calibration");
323 Resize(GetDefaultSize());
490 for(threshold = firstBin; threshold < nBins; ++threshold) {
502 average =
fProjections[
fCurrentProjection]->Integral(
static_cast<Int_t
>(maxBin - (xmax - xmin) * 0.1),
static_cast<Int_t
>(maxBin + (xmax - xmin) * 0.1)) / ((xmax - xmin) * 0.2);
505 for(roughBin = nBins; roughBin >= firstBin; --roughBin) {
512 std::cout <<
"Initializing parameters for current projection " <<
fCurrentProjection <<
" based on threshold bin " << threshold <<
", average " << average <<
", rough bin " << roughBin <<
", and rough position " << roughPos << std::endl;
515 fInitial->FixParameter(1, roughPos);
516 fInitial->FixParameter(2, 0.1 * roughPos);
517 fInitial->FixParameter(3, 0.2 * roughPos);
519 fInitial->FixParameter(5, 0.3 * roughPos);
520 fInitial->FixParameter(6, 0.2 * roughPos);
566 fFit->SetLineColor(2);
567 fFit->SetLineStyle(1);