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 <string.h>
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
#include <TApplication.h>
|
#include <TApplication.h>
|
||||||
#include <TSAXParser.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)
|
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
|
// check if the musrT0 object could be invoked
|
||||||
if (musrT0 == nullptr) {
|
if (musrT0 == nullptr) {
|
||||||
@ -137,45 +138,11 @@ Bool_t musrt0_item(TApplication &app, PMsrHandler *msrHandler, PMusrT0Data &data
|
|||||||
result = true;
|
result = true;
|
||||||
|
|
||||||
// disconnect all SIGNALS and SLOTS connected t0 musrT0
|
// disconnect all SIGNALS and SLOTS connected t0 musrT0
|
||||||
musrT0->Disconnect(musrT0);
|
musrT0->Disconnect(musrT0.get());
|
||||||
|
|
||||||
// cleanup
|
|
||||||
delete musrT0;
|
|
||||||
musrT0 = nullptr;
|
|
||||||
|
|
||||||
return result;
|
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>
|
* <p>
|
||||||
@ -312,45 +279,39 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
|
|
||||||
// read startup file
|
// read startup file
|
||||||
Char_t startup_path_name[128];
|
Char_t startup_path_name[128];
|
||||||
TSAXParser *saxParser = new TSAXParser();
|
std::unique_ptr<TSAXParser> saxParser = std::unique_ptr<TSAXParser>(new TSAXParser());
|
||||||
PStartupHandler *startupHandler = new PStartupHandler();
|
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()) {
|
if (!startupHandler->StartupFileFound()) {
|
||||||
std::cerr << std::endl << ">> musrt0 **WARNING** couldn't find " << startupHandler->GetStartupFilePath().Data();
|
std::cerr << std::endl << ">> musrt0 **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 << ">> musrt0 **WARNING** Reading/parsing musrfit_startup.xml failed.";
|
std::cerr << std::endl << ">> musrt0 **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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// read msr-file
|
// 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();
|
status = msrHandler->ReadMsrFile();
|
||||||
if (status != PMUSR_SUCCESS) {
|
if (status != PMUSR_SUCCESS) {
|
||||||
switch (status) {
|
switch (status) {
|
||||||
@ -383,12 +344,12 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
// read all the necessary runs (raw data)
|
// read all the necessary runs (raw data)
|
||||||
PRunDataHandler *dataHandler = nullptr;
|
std::unique_ptr<PRunDataHandler> dataHandler;
|
||||||
if (success) {
|
if (success) {
|
||||||
if (startupHandler)
|
if (startupHandler)
|
||||||
dataHandler = new PRunDataHandler(msrHandler, startupHandler->GetDataPathList());
|
dataHandler = std::unique_ptr<PRunDataHandler>(new PRunDataHandler(msrHandler.get(), startupHandler->GetDataPathList()));
|
||||||
else
|
else
|
||||||
dataHandler = new PRunDataHandler(msrHandler);
|
dataHandler = std::unique_ptr<PRunDataHandler>(new PRunDataHandler(msrHandler.get()));
|
||||||
|
|
||||||
dataHandler->ReadData();
|
dataHandler->ReadData();
|
||||||
|
|
||||||
@ -874,8 +835,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
musrT0Data.SetDetectorTag(PMUSRT0_FORWARD);
|
musrT0Data.SetDetectorTag(PMUSRT0_FORWARD);
|
||||||
musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE);
|
musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE);
|
||||||
// execute cmd
|
// execute cmd
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -901,8 +861,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
}
|
}
|
||||||
// feed necessary data
|
// feed necessary data
|
||||||
musrT0Data.SetAddRunIdx(j); // addruns
|
musrT0Data.SetAddRunIdx(j); // addruns
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, j, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -928,8 +887,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
}
|
}
|
||||||
// feed necessary data
|
// feed necessary data
|
||||||
musrT0Data.SetHistoNoIdx(j);
|
musrT0Data.SetHistoNoIdx(j);
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -957,8 +915,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
}
|
}
|
||||||
// feed necessary data
|
// feed necessary data
|
||||||
musrT0Data.SetHistoNoIdx(k);
|
musrT0Data.SetHistoNoIdx(k);
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, j, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
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);
|
musrT0Data.SetAddT0Bin((UInt_t)runList->at(i).GetAddT0Bin(k, j), k, j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1002,8 +958,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
musrT0Data.SetDetectorTag(PMUSRT0_FORWARD);
|
musrT0Data.SetDetectorTag(PMUSRT0_FORWARD);
|
||||||
musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE);
|
musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE);
|
||||||
// execute cmd
|
// execute cmd
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
// feed necessary data backward
|
// feed necessary data backward
|
||||||
@ -1025,8 +980,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
musrT0Data.SetDetectorTag(PMUSRT0_BACKWARD);
|
musrT0Data.SetDetectorTag(PMUSRT0_BACKWARD);
|
||||||
musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE);
|
musrT0Data.SetCmdTag(PMUSRT0_GET_T0_DATA_AND_BKG_RANGE);
|
||||||
// execute cmd
|
// execute cmd
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -1053,8 +1007,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
}
|
}
|
||||||
// feed necessary data
|
// feed necessary data
|
||||||
musrT0Data.SetAddRunIdx(j); // addruns
|
musrT0Data.SetAddRunIdx(j); // addruns
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, j, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1079,8 +1032,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
}
|
}
|
||||||
// feed necessary data
|
// feed necessary data
|
||||||
musrT0Data.SetAddRunIdx(j); // addruns
|
musrT0Data.SetAddRunIdx(j); // addruns
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, j, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1106,8 +1058,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
}
|
}
|
||||||
// feed necessary data
|
// feed necessary data
|
||||||
musrT0Data.SetHistoNoIdx(j);
|
musrT0Data.SetHistoNoIdx(j);
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1132,8 +1083,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
}
|
}
|
||||||
// feed necessary data
|
// feed necessary data
|
||||||
musrT0Data.SetHistoNoIdx(j);
|
musrT0Data.SetHistoNoIdx(j);
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1161,8 +1111,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
}
|
}
|
||||||
// feed necessary data
|
// feed necessary data
|
||||||
musrT0Data.SetHistoNoIdx(k);
|
musrT0Data.SetHistoNoIdx(k);
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, j, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1190,8 +1139,7 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
}
|
}
|
||||||
// feed necessary data
|
// feed necessary data
|
||||||
musrT0Data.SetHistoNoIdx(k);
|
musrT0Data.SetHistoNoIdx(k);
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, j, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, j, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1208,14 +1156,12 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
}
|
}
|
||||||
musrT0Data.SetHistoNo(forwardHistos);
|
musrT0Data.SetHistoNo(forwardHistos);
|
||||||
musrT0Data.SetDetectorTag(PMUSRT0_FORWARD);
|
musrT0Data.SetDetectorTag(PMUSRT0_FORWARD);
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
musrT0Data.SetHistoNo(backwardHistos);
|
musrT0Data.SetHistoNo(backwardHistos);
|
||||||
musrT0Data.SetDetectorTag(PMUSRT0_BACKWARD);
|
musrT0Data.SetDetectorTag(PMUSRT0_BACKWARD);
|
||||||
if (!musrt0_item(app, msrHandler, musrT0Data, 0, timeout)) {
|
if (!musrt0_item(app, msrHandler.get(), musrT0Data, 0, timeout)) {
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1248,8 +1194,5 @@ Int_t main(Int_t argc, Char_t *argv[])
|
|||||||
// delete __temp.msr
|
// delete __temp.msr
|
||||||
gSystem->Exec("rm __temp.msr");
|
gSystem->Exec("rm __temp.msr");
|
||||||
|
|
||||||
// clean up
|
|
||||||
musrt0_cleanup(saxParser, startupHandler, msrHandler, dataHandler);
|
|
||||||
|
|
||||||
return PMUSR_SUCCESS;
|
return PMUSR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user