1 #include "AcclaimCmdLineArgs.h" 7 #include "AnitaVersion.h" 8 #include "AnalysisFlow.h" 12 const int default_run = 352;
13 const int default_numdivisions = 1;
14 const int default_subdivision = 0;
15 const int default_anitaversion = 3;
16 const char* default_settings_filename =
"";
26 std::cerr << std::endl;
27 std::cerr << argv0 <<
" options:" << std::endl;
28 std::cerr <<
"-h or --help : print this help message" << std::endl;
29 std::cerr <<
"-a " << default_anitaversion <<
" or --anitaversion=" << default_anitaversion <<
" : sets the initial anita version" << std::endl;
30 std::cerr <<
"-r " << default_run <<
" or --run=" << default_run <<
" : which run to process (352 in this example)" << std::endl;
31 std::cerr <<
"-m " << default_subdivision <<
" or --subdivision=" << default_subdivision <<
" : This job processes only part of the run, subdivision m of n divisions (where 0 <= m < n)" << std::endl;
32 std::cerr <<
"-n " << default_numdivisions <<
" or --numdivisions=" << default_numdivisions <<
" : This job processes only part of the run, subdivision m of n divisions (where 0 <= m < n)" << std::endl;
33 std::cerr <<
"-s " << default_settings_filename <<
" or --settings=" << default_settings_filename <<
" : Path to an AcclaimSettings.conf file (or directory containing), see AnalysisSettings class for default locations searched if not specified" << std::endl;
35 std::cerr << std::endl;
36 std::cerr <<
"Different (mutually incompatible) data subselections can be made (default is --decimated)" << std::endl;
37 std::cerr <<
"--all : does every event in the run." << std::endl;
38 std::cerr <<
"--wais : for just the WAIS pulser events" << std::endl;
39 std::cerr <<
"--decimated : only processes events in the decimated (10%) data set" << std::endl;
41 std::cerr << std::endl;
42 std::cerr <<
"An additional \"mc\" can be added to the output filename with the --mc flag" << std::endl;
43 std::cerr <<
"--mc : Add mc tag to output file name, this does NOT affect the selection flags listed above." << std::endl;
60 numdivisions = default_numdivisions;
61 division = default_subdivision;
62 anitaversion = default_anitaversion;
63 settings_filename = default_settings_filename;
64 event_selection = AnalysisFlow::kDecimated;
69 const int numEventSelectionFlags = 3;
70 static struct option long_options[] = {{
"all", no_argument, &event_selection, AnalysisFlow::kAll},
71 {
"decimated", no_argument, &event_selection, AnalysisFlow::kDecimated},
72 {
"wais", no_argument, &event_selection, AnalysisFlow::kWaisPulser},
73 {
"mc", no_argument, &tag_output_as_mc, 1},
74 {
"help", no_argument, NULL,
'h'},
75 {
"anitaversion", required_argument, NULL,
'a'},
76 {
"run", required_argument, NULL,
'r'},
77 {
"numdivisions", required_argument, NULL,
'n'},
78 {
"subdivision", required_argument, NULL,
'm'},
79 {
"settings", required_argument, NULL,
's'},
80 {
"output", required_argument, NULL,
'o'},
86 c = getopt_long (argc, argv,
"ha:r:n:m:d:s:",
87 long_options, &option_index);
97 if (long_options[option_index].flag != 0){
98 if(option_index < numEventSelectionFlags){
99 std::cout <<
"Info in " << __PRETTY_FUNCTION__ <<
", got " << long_options[option_index].name <<
", so set event_selection = " << event_selection << std::endl;
117 anitaversion = atoi(optarg);
118 std::cout <<
"Info in " << __PRETTY_FUNCTION__ <<
", set anitaversion = " << anitaversion << std::endl;
119 AnitaVersion::set(anitaversion);
124 std::cout <<
"Info in " << __PRETTY_FUNCTION__ <<
", set run = " << run << std::endl;
128 numdivisions = atoi(optarg);
129 std::cout <<
"Info in " << __PRETTY_FUNCTION__ <<
", set numdivisions = " << numdivisions << std::endl;
133 division = atoi(optarg);
134 std::cout <<
"Info in " << __PRETTY_FUNCTION__ <<
", set division = " << division << std::endl;
138 settings_filename = TString::Format(
"%s", optarg);
139 std::cout <<
"Info in " << __PRETTY_FUNCTION__ <<
", set settings_filename = " << settings_filename << std::endl;
154 std::cerr <<
"non-option ARGV-elements: ";
155 while (optind < argc){
156 std::cerr << argv[optind++] <<
" ";
158 std::cerr << std::endl;
163 std::vector<TString> argv0Tokens;
164 RootTools::tokenize(argv0Tokens, argv[0],
"/");
165 output_filename = argv0Tokens.back();
167 if(tag_output_as_mc){
168 output_filename +=
"_mc";
190 void Acclaim::CmdLineArgs::checkArgs(
const char* argv0){
196 Bool_t mustDie =
false;
198 if(numdivisions <= 0){
199 std::cerr <<
"Warning in " << __PRETTY_FUNCTION__ <<
", require numdivisions to be a positive integer" << std::endl;
203 if(division < 0 || division >= numdivisions){
204 std::cerr <<
"Warning in " << __PRETTY_FUNCTION__ <<
", require 0 <= division < numdivisions" << std::endl;
selection
A human readable method of selecting the set of events to process, this can be expanded as required...
static const char * selectionAsString(selection sel)
void printHelp(const char *argv0)
void getArgs(int argc, char *argv[])
CmdLineArgs(int argc, char *argv[])