Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • emsmith/athena
  • dzubov/athena
  • pscholer/athena
  • akvam/athena
  • flasagni/athena
  • hartman/athena
  • alux/athena
  • berenice/athena
  • mschott/athena
  • mgenest/athena
  • pbalek/athena
  • dsalvato/athena
  • korcyl/athena
  • tlyubush/athena
  • lyubushk/athena
  • gstark/athena
  • yharris/athena
  • lmonsoni/athena
  • nagano/athena
  • lcorpe/athena
  • lshi/athena
  • rrosten/athena
  • ytsujika/athena
  • tiledemo/athena
  • abagdato/athena
  • fparodi/athena
  • tmoxter/athena
  • lheinric/athena
  • milu/athena
  • pyin/athena
  • juesseiv/athena-celeritas
  • mmlynari/athena
  • matthier/athena
  • jsandesa/athena
  • borisov/athena
  • zchubini/athena
  • mpenzin/athena
  • mcorradi/athena
  • okovanda/athena
  • meevans/athena
  • isiral/athena
  • haa2mu2tau/athena
  • nkvu/athena
  • andre/athena
  • ebakos/athena
  • gwmyers/athena
  • lportale/athena
  • vasothil/athena
  • bwinter/athena
  • brle/athena
  • camacho/athena
  • icioara/athena
  • mcentonz/athena
  • quli/athena
  • mikhail/athena
  • begilber/athena
  • gartoni/athena
  • abkahn/athena
  • mbasso/athena
  • pagacova/athena
  • dgancarc/athena
  • stefania/athena
  • gmarchio/athena
  • jolsson/athena
  • atlasdqm/athena
  • chuanshu/athena
  • yygao/athena
  • shimoji/athena
  • zhenw/athena
  • jojamies/athena
  • keli/athena
  • cnass/athena
  • beckerov/athena
  • passaggi/athena
  • marvin/athena
  • hdf5-utils/athena
  • pberta/athena
  • aaboulho/athena
  • acrobert/athena
  • ranjitn/athena
  • cescobar/athena
  • ktodome/athena
  • kastanas/athena
  • huirun/athena
  • atrzupek/athena
  • tzorbas/athena
  • lfountas/athena
  • ccarrion/athena
  • aambler/athena
  • derendar/athena
  • britzger/athena
  • hanl/athena
  • epender/athena
  • gipezzul/athena
  • mmineev/athena
  • robertma/athena
  • gnn4itkteam/athena
  • phkoenig/athena
  • pleier/athena
  • nekumari/athena
  • avasyuko/athena
  • nguseyno/athena
  • pavel/athena
  • reznicek/athena
  • gtateno/athena
  • jiling/athena
  • herrmant/athena
  • aburke/athena
  • lmcelhin/athena
  • jcordeir/athena
  • averbyts/athena
  • xuh/athena
  • ewallin/athena
  • tnommens/athena
  • tvazquez/athena
  • gascott/athena
  • shbansal/athena
  • ccaminch/athena
  • yuhui/athena
  • corentin/athena
  • lserkin/athena
  • berkeleylab/CharmPhysics/athena
  • cdiez/athena
  • miochoa/athena
  • cpollard/athena
  • madurano/athena_gittutorial
  • hfox/athena
  • msykora/athena
  • calfayan/athena
  • ckirfel/athena
  • jakoubek/athena
  • atlas/athena
  • kjohns/athena
  • toshi/athena
  • fwinkl/athena
  • wlampl/athena
  • dguest/athena
  • karolos/athena
  • aundrus/athena
  • jmontejo/athena
  • akraszna/athena
  • damazio/athena
  • okuprash/athena
  • rhauser/athena
  • smh/athena
  • phwindis/athena
  • turra/athena
  • arnaez/athena
  • tdado/athena
  • tadej/athena
  • baines/athena
  • abuckley/athena
  • mmuskinj/athena
  • psommer/athena
  • jmasik/athena
  • bwynne/athena
  • pjacka/athena
  • tstreble/athena
  • tamartin/athena
  • tbold/athena
  • ATLAS-EGamma/athena
  • mhodgkin/athena
  • nstyles/athena
  • yuxu/athena
  • toyamaza/athena
  • mark/athena
  • gemmeren/athena
  • rbianchi/athena
  • ssnyder/athena
  • wwalko/athena
  • graemes/athena
  • emoyse/athena
  • pgadow/athena
  • sshaw/athena
  • solodkov/athena
  • shlomit/athena
  • rbielski/athena
  • dcasper/athena
  • hartj/athena
  • jcatmore/athena
  • mrybar/athena
  • ychiu/athena
  • ebuschma/athena
  • christos/athena
  • yoyamagu/athena
  • gunal/athena
  • ewelina/athena
  • nikiforo/athena
  • fpastore/athena
  • ligang/athena
  • harkusha/athena
  • mvozak/athena
  • sroe/athena
  • leggett/athena
  • martindl/athena
  • lfiorini/athena
  • tlari/athena
  • longjon/athena
  • jichen/athena
  • susinha/athena
  • cchan/athena
  • filthaut/athena
  • cshimmin/athena
  • mihuebne/athena
  • peter/athena
  • jsallen/athena-high-pt-ms-jets
  • cvarni/athena
  • wleight/athena
  • dkar/athena
  • nwarrack/athena
  • alfroch/athena
  • chays/athena
  • mstamenk/athena
  • dtovey/athena
  • sgeorge/athena
  • okepka/athena
  • tkohno/athena
  • yafu/athena
  • mgignac/athena
  • janovak/athena
  • cohm/athena
  • wiedenat/athena
  • khoo/athena
  • omajersk/athena
  • maklein/athena
  • dbakshig/athena
  • fernando/athena
  • tmkrtchy/athena
  • gingrich/athena
  • scheiric/athena
  • schaarsc/athena
  • pleskot/athena
  • ponyisi/athena
  • jobalz/athena
  • ravinab/athena
  • ebergeas/athena
  • ekuwertz/athena
  • ekasimi/athena
  • xai/athena
  • afaulkne/athena
  • achishol/athena
  • merrenst/athena
  • goetz/athena
  • alaurier/athena
  • dpopov/athena
  • mtoscani/athena
  • krumnack/athena
  • astruebi/athena
  • clseitz/athena
  • mdanning/athena
  • bmindur/athena
  • egramsta/athena
  • efilmer/athena
  • jpanduro/athena
  • hye/athena
  • ssarikay/athena
  • ppostola/athena
  • hyamauch/athena
  • shanisch/athena
  • aad/athena
  • ncalace/athena
  • gpanizzo/athena
  • stelzer/athena
  • rcoelhol/athena
  • tupham/athena
  • ssottoco/athena
  • turnerm/athena
  • nkrengel/athena
  • sutt/athena
  • rkopelia/athena
  • bernius/athena
  • cmcginn/athena
  • stsuno/athena
  • tsulaia/athena
  • vcairo/athena
  • yunju/athena
  • ldc/athena
  • mbandier/athena
  • mehlhase/athena
  • jmacdona/athena
  • almaloiz/athena
  • jdandoy/athena
  • dzanzi/athena
  • kzoch/athena
  • jufische/athena
  • amete/athena
  • nasbah/athena
  • williams/athena
  • rcarney/athena
  • shhirose/athena
  • kwhalen/athena
  • bmorgan/athena
  • cheidegg/athena
  • kkohler/athena
  • heng/athena
  • hhibi/athena
  • msaimper/athena
  • ynoguchi/athena
  • coccaro/athena
  • cdeutsch/athena
  • campanel/athena
  • loch/athena
  • nova/athena
  • wbalunas/athena
  • todorova/athena
  • hoide/athena
  • sjiggins/athena
  • bgokturk/athena
  • xju/athena
  • aytul/athena
  • hrussell/athena
  • yuchou/athena
  • kegraham/athena
  • lidiaz/athena
  • jbiswal/athena
  • guerrero/athena
  • mverissi/athena
  • bouhova/athena
  • alwang/athena
  • kpachal/athena
  • dhayden/athena
  • mvanadia/athena
  • alopezso/athena
  • fmeloni/athena
  • mvessell/athena
  • ssantpur/athena
  • kenelson/athena
  • omeshkov/athena
  • soumya/athena
  • upatel/athena
  • dshope/athena
  • igrabows/athena
  • tvarol/athena
  • korona/athena
  • ruyuan/athena
  • dbogavac/athena
  • mhank/athena
  • anperrev/athena
  • eramakot/athena
  • tnobe/athena
  • fsforza/athena
  • cowagner/athena
  • tursom/athena
  • fgiuli/athena
  • derue/athena
  • koffas/athena
  • myexley/athena
  • chinderk/athena
  • angianni/athena
  • ballbroo/athena
  • falonso/athena
  • diehl/athena
  • davidek/athena
  • tphamleh/athena
  • mfujimot/athena
  • ekajomov/athena-general
  • sarbiolv/athena
  • hansenph/athena
  • salvator/athena
  • jmendes/athena
  • hirose/athena
  • stapiaar/athena
  • masato/athena
  • jhaley/athena
  • ffabbri/athena
  • stavrop/athena
  • tpelzer/athena
  • nwenke/athena
  • kkrizka/athena
  • agbet/athena
  • dbabal/athena
  • gia/athena
  • hmildner/athena
  • cdelitzs/athena
  • temoskal/athena
  • juesseiv/athena
  • ckitsaki/athena
  • asonay/athena
  • dwallace/athena
  • eschanet/athena
  • jiawei/athena
  • lferencz/athena
  • czhou/athena
  • iaizenbe/athena
  • pmeiring/athena
  • jteoh/athena
  • mromano/athena
  • rustem/athena
  • liberato/athena
  • jbeirer/athena
  • sswatman/athena
  • nielsenj/athena
  • wachan/athena
  • ranovotn/athena
  • miqueits/athena
  • asquith/athena
  • elmsheus/athena
  • eparrish/athena
  • nicholas/athena
  • markowen/athena
  • fuhe/athena
  • mhance/athena
  • dakoch/athena
  • tjunkerm/athena
  • aranzazu/athena
  • ndegroot/athena
  • lihan/athena
  • jkempste/athena
  • ginaciog/athena
  • verducci/athena
  • esoldato/athena
  • asoukhar/athena
  • aporeba/athena
  • martis/athena
  • sschramm/athena
  • mswiatlo/athena
  • pliu/athena
  • anmrodri/athena
  • mdelmast/athena
  • fastcalosim_test/athena
  • ssaha/athena
  • gabarone/athena
  • bcarlson/athena
  • scamarda/athena
  • amoussa/athena
  • lstocker/athena
  • guindon/athena
  • conde/athena
  • mxia/athena
  • rlongo/athena
  • mdonasci/athena
  • chelling/athena
  • hmaguire/athena
  • gialas/athena
  • fcostanz/athena
  • shion/athena
  • sberlend/athena
  • mmittal/athena
  • ffollega/athena
  • sschmitt/athena
  • acts/athena
  • dwilbern/athena
  • zsoumaim/athena
  • evarnes/athena
  • guescini/athena
  • cgutscho/athena
  • nifomin/athena
  • eriefel/athena
  • jkremer/athena
  • laforge/athena
  • haozturk/athena
  • susy-hackers/athena
  • llorente/athena
  • istin/athena
  • akotsoke/athena
  • rpoggi/athena
  • fizisist/athena
  • kkoeneke/athena
  • cmerlass/athena
  • rkarnam/athena
  • acanesse/athena
  • fengyu/athena
  • ivivarel/athena
  • chenlian/athena
  • ysmirnov/athena_old
  • navarrjo/athena
  • yanlin/athena
  • bulekov/athena
  • sanchevi/athena
  • sefernan/athena
  • amulski/athena
  • pkramer/athena
  • vcavalie/athena
  • bauerpa/athena
  • smwang/athena
  • restevam/athena
  • thsjurse/athena
  • jgonski/athena
  • mmlynars/athena
  • iyeletsk/athena
  • mmazza/athena
  • mwielers/athena
  • csebasti/athena
  • mtchijov/athena
  • itrandaf/athena
  • almgadm/athena
  • wobisch/athena
  • jhinds/athena
  • tiyang/athena
  • emmat/athena
  • lapereir/athena
  • lmiller/athena
  • zuysal/athena
  • aleopold/athena
  • lucam/athena
  • somadutt/athena
  • kciesla/athena
  • pekman/athena
  • rbalasub/athena
  • masaito/athena
  • wmccorma/athena
  • ycoadou/athena
  • kkreul/athena
  • simmons/athena
  • salderwe/athena
  • jstupak/athena
  • ilongari/athena
  • adye/athena
  • pinamont/athena
  • jzeng/athena
  • ssahin/athena
  • wtaylor/athena
  • kbelobor/athena
  • kghorban/athena
  • aoneill/athena
  • dmaximov/athena
  • gcallea/athena
  • ljeanty/athena
  • fbartels/athena
  • cschiavi/athena
  • mcfayden/athena
  • kasai/athena
  • ecarlson/athena
  • jraine/athena
  • scarra/athena
  • rozeny/athena
  • brottler/athena
  • aelmouss/athena
  • nbelyaev/athena
  • khanov/athena
  • joheinri/athena
  • abandyop/athena
  • gotero/athena
  • doglioni/athena
  • aohatl/athena
  • rebeca/athena
  • alaperto/athena
  • bigliett/athena
  • amarzin/athena
  • bhonan/athena
  • rgarg/athena
  • dpudzha/athena
  • pmoskvit/athena
  • jajimene/athena
  • begalli/athena
  • yajun/athena
  • mpokidov/athena
  • paulama/athena
  • mtesta/athena
  • lbozianu/athena
  • vcroft/athena
  • atlidali/athena
  • torrence/athena
  • barak/athena
  • demelian/athena
  • wprzygod/athena
  • sgalantz/athena
  • tofitsch/athena
  • roward/athena
  • hacooke/athena
  • atsirigo/athena
  • salnikov/athena
  • amoroso/athena
  • csander/athena
  • elrossi/athena
  • mmiralle/athena
  • jsabater/athena
  • alory/athena
  • ozaplati/athena
  • pottgen/athena
  • pbokan/athena
  • jdevivi/athena
  • ymino/athena
  • ruth/athena
  • xchen/athena
  • klin/athena
  • trinn/athena
  • xiaoning/athena
  • nishu/athena
  • apetukho/athena
  • cappelt/athena
  • paramon/athena
  • ratkin/athena
  • nelsonc/athena
  • enarayan/athena
  • bleban/athena
  • dpizzi/athena
  • ztarem/athena
  • juhofer/athena
  • qhu/athena
  • exot-27/athena
  • sampson/athena
  • acassim/athena
  • bburghgr/athena
  • mkrivos/athena
  • mmarjano/athena
  • ychow/athena
  • LichtenbergGroup/athena
  • nviauxma/athena
  • ibordule/athena
  • pagessin/athena
  • hessey/athena
  • watsona/athena
  • jreich/athena
  • wfawcett/athena
  • ztao/athena
  • othielma/athena
  • jdegens/athena
  • hasada/athena
  • perj/athena
  • mleblanc/athena
  • sridouan/athena
  • pmendesa/athena
  • alainb/athena
  • xiaohu/athena
  • wgeorge/athena
  • bachacou/athena
  • ludovica/athena
  • kristin/athena
  • yake/athena
  • ktsuri/athena
  • jlsmith/athena
  • musafdar/athena
  • yama/athena
  • ssu/athena
  • angerami/athena
  • rnayak/athena
  • pebaron/athena-weights
  • gproto/athena
  • mproffit/athena
  • amendesj/athena
  • jezequel/athena
  • hschwart/athena
  • asalzbur/athena
  • rerrabai/athena
  • csamoila/athena
  • lhelary/athena
  • spolacek/athena
  • malgren/athena
  • tiany/athena
  • mprincip/athena
  • bmondal/athena
  • aczirkos/athena
  • lbeemste/athena
  • grabanal/athena
  • silvinha/athena
  • asantra/athena
  • jreidels/athena
  • kyamaguc/athena
  • tboeckh/athena
  • holau/athena
  • jroloff/athena
  • mdhlamin/athena
  • slawlor/athena
  • tdiasdov/athena
  • emily/athena
  • bozek/athena
  • lkrauth/athena
  • bbrueers/athena
  • carlod/athena
  • mtian/athena
  • iramirez/athena
  • ygo/athena
  • bcole/athena
  • ecelebi/athena
  • oducu/athena
  • roishi/athena
  • hmoyanog/athena-4-mr
  • yuanchan/athena
  • mgrabois/athena
  • idinu/athena
  • dhirsch/athena
  • jjwilkin/athena
  • exochell/athena
  • skorn/athena
  • sbiryuko/athena
  • ggustavi/athena
  • diwillia/athena
  • cgarner/athena
  • changqia/athena
  • honguyen/athena
  • jwspence/athena
  • scalvet/athena
  • calpigia/athena
  • jizamora/athena
  • yangx/athena
  • atsiamis/athena
  • iene/athena
  • rysawada/athena
  • cmarcon/athena
  • kpetukho/athena
  • adimitri/athena
  • dhangal/athena
  • atlidbs/athena
  • tbisanz/athena
  • dopasqua/athena
  • athaler/athena
  • jcardena/athena
  • tqiu/athena
  • jspah/athena
  • jkretz/athena
  • tzenis/athena
  • ryamaguc/athena
  • hzuchen/athena
  • lveloce/athena
  • maliev/athena
  • fdelrio/athena
  • oshukrun/athena
  • mumohdso/athena2
  • mbiros/athena
  • iwang/athena
  • tsano/athena
  • sagara17/athena
  • okumura/athena
  • arennie/athena
  • mumohdso/athena
  • dmunozpe/athena
  • valentem/athena
  • rhayes/athena
  • caforio/athena
  • atate/athena
  • koshimiz/athena
  • evguillo/athena
  • dossantn/athena
  • zearnsha/athena
  • rjoshi/athena
  • bnachman/athena
  • suyounas/athena
  • yuzhan/athena
  • lunedic/athena
  • zhijie/athena
  • maly/athena
  • hlin/athena
  • mtost/athena
  • lvannoli/athena
  • crougier/athena
  • machitis/athena
  • mimarine/athena
  • dounwuch/athena
  • ndebiase/athena
  • thompson/athena
  • omezhens/athena
  • nkakati/athena
  • jonierma/athena
  • saclawso/athena
  • cprat/athena
  • echeu/athena
  • mischott/athena
  • martinpa/athena
  • hhanif/athena
  • sahinsoy/athena
  • jodamp/athena
  • csauer/athena
  • tiknight/athena
  • fedin/athena
  • knikolop/athena
  • inaryshk/athena
  • wendlanb/athena
  • xchu/athena
  • lkeszegh/athena
  • lbaltes/athena
  • adik/athena
  • jaoliver/athena
  • angrigor/athena
  • eschopf/athena
  • pbellos/athena
  • idrivask/athena
  • aikoulou/athena
  • ignesi/athena
  • echeremu/athena
  • ntamir/athena
  • sadykov/athena
  • tteixeir/athena
  • haweber/athena
  • sgurdasa/athena
  • pamachad/athena
  • pbhattar/athena
  • algilber/athena
  • pyanezca/athena
  • hiito/athena
  • tavandaa/athena
  • mdrozdov/athena
  • bsaifudd/athena
  • fdibello/athena
  • veellajo/athena
  • nheatley/athena
  • wolter/athena
  • fsili/athena
  • hsimpson/athena
  • dparedes/athena
  • mzhai/athena
  • minaenko/athena
  • mrenda/athena
  • rkusters/athena
  • chchau/athena
  • zhangr/athena
  • jburzyns/athena
  • zyan/athena
  • emmarsha/athena
  • phkenned/athena
  • edweik/athena
  • slai/athena
  • zmarshal/athena
  • awilhahn/athena
  • leevans/athena
  • javanden/athena
  • agaa/athena
  • kkrowpma/athena
  • llaatu/athena
  • stsigari/athena
  • zifeng/athena
  • zfeng/athena
  • srdas/athena
  • adonofri/athena
  • yuanda/athena
  • metsai/athena
  • drousso/athena
  • seggebre/athena
  • atropina/athena
  • atlaspmb/athena
  • cleonido/athena
  • ademaria/athena
  • arombola/athena
  • mnoury/athena
  • eyamashi/athena
  • kchoi/athena
  • dgillber/athena
  • saktas/athena
  • ijuarezr/athena
  • axiong/athena
  • amdesai/athena
  • zang/athena
  • nlopezca/athena
  • qibin/athena
  • matakagi/athena
  • berkeleylab/lowmutracking/athena
  • fbendebb/athena
  • bshresth/athena
  • acanbay/athena
  • tbuanes/athena
  • klassen/athena
  • cbuitrag/athena
  • jferrand/athena
  • egodden/athena
  • otheiner/athena-official
  • hpotti/athena
  • vtudorac/athena
  • hawatson/athena
  • chonghao/athena
  • mfarring/athena
  • parodi/athena
  • knakkali/athena
  • bballard/athena
  • lmontana/athena
  • dzengerj/athena
  • kbenkend/athena
  • buboehm/athena
  • dcieri/athena
  • cimcp/athena
  • weixi/athena
  • asansar/athena
  • zhuyi/athena
  • adaribay/athena
  • cantel/athena
  • iliadis/athena
  • duperrin/athena
  • frenner/athena
  • jburr/athena
  • czodrows/athena
  • dkoeck/athena
  • mfewell/athena
  • eegidiop/athena
  • blumen/athena
  • smitani/athena
  • alsala/athena
  • isotarri/athena
  • bstanisl/athena
  • miholzbo/athena
  • amincer/athena
  • gshatri/athena
  • clantz/athena
  • jmharris/athena
  • hpang/athena
  • yulei/athena
  • olangrek/athena
  • otheiner/athena
  • gripelli/athena
  • jgargan/athena
  • preselection-hackathon/athena
  • ewatton/athena
  • tizuo/athena
  • mleigh/athena
  • rushioda/athena
  • smeriano/athena
  • sfranche/athena
  • mfernoux/athena
  • jnitschk/athena
  • deniso/athena
  • bernardo/athena
  • chandler/athena
  • pebaron/athena-td
  • viruelas/athena
  • ksugizak/athena
  • skaur/athena
  • yusano/athena
  • anghosh/ef-anindya
  • davetisy/athena
  • wsherman/athena
  • jgombas/athena
  • hriani/athena
  • sroygara/athena
  • yochi/athena
  • vcepaiti/athena
  • rtagami/athena
  • apsallid/athena
  • agavrily/athena
  • pakontax/athena
  • yuanj/athena
  • chji/athena
  • islazyk/athena
  • dmclaugh/athena
  • mcgensvc/athena
  • dmahon/athena
  • almay/athena
  • qberthet/athena
  • mshapiro/athena
  • dkobylia/athena
  • abunka/athena
  • giagu/athena
  • cjmeyer/athena
  • yuwen/athena
  • ekay/athena
  • mbarel/athena
  • rdinardo/athena
  • osalin/athena
  • baitbenc/athena
  • dakiyama/athena
  • glamprin/athena
  • mlanzacb/athena
  • kazhang/athena
  • minlin/athena
  • szambito/athena
  • hwilkens/athena
  • yyap/athena
  • cgrefe/athena
  • wsfreund/athena
  • beringer/athena
  • schaffer/athena
  • tkharlam/athena
  • mspalla/athena
  • fcalosim/athena
  • pebaron/athena
  • smobius/athena
  • carquin/athena
  • mavogel/athena
  • spagan/athena
  • rateixei/athena
  • okiverny/athena
  • dportill/athena
  • enagy/athena
  • osunnebo/athena
  • desilva/athena
  • jelena/athena
  • chhayes/athena
  • jwalder/athena
  • lmijovic/athena
  • junpei/athena
  • menke/athena
  • tilebeam/athena
  • satom/athena
  • sanmay/athena
  • mduehrss/athena
  • jahreda/athena
  • mcarnesa/athena
  • jstark/athena
  • jedebevc/athena
  • kiabelin/athena
  • vtskhaya/athena
  • krbjoerk/athena
  • cyoung/athena
  • silu/athena
  • jtanaka/athena
  • delsart/athena
  • mtogawa/athena
  • yifany/athena
  • luxin/athena
  • faser/offline/athena
  • maslawin/athena
  • minghui/athena
  • haoran/athena
  • danning/athena
  • dcasperfaser/athena
  • beddall/athena
  • mmontell/athena
  • cfan/athena
  • kazheng/athena
  • vmartin/athena
  • beltran/athena-fork
  • almeidvi/athena
  • srettie/athena
  • kgupta/athena
  • sudha/athena
  • pajones/athena
  • ssinha/athena
  • lhenkelm/athena
  • amorenos/athena
  • anbaraja/athena
  • serodrig/athena
  • kkawade/athena
  • chiodini/athena
  • lgagnon/athena
  • dpanchal/athena
  • joana/athena
  • mtanasin/athena
  • vbuxbaum/athena
  • apalazzo/athena
  • kburka/athena
  • jshahini/athena
  • ehaines/athena
  • gonzalri/athena
  • lfeligio/athena
  • jaofferm/athena
  • desengup/athena
  • rmazini/athena
  • gottino/athena
  • gavrilen/athena
  • mdidenko/athena
  • sabidi/athena
  • qidong/athena
  • dwkim/athena
  • hazeng/athena
  • bkerridg/athena
  • cdimitri/athena
  • jingjing/athena
  • ktackman/athena
  • yche/athena
  • yoyeh/athena
  • ktopolni/athena
  • asciandr/athena
  • dabattul/athena
  • attrtcal/athena
  • mischott/athena-22
  • bochen/athena
  • sgaid/athena
  • thmaurin/athena
  • chjiang/athena
  • lbazzano/athena
  • rushioda/athena-3
  • pclark/athena
  • krdona/athena
  • nlad/athena
  • dtorresa/athena
  • meiqi/athena
  • kvidalgu/athena
  • lesplend/athena
  • aaikot/athena
  • aackerma/athena
  • yingjun/athena
  • xinfei/athena
  • hmoyanog/athena
  • jcurran/athena
  • maboelel/athena
  • aivina/athena
  • mschefer/athena
  • rmakhman/athena
  • xinhui/athena
  • bdixit/athena
  • kazheng/athena-physics-val-2023
  • zoduan/athena
  • shhan/athena
  • jlue/athena
  • zhiliang/athena
  • liuk/athena
  • sfrances/athena
  • ragrabar/athena
  • alsidley/athena
  • kyjones/topoetcone-removal
  • niabicht/athena
  • xingguo/athena
  • asehrawa/athena
  • yunagai/athena
  • keener/athena
  • shahzad/athena
  • mhoppesc/athena
  • lcalic/athena-backup
  • adohnalo/athena
  • greynold/athena
  • yinmiao/athena
  • bruckman/athena
  • drankin/athena
  • llewitt/athena
  • bschlag/athena
  • kazheng/athena-workingpoint
  • agentry/athena
  • nkang/athena
  • kbhide/athena
  • losanti/athena
  • asmaga/athena
  • berkeleylab/acts/athena
  • weitao/athena
  • hvanders/athena
  • ladamczy/test
  • tbeumker/athenatest
  • tbeumker/athena
  • losanti/athena-23
  • menu-hackathon/athena
  • jiturriz/athena
  • dmankad/athena-idle
  • kyjones/trigger-example
  • wsong/athena
  • vmaksimo/athena
  • dawerner/athena
  • toobauma/athena
  • edreyer/athena
  • seggebre/athena-fluencemap-modification
  • gtarna/athena
  • fisopkov/athena
  • lprimomo/athena
  • maparo/athena
  • smanzoni/athena
  • pgraveli/athena
  • SecVtx-Lancaster/Athena
  • adimri/athena
  • jcrosby/athena
  • shmukher/athena
  • aackerma/atlas-athena
  • wstanek/athena
  • lrambell/athena
  • tovsiann/athena
  • atlas-sa-uct/athena
  • skita/athena
  • ppotepa/athena
  • rsnyder/athena
  • eullmank/athena
  • zgao/athena
  • lroos/athena
  • mhemmett/athena
  • achakrav/athena
  • xmapekul/athena
  • evitale/athena
  • kgoto/athena
  • arej/athena
  • rashbypi/athena
  • ivyas/athena
  • thmaurin/athena-sim-flavour
  • lkretsch/athena
  • npond/athena
  • hluk/athena
  • aleksand/athena
  • epasqual/athena
  • mbiyabi/athena
  • jebohm/athena
  • cvittori/athena
  • dbiswas/athena
  • mkareem/athena
  • mihe/athena
  • aralves/athena
  • dkoeck/anniathenafork
  • tslee/athena
  • croland/athena
  • rgupta/athena
  • cgarvey/athena
  • pkumari/athena
  • asoflau/athena
  • mhaacke/athena
  • feickert/athena
  • ricunnin/athena
  • kesedlac/athena
  • ctosciri/athena-old
  • ctosciri/athena
  • agerwin/athena
  • gtolkach/athena
  • bdixit/masking-strip-modules
  • bscheuer/athena
  • jfeng2/athena
  • gfrattar/athena
  • gwilliam/athena
  • gaofeng/athena
  • ksudo/athena
  • svanstro/athena
  • rhiguchi/athena
  • vaustrup/athena
  • etoyoda/athena
  • tnakagaw/athena
  • hart/athena
  • tpaschoa/athena
  • kosuzuki/athena
  • rmizuhik/athena
  • kkanke/athena
  • whopkins/athena
  • dduda/athena
  • amakita/athena
  • anayaz/athena
  • ferusso/athena
  • maoki/athena
  • aagaard/athena
  • evalient/athena
  • miyamada/athena
  • shudong/athena
  • smweber/athena
  • rishikaw/athena
  • smweber/athena-run-3
  • evalient/athena-dnn-calculator
  • zyan/athena-muon-calib
  • zyan/athena-muon-calib-stream
  • dellacqu/athena
  • sbellman/athena
  • glagafon/project-nimber-1
  • jsallen/athena
  • strom/athena
  • strom/athena-dms
  • aowang/athena
  • brosser/athena
  • macretar/athena
  • ooncel/athena
  • skadir/athena-sadaf
  • leguo/athena
  • glagafon/handi-project
  • tygeorge/athena
  • wuxi/athena
  • jhoya/athena
  • syan/athena-syan
  • osotosan/athena
  • hasun/athena
  • glagafon/handi-project-1
  • karakawa/athena
  • mnorfolk/athena
  • aborbely/athena
  • will/athena
  • axgallen/athena-qualification-task
  • schernau/athena
  • seinfant/athena
  • dmankad/athena-gen
  • mmaroun/ravina-fork
  • taogawa/athena
  • axgallen/athena
  • romar/athena
  • tmlinare/athena
  • dhagan/athena
  • ktariq/athena
  • agarabag/athena
  • vlysenko/athena
  • zuzak/athena
  • mahorstm/athena
  • ibamwidh/athena
  • tizhang/athena
  • ipolishc/athena
  • frfische/athena
  • atishelm/athena
  • jolamber/athena
  • jlue/athena-latest
  • ykhoulak/myathena
  • dntounis/athena
  • yil/athena
  • chuanye/athena
  • kifarman/athena
  • xilin/athena
  • huayu/athena
  • nkua-atlas/athena
  • tayoshid/athena
  • lderamo/athena
  • steinber/athena-main
  • movincen/athena
  • nischmit/athena
  • dtruncal/athena
  • kazheng/athena-acts
  • dongyi/athena
  • tdingley/athena
  • malvesca/athena
  • mnowak/athena
  • glagafon/dq-optimize
  • openc/athena
  • lcalic/athena
  • hasegawa/athena
  • ladamczy/athena
  • mhufnage/athena
  • ekajomov/athena-fork-fix
  • lsultana/obsolete_athena
  • kfung/athena
  • lsultana/athena
  • anfortma/athena
  • yonoda/athena
  • rqian/athena
  • alveltma/athena
  • alpleban/athena
  • mmaheshw/athena
  • jdavidso/athena
  • edcritel/athena
  • pebaron/athena-leprem
  • anhodges/athena
  • bglik/athena
  • anstein/athena
  • gbird/athena
  • midandre/athena
  • mfurukaw/athena
  • mmlynars/athena-v-2
  • sokkerma/athena
  • kyjones/athena
  • mveen/athena
  • jmcgowan/athena
  • mvivasal/athena
  • asbrooks/athena
  • fcurcio/athena
  • tburatov/athena
  • lboccard/athena
  • joroemer/athena
  • ctaybi/athena
  • dmankad/athena
  • ivyoung/athena
  • drasslof/athena
  • tayoshid/athena-test
  • jodafons/athena
  • tmclachl/athena
  • sanchezj/athena-2022
  • anburger/athena
  • jiddon/athena
  • sdahbi/athena
  • sdemiran/athena
  • fwinkel/athena
  • sidoti/athena
  • izahir/athena
  • apfleger/athena
  • goblirsc/athena
  • jwkraus/athena
  • sanchezj/athena
  • rvinasco/athena
  • mmoors/athena
  • esimpson/athena
  • rhaberle/athena
  • obut/athena
  • klleras/athena
  • jhowarth/athena
  • jecouthu/athena
  • dta/athena_old
  • mungo/athena
  • janders/athena
  • jchapman/athena
  • avallier/athena
  • fmontere/athena
  • dtrischu/athena
  • fhenry/athena
  • sfuenzal/athena
  • misantan/athena
  • zalegria/athena
  • zhaotong/athena
  • shaoguan/athena
  • gdigrego/athena
  • amelo/athena
  • awharton/Athena
  • acordeir/athena-ed
  • nbruscin/athena
  • peiyan/athena
  • caiy/athena
  • mkholoda/athena
  • fkirfel/athena
  • pdougan/athena
  • bcervato/athena
  • kchu/athena
  • gfacini/athena
  • backes/athena
  • tayoshid/athena-2024
  • esampson/athena-idart
  • shpeng/athena-2
  • fwinkl2/athena
  • nharriso/athena
  • gmascare/athena
  • yvolkotr/athena
  • djlewis/athena
  • pibutti/athena
  • gmercado/athena
  • rhowen/athena
  • esampson/athena-idart-2
  • costanzo/athena
  • esampson/athena-otp
  • yuematsu/athena
  • esampson/athena-june-otp
  • alpleban/athena-met
  • astefl/athena
  • bmoser/athena
  • yilin/athena
  • thitchin/athena
  • bdong/athena
  • ksahan/athena
  • msasada/athena
  • wcastigl/athena
  • zhanhang/athena
  • lbarrade/athena
  • agheata/athena
  • seth/athena
  • sosarkar/athena-again
  • txu/athena
  • robouque/athena
  • okolay/athena
  • damperia/athena-acts
  • nsurijr/athena
  • dbaronmo/athena
  • zhangbo/athena
  • mlyukova/athena
  • esampson/june-2-otp
  • wema/athena
  • boudreau/athena
  • martyniu/athena
  • eballabe/athena
  • acamplan/athena
  • bngair/met-significance-r-22
  • bhuth/athena
  • vsasse/athena
  • domatter/athena
  • bngair/me-tsig-athena
  • menadeem/athena
  • atymchys/athena
  • yanqiw/athena
  • linghua/athena
  • ksakura/athena
  • vkost/athena
  • rhicks/athena
  • skadir/athena
  • sgoswami/athena
  • juscerri/athena
  • biliu/athena
  • arelycg/athena
  • beltran/athena
  • mwessels/athena
  • sosarkar/athena
  • dreikher/athena
  • ddicroce/athena
  • emoon/athena
  • hshaddix/athena
  • lwinkler/athena
  • elham/athena
  • bdebjani/athena
  • fladias/athena
  • mads/athena
  • mhabedan/athena
  • haren/athena
  • nkrogh/athena
  • thart/athena
  • cleong/athena
  • sdiefenb/athena-onnx-tutorial
  • dwilson/athena
  • fivone/athena
  • scane/athena
  • dahumphr/athena
  • lsanfili/athena
  • echerepa/athena
  • baer/athena
  • lifoster/athena
  • alancast/athena
  • kenakamu/athena
  • eskorda/athena
  • dcamarer/athena
  • glagafon/aaaathena
  • haotianl/athena
  • salopez/athena
  • rshibata/athena
  • rvavrick/athena
  • lburke/athena
  • glagafon/glagafon-dq
  • pizhang/athena
  • htsoi/athena
  • glagafon/athena
  • ukhurshi/athena
  • delitez/athena
  • pachabri/athena
  • therwig/athena
  • lcorazzi/athena
  • ezaya/athena
  • casadop/athena
  • mwitkows/athena
  • jaburles/athena
  • mmantina/athena
  • hzhuang/athena
  • achamber/athena
  • lmonaco/athena
  • mamirono/athena
  • jkrupa/athena
  • gserenis/athena
  • semami/athena
  • rmole/athena
  • mfornasi/athena
  • fdattola/athena
  • belderto/athena
  • uepstein/athena
  • rpozzi/athena
  • jinglis/athena
  • ljerala/athena
  • lopezzot/athena
  • cmavungu/athena
  • abesir/athena
  • lechols/athena
  • jlittle/athena
  • htorre/athena
  • tneep/athena
  • robouque/athena-20241115
  • fsiegert/athena
  • wenjingw/athena
  • jajohnso/athena
  • wguerin/athena
  • rmole/athena-personal-fork
  • kfang/athena-fork-kyfang
  • lbrown/athena
  • amoreira/athena
  • epompapa/athena
  • prmitra/athena
  • kgrimm/athena-kgrimm
  • jackersc/athena
  • ashirazi/athena
  • wasu/athena
  • toheintz/athena
  • nihartma/athena
  • kdipetri/athena
  • aslobodk/athena
  • goetz/athena-acts
  • gfazzino/athena
  • muschmid/athena
  • yazhou/athena
  • wlai/athena
  • alarnold/athena
  • falves/athena
  • djuarezg/athena
  • mdacunha/athena
  • mborodin/athena
  • novotnyp/athena
  • rohasan/athena
  • asickles/athena
  • ibenaoum/athena
  • adsalvad/athena
  • christog/athena
  • alecrhys/athena
  • lvicenik/athena
  • zetao/athena
  • tflee/athena
  • llarson/athena
  • mfarzali/athena
  • kkazakov/athena
  • frcastig/athena
  • ehampshi/athena
  • tomoya/athena-low-pt-muon-rec
  • jusilva/athena
  • exochell/my-athena
  • pusharma/athena
  • gpinheir/athena
  • mojeda/athena
  • jecifuen/athena
  • hshaddix/athena-hshaddix
  • vchabala/athena
  • chhultqu/athena
  • jlieberm/athena
  • misavic/athena
  • jlai/athena
  • nsur/athena-lund
  • nshtokha/athena
  • camccrac/athena
  • yuxuanz/local-athena
  • yukari/athena
  • pmourafr/athena
  • sawyer/athena
  • akraus/athena
  • zhubacek/athena
  • mfilipig/athena
  • sizumiya/athena
  • mnegrini/athena
  • rkavak/athena
  • fdejean/athena
  • zrokavec/athena
  • yanqiw/athena-acts-for-run-3-silicon-tracking
  • ssuravar/athena
  • vpires/athena-vasco
  • gipoddar/athena
  • gsalvi/athena
  • beyeo/athena
  • mtancock/athena-2
  • hadavand/athena
  • ywng/athena
  • fballi/athena
  • sutuncay/athena
  • stlin/athena
  • ndiasper/athena
