53 const int errCode = 0)
55 cerr <<
"generates set of all allowed waves given by template .key file" << endl
59 <<
" -k template key file -o output directory [-p PDG file -n -v -h]" << endl
61 <<
" -k file path to template key file" << endl
62 <<
" -p file path to particle data table file (default: ./particleDataTable.txt)" << endl
63 <<
" -d file path to decay config file (default: decay info will not be used)" << endl
64 <<
" isobars without defined decays will be allowed to decay to all possibilities" << endl
65 <<
" -f force decay check (only works with -d option); isobars without defined decay modes will be ignored" << endl
66 <<
" -o dir path to directory where key files will be written (default: '.')" << endl
67 <<
" -t file path to waveset LaTeX output file" << endl
68 <<
" -n use new key file name convention (default: false)" << endl
69 <<
" -v verbose; print debug output (default: false)" << endl
70 <<
" -h print help" << endl
86 const string progName = argv[0];
87 unsigned int entriesPerPage = 20;
88 string keyFileName =
"";
89 string pdgFileName =
"./particleDataTable.txt";
90 string decayFileName =
"";
91 string texFileName =
"waveset.tex";
92 string outDirName =
".";
93 bool newKeyFileNameConvention =
false;
95 bool forceDecayCheck =
false;
98 while ((c = getopt(argc, argv,
"k:p:d:o:t:fnvh")) != -1)
101 keyFileName = optarg;
104 pdgFileName = optarg;
107 decayFileName = optarg;
110 texFileName = optarg;
116 newKeyFileNameConvention =
true;
122 forceDecayCheck =
true;
130 particleDataTable::readFile(pdgFileName);
131 bool useDecays =
false;
132 if (decayFileName !=
"") {
133 if (particleDataTable::readDecayModeFile(decayFileName))
136 printErr <<
"could not read particle decay modes from file '" << decayFileName <<
"'. "
137 <<
"aborting." << endl;
142 printDebug <<
"particle data table:" << endl << particleDataTable::instance();
143 particleDataTable::setDebug(debug);
146 ofstream wavelistTeX;
148 if (texFileName !=
"") {
150 wavelistTeX.open(texFileName.c_str());
151 wavelistTeX <<
"\\documentclass[10pt,a4paper]{article}" << endl
152 <<
"\\usepackage{amsmath,amsthm,amssymb}" << endl
153 <<
"\\def\\dst{\\displaystyle}" << endl
154 <<
"\\def\\vsp{\\hbox{\\vrule height12.5pt depth3.5pt width0pt}}" << endl
155 <<
"\\def\\ells#1#2{\\Big[\\hskip-5pt\\vsp\\begin{array}{c}\\dst#1\\\\[-4pt]\\dst#2\\end{array}\\vsp\\hskip-5pt\\Big]}" << endl
156 <<
"\\begin{document}" << endl
157 <<
"\\begin{align*} \n \\begin{aligned}" << endl;
161 printInfo <<
"generating wave set from template key file '" << keyFileName <<
"'" << endl;
163 waveSetGenerator::setDebug(debug);
165 printErr <<
"could not initialize wave set generator. aborting." << endl;
171 printInfo << waveSetGen;
174 printInfo <<
"checking generated waves..." << endl;
175 vector<isobarDecayTopology>& decayTopos = waveSetGen.waveSet();
176 unsigned int nmbInconsistentDecays = 0;
177 for (
unsigned int i = 0;
i < decayTopos.size(); ++
i) {
178 bool isConsistent = decayTopos[
i].checkTopology() and decayTopos[
i].checkConsistency();
179 cout <<
" " << setw(4) <<
i <<
": "
180 << waveDescription::waveNameFromTopology(decayTopos[
i], newKeyFileNameConvention) <<
" ... ";
182 cout <<
"okay" << endl;
184 wavelistTeX << waveDescription::waveLaTeXFromTopology(decayTopos[i]) <<
"\\\\" << endl;
185 if ((i + 1) % entriesPerPage ==0 ) {
186 wavelistTeX <<
"\\end{aligned} \n \\end{align*}"
188 <<
"\\begin{align*} \n \\begin{aligned}" << endl;
192 cout <<
"problems!" << endl;
193 ++nmbInconsistentDecays;
197 printInfo <<
"writing .key files for generated waves to directory '" << outDirName <<
"'" << endl;
198 waveSetGen.writeKeyFiles(outDirName, newKeyFileNameConvention);
200 printInfo << ((nmbInconsistentDecays == 0) ?
"successfully " :
"")
201 <<
"generated " << decayTopos.size() <<
" waves";
202 if (nmbInconsistentDecays != 0)
203 cout <<
". " << nmbInconsistentDecays <<
" waves have problems.";
207 wavelistTeX <<
"\\end{aligned} \n \\end{align*}" << endl;
208 wavelistTeX <<
"\\end{document}" << endl;