Skip to content
Snippets Groups Projects
Commit f7c2e86f authored by Bertram Kopf's avatar Bertram Kopf
Browse files

fixed memory leak in event generator

parent baac1a93
No related branches found
No related tags found
No related merge requests found
......@@ -64,6 +64,23 @@ void EventList::removeEvents(unsigned int nBegin, unsigned int nEnd)
eventList.erase(eventList.begin()+nBegin, eventList.begin()+nEnd);
}
void EventList::removeAndDeleteEvents(unsigned int nBegin, unsigned int nEnd)
{
if ( nBegin > nEnd || eventList.size()<nEnd) {
Alert << "can not remove event no " << nBegin << " - " << nEnd
<< " from list" << endmsg;
exit(1);
}
std::vector<Event*>::iterator currentNonConstEvent;
for (currentNonConstEvent = eventList.begin();
currentNonConstEvent != eventList.end();
++currentNonConstEvent){
delete *currentNonConstEvent;
(*currentNonConstEvent)=0;
}
eventList.erase(eventList.begin()+nBegin, eventList.begin()+nEnd);
}
Event* EventList::nextEvent()
{
......
......@@ -37,6 +37,7 @@ public:
void add(Event*);
void removeEvents(unsigned int nBegin, unsigned int nEnd);
void removeAndDeleteEvents(unsigned int nBegin, unsigned int nEnd);
Event* nextEvent();
void rewind();
......
......@@ -116,9 +116,6 @@ PwaGen::~PwaGen()
std::shared_ptr<EventList> PwaGen::GeneratePspEventList(unsigned int numEvents){
bool useMassRange = GlobalEnv::instance()->Channel()->useMassRange();
// double massMin = GlobalEnv::instance()->Channel()->massRangeMin();
// double massMax = GlobalEnv::instance()->Channel()->massRangeMax();
// std::vector<unsigned int> particleIndices = GlobalEnv::instance()->Channel()->particleIndicesMassRange();
std::vector< std::shared_ptr<MassRangeCut> > massRangeCuts= GlobalEnv::instance()->Channel()->massRangeCuts();
std::vector< std::shared_ptr<MassRangeCut> >::iterator itMassRangeCut;
......@@ -235,7 +232,7 @@ void PwaGen::generate(std::shared_ptr<AbsLh> theLh, fitParams& theFitParams){
Info << "Iteration " << noOfIterations << " finished. Accepted events:\t" << noOfAcceptedEvts << endmsg;
currentEvtList->rewind();
currentEvtList->removeEvents(0,currentEvtList->size());
currentEvtList->removeAndDeleteEvents(0,currentEvtList->size());
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment