replaced raw pointers by smart pointers for musrt0.cpp.
This commit is contained in:
parent
1feed7116a
commit
b5a391e355
133
src/musrt0.cpp
133
src/musrt0.cpp
@ -36,6 +36,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
|
||||
#include <TApplication.h>
|
||||
#include <TSAXParser.h>
|
||||
@ -94,7 +95,7 @@ void musrt0_syntax()
|
||||
*/
|
||||
Bool_t musrt0_item(TApplication &app, PMsrHandler *msrHandler, PMusrT0Data &data, UInt_t idx, Int_t timeout)
|
||||
{
|
||||
PMusrT0 *musrT0 = new PMusrT0(data);
|
||||
std::unique_ptr<PMusrT0> musrT0 = std::unique_ptr<PMusrT0>(new PMusrT0(data));
|
||||
|
||||
// check if the musrT0 object could be invoked
|
||||
if (musrT0 == nullptr) {
|
||||
@ -137,45 +138,11 @@ Bool_t musrt0_item(TApplication &app, PMsrHandler *msrHandler, PMusrT0Data &data
|
||||
result = true;
|
||||
|
||||
// disconnect all SIGNALS and SLOTS connected t0 musrT0
|
||||
musrT0->Disconnect(musrT0);
|
||||
|
||||
// cleanup
|
||||
delete musrT0;
|
||||
musrT0 = nullptr;
|
||||
musrT0->Disconnect(musrT0.get());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>This routine cleans up the handlers.
|
||||
*
|
||||
* \param saxParser XML SAX parser
|
||||
* \param startupHandler startup handler
|
||||
* \param msrHandler msr-file handler
|
||||
* \param dataHandler raw run data handler
|
||||
*/
|
||||
void musrt0_cleanup(TSAXParser *saxParser, PStartupHandler *startupHandler, PMsrHandler *msrHandler, PRunDataHandler *dataHandler)
|
||||
{
|
||||
if (saxParser) {
|
||||
delete saxParser;
|
||||
saxParser = nullptr;
|
||||
}
|
||||
if (startupHandler) {
|
||||
delete startupHandler;
|
||||
startupHandler = nullptr;
|
||||
}
|
||||
if (msrHandler) {
|
||||
delete msrHandler;
|
||||
msrHandler = nullptr;
|
||||
}
|
||||
if (dataHandler) {
|
||||
delete dataHandler;
|
||||
dataHandler = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>
|
||||
@ -312,45 +279,39 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
|
||||
// read startup file
|
||||
Char_t startup_path_name[128];
|
||||
TSAXParser *saxParser = new TSAXParser();
|
||||
PStartupHandler *startupHandler = new PStartupHandler();
|
||||
std::unique_ptr<TSAXParser> saxParser = std::unique_ptr<TSAXParser>(new TSAXParser());
|
||||
if (saxParser == nullptr) {
|
||||
std::cerr << ">> musrt0: **ERROR** couldn't invoke TSAXParser." << std::endl;
|
||||
return PMUSR_MSR_ALLOCATION_ERROR;
|
||||
}
|
||||
std::unique_ptr<PStartupHandler> startupHandler = std::unique_ptr<PStartupHandler>(new PStartupHandler());
|
||||
if (startupHandler == nullptr) {
|
||||
std::cerr << ">> musrt0: **ERROR** couldn't invoke PStartupHandler." << std::endl;
|
||||
return PMUSR_MSR_ALLOCATION_ERROR;
|
||||
}
|
||||
if (!startupHandler->StartupFileFound()) {
|
||||
std::cerr << std::endl << ">> musrt0 **WARNING** couldn't find " << startupHandler->GetStartupFilePath().Data();
|
||||
std::cerr << std::endl;
|
||||
// clean up
|
||||
if (saxParser) {
|
||||
delete saxParser;
|
||||
saxParser = nullptr;
|
||||
}
|
||||
if (startupHandler) {
|
||||
delete startupHandler;
|
||||
startupHandler = nullptr;
|
||||
}
|
||||
} else {
|
||||
strcpy(startup_path_name, startupHandler->GetStartupFilePath().Data());
|
||||
saxParser->ConnectToHandler("PStartupHandler", startupHandler);
|
||||
saxParser->ConnectToHandler("PStartupHandler", startupHandler.get());
|
||||
//status = saxParser->ParseFile(startup_path_name);
|
||||
// parsing the file as above seems to lead to problems in certain environments;
|
||||
// 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
|
||||
if (status) { // error
|
||||
std::cerr << std::endl << ">> musrt0 **WARNING** Reading/parsing musrfit_startup.xml failed.";
|
||||
std::cerr << std::endl;
|
||||
// clean up
|
||||
if (saxParser) {
|
||||
delete saxParser;
|
||||
saxParser = nullptr;
|
||||
}
|
||||
if (startupHandler) {
|
||||
delete startupHandler;
|
||||
startupHandler = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// read msr-file
|
||||
PMsrHandler *msrHandler = new PMsrHandler(filename);
|
||||
std::unique_ptr<PMsrHandler> msrHandler = std::unique_ptr<PMsrHandler>(new PMsrHandler(filename));
|
||||
if (msrHandler == nullptr) {
|
||||
std::cerr << ">> musrt0: **ERROR** couldn't invoke PMsrHandler." << std::endl;
|
||||
return PMUSR_MSR_ALLOCATION_ERROR;
|
||||
}
|
||||
status = msrHandler->ReadMsrFile();
|
||||
if (status != PMUSR_SUCCESS) {
|
||||
switch (status) {
|
||||
@ -383,12 +344,12 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
}
|
||||
|
||||
// read all the necessary runs (raw data)
|
||||
PRunDataHandler *dataHandler = nullptr;
|
||||
std::unique_ptr<PRunDataHandler> dataHandler;
|
||||
if (success) {
|
||||
if (startupHandler)
|
||||
dataHandler = new PRunDataHandler(msrHandler, startupHandler->GetDataPathList());
|
||||
dataHandler = std::unique_ptr<PRunDataHandler>(new PRunDataHandler(msrHandler.get(), startupHandler->GetDataPathList()));
|
||||
else
|
||||
dataHandler = new PRunDataHandler(msrHandler);
|
||||
dataHandler = std::unique_ptr<PRunDataHandler>(new PRunDataHandler(msrHandler.get()));
|
||||
|
||||
dataHandler->ReadData();
|
||||
|
||||
@ -874,8 +835,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
musrT0Data.SetDetectorTag(PMUSRT0_FORWARD);
|
||||
musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE);
|
||||
// execute cmd
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
} else {
|
||||
@ -901,8 +861,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
}
|
||||
// feed necessary data
|
||||
musrT0Data.SetAddRunIdx(j); // addruns
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, j, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
@ -928,8 +887,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
}
|
||||
// feed necessary data
|
||||
musrT0Data.SetHistoNoIdx(j);
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
@ -957,8 +915,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
}
|
||||
// feed necessary data
|
||||
musrT0Data.SetHistoNoIdx(k);
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, j, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
@ -973,8 +930,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
musrT0Data.SetAddT0Bin((UInt_t)runList->at(i).GetAddT0Bin(k, j), k, j);
|
||||
}
|
||||
}
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
@ -1002,8 +958,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
musrT0Data.SetDetectorTag(PMUSRT0_FORWARD);
|
||||
musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE);
|
||||
// execute cmd
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
// feed necessary data backward
|
||||
@ -1025,8 +980,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
musrT0Data.SetDetectorTag(PMUSRT0_BACKWARD);
|
||||
musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE);
|
||||
// execute cmd
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
} else {
|
||||
@ -1053,8 +1007,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
}
|
||||
// feed necessary data
|
||||
musrT0Data.SetAddRunIdx(j); // addruns
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, j, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
@ -1079,8 +1032,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
}
|
||||
// feed necessary data
|
||||
musrT0Data.SetAddRunIdx(j); // addruns
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, j, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
@ -1106,8 +1058,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
}
|
||||
// feed necessary data
|
||||
musrT0Data.SetHistoNoIdx(j);
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
@ -1132,8 +1083,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
}
|
||||
// feed necessary data
|
||||
musrT0Data.SetHistoNoIdx(j);
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
@ -1161,8 +1111,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
}
|
||||
// feed necessary data
|
||||
musrT0Data.SetHistoNoIdx(k);
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, j, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
@ -1190,8 +1139,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
}
|
||||
// feed necessary data
|
||||
musrT0Data.SetHistoNoIdx(k);
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, j, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
@ -1208,14 +1156,12 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
}
|
||||
musrT0Data.SetHistoNo(forwardHistos);
|
||||
musrT0Data.SetDetectorTag(PMUSRT0_FORWARD);
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
musrT0Data.SetHistoNo(backwardHistos);
|
||||
musrT0Data.SetDetectorTag(PMUSRT0_BACKWARD);
|
||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
@ -1248,8 +1194,5 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
// delete __temp.msr
|
||||
gSystem->Exec("rm __temp.msr");
|
||||
|
||||
// clean up
|
||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
||||
|
||||
return PMUSR_SUCCESS;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user