00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <map>
00024 #include <utility>
00025
00026 #include "HepPID/Version.hh"
00027 #include "HepPID/ParticleIDTranslations.hh"
00028 #include "HepPID/ParticleIDMethods.hh"
00029 #include "HepPID/ParticleName.hh"
00030
00031 namespace HepPID {
00032
00033 typedef std::map< int, int > PythiaPDTMap;
00034 typedef std::map< int, int > PDTPythiaMap;
00035
00036 namespace {
00037
00038 PythiaPDTMap const & getPythiaPDTMap();
00039 PDTPythiaMap const & getPDTPythiaMap();
00040
00041 PythiaPDTMap const & PythiaPDTMapInit()
00042 {
00043
00044 static PythiaPDTMap m;
00045
00046 static const struct {
00047 int hid;
00048 int pid;
00049 } SList[] = {
00050 { 1, 1 },
00051 { -1, -1 },
00052 { 2, 2 },
00053 { -2, -2 },
00054 { 3, 3 },
00055 { -3, -3 },
00056 { 4, 4 },
00057 { -4, -4 },
00058 { 5, 5 },
00059 { -5, -5 },
00060 { 6, 6 },
00061 { -6, -6 },
00062 { 7, 7 },
00063 { -7, -7 },
00064 { 8, 8 },
00065 { -8, -8 },
00066 { 11, 11 },
00067 { -11, -11 },
00068 { 12, 12 },
00069 { -12, -12 },
00070 { 13, 13 },
00071 { -13, -13 },
00072 { 14, 14 },
00073 { -14, -14 },
00074 { 15, 15 },
00075 { -15, -15 },
00076 { 16, 16 },
00077 { -16, -16 },
00078 { 17, 17 },
00079 { -17, -17 },
00080 { 18, 18 },
00081 { -18, -18 },
00082 { 21, 21 },
00083 { 22, 22 },
00084 { 23, 23 },
00085 { 24, 24 },
00086 { -24, -24 },
00087 { 25, 25 },
00088 { 32, 32 },
00089 { 33, 33 },
00090 { 34, 34 },
00091 { -34, -34 },
00092 { 35, 35 },
00093 { 36, 36 },
00094 { 37, 37 },
00095 { -37, -37 },
00096 { 39, 39 },
00097 { 41, 41 },
00098 { -41, -41 },
00099 { 42, 42 },
00100 { -42, -42 },
00101 { 81, 81 },
00102 { 82, 82 },
00103 { -82, -82 },
00104 { 83, 83 },
00105 { 84, 84 },
00106 { -84, -84 },
00107 { 85, 85 },
00108 { -85, -85 },
00109 { 88, 88 },
00110 { 90, 90 },
00111 { 91, 91 },
00112 { 92, 92 },
00113 { 93, 93 },
00114 { 94, 94 },
00115 { 95, 95 },
00116 { 96, 96 },
00117 { 97, 97 },
00118 { 98, 98 },
00119 { 99, 99 },
00120 { 110, 110 },
00121 { 990, 990 },
00122 { 111, 111 },
00123 { 113, 113 },
00124 { 115, 115 },
00125 { 130, 130 },
00126 { 211, 211 },
00127 { -211, -211 },
00128 { 213, 213 },
00129 { -213, -213 },
00130 { 215, 215 },
00131 { -215, -215 },
00132 { 221, 221 },
00133 { 223, 223 },
00134 { 225, 225 },
00135 { 310, 310 },
00136 { 311, 311 },
00137 { -311, -311 },
00138 { 313, 313 },
00139 { -313, -313 },
00140 { 315, 315 },
00141 { -315, -315 },
00142 { 321, 321 },
00143 { -321, -321 },
00144 { 323, 323 },
00145 { -323, -323 },
00146 { 325, 325 },
00147 { -325, -325 },
00148 { 331, 331 },
00149 { 333, 333 },
00150 { 335, 335 },
00151 { 411, 411 },
00152 { -411, -411 },
00153 { 413, 413 },
00154 { -413, -413 },
00155 { 415, 415 },
00156 { -415, -415 },
00157 { 421, 421 },
00158 { -421, -421 },
00159 { 423, 423 },
00160 { -423, -423 },
00161 { 425, 425 },
00162 { -425, -425 },
00163 { 431, 431 },
00164 { -431, -431 },
00165 { 433, 433 },
00166 { -433, -433 },
00167 { 435, 435 },
00168 { -435, -435 },
00169 { 441, 441 },
00170 { 443, 443 },
00171 { 445, 445 },
00172 { 511, 511 },
00173 { -511, -511 },
00174 { 513, 513 },
00175 { -513, -513 },
00176 { 515, 515 },
00177 { -515, -515 },
00178 { 521, 521 },
00179 { -521, -521 },
00180 { 523, 523 },
00181 { -523, -523 },
00182 { 525, 525 },
00183 { -525, -525 },
00184 { 531, 531 },
00185 { -531, -531 },
00186 { 533, 533 },
00187 { -533, -533 },
00188 { 535, 535 },
00189 { -535, -535 },
00190 { 541, 541 },
00191 { -541, -541 },
00192 { 543, 543 },
00193 { -543, -543 },
00194 { 545, 545 },
00195 { -545, -545 },
00196 { 551, 551 },
00197 { 553, 553 },
00198 { 555, 555 },
00199 { 1103, 1103 },
00200 { -1103, -1103 },
00201 { 1114, 1114 },
00202 { -1114, -1114 },
00203 { 2101, 2101 },
00204 { -2101, -2101 },
00205 { 2103, 2103 },
00206 { -2103, -2103 },
00207 { 2112, 2112 },
00208 { -2112, -2112 },
00209 { 2114, 2114 },
00210 { -2114, -2114 },
00211 { 2203, 2203 },
00212 { -2203, -2203 },
00213 { 2212, 2212 },
00214 { -2212, -2212 },
00215 { 2214, 2214 },
00216 { -2214, -2214 },
00217 { 2224, 2224 },
00218 { -2224, -2224 },
00219 { 3101, 3101 },
00220 { -3101, -3101 },
00221 { 3103, 3103 },
00222 { -3103, -3103 },
00223 { 3112, 3112 },
00224 { -3112, -3112 },
00225 { 3114, 3114 },
00226 { -3114, -3114 },
00227 { 3122, 3122 },
00228 { -3122, -3122 },
00229 { 3201, 3201 },
00230 { -3201, -3201 },
00231 { 3203, 3203 },
00232 { -3203, -3203 },
00233 { 3212, 3212 },
00234 { -3212, -3212 },
00235 { 3214, 3214 },
00236 { -3214, -3214 },
00237 { 3222, 3222 },
00238 { -3222, -3222 },
00239 { 3224, 3224 },
00240 { -3224, -3224 },
00241 { 3303, 3303 },
00242 { -3303, -3303 },
00243 { 3312, 3312 },
00244 { -3312, -3312 },
00245 { 3314, 3314 },
00246 { -3314, -3314 },
00247 { 3322, 3322 },
00248 { -3322, -3322 },
00249 { 3324, 3324 },
00250 { -3324, -3324 },
00251 { 3334, 3334 },
00252 { -3334, -3334 },
00253 { 4101, 4101 },
00254 { -4101, -4101 },
00255 { 4103, 4103 },
00256 { -4103, -4103 },
00257 { 4112, 4112 },
00258 { -4112, -4112 },
00259 { 4114, 4114 },
00260 { -4114, -4114 },
00261 { 4122, 4122 },
00262 { -4122, -4122 },
00263 { 4132, 4132 },
00264 { -4132, -4132 },
00265 { 4201, 4201 },
00266 { -4201, -4201 },
00267 { 4203, 4203 },
00268 { -4203, -4203 },
00269 { 4212, 4212 },
00270 { -4212, -4212 },
00271 { 4214, 4214 },
00272 { -4214, -4214 },
00273 { 4222, 4222 },
00274 { -4222, -4222 },
00275 { 4224, 4224 },
00276 { -4224, -4224 },
00277 { 4232, 4232 },
00278 { -4232, -4232 },
00279 { 4301, 4301 },
00280 { -4301, -4301 },
00281 { 4303, 4303 },
00282 { -4303, -4303 },
00283 { 4312, 4312 },
00284 { -4312, -4312 },
00285 { 4314, 4314 },
00286 { -4314, -4314 },
00287 { 4322, 4322 },
00288 { -4322, -4322 },
00289 { 4324, 4324 },
00290 { -4324, -4324 },
00291 { 4332, 4332 },
00292 { -4332, -4332 },
00293 { 4334, 4334 },
00294 { -4334, -4334 },
00295 { 4403, 4403 },
00296 { -4403, -4403 },
00297 { 4412, 4412 },
00298 { -4412, -4412 },
00299 { 4414, 4414 },
00300 { -4414, -4414 },
00301 { 4422, 4422 },
00302 { -4422, -4422 },
00303 { 4424, 4424 },
00304 { -4424, -4424 },
00305 { 4432, 4432 },
00306 { -4432, -4432 },
00307 { 4434, 4434 },
00308 { -4434, -4434 },
00309 { 4444, 4444 },
00310 { -4444, -4444 },
00311 { 5101, 5101 },
00312 { -5101, -5101 },
00313 { 5103, 5103 },
00314 { -5103, -5103 },
00315 { 5112, 5112 },
00316 { -5112, -5112 },
00317 { 5114, 5114 },
00318 { -5114, -5114 },
00319 { 5122, 5122 },
00320 { -5122, -5122 },
00321 { 5132, 5132 },
00322 { -5132, -5132 },
00323 { 5142, 5142 },
00324 { -5142, -5142 },
00325 { 5201, 5201 },
00326 { -5201, -5201 },
00327 { 5203, 5203 },
00328 { -5203, -5203 },
00329 { 5212, 5212 },
00330 { -5212, -5212 },
00331 { 5214, 5214 },
00332 { -5214, -5214 },
00333 { 5222, 5222 },
00334 { -5222, -5222 },
00335 { 5224, 5224 },
00336 { -5224, -5224 },
00337 { 5232, 5232 },
00338 { -5232, -5232 },
00339 { 5242, 5242 },
00340 { -5242, -5242 },
00341 { 5301, 5301 },
00342 { -5301, -5301 },
00343 { 5303, 5303 },
00344 { -5303, -5303 },
00345 { 5312, 5312 },
00346 { -5312, -5312 },
00347 { 5314, 5314 },
00348 { -5314, -5314 },
00349 { 5322, 5322 },
00350 { -5322, -5322 },
00351 { 5324, 5324 },
00352 { -5324, -5324 },
00353 { 5332, 5332 },
00354 { -5332, -5332 },
00355 { 5334, 5334 },
00356 { -5334, -5334 },
00357 { 5342, 5342 },
00358 { -5342, -5342 },
00359 { 5401, 5401 },
00360 { -5401, -5401 },
00361 { 5403, 5403 },
00362 { -5403, -5403 },
00363 { 5412, 5412 },
00364 { -5412, -5412 },
00365 { 5414, 5414 },
00366 { -5414, -5414 },
00367 { 5422, 5422 },
00368 { -5422, -5422 },
00369 { 5424, 5424 },
00370 { -5424, -5424 },
00371 { 5432, 5432 },
00372 { -5432, -5432 },
00373 { 5434, 5434 },
00374 { -5434, -5434 },
00375 { 5442, 5442 },
00376 { -5442, -5442 },
00377 { 5444, 5444 },
00378 { -5444, -5444 },
00379 { 5503, 5503 },
00380 { -5503, -5503 },
00381 { 5512, 5512 },
00382 { -5512, -5512 },
00383 { 5514, 5514 },
00384 { -5514, -5514 },
00385 { 5522, 5522 },
00386 { -5522, -5522 },
00387 { 5524, 5524 },
00388 { -5524, -5524 },
00389 { 5532, 5532 },
00390 { -5532, -5532 },
00391 { 5534, 5534 },
00392 { -5534, -5534 },
00393 { 5542, 5542 },
00394 { -5542, -5542 },
00395 { 5544, 5544 },
00396 { -5544, -5544 },
00397 { 5554, 5554 },
00398 { -5554, -5554 },
00399 { 10111, 9000111 },
00400 { 10113, 10113 },
00401 { 10211, 9000211 },
00402 { -10211, -9000211 },
00403 { 10213, 10213 },
00404 { -10213, -10213 },
00405 { 10221, 9010221 },
00406 { 10223, 10223 },
00407 { 10311, 10311 },
00408 { -10311, -10311 },
00409 { 10313, 10313 },
00410 { -10313, -10313 },
00411 { 10321, 10321 },
00412 { -10321, -10321 },
00413 { 10323, 10323 },
00414 { -10323, -10323 },
00415 { 10331, 10221 },
00416 { 10333, 10333 },
00417 { 10411, 10411 },
00418 { -10411, -10411 },
00419 { 10413, 10413 },
00420 { -10413, -10413 },
00421 { 10421, 10421 },
00422 { -10421, -10421 },
00423 { 10423, 10423 },
00424 { -10423, -10423 },
00425 { 10431, 10431 },
00426 { -10431, -10431 },
00427 { 10433, 10433 },
00428 { -10433, -10433 },
00429 { 10441, 10441 },
00430 { 10443, 10443 },
00431 { 10511, 10511 },
00432 { -10511, -10511 },
00433 { 10513, 10513 },
00434 { -10513, -10513 },
00435 { 10521, 10521 },
00436 { -10521, -10521 },
00437 { 10523, 10523 },
00438 { -10523, -10523 },
00439 { 10531, 10531 },
00440 { -10531, -10531 },
00441 { 10533, 10533 },
00442 { -10533, -10533 },
00443 { 10541, 10541 },
00444 { -10541, -10541 },
00445 { 10543, 10543 },
00446 { -10543, -10543 },
00447 { 10551, 10551 },
00448 { 10553, 10553 },
00449 { 20113, 20113 },
00450 { 20213, 20213 },
00451 { -20213, -20213 },
00452 { 20223, 20223 },
00453 { 20313, 20313 },
00454 { -20313, -20313 },
00455 { 20323, 20323 },
00456 { -20323, -20323 },
00457 { 20333, 20333 },
00458 { 20413, 20413 },
00459 { -20413, -20413 },
00460 { 20423, 20423 },
00461 { -20423, -20423 },
00462 { 20433, 20433 },
00463 { -20433, -20433 },
00464 { 20443, 20443 },
00465 { 20513, 20513 },
00466 { -20513, -20513 },
00467 { 20523, 20523 },
00468 { -20523, -20523 },
00469 { 20533, 20533 },
00470 { -20533, -20533 },
00471 { 20543, 20543 },
00472 { -20543, -20543 },
00473 { 20553, 20553 },
00474 { 100443, 100443 },
00475 { 100553, 100553 },
00476 { 1000001, 1000001 },
00477 { -1000001, -1000001 },
00478 { 1000002, 1000002 },
00479 { -1000002, -1000002 },
00480 { 1000003, 1000003 },
00481 { -1000003, -1000003 },
00482 { 1000004, 1000004 },
00483 { -1000004, -1000004 },
00484 { 1000005, 1000005 },
00485 { -1000005, -1000005 },
00486 { 1000006, 1000006 },
00487 { -1000006, -1000006 },
00488 { 1000011, 1000011 },
00489 { -1000011, -1000011 },
00490 { 1000012, 1000012 },
00491 { -1000012, -1000012 },
00492 { 1000013, 1000013 },
00493 { -1000013, -1000013 },
00494 { 1000014, 1000014 },
00495 { -1000014, -1000014 },
00496 { 1000015, 1000015 },
00497 { -1000015, -1000015 },
00498 { 1000016, 1000016 },
00499 { -1000016, -1000016 },
00500 { 1000021, 1000021 },
00501 { 1000022, 1000022 },
00502 { 1000023, 1000023 },
00503 { 1000024, 1000024 },
00504 { -1000024, -1000024 },
00505 { 1000025, 1000025 },
00506 { 1000035, 1000035 },
00507 { 1000037, 1000037 },
00508 { -1000037, -1000037 },
00509 { 1000039, 1000039 },
00510 { 2000001, 2000001 },
00511 { -2000001, -2000001 },
00512 { 2000002, 2000002 },
00513 { -2000002, -2000002 },
00514 { 2000003, 2000003 },
00515 { -2000003, -2000003 },
00516 { 2000004, 2000004 },
00517 { -2000004, -2000004 },
00518 { 2000005, 2000005 },
00519 { -2000005, -2000005 },
00520 { 2000006, 2000006 },
00521 { -2000006, -2000006 },
00522 { 2000011, 2000011 },
00523 { -2000011, -2000011 },
00524 { 2000012, 2000012 },
00525 { -2000012, -2000012 },
00526 { 2000013, 2000013 },
00527 { -2000013, -2000013 },
00528 { 2000014, 2000014 },
00529 { -2000014, -2000014 },
00530 { 2000015, 2000015 },
00531 { -2000015, -2000015 },
00532 { 2000016, 2000016 },
00533 { -2000016, -2000016 },
00534 { 3000111, 3000111 },
00535 { 3000211, 3000211 },
00536 { -3000211, -3000211 },
00537 { 3000115, 3000115 },
00538 { 3000215, 3000215 },
00539 { -3000215, -3000215 },
00540 { 3000221, 3000221 },
00541 { 3000331, 3100221 },
00542 { 3000113, 3000113 },
00543 { 3000213, 3000213 },
00544 { -3000213, -3000213 },
00545 { 3000223, 3000223 },
00546 { 3100021, 3100021 },
00547 { 3100111, 3060111 },
00548 { 3200111, 3160111 },
00549 { 3100113, 3130113 },
00550 { 3200113, 3140113 },
00551 { 3300113, 3150113 },
00552 { 3400113, 3160113 },
00553 { 4000001, 4000001 },
00554 { -4000001, -4000001 },
00555 { 4000002, 4000002 },
00556 { -4000002, -4000002 },
00557 { 4000011, 4000011 },
00558 { -4000011, -4000011 },
00559 { 4000012, 4000012 },
00560 { -4000012, -4000012 },
00561 { 5000039, 4000039 },
00562 { 5100001, 5100001 },
00563 { 5100002, 5100002 },
00564 { 5100003, 5100003 },
00565 { 5100004, 5100004 },
00566 { 5100005, 5100005 },
00567 { 5100006, 5100006 },
00568 { 5100011, 5100011 },
00569 { 5100012, 5100012 },
00570 { 5100013, 5100013 },
00571 { 5100014, 5100014 },
00572 { 5100015, 5100015 },
00573 { 5100016, 5100016 },
00574 { 5100021, 5100021 },
00575 { 5100022, 5100022 },
00576 { 5100023, 5100023 },
00577 { 5100024, 5100024 },
00578 { 6100001, 6100001 },
00579 { 6100002, 6100002 },
00580 { 6100003, 6100003 },
00581 { 6100004, 6100004 },
00582 { 6100005, 6100005 },
00583 { 6100006, 6100006 },
00584 { 6100011, 6100011 },
00585 { 6100012, 6100012 },
00586 { 6100013, 6100013 },
00587 { 6100014, 6100014 },
00588 { 6100015, 6100015 },
00589 { 6100016, 6100016 },
00590 { 9900012, 9900012 },
00591 { 9900014, 9900014 },
00592 { 9900016, 9900016 },
00593 { 9900023, 9900023 },
00594 { 9900024, 9900024 },
00595 { -9900024, -9900024 },
00596 { 9900041, 9900041 },
00597 { -9900041, -9900041 },
00598 { 9900042, 9900042 },
00599 { -9900042, -9900042 },
00600 { 9900110, 9910113 },
00601 { 9900210, 9910211 },
00602 { -9900210, -9910211 },
00603 { 9900220, 9910223 },
00604 { 9900330, 9910333 },
00605 { 9900440, 9910443 },
00606 { 9902110, 9912112 },
00607 { -9902110, -9912112 },
00608 { 9902210, 9912212 },
00609 { -9902210, -9912212 },
00610 { 9900441, 9900441 },
00611 { 9910441, 9910441 },
00612 { 9900443, 9900443 },
00613 { 9900551, 9900551 },
00614 { 9910551, 9910551 },
00615 { 9900553, 9900553 },
00616 { 1000010020, 1000010020 },
00617 { -1000010020, -1000010020 },
00618 { 1000010030, 1000010030 },
00619 { -1000010030, -1000010030 },
00620 { 1000020030, 1000020030 },
00621 { -1000020030, -1000020030 },
00622 { 1000020040, 1000020040 },
00623 { -1000020040, -1000020040 }
00624 };
00625
00626 int listSize = sizeof(SList)/sizeof(SList[0]);
00627 for( int k=0; k!=listSize; ++k) {
00628 m.insert( std::make_pair( SList[k].hid, SList[k].pid) );
00629 }
00630 return m;
00631 }
00632
00633 PDTPythiaMap const & PDTPythiaMapInit()
00634 {
00635 static PDTPythiaMap m;
00636 static PythiaPDTMap const & hmap = getPythiaPDTMap();
00637
00638 for(PythiaPDTMap::const_iterator cit=hmap.begin(), mend=hmap.end(); cit!=mend; ++cit ) {
00639 m.insert( std::make_pair( cit->second, cit->first ));
00640 }
00641 return m;
00642 }
00643
00644
00645
00646
00647 PythiaPDTMap const & getPythiaPDTMap()
00648 {
00649 static PythiaPDTMap const & hmap = PythiaPDTMapInit();
00650 return hmap;
00651 }
00652
00653
00654
00655
00656 PDTPythiaMap const & getPDTPythiaMap()
00657 {
00658 static PDTPythiaMap const & hmap = PDTPythiaMapInit();
00659 return hmap;
00660 }
00661
00662 }
00663
00664 int translatePythiatoPDT( const int id )
00665 {
00666 static PythiaPDTMap const & hmap = getPythiaPDTMap();
00667
00668 PythiaPDTMap::const_iterator const cit = hmap.find( id );
00669
00670 if ( cit != hmap.end() ) { return cit->second; }
00671
00672
00673 if( isValid(id) ) { return id; }
00674 return 0;
00675 }
00676
00677 int translatePDTtoPythia( const int id )
00678 {
00679 static PDTPythiaMap const & pmap = getPDTPythiaMap();
00680
00681 PDTPythiaMap::const_iterator const cit = pmap.find( id );
00682
00683 if ( cit != pmap.end() ) { return cit->second; }
00684
00685
00686 if( isValid(id) ) { return id; }
00687 return 0;
00688 }
00689
00690 void writePythiaTranslationLine( int i, std::ostream & os )
00691 {
00692
00693 static PythiaPDTMap const & hmap = getPythiaPDTMap();
00694
00695 PythiaPDTMap::const_iterator const cit = hmap.find( i );
00696
00697 if ( cit != hmap.end() ) {
00698 int id = cit->second;
00699 os << " Pythia number: " ;
00700 os.width(10);
00701 os << i << " HepPID number: " ;
00702 os.width(10);
00703 os << id << " " << particleName(id) << std::endl;
00704
00705 int iback = translatePDTtoPythia(id);
00706 if(iback != i) {
00707 os << " WARNING: " << id << " translates back to "
00708 << iback << " not to " << i << std::endl;
00709 }
00710 }
00711 return;
00712 }
00713
00714 void writePythiaTranslation( std::ostream & os )
00715 {
00716 writeVersion( os );
00717 os << " HepPID Particle List" << std::endl;
00718 os << std::endl;
00719
00720 int id, i, j, q1, q2, q3, l, m, n;
00721
00722 for( id=1; id<101; ++id) {
00723 writePythiaTranslationLine( id, os );
00724 writePythiaTranslationLine( -id, os );
00725 }
00726 for( i=11; i<1000; ++i) {
00727 id = i*10;
00728 writePythiaTranslationLine( id, os );
00729 writePythiaTranslationLine( -id, os );
00730 }
00731
00732 for( n=1; n<3; ++n) {
00733 for( i=1; i<40; ++i) {
00734 id = 1000000*n+i;
00735 writePythiaTranslationLine( id, os );
00736 writePythiaTranslationLine( -id, os );
00737 }
00738 }
00739
00740 for( q2=1; q2<4; ++q2) {
00741 for( q1=1; q1<4; ++q1) {
00742 for( j=1; j<6; ++j) {
00743 for( m=0; m<5; ++m) {
00744 id = 3000000+100000*m+100*q2+10*q1+j;
00745 writePythiaTranslationLine( id, os );
00746 writePythiaTranslationLine( -id, os );
00747 }
00748 }
00749 }
00750 }
00751
00752 for( n=4; n<6; ++n) {
00753 for( i=1; i<40; ++i) {
00754 id = 1000000*n+i;
00755 writePythiaTranslationLine( id, os );
00756 writePythiaTranslationLine( -id, os );
00757 }
00758 }
00759
00760 for( l=0; l<9; ++l) {
00761 for( q3=0; q3<10; ++q3) {
00762 for( q2=0; q2<10; ++q2) {
00763 for( q1=0; q1<10; ++q1) {
00764 for( j=0; j<10; ++j) {
00765 id = 9900000+10000*l+1000*q3+100*q2+10*q1+j;
00766 writePythiaTranslationLine( id, os );
00767 writePythiaTranslationLine( -id, os );
00768 }
00769 }
00770 }
00771 }
00772 }
00773
00774 for( i=11; i<100; ++i) {
00775 for( j=0; j<10; ++j) {
00776 id = 100*i+j;
00777 writePythiaTranslationLine( id, os );
00778 writePythiaTranslationLine( -id, os );
00779 }
00780 }
00781
00782 for( q2=1; q2<10; ++q2) {
00783 for( q1=1; q1<10; ++q1) {
00784 for( j=1; j<10; ++j) {
00785 for( m=0; m<9; ++m) {
00786 for( l=0; l<10; ++l) {
00787 id = 100000*m+10000*l+100*q2+10*q1+j;
00788 writePythiaTranslationLine( id, os );
00789 writePythiaTranslationLine( -id, os );
00790 id = 9000000+100000*m+10000*l+100*q2+10*q1+j;
00791 writePythiaTranslationLine( id, os );
00792 writePythiaTranslationLine( -id, os );
00793 }
00794 }
00795 }
00796 }
00797 }
00798
00799 for( q3=1; q3<10; ++q3) {
00800 for( q2=1; q2<10; ++q2) {
00801 for( q1=1; q1<10; ++q1) {
00802 for( j=1; j<10; ++j) {
00803 id = 1000*q3+100*q2+10*q1+j;
00804 writePythiaTranslationLine( id, os );
00805 writePythiaTranslationLine( -id, os );
00806 }
00807 }
00808 }
00809 }
00810
00811 for( l=1; l<9; ++l ) {
00812 for ( m=1; m<9; ++m ) {
00813 for( q3=1; q3<9; ++q3) {
00814 for( q2=1; q2<9; ++q2) {
00815 for( q1=1; q1<9; ++q1) {
00816 id = 9*1000000+l*100000+m*10000+1000*q3+100*q2+10*q1+2;
00817 writePythiaTranslationLine( id, os );
00818 writePythiaTranslationLine( -id, os );
00819 }
00820 }
00821 }
00822 }
00823 }
00824 return;
00825 }
00826
00827 }