1578 results
Show changes
Commits on Source (3)
......@@ -70,8 +70,8 @@ enum EBC_EVCOLL : unsigned char {
* As a special case, a GenEvent number of 0 is interpreted as the first
* GenEvent in the collection.
*
* The particle within the GenEvent is represented by a barcode.
* A barcode of 0 implies a null link.
* The particle within the GenEvent is represented by a unique ID.
* A unique ID of 0 implies a null link.
*
* In order to dereference a link, we need to reference a particular
* event store. By default, the current store (as defined by
......@@ -90,6 +90,11 @@ public:
IS_POSITION = 1,
};
enum UniqueIDFlag {
IS_ID = 0,
IS_BARCODE = 1,
};
/**
* @brief Persistent representation of a link.
......@@ -98,18 +103,19 @@ public:
class ExtendedBarCode {
public:
/// All 1's. Used to represent an undefined index/position.
constexpr static index_type UNDEFINED = ~static_cast<index_type>(0);
constexpr static index_type UNDEFINED = ~static_cast<index_type>(0); // TODO Move to MagicNumbers.h?
constexpr static barcode_type UNDEFINEDBC = ~static_cast<barcode_type>(0); // TODO Move to MagicNumbers.h?
/**
* @brief Default constructor. Makes a null link (barcode 0).
* @brief Default constructor. Makes a null link (unique ID 0).
*/
ExtendedBarCode();
/**
* @brief Constructor.
* @param barcode Barcode of target particle.
* @param uid Unique ID of target particle.
* @param eventIndex Identifies the target GenEvent in a McEventCollection,
* as either the event number if @c isIndexEventPosition is IS_EVENTNUM,
* or the position in the container
......@@ -118,15 +124,16 @@ public:
* @param evtColl Identifies which McEventCollection to use.
* @param isIndexEventPosition: See @c eventIndex.
*/
ExtendedBarCode (barcode_type barcode,
ExtendedBarCode (barcode_type uid,
index_type eventIndex,
EBC_EVCOLL evtColl=EBC_MAINEVCOLL,
PositionFlag isIndexEventPosition = IS_EVENTNUM);
PositionFlag isIndexEventPosition = IS_EVENTNUM,
UniqueIDFlag isUniqueIDBarcode = IS_ID);
/**
* @brief Constructor.
* @param barcode Barcode of target particle.
* @param uid Unique ID of target particle.
* @param eventIndex Identifies the target GenEvent in a McEventCollection,
* as either the event number if @c isIndexEventPosition is IS_EVENTNUM,
* or the position in the container
......@@ -136,10 +143,11 @@ public:
* as a character ('a'..'d').
* @param isIndexEventPosition: See @c eventIndex.
*/
ExtendedBarCode (barcode_type barcode,
ExtendedBarCode (barcode_type uid,
index_type eventIndex,
char evtColl,
PositionFlag isIndexEventPosition = IS_EVENTNUM);
PositionFlag isIndexEventPosition = IS_EVENTNUM,
UniqueIDFlag isUniqueIDBarcode = IS_ID);
/**
......@@ -165,10 +173,21 @@ public:
ExtendedBarCode& operator= (ExtendedBarCode&& rhs) noexcept;
/**
* @brief Barcode of target variable (0 for a null link).
* @brief Unique ID of target variable (0 for a null link).
*/
barcode_type barcode() const;
barcode_type uid() const;
/**
* @brief Return the GenParticle id/barcode.
* @param id[out] GenParticle::id, or @c UNDEFINED.
* @param barcode[out] barcode (deprecated), or @c UNDEFINED.
*
* The GenParticle within the GenEvent is identified either by
* the GenParticle::id or the barcode.
* This method will return this by setting either @c id or @c barcode;
* the other one is set to @c UNDEFINED.
*/
void uniqueID(barcode_type& id, barcode_type& barcode) const;
/**
* @brief Return the event index/position.
......@@ -183,6 +202,12 @@ public:
void eventIndex (index_type& index, index_type& position) const;
/**
* @brief return true if neither barcode nor id are valid
*/
bool linkIsNull() const;
/**
* @brief Return which collection we're targeting, as an enum.
*/
......@@ -255,6 +280,22 @@ public:
const HepMcParticleLink& rhs);
/**
* @brief Compare the unique ID part of two links.
* @param lhs First link to compare.
* @param rhs Second link to compare.
* @returns -1, 0, or 1, depending on the result of the comparison.
*
* The unique ID part of the link can be represented as either
* a barcode or the id.
* If necessary, the links will be normalized so that they
* both refer to an id.
*/
static
int compareUniqueID (const HepMcParticleLink& lhs,
const HepMcParticleLink& rhs);
/**
* @brief Dump in textual format to a stream.
*/
......@@ -282,10 +323,27 @@ public:
void makeIndex (index_type index, index_type position) const;
/**
* @brief Change m_BC from barcode to ID.
* @param ID GenParticle::id value to set.
* @param barcode existing barcode value.
*
* If the link is currently referencing a GenParticle with @c barcode,
* update it so that it instead references the GenParticle
* with id value @c ID.
*
* This may be called concurrently, as long as all such concurrent
* calls have the same arguments.
*/
void makeID (barcode_type ID, barcode_type barcode) const;
private:
/// Flag marking that an index refers to an event position.
constexpr static index_type POSITION_MASK = UNDEFINED ^ (UNDEFINED>>1);
/// Flag marking that an unique ID refers to a barcode.
constexpr static barcode_type BARCODE_MASK = UNDEFINED ^ (UNDEFINED>>1);
/**
* @brief Initialize the event index part of the link.
......@@ -293,11 +351,20 @@ public:
* @param positionFlag If IS_POSITION, @c idx represents a position
* in the collection; otherwise, it represents an event number.
*/
void setIndex (index_type idx, PositionFlag isPosition);
void setIndex (index_type idx, PositionFlag positionFlag);
/**
* @brief Initialize the unique identifier part of the link.
* @param uid The id or barcode.
* @param barcodeFlag If IS_BARCODE, @c uid represents a GenParticle barcode (deprecated);
* otherwise, it represents a GenParticle::id().
*/
void setUniqueID (barcode_type uid, UniqueIDFlag barcodeFlag);
/// Barcode of the target particle. 0 means a null link.
barcode_type m_BC;
/// Unique ID of the target particle. 0 means a null link.
mutable std::atomic<barcode_type> m_BC;
/// Identifies the target GenEvent within the event collection.
/// If the high bit is set, then this (with the high bit clear)
......@@ -326,7 +393,7 @@ public:
/**
* @brief Constructor.
* @param barCode Barcode of the target particle. 0 means a null link.
* @param uid Unique ID of the target particle. 0 means a null link.
* @param eventIndex Identifies the target GenEvent in a McEventCollection,
* as either the event number if @c isIndexEventPosition is IS_EVENTNUM,
* or the position in the container
......@@ -336,16 +403,17 @@ public:
* @param positionFlag: See @c eventIndex.
* @param sg Optional specification of a specific store to reference.
*/
HepMcParticleLink (barcode_type barCode,
HepMcParticleLink (barcode_type uid,
uint32_t eventIndex = 0,
EBC_EVCOLL evColl = EBC_MAINEVCOLL,
PositionFlag positionFlag = IS_EVENTNUM,
UniqueIDFlag uniqueIDFlag = IS_ID,
IProxyDict* sg = SG::CurrentEventStore::store());
/**
* @brief Constructor.
* @param barCode Barcode of the target particle. 0 means a null link.
* @param uid Unique ID of the target particle. 0 means a null link.
* @param eventIndex Identifies the target GenEvent in a McEventCollection,
* as either the event number if @c isIndexEventPosition is IS_EVENTNUM,
* or the position in the container
......@@ -355,16 +423,17 @@ public:
* @param positionFlag: See @c eventIndex.
* @param ctx Context of the store to reference.
*/
HepMcParticleLink (barcode_type barCode,
HepMcParticleLink (barcode_type uid,
uint32_t eventIndex,
EBC_EVCOLL evColl,
PositionFlag positionFlag,
UniqueIDFlag uniqueIDFlag,
const EventContext& ctx);
/**
* @brief Constructor.
* @param barCode Barcode of the target particle. 0 means a null link.
* @param uid Unique ID of the target particle. 0 means a null link.
* @param eventIndex Identifies the target GenEvent in a McEventCollection,
* as either the event number if @c isIndexEventPosition is IS_EVENTNUM,
* or the position in the container
......@@ -374,10 +443,11 @@ public:
* @param positionFlag: See @c eventIndex.
* @param sg Optional specification of a specific store to reference.
*/
HepMcParticleLink (barcode_type barCode,
HepMcParticleLink (barcode_type uid,
uint32_t eventIndex,
const std::string& evCollName,
PositionFlag positionFlag = IS_EVENTNUM,
UniqueIDFlag uniqueIDFlag = IS_ID,
IProxyDict* sg = SG::CurrentEventStore::store());
......@@ -547,6 +617,12 @@ public:
int barcode() const;
/**
* @brief Return the id of the target particle. 0 for a null link.
*/
int id() const;
/**
* @brief Return the event number of the referenced GenEvent.
* 0 means the first GenEvent in the collection.
......
......@@ -24,7 +24,7 @@ HepMcParticleLink::ExtendedBarCode::ExtendedBarCode()
/**
* @brief Constructor.
* @param barcode Barcode of target particle.
* @param uid Unique ID of target particle.
* @param eventIndex Identifies the target GenEvent in a McEventCollection,
* as either the event number if @c isIndexEventPosition is IS_EVENTNUM,
* or the position in the container
......@@ -35,20 +35,21 @@ HepMcParticleLink::ExtendedBarCode::ExtendedBarCode()
*/
inline
HepMcParticleLink::ExtendedBarCode::ExtendedBarCode
(barcode_type barcode,
(barcode_type uid,
index_type eventIndex,
EBC_EVCOLL evtColl /*=EBC_MAINEVCOLL*/,
PositionFlag isIndexEventPosition /*=IS_EVENTNUM*/)
: m_BC(barcode),
m_evtColl (evtColl)
PositionFlag isIndexEventPosition /*=IS_EVENTNUM*/,
UniqueIDFlag isUniqueIDBarcode /*= IS_ID*/)
: m_evtColl (evtColl)
{
setIndex (eventIndex, isIndexEventPosition);
setUniqueID (uid, isUniqueIDBarcode);
}
/**
* @brief Constructor.
* @param barcode Barcode of target particle.
* @param uid Unique ID of target particle.
* @param eventIndex Identifies the target GenEvent in a McEventCollection,
* as either the event number if @c isIndexEventPosition is IS_EVENTNUM,
* or the position in the container
......@@ -60,14 +61,16 @@ HepMcParticleLink::ExtendedBarCode::ExtendedBarCode
*/
inline
HepMcParticleLink::ExtendedBarCode::ExtendedBarCode
(barcode_type barcode,
(barcode_type uid,
index_type eventIndex,
char evtColl,
PositionFlag isIndexEventPosition /*=IS_EVENTNUM*/)
: ExtendedBarCode (barcode,
PositionFlag isIndexEventPosition /*=IS_EVENTNUM*/,
UniqueIDFlag isUniqueIDBarcode /*= IS_ID*/)
: ExtendedBarCode (uid,
eventIndex,
eventCollectionFromChar (evtColl),
isIndexEventPosition)
isIndexEventPosition,
isUniqueIDBarcode)
{
}
......@@ -77,7 +80,7 @@ HepMcParticleLink::ExtendedBarCode::ExtendedBarCode
*/
inline
HepMcParticleLink::ExtendedBarCode::ExtendedBarCode (const ExtendedBarCode& rhs)
: m_BC (rhs.m_BC),
: m_BC (static_cast<barcode_type> (rhs.m_BC)),
m_evtIndex (static_cast<index_type> (rhs.m_evtIndex)),
m_evtColl (rhs.m_evtColl)
{
......@@ -89,7 +92,7 @@ HepMcParticleLink::ExtendedBarCode::ExtendedBarCode (const ExtendedBarCode& rhs)
*/
inline
HepMcParticleLink::ExtendedBarCode::ExtendedBarCode (ExtendedBarCode&& rhs) noexcept
: m_BC (std::exchange(rhs.m_BC,0)),
: m_BC (rhs.m_BC.load()), // no move constructor for atomics
m_evtIndex (rhs.m_evtIndex.load()), // no move constructor for atomics
m_evtColl (std::exchange(rhs.m_evtColl,EBC_MAINEVCOLL))
{
......@@ -103,7 +106,7 @@ HepMcParticleLink::ExtendedBarCode&
HepMcParticleLink::ExtendedBarCode::operator= (const ExtendedBarCode& rhs)
{
if (this != &rhs) {
m_BC = rhs.m_BC;
m_BC = static_cast<barcode_type> (rhs.m_BC);
m_evtIndex = static_cast<index_type> (rhs.m_evtIndex);
m_evtColl=rhs.m_evtColl;
}
......@@ -118,19 +121,20 @@ HepMcParticleLink::ExtendedBarCode&
HepMcParticleLink::ExtendedBarCode::operator= (ExtendedBarCode&& rhs) noexcept
{
if (this != &rhs) {
m_BC = std::exchange(rhs.m_BC, 0);
m_BC = static_cast<barcode_type> (rhs.m_BC.load());
m_evtIndex = static_cast<index_type>(rhs.m_evtIndex.load());
m_evtColl = std::exchange(rhs.m_evtColl, EBC_MAINEVCOLL);
}
return *this;
}
/**
* @brief Barcode of target variable (0 for a null link).
* @brief Unique ID of target variable (0 for a null link).
*/
inline
HepMcParticleLink::barcode_type
HepMcParticleLink::ExtendedBarCode::barcode() const
HepMcParticleLink::ExtendedBarCode::uid() const
{
return m_BC;
}
......@@ -162,6 +166,32 @@ void HepMcParticleLink::ExtendedBarCode::eventIndex (index_type& index,
}
/**
* @brief Return the GenParticle id/barcode.
* @param id[out] GenParticle::id, or @c UNDEFINEDBC.
* @param barcode[out] barcode (deprecated), or @c UNDEFINEDBC.
*
* The GenParticle within the GenEvent is identified either by
* the GenParticle::id or the barcode.
* This method will return this by setting either @c id or @c barcode;
* the other one is set to @c UNDEFINEDBC.
*/
inline
void HepMcParticleLink::ExtendedBarCode::uniqueID (barcode_type& id,
barcode_type& barcode) const
{
barcode_type uid = m_BC;
if (uid & BARCODE_MASK) {
id = UNDEFINEDBC;
barcode = uid & ~BARCODE_MASK;
}
else {
id = uid;
barcode = UNDEFINEDBC;
}
}
/**
* @brief Return which collection we're targeting, as an enum.
*/
......@@ -279,6 +309,76 @@ HepMcParticleLink::ExtendedBarCode::compareIndex (const HepMcParticleLink& lhs,
}
/**
* @brief Compare the unique ID part of two links.
* @param lhs First link to compare.
* @param rhs Second link to compare.
* @returns -1, 0, or 1, depending on the result of the comparison.
*
* The unique ID part of the link can be represented as either
* a barcode or the id.
* If necessary, the links will be normalized so that they
* both refer to an id.
*/
inline
int
HepMcParticleLink::ExtendedBarCode::compareUniqueID (const HepMcParticleLink& lhs,
const HepMcParticleLink& rhs)
{
// Get the stored indices. The high bit will be set of they
// represent a position. Do a quick test for equality.
barcode_type uid1 = lhs.m_extBarcode.m_BC;
barcode_type uid2 = rhs.m_extBarcode.m_BC;
if (uid1 == uid2) return 0;
// Normalize the values so that they both refer to event number;
// this happens as a side-effect of calling cptr().
if (uid1 & BARCODE_MASK) {
lhs.cptr();
uid1 = lhs.m_extBarcode.m_BC;
}
if (uid2 & BARCODE_MASK) {
rhs.cptr();
uid2 = rhs.m_extBarcode.m_BC;
}
// Compare.
if (uid1 == uid2) {
return 0;
}
else if (uid1 < uid2) {
return -1;
}
else {
return 1;
}
}
/**
* @brief Change m_BC from barcode to ID.
* @param ID GenParticle::id value to set.
* @param barcode existing barcode value.
*
* If the link is currently referencing a GenParticle with @c barcode,
* update it so that it instead references the GenParticle
* with id value @c ID.
*
* This may be called concurrently, as long as all such concurrent
* calls have the same arguments.
*/
inline
void HepMcParticleLink::ExtendedBarCode::makeID (barcode_type ID,
barcode_type barcode) const
{
assert ((ID & BARCODE_MASK) == 0);
barcode_type old = barcode | BARCODE_MASK;
m_BC.compare_exchange_strong (old, ID);
assert (old == (barcode|BARCODE_MASK) || old == ID);
}
/**
* @brief Change index from position to number.
* @param index Event number to set.
......@@ -302,6 +402,25 @@ void HepMcParticleLink::ExtendedBarCode::makeIndex (index_type index,
}
/**
* @brief Initialize the unique identifier part of the link.
* @param uid The id or barcode.
* @param barcodeFlag If IS_BARCODE, @c uid represents a GenParticle barcode (deprecated);
* otherwise, it represents a GenParticle::id().
*/
inline
void
HepMcParticleLink::ExtendedBarCode::setUniqueID (barcode_type uid,
UniqueIDFlag barcodeFlag)
{
assert ((uid & BARCODE_MASK) == 0);
if (barcodeFlag == IS_BARCODE) {
uid |= BARCODE_MASK;
}
m_BC = uid;
}
/**
* @brief Initialize the event index part of the link.
* @param idx The index or position.
......@@ -320,6 +439,16 @@ HepMcParticleLink::ExtendedBarCode::setIndex (index_type idx,
m_evtIndex = idx;
}
inline bool HepMcParticleLink::ExtendedBarCode::linkIsNull() const
{
barcode_type particle_id, particle_barcode;
uniqueID (particle_id, particle_barcode);
return (
(particle_id == 0 && particle_barcode == ExtendedBarCode::UNDEFINEDBC) ||
(particle_id == ExtendedBarCode::UNDEFINEDBC && particle_barcode == 0)
);
}
//**************************************************************************
// HepMcParticleLink
......@@ -350,7 +479,7 @@ HepMcParticleLink::HepMcParticleLink (const EventContext& ctx)
/**
* @brief Constructor.
* @param barCode Barcode of the target particle. 0 means a null link.
* @param uid Unique ID of the target particle. 0 means a null link.
* @param eventIndex Identifies the target GenEvent in a McEventCollection,
* as either the event number if @c isIndexEventPosition is IS_EVENTNUM,
* or the position in the container
......@@ -361,20 +490,21 @@ HepMcParticleLink::HepMcParticleLink (const EventContext& ctx)
* @param sg Optional specification of a specific store to reference.
*/
inline
HepMcParticleLink::HepMcParticleLink (barcode_type barCode,
HepMcParticleLink::HepMcParticleLink (barcode_type uid,
uint32_t eventIndex /*= 0*/,
EBC_EVCOLL evColl /*= EBC_MAINEVCOLL*/,
PositionFlag positionFlag /*= IS_EVENTNUM*/,
UniqueIDFlag uniqueIDFlag /*=IS_ID*/,
IProxyDict* sg /*= SG::CurrentEventStore::store()*/)
: m_store (sg),
m_extBarcode (barCode, eventIndex, evColl, positionFlag)
m_extBarcode (uid, eventIndex, evColl, positionFlag, uniqueIDFlag)
{
}
/**
* @brief Constructor.
* @param barCode Barcode of the target particle. 0 means a null link.
* @param uid Unique ID of the target particle. 0 means a null link.
* @param eventIndex Identifies the target GenEvent in a McEventCollection,
* as either the event number if @c isIndexEventPosition is IS_EVENTNUM,
* or the position in the container
......@@ -385,21 +515,22 @@ HepMcParticleLink::HepMcParticleLink (barcode_type barCode,
* @param sg Optional specification of a specific store to reference.
*/
inline
HepMcParticleLink::HepMcParticleLink (barcode_type barCode,
HepMcParticleLink::HepMcParticleLink (barcode_type uid,
uint32_t eventIndex /*= 0*/,
const std::string& evCollName,
PositionFlag positionFlag /*= IS_EVENTNUM*/,
UniqueIDFlag uniqueIDFlag /*=IS_ID*/,
IProxyDict* sg /*= SG::CurrentEventStore::store()*/)
: HepMcParticleLink (barCode, eventIndex,
: HepMcParticleLink (uid, eventIndex,
find_enumFromKey (evCollName),
positionFlag, sg)
positionFlag, uniqueIDFlag, sg)
{
}
/**
* @brief Constructor.
* @param barCode Barcode of the target particle. 0 means a null link.
* @param uid Unique ID of the target particle. 0 means a null link.
* @param eventIndex Identifies the target GenEvent in a McEventCollection,
* as either the event number if @c isIndexEventPosition is IS_EVENTNUM,
* or the position in the container
......@@ -410,12 +541,14 @@ HepMcParticleLink::HepMcParticleLink (barcode_type barCode,
* @param ctx Context of the store to reference.
*/
inline
HepMcParticleLink::HepMcParticleLink (barcode_type barCode,
HepMcParticleLink::HepMcParticleLink (barcode_type uid,
uint32_t eventIndex,
EBC_EVCOLL evColl,
PositionFlag positionFlag,
UniqueIDFlag uniqueIDFlag,
const EventContext& ctx)
: HepMcParticleLink (barCode, eventIndex, evColl, positionFlag,
: HepMcParticleLink (uid, eventIndex, evColl,
positionFlag, uniqueIDFlag,
Atlas::getExtendedEventContext(ctx).proxy())
{
}
......@@ -535,8 +668,8 @@ HepMcParticleLink::operator bool() const
inline
bool HepMcParticleLink::operator== (const HepMcParticleLink& rhs) const
{
return (m_extBarcode.barcode()==rhs.m_extBarcode.barcode() &&
m_extBarcode.getEventCollection()==rhs.m_extBarcode.getEventCollection() &&
return (m_extBarcode.getEventCollection()==rhs.m_extBarcode.getEventCollection() &&
ExtendedBarCode::compareUniqueID(*this, rhs) == 0 &&
ExtendedBarCode::compareIndex (*this, rhs) == 0);
}
......@@ -562,24 +695,13 @@ bool HepMcParticleLink::operator< (const HepMcParticleLink& rhs) const
int cmpIndex = ExtendedBarCode::compareIndex (*this, rhs);
if (cmpIndex < 0) return true;
if (cmpIndex == 0) {
return m_extBarcode.barcode() < rhs.m_extBarcode.barcode();
return ExtendedBarCode::compareUniqueID(*this, rhs);
}
}
return false;
}
/**
* @brief Return the barcode of the target particle. 0 for a null link.
* FIXME: return type.
*/
inline
int HepMcParticleLink::barcode() const
{
return int(m_extBarcode.barcode());
}
/**
* @brief Return which collection we're targeting, as an enum.
*/
......@@ -606,7 +728,7 @@ char HepMcParticleLink::getEventCollectionAsChar() const
inline
HepMcParticleLink::barcode_type HepMcParticleLink::compress() const
{
return ( ((m_extBarcode.barcode()&0xFFFF) << 16) |
return ( ((m_extBarcode.uid()&0xFFFF) << 16) |
eventIndex() );
}
......
......@@ -95,16 +95,24 @@ HepMcParticleLink::ExtendedBarCode::eventCollectionFromChar (char evtColl)
void HepMcParticleLink::ExtendedBarCode::print (std::ostream& os) const
{
os << "Event index " ;
index_type index, position;
eventIndex (index, position);
index_type event_number, position;
eventIndex (event_number, position);
if (position != UNDEFINED) {
os << position << " (position in collection) ";
}
else {
os << index;
os << event_number << " (event number) ";
}
os << ", Barcode " << m_BC
<< ", McEventCollection "
os << ", Unique ID " ;
barcode_type particle_id, particle_barcode;
uniqueID (particle_id, particle_barcode);
if (particle_barcode != UNDEFINED) {
os << particle_barcode << " (barcode) ";
}
else {
os << particle_id << " (id) ";
}
os << ", McEventCollection "
<< HepMcParticleLink::getLastEventCollectionName(this->getEventCollection())
<< "(" << eventCollectionAsChar (m_evtColl) << ")";
}
......@@ -145,7 +153,7 @@ HepMcParticleLink::HepMcParticleLink (const HepMC::ConstGenParticlePtr& part,
IProxyDict* sg /*= SG::CurrentEventStore::store()*/)
: m_store (sg),
m_ptr (part),
m_extBarcode((nullptr != part) ? HepMC::barcode(part) : 0, eventIndex, evColl, positionFlag)
m_extBarcode((nullptr != part) ? part->id() : 0, eventIndex, evColl, positionFlag, IS_ID)
{
assert(part);
......@@ -172,76 +180,150 @@ HepMC::ConstGenParticlePtr HepMcParticleLink::cptr() const
if (!is_valid && !m_store) {
return nullptr;
}
if (is_valid) return *m_ptr.ptr();
if (0 == barcode()) {
#if 0
MsgStream log (Athena::getMessageSvc(), "HepMcParticleLink");
log << MSG::DEBUG
<< "cptr: no truth particle associated with this hit (barcode==0)."
<< " Probably this is a noise hit" << endmsg;
#endif
return nullptr;
}
IProxyDict* sg = m_store;
if (!sg) {
sg = SG::CurrentEventStore::store();
if (is_valid) {
return *m_ptr.ptr();
}
if (m_extBarcode.linkIsNull()) {
#if 0
MsgStream log (Athena::getMessageSvc(), "HepMcParticleLink");
log << MSG::DEBUG
<< "cptr: no truth particle associated with this hit (barcode==0)."
<< " Probably this is a noise hit" << endmsg;
#endif
return nullptr;
}
IProxyDict* sg = m_store;
if (!sg) {
sg = SG::CurrentEventStore::store();
}
if (const McEventCollection* pEvtColl = retrieveMcEventCollection(sg)) {
const HepMC::GenEvent *pEvt = nullptr;
index_type event_number, position;
m_extBarcode.eventIndex (event_number, position);
if (event_number == 0) {
pEvt = pEvtColl->at(0);
}
if (const McEventCollection* pEvtColl = retrieveMcEventCollection(sg)) {
const HepMC::GenEvent *pEvt = nullptr;
index_type index, position;
m_extBarcode.eventIndex (index, position);
if (index == 0) {
pEvt = pEvtColl->at(0);
}
else if (position != ExtendedBarCode::UNDEFINED) {
if (position < pEvtColl->size()) {
pEvt = pEvtColl->at (position);
}
else {
#if 0
MsgStream log (Athena::getMessageSvc(), "HepMcParticleLink");
log << MSG::WARNING << "cptr: position = " << position << ", McEventCollection size = "<< pEvtColl->size() << endmsg;
#endif
return nullptr;
}
else if (position != ExtendedBarCode::UNDEFINED) {
if (position < pEvtColl->size()) {
pEvt = pEvtColl->at (position);
}
else {
pEvt = pEvtColl->find (index);
#if 0
MsgStream log (Athena::getMessageSvc(), "HepMcParticleLink");
log << MSG::WARNING << "cptr: position = " << position << ", McEventCollection size = "<< pEvtColl->size() << endmsg;
#endif
return nullptr;
}
}
else {
pEvt = pEvtColl->find (event_number);
}
if (nullptr != pEvt) {
// Be sure to update m_extBarcode before m_ptrs;
// otherwise, the logic in eventIndex() won't work correctly.
if (position != ExtendedBarCode::UNDEFINED) {
m_extBarcode.makeIndex (pEvt->event_number(), position);
}
if (barcode() != 0) {
const HepMC::ConstGenParticlePtr p = HepMC::barcode_to_particle(pEvt,barcode());
if (nullptr != pEvt) {
// Be sure to update m_extBarcode before m_ptrs;
// otherwise, the logic in eventIndex() won't work correctly.
if (position != ExtendedBarCode::UNDEFINED) {
m_extBarcode.makeIndex (pEvt->event_number(), position);
}
if (event_number == 0) {
m_extBarcode.makeIndex (pEvt->event_number(), position);
}
if ( !m_extBarcode.linkIsNull() ) { // Check that either the ID or Barcode is non-zero or undefined
barcode_type particle_id, particle_barcode;
m_extBarcode.uniqueID (particle_id, particle_barcode);
if (particle_id == ExtendedBarCode::UNDEFINEDBC) {
// barcode to GenParticle
const HepMC::ConstGenParticlePtr p = HepMC::barcode_to_particle(pEvt,int(particle_barcode));
if (p) {
int genParticleID = p->id();
if (genParticleID > -1) {
particle_id = static_cast<barcode_type>(genParticleID);particle_id = p->id();
m_extBarcode.makeID (particle_id, particle_barcode);
}
m_ptr.set (p);
return p;
}
}
} else {
MsgStream log (Athena::getMessageSvc(), "HepMcParticleLink");
if (position != ExtendedBarCode::UNDEFINED) {
log << MSG::WARNING
<< "cptr: Mc Truth not stored for event at " << position
<< endmsg;
} else {
log << MSG::WARNING
<< "cptr: Mc Truth not stored for event with event number " << index
<< endmsg;
else {
// id to GenParticle
const auto &particles = pEvt->particles();
if (particle_id-1 < particles.size()) {
const HepMC::ConstGenParticlePtr p = particles[particle_id-1];
if (p) {
m_ptr.set (p);
return p;
}
}
}
}
} else {
MsgStream log (Athena::getMessageSvc(), "HepMcParticleLink");
log << MSG::WARNING << "cptr: McEventCollection not found" << endmsg;
if (position != ExtendedBarCode::UNDEFINED) {
log << MSG::WARNING
<< "cptr: Mc Truth not stored for event at " << position
<< endmsg;
} else {
log << MSG::WARNING
<< "cptr: Mc Truth not stored for event with event number " << event_number
<< endmsg;
}
}
} else {
MsgStream log (Athena::getMessageSvc(), "HepMcParticleLink");
log << MSG::WARNING << "cptr: McEventCollection not found" << endmsg;
}
return nullptr;
}
/**
* @brief Return the id of the referenced GenParticle.
*/
int HepMcParticleLink::id() const
{
// dummy link
if (!m_ptr.isValid() && !m_store) {
return 0; // TODO Decide if this is a good default - constant from MagicNumbers.h instead?
}
barcode_type particle_id, particle_barcode;
m_extBarcode.uniqueID (particle_id, particle_barcode);
if (particle_id == ExtendedBarCode::UNDEFINEDBC) {
(void) eventIndex(); // FIXME be careful to avoid an infinite loop of calls here
}
m_extBarcode.uniqueID (particle_id, particle_barcode);
if (particle_id != ExtendedBarCode::UNDEFINEDBC) {
return particle_id;
}
return 0;
}
/**
* @brief Return the barcode of the target particle. 0 for a null link.
* FIXME: return type.
*/
int HepMcParticleLink::barcode() const
{
barcode_type particle_id, particle_barcode;
m_extBarcode.uniqueID (particle_id, particle_barcode);
if (particle_barcode != ExtendedBarCode::UNDEFINEDBC) {
return int(particle_barcode);
}
// dummy link
if (!m_ptr.isValid() && !m_store) {
return 0; // TODO Decide if this is a good default - constant from MagicNumbers.h instead?
}
// we will need to look up the barcode from the GenParticle
(void) eventIndex(); // FIXME be careful to avoid an infinite loop of calls here
if (cptr()) {
return HepMC::barcode(cptr());
}
return 0;
//return int(m_extBarcode.barcode());
}
/**
* @brief Return the event number of the referenced GenEvent.
* 0 means the first GenEvent in the collection.
......@@ -282,13 +364,13 @@ HepMcParticleLink::index_type HepMcParticleLink::eventIndex() const
}
}
// Don't trip the assertion for a null link.
if (barcode() == 0 ) { // || barcode() == 0x7fffffff)
if (event_number != ExtendedBarCode::UNDEFINED) {
return event_number;
if ( m_extBarcode.linkIsNull() )
{
return (event_number != ExtendedBarCode::UNDEFINED) ? event_number : 0;
}
return 0;
}
// Attempt to find the GenParticle
cptr();
// Check if event_number is valid once more
m_extBarcode.eventIndex (event_number, event_position);
assert (event_number != ExtendedBarCode::UNDEFINED);
return event_number;
......@@ -302,17 +384,17 @@ HepMcParticleLink::index_type HepMcParticleLink::eventIndex() const
HepMcParticleLink::index_type
HepMcParticleLink::getEventPositionInCollection (const IProxyDict* sg) const
{
index_type index, position;
m_extBarcode.eventIndex (index, position);
index_type event_number, position;
m_extBarcode.eventIndex (event_number, position);
if (position != ExtendedBarCode::UNDEFINED) {
return position;
}
if (index == 0) {
if (event_number == 0) {
return 0;
}
EBC_EVCOLL evColl = getEventCollection();
std::vector<index_type> positions = getEventPositionInCollection(index, evColl, sg);
std::vector<index_type> positions = getEventPositionInCollection(event_number, evColl, sg);
return positions[0];
}
......@@ -322,14 +404,14 @@ HepMcParticleLink::getEventPositionInCollection (const IProxyDict* sg) const
* (first) GenEvent with a given event number
*/
std::vector<HepMcParticleLink::index_type>
HepMcParticleLink::getEventPositionInCollection (index_type index, EBC_EVCOLL evColl, const IProxyDict* sg)
HepMcParticleLink::getEventPositionInCollection (index_type event_number, EBC_EVCOLL evColl, const IProxyDict* sg)
{
std::vector<index_type> positions; positions.reserve(1);
const int intIndex = static_cast<int>(index);
const int int_event_number = static_cast<int>(event_number);
if (const McEventCollection* coll = retrieveMcEventCollection (evColl,sg)) {
size_t sz = coll->size();
for (size_t i = 0; i < sz; i++) {
if ((*coll)[i]->event_number() == intIndex) {
if ((*coll)[i]->event_number() == int_event_number) {
positions.push_back(i);
}
}
......
......@@ -137,7 +137,7 @@ namespace MCTesting {
HepMC::set_signal_process_vertex(evt, v3 );
// the event is complete, we now print it out to the screen
#ifdef GENP_DEBUG
evt->print();
std::cout << evt << std::endl;
#endif
// delete all particle data objects in the particle data table pdt
......@@ -275,41 +275,47 @@ namespace MCTesting {
std::copy_if( pEvent->particles().begin(), pEvent->particles().end(), std::back_inserter(theGammas), is_photon() );
#else
std::copy_if( pEvent->particles_begin(), pEvent->particles_end(),
back_inserter(theGammas), is_photon() );
back_inserter(theGammas), is_photon() );
#endif
ASSERT_EQ(1u, theGammas.size());
HepMC::ConstGenParticlePtr pGamma(theGammas.front());
#ifdef GENP_DEBUG
pGamma->print();
std::cout << "gamma barcode " << hex << HepMC::barcode(pGamma) << std::endl;
std::cout << pGamma << std::endl;
std::cout << "gamma barcode " << HepMC::barcode(pGamma) << std::endl;
#endif
HepMcParticleLink gammaLink1(pGamma);
HepMcParticleLink gammaLink2(HepMC::barcode(pGamma));
HepMcParticleLink gammaLink2(pGamma->id());
HepMcParticleLink gammaLink3(HepMC::barcode(pGamma), 0, EBC_MAINEVCOLL, HepMcParticleLink::IS_EVENTNUM, HepMcParticleLink::IS_BARCODE);
HepMcParticleLink gammaLink11(pGamma, 1);
HepMcParticleLink gammaLink12(HepMC::barcode(pGamma), 1);
HepMcParticleLink gammaLink12(pGamma->id(), 1);
HepMcParticleLink gammaLink13(HepMC::barcode(pGamma), 1, EBC_MAINEVCOLL, HepMcParticleLink::IS_EVENTNUM, HepMcParticleLink::IS_BARCODE);
std::stringstream out;
out << "Testing HepMcParticleLink streamer "
<< gammaLink1 << " --- " << gammaLink11 <<std::endl;
<< gammaLink1 << " --- " << gammaLink11 <<std::endl;
#ifdef HEPMC3
ASSERT_EQ(out.str(),"Testing HepMcParticleLink streamer Event index 0, Barcode 10005, McEventCollection CollectionNotSet(a) --- Event index 1, Barcode 10005, McEventCollection CollectionNotSet(a)\n");
ASSERT_EQ(out.str(),"Testing HepMcParticleLink streamer Event index 0 (event number) , Unique ID 5 (id) , McEventCollection CollectionNotSet(a) --- Event index 1 (event number) , Unique ID 5 (id) , McEventCollection CollectionNotSet(a)\n");
#else
ASSERT_EQ(out.str(),"Testing HepMcParticleLink streamer Event index 0, Barcode 10005, McEventCollection CollectionNotSet(a) --- Event index 1, Barcode 10005, McEventCollection CollectionNotSet(a)\n");
#endif
#ifdef GENP_DEBUG
std::cout << "link barcode " << hex << gammaLink1.barcode() << std::endl;
std::cout << "link index " << hex << gammaLink1.eventIndex() << std::endl;
std::cout << "link1 barcode " << hex << gammaLink11.barcode() << std::endl;
std::cout << "link1 index " << hex << gammaLink11.eventIndex() << std::endl;
std::cout << "link barcode " << gammaLink1.barcode() << std::endl;
std::cout << "link index " << gammaLink1.eventIndex() << std::endl;
std::cout << "link id " << gammaLink1.id() << std::endl;
std::cout << "link1 barcode " << gammaLink11.barcode() << std::endl;
std::cout << "link1 index " << gammaLink11.eventIndex() << std::endl;
std::cout << "link1 id " << gammaLink1.id() << std::endl;
#endif
ASSERT_EQ(*gammaLink1, *gammaLink2);
ASSERT_EQ(gammaLink1, gammaLink2);
ASSERT_EQ(gammaLink1.barcode(), HepMC::barcode(pGamma));
ASSERT_EQ(gammaLink1, gammaLink3);
ASSERT_EQ(*gammaLink11, *gammaLink12);
ASSERT_EQ(gammaLink11, gammaLink12);
ASSERT_EQ(gammaLink11, gammaLink13);
ASSERT_EQ(*gammaLink1, *gammaLink11);
ASSERT_NE( gammaLink1, gammaLink11 ); //FIXME weird! Can't check ptr...
......@@ -330,9 +336,9 @@ namespace MCTesting {
// still work.
HepMcParticleLink testLink1a(particle1,0);
ASSERT_TRUE( testLink1a.isValid() );
// A HepMcParticleLink built using the barcode and the position of
// A HepMcParticleLink built using the id and the position of
// the GenEvent in the McEventCollection should still work.
HepMcParticleLink testLink1b(HepMC::barcode(particle1),0);
HepMcParticleLink testLink1b(particle1->id(),0);
ASSERT_TRUE( testLink1b.isValid() );
}
......@@ -385,7 +391,7 @@ namespace MCTesting {
// A HepMcParticleLink built using the barcode and the position of
// the GenEvent.
HepMcParticleLink testLink1b(HepMC::barcode(particle1),dummyIndex1, EBC_MAINEVCOLL,
HepMcParticleLink::IS_POSITION);
HepMcParticleLink::IS_POSITION, HepMcParticleLink::IS_BARCODE);
ASSERT_TRUE( testLink1b.isValid() );
ASSERT_EQ( HepMC::barcode(particle1), testLink1b.barcode());
ASSERT_EQ( refEvtNum1, testLink1b.eventIndex());
......@@ -400,9 +406,9 @@ namespace MCTesting {
ASSERT_EQ( refEvtNum1, testLink1c.eventIndex());
ASSERT_EQ( dummyIndex1, testLink1c.getEventPositionInCollection(sg));
ASSERT_EQ(particle1,testLink1c.cptr());
// A HepMcParticleLink built using the barcode and the event_number of
// A HepMcParticleLink built using the id and the event_number of
// the GenEvent.
HepMcParticleLink testLink1d(HepMC::barcode(particle1),event_number1);
HepMcParticleLink testLink1d(particle1->id(),event_number1);
ASSERT_TRUE( testLink1d.isValid() );
ASSERT_EQ( HepMC::barcode(particle1), testLink1d.barcode());
ASSERT_NE( dummyIndex1, testLink1d.eventIndex());
......@@ -460,7 +466,7 @@ namespace MCTesting {
// A HepMcParticleLink built using the barcode and the position of
// the GenEvent.
HepMcParticleLink testLink2b(HepMC::barcode(particle2), dummyIndex2, EBC_MAINEVCOLL,
HepMcParticleLink::IS_POSITION);
HepMcParticleLink::IS_POSITION, HepMcParticleLink::IS_BARCODE);
ASSERT_TRUE( testLink2b.isValid() );
ASSERT_EQ( HepMC::barcode(particle2), testLink2b.barcode());
ASSERT_EQ( refEvtNum2, testLink2b.eventIndex());
......@@ -477,7 +483,7 @@ namespace MCTesting {
ASSERT_EQ(particle2,testLink2c.cptr());
// A HepMcParticleLink built using the barcode and the event_number of
// the GenEvent.
HepMcParticleLink testLink2d(HepMC::barcode(particle2),event_number2);
HepMcParticleLink testLink2d(particle2->id(),event_number2);
ASSERT_TRUE( testLink2d.isValid() );
ASSERT_EQ( HepMC::barcode(particle2), testLink2d.barcode());
ASSERT_NE( dummyIndex2, testLink2d.eventIndex());
......@@ -533,7 +539,7 @@ namespace MCTesting {
// A HepMcParticleLink built using the barcode and the position of
// the GenEvent.
HepMcParticleLink testLink3b(HepMC::barcode(particle3), dummyIndex3, EBC_MAINEVCOLL,
HepMcParticleLink::IS_POSITION);
HepMcParticleLink::IS_POSITION, HepMcParticleLink::IS_BARCODE);
ASSERT_TRUE( testLink3b.isValid() );
ASSERT_EQ( HepMC::barcode(particle3), testLink3b.barcode());
ASSERT_EQ( refEvtNum3, testLink3b.eventIndex());
......@@ -546,9 +552,9 @@ namespace MCTesting {
ASSERT_NE( dummyIndex3, testLink3c.eventIndex());
ASSERT_EQ( refEvtNum3, testLink3c.eventIndex());
ASSERT_EQ(particle3,testLink3c.cptr());
// A HepMcParticleLink built using the barcode and the event_number of
// A HepMcParticleLink built using the id and the event_number of
// the GenEvent. BROKEN
HepMcParticleLink testLink3d(HepMC::barcode(particle3),event_number3);
HepMcParticleLink testLink3d(particle3->id(),event_number3);
ASSERT_TRUE( testLink3d.isValid() );
ASSERT_EQ( HepMC::barcode(particle3), testLink3d.barcode());
ASSERT_NE( dummyIndex3, testLink3d.eventIndex());
......@@ -602,9 +608,9 @@ namespace MCTesting {
ASSERT_EQ( refEvtNum4, testLink4a.eventIndex());
ASSERT_EQ( dummyIndex4, testLink4a.getEventPositionInCollection(sg));
ASSERT_EQ( particle4, testLink4a.cptr());
// A HepMcParticleLink built using the barcode and the event_number of
// A HepMcParticleLink built using the id and the event_number of
// the GenEvent.
HepMcParticleLink testLink4b(HepMC::barcode(particle4),event_number4);
HepMcParticleLink testLink4b(particle4->id(),event_number4);
ASSERT_TRUE( testLink4b.isValid() );
ASSERT_EQ( HepMC::barcode(particle4), testLink4b.barcode());
ASSERT_EQ( refEvtNum4, testLink4b.eventIndex());
......@@ -623,7 +629,7 @@ namespace MCTesting {
// A HepMcParticleLink built using the barcode and the position of
// the GenEvent.
HepMcParticleLink testLink4d(HepMC::barcode(particle4), dummyIndex4, EBC_MAINEVCOLL,
HepMcParticleLink::IS_POSITION);
HepMcParticleLink::IS_POSITION, HepMcParticleLink::IS_BARCODE);
ASSERT_TRUE( testLink4d.isValid() );
ASSERT_EQ( HepMC::barcode(particle4), testLink4d.barcode());
ASSERT_EQ( refEvtNum4, testLink4d.eventIndex());
......@@ -762,7 +768,7 @@ namespace MCTesting {
// Link to a GenParticle which was not recorded to the
// McEventCollection, even though other parts of the same GenEvent
// were recorded.
HepMcParticleLink testLink6a(cutBarcode, refEvtNum1);
HepMcParticleLink testLink6a(cutBarcode, refEvtNum1, EBC_MAINEVCOLL, HepMcParticleLink::IS_EVENTNUM, HepMcParticleLink::IS_BARCODE);
ASSERT_FALSE( testLink6a.isValid() );
ASSERT_EQ( cutBarcode, testLink6a.barcode());
ASSERT_EQ( refEvtNum1, testLink6a.eventIndex());
......@@ -770,7 +776,7 @@ namespace MCTesting {
ASSERT_EQ( cutParticlePtr, testLink6a.cptr());
// Link to a GenEvent which was not recorded to the McEventCollection
HepMcParticleLink testLink6b(cutBarcode, refEvtNum5);
HepMcParticleLink testLink6b(cutBarcode, refEvtNum5, EBC_MAINEVCOLL, HepMcParticleLink::IS_EVENTNUM, HepMcParticleLink::IS_BARCODE);
ASSERT_FALSE( testLink6b.isValid() );
ASSERT_EQ( cutBarcode, testLink6b.barcode());
ASSERT_EQ( refEvtNum5, testLink6b.eventIndex());
......@@ -825,7 +831,7 @@ namespace MCTesting {
// A HepMcParticleLink built using the barcode and the position of
// the GenEvent.
HepMcParticleLink testLink1b(HepMC::barcode(particle1), dummyIndex1, EBC_MAINEVCOLL,
HepMcParticleLink::IS_POSITION);
HepMcParticleLink::IS_POSITION, HepMcParticleLink::IS_BARCODE);
ASSERT_TRUE( testLink1b.isValid() );
ASSERT_EQ( HepMC::barcode(particle1), testLink1b.barcode());
ASSERT_EQ( refEvtNum1, testLink1b.eventIndex());
......@@ -840,9 +846,9 @@ namespace MCTesting {
ASSERT_EQ( refEvtNum1, testLink1c.eventIndex());
ASSERT_EQ( dummyIndex1, testLink1c.getEventPositionInCollection(sg));
ASSERT_EQ(particle1,testLink1c.cptr());
// A HepMcParticleLink built using the barcode and the event_number of
// A HepMcParticleLink built using the id and the event_number of
// the GenEvent.
HepMcParticleLink testLink1d(HepMC::barcode(particle1),event_number1);
HepMcParticleLink testLink1d(particle1->id(),event_number1);
ASSERT_TRUE( testLink1d.isValid() );
ASSERT_EQ( HepMC::barcode(particle1), testLink1d.barcode());
ASSERT_NE( dummyIndex1, testLink1d.eventIndex());
......@@ -864,7 +870,7 @@ namespace MCTesting {
// A HepMcParticleLink built using the barcode and the position of
// the GenEvent.
HepMcParticleLink testLink2b(HepMC::barcode(particle2), dummyIndex2, EBC_MAINEVCOLL,
HepMcParticleLink::IS_POSITION);
HepMcParticleLink::IS_POSITION, HepMcParticleLink::IS_BARCODE);
ASSERT_TRUE( testLink2b.isValid() );
ASSERT_EQ( HepMC::barcode(particle2), testLink2b.barcode());
ASSERT_EQ( refEvtNum2, testLink2b.eventIndex());
......@@ -879,9 +885,9 @@ namespace MCTesting {
ASSERT_EQ( refEvtNum2, testLink2c.eventIndex());
ASSERT_EQ( dummyIndex2, testLink2c.getEventPositionInCollection(sg));
ASSERT_EQ(particle2,testLink2c.cptr());
// A HepMcParticleLink built using the barcode and the event_number of
// A HepMcParticleLink built using the id and the event_number of
// the GenEvent.
HepMcParticleLink testLink2d(HepMC::barcode(particle2),event_number2);
HepMcParticleLink testLink2d(particle2->id(),event_number2);
ASSERT_TRUE( testLink2d.isValid() );
ASSERT_EQ( HepMC::barcode(particle2), testLink2d.barcode());
ASSERT_NE( dummyIndex2, testLink2d.eventIndex());
......
......@@ -42,7 +42,8 @@ void HepMcParticleLinkCnv_p1::persToTrans( const HepMcParticleLink_p1* persObj,
( HepMcParticleLink::ExtendedBarCode( persObj->m_barcode,
persObj->m_mcEvtIndex,
evColl,
flag) );
flag,
HepMcParticleLink::IS_BARCODE) );
}
void HepMcParticleLinkCnv_p1::transToPers( const HepMcParticleLink* transObj,
......
......@@ -26,7 +26,8 @@ void HepMcParticleLinkCnv_p2::persToTrans( const HepMcParticleLink_p2* persObj,
( HepMcParticleLink::ExtendedBarCode( persObj->m_barcode,
persObj->m_mcEvtIndex,
HepMcParticleLink::ExtendedBarCode::eventCollectionFromChar(persObj->m_evtColl),
flag) );
flag,
HepMcParticleLink::IS_BARCODE) );
}
void HepMcParticleLinkCnv_p2::transToPers( const HepMcParticleLink* transObj,
......
......@@ -212,42 +212,48 @@ void test1()
createMcEventCollectionInStoreGate(genPartList);
assert ( genPartList.size() == 13 );
// HepMcParticleLinks pointing at GenParticles in the first GenEvent in the McEventCollection
// By event_number
// By barcode + event_number
HepMC::ConstGenParticlePtr particle1 = genPartList.at(0);
HepMcParticleLink trans1a(HepMC::barcode(particle1),particle1->parent_event()->event_number());
HepMcParticleLink trans1a(HepMC::barcode(particle1),particle1->parent_event()->event_number(),EBC_MAINEVCOLL,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE);
testit (trans1a);
// By position
HepMcParticleLink trans1b(HepMC::barcode(particle1),0,EBC_MAINEVCOLL,HepMcParticleLink::IS_POSITION);
// By id + event_number
HepMcParticleLink trans1b(particle1->id(),particle1->parent_event()->event_number());
testit (trans1b);
// By barcode + position
HepMcParticleLink trans1c(HepMC::barcode(particle1),0,EBC_MAINEVCOLL,HepMcParticleLink::IS_POSITION,HepMcParticleLink::IS_BARCODE);
testit (trans1c);
// By id + position
HepMcParticleLink trans1d(particle1->id(),0,EBC_MAINEVCOLL,HepMcParticleLink::IS_POSITION);
testit (trans1d);
// HepMcParticleLinks pointing at GenParticles in other GenEvents in the McEventCollection
HepMC::ConstGenParticlePtr particle2 = genPartList.at(7);
HepMcParticleLink trans2(HepMC::barcode(particle2),particle2->parent_event()->event_number());
HepMcParticleLink trans2(HepMC::barcode(particle2),particle2->parent_event()->event_number(),EBC_MAINEVCOLL,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE);
testit (trans2);
HepMC::ConstGenParticlePtr particle3 = genPartList.at(8);
HepMcParticleLink trans3(HepMC::barcode(particle3),particle3->parent_event()->event_number());
HepMcParticleLink trans3(HepMC::barcode(particle3),particle3->parent_event()->event_number(),EBC_MAINEVCOLL,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE);
testit (trans3);
// HepMcParticleLinks pointing at filtered pileup truth
HepMC::ConstGenParticlePtr particle4 = genPartList.at(12);
HepMcParticleLink trans4(HepMC::barcode(particle4),particle4->parent_event()->event_number());
HepMcParticleLink trans4(HepMC::barcode(particle4),particle4->parent_event()->event_number(),EBC_MAINEVCOLL,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE);
testit (trans4);
// HepMcParticleLinks pointing at delta-ray (barcode=0 - not recorded in McEventCollection) using event_number
int deltaRayBarcode(0);
HepMcParticleLink trans5a(deltaRayBarcode,particle1->parent_event()->event_number());
HepMcParticleLink trans5a(deltaRayBarcode,particle1->parent_event()->event_number(),EBC_MAINEVCOLL,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE);
testit (trans5a);
// HepMcParticleLinks pointing at delta-ray (barcode=0 - not recorded in McEventCollection) using position
HepMcParticleLink trans5b(deltaRayBarcode,0,EBC_MAINEVCOLL,HepMcParticleLink::IS_POSITION);
HepMcParticleLink trans5b(deltaRayBarcode,0,EBC_MAINEVCOLL,HepMcParticleLink::IS_POSITION,HepMcParticleLink::IS_BARCODE);
testit (trans5b);
// Link to a GenParticle which was not recorded to the
// McEventCollection, even though other parts of the same GenEvent
// were recorded.
const HepMcParticleLink::index_type refEvtNum1 = static_cast<HepMcParticleLink::index_type>(particle1->parent_event()->event_number());
const int cutBarcode(210001);
HepMcParticleLink trans6a(cutBarcode, refEvtNum1);
HepMcParticleLink trans6a(cutBarcode, refEvtNum1,EBC_MAINEVCOLL,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE);
testit (trans6a);
// Link to a GenEvent which was not recorded to the McEventCollection
const int event_number5(460);
const HepMcParticleLink::index_type refEvtNum5 = static_cast<HepMcParticleLink::index_type>(event_number5);
HepMcParticleLink trans6b(cutBarcode, refEvtNum5);
HepMcParticleLink trans6b(cutBarcode, refEvtNum5,EBC_MAINEVCOLL,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE);
testit (trans6b);
}
......
......@@ -211,42 +211,48 @@ void test1()
createMcEventCollectionInStoreGate(genPartList);
assert ( genPartList.size() == 13 );
// HepMcParticleLinks pointing at GenParticles in the first GenEvent in the McEventCollection
// By event_number
// By barcode + event_number
HepMC::ConstGenParticlePtr particle1 = genPartList.at(0);
HepMcParticleLink trans1a(HepMC::barcode(particle1),particle1->parent_event()->event_number());
HepMcParticleLink trans1a(HepMC::barcode(particle1),particle1->parent_event()->event_number(),EBC_MAINEVCOLL,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE);
testit (trans1a);
// By position
HepMcParticleLink trans1b(HepMC::barcode(particle1),0,EBC_MAINEVCOLL,HepMcParticleLink::IS_POSITION);
// By id + event_number
HepMcParticleLink trans1b(particle1->id(),particle1->parent_event()->event_number());
testit (trans1b);
// By barcode + position
HepMcParticleLink trans1c(HepMC::barcode(particle1),0,EBC_MAINEVCOLL,HepMcParticleLink::IS_POSITION,HepMcParticleLink::IS_BARCODE);
testit (trans1c);
// By id + position
HepMcParticleLink trans1d(particle1->id(),0,EBC_MAINEVCOLL,HepMcParticleLink::IS_POSITION);
testit (trans1d);
// HepMcParticleLinks pointing at GenParticles in other GenEvents in the McEventCollection
HepMC::ConstGenParticlePtr particle2 = genPartList.at(7);
HepMcParticleLink trans2(HepMC::barcode(particle2),particle2->parent_event()->event_number());
HepMcParticleLink trans2(HepMC::barcode(particle2),particle2->parent_event()->event_number(),EBC_MAINEVCOLL,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE);
testit (trans2);
HepMC::ConstGenParticlePtr particle3 = genPartList.at(8);
HepMcParticleLink trans3(HepMC::barcode(particle3),particle3->parent_event()->event_number());
HepMcParticleLink trans3(HepMC::barcode(particle3),particle3->parent_event()->event_number(),EBC_MAINEVCOLL,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE);
testit (trans3);
// HepMcParticleLinks pointing at filtered pileup truth
HepMC::ConstGenParticlePtr particle4 = genPartList.at(12);
HepMcParticleLink trans4(HepMC::barcode(particle4),particle4->parent_event()->event_number());
HepMcParticleLink trans4(HepMC::barcode(particle4),particle4->parent_event()->event_number(),EBC_MAINEVCOLL,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE);
testit (trans4);
// HepMcParticleLinks pointing at delta-ray (barcode=0 - not recorded in McEventCollection) using event number
int deltaRayBarcode(0);
HepMcParticleLink trans5a(deltaRayBarcode,particle1->parent_event()->event_number());
HepMcParticleLink trans5a(deltaRayBarcode,particle1->parent_event()->event_number(),EBC_MAINEVCOLL,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE);
testit (trans5a);
// HepMcParticleLinks pointing at delta-ray (barcode=0 - not recorded in McEventCollection) using hard-scatter event position
HepMcParticleLink trans5b(deltaRayBarcode,0,EBC_MAINEVCOLL,HepMcParticleLink::IS_POSITION);
HepMcParticleLink trans5b(deltaRayBarcode,0,EBC_MAINEVCOLL,HepMcParticleLink::IS_POSITION,HepMcParticleLink::IS_BARCODE);
testit (trans5b);
// Link to a GenParticle which was not recorded to the
// McEventCollection, even though other parts of the same GenEvent
// were recorded.
const HepMcParticleLink::index_type refEvtNum1 = static_cast<HepMcParticleLink::index_type>(particle1->parent_event()->event_number());
const int cutBarcode(210001);
HepMcParticleLink trans6a(cutBarcode, refEvtNum1);
HepMcParticleLink trans6a(cutBarcode, refEvtNum1,EBC_MAINEVCOLL,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE);
testit (trans6a);
// Link to a GenEvent which was not recorded to the McEventCollection
const int event_number5(460);
const HepMcParticleLink::index_type refEvtNum5 = static_cast<HepMcParticleLink::index_type>(event_number5);
HepMcParticleLink trans6b(cutBarcode, refEvtNum5);
HepMcParticleLink trans6b(cutBarcode, refEvtNum5,EBC_MAINEVCOLL,HepMcParticleLink::IS_EVENTNUM,HepMcParticleLink::IS_BARCODE);
testit (trans6b);
}
......