95TGHorizontalFrame*
TParameterInput::Build(
const std::string& name,
const Int_t& baseId,
const Double_t& xmin,
const Double_t& xmax)
104 fLabel =
new TGLabel(
this, name.c_str());
105 fSlider =
new TGTripleHSlider(
this, 200, kDoubleScaleBoth,
fBaseId, kHorizontalFrame);
106 fEntryLow =
new TGNumberEntry(
this, 0, 6,
fBaseId, TGNumberFormat::kNESRealOne, TGNumberFormat::kNEANonNegative, TGNumberFormat::kNELLimitMinMax, xmin, xmax);
107 fEntry =
new TGNumberEntry(
this, 0, 6,
fBaseId + 2, TGNumberFormat::kNESRealOne, TGNumberFormat::kNEANonNegative, TGNumberFormat::kNELLimitMinMax, xmin, xmax);
108 fEntryHigh =
new TGNumberEntry(
this, 0, 6,
fBaseId + 1, TGNumberFormat::kNESRealOne, TGNumberFormat::kNEANonNegative, TGNumberFormat::kNELLimitMinMax, xmin, xmax);
111 AddFrame(
fLabel,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 1, 1, 1, 1));
112 AddFrame(
fSlider,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
114 AddFrame(
fEntryHigh,
new TGLayoutHints(kLHintsTop | kLHintsRight, 1, 1, 1, 1));
115 AddFrame(
fEntry,
new TGLayoutHints(kLHintsTop | kLHintsRight, 1, 1, 1, 1));
116 AddFrame(
fEntryLow,
new TGLayoutHints(kLHintsTop | kLHintsRight, 1, 1, 1, 1));
221 fLeftFrame =
new TGVerticalFrame(
this, 400, 400);
233 std::array<Int_t, 3> parts = {25, 25, 50};
234 fStatusBar->SetParts(parts.data(), parts.size());
290 fLeftFrame->AddFrame(
fFitCanvas,
new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX | kLHintsExpandY, 1, 1, 1, 2));
291 fLeftFrame->AddFrame(
fStatusBar,
new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 1, 1, 1, 2));
292 fLeftFrame->AddFrame(
fCalibrationCanvas,
new TGLayoutHints(kLHintsBottom | kLHintsCenterX | kLHintsExpandX | kLHintsExpandY, 1, 1, 2, 1));
294 fRightFrame->AddFrame(
fAmplitude,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
295 fRightFrame->AddFrame(
fPosition,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
296 fRightFrame->AddFrame(
fSigma,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
297 fRightFrame->AddFrame(
fDSigma,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
298 fRightFrame->AddFrame(
fPeakAmp,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
299 fRightFrame->AddFrame(
fPeakPos,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
300 fRightFrame->AddFrame(
fPeakSigma,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
301 fRightFrame->AddFrame(
fNoiseAmp,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
302 fRightFrame->AddFrame(
fNoisePos,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
303 fRightFrame->AddFrame(
fNoiseSigma,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
304 fRightFrame->AddFrame(
fThreshold,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
306 fRightFrame->AddFrame(
fBgConst,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
307 fRightFrame->AddFrame(
fBgAmp,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
309 fRightFrame->AddFrame(
fCutoff,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 1, 1, 1, 1));
313 fRightFrame->AddFrame(
fTopButtonFrame,
new TGLayoutHints(kLHintsBottom | kLHintsLeft | kLHintsExpandX | kLHintsExpandY, 1, 1, 1, 1));
315 AddFrame(
fLeftFrame,
new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX | kLHintsExpandY, 1, 1, 1, 1));
316 AddFrame(
fRightFrame,
new TGLayoutHints(kLHintsTop | kLHintsRight | kLHintsExpandX | kLHintsExpandY, 1, 1, 1, 1));
318 SetWindowName(
"Descant Calibration");
321 Resize(GetDefaultSize());
488 for(threshold = firstBin; threshold < nBins; ++threshold) {
500 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);
503 for(roughBin = nBins; roughBin >= firstBin; --roughBin) {
510 std::cout <<
"Initializing parameters for current projection " <<
fCurrentProjection <<
" based on threshold bin " << threshold <<
", average " << average <<
", rough bin " << roughBin <<
", and rough position " << roughPos << std::endl;
513 fInitial->FixParameter(1, roughPos);
514 fInitial->FixParameter(2, 0.1 * roughPos);
515 fInitial->FixParameter(3, 0.2 * roughPos);
517 fInitial->FixParameter(5, 0.3 * roughPos);
518 fInitial->FixParameter(6, 0.2 * roughPos);
564 fFit->SetLineColor(2);
565 fFit->SetLineStyle(1);