00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #define INCLXX_IN_GEANT4_MODE 1
00034
00035 #include "globals.hh"
00036
00044 #ifndef G4INCLHASHING_HH_
00045 #define G4INCLHASHING_HH_
00046
00047 #ifdef INCLXX_IN_GEANT4_MODE
00048 #define INCL_CACHING_CLUSTERING_MODEL_INTERCOMPARISON_Set 1
00049 #endif // INCLXX_IN_GEANT4_MODE
00050
00051 #ifdef INCL_CACHING_CLUSTERING_MODEL_INTERCOMPARISON_HashMask
00052
00053 #include <algorithm>
00054 #include <numeric>
00055 #include <climits>
00056
00057
00058 namespace G4INCL {
00059
00060 namespace Hashing {
00061
00062 typedef G4int NucleonItem;
00063
00064
00065 typedef unsigned long HashType;
00066
00067
00068
00069
00070
00071
00072
00073 namespace {
00074 const G4int maskTableSize = 500;
00075 HashType mask[maskTableSize] = {
00076 #if ULONG_MAX >= 18446744073709551615UL // 2^64-1
00077
00078 4702504706864814267UL,
00079 15867743096752998125UL,
00080 1925133831785711339UL,
00081 3063678697824149615UL,
00082 3234475698548538313UL,
00083 7917662962824220875UL,
00084 9924018995951912525UL,
00085 4682901166658838314UL,
00086 981361508296534881UL,
00087 18376824469534567556UL,
00088 5343971687892173674UL,
00089 10169451505660710328UL,
00090 7865786236744900341UL,
00091 10279352445822536091UL,
00092 7089630702066408548UL,
00093 4808534960882600398UL,
00094 12538238618753707399UL,
00095 16091508301730012097UL,
00096 14073498192850855514UL,
00097 9966250765115558375UL,
00098 5718582854016674314UL,
00099 5837057680281951483UL,
00100 1596870119086046964UL,
00101 15866877264435719977UL,
00102 12743659579234384899UL,
00103 13589152059793213451UL,
00104 3364441792317801205UL,
00105 17190534087980602002UL,
00106 2252844317879582875UL,
00107 16883577324406774376UL,
00108 15985239218161130895UL,
00109 3661288085782215193UL,
00110 17294313791381397188UL,
00111 9405115097872546015UL,
00112 2834208340246893214UL,
00113 15589349083551097162UL,
00114 7475687940900359446UL,
00115 2706367355862311522UL,
00116 17987211229193808759UL,
00117 6863833750504706813UL,
00118 3685392250678121047UL,
00119 11759380240055300923UL,
00120 13403449794574083242UL,
00121 1985973959990096358UL,
00122 15223952677867744295UL,
00123 6118509595165778043UL,
00124 815155895778500187UL,
00125 18185573450595916074UL,
00126 5501350898920817482UL,
00127 382043392356382894UL,
00128 7212372096396984419UL,
00129 17216082813533838272UL,
00130 11664929762302443627UL,
00131 12742534429666211769UL,
00132 10885936672907243422UL,
00133 7408809357861601856UL,
00134 7235809803254354851UL,
00135 10923449527984005964UL,
00136 11846584293234382222UL,
00137 10656509822128626836UL,
00138 2129734486054336774UL,
00139 4595091378435214061UL,
00140 9874818728883580365UL,
00141 5946304945334907747UL,
00142 10039693308935676801UL,
00143 13281974385330546238UL,
00144 18100260506304059768UL,
00145 2874169620796400411UL,
00146 7108218580097801290UL,
00147 1609767302727070556UL,
00148 11296708194993589343UL,
00149 13937355006285948174UL,
00150 4714440178991372538UL,
00151 16551309706022489963UL,
00152 10000176812340548792UL,
00153 11878058786115320873UL,
00154 17227685596830233118UL,
00155 6913194524255335692UL,
00156 8581157771211862326UL,
00157 7692516248830269819UL,
00158 4834805303668841320UL,
00159 17683695285788382628UL,
00160 3163270552620053128UL,
00161 7501354178009882428UL,
00162 18032292064795682158UL,
00163 14903091228667847945UL,
00164 12658813769564311973UL,
00165 11071671991853641692UL,
00166 1898680911275368123UL,
00167 11850012838739454071UL,
00168 11605340059702017433UL,
00169 1993475538032240150UL,
00170 14225643076178260981UL,
00171 6073746146812460969UL,
00172 10427646200541715974UL,
00173 8534830515125041658UL,
00174 12137748989343460832UL,
00175 401619354176178507UL,
00176 10566842722928406433UL,
00177 2726007197202736953UL,
00178 12070986965363522186UL,
00179 14306741808513945796UL,
00180 9411600548893210409UL,
00181 10677814577847517837UL,
00182 2524629524427176799UL,
00183 13769537677295179355UL,
00184 2202164469715649820UL,
00185 18048299992904550974UL,
00186 11620367199819191275UL,
00187 12863789957300408274UL,
00188 9470331939464407385UL,
00189 1530202837192022943UL,
00190 8835064955139736011UL,
00191 8145200231008682998UL,
00192 7839809942742909916UL,
00193 9138434136821323472UL,
00194 14559393378324131957UL,
00195 17365140272468484867UL,
00196 12986052322695094991UL,
00197 15032117076709947810UL,
00198 3710476151324188272UL,
00199 1301282554894996635UL,
00200 10667152340954078766UL,
00201 6983777770664759713UL,
00202 16611664140947488647UL,
00203 12136122930610106551UL,
00204 15900825787656229127UL,
00205 10248132639811024681UL,
00206 11698219706208598358UL,
00207 12307261434875431124UL,
00208 14365082098869236341UL,
00209 7765033571440697089UL,
00210 14810290195054154855UL,
00211 9618298383970391972UL,
00212 5541541247731255102UL,
00213 16567733959804019203UL,
00214 17600930129818672877UL,
00215 5232016726685772558UL,
00216 226023602797856284UL,
00217 3268675878373668427UL,
00218 15412168229420758040UL,
00219 9483353024934253554UL,
00220 12957711733854877641UL,
00221 13202855362863795860UL,
00222 14659098127488639325UL,
00223 5642266569510167780UL,
00224 8405185641276686415UL,
00225 12567678120796482638UL,
00226 5572663458795121052UL,
00227 11292924459778654315UL,
00228 12907130784326268258UL,
00229 2781503111506861655UL,
00230 14052031913630628463UL,
00231 7662091316495917798UL,
00232 12388345726433231307UL,
00233 2855096782092770172UL,
00234 143760647337486211UL,
00235 5268378935483038729UL,
00236 14347085534022186031UL,
00237 8226804542313416051UL,
00238 503042565036387930UL,
00239 13277939264481364629UL,
00240 4807934385534294767UL,
00241 6554792055682376182UL,
00242 3505789456125861647UL,
00243 17485983928210687457UL,
00244 6551825177685364660UL,
00245 6530399878351375719UL,
00246 11618616536378075323UL,
00247 8710939588645435621UL,
00248 15913776342681996234UL,
00249 12975832615100357766UL,
00250 11385194348110364656UL,
00251 7334273726237402463UL,
00252 18215307287507846020UL,
00253 108052987233117093UL,
00254 14819872198639686030UL,
00255 7651108032227837181UL,
00256 7326148382022660565UL,
00257 15520843621422491193UL,
00258 14890169031248899249UL,
00259 3302880341533628710UL,
00260 17509231796729795392UL,
00261 6938974810266312299UL,
00262 9904104728819873047UL,
00263 10277854813228565819UL,
00264 8062859346560164933UL,
00265 11953220042241400520UL,
00266 8905905195342696566UL,
00267 8620925171331846539UL,
00268 15354008279539346333UL,
00269 16255477929425666651UL,
00270 15625465014312179739UL,
00271 6560194503171884780UL,
00272 458508474659358201UL,
00273 11178141379033004711UL,
00274 7025589002713530514UL,
00275 6196040542056180472UL,
00276 1771599404396005753UL,
00277 490848885681539136UL,
00278 15438702070227423706UL,
00279 8790555204480314499UL,
00280 6572556090639551862UL,
00281 3282457245646221158UL,
00282 4239195535437592000UL,
00283 16001734625059485025UL,
00284 14396081511655033925UL,
00285 10261432601192522025UL,
00286 9247260218125952769UL,
00287 16080570631414044686UL,
00288 15656989589485934942UL,
00289 10761254633620277391UL,
00290 1363122333823743651UL,
00291 14847079675279608117UL,
00292 6077849015756077442UL,
00293 15290828636077500470UL,
00294 220281240092237795UL,
00295 15760968530563963031UL,
00296 1364939791854189821UL,
00297 5997510653682588941UL,
00298 2006088633984038082UL,
00299 1383498232486134285UL,
00300 17859041093815211104UL,
00301 15894184107946313879UL,
00302 18173079296415961736UL,
00303 3443997055549483358UL,
00304 5294019672823936930UL,
00305 1341830676613088487UL,
00306 581727297735446503UL,
00307 18219577357392561487UL,
00308 17639313299012264080UL,
00309 14222133713791167321UL,
00310 5879505043799386532UL,
00311 7557129766625449226UL,
00312 13360075610958017985UL,
00313 12724115904336527780UL,
00314 16753075547920915484UL,
00315 4116411708112171871UL,
00316 16025692682808517910UL,
00317 4003328942103420939UL,
00318 9811320057930109787UL,
00319 3576072849789367484UL,
00320 17075748046009610792UL,
00321 12833406223291392866UL,
00322 9648248336540660688UL,
00323 17476583957989300837UL,
00324 16827359136787046510UL,
00325 4345039153564047180UL,
00326 1224716260729000059UL,
00327 13959598322342824445UL,
00328 10743140873520517726UL,
00329 13340880620026565045UL,
00330 9192556363923792986UL,
00331 3841907957831078749UL,
00332 246438482871824834UL,
00333 4260787342534664069UL,
00334 17100720253388227686UL,
00335 11544966922599678750UL,
00336 9293075407897592921UL,
00337 1610905992411273162UL,
00338 2239787421847352995UL,
00339 15182496755963432304UL,
00340 1823665993529743824UL,
00341 7263153004799849282UL,
00342 11497980475724160945UL,
00343 1274355111868335897UL,
00344 15057972526005432563UL,
00345 11823052640709049475UL,
00346 15927429045819933119UL,
00347 14618154733049321749UL,
00348 16861991482751749049UL,
00349 5936874228331837512UL,
00350 15290754097890487720UL,
00351 9191375772889979508UL,
00352 6816129633576113785UL,
00353 12923817606396645484UL,
00354 8875993281327238816UL,
00355 123714282527043508UL,
00356 7179882084825590703UL,
00357 3925024599322075567UL,
00358 2426048646574757412UL,
00359 10665962527629258587UL,
00360 12646312850531314143UL,
00361 528129165734836933UL,
00362 3701120955488573646UL,
00363 15861534485058814280UL,
00364 14022467189115595098UL,
00365 9502851142036471883UL,
00366 12432213096681522867UL,
00367 751500370320404802UL,
00368 1606345595406828785UL,
00369 10313713517508959984UL,
00370 6565609239876268324UL,
00371 8654149379457545096UL,
00372 6548830896464452248UL,
00373 1464368532414012445UL,
00374 4302937696445584032UL,
00375 17063664947863781419UL,
00376 8038577586991861682UL,
00377 10951259595021013980UL,
00378 7709630466255725074UL,
00379 609806407111517279UL,
00380 13860208046684354033UL,
00381 15140303568956907423UL,
00382 4803057729274452412UL,
00383 4367455766719288283UL,
00384 320027280359511727UL,
00385 16020877306388137190UL,
00386 3764882323315346488UL,
00387 11972546313392727283UL,
00388 7977601566213555124UL,
00389 15148378244947865280UL,
00390 4483722253329626321UL,
00391 16560836625841776840UL,
00392 14666077208671482135UL,
00393 9298193298119711211UL,
00394 12015014023744623893UL,
00395 10191703760489555596UL,
00396 1316913070589847725UL,
00397 15881746492947991011UL,
00398 13665807677473998048UL,
00399 14390309917106480591UL,
00400 17231567872468478469UL,
00401 4562957401728953232UL,
00402 11501454621029854493UL,
00403 10252134323451005656UL,
00404 12021948387925309670UL,
00405 3525149157835967069UL,
00406 10292558937206299109UL,
00407 13725724605985217856UL,
00408 175033751151696127UL,
00409 14720951489402332470UL,
00410 11927624343611332814UL,
00411 567437266624809204UL,
00412 14161392585443694227UL,
00413 8725463779420655722UL,
00414 12063468735510140344UL,
00415 12026523736635889408UL,
00416 16565599419781878456UL,
00417 7086470817660744490UL,
00418 14809513609573064984UL,
00419 10898762682820885052UL,
00420 13982083571459739493UL,
00421 15656618354974864372UL,
00422 4239583100143107224UL,
00423 4322769551545487304UL,
00424 13825585217369415084UL,
00425 5136324433139686016UL,
00426 8179080547263771206UL,
00427 8279259187088296150UL,
00428 6381371846375303738UL,
00429 3142014871877744388UL,
00430 3417815453103862427UL,
00431 5556557018553548625UL,
00432 7788492627093668219UL,
00433 2446537327809742760UL,
00434 7165731799178534002UL,
00435 10969060298437286606UL,
00436 16392640790529049402UL,
00437 4905600830298563047UL,
00438 12442106640046578583UL,
00439 7139041375816724964UL,
00440 18098103947732186633UL,
00441 2078238351823174321UL,
00442 9929562085097862277UL,
00443 14231090695955652612UL,
00444 16914810114016502414UL,
00445 9172887937989634160UL,
00446 10057184693043820912UL,
00447 8739867056556181319UL,
00448 1879322488574672564UL,
00449 6706469496298082633UL,
00450 17962793280504692541UL,
00451 2796622365685518391UL,
00452 14206454203780509608UL,
00453 11911505185092294091UL,
00454 13188421404411005493UL,
00455 1002631262698104372UL,
00456 16116424222649594941UL,
00457 731059841323644991UL,
00458 16630196285890835221UL,
00459 6275370517569960592UL,
00460 2762335813606797964UL,
00461 1550415195017045798UL,
00462 8084777285994689863UL,
00463 4858045103923411134UL,
00464 13517076072140006105UL,
00465 16656029182431041189UL,
00466 6076064496187725305UL,
00467 15281271591975529160UL,
00468 2275428871306187428UL,
00469 15396744606475751109UL,
00470 15460778948302864604UL,
00471 6107847787338713474UL,
00472 9357621545767658217UL,
00473 4805014239018879550UL,
00474 17869119773972988965UL,
00475 17868495682315323441UL,
00476 10660808254721474616UL,
00477 7308276872489783138UL,
00478 4234856545479982050UL,
00479 1223334879029033304UL,
00480 10995800624761949288UL,
00481 16283797325974965665UL,
00482 12410167362078398820UL,
00483 12918484557456873081UL,
00484 14423314551522087679UL,
00485 4967867692111402622UL,
00486 16197846038770304940UL,
00487 11809884480603742831UL,
00488 16802686488973843640UL,
00489 2354077987008574056UL,
00490 9978003576519895777UL,
00491 5506048811554826358UL,
00492 18433781523380564149UL,
00493 4302137793340917657UL,
00494 978195094879846769UL,
00495 2377823329880292548UL,
00496 3464291122006072777UL,
00497 18046845603455616162UL,
00498 13944776942598500463UL,
00499 4000590694056817931UL,
00500 496833875371241644UL,
00501 16247695245933522501UL,
00502 1505779951058046438UL,
00503 11430822963532124358UL,
00504 4729903064888922231UL,
00505 8864507718425611027UL,
00506 14643598183997536338UL,
00507 4480511581250357378UL,
00508 11133239898726463704UL,
00509 17471052555928421508UL,
00510 15541989708583753235UL,
00511 7461560065837635158UL,
00512 13956421526574063689UL,
00513 3743280538841219763UL,
00514 12020611143801404565UL,
00515 6618703997501212010UL,
00516 3729371474666129836UL,
00517 17869245751809494685UL,
00518 1833331385744685838UL,
00519 1506104207003999508UL,
00520 8158509169843256229UL,
00521 10212507222875597491UL,
00522 7211593336579637715UL,
00523 14341253648497092530UL,
00524 4511202703905924031UL,
00525 8043833010361144102UL,
00526 2512875450160943286UL,
00527 18235665817864664213UL,
00528 8317446467730476132UL,
00529 11182884000969346056UL,
00530 548357546399462395UL,
00531 1960628024952592835UL,
00532 4650095513901192085UL,
00533 12679676177772217157UL,
00534 3487733703240934135UL,
00535 6446640077094538365UL,
00536 1114715573562175630UL,
00537 16622874083185883281UL,
00538 17081932748524927392UL,
00539 17192402071367355968UL,
00540 15013800339030843048UL,
00541 3718961432784285989UL,
00542 14953817216655866296UL,
00543 11410118254031919487UL,
00544 17718071771819733200UL,
00545 6970769915355275987UL,
00546 14244261541942962860UL,
00547 295778071941084510UL,
00548 553041658124347434UL,
00549 571128341496031343UL,
00550 6867891970504820807UL,
00551 16515587447694198371UL,
00552 3932569386063656416UL,
00553 15542525920467376967UL,
00554 4513384432419818675UL,
00555 7336705434792969335UL,
00556 1342984449178439078UL,
00557 10672151960711459277UL,
00558 11668091039787926587UL,
00559 15308742994910314323UL,
00560 8337161158579684228UL,
00561 5390473811288298369UL,
00562 444117188512458090UL,
00563 8602531868090961223UL,
00564 1632809043568697774UL,
00565 11829254858211213981UL,
00566 4634227867572760505UL,
00567 16086237486731074061UL,
00568 4844172753138751369UL,
00569 4992022238300904271UL,
00570 11132360655811360102UL,
00571 11660714643785469458UL,
00572 2468480999090126185UL,
00573 10912054708474512716UL,
00574 12659667168896228555UL,
00575 11988368921832936489UL,
00576 5116996783249524791UL,
00577 253818271896405507UL
00578 #else // ULONG_MAX >= 18446744073709551615
00579
00580 4218046471UL,
00581 1917139952UL,
00582 2103556369UL,
00583 1588695878UL,
00584 4215491346UL,
00585 216507845UL,
00586 2296134958UL,
00587 1868314761UL,
00588 3228779327UL,
00589 1785085484UL,
00590 4228225705UL,
00591 1165369009UL,
00592 3142089765UL,
00593 431503981UL,
00594 3369606777UL,
00595 745480828UL,
00596 2744780773UL,
00597 689045082UL,
00598 1900506313UL,
00599 2497498204UL,
00600 368683604UL,
00601 2225005389UL,
00602 781333974UL,
00603 4132002528UL,
00604 2847677322UL,
00605 343783736UL,
00606 2901322050UL,
00607 3337243677UL,
00608 1665993590UL,
00609 233599841UL,
00610 1022462535UL,
00611 1680112766UL,
00612 500144658UL,
00613 3013714463UL,
00614 1102944137UL,
00615 424404167UL,
00616 1616048503UL,
00617 3058072676UL,
00618 2626558419UL,
00619 2270217197UL,
00620 1042360030UL,
00621 1406615072UL,
00622 2817651072UL,
00623 3066388841UL,
00624 3595996753UL,
00625 2530300747UL,
00626 1068533293UL,
00627 3850615434UL,
00628 2000952241UL,
00629 500251219UL,
00630 2785863467UL,
00631 116749905UL,
00632 2534901578UL,
00633 2762569636UL,
00634 441176494UL,
00635 3611264136UL,
00636 708254627UL,
00637 3107133154UL,
00638 3498823450UL,
00639 3710248321UL,
00640 3408201403UL,
00641 2483680087UL,
00642 1593406496UL,
00643 2358632005UL,
00644 1113775647UL,
00645 1296788200UL,
00646 866750108UL,
00647 1511795181UL,
00648 2007682240UL,
00649 1383572622UL,
00650 2747177348UL,
00651 751086457UL,
00652 3862498228UL,
00653 1330825518UL,
00654 1893848486UL,
00655 3716728436UL,
00656 257714096UL,
00657 1129572537UL,
00658 3411765329UL,
00659 1445308638UL,
00660 1675128925UL,
00661 1177771214UL,
00662 610662193UL,
00663 308703855UL,
00664 3766028156UL,
00665 2406778266UL,
00666 1614133721UL,
00667 3094138658UL,
00668 644181699UL,
00669 3585820756UL,
00670 228354647UL,
00671 3895845225UL,
00672 837654579UL,
00673 2423338235UL,
00674 3626844735UL,
00675 4004795529UL,
00676 1966777404UL,
00677 4099992662UL,
00678 561993057UL,
00679 478026097UL,
00680 2726060916UL,
00681 160900471UL,
00682 4067242522UL,
00683 2107667107UL,
00684 2291883857UL,
00685 3366222014UL,
00686 804030225UL,
00687 815232690UL,
00688 4173469665UL,
00689 3680594736UL,
00690 1812916838UL,
00691 953829049UL,
00692 645064420UL,
00693 893103776UL,
00694 1484445384UL,
00695 1704310224UL,
00696 3169988691UL,
00697 994674462UL,
00698 3348302238UL,
00699 420911742UL,
00700 3997852732UL,
00701 3006569532UL,
00702 244288857UL,
00703 3012303255UL,
00704 3091414730UL,
00705 3919806716UL,
00706 815658776UL,
00707 396540369UL,
00708 2296675021UL,
00709 3199014033UL,
00710 2569108436UL,
00711 3862344457UL,
00712 4058338881UL,
00713 1161706542UL,
00714 2972997031UL,
00715 2099532487UL,
00716 160888949UL,
00717 427549488UL,
00718 3061518659UL,
00719 66373532UL,
00720 3444886884UL,
00721 2530414305UL,
00722 3380064368UL,
00723 937051782UL,
00724 1302891919UL,
00725 2463653477UL,
00726 3547879633UL,
00727 2260320717UL,
00728 832678359UL,
00729 2453616965UL,
00730 2193052461UL,
00731 799622604UL,
00732 3629014225UL,
00733 1522933084UL,
00734 2498150583UL,
00735 1976833008UL,
00736 1725662928UL,
00737 1733324678UL,
00738 3374380020UL,
00739 818903650UL,
00740 718472891UL,
00741 411252729UL,
00742 3187730653UL,
00743 798673927UL,
00744 1222802842UL,
00745 1985038219UL,
00746 1623995355UL,
00747 2603784033UL,
00748 4261727525UL,
00749 3939193905UL,
00750 2256923068UL,
00751 507372076UL,
00752 229897092UL,
00753 3447212333UL,
00754 1015331998UL,
00755 1624914646UL,
00756 3270616777UL,
00757 1922996004UL,
00758 2303929294UL,
00759 3083527264UL,
00760 3511924852UL,
00761 651582997UL,
00762 2830297570UL,
00763 2541981492UL,
00764 3229134142UL,
00765 535111766UL,
00766 2531439891UL,
00767 1176474835UL,
00768 1746643607UL,
00769 196953906UL,
00770 190859135UL,
00771 1471944757UL,
00772 3764050027UL,
00773 2300961517UL,
00774 1200836119UL,
00775 1934885757UL,
00776 1017153529UL,
00777 864626426UL,
00778 65215191UL,
00779 3649915955UL,
00780 2649000649UL,
00781 3056185941UL,
00782 2895789221UL,
00783 2705123786UL,
00784 3486894128UL,
00785 1764275188UL,
00786 800856520UL,
00787 1121637219UL,
00788 3470689154UL,
00789 2031015368UL,
00790 1799564405UL,
00791 412027838UL,
00792 3505785501UL,
00793 819633830UL,
00794 2841515279UL,
00795 397789381UL,
00796 3850545068UL,
00797 4038096561UL,
00798 702453020UL,
00799 298184560UL,
00800 1331143206UL,
00801 3832472400UL,
00802 483752162UL,
00803 3365506546UL,
00804 2403178818UL,
00805 2588604760UL,
00806 3630868707UL,
00807 2672754775UL,
00808 3834743541UL,
00809 625254315UL,
00810 3404805826UL,
00811 2758773926UL,
00812 3539158313UL,
00813 1304746437UL,
00814 4228336097UL,
00815 1790470857UL,
00816 2017211747UL,
00817 2823780770UL,
00818 1361022238UL,
00819 2442638132UL,
00820 3465700788UL,
00821 2602256049UL,
00822 61072285UL,
00823 1290754848UL,
00824 1365538365UL,
00825 2885926246UL,
00826 3366937675UL,
00827 1976271220UL,
00828 4274857987UL,
00829 2846551234UL,
00830 3730952612UL,
00831 785655762UL,
00832 2640747064UL,
00833 2479569674UL,
00834 2988213501UL,
00835 238402214UL,
00836 2736968438UL,
00837 1273211556UL,
00838 2993298676UL,
00839 2076907296UL,
00840 169664466UL,
00841 3590743418UL,
00842 2853715414UL,
00843 1494116982UL,
00844 3408636076UL,
00845 1354085945UL,
00846 2121174096UL,
00847 557203192UL,
00848 2005947221UL,
00849 2790204730UL,
00850 3673048078UL,
00851 2710286579UL,
00852 2759941695UL,
00853 2554805430UL,
00854 1565053908UL,
00855 1516728908UL,
00856 457211737UL,
00857 4053842378UL,
00858 1926452932UL,
00859 121166907UL,
00860 1884552326UL,
00861 2050083102UL,
00862 783329973UL,
00863 1002934724UL,
00864 2916755028UL,
00865 1574390275UL,
00866 4246041184UL,
00867 112940213UL,
00868 4213344814UL,
00869 3831377539UL,
00870 3593710048UL,
00871 184196123UL,
00872 62388243UL,
00873 1824724968UL,
00874 1553056630UL,
00875 2471314862UL,
00876 1580248726UL,
00877 1641907471UL,
00878 4182117804UL,
00879 244827601UL,
00880 2673787044UL,
00881 1245428424UL,
00882 1254024234UL,
00883 1944146503UL,
00884 2068525708UL,
00885 1452126855UL,
00886 1368763640UL,
00887 2063660828UL,
00888 306042674UL,
00889 668216774UL,
00890 2002594576UL,
00891 3192370193UL,
00892 4189750176UL,
00893 1815590529UL,
00894 2838559664UL,
00895 3322933511UL,
00896 708460425UL,
00897 3093499804UL,
00898 219970021UL,
00899 2136064297UL,
00900 1281979964UL,
00901 3437613761UL,
00902 544003806UL,
00903 2998811936UL,
00904 1481470929UL,
00905 2880899873UL,
00906 3617899122UL,
00907 2269535287UL,
00908 2964733041UL,
00909 1437018425UL,
00910 4136436935UL,
00911 2892386937UL,
00912 2312588208UL,
00913 3470825412UL,
00914 3048839250UL,
00915 3124535567UL,
00916 74106735UL,
00917 740534715UL,
00918 780483498UL,
00919 1703009387UL,
00920 3908417545UL,
00921 2925498568UL,
00922 570244170UL,
00923 768611579UL,
00924 2561901277UL,
00925 3369289022UL,
00926 298430172UL,
00927 3399976658UL,
00928 2781253163UL,
00929 2203229433UL,
00930 4083764265UL,
00931 1813739940UL,
00932 2495956219UL,
00933 1733876904UL,
00934 2961522297UL,
00935 2806638528UL,
00936 210215678UL,
00937 3179651913UL,
00938 3488143624UL,
00939 2162063032UL,
00940 2230441611UL,
00941 3104777333UL,
00942 1901009578UL,
00943 2357529595UL,
00944 1661659881UL,
00945 2275001257UL,
00946 1089779619UL,
00947 1019581619UL,
00948 3676689000UL,
00949 2363224232UL,
00950 3087179246UL,
00951 2521585396UL,
00952 1172580989UL,
00953 3363959227UL,
00954 1379171244UL,
00955 2568664929UL,
00956 2716951910UL,
00957 634711458UL,
00958 1881366407UL,
00959 2339310622UL,
00960 1437137856UL,
00961 775517573UL,
00962 2403816337UL,
00963 3643691625UL,
00964 2796142813UL,
00965 2636271743UL,
00966 3548645335UL,
00967 2401818065UL,
00968 1430955355UL,
00969 1529261488UL,
00970 2672050975UL,
00971 1824816344UL,
00972 437321422UL,
00973 1010469737UL,
00974 975873927UL,
00975 3808619211UL,
00976 1306922849UL,
00977 2306306586UL,
00978 3492263153UL,
00979 915764428UL,
00980 4049080639UL,
00981 2584666827UL,
00982 2248503228UL,
00983 1156685342UL,
00984 3545089377UL,
00985 2927987815UL,
00986 1188340469UL,
00987 1983809416UL,
00988 2359080396UL,
00989 3026745995UL,
00990 1020085481UL,
00991 2455748822UL,
00992 2973731428UL,
00993 1685598150UL,
00994 2459914554UL,
00995 222412187UL,
00996 1550326895UL,
00997 3808681066UL,
00998 910364646UL,
00999 4011483211UL,
01000 3449464402UL,
01001 3094973082UL,
01002 3370230650UL,
01003 1693151952UL,
01004 3574854040UL,
01005 3557103099UL,
01006 4108399894UL,
01007 3762036621UL,
01008 2337346271UL,
01009 1005455572UL,
01010 3860207735UL,
01011 1771002576UL,
01012 199004943UL,
01013 1578846676UL,
01014 2676995104UL,
01015 4076948954UL,
01016 830057378UL,
01017 459065499UL,
01018 3804368733UL,
01019 3499868406UL,
01020 852696530UL,
01021 514613423UL,
01022 1584281952UL,
01023 985799155UL,
01024 1895009366UL,
01025 3825253357UL,
01026 1782693174UL,
01027 2196979238UL,
01028 1308429445UL,
01029 2960767408UL,
01030 2285337396UL,
01031 2065293874UL,
01032 1306724979UL,
01033 4056398081UL,
01034 4047112430UL,
01035 3606840914UL,
01036 3117829644UL,
01037 3877872838UL,
01038 3297977849UL,
01039 336255855UL,
01040 3794593369UL,
01041 2534532716UL,
01042 3726226824UL,
01043 2067902083UL,
01044 1289138711UL,
01045 615241845UL,
01046 3711156810UL,
01047 4069284324UL,
01048 3829237942UL,
01049 3615667378UL,
01050 750506440UL,
01051 3851304132UL,
01052 1159089146UL,
01053 2459260597UL,
01054 2955574874UL,
01055 1775846339UL,
01056 1872505027UL,
01057 3021810567UL,
01058 2498812392UL,
01059 2388439890UL,
01060 3509540924UL,
01061 4132084900UL,
01062 1762358900UL,
01063 3005639020UL,
01064 961559514UL,
01065 5499771UL,
01066 2114442568UL,
01067 2725996306UL,
01068 2213448586UL,
01069 3041192141UL,
01070 2318358424UL,
01071 4199956637UL,
01072 508024672UL,
01073 2898231491UL,
01074 985807031UL,
01075 3712119117UL,
01076 487464412UL,
01077 1443950379UL,
01078 2897942828UL,
01079 2942321529UL
01080 #endif
01081 };
01082
01084 inline HashType xorrer(HashType const &l, NucleonItem const &r) {
01085 return l^mask[r];
01086 }
01087
01088 }
01089
01112 inline HashType hashConfig(NucleonItem *config, G4int n) {
01113
01114 return std::accumulate(config, config+n, ((HashType)0), xorrer);
01115 }
01116
01117 }
01118 }
01119
01120 #endif // INCL_CACHING_CLUSTERING_MODEL_INTERCOMPARISON_HashMask
01121
01122 #endif // G4INCLHASHING_HH_