replaced raw pointers by smart pointers for musrFT.cpp.
This commit is contained in:
parent
ff9245fd28
commit
1feed7116a
101
src/musrFT.cpp
101
src/musrFT.cpp
@ -36,6 +36,7 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
#include <TApplication.h>
|
#include <TApplication.h>
|
||||||
#include <TROOT.h>
|
#include <TROOT.h>
|
||||||
@ -1030,40 +1031,30 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
PStartupOptions startup_options;
|
PStartupOptions startup_options;
|
||||||
startup_options.writeExpectedChisq = false;
|
startup_options.writeExpectedChisq = false;
|
||||||
startup_options.estimateN0 = true;
|
startup_options.estimateN0 = true;
|
||||||
TSAXParser *saxParser = new TSAXParser();
|
std::unique_ptr<TSAXParser> saxParser = std::unique_ptr<TSAXParser>(new TSAXParser());
|
||||||
PStartupHandler *startupHandler = new PStartupHandler();
|
if (saxParser == nullptr) {
|
||||||
|
std::cerr << ">> musrFT: **ERROR** couldn't invoke TSAXParser object" << std::endl;
|
||||||
|
return PMUSR_MSR_ALLOCATION_ERROR;
|
||||||
|
}
|
||||||
|
std::unique_ptr<PStartupHandler> startupHandler = std::unique_ptr<PStartupHandler>(new PStartupHandler());
|
||||||
|
if (startupHandler == nullptr) {
|
||||||
|
std::cerr << ">> musrFT: **ERROR** couldn't invoke PStartupHandler object" << std::endl;
|
||||||
|
return PMUSR_MSR_ALLOCATION_ERROR;
|
||||||
|
}
|
||||||
if (!startupHandler->StartupFileFound()) {
|
if (!startupHandler->StartupFileFound()) {
|
||||||
std::cerr << std::endl << ">> musrFT **WARNING** couldn't find " << startupHandler->GetStartupFilePath().Data();
|
std::cerr << std::endl << ">> musrFT **WARNING** couldn't find " << startupHandler->GetStartupFilePath().Data();
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
// clean up
|
|
||||||
if (saxParser) {
|
|
||||||
delete saxParser;
|
|
||||||
saxParser = nullptr;
|
|
||||||
}
|
|
||||||
if (startupHandler) {
|
|
||||||
delete startupHandler;
|
|
||||||
startupHandler = nullptr;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
strcpy(startup_path_name, startupHandler->GetStartupFilePath().Data());
|
strcpy(startup_path_name, startupHandler->GetStartupFilePath().Data());
|
||||||
saxParser->ConnectToHandler("PStartupHandler", startupHandler);
|
saxParser->ConnectToHandler("PStartupHandler", startupHandler.get());
|
||||||
//status = saxParser->ParseFile(startup_path_name);
|
//status = saxParser->ParseFile(startup_path_name);
|
||||||
// parsing the file as above seems to lead to problems in certain environments;
|
// parsing the file as above seems to lead to problems in certain environments;
|
||||||
// use the parseXmlFile function instead (see PStartupHandler.cpp for the definition)
|
// use the parseXmlFile function instead (see PStartupHandler.cpp for the definition)
|
||||||
status = parseXmlFile(saxParser, startup_path_name);
|
status = parseXmlFile(saxParser.get(), startup_path_name);
|
||||||
// check for parse errors
|
// check for parse errors
|
||||||
if (status) { // error
|
if (status) { // error
|
||||||
std::cerr << std::endl << ">> musrFT **WARNING** Reading/parsing musrfit_startup.xml failed.";
|
std::cerr << std::endl << ">> musrFT **WARNING** Reading/parsing musrfit_startup.xml failed.";
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
// clean up
|
|
||||||
if (saxParser) {
|
|
||||||
delete saxParser;
|
|
||||||
saxParser = nullptr;
|
|
||||||
}
|
|
||||||
if (startupHandler) {
|
|
||||||
delete startupHandler;
|
|
||||||
startupHandler = nullptr;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1071,10 +1062,14 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
PPrepFourier data(startupParam.packing, startupParam.bkg_range, startupParam.bkg);
|
PPrepFourier data(startupParam.packing, startupParam.bkg_range, startupParam.bkg);
|
||||||
|
|
||||||
// load msr-file(s)
|
// load msr-file(s)
|
||||||
std::vector<PMsrHandler*> msrHandler;
|
std::vector< std::unique_ptr<PMsrHandler> > msrHandler;
|
||||||
msrHandler.resize(startupParam.msrFln.size());
|
msrHandler.resize(startupParam.msrFln.size());
|
||||||
for (UInt_t i=0; i<startupParam.msrFln.size(); i++) {
|
for (UInt_t i=0; i<startupParam.msrFln.size(); i++) {
|
||||||
msrHandler[i] = new PMsrHandler(startupParam.msrFln[i].Data(), &startup_options, true);
|
msrHandler[i] = std::unique_ptr<PMsrHandler>(new PMsrHandler(startupParam.msrFln[i].Data(), &startup_options, true));
|
||||||
|
if (msrHandler[i] == nullptr) {
|
||||||
|
std::cerr << ">> musrFT: **ERROR** couldn't invoke PMsrHandler object" << std::endl;
|
||||||
|
return PMUSR_MSR_ALLOCATION_ERROR;
|
||||||
|
}
|
||||||
status = msrHandler[i]->ReadMsrFile();
|
status = msrHandler[i]->ReadMsrFile();
|
||||||
if (status != PMUSR_SUCCESS) {
|
if (status != PMUSR_SUCCESS) {
|
||||||
switch (status) {
|
switch (status) {
|
||||||
@ -1092,24 +1087,34 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<PRunDataHandler*> runDataHandler;
|
std::vector< std::unique_ptr<PRunDataHandler> > runDataHandler;
|
||||||
runDataHandler.resize(startupParam.msrFln.size()+startupParam.dataFln.size()); // resize to the total number of run data provided
|
runDataHandler.resize(startupParam.msrFln.size()+startupParam.dataFln.size()); // resize to the total number of run data provided
|
||||||
// load data-file(s) related to msr-file
|
// load data-file(s) related to msr-file
|
||||||
for (UInt_t i=0; i<msrHandler.size(); i++) {
|
for (UInt_t i=0; i<msrHandler.size(); i++) {
|
||||||
// create run data handler
|
// create run data handler
|
||||||
if (startupHandler)
|
if (startupHandler)
|
||||||
runDataHandler[i] = new PRunDataHandler(msrHandler[i], startupHandler->GetDataPathList());
|
runDataHandler[i] = std::unique_ptr<PRunDataHandler>(new PRunDataHandler(msrHandler[i].get(), startupHandler->GetDataPathList()));
|
||||||
else
|
else
|
||||||
runDataHandler[i] = new PRunDataHandler(msrHandler[i]);
|
runDataHandler[i] = std::unique_ptr<PRunDataHandler>(new PRunDataHandler(msrHandler[i].get()));
|
||||||
|
|
||||||
|
if (runDataHandler[i] == nullptr) {
|
||||||
|
std::cerr << ">> musrFT: **ERROR** couldn't invoke PRunDataHandler object" << std::endl;
|
||||||
|
return PMUSR_MSR_ALLOCATION_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// load data-file(s) provided directly
|
// load data-file(s) provided directly
|
||||||
for (UInt_t i=msrHandler.size(); i<msrHandler.size()+startupParam.dataFln.size(); i++) {
|
for (UInt_t i=msrHandler.size(); i<msrHandler.size()+startupParam.dataFln.size(); i++) {
|
||||||
// create run data handler
|
// create run data handler
|
||||||
if (startupHandler)
|
if (startupHandler)
|
||||||
runDataHandler[i] = new PRunDataHandler(startupParam.dataFln[i-msrHandler.size()], startupParam.dataFileFormat[i-msrHandler.size()], startupHandler->GetDataPathList());
|
runDataHandler[i] = std::unique_ptr<PRunDataHandler>(new PRunDataHandler(startupParam.dataFln[i-msrHandler.size()], startupParam.dataFileFormat[i-msrHandler.size()], startupHandler->GetDataPathList()));
|
||||||
else
|
else
|
||||||
runDataHandler[i] = new PRunDataHandler(startupParam.dataFln[i-msrHandler.size()], startupParam.dataFileFormat[i-msrHandler.size()]);
|
runDataHandler[i] = std::unique_ptr<PRunDataHandler>(new PRunDataHandler(startupParam.dataFln[i-msrHandler.size()], startupParam.dataFileFormat[i-msrHandler.size()]));
|
||||||
|
|
||||||
|
if (runDataHandler[i] == nullptr) {
|
||||||
|
std::cerr << ">> musrFT: **ERROR** couldn't invoke PRunDataHandler object" << std::endl;
|
||||||
|
return PMUSR_MSR_ALLOCATION_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// read all the data files
|
// read all the data files
|
||||||
@ -1288,7 +1293,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
|
|
||||||
// handle data set(s)
|
// handle data set(s)
|
||||||
// group forward histos
|
// group forward histos
|
||||||
if (musrFT_groupHistos(runDataHandler[i], global, runs->at(runList[j]-1), rd)) {
|
if (musrFT_groupHistos(runDataHandler[i].get(), global, runs->at(runList[j]-1), rd)) {
|
||||||
return PMUSR_DATA_FILE_READ_ERROR;
|
return PMUSR_DATA_FILE_READ_ERROR;
|
||||||
}
|
}
|
||||||
// keep data set
|
// keep data set
|
||||||
@ -1412,6 +1417,10 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
fourier.resize(histo.size());
|
fourier.resize(histo.size());
|
||||||
for (UInt_t i=0; i<fourier.size(); i++) {
|
for (UInt_t i=0; i<fourier.size(); i++) {
|
||||||
fourier[i] = new PFourier(histo[i], unitTag, 0.0, 0.0, true, startupParam.fourierPower);
|
fourier[i] = new PFourier(histo[i], unitTag, 0.0, 0.0, true, startupParam.fourierPower);
|
||||||
|
if (fourier[i] == nullptr) {
|
||||||
|
std::cerr << ">> musrFT: **ERROR** couldn't invoke PFourier object" << std::endl;
|
||||||
|
return PMUSR_MSR_ALLOCATION_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fourier transform data
|
// Fourier transform data
|
||||||
@ -1435,7 +1444,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
startupParam.fourierRange[1] = fourier[0]->GetMaxFreq();
|
startupParam.fourierRange[1] = fourier[0]->GetMaxFreq();
|
||||||
}
|
}
|
||||||
|
|
||||||
PFourierCanvas *fourierCanvas = nullptr;
|
std::unique_ptr<PFourierCanvas> fourierCanvas;
|
||||||
|
|
||||||
// if Fourier dumped if whished do it now
|
// if Fourier dumped if whished do it now
|
||||||
if (startupParam.dumpFln.Length() > 0) {
|
if (startupParam.dumpFln.Length() > 0) {
|
||||||
@ -1455,19 +1464,23 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
TApplication app("App", &argc, argv);
|
TApplication app("App", &argc, argv);
|
||||||
|
|
||||||
if (startupHandler) {
|
if (startupHandler) {
|
||||||
fourierCanvas = new PFourierCanvas(fourier, dataSetTag, startupParam.title.Data(),
|
fourierCanvas = std::unique_ptr<PFourierCanvas>(new PFourierCanvas(fourier, dataSetTag, startupParam.title.Data(),
|
||||||
startupParam.showAverage, startupParam.showAveragePerDataSet,
|
startupParam.showAverage, startupParam.showAveragePerDataSet,
|
||||||
fourierPlotTag, startupParam.fourierRange, startupParam.initialPhase,
|
fourierPlotTag, startupParam.fourierRange, startupParam.initialPhase,
|
||||||
10, 10, 800, 800,
|
10, 10, 800, 800,
|
||||||
startupHandler->GetMarkerList(),
|
startupHandler->GetMarkerList(),
|
||||||
startupHandler->GetColorList(),
|
startupHandler->GetColorList(),
|
||||||
batch);
|
batch));
|
||||||
} else {
|
} else {
|
||||||
fourierCanvas = new PFourierCanvas(fourier, dataSetTag, startupParam.title.Data(),
|
fourierCanvas = std::unique_ptr<PFourierCanvas>(new PFourierCanvas(fourier, dataSetTag, startupParam.title.Data(),
|
||||||
startupParam.showAverage, startupParam.showAveragePerDataSet,
|
startupParam.showAverage, startupParam.showAveragePerDataSet,
|
||||||
fourierPlotTag, startupParam.fourierRange, startupParam.initialPhase,
|
fourierPlotTag, startupParam.fourierRange, startupParam.initialPhase,
|
||||||
10, 10, 800, 800,
|
10, 10, 800, 800,
|
||||||
batch);
|
batch));
|
||||||
|
}
|
||||||
|
if (fourierCanvas == nullptr) {
|
||||||
|
std::cerr << ">> musrFT: **ERROR** couldn't invoke PFourierCanvas object." << std::endl;
|
||||||
|
return PMUSR_MSR_ALLOCATION_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
fourierCanvas->UpdateFourierPad();
|
fourierCanvas->UpdateFourierPad();
|
||||||
@ -1480,7 +1493,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
ok = false;
|
ok = false;
|
||||||
} else {
|
} else {
|
||||||
// connect signal/slot
|
// connect signal/slot
|
||||||
TQObject::Connect("TCanvas", "Closed()", "PFourierCanvas", fourierCanvas, "LastCanvasClosed()");
|
TQObject::Connect("TCanvas", "Closed()", "PFourierCanvas", fourierCanvas.get(), "LastCanvasClosed()");
|
||||||
|
|
||||||
fourierCanvas->SetTimeout(startupParam.timeout);
|
fourierCanvas->SetTimeout(startupParam.timeout);
|
||||||
|
|
||||||
@ -1509,22 +1522,6 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
|
|
||||||
|
|
||||||
// cleanup
|
// cleanup
|
||||||
if (fourierCanvas)
|
|
||||||
delete fourierCanvas;
|
|
||||||
|
|
||||||
if (startupHandler)
|
|
||||||
delete startupHandler;
|
|
||||||
|
|
||||||
for (UInt_t i=0; i<msrHandler.size(); i++)
|
|
||||||
if (msrHandler[i])
|
|
||||||
delete msrHandler[i];
|
|
||||||
msrHandler.clear();
|
|
||||||
|
|
||||||
for (UInt_t i=0; i<runDataHandler.size(); i++)
|
|
||||||
if (runDataHandler[i])
|
|
||||||
delete runDataHandler[i];
|
|
||||||
runDataHandler.clear();
|
|
||||||
|
|
||||||
if (histo.size() > 0) {
|
if (histo.size() > 0) {
|
||||||
for (UInt_t i=0; i<histo.size(); i++)
|
for (UInt_t i=0; i<histo.size(); i++)
|
||||||
delete histo[i];
|
delete histo[i];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user