/******************************************************************************/ /* */ /* SELECT.CC */ /* */ /******************************************************************************/ // Down select event lists by excluding events which are overlapped by a more // significant event. The test for overlap can be controlled by specifying a // coincidence window duration and bandwidth as well as duration and bandwidth // inflation factors. There are four forms of the select function that // implement four different criteria for overlap. // // select inputEventList outputEventList // // select windowDuration inputEventList outputEventList // // select durationInflation bandwidthInflation inputEventList outputEventList // // select windowDuration windowBandwidth durationInflation // bandwidthInflation inputEventList outputEventList // Shourov K. Chatterji // shourov@ligo.caltech.edu // $Id: select.cc,v 1.1 2006/11/03 15:33:59 shourov Exp $ #include #include #include "eventlist.hh" int main(int argc, char **argv) { double coincidenceWindowDuration; double coincidenceWindowBandwidth; double durationInflation; double bandwidthInflation; std::string inputEventListFile; std::string outputEventListFile; if (argc == 3) { coincidenceWindowDuration = 0.0; coincidenceWindowBandwidth = 0.0; durationInflation = 1.0; bandwidthInflation = 1.0; inputEventListFile = argv[1]; outputEventListFile = argv[2]; } else if (argc == 4) { coincidenceWindowDuration = atof(argv[1]); coincidenceWindowBandwidth = event::ignore; durationInflation = 1.0; bandwidthInflation = 1.0; inputEventListFile = argv[2]; outputEventListFile = argv[3]; } else if (argc == 5) { coincidenceWindowDuration = 0.0; coincidenceWindowBandwidth = 0.0; durationInflation = atof(argv[1]); bandwidthInflation = atof(argv[2]); inputEventListFile = argv[3]; outputEventListFile = argv[4]; } else if (argc == 7) { coincidenceWindowDuration = atof(argv[1]); coincidenceWindowBandwidth = atof(argv[2]); durationInflation = atof(argv[3]); bandwidthInflation = atof(argv[4]); inputEventListFile = argv[5]; outputEventListFile = argv[6]; } else { std::cerr << "error: incorrect number of arguments" << std::endl; std::cerr << std::endl; std::cerr << "usage: select inputEventList outputEventList" << std::endl; std::cerr << std::endl; std::cerr << " select windowDuration inputEventList outputEventList" << std::endl; std::cerr << std::endl; std::cerr << " select durationInflation bandwidthInflation \\" << std::endl; std::cerr << " inputEventList outputEventList" << std::endl; std::cerr << std::endl; std::cerr << " select windowDuration windowBandwidth \\" << std::endl; std::cerr << " durationInflation bandwidthInflation \\" << std::endl; std::cerr << " inputEventList outputEventList" << std::endl; return 1; } event::IncreasingEventNormalizedEnergySortCriterion sortCriterion; event::EventTimeFrequencyCoincidenceCriterion coincidenceCriterion(coincidenceWindowDuration, coincidenceWindowBandwidth, durationInflation, bandwidthInflation); event::EventList eventList; eventList.read(inputEventListFile); eventList.select(sortCriterion, coincidenceCriterion); eventList.write(outputEventListFile); return 0; }