From e35c2256bea7283a79bfcccf461ea66f1be39eaf Mon Sep 17 00:00:00 2001 From: nemu Date: Thu, 26 Mar 2009 12:25:15 +0000 Subject: [PATCH] some more work towards musrt0 --- src/classes/PMusrT0.cpp | 155 +++++++++++++++++++++++++++++++++++++++- src/include/PMusrT0.h | 7 +- src/musrt0.cpp | 25 ++++--- 3 files changed, 173 insertions(+), 14 deletions(-) diff --git a/src/classes/PMusrT0.cpp b/src/classes/PMusrT0.cpp index ff677bdc..4f75d387 100644 --- a/src/classes/PMusrT0.cpp +++ b/src/classes/PMusrT0.cpp @@ -40,6 +40,11 @@ using namespace std; #include "PMusrT0.h" +#define DETECTOR_TAG_FORWARD 0 +#define DETECTOR_TAG_BACKWARD 1 +#define DETECTOR_TAG_RIGHT 2 +#define DETECTOR_TAG_LEFT 3 + ClassImpQ(PMusrT0) //-------------------------------------------------------------------------- @@ -50,7 +55,20 @@ ClassImpQ(PMusrT0) */ PMusrT0::PMusrT0() { + fRunNo = -1; + fDetectorTag = -1; + fMainCanvas = 0; + + fHisto = 0; + fData = 0; + fBkg = 0; + + fT0Line = 0; + fFirstBkgLine = 0; + fLastBkgLine = 0; + fFirstDataLine = 0; + fLastDataLine = 0; } //-------------------------------------------------------------------------- @@ -61,10 +79,13 @@ PMusrT0::PMusrT0() * \param rawRunData * \param histoNo */ -PMusrT0::PMusrT0(PRawRunData *rawRunData, unsigned int histoNo) +PMusrT0::PMusrT0(PRawRunData *rawRunData, int runNo, int histoNo, int detectorTag) { cout << endl << "run Name = " << rawRunData->fRunName.Data() << ", histoNo = " << histoNo << endl; + fRunNo = runNo; + fDetectorTag = detectorTag; + TString str = rawRunData->fRunName + TString(" : "); str += histoNo; @@ -76,7 +97,7 @@ PMusrT0::PMusrT0(PRawRunData *rawRunData, unsigned int histoNo) Double_t end = noOfBins + 0.5; fHisto = new TH1F("fHisto", str.Data(), noOfBins, start, end); fHisto->SetMarkerStyle(21); - fHisto->SetMarkerSize(1); + fHisto->SetMarkerSize(0.5); fHisto->SetMarkerColor(TColor::GetColor(0,0,0)); // black for (unsigned int i=0; ifDataBin[histoNo].size(); i++) { @@ -113,7 +134,7 @@ PMusrT0::PMusrT0(PRawRunData *rawRunData, unsigned int histoNo) this, "HandleCmdKey(Int_t,Int_t,Int_t,TObject*)"); // draw histos etc - fHisto->Draw("p"); + fHisto->Draw("p0 hist"); } //-------------------------------------------------------------------------- @@ -132,6 +153,14 @@ PMusrT0::~PMusrT0() delete fHisto; fHisto = 0; } + if (fData) { + delete fData; + fData = 0; + } + if (fBkg) { + delete fBkg; + fBkg = 0; + } } //-------------------------------------------------------------------------- @@ -218,10 +247,130 @@ void PMusrT0::SetMsrHandler(PMsrHandler *msrHandler) void PMusrT0::InitDataAndBkg() { // feed data range histo + int dataRange[2]; + switch (fDetectorTag) { + case DETECTOR_TAG_FORWARD: + dataRange[0] = fMsrHandler->GetMsrRunList()->at(fRunNo).fDataRange[0]; + dataRange[1] = fMsrHandler->GetMsrRunList()->at(fRunNo).fDataRange[1]; + break; + case DETECTOR_TAG_BACKWARD: + dataRange[0] = fMsrHandler->GetMsrRunList()->at(fRunNo).fDataRange[2]; + dataRange[1] = fMsrHandler->GetMsrRunList()->at(fRunNo).fDataRange[3]; + break; + case DETECTOR_TAG_RIGHT: + // not clear yet what to be done + break; + case DETECTOR_TAG_LEFT: + // not clear yet what to be done + break; + default: + // not clear yet what to be done + break; + } + + Int_t noOfBins = dataRange[1]-dataRange[0]+1; + Double_t start = dataRange[0] - 0.5; + Double_t end = dataRange[1] + 0.5; + fData = new TH1F("fData", "fData", noOfBins, start, end); + fData->SetMarkerStyle(21); + fData->SetMarkerSize(0.5); + fData->SetMarkerColor(TColor::GetColor(0,0,255)); // blue + + for (int i=0; iSetBinContent(i+1, fHisto->GetBinContent(dataRange[0]+i+1)); + } + fData->Draw("p0 hist same"); // feed background histo + int bkgRange[2]; + switch (fDetectorTag) { + case DETECTOR_TAG_FORWARD: + bkgRange[0] = fMsrHandler->GetMsrRunList()->at(fRunNo).fBkgRange[0]; + bkgRange[1] = fMsrHandler->GetMsrRunList()->at(fRunNo).fBkgRange[1]; + break; + case DETECTOR_TAG_BACKWARD: + bkgRange[0] = fMsrHandler->GetMsrRunList()->at(fRunNo).fBkgRange[2]; + bkgRange[1] = fMsrHandler->GetMsrRunList()->at(fRunNo).fBkgRange[3]; + break; + case DETECTOR_TAG_RIGHT: + // not clear yet what to be done + break; + case DETECTOR_TAG_LEFT: + // not clear yet what to be done + break; + default: + // not clear yet what to be done + break; + } + + noOfBins = bkgRange[1]-bkgRange[0]+1; + start = bkgRange[0] - 0.5; + end = bkgRange[1] + 0.5; + fBkg = new TH1F("fBkg", "fBkg", noOfBins, start, end); + fBkg->SetMarkerStyle(21); + fBkg->SetMarkerSize(0.5); + fBkg->SetMarkerColor(TColor::GetColor(255,0,0)); // red + + for (int i=0; iSetBinContent(i+1, fHisto->GetBinContent(bkgRange[0]+i+1)); + } + fBkg->Draw("p0 hist same"); // add lines + // t0 line + int t0Bin; + switch (fDetectorTag) { + case DETECTOR_TAG_FORWARD: + t0Bin = fMsrHandler->GetMsrRunList()->at(fRunNo).fT0[0]; + break; + case DETECTOR_TAG_BACKWARD: + t0Bin = fMsrHandler->GetMsrRunList()->at(fRunNo).fT0[1]; + break; + case DETECTOR_TAG_RIGHT: + // not clear yet what to be done + break; + case DETECTOR_TAG_LEFT: + // not clear yet what to be done + break; + default: + // not clear yet what to be done + break; + } + Double_t max = fHisto->GetMaximum(); + fT0Line = new TLine((double)t0Bin, 0.0, (double)t0Bin, max); + fT0Line->SetLineStyle(1); // solid + fT0Line->SetLineColor(TColor::GetColor(0,255,0)); // green + fT0Line->SetLineWidth(2); + fT0Line->Draw(); + + // data lines + fFirstDataLine = new TLine((double)dataRange[0], 0.0, (double)dataRange[0], max); + fFirstDataLine->SetLineStyle(3); // doted + fFirstDataLine->SetLineColor(TColor::GetColor(0,0,255)); // blue + fFirstDataLine->SetLineWidth(2); + fFirstDataLine->Draw(); + + fLastDataLine = new TLine((double)dataRange[1], 0.0, (double)dataRange[1], max); + fLastDataLine->SetLineStyle(3); // doted + fLastDataLine->SetLineColor(TColor::GetColor(0,0,255)); // blue + fLastDataLine->SetLineWidth(2); + fLastDataLine->Draw(); + + // bkg lines + fFirstBkgLine = new TLine((double)bkgRange[0], 0.0, (double)bkgRange[0], max); + fFirstBkgLine->SetLineStyle(6); // _..._... + fFirstBkgLine->SetLineColor(TColor::GetColor(255,0,0)); // red + fFirstBkgLine->SetLineWidth(2); + fFirstBkgLine->Draw(); + + fLastBkgLine = new TLine((double)bkgRange[1], 0.0, (double)bkgRange[1], max); + fLastBkgLine->SetLineStyle(6); // _..._... + fLastBkgLine->SetLineColor(TColor::GetColor(255,0,0)); // red + fLastBkgLine->SetLineWidth(2); + fLastBkgLine->Draw(); + + fMainCanvas->cd(); + fMainCanvas->Update(); } //-------------------------------------------------------------------------- diff --git a/src/include/PMusrT0.h b/src/include/PMusrT0.h index 35efde4c..032392b0 100644 --- a/src/include/PMusrT0.h +++ b/src/include/PMusrT0.h @@ -63,7 +63,7 @@ class PMusrT0 : public TObject, public TQObject { public: PMusrT0(); - PMusrT0(PRawRunData *rawRunData, unsigned int histoNo); + PMusrT0(PRawRunData *rawRunData, int runNo, int histoNo, int detectorTag); virtual ~PMusrT0(); @@ -77,9 +77,12 @@ class PMusrT0 : public TObject, public TQObject private: #ifndef __MAKECINT__ - PMsrHandler *fMsrHandler; + PMsrHandler *fMsrHandler; #endif // __MAKECINT__ + int fRunNo; + int fDetectorTag; + // canvas menu related variables TRootCanvas *fImp; TGMenuBar *fBar; diff --git a/src/musrt0.cpp b/src/musrt0.cpp index 6af81305..5703113a 100644 --- a/src/musrt0.cpp +++ b/src/musrt0.cpp @@ -66,10 +66,17 @@ void musrt0_syntax() /** *

