first implementation of a RRF. So far, for single histo only.

This commit is contained in:
nemu
2009-12-23 13:43:23 +00:00
parent 19dee34c22
commit e0c893503f
10 changed files with 444 additions and 240 deletions

View File

@@ -81,6 +81,9 @@ PMusrCanvas::PMusrCanvas()
fCurrentFourierPhase = fFourier.fPhaseIncrement;
fCurrentFourierPhaseText = 0;
fRRFText = 0;
fRRFLatexText = 0;
}
//--------------------------------------------------------------------------
@@ -105,6 +108,9 @@ PMusrCanvas::PMusrCanvas(const Int_t number, const Char_t* title,
fCurrentFourierPhase = 0.0;
fCurrentFourierPhaseText = 0;
fRRFText = 0;
fRRFLatexText = 0;
}
//--------------------------------------------------------------------------
@@ -132,6 +138,9 @@ PMusrCanvas::PMusrCanvas(const Int_t number, const Char_t* title,
fCurrentFourierPhase = 0.0;
fCurrentFourierPhaseText = 0;
fRRFText = 0;
fRRFLatexText = 0;
}
//--------------------------------------------------------------------------
@@ -144,6 +153,18 @@ PMusrCanvas::~PMusrCanvas()
{
//cout << "~PMusrCanvas() called. fMainCanvas name=" << fMainCanvas->GetName() << endl;
// cleanup
if (fCurrentFourierPhaseText) {
delete fCurrentFourierPhaseText;
fCurrentFourierPhaseText = 0;
}
if (fRRFLatexText) {
delete fRRFLatexText;
fRRFLatexText = 0;
}
if (fRRFText) {
delete fRRFText;
fRRFText = 0;
}
if (fStyle) {
delete fStyle;
fStyle = 0;
@@ -244,6 +265,40 @@ void PMusrCanvas::SetMsrHandler(PMsrHandler *msrHandler)
fFourier.fPlotRange[1] = fMsrHandler->GetMsrFourierList().fPlotRange[1];
}
}
// check if RRF data are present
if ((fMsrHandler->GetMsrPlotList()->at(0).fRRFPacking > 0) &&
(fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq != 0.0)) {
fRRFLatexText = new TLatex();
fRRFLatexText->SetNDC(kTRUE);
fRRFLatexText->SetTextFont(62);
fRRFLatexText->SetTextSize(0.03);
fRRFText = new TString("RRF: ");
if (fMsrHandler->GetMsrPlotList()->at(0).fRRFUnit == RRF_UNIT_kHz) {
*fRRFText += TString("#nu_{RRF} = ");
*fRRFText += fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq;
*fRRFText += TString(" (kHz)");
} else if (fMsrHandler->GetMsrPlotList()->at(0).fRRFUnit == RRF_UNIT_MHz) {
*fRRFText += TString("#nu_{RRF} = ");
*fRRFText += fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq;
*fRRFText += TString(" (MHz)");
} else if (fMsrHandler->GetMsrPlotList()->at(0).fRRFUnit == RRF_UNIT_Mcs) {
*fRRFText += TString("#omega_{RRF} = ");
*fRRFText += fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq;
*fRRFText += TString(" (Mc/s)");
} else if (fMsrHandler->GetMsrPlotList()->at(0).fRRFUnit == RRF_UNIT_G) {
*fRRFText += TString("B_{RRF} = ");
*fRRFText += fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq;
*fRRFText += TString(" (G)");
} else if (fMsrHandler->GetMsrPlotList()->at(0).fRRFUnit == RRF_UNIT_T) {
*fRRFText += TString("B_{RRF} = ");
*fRRFText += fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq;
*fRRFText += TString(" (T)");
}
*fRRFText += TString(", RRF packing = ");
*fRRFText += fMsrHandler->GetMsrPlotList()->at(0).fRRFPacking;
}
}
//--------------------------------------------------------------------------
@@ -2531,6 +2586,11 @@ void PMusrCanvas::PlotData()
fData[i].theory->Draw("lsame");
}
}
// check if RRF and if yes show a label
if ((fRRFText != 0) && (fRRFLatexText != 0)) {
fRRFLatexText->DrawLatex(0.1, 0.92, fRRFText->Data());
}
} else { // fPlotType == MSR_PLOT_NO_MUSR
// ugly workaround since multigraphs axis are not going away when switching TMultiGraphs
delete fDataTheoryPad;
@@ -2649,6 +2709,11 @@ void PMusrCanvas::PlotDifference()
for (UInt_t i=0; i<fData.size(); i++) {
fData[i].diff->Draw("pesame");
}
// check if RRF and if yes show a label
if ((fRRFText != 0) && (fRRFLatexText != 0)) {
fRRFLatexText->DrawLatex(0.1, 0.92, fRRFText->Data());
}
} else { // fPlotType == MSR_PLOT_NON_MUSR
// ugly workaround since multigraphs axis are not going away when switching TMultiGraphs
delete fDataTheoryPad;
@@ -2980,6 +3045,11 @@ void PMusrCanvas::PlotFourier()
break;
}
// check if RRF and if yes show a label
if ((fRRFText != 0) && (fRRFLatexText != 0)) {
fRRFLatexText->DrawLatex(0.1, 0.92, fRRFText->Data());
}
fDataTheoryPad->Update();
fMainCanvas->cd();
@@ -3249,6 +3319,11 @@ void PMusrCanvas::PlotFourierDifference()
break;
}
// check if RRF and if yes show a label
if ((fRRFText != 0) && (fRRFLatexText != 0)) {
fRRFLatexText->DrawLatex(0.1, 0.92, fRRFText->Data());
}
fDataTheoryPad->Update();
fMainCanvas->cd();