void ForEachMSAction::Perform(ArtifactSet &artifacts, ProgressListener &progress) { unsigned taskIndex = 0; FinishAll(); for(std::vector<std::string>::const_iterator i=_filenames.begin();i!=_filenames.end();++i) { std::string filename = *i; progress.OnStartTask(*this, taskIndex, _filenames.size(), std::string("Processing measurement set ") + filename); bool skip = false; if(_skipIfAlreadyProcessed) { MeasurementSet set(filename); if(set.HasRFIConsoleHistory()) { skip = true; AOLogger::Info << "Skipping " << filename << ",\n" "because the set contains AOFlagger history and -skip-flagged was given.\n"; } } if(!skip) { std::auto_ptr<ImageSet> imageSet(ImageSet::Create(filename, _baselineIOMode, _readUVW)); bool isMS = dynamic_cast<MSImageSet*>(&*imageSet) != 0; if(isMS) { MSImageSet *msImageSet = static_cast<MSImageSet*>(&*imageSet); msImageSet->SetDataColumnName(_dataColumnName); msImageSet->SetSubtractModel(_subtractModel); } imageSet->Initialize(); if(_loadOptimizedStrategy) { rfiStrategy::DefaultStrategy::TelescopeId telescopeId; unsigned flags; double frequency, timeResolution, frequencyResolution; rfiStrategy::DefaultStrategy::DetermineSettings(*imageSet, telescopeId, flags, frequency, timeResolution, frequencyResolution); RemoveAll(); rfiStrategy::DefaultStrategy::LoadFullStrategy( *this, telescopeId, flags, frequency, timeResolution, frequencyResolution ); if(_threadCount != 0) rfiStrategy::Strategy::SetThreadCount(*this, _threadCount); } std::auto_ptr<ImageSetIndex> index(imageSet->StartIndex()); artifacts.SetImageSet(&*imageSet); artifacts.SetImageSetIndex(&*index); InitializeAll(); ActionBlock::Perform(artifacts, progress); FinishAll(); artifacts.SetNoImageSet(); index.reset(); imageSet.reset(); if(isMS) writeHistory(*i); } progress.OnEndTask(*this); ++taskIndex; } InitializeAll(); }