* + * \param app + * \param msrHandler + * \param rawRunData + * \param histoNo + * \param runNo + * \param detectorTag 0=forward, 1=backward, 2=left, 3=right */ -bool musrt0_item(TApplication &app, PMsrHandler *msrHandler, PRawRunData *rawRunData, unsigned int histoNo) +bool musrt0_item(TApplication &app, PMsrHandler *msrHandler, PRawRunData *rawRunData, + unsigned int histoNo, unsigned int runNo, unsigned int detectorTag) { - PMusrT0 *musrT0 = new PMusrT0(rawRunData, histoNo); + PMusrT0 *musrT0 = new PMusrT0(rawRunData, histoNo, runNo, detectorTag); if (musrT0 == 0) { cout << endl << "**ERROR** Couldn't invoke musrT0 ..."; @@ -202,27 +209,27 @@ int main(int argc, char *argv[]) switch (runList->at(i).fFitType) { case MSR_FITTYPE_SINGLE_HISTO: for (unsigned int j=0; jat(i).fRunName.size(); j++) { // necessary in case of ADDRUN - if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fForwardHistoNo)) + if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), i, runList->at(i).fForwardHistoNo, 0)) exit(0); } break; case MSR_FITTYPE_ASYM: for (unsigned int j=0; jat(i).fRunName.size(); j++) { // necessary in case of ADDRUN - if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fForwardHistoNo)) + if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), i, runList->at(i).fForwardHistoNo, 0)) exit(0); - if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fBackwardHistoNo)) + if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), i, runList->at(i).fBackwardHistoNo, 1)) exit(0); } break; case MSR_FITTYPE_ASYM_RRF: for (unsigned int j=0; jat(i).fRunName.size(); j++) { // necessary in case of ADDRUN - if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fForwardHistoNo)) + if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), i, runList->at(i).fForwardHistoNo, 0)) exit(0); - if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fBackwardHistoNo)) + if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), i, runList->at(i).fBackwardHistoNo, 1)) exit(0); - if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fRightHistoNo)) + if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), i, runList->at(i).fRightHistoNo, 2)) exit(0); - if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), runList->at(i).fLeftHistoNo)) + if (!musrt0_item(app, msrHandler, dataHandler->GetRunData(runList->at(i).fRunName[j]), i, runList->at(i).fLeftHistoNo, 3)) exit(0); } break;