improved handling for grouping and addrun

This commit is contained in:
nemu
2010-02-22 06:55:49 +00:00
parent c3316e9676
commit d5d36d21fd
8 changed files with 1197 additions and 327 deletions

View File

@ -40,12 +40,76 @@
#include <TCanvas.h>
#include <TH1.h>
#include <TLine.h>
#include <TLatex.h>
#include "PMusr.h"
#ifndef __MAKECINT__
#include "PMsrHandler.h"
#endif // __MAKECINT__
#define PMUSRT0_FORWARD 0
#define PMUSRT0_BACKWARD 1
#define PMUSRT0_GET_T0 0
#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
*/
class PMusrT0Data {
public:
PMusrT0Data();
virtual ~PMusrT0Data();
virtual void InitData();
virtual Bool_t IsSingleHisto() { return fSingleHisto; }
virtual UInt_t GetRawRunDataSize() { return fRawRunData.size(); }
virtual PRawRunData* GetRawRunData(Int_t idx);
virtual Int_t GetRunNo() { return fRunNo; }
virtual Int_t GetAddRunIdx() { return fAddRunIdx; }
virtual Int_t GetHistoNoIdx() { return fHistoNoIdx; }
virtual UInt_t GetHistoNoSize() { return fHistoNo.size(); }
virtual Int_t GetHistoNo(UInt_t idx);
virtual Int_t GetDetectorTag() { return fDetectorTag; }
virtual Int_t GetCmdTag() { return fCmdTag; }
virtual UInt_t GetT0Size() { return fT0.size(); }
virtual Int_t GetT0(UInt_t idx);
virtual UInt_t GetAddT0Entries() { return fAddT0.size(); }
virtual UInt_t GetAddT0Size(UInt_t idx);
virtual Int_t GetAddT0(UInt_t addRunIdx, UInt_t idx);
virtual void SetSingleHisto(const Bool_t flag) { fSingleHisto = flag; }
virtual void SetRawRunData(const vector<PRawRunData*> rawRunData) { fRawRunData = rawRunData; }
virtual void SetRunNo(const UInt_t runNo) { fRunNo = runNo; }
virtual void SetAddRunIdx(const UInt_t addRunIdx) { fAddRunIdx = addRunIdx; }
virtual void SetHistoNoIdx(const UInt_t histoNoIdx) { fHistoNoIdx = histoNoIdx; }
virtual void SetHistoNo(const PIntVector histoNo) { fHistoNo = histoNo; }
virtual void SetDetectorTag(const UInt_t detectorTag) { fDetectorTag = detectorTag; }
virtual void SetCmdTag(const UInt_t cmdTag) { fCmdTag = cmdTag; }
virtual void SetT0(UInt_t val, UInt_t idx);
virtual void SetAddT0(UInt_t val, UInt_t addRunIdx, UInt_t idx);
private:
Bool_t fSingleHisto; ///< true if single histo fit, false for asymmetry fit
vector<PRawRunData*> fRawRunData; ///< holds the raw data of the needed runs, idx=0 the run, idx>0 the addruns
Int_t fRunNo; ///< msr-file run number
Int_t fAddRunIdx; ///< msr-file addrun index
Int_t fHistoNoIdx; ///< msr-file histo number index
PIntVector fHistoNo; ///< msr-file histo numbers
Int_t fDetectorTag; ///< detector tag. forward=0,backward=1
Int_t fCmdTag; ///< command tag. 0=get t0, 1=get data-/bkg-range, 2=get t0, and data-/bkg-range
PIntVector fT0; ///< holding the t0's of the run
vector<PIntVector> fAddT0; ///< holding the t0's of the addruns
};
//--------------------------------------------------------------------------
/**
* <p>The preprocessor tag __MAKECINT__ is used to hide away from rootcint
@ -55,10 +119,12 @@ class PMusrT0 : public TObject, public TQObject
{
public:
PMusrT0();
PMusrT0(PRawRunData *rawRunData, Int_t runNo, Int_t histoNo, Int_t detectorTag, Int_t addRunNo);
PMusrT0(PMusrT0Data &data);
virtual ~PMusrT0();
virtual Bool_t IsValid() { return fValid; }
virtual void Done(Int_t status=0); // *SIGNAL*
virtual void HandleCmdKey(Int_t event, Int_t x, Int_t y, TObject *selected); // SLOT
@ -66,6 +132,8 @@ class PMusrT0 : public TObject, public TQObject
virtual void SetMsrHandler(PMsrHandler *msrHandler);
#endif // __MAKECINT__
virtual void InitT0();
virtual void InitDataAndBkg();
virtual Int_t GetStatus() { return fStatus; }
private:
@ -73,13 +141,15 @@ class PMusrT0 : public TObject, public TQObject
PMsrHandler *fMsrHandler;
#endif // __MAKECINT__
Bool_t fValid;
Int_t fStatus;
Int_t fRunNo;
Int_t fDetectorTag;
Int_t fAddRunNo;
Int_t fAddRunOffset;
Int_t fT0Estimated;
PMusrT0Data fMusrT0Data;
Bool_t fDataAndBkgEnabled;
Bool_t fT0Enabled;
Int_t fT0Estimated;
// canvas related variables
TCanvas *fMainCanvas;
@ -88,6 +158,8 @@ class PMusrT0 : public TObject, public TQObject
TH1F *fData;
TH1F *fBkg;
TLatex *fToDoInfo;
TLine *fT0Line;
TLine *fFirstBkgLine;
TLine *fLastBkgLine;
@ -100,7 +172,6 @@ class PMusrT0 : public TObject, public TQObject
Int_t fDataRange[2];
Int_t fBkgRange[2];
void InitDataAndBkg();
void SetT0Channel();
void SetEstimatedT0Channel();
void SetDataFirstChannel();
@ -108,6 +179,7 @@ class PMusrT0 : public TObject, public TQObject
void SetBkgFirstChannel();
void SetBkgLastChannel();
void UnZoom();
void ZoomT0();
ClassDef(PMusrT0, 1)
};