more work to get rid of raw pointers.

This commit is contained in:
2023-10-17 16:35:54 +02:00
parent ff9245fd28
commit ca742a064f
8 changed files with 89 additions and 239 deletions

View File

@ -94,15 +94,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);
// check if the musrT0 object could be invoked
if (musrT0 == nullptr) {
std::cerr << std::endl << ">> musrt0 **ERROR** Couldn't invoke musrT0 ...";
std::cerr << std::endl << ">> run name " << data.GetRawRunData(idx)->GetRunName()->Data();
std::cerr << std::endl;
return false;
}
std::unique_ptr<PMusrT0> musrT0 = std::make_unique<PMusrT0>(data);
// check if the musrT0 object is valid
if (!musrT0->IsValid()) {
@ -137,45 +129,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 +270,27 @@ 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::make_unique<TSAXParser>();
std::unique_ptr<PStartupHandler> startupHandler = std::make_unique<PStartupHandler>();
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::make_unique<PMsrHandler>(filename);
status = msrHandler->ReadMsrFile();
if (status != PMUSR_SUCCESS) {
switch (status) {
@ -383,12 +323,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::make_unique<PRunDataHandler>(msrHandler.get(), startupHandler->GetDataPathList());
else
dataHandler = new PRunDataHandler(msrHandler);
dataHandler = std::make_unique<PRunDataHandler>(msrHandler.get());
dataHandler->ReadData();
@ -874,8 +814,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 +840,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 +866,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 +894,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 +909,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 +937,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 +959,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 +986,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 +1011,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 +1037,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 +1062,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 +1090,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 +1118,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 +1135,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 +1173,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;
}