some more work towards musrt0
This commit is contained in:
parent
b38e8beffc
commit
b076b4d957
@ -50,6 +50,7 @@ ClassImpQ(PMusrT0)
|
||||
*/
|
||||
PMusrT0::PMusrT0()
|
||||
{
|
||||
fMainCanvas = 0;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
@ -62,6 +63,57 @@ PMusrT0::PMusrT0()
|
||||
*/
|
||||
PMusrT0::PMusrT0(PRawRunData *rawRunData, unsigned int histoNo)
|
||||
{
|
||||
cout << endl << "run Name = " << rawRunData->fRunName.Data() << ", histoNo = " << histoNo << endl;
|
||||
|
||||
TString str = rawRunData->fRunName + TString(" : ");
|
||||
str += histoNo;
|
||||
|
||||
// feed necessary objects
|
||||
|
||||
// feed raw data histo
|
||||
Int_t noOfBins = rawRunData->fDataBin[histoNo].size();
|
||||
Double_t start = -0.5;
|
||||
Double_t end = noOfBins + 0.5;
|
||||
fHisto = new TH1F("fHisto", str.Data(), noOfBins, start, end);
|
||||
fHisto->SetMarkerStyle(21);
|
||||
fHisto->SetMarkerSize(1);
|
||||
fHisto->SetMarkerColor(TColor::GetColor(0,0,0)); // black
|
||||
|
||||
for (unsigned int i=0; i<rawRunData->fDataBin[histoNo].size(); i++) {
|
||||
fHisto->SetBinContent(i+1, rawRunData->fDataBin[histoNo][i]);
|
||||
}
|
||||
|
||||
// generate canvas etc
|
||||
fMainCanvas = new TCanvas("fMainCanvas", str);
|
||||
|
||||
// add canvas menu
|
||||
fImp = (TRootCanvas*)fMainCanvas->GetCanvasImp();
|
||||
fBar = fImp->GetMenuBar();
|
||||
fPopupMain = fBar->AddPopup("&MusrT0");
|
||||
|
||||
fPopupMain->AddEntry("&T0", P_MENU_ID_T0);
|
||||
fPopupMain->AddSeparator();
|
||||
fPopupMain->AddEntry("First Bkg Channel", P_MENU_ID_FIRST_BKG_CHANNEL);
|
||||
fPopupMain->AddEntry("Last Bkg Channel", P_MENU_ID_LAST_BKG_CHANNEL);
|
||||
fPopupMain->AddSeparator();
|
||||
fPopupMain->AddEntry("First Data Channel", P_MENU_ID_FIRST_DATA_CHANNEL);
|
||||
fPopupMain->AddEntry("Last Data Channel", P_MENU_ID_LAST_DATA_CHANNEL);
|
||||
fPopupMain->AddSeparator();
|
||||
fPopupMain->AddEntry("UnZoom", P_MENU_ID_UNZOOM);
|
||||
|
||||
|
||||
fBar->MapSubwindows();
|
||||
fBar->Layout();
|
||||
fPopupMain->Connect("TGPopupMenu", "Activated(Int_t)", "PMusrT0", this, "HandleMenuPopup(Int_t)");
|
||||
|
||||
fMainCanvas->cd();
|
||||
fMainCanvas->Show();
|
||||
|
||||
fMainCanvas->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)", "PMusrT0",
|
||||
this, "HandleCmdKey(Int_t,Int_t,Int_t,TObject*)");
|
||||
|
||||
// draw histos etc
|
||||
fHisto->Draw("p");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
@ -72,6 +124,14 @@ PMusrT0::PMusrT0(PRawRunData *rawRunData, unsigned int histoNo)
|
||||
*/
|
||||
PMusrT0::~PMusrT0()
|
||||
{
|
||||
if (fMainCanvas) {
|
||||
delete fMainCanvas;
|
||||
fMainCanvas = 0;
|
||||
}
|
||||
if (fHisto) {
|
||||
delete fHisto;
|
||||
fHisto = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
@ -134,6 +194,36 @@ void PMusrT0::HandleMenuPopup(Int_t id)
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// HandleMenuPopup (SLOT)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
*/
|
||||
void PMusrT0::SetMsrHandler(PMsrHandler *msrHandler)
|
||||
{
|
||||
fMsrHandler = msrHandler;
|
||||
|
||||
InitDataAndBkg();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// HandleMenuPopup (SLOT)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
*/
|
||||
void PMusrT0::InitDataAndBkg()
|
||||
{
|
||||
// feed data range histo
|
||||
|
||||
// feed background histo
|
||||
|
||||
// add lines
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// END
|
||||
//--------------------------------------------------------------------------
|
||||
|
@ -38,8 +38,21 @@
|
||||
#include <TRootCanvas.h>
|
||||
#include <TGMenu.h>
|
||||
#include <TCanvas.h>
|
||||
#include <TH1.h>
|
||||
#include <TLine.h>
|
||||
|
||||
#include "PMusr.h"
|
||||
#ifndef __MAKECINT__
|
||||
#include "PMsrHandler.h"
|
||||
#endif // __MAKECINT__
|
||||
|
||||
// Canvas menu id's
|
||||
#define P_MENU_ID_T0 100
|
||||
#define P_MENU_ID_FIRST_BKG_CHANNEL 101
|
||||
#define P_MENU_ID_LAST_BKG_CHANNEL 102
|
||||
#define P_MENU_ID_FIRST_DATA_CHANNEL 103
|
||||
#define P_MENU_ID_LAST_DATA_CHANNEL 104
|
||||
#define P_MENU_ID_UNZOOM 105
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
@ -54,11 +67,39 @@ class PMusrT0 : public TObject, public TQObject
|
||||
|
||||
virtual ~PMusrT0();
|
||||
|
||||
private:
|
||||
virtual void Done(Int_t status=0); // *SIGNAL*
|
||||
virtual void HandleCmdKey(Int_t event, Int_t x, Int_t y, TObject *selected); // SLOT
|
||||
virtual void HandleMenuPopup(Int_t id); // SLOT
|
||||
|
||||
#ifndef __MAKECINT__
|
||||
virtual void SetMsrHandler(PMsrHandler *msrHandler);
|
||||
#endif // __MAKECINT__
|
||||
|
||||
private:
|
||||
#ifndef __MAKECINT__
|
||||
PMsrHandler *fMsrHandler;
|
||||
#endif // __MAKECINT__
|
||||
|
||||
// canvas menu related variables
|
||||
TRootCanvas *fImp;
|
||||
TGMenuBar *fBar;
|
||||
TGPopupMenu *fPopupMain;
|
||||
|
||||
// canvas related variables
|
||||
TCanvas *fMainCanvas;
|
||||
|
||||
TH1F *fHisto;
|
||||
TH1F *fData;
|
||||
TH1F *fBkg;
|
||||
|
||||
TLine *fT0Line;
|
||||
TLine *fFirstBkgLine;
|
||||
TLine *fLastBkgLine;
|
||||
TLine *fFirstDataLine;
|
||||
TLine *fLastDataLine;
|
||||
|
||||
void InitDataAndBkg();
|
||||
|
||||
ClassDef(PMusrT0, 1)
|
||||
};
|
||||
|
||||
|
@ -62,6 +62,34 @@ void musrt0_syntax()
|
||||
cout << endl << endl;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
*/
|
||||
bool musrt0_item(TApplication &app, PMsrHandler *msrHandler, PRawRunData *rawRunData, unsigned int histoNo)
|
||||
{
|
||||
PMusrT0 *musrT0 = new PMusrT0(rawRunData, histoNo);
|
||||
|
||||
if (musrT0 == 0) {
|
||||
cout << endl << "**ERROR** Couldn't invoke musrT0 ...";
|
||||
cout << endl << " run name " << rawRunData->fRunName.Data();
|
||||
cout << endl << " histo No " << histoNo;
|
||||
cout << endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
musrT0->SetMsrHandler(msrHandler);
|
||||
|
||||
musrT0->Connect("Done(Int_t)", "TApplication", &app, "Terminate(Int_t)");
|
||||
|
||||
app.Run(true); // true needed that Run will return after quit
|
||||
delete musrT0;
|
||||
musrT0 = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@ -165,40 +193,37 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
|
||||
vector<PMusrT0*> t0Vector;
|
||||
if (success) {
|
||||
/*
|
||||
// generate Root application needed for PMusrCanvas
|
||||
TApplication app("App", &argc, argv);
|
||||
*/
|
||||
|
||||
// generate vector of all necessary PMusrT0 objects
|
||||
PMusrT0 *musrT0;
|
||||
for (unsigned int i=0; i<runList->size(); i++) {
|
||||
switch (runList->at(i).fFitType) {
|
||||
case MSR_FITTYPE_SINGLE_HISTO:
|
||||
for (unsigned int j=0; j<runList->at(i).fRunName.size(); j++) { // necessary in case of ADDRUN
|
||||
musrT0 = new PMusrT0(dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fForwardHistoNo);
|
||||
t0Vector.push_back(musrT0);
|
||||
if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fForwardHistoNo))
|
||||
exit(0);
|
||||
}
|
||||
break;
|
||||
case MSR_FITTYPE_ASYM:
|
||||
for (unsigned int j=0; j<runList->at(i).fRunName.size(); j++) { // necessary in case of ADDRUN
|
||||
musrT0 = new PMusrT0(dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fForwardHistoNo);
|
||||
t0Vector.push_back(musrT0);
|
||||
musrT0 = new PMusrT0(dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fBackwardHistoNo);
|
||||
t0Vector.push_back(musrT0);
|
||||
if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fForwardHistoNo))
|
||||
exit(0);
|
||||
if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fBackwardHistoNo))
|
||||
exit(0);
|
||||
}
|
||||
break;
|
||||
case MSR_FITTYPE_ASYM_RRF:
|
||||
for (unsigned int j=0; j<runList->at(i).fRunName.size(); j++) { // necessary in case of ADDRUN
|
||||
musrT0 = new PMusrT0(dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fForwardHistoNo);
|
||||
t0Vector.push_back(musrT0);
|
||||
musrT0 = new PMusrT0(dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fBackwardHistoNo);
|
||||
t0Vector.push_back(musrT0);
|
||||
musrT0 = new PMusrT0(dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fRightHistoNo);
|
||||
t0Vector.push_back(musrT0);
|
||||
musrT0 = new PMusrT0(dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fLeftHistoNo);
|
||||
t0Vector.push_back(musrT0);
|
||||
if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fForwardHistoNo))
|
||||
exit(0);
|
||||
if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fBackwardHistoNo))
|
||||
exit(0);
|
||||
if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fRightHistoNo))
|
||||
exit(0);
|
||||
if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fLeftHistoNo))
|
||||
exit(0);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -289,15 +314,6 @@ cout << endl;
|
||||
delete dataHandler;
|
||||
dataHandler = 0;
|
||||
}
|
||||
if (t0Vector.size() > 0) {
|
||||
for (unsigned int i=0; i<t0Vector.size(); i++) {
|
||||
if (t0Vector[i] != 0) {
|
||||
delete t0Vector[i];
|
||||
t0Vector[i] = 0;
|
||||
}
|
||||
}
|
||||
t0Vector.clear();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user