added more docu

This commit is contained in:
nemu
2010-05-31 08:25:57 +00:00
parent 959c792a68
commit 5d124b3d79
11 changed files with 669 additions and 508 deletions
+1 -1
View File
@@ -42,7 +42,7 @@
//-------------------------------------------------------------
/**
* <p>
* <p>This class provides the routines needed to handle msr-files, i.e. reading, writing, parsing, etc.
*/
class PMsrHandler
{
+25 -27
View File
@@ -125,67 +125,68 @@ using namespace std;
//-------------------------------------------------------------
/**
* <p> typedef to make to code more readable. Definition of a bool vector.
* <p>typedef to make to code more readable. Definition of a bool vector.
*/
typedef vector<Bool_t> PBoolVector;
//-------------------------------------------------------------
/**
* <p> typedef to make to code more readable. Definition of an unsigned int vector
* <p>typedef to make to code more readable. Definition of an unsigned int vector
*/
typedef vector<UInt_t> PUIntVector;
//-------------------------------------------------------------
/**
* <p> typedef to make to code more readable. Definition of an int vector
* <p>typedef to make to code more readable. Definition of an int vector
*/
typedef vector<Int_t> PIntVector;
//-------------------------------------------------------------
/**
* <p> typedef to make to code more readable. Definition of an int pair
* <p>typedef to make to code more readable. Definition of an int pair
*/
typedef pair<Int_t, Int_t> PIntPair;
//-------------------------------------------------------------
/**
* <p> typedef to make to code more readable. Definition of an int pair vector
* <p>typedef to make to code more readable. Definition of an int pair vector
*/
typedef vector<PIntPair> PIntPairVector;
//-------------------------------------------------------------
/**
* <p> typedef to make to code more readable. Definition of a double vector
* <p>typedef to make to code more readable. Definition of a double vector
*/
typedef vector<Double_t> PDoubleVector;
//-------------------------------------------------------------
/**
* <p> typedef to make to code more readable. Definition of a double pair
* <p>typedef to make to code more readable. Definition of a double pair
*/
typedef pair<Double_t, Double_t> PDoublePair;
//-------------------------------------------------------------
/**
* <p> typedef to make to code more readable. Definition of a double pair vector
* <p>typedef to make to code more readable. Definition of a double pair vector
*/
typedef vector<PDoublePair> PDoublePairVector;
//-------------------------------------------------------------
/**
* <p> typedef to make to code more readable. Definition of a string vector
* <p>typedef to make to code more readable. Definition of a string vector
*/
typedef vector<TString> PStringVector;
//-------------------------------------------------------------
/**
* <p> data handling tag
* <p>data handling tag
*/
enum EPMusrHandleTag { kEmpty, kFit, kView };
//-------------------------------------------------------------
/**
* <p>Holds the data which will be fitted, i.e. packed, background corrected, ...
* <p>Handles the data which will be fitted, i.e. packed, background corrected, ...
* This are <b>not</b> the raw histogram data of a run. This are the pre-processed data.
*/
class PRunData {
public:
@@ -233,7 +234,7 @@ class PRunData {
//-------------------------------------------------------------
/**
* <p>Non-Musr raw data.
* <p>Handles Non-Musr raw data.
*/
class PNonMusrRawRunData {
public:
@@ -265,7 +266,7 @@ class PNonMusrRawRunData {
//-------------------------------------------------------------
/**
* <p>Histogram raw muSR data.
* <p>Handles raw data, both non-muSR data as well muSR histogram data.
*/
class PRawRunData {
public:
@@ -335,13 +336,13 @@ class PRawRunData {
//-------------------------------------------------------------
/**
* <p> typedef to make to code more readable. A vector of a raw musr run.
* <p>typedef to make to code more readable. A vector of a raw musr run.
*/
typedef vector<PRawRunData> PRawRunDataList;
//-------------------------------------------------------------
/**
* <p> Helper structure for parsing. Keeps a msr-file line string and the corresponding line number.
* <p>Helper structure for parsing. Keeps a msr-file line string and the corresponding line number.
*/
typedef struct {
Int_t fLineNo; ///< original line number of the msr-file
@@ -350,13 +351,13 @@ typedef struct {
//-------------------------------------------------------------
/**
* <p> typedef to make to code more readable: list of msr-file lines.
* <p>typedef to make to code more readable: list of msr-file lines.
*/
typedef vector<PMsrLineStructure> PMsrLines;
//-------------------------------------------------------------
/**
* <p> Holds the information of a parameter.
* <p>Handles the information of a parameter.
*/
typedef struct {
Int_t fNoOfParams; ///< how many parameters are given
@@ -374,13 +375,13 @@ typedef struct {
//-------------------------------------------------------------
/**
* <p> typedef to make to code more readable: vector of fit parameters.
* <p>typedef to make to code more readable: vector of fit parameters.
*/
typedef vector<PMsrParamStructure> PMsrParamList;
//-------------------------------------------------------------
/**
* <p> Holds the information of a single run block
* <p>Handles the information of a single run block
*
*/
class PMsrRunBlock {
@@ -402,7 +403,6 @@ class PMsrRunBlock {
virtual Int_t GetBetaParamNo() { return fBetaParamNo; }
virtual Int_t GetNormParamNo() { return fNormParamNo; }
virtual Int_t GetBkgFitParamNo() { return fBkgFitParamNo; }
virtual Int_t GetPhaseParamNo() { return fPhaseParamNo; }
virtual Int_t GetLifetimeParamNo() { return fLifetimeParamNo; }
virtual Bool_t IsLifetimeCorrected() { return fLifetimeCorrection; }
virtual PIntVector* GetMap() { return &fMap; }
@@ -435,7 +435,6 @@ class PMsrRunBlock {
virtual void SetBetaParamNo(Int_t ival) { fBetaParamNo = ival; }
virtual void SetNormParamNo(Int_t ival) { fNormParamNo = ival; }
virtual void SetBkgFitParamNo(Int_t ival) { fBkgFitParamNo = ival; }
virtual void SetPhaseParamNo(Int_t ival) { fPhaseParamNo = ival; }
virtual void SetLifetimeParamNo(Int_t ival) { fLifetimeParamNo = ival; }
virtual void SetLifetimeCorrection(Bool_t bval) { fLifetimeCorrection = bval; }
virtual void SetMap(Int_t mapVal, Int_t idx=-1);
@@ -463,7 +462,6 @@ class PMsrRunBlock {
Int_t fBetaParamNo; ///< beta parameter number (fit type 2, 4)
Int_t fNormParamNo; ///< N0 parameter number (fit type 0)
Int_t fBkgFitParamNo; ///< background fit parameter number (fit type 0)
Int_t fPhaseParamNo; ///< ??? NEEDED ??? NEEDS TO BE CHECKED !!!
Int_t fLifetimeParamNo; ///< muon lifetime parameter number (fit type 0)
Bool_t fLifetimeCorrection; ///< lifetime correction flag for viewing (fit type 0)
PIntVector fMap; ///< map vector needed to switch parameters for different runs within a single theory
@@ -482,13 +480,13 @@ class PMsrRunBlock {
//-------------------------------------------------------------
/**
* <p> typedef to make to code more readable: list of runs with its parameters.
* <p>typedef to make to code more readable: list of runs with its parameters.
*/
typedef vector<PMsrRunBlock> PMsrRunList;
//-------------------------------------------------------------
/**
* <p> Holds the information of the Fourier block
* <p>Holds the information of the Fourier block
*/
typedef struct {
Bool_t fFourierBlockPresent; ///< flag indicating if a Fourier block is present in the msr-file
@@ -505,7 +503,7 @@ typedef struct {
//-------------------------------------------------------------
/**
* <p> Holds the information of a single plot block
* <p>Holds the information of a single plot block
*/
typedef struct {
Int_t fPlotType; ///< plot type
@@ -526,13 +524,13 @@ typedef struct {
//-------------------------------------------------------------
/**
* <p> typedef to make to code more readable: list of plots.
* <p>typedef to make to code more readable: list of plots.
*/
typedef vector<PMsrPlotStructure> PMsrPlotList;
//-------------------------------------------------------------
/**
* <p>
* <p>Holds the informations for the statistics block.
*/
typedef struct {
Bool_t fValid; ///< flag showing if the statistics block is valid, i.e. a fit took place which converged
+77 -75
View File
@@ -84,57 +84,59 @@
//------------------------------------------------------------------------
/**
* <p>
* <p>Structure holding all necessary histograms for a single plot block entry for
* fit types: asymmetry fit and single histogram fit.
*/
typedef struct {
TH1F *data;
TH1F *dataFourierRe;
TH1F *dataFourierIm;
TH1F *dataFourierPwr;
TH1F *dataFourierPhase;
TH1F *theory;
TH1F *theoryFourierRe;
TH1F *theoryFourierIm;
TH1F *theoryFourierPwr;
TH1F *theoryFourierPhase;
TH1F *diff;
TH1F *diffFourierRe;
TH1F *diffFourierIm;
TH1F *diffFourierPwr;
TH1F *diffFourierPhase;
TH1F *data; ///< data histogram
TH1F *dataFourierRe; ///< real part of the Fourier transform of the data histogram
TH1F *dataFourierIm; ///< imaginary part of the Fourier transform of the data histogram
TH1F *dataFourierPwr; ///< power spectrum of the Fourier transform of the data histogram
TH1F *dataFourierPhase; ///< phase spectrum of the Fourier transform of the data histogram
TH1F *theory; ///< theory histogram belonging to the data histogram
TH1F *theoryFourierRe; ///< real part of the Fourier transform of the theory histogram
TH1F *theoryFourierIm; ///< imaginary part of the Fourier transform of the theory histogram
TH1F *theoryFourierPwr; ///< power spectrum of the Fourier transform of the theory histogram
TH1F *theoryFourierPhase; ///< phase spectrum of the Fourier transform of the theory histogram
TH1F *diff; ///< difference histogram, i.e. data-theory
TH1F *diffFourierRe; ///< real part of the Fourier transform of the diff histogram
TH1F *diffFourierIm; ///< imaginary part of the Fourier transform of the diff histogram
TH1F *diffFourierPwr; ///< power spectrum of the Fourier transform of the diff histogram
TH1F *diffFourierPhase; ///< phase spectrum of the Fourier transform of the diff histogram
} PMusrCanvasDataSet;
//------------------------------------------------------------------------
/**
* <p>
* <p>typedef to make to code more readable: list of histogram data sets.
*/
typedef vector<PMusrCanvasDataSet> PMusrCanvasDataList;
//------------------------------------------------------------------------
/**
* <p>
* <p>Structure holding all necessary error graphs for a single plot block entry for
* fit types: non-muSR fit.
*/
typedef struct {
TGraphErrors *data;
TGraphErrors *dataFourierRe;
TGraphErrors *dataFourierIm;
TGraphErrors *dataFourierPwr;
TGraphErrors *dataFourierPhase;
TGraphErrors *theory;
TGraphErrors *theoryFourierRe;
TGraphErrors *theoryFourierIm;
TGraphErrors *theoryFourierPwr;
TGraphErrors *theoryFourierPhase;
TGraphErrors *diff;
TGraphErrors *diffFourierRe;
TGraphErrors *diffFourierIm;
TGraphErrors *diffFourierPwr;
TGraphErrors *diffFourierPhase;
TGraphErrors *data; ///< data error graph
TGraphErrors *dataFourierRe; ///< real part of the Fourier transform of the data error graph
TGraphErrors *dataFourierIm; ///< imaginary part of the Fourier transform of the data error graph
TGraphErrors *dataFourierPwr; ///< power spectrum of the Fourier transform of the data error graph
TGraphErrors *dataFourierPhase; ///< phase spectrum of the Fourier transform of the data error graph
TGraphErrors *theory; ///< theory histogram belonging to the data error graph
TGraphErrors *theoryFourierRe; ///< real part of the Fourier transform of the theory error graph
TGraphErrors *theoryFourierIm; ///< imaginary part of the Fourier transform of the theory error graph
TGraphErrors *theoryFourierPwr; ///< power spectrum of the Fourier transform of the theory error graph
TGraphErrors *theoryFourierPhase; ///< phase spectrum of the Fourier transform of the theory error graph
TGraphErrors *diff; ///< difference error graph, i.e. data-theory
TGraphErrors *diffFourierRe; ///< real part of the Fourier transform of the diff error graph
TGraphErrors *diffFourierIm; ///< imaginary part of the Fourier transform of the diff error graph
TGraphErrors *diffFourierPwr; ///< power spectrum of the Fourier transform of the diff error graph
TGraphErrors *diffFourierPhase; ///< phase spectrum of the Fourier transform of the diff error graph
} PMusrCanvasNonMusrDataSet;
//------------------------------------------------------------------------
/**
* <p>
* <p>typedef to make to code more readable: list of error graph data sets.
*/
typedef vector<PMusrCanvasNonMusrDataSet> PMusrCanvasNonMusrDataList;
@@ -143,17 +145,17 @@ typedef vector<PMusrCanvasNonMusrDataSet> PMusrCanvasNonMusrDataList;
* <p> data structure needed for ascii dump within musrview.
*/
typedef struct {
PDoubleVector dataX;
PDoubleVector data;
PDoubleVector dataErr;
PDoubleVector theoryX;
PDoubleVector theory;
PDoubleVector dataX; ///< x-axis data set
PDoubleVector data; ///< y-axis data set
PDoubleVector dataErr; ///< error of the y-axis data set
PDoubleVector theoryX; ///< x-axis theory set
PDoubleVector theory; ///< y-axis theory set
} PMusrCanvasAsciiDump;
//------------------------------------------------------------------------
/**
* <p> vectore of the above data structure. Used if there are multiple histogramms
* to be dumped.
* <p> typedef to make to code more readable: vector of the above data structure.
* Used if there are multiple histogramms to be dumped.
*/
typedef vector<PMusrCanvasAsciiDump> PMusrCanvasAsciiDumpVector;
@@ -193,53 +195,53 @@ class PMusrCanvas : public TObject, public TQObject
virtual void SaveGraphicsAndQuit(Char_t *fileName, Char_t *graphicsFormat);
private:
Bool_t fBatchMode; /// musrview in ROOT batch mode
Bool_t fValid;
Bool_t fDifferenceView; /// tag showing that the shown data, fourier, are the difference between data and theory
Int_t fCurrentPlotView; /// tag showing what the current plot view is: data, fourier, ...
Int_t fPlotType;
Int_t fPlotNumber;
Bool_t fBatchMode; ///< musrview in ROOT batch mode
Bool_t fValid; ///< if true, everything looks OK
Bool_t fDifferenceView; ///< tag showing that the shown data, fourier, are the difference between data and theory
Int_t fCurrentPlotView; ///< tag showing what the current plot view is: data, fourier, ...
Int_t fPlotType; ///< plot type tag: -1 == undefined, MSR_PLOT_SINGLE_HISTO == single histogram, MSR_PLOT_ASYM == asymmetry, MSR_PLOT_MU_MINUS == mu minus (not yet implemented), MSR_PLOT_NON_MUSR == non-muSR
Int_t fPlotNumber; ///< plot number
Double_t fXmin, fXmax, fYmin, fYmax; /// data/theory frame range
Double_t fXmin, fXmax, fYmin, fYmax; ///< data/theory frame range
Double_t fCurrentFourierPhase; /// holds the current Fourier phase
TLatex *fCurrentFourierPhaseText; /// used in Re/Im Fourier to show the current phase in the pad
TString *fRRFText;
TLatex *fRRFLatexText; /// used to display RRF info
Double_t fCurrentFourierPhase; ///< holds the current Fourier phase
TLatex *fCurrentFourierPhaseText; ///< used in Re/Im Fourier to show the current phase in the pad
TString *fRRFText; ///< RRF information
TLatex *fRRFLatexText; ///< used to display RRF info
TStyle *fStyle;
TStyle *fStyle; ///< A collection of all graphics attributes
// canvas menu related variables
TRootCanvas *fImp;
TGMenuBar *fBar;
TGPopupMenu *fPopupMain;
TGPopupMenu *fPopupSave;
TGPopupMenu *fPopupFourier;
TRootCanvas *fImp; ///< ROOT native GUI version of main window with menubar and drawing area
TGMenuBar *fBar; ///< menu bar
TGPopupMenu *fPopupMain; ///< popup menu Musrfit in the main menu bar
TGPopupMenu *fPopupSave; ///< popup menu of the Musrfit/Save Data sub menu
TGPopupMenu *fPopupFourier; ///< popup menu of the Musrfit/Fourier sub menu
// canvas related variables
TCanvas *fMainCanvas;
TPaveText *fTitlePad;
TPad *fDataTheoryPad;
TPaveText *fParameterPad;
TPaveText *fTheoryPad;
TLegend *fInfoPad;
TLegend *fMultiGraphLegend;
TCanvas *fMainCanvas; ///< main canvas
TPaveText *fTitlePad; ///< title pad used to display a title
TPad *fDataTheoryPad; ///< data/theory pad used to display the data/theory
TPaveText *fParameterPad; ///< parameter pad used to display the fitting parameters
TPaveText *fTheoryPad; ///< theory pad used to display the theory and functions
TLegend *fInfoPad; ///< info pad used to display a legend of the data plotted
TLegend *fMultiGraphLegend; ///< used for non-muSR plots to display a legend
TH1F *fHistoFrame;
TH1F *fHistoFrame; ///< fHistoFrame is a 'global' frame needed in order to plot histograms with (potentially) different x-frames
#ifndef __MAKECINT__
PMsrHandler *fMsrHandler;
PRunListCollection *fRunList;
PMsrHandler *fMsrHandler; ///< msr-file handler
PRunListCollection *fRunList; ///< data handler
#endif // __MAKECINT__
PMusrCanvasDataList fData;
PMusrCanvasNonMusrDataList fNonMusrData;
TMultiGraph *fMultiGraphData;
TMultiGraph *fMultiGraphDiff;
PMusrCanvasDataList fData; ///< list of all histogram data to be plotted (asymmetry/single histogram)
PMusrCanvasNonMusrDataList fNonMusrData; ///< list of all error graphs to be plotted (non-muSR)
TMultiGraph *fMultiGraphData; ///< fMultiGraphData is a 'global' graph needed in order to plot error graphs (data) with (potentially) different x-frames
TMultiGraph *fMultiGraphDiff; ///< fMultiGraphDiff is a 'global' graph needed in order to plot error graphs (data-theory) with (potentially) different x-frames
PMsrFourierStructure fFourier;
PIntVector fMarkerList;
PIntVector fColorList;
PMsrFourierStructure fFourier; ///< structure holding all the information necessary to perform the Fourier transform
PIntVector fMarkerList; ///< list of markers
PIntVector fColorList; ///< list of colors
virtual void CreateStyle();
virtual void InitFourier();
+26 -27
View File
@@ -54,13 +54,11 @@
#define PMUSRT0_GET_DATA_AND_BKG_RANGE 1
#define PMUSRT0_GET_T0_DATA_AND_BKG_RANGE 2
/*
#define PMUSRT0_NOADDRUN_NOGROUPING 0
#define PMUSRT0_ADDRUN_NOGROUPING 1
#define PMUSRT0_NOADDRUN_GROUPING 2
#define PMUSRT0_ADDRUN_GROUPING 3
*/
//--------------------------------------------------------------------------
/**
* <p>Handles the raw muSR run data sets.
*/
class PMusrT0Data {
public:
PMusrT0Data();
@@ -112,6 +110,7 @@ class PMusrT0Data {
//--------------------------------------------------------------------------
/**
* <p>Handles the musrt0 graphical user interface.
* <p>The preprocessor tag __MAKECINT__ is used to hide away from rootcint
* the overly complex spirit header files.
*/
@@ -138,39 +137,39 @@ class PMusrT0 : public TObject, public TQObject
private:
#ifndef __MAKECINT__
PMsrHandler *fMsrHandler;
PMsrHandler *fMsrHandler; ///< msr-file handler
#endif // __MAKECINT__
Bool_t fValid;
Bool_t fValid; ///< true if raw data set are available, otherwise false
Int_t fStatus;
Int_t fStatus; ///< 0=quit locally, i.e. only a single musrt0 raw data canvas will terminate but not the application, 1=quit the application
PMusrT0Data fMusrT0Data;
PMusrT0Data fMusrT0Data; ///< raw muSR run data sets.
Bool_t fDataAndBkgEnabled;
Bool_t fT0Enabled;
Int_t fT0Estimated;
Bool_t fDataAndBkgEnabled; ///< enable/disable data and background range handling (necessary in connection with grouping and addrun)
Bool_t fT0Enabled; ///< enable/disable t0 handling (necessary in connection with grouping and addrun)
Int_t fT0Estimated; ///< estimated t0 value (in bins)
// canvas related variables
TCanvas *fMainCanvas;
TCanvas *fMainCanvas; ///< main canvas for the graphical user interface
TH1F *fHisto;
TH1F *fData;
TH1F *fBkg;
TH1F *fHisto; ///< full raw data histogram
TH1F *fData; ///< ranged raw data histogram (first good bin, last good bin)
TH1F *fBkg; ///< histogram starting from 'bkg start' up to 'bkg end'
TLatex *fToDoInfo;
TLatex *fToDoInfo; ///< clear text user instruction string
TLine *fT0Line;
TLine *fFirstBkgLine;
TLine *fLastBkgLine;
TLine *fFirstDataLine;
TLine *fLastDataLine;
TLine *fT0Line; ///< line showing the position of t0
TLine *fFirstBkgLine; ///< line showing the start of the background
TLine *fLastBkgLine; ///< line showing the end of the background
TLine *fFirstDataLine; ///< line showing the start of the data (first good data bin)
TLine *fLastDataLine; ///< line showing the end of the data (last good data bin)
Int_t fPx;
Int_t fPy;
Int_t fPx; ///< x-position of the cursor
Int_t fPy; ///< y-position of the cursor
Int_t fDataRange[2];
Int_t fBkgRange[2];
Int_t fDataRange[2]; ///< data range (first good bin, last good bin)
Int_t fBkgRange[2]; ///< background range (first bkg bin, last bkg bin)
void SetT0Channel();
void SetEstimatedT0Channel();
+9 -5
View File
@@ -34,6 +34,10 @@
#include "PRunBase.h"
//---------------------------------------------------------------------------
/**
* <p>Class handling the asymmetry fit.
*/
class PRunAsymmetry : public PRunBase
{
public:
@@ -45,7 +49,7 @@ class PRunAsymmetry : public PRunBase
virtual Double_t CalcMaxLikelihood(const std::vector<Double_t>& par);
virtual void CalcTheory();
virtual UInt_t GetNoOfFitBins() { return fNoOfFitBins; }
virtual UInt_t GetNoOfFitBins() { return fNoOfFitBins; } ///< returns the number of bins to be fitted.
protected:
virtual Bool_t PrepareData();
@@ -54,11 +58,11 @@ class PRunAsymmetry : public PRunBase
virtual Bool_t PrepareRRFViewData(PRawRunData* runData, UInt_t histoNo[2]);
private:
UInt_t fAlphaBetaTag; ///< 1-> alpha = beta = 1; 2-> alpha != 1, beta = 1; 3-> alpha = 1, beta != 1; 4-> alpha != 1, beta != 1
UInt_t fAlphaBetaTag; ///< \f$ 1 \to \alpha = \beta = 1\f$; \f$ 2 \to \alpha \neq 1, \beta = 1\f$; \f$ 3 \to \alpha = 1, \beta \neq 1\f$; \f$ 4 \to \alpha \neq 1, \beta \neq 1\f$.
Double_t fFitStartTime;
Double_t fFitStopTime;
UInt_t fNoOfFitBins;
Double_t fFitStartTime; ///< fit start time
Double_t fFitStopTime; ///< fit stop time
UInt_t fNoOfFitBins; ///< number of bins to be be fitted
PDoubleVector fForward; ///< forward histo data
PDoubleVector fForwardErr; ///< forward histo errors