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
  • nguseyno/athena
  • nekumari/athena
  • avasyuko/athena
  • gtateno/athena
  • pavel/athena
  • aburke/athena
  • jiling/athena
  • jcordeir/athena
  • herrmant/athena
  • reznicek/athena
  • xuh/athena
  • averbyts/athena
  • lmcelhin/athena
  • ewallin/athena
  • shbansal/athena
  • tnommens/athena
  • gascott/athena
  • tvazquez/athena
  • ccaminch/athena
  • yuhui/athena
  • corentin/athena
  • lserkin/athena
  • berkeleylab/CharmPhysics/athena
  • cdiez/athena
  • miochoa/athena
  • cpollard/athena
  • hfox/athena
  • madurano/athena_gittutorial
  • msykora/athena
  • ckirfel/athena
  • calfayan/athena
  • jakoubek/athena
  • kjohns/athena
  • dguest/athena
  • atlas/athena
  • toshi/athena
  • aundrus/athena
  • akraszna/athena
  • fwinkl/athena
  • karolos/athena
  • wlampl/athena
  • jmontejo/athena
  • damazio/athena
  • rhauser/athena
  • okuprash/athena
  • smh/athena
  • phwindis/athena
  • turra/athena
  • tdado/athena
  • arnaez/athena
  • tadej/athena
  • abuckley/athena
  • baines/athena
  • jmasik/athena
  • mmuskinj/athena
  • pjacka/athena
  • tamartin/athena
  • psommer/athena
  • tbold/athena
  • mhodgkin/athena
  • bwynne/athena
  • nstyles/athena
  • tstreble/athena
  • mark/athena
  • gemmeren/athena
  • ATLAS-EGamma/athena
  • ssnyder/athena
  • wwalko/athena
  • yuxu/athena
  • emoyse/athena
  • toyamaza/athena
  • pgadow/athena
  • solodkov/athena
  • rbielski/athena
  • dcasper/athena
  • rbianchi/athena
  • mrybar/athena
  • graemes/athena
  • ychiu/athena
  • sshaw/athena
  • christos/athena
  • yoyamagu/athena
  • shlomit/athena
  • nikiforo/athena
  • hartj/athena
  • fpastore/athena
  • jcatmore/athena
  • harkusha/athena
  • ebuschma/athena
  • mvozak/athena
  • gunal/athena
  • leggett/athena
  • martindl/athena
  • ewelina/athena
  • almaloiz/athena
  • ligang/athena
  • tlari/athena
  • susinha/athena
  • sroe/athena
  • filthaut/athena
  • lfiorini/athena
  • cchan/athena
  • longjon/athena
  • jichen/athena
  • cshimmin/athena
  • mihuebne/athena
  • jsallen/athena-high-pt-ms-jets
  • dkar/athena
  • peter/athena
  • chays/athena
  • cvarni/athena
  • dtovey/athena
  • wleight/athena
  • sgeorge/athena
  • yafu/athena
  • nwarrack/athena
  • mgignac/athena
  • tkohno/athena
  • alfroch/athena
  • janovak/athena
  • mstamenk/athena
  • wiedenat/athena
  • okepka/athena
  • khoo/athena
  • maklein/athena
  • tmkrtchy/athena
  • cohm/athena
  • gingrich/athena
  • omajersk/athena
  • dbakshig/athena
  • schaarsc/athena
  • ponyisi/athena
  • fernando/athena
  • ravinab/athena
  • scheiric/athena
  • ekuwertz/athena
  • pleskot/athena
  • jobalz/athena
  • xai/athena
  • ebergeas/athena
  • merrenst/athena
  • ekasimi/athena
  • goetz/athena
  • afaulkne/athena
  • dpopov/athena
  • achishol/athena
  • astruebi/athena
  • mdanning/athena
  • alaurier/athena
  • egramsta/athena
  • mtoscani/athena
  • krumnack/athena
  • hye/athena
  • efilmer/athena
  • clseitz/athena
  • jpanduro/athena
  • bmindur/athena
  • ssarikay/athena
  • hyamauch/athena
  • ppostola/athena
  • shanisch/athena
  • aad/athena
  • ncalace/athena
  • gpanizzo/athena
  • tupham/athena
  • rcoelhol/athena
  • nkrengel/athena
  • stelzer/athena
  • rkopelia/athena
  • ssottoco/athena
  • cmcginn/athena
  • turnerm/athena
  • sutt/athena
  • tsulaia/athena
  • bernius/athena
  • vcairo/athena
  • ldc/athena
  • stsuno/athena
  • yunju/athena
  • jmacdona/athena
  • mbandier/athena
  • jdandoy/athena
  • mehlhase/athena
  • dzanzi/athena
  • kzoch/athena
  • jufische/athena
  • kwhalen/athena
  • nasbah/athena
  • bmorgan/athena
  • msaimper/athena
  • amete/athena
  • rcarney/athena
  • hhibi/athena
  • williams/athena
  • shhirose/athena
  • kkohler/athena
  • cheidegg/athena
  • cdeutsch/athena
  • heng/athena
  • coccaro/athena
  • ynoguchi/athena
  • loch/athena
  • campanel/athena
  • wbalunas/athena
  • nova/athena
  • hoide/athena
  • todorova/athena
  • xju/athena
  • sjiggins/athena
  • yuchou/athena
  • bgokturk/athena
  • hrussell/athena
  • aytul/athena
  • jbiswal/athena
  • lidiaz/athena
  • guerrero/athena
  • kegraham/athena
  • bouhova/athena
  • kpachal/athena
  • alwang/athena
  • dhayden/athena
  • mverissi/athena
  • mvanadia/athena
  • alopezso/athena
  • omeshkov/athena
  • soumya/athena
  • mvessell/athena
  • ssantpur/athena
  • ruyuan/athena
  • kenelson/athena
  • fmeloni/athena
  • upatel/athena
  • tvarol/athena
  • igrabows/athena
  • mhank/athena
  • dshope/athena
  • cowagner/athena
  • anperrev/athena
  • tursom/athena
  • eramakot/athena
  • dbogavac/athena
  • fsforza/athena
  • tnobe/athena
  • fgiuli/athena
  • derue/athena
  • angianni/athena
  • koffas/athena
  • ballbroo/athena
  • chinderk/athena
  • diehl/athena
  • falonso/athena
  • myexley/athena
  • tphamleh/athena
  • davidek/athena
  • ekajomov/athena-general
  • sarbiolv/athena
  • hansenph/athena
  • salvator/athena
  • masato/athena
  • mfujimot/athena
  • jhaley/athena
  • hirose/athena
  • jmendes/athena
  • stapiaar/athena
  • stavrop/athena
  • nwenke/athena
  • tpelzer/athena
  • ffabbri/athena
  • gia/athena
  • agbet/athena
  • hmildner/athena
  • cdelitzs/athena
  • dbabal/athena
  • kkrizka/athena
  • juesseiv/athena
  • dwallace/athena
  • temoskal/athena
  • eschanet/athena
  • ckitsaki/athena
  • asonay/athena
  • lferencz/athena
  • iaizenbe/athena
  • pmeiring/athena
  • czhou/athena
  • jteoh/athena
  • jiawei/athena
  • mromano/athena
  • liberato/athena
  • rustem/athena
  • sswatman/athena
  • jbeirer/athena
  • miqueits/athena
  • nielsenj/athena
  • elmsheus/athena
  • wachan/athena
  • ranovotn/athena
  • markowen/athena
  • asquith/athena
  • eparrish/athena
  • nicholas/athena
  • esoldato/athena
  • fuhe/athena
  • mhance/athena
  • dakoch/athena
  • asoukhar/athena
  • aranzazu/athena
  • ndegroot/athena
  • jkempste/athena
  • lihan/athena
  • tjunkerm/athena
  • aporeba/athena
  • ginaciog/athena
  • sschramm/athena
  • verducci/athena
  • martis/athena
  • mdelmast/athena
  • anmrodri/athena
  • mswiatlo/athena
  • ssaha/athena
  • pliu/athena
  • bcarlson/athena
  • gabarone/athena
  • scamarda/athena
  • fastcalosim_test/athena
  • lstocker/athena
  • guindon/athena
  • mxia/athena
  • rlongo/athena
  • conde/athena
  • mdonasci/athena
  • amoussa/athena
  • mmittal/athena
  • chelling/athena
  • ffollega/athena
  • gialas/athena
  • fcostanz/athena
  • shion/athena
  • hmaguire/athena
  • sschmitt/athena
  • cgutscho/athena
  • sberlend/athena
  • acts/athena
  • zsoumaim/athena
  • nifomin/athena
  • eriefel/athena
  • evarnes/athena
  • korona/athena
  • guescini/athena
  • dwilbern/athena
  • laforge/athena
  • haozturk/athena
  • akotsoke/athena
  • jkremer/athena
  • kkoeneke/athena
  • istin/athena
  • fizisist/athena
  • rpoggi/athena
  • acanesse/athena
  • fengyu/athena
  • susy-hackers/athena
  • cmerlass/athena
  • llorente/athena
  • rkarnam/athena
  • navarrjo/athena
  • ivivarel/athena
  • chenlian/athena
  • amulski/athena
  • ysmirnov/athena_old
  • pkramer/athena
  • bulekov/athena
  • vcavalie/athena
  • sanchevi/athena
  • sefernan/athena
  • bauerpa/athena
  • thsjurse/athena
  • smwang/athena
  • yanlin/athena
  • mmlynars/athena
  • iyeletsk/athena
  • wobisch/athena
  • restevam/athena
  • jgonski/athena
  • mmazza/athena
  • itrandaf/athena
  • almgadm/athena
  • jhinds/athena
  • csebasti/athena
  • tiyang/athena
  • mtchijov/athena
  • lapereir/athena
  • mwielers/athena
  • aleopold/athena
  • lmiller/athena
  • pekman/athena
  • lucam/athena
  • emmat/athena
  • kciesla/athena
  • rbalasub/athena
  • zuysal/athena
  • wmccorma/athena
  • somadutt/athena
  • kkreul/athena
  • salderwe/athena
  • masaito/athena
  • simmons/athena
  • jstupak/athena
  • jzeng/athena
  • ycoadou/athena
  • ilongari/athena
  • pinamont/athena
  • adye/athena
  • ssahin/athena
  • kbelobor/athena
  • aoneill/athena
  • dmaximov/athena
  • wtaylor/athena
  • gcallea/athena
  • cschiavi/athena
  • fbartels/athena
  • ljeanty/athena
  • kghorban/athena
  • jraine/athena
  • mcfayden/athena
  • scarra/athena
  • brottler/athena
  • kasai/athena
  • khanov/athena
  • ecarlson/athena
  • aelmouss/athena
  • abandyop/athena
  • rozeny/athena
  • joheinri/athena
  • nbelyaev/athena
  • gotero/athena
  • rebeca/athena
  • doglioni/athena
  • alaperto/athena
  • bhonan/athena
  • bigliett/athena
  • aohatl/athena
  • dpudzha/athena
  • amarzin/athena
  • rgarg/athena
  • paulama/athena
  • begalli/athena
  • pmoskvit/athena
  • mtesta/athena
  • yajun/athena
  • lbozianu/athena
  • mpokidov/athena
  • vcroft/athena
  • jajimene/athena
  • atlidali/athena
  • demelian/athena
  • torrence/athena
  • hacooke/athena
  • wprzygod/athena
  • barak/athena
  • roward/athena
  • sgalantz/athena
  • atsirigo/athena
  • tofitsch/athena
  • amoroso/athena
  • salnikov/athena
  • ozaplati/athena
  • elrossi/athena
  • csander/athena
  • pottgen/athena
  • mmiralle/athena
  • jsabater/athena
  • ruth/athena
  • jdevivi/athena
  • pbokan/athena
  • klin/athena
  • alory/athena
  • ymino/athena
  • apetukho/athena
  • xchen/athena
  • trinn/athena
  • xiaoning/athena
  • cappelt/athena
  • nelsonc/athena
  • ratkin/athena
  • nishu/athena
  • paramon/athena
  • juhofer/athena
  • exot-27/athena
  • bleban/athena
  • enarayan/athena
  • dpizzi/athena
  • qhu/athena
  • ztarem/athena
  • acassim/athena
  • mmarjano/athena
  • bburghgr/athena
  • sampson/athena
  • pagessin/athena
  • ychow/athena
  • mkrivos/athena
  • hessey/athena
  • nviauxma/athena
  • watsona/athena
  • wfawcett/athena
  • LichtenbergGroup/athena
  • ibordule/athena
  • perj/athena
  • jreich/athena
  • mleblanc/athena
  • othielma/athena
  • sridouan/athena
  • jdegens/athena
  • ztao/athena
  • alainb/athena
  • wgeorge/athena
  • hasada/athena
  • bachacou/athena
  • pmendesa/athena
  • yake/athena
  • kristin/athena
  • xiaohu/athena
  • angerami/athena
  • ludovica/athena
  • ssu/athena
  • yama/athena
  • jlsmith/athena
  • rnayak/athena
  • ktsuri/athena
  • mproffit/athena
  • pebaron/athena-weights
  • musafdar/athena
  • jezequel/athena
  • amendesj/athena
  • hschwart/athena
  • lhelary/athena
  • gproto/athena
  • asalzbur/athena
  • tiany/athena
  • csamoila/athena
  • malgren/athena
  • rerrabai/athena
  • mprincip/athena
  • spolacek/athena
  • aczirkos/athena
  • bmondal/athena
  • lbeemste/athena
  • kyamaguc/athena
  • grabanal/athena
  • asantra/athena
  • silvinha/athena
  • holau/athena
  • tboeckh/athena
  • jreidels/athena
  • jroloff/athena
  • mdhlamin/athena
  • slawlor/athena
  • emily/athena
  • bozek/athena
  • lkrauth/athena
  • carlod/athena
  • tdiasdov/athena
  • bbrueers/athena
  • idinu/athena
  • iramirez/athena
  • mtian/athena
  • mgrabois/athena
  • bcole/athena
  • dhirsch/athena
  • ecelebi/athena
  • oducu/athena
  • roishi/athena
  • ygo/athena
  • jjwilkin/athena
  • exochell/athena
  • hmoyanog/athena-4-mr
  • yuanchan/athena
  • skorn/athena
  • ggustavi/athena
  • diwillia/athena
  • sbiryuko/athena
  • cgarner/athena
  • scalvet/athena
  • changqia/athena
  • jizamora/athena
  • jwspence/athena
  • honguyen/athena
  • calpigia/athena
  • adimitri/athena
  • yangx/athena
  • atsiamis/athena
  • rysawada/athena
  • iene/athena
  • cmarcon/athena
  • kpetukho/athena
  • dhangal/athena
  • tbisanz/athena
  • atlidbs/athena
  • jspah/athena
  • athaler/athena
  • tqiu/athena
  • jkretz/athena
  • dopasqua/athena
  • maliev/athena
  • tzenis/athena
  • hzuchen/athena
  • jcardena/athena
  • ryamaguc/athena
  • lveloce/athena
  • fdelrio/athena
  • mbiros/athena
  • mumohdso/athena2
  • oshukrun/athena
  • sagara17/athena
  • tsano/athena
  • iwang/athena
  • arennie/athena
  • dmunozpe/athena
  • okumura/athena
  • valentem/athena
  • mumohdso/athena
  • koshimiz/athena
  • evguillo/athena
  • rhayes/athena
  • atate/athena
  • dossantn/athena
  • caforio/athena
  • zhijie/athena
  • zearnsha/athena
  • maly/athena
  • bnachman/athena
  • hlin/athena
  • suyounas/athena
  • mtost/athena
  • rjoshi/athena
  • yuzhan/athena
  • lunedic/athena
  • lvannoli/athena
  • machitis/athena
  • mimarine/athena
  • crougier/athena
  • omezhens/athena
  • ndebiase/athena
  • thompson/athena
  • jonierma/athena
  • dounwuch/athena
  • echeu/athena
  • nkakati/athena
  • saclawso/athena
  • cprat/athena
  • martinpa/athena
  • hhanif/athena
  • jodamp/athena
  • csauer/athena
  • mischott/athena
  • sahinsoy/athena
  • knikolop/athena
  • inaryshk/athena
  • tiknight/athena
  • wendlanb/athena
  • fedin/athena
  • adik/athena
  • xchu/athena
  • angrigor/athena
  • lkeszegh/athena
  • jaoliver/athena
  • echeremu/athena
  • lbaltes/athena
  • pbellos/athena
  • idrivask/athena
  • aikoulou/athena
  • ignesi/athena
  • eschopf/athena
  • haweber/athena
  • algilber/athena
  • ntamir/athena
  • sadykov/athena
  • sgurdasa/athena
  • pamachad/athena
  • pyanezca/athena
  • pbhattar/athena
  • hiito/athena
  • tteixeir/athena
  • bsaifudd/athena
  • mdrozdov/athena
  • tavandaa/athena
  • veellajo/athena
  • nheatley/athena
  • wolter/athena
  • hsimpson/athena
  • fsili/athena
  • fdibello/athena
  • minaenko/athena
  • dparedes/athena
  • mzhai/athena
  • chchau/athena
  • zyan/athena
  • mrenda/athena
  • emmarsha/athena
  • zhangr/athena
  • rkusters/athena
  • jburzyns/athena
  • phkenned/athena
  • slai/athena
  • edweik/athena
  • zmarshal/athena
  • awilhahn/athena
  • agaa/athena
  • zfeng/athena
  • javanden/athena
  • leevans/athena
  • llaatu/athena
  • srdas/athena
  • stsigari/athena
  • kkrowpma/athena
  • adonofri/athena
  • zifeng/athena
  • drousso/athena
  • atropina/athena
  • atlaspmb/athena
  • metsai/athena
  • yuanda/athena
  • seggebre/athena
  • cleonido/athena
  • mnoury/athena
  • ademaria/athena
  • arombola/athena
  • eyamashi/athena
  • ijuarezr/athena
  • kchoi/athena
  • dgillber/athena
  • zang/athena
  • saktas/athena
  • axiong/athena
  • matakagi/athena
  • amdesai/athena
  • fbendebb/athena
  • nlopezca/athena
  • qibin/athena
  • bshresth/athena
  • berkeleylab/lowmutracking/athena
  • acanbay/athena
  • klassen/athena
  • jferrand/athena
  • tbuanes/athena
  • egodden/athena
  • cbuitrag/athena
  • hawatson/athena
  • otheiner/athena-official
  • hpotti/athena
  • chonghao/athena
  • mfarring/athena
  • bballard/athena
  • dzengerj/athena
  • vtudorac/athena
  • parodi/athena
  • buboehm/athena
  • lmontana/athena
  • zhuyi/athena
  • knakkali/athena
  • weixi/athena
  • dcieri/athena
  • cimcp/athena
  • adaribay/athena
  • cantel/athena
  • kbenkend/athena
  • iliadis/athena
  • jburr/athena
  • duperrin/athena
  • asansar/athena
  • mfewell/athena
  • frenner/athena
  • dkoeck/athena
  • isotarri/athena
  • bstanisl/athena
  • eegidiop/athena
  • czodrows/athena
  • blumen/athena
  • yulei/athena
  • smitani/athena
  • alsala/athena
  • miholzbo/athena
  • olangrek/athena
  • amincer/athena
  • clantz/athena
  • gshatri/athena
  • tizuo/athena
  • jmharris/athena
  • gripelli/athena
  • otheiner/athena
  • mleigh/athena
  • hpang/athena
  • jgargan/athena
  • ewatton/athena
  • preselection-hackathon/athena
  • rushioda/athena
  • sfranche/athena
  • deniso/athena
  • bernardo/athena
  • smeriano/athena
  • mfernoux/athena
  • pebaron/athena-td
  • jnitschk/athena
  • chandler/athena
  • viruelas/athena
  • ksugizak/athena
  • yusano/athena
  • hriani/athena
  • anghosh/ef-anindya
  • davetisy/athena
  • skaur/athena
  • yochi/athena
  • jgombas/athena
  • vcepaiti/athena
  • wsherman/athena
  • rtagami/athena
  • pakontax/athena
  • apsallid/athena
  • sroygara/athena
  • yuanj/athena
  • agavrily/athena
  • almay/athena
  • abunka/athena
  • dmahon/athena
  • chji/athena
  • dmclaugh/athena
  • mcgensvc/athena
  • giagu/athena
  • mshapiro/athena
  • cjmeyer/athena
  • yuwen/athena
  • qberthet/athena
  • dkobylia/athena
  • islazyk/athena
  • ekay/athena
  • glamprin/athena
  • mbarel/athena
  • rdinardo/athena
  • baitbenc/athena
  • cgrefe/athena
  • dakiyama/athena
  • minlin/athena
  • osalin/athena
  • mlanzacb/athena
  • kazhang/athena
  • wsfreund/athena
  • szambito/athena
  • hwilkens/athena
  • pebaron/athena
  • enagy/athena
  • beringer/athena
  • yyap/athena
  • menke/athena
  • schaffer/athena
  • mduehrss/athena
  • mspalla/athena
  • fcalosim/athena
  • tkharlam/athena
  • rateixei/athena
  • mavogel/athena
  • smobius/athena
  • carquin/athena
  • dportill/athena
  • okiverny/athena
  • spagan/athena
  • chhayes/athena
  • jelena/athena
  • jwalder/athena
  • osunnebo/athena
  • lmijovic/athena
  • satom/athena
  • junpei/athena
  • tilebeam/athena
  • desilva/athena
  • sanmay/athena
  • jstark/athena
  • mcarnesa/athena
  • jahreda/athena
  • kiabelin/athena
  • delsart/athena
  • krbjoerk/athena
  • vtskhaya/athena
  • jedebevc/athena
  • cyoung/athena
  • silu/athena
  • haoran/athena
  • jtanaka/athena
  • mtogawa/athena
  • luxin/athena
  • yifany/athena
  • danning/athena
  • maslawin/athena
  • faser/offline/athena
  • beddall/athena
  • dcasperfaser/athena
  • minghui/athena
  • cfan/athena
  • srettie/athena
  • almeidvi/athena
  • kazheng/athena
  • vmartin/athena
  • mmontell/athena
  • sudha/athena
  • beltran/athena-fork
  • kgupta/athena
  • lgagnon/athena
  • lhenkelm/athena
  • pajones/athena
  • dpanchal/athena
  • ssinha/athena
  • anbaraja/athena
  • serodrig/athena
  • amorenos/athena
  • kkawade/athena
  • joana/athena
  • jshahini/athena
  • chiodini/athena
  • mtanasin/athena
  • lfeligio/athena
  • vbuxbaum/athena
  • apalazzo/athena
  • jaofferm/athena
  • gonzalri/athena
  • kburka/athena
  • ehaines/athena
  • rmazini/athena
  • desengup/athena
  • gottino/athena
  • qidong/athena
  • gavrilen/athena
  • mdidenko/athena
  • hazeng/athena
  • sabidi/athena
  • bkerridg/athena
  • dwkim/athena
  • cdimitri/athena
  • ktopolni/athena
  • ktackman/athena
  • yche/athena
  • jingjing/athena
  • dabattul/athena
  • yoyeh/athena
  • attrtcal/athena
  • mischott/athena-22
  • sgaid/athena
  • thmaurin/athena
  • bochen/athena
  • asciandr/athena
  • chjiang/athena
  • krdona/athena
  • lbazzano/athena
  • rushioda/athena-3
  • dtorresa/athena
  • meiqi/athena
  • pclark/athena
  • aaikot/athena
  • kvidalgu/athena
  • nlad/athena
  • hmoyanog/athena
  • xinfei/athena
  • aackerma/athena
  • jcurran/athena
  • yingjun/athena
  • mschefer/athena
  • lesplend/athena
  • maboelel/athena
  • zoduan/athena
  • aivina/athena
  • kazheng/athena-physics-val-2023
  • xinhui/athena
  • rmakhman/athena
  • liuk/athena
  • zhiliang/athena
  • sfrances/athena
  • shhan/athena
  • xingguo/athena
  • jlue/athena
  • ragrabar/athena
  • bdixit/athena
  • alsidley/athena
  • kyjones/topoetcone-removal
  • shahzad/athena
  • niabicht/athena
  • asehrawa/athena
  • mhoppesc/athena
  • yunagai/athena
  • lcalic/athena-backup
  • keener/athena
  • greynold/athena
  • llewitt/athena
  • kazheng/athena-workingpoint
  • bschlag/athena
  • agentry/athena
  • yinmiao/athena
  • bruckman/athena
  • adohnalo/athena
  • kbhide/athena
  • drankin/athena
  • nkang/athena
  • hvanders/athena
  • ladamczy/test
  • berkeleylab/acts/athena
  • tbeumker/athenatest
  • asmaga/athena
  • weitao/athena
  • losanti/athena
  • tbeumker/athena
  • losanti/athena-23
  • wsong/athena
  • menu-hackathon/athena
  • jiturriz/athena
  • dmankad/athena-idle
  • dawerner/athena
  • kyjones/trigger-example
  • vmaksimo/athena
  • seggebre/athena-fluencemap-modification
  • toobauma/athena
  • gtarna/athena
  • edreyer/athena
  • fisopkov/athena
  • smanzoni/athena
  • lprimomo/athena
  • shmukher/athena
  • maparo/athena
  • SecVtx-Lancaster/Athena
  • aackerma/atlas-athena
  • pgraveli/athena
  • adimri/athena
  • lrambell/athena
  • jcrosby/athena
  • wstanek/athena
  • tovsiann/athena
  • rsnyder/athena
  • atlas-sa-uct/athena
  • skita/athena
  • ppotepa/athena
  • eullmank/athena
  • achakrav/athena
  • zgao/athena
  • xmapekul/athena
  • lroos/athena
  • mhemmett/athena
  • rashbypi/athena
  • kgoto/athena
  • evitale/athena
  • thmaurin/athena-sim-flavour
  • ivyas/athena
  • arej/athena
  • aleksand/athena
  • lkretsch/athena
  • npond/athena
  • hluk/athena
  • jebohm/athena
  • epasqual/athena
  • mbiyabi/athena
  • aralves/athena
  • dbiswas/athena
  • cvittori/athena
  • dkoeck/anniathenafork
  • mkareem/athena
  • mihe/athena
  • rgupta/athena
  • tslee/athena
  • croland/athena
  • cgarvey/athena
  • kesedlac/athena
  • mhaacke/athena
  • ctosciri/athena-old
  • pkumari/athena
  • ctosciri/athena
  • bscheuer/athena
  • feickert/athena
  • ricunnin/athena
  • bdixit/masking-strip-modules
  • asoflau/athena
  • agerwin/athena
  • gfrattar/athena
  • gwilliam/athena
  • gtolkach/athena
  • ksudo/athena
  • jfeng2/athena
  • gaofeng/athena
  • rhiguchi/athena
  • kosuzuki/athena
  • svanstro/athena
  • etoyoda/athena
  • vaustrup/athena
  • rmizuhik/athena
  • kkanke/athena
  • hart/athena
  • whopkins/athena
  • tnakagaw/athena
  • tpaschoa/athena
  • amakita/athena
  • dduda/athena
  • maoki/athena
  • miyamada/athena
  • evalient/athena
  • rishikaw/athena
  • ferusso/athena
  • anayaz/athena
  • aagaard/athena
  • smweber/athena
  • smweber/athena-run-3
  • shudong/athena
  • zyan/athena-muon-calib
  • dellacqu/athena
  • evalient/athena-dnn-calculator
  • zyan/athena-muon-calib-stream
  • glagafon/project-nimber-1
  • strom/athena-dms
  • strom/athena
  • brosser/athena
  • sbellman/athena
  • jsallen/athena
  • macretar/athena
  • aowang/athena
  • ooncel/athena
  • skadir/athena-sadaf
  • jhoya/athena
  • leguo/athena
  • osotosan/athena
  • tygeorge/athena
  • glagafon/handi-project
  • wuxi/athena
  • glagafon/handi-project-1
  • syan/athena-syan
  • hasun/athena
  • axgallen/athena-qualification-task
  • mnorfolk/athena
  • will/athena
  • seinfant/athena
  • karakawa/athena
  • taogawa/athena
  • aborbely/athena
  • schernau/athena
  • dmankad/athena-gen
  • ktariq/athena
  • tmlinare/athena
  • mmaroun/ravina-fork
  • axgallen/athena
  • agarabag/athena
  • romar/athena
  • dhagan/athena
  • mahorstm/athena
  • vlysenko/athena
  • zuzak/athena
  • ibamwidh/athena
  • frfische/athena
  • ipolishc/athena
  • tizhang/athena
  • atishelm/athena
  • yil/athena
  • jolamber/athena
  • ykhoulak/myathena
  • jlue/athena-latest
  • xilin/athena
  • chuanye/athena
  • huayu/athena
  • nkua-atlas/athena
  • tayoshid/athena
  • kifarman/athena
  • dntounis/athena
  • nischmit/athena
  • lderamo/athena
  • dtruncal/athena
  • steinber/athena-main
  • tdingley/athena
  • movincen/athena
  • kazheng/athena-acts
  • dongyi/athena
  • malvesca/athena
  • hasegawa/athena
  • glagafon/dq-optimize
  • mnowak/athena
  • ladamczy/athena
  • openc/athena
  • mhufnage/athena
  • lcalic/athena
  • lsultana/obsolete_athena
  • ekajomov/athena-fork-fix
  • lsultana/athena
  • kfung/athena
  • rqian/athena
  • yonoda/athena
  • anfortma/athena
  • alveltma/athena
  • alpleban/athena
  • anstein/athena
  • mmaheshw/athena
  • jdavidso/athena
  • edcritel/athena
  • pebaron/athena-leprem
  • gbird/athena
  • midandre/athena
  • bglik/athena
  • anhodges/athena
  • mvivasal/athena
  • mfurukaw/athena
  • asbrooks/athena
  • sokkerma/athena
  • mmlynars/athena-v-2
  • fcurcio/athena
  • kyjones/athena
  • mveen/athena
  • lboccard/athena
  • jmcgowan/athena
  • tburatov/athena
  • dmankad/athena
  • ivyoung/athena
  • tayoshid/athena-test
  • joroemer/athena
  • drasslof/athena
  • ctaybi/athena
  • jodafons/athena
  • anburger/athena
  • tmclachl/athena
  • sdemiran/athena
  • sanchezj/athena-2022
  • jiddon/athena
  • fwinkel/athena
  • sdahbi/athena
  • izahir/athena
  • apfleger/athena
  • goblirsc/athena
  • sidoti/athena
  • jwkraus/athena
  • mmoors/athena
  • rhaberle/athena
  • rvinasco/athena
  • sanchezj/athena
  • jhowarth/athena
  • obut/athena
  • klleras/athena
  • esimpson/athena
  • jecouthu/athena
  • dta/athena_old
  • janders/athena
  • jchapman/athena
  • mungo/athena
  • dtrischu/athena
  • avallier/athena
  • fmontere/athena
  • fhenry/athena
  • sfuenzal/athena
  • zhaotong/athena
  • misantan/athena
  • zalegria/athena
  • shaoguan/athena
  • gdigrego/athena
  • awharton/Athena
  • acordeir/athena-ed
  • amelo/athena
  • pdougan/athena
  • peiyan/athena
  • nbruscin/athena
  • backes/athena
  • mkholoda/athena
  • fkirfel/athena
  • caiy/athena
  • tayoshid/athena-2024
  • kchu/athena
  • bcervato/athena
  • esampson/athena-idart
  • gfacini/athena
  • fwinkl2/athena
  • shpeng/athena-2
  • yvolkotr/athena
  • gmercado/athena
  • rhowen/athena
  • esampson/athena-idart-2
  • gmascare/athena
  • djlewis/athena
  • costanzo/athena
  • nharriso/athena
  • pibutti/athena
  • yuematsu/athena
  • esampson/athena-otp
  • bmoser/athena
  • alpleban/athena-met
  • astefl/athena
  • esampson/athena-june-otp
  • yilin/athena
  • zhanhang/athena
  • bdong/athena
  • wcastigl/athena
  • thitchin/athena
  • ksahan/athena
  • lbarrade/athena
  • msasada/athena
  • sosarkar/athena-again
  • seth/athena
  • agheata/athena
  • txu/athena
  • zhangbo/athena
  • robouque/athena
  • okolay/athena
  • mlyukova/athena
  • esampson/june-2-otp
  • nsurijr/athena
  • wema/athena
  • dbaronmo/athena
  • damperia/athena-acts
  • eballabe/athena
  • boudreau/athena
  • martyniu/athena
  • bngair/met-significance-r-22
  • acamplan/athena
  • vsasse/athena
  • bhuth/athena
  • ksakura/athena
  • bngair/me-tsig-athena
  • rhicks/athena
  • menadeem/athena
  • atymchys/athena
  • yanqiw/athena
  • vkost/athena
  • domatter/athena
  • skadir/athena
  • arelycg/athena
  • linghua/athena
  • juscerri/athena
  • sgoswami/athena
  • biliu/athena
  • sosarkar/athena
  • beltran/athena
  • mwessels/athena
  • ddicroce/athena
  • hshaddix/athena
  • dreikher/athena
  • lwinkler/athena
  • bdebjani/athena
  • fladias/athena
  • elham/athena
  • emoon/athena
  • haren/athena
  • mhabedan/athena
  • cleong/athena
  • sdiefenb/athena-onnx-tutorial
  • nkrogh/athena
  • dwilson/athena
  • thart/athena
  • fivone/athena
  • mads/athena
  • lsanfili/athena
  • kenakamu/athena
  • dahumphr/athena
  • lifoster/athena
  • scane/athena
  • echerepa/athena
  • baer/athena
  • dcamarer/athena
  • alancast/athena
  • haotianl/athena
  • eskorda/athena
  • glagafon/aaaathena
  • glagafon/athena
  • rshibata/athena
  • salopez/athena
  • rvavrick/athena
  • lburke/athena
  • ukhurshi/athena
  • glagafon/glagafon-dq
  • pizhang/athena
  • therwig/athena
  • htsoi/athena
  • mwitkows/athena
  • pachabri/athena
  • delitez/athena
  • lcorazzi/athena
  • jaburles/athena
  • ezaya/athena
  • achamber/athena
  • casadop/athena
  • mmantina/athena
  • hzhuang/athena
  • lmonaco/athena
  • rmole/athena
  • mfornasi/athena
  • mamirono/athena
  • jkrupa/athena
  • gserenis/athena
  • rpozzi/athena
  • uepstein/athena
  • fdattola/athena
  • semami/athena
  • jinglis/athena
  • ljerala/athena
  • belderto/athena
  • cmavungu/athena
  • abesir/athena
  • jajohnso/athena
  • lopezzot/athena
  • htorre/athena
  • lechols/athena
  • jlittle/athena
  • fsiegert/athena
  • robouque/athena-20241115
  • tneep/athena
  • wenjingw/athena
  • lbrown/athena
  • wguerin/athena
  • jackersc/athena
  • rmole/athena-personal-fork
  • kfang/athena-fork-kyfang
  • ashirazi/athena
  • epompapa/athena
  • prmitra/athena
  • kgrimm/athena-kgrimm
  • wasu/athena
  • aslobodk/athena
  • amoreira/athena
  • toheintz/athena
  • nihartma/athena
  • goetz/athena-acts
  • gfazzino/athena
  • yazhou/athena
  • muschmid/athena
  • kdipetri/athena
  • wlai/athena
  • djuarezg/athena
  • alarnold/athena
  • falves/athena
  • rohasan/athena
  • mborodin/athena
  • mdacunha/athena
  • asickles/athena
  • novotnyp/athena
  • ibenaoum/athena
  • adsalvad/athena
  • alecrhys/athena
  • lvicenik/athena
  • frcastig/athena
  • christog/athena
  • tflee/athena
  • kkazakov/athena
  • zetao/athena
  • mfarzali/athena
  • jusilva/athena
  • llarson/athena
  • ehampshi/athena
  • exochell/my-athena
  • tomoya/athena-low-pt-muon-rec
  • pusharma/athena
  • gpinheir/athena
  • mojeda/athena
  • jecifuen/athena
  • hshaddix/athena-hshaddix
  • jlieberm/athena
  • vchabala/athena
  • nsur/athena-lund
  • chhultqu/athena
  • jlai/athena
  • misavic/athena
  • pmourafr/athena
  • camccrac/athena
  • nshtokha/athena
  • yuxuanz/local-athena
  • akraus/athena
  • sizumiya/athena
  • yukari/athena
  • zhubacek/athena
  • sawyer/athena
  • mnegrini/athena
  • mfilipig/athena
  • yanqiw/athena-acts-for-run-3-silicon-tracking
  • fdejean/athena
  • rkavak/athena
  • gipoddar/athena
  • ssuravar/athena
  • zrokavec/athena
  • vpires/athena-vasco
  • beyeo/athena
  • mtancock/athena-2
  • gsalvi/athena
  • ywng/athena
  • stlin/athena
  • sutuncay/athena
  • fballi/athena
1576 results
Show changes
Commits on Source (116)
Showing
with 393 additions and 474 deletions
......@@ -110,7 +110,8 @@ AODMoments=[#"LATERAL"
,"EM_PROBABILITY"
#,"PTD"
,"BadChannelList"
,#"LATERAL"
#,"LATERAL"
,"SECOND_TIME"
]
if jobproperties.CaloRecFlags.doExtendedClusterMoments.get_Value():
......@@ -215,8 +216,6 @@ if jobproperties.CaloRecFlags.doCaloFwdTopoTower.get_Value():
AuxListItem+="."+moment
CaloClusterItemList+=[AuxListItem]
CaloAODList+=CaloClusterItemList
# E4' cells
......
......@@ -126,17 +126,6 @@ if doTopoClusterAgain:
"TileExt0", "TileExt1", "TileExt2",
"TileGap1", "TileGap2", "TileGap3",
"FCAL0", "FCAL1"]
# simple noise tool
SimpleNoiseFile = "sigmas_all.dat"
from CaloTools.CaloToolsConf import SimpleNoiseToolFromTextFile
SimpleNoiseTool = SimpleNoiseToolFromTextFile("SimpleNoiseTool")
SimpleNoiseTool.CellNoiseFileName = SimpleNoiseFile
ToolSvc += SimpleNoiseTool
topSequence.CaloTopoCluster.TopoMaker.CaloNoiseTool = SimpleNoiseTool
topSequence.CaloTopoCluster.LocalCalib.LCWeight.CaloNoiseTool = SimpleNoiseTool
topSequence.CaloTopoCluster.DMCalib.LCDeadMaterial.CaloNoiseTool = SimpleNoiseTool
# remove annoying BadChannel tool
tlist=[]
for x in topSequence.CaloTopoCluster.ClusterCorrectionTools:
......
......@@ -142,16 +142,6 @@ if doTopoClusterAgain:
"TileExt0", "TileExt1", "TileExt2",
"TileGap1", "TileGap2", "TileGap3",
"FCAL0", "FCAL1"]
# simple noise tool
SimpleNoiseFile = "sigmas_ave.dat"
from CaloTools.CaloToolsConf import SimpleNoiseToolFromTextFile
SimpleNoiseTool = SimpleNoiseToolFromTextFile("SimpleNoiseTool")
SimpleNoiseTool.CellNoiseFileName = SimpleNoiseFile
ToolSvc += SimpleNoiseTool
topSequence.CaloTopoCluster.TopoMaker.CaloNoiseTool = SimpleNoiseTool
topSequence.CaloTopoCluster.LocalCalib.LCWeight.CaloNoiseTool = SimpleNoiseTool
topSequence.CaloTopoCluster.DMCalib.LCDeadMaterial.CaloNoiseTool = SimpleNoiseTool
# remove annoying BadChannel tool
tlist=[]
......
......@@ -137,16 +137,6 @@ if doTopoClusterAgain:
"TileExt0", "TileExt1", "TileExt2",
"TileGap1", "TileGap2", "TileGap3",
"FCAL0", "FCAL1"]
# simple noise tool
SimpleNoiseFile = "sigmas_ave.dat"
from CaloTools.CaloToolsConf import SimpleNoiseToolFromTextFile
SimpleNoiseTool = SimpleNoiseToolFromTextFile("SimpleNoiseTool")
SimpleNoiseTool.CellNoiseFileName = SimpleNoiseFile
ToolSvc += SimpleNoiseTool
topSequence.CaloTopoCluster.TopoMaker.CaloNoiseTool = SimpleNoiseTool
topSequence.CaloTopoCluster.LocalCalib.LCWeight.CaloNoiseTool = SimpleNoiseTool
topSequence.CaloTopoCluster.DMCalib.LCDeadMaterial.CaloNoiseTool = SimpleNoiseTool
# remove annoying BadChannel tool
tlist=[]
......
......@@ -234,7 +234,7 @@ class CaloClusterTopoGetter ( Configured ) :
,"AVG_TILE_Q"
,"PTD"
,"MASS"
,"EM_PROBABILITY"
,"SECOND_TIME"
]
doDigiTruthFlag = False
......
# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
from AthenaConfiguration.ComponentFactory import CompFactory
......@@ -135,6 +135,7 @@ def getTopoMoments(configFlags):
,"AVG_TILE_Q"
,"PTD"
,"MASS"
, "SECOND_TIME"
]
# Disable for now, as broken on MC
......
......@@ -24,6 +24,7 @@ def TowersFromClustersDict(clusterBuilderName = 'TowerFromClusterTool',
cellEnergyThreshold = 0.,
applyLCW = False,
buildCombinedSignal = False,
removeSamplingData = True,
clusterRange = 5.):
''' Configuration dictionary for tower-to-cluster converter
'''
......@@ -38,7 +39,8 @@ def TowersFromClustersDict(clusterBuilderName = 'TowerFromClusterTool',
'PrepareLCW' : applyLCW, ### (control) prepare (and apply) LCW
'DoCellIndexCheck' : doCellIndexCheck, ### (control) check cell hash indices
'BuildCombinedTopoSignal' : buildCombinedSignal, ### (control) build combined topo-cluster/topo-tower container
'TopoClusterRange' : clusterRange, ### (control) range for topo-cluster in combined mode
'TopoClusterRange' : clusterRange, ### (control) range for topo-cluster in combined mode
'RemoveSamplingData' : removeSamplingData, ### (control) remove all sampling data from tower
}
return configDict
......@@ -146,15 +148,15 @@ def MakeTowersFromClusters(towerMakerName = 'CaloTowerBuilderAlg', #
clusterMoments.TwoGaussianNoise = jobproperties.CaloTopoClusterFlags.doTwoGaussianNoise()
clusterMoments.MinBadLArQuality = 4000
clusterMoments.MomentsNames = [
"CENTER_LAMBDA",
#"CENTER_MAG",
# "CENTER_LAMBDA",
# "CENTER_MAG",
"LONGITUDINAL",
#"FIRST_ENG_DENS",
#"ENG_FRAC_MAX",
# "FIRST_ENG_DENS",
# "ENG_FRAC_MAX",
"ENG_FRAC_EM",
#"PTD",
# "PTD",
"SIGNIFICANCE",
"ENG_POS"
# "ENG_POS",
]
from IOVDbSvc.CondDB import conddb
......
......@@ -58,7 +58,7 @@ caloTowerMerger.TopoClusterRange = caloTowerDict['TopoClusterRange']
caloTowerMerger.TopoClusterContainerKey = caloTowerDict['CaloTopoClusterContainerKey'] #### caloTowerAlgo.CaloFwdTopoTowerBuilder.CaloTopoClusterContainerKey
caloTowerMerger.TopoTowerContainerKey = caloTowerAlgo.TowersOutputName
caloTowerMerger.TopoSignalContainerKey = 'CaloCalTopoSignals'
caloTowerMerger.OutputLevel = Lvl.DEBUG
## caloTowerMerger.OutputLevel = Lvl.DEBUG
topSequence+=caloTowerAlgo
topSequence+=caloTowerMerger
/*
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
//-----------------------------------------------------------------------
......@@ -12,6 +12,7 @@
//
// Author List:
// Sven Menke
// Peter Loch
//
//-----------------------------------------------------------------------
......@@ -39,78 +40,98 @@
#include <limits>
#include <sstream>
#include <map>
#include <string>
#include <cstdio>
using CLHEP::deg;
using CLHEP::cm;
// Known moments
namespace {
//FIXME, somehow make sure these names are in sync with the xAOD variable names
struct MomentName
{
const char* name;
xAOD::CaloCluster::MomentType mom;
};
// Must be sorted by name.
MomentName moment_names[] = {
{ "AVG_LAR_Q", xAOD::CaloCluster::AVG_LAR_Q },
{ "AVG_TILE_Q", xAOD::CaloCluster::AVG_TILE_Q },
{ "BADLARQ_FRAC", xAOD::CaloCluster::BADLARQ_FRAC },
{ "BAD_CELLS_CORR_E", xAOD::CaloCluster::BAD_CELLS_CORR_E },
{ "CELL_SIGNIFICANCE", xAOD::CaloCluster::CELL_SIGNIFICANCE },
{ "CELL_SIG_SAMPLING", xAOD::CaloCluster::CELL_SIG_SAMPLING },
{ "CENTER_LAMBDA", xAOD::CaloCluster::CENTER_LAMBDA },
{ "CENTER_MAG", xAOD::CaloCluster::CENTER_MAG },
{ "CENTER_X", xAOD::CaloCluster::CENTER_X },
{ "CENTER_Y", xAOD::CaloCluster::CENTER_Y },
{ "CENTER_Z", xAOD::CaloCluster::CENTER_Z },
{ "DELTA_ALPHA", xAOD::CaloCluster::DELTA_ALPHA },
{ "DELTA_PHI", xAOD::CaloCluster::DELTA_PHI },
{ "DELTA_THETA", xAOD::CaloCluster::DELTA_THETA },
{ "ENG_BAD_CELLS", xAOD::CaloCluster::ENG_BAD_CELLS },
{ "ENG_BAD_HV_CELLS", xAOD::CaloCluster::ENG_BAD_HV_CELLS },
{ "ENG_FRAC_CORE", xAOD::CaloCluster::ENG_FRAC_CORE },
{ "ENG_FRAC_EM", xAOD::CaloCluster::ENG_FRAC_EM },
{ "ENG_FRAC_MAX", xAOD::CaloCluster::ENG_FRAC_MAX },
{ "ENG_POS", xAOD::CaloCluster::ENG_POS },
{ "FIRST_ENG_DENS", xAOD::CaloCluster::FIRST_ENG_DENS },
{ "FIRST_ETA", xAOD::CaloCluster::FIRST_ETA },
{ "FIRST_PHI", xAOD::CaloCluster::FIRST_PHI },
{ "ISOLATION", xAOD::CaloCluster::ISOLATION },
{ "LATERAL", xAOD::CaloCluster::LATERAL },
{ "LONGITUDINAL", xAOD::CaloCluster::LONGITUDINAL },
{ "MASS", xAOD::CaloCluster::MASS },
{ "N_BAD_CELLS", xAOD::CaloCluster::N_BAD_CELLS },
{ "N_BAD_HV_CELLS", xAOD::CaloCluster::N_BAD_HV_CELLS },
{ "N_BAD_CELLS_CORR", xAOD::CaloCluster::N_BAD_CELLS_CORR },
{ "PTD", xAOD::CaloCluster::PTD },
{ "SECOND_ENG_DENS", xAOD::CaloCluster::SECOND_ENG_DENS },
{ "SECOND_LAMBDA", xAOD::CaloCluster::SECOND_LAMBDA },
{ "SECOND_R", xAOD::CaloCluster::SECOND_R },
{ "SIGNIFICANCE", xAOD::CaloCluster::SIGNIFICANCE },
};
MomentName* moment_names_end =
moment_names + sizeof(moment_names)/sizeof(moment_names[0]);
#if 0
bool operator< (const std::string& v, const MomentName& m)
{
return strcmp (v.c_str(), m.name) < 0;
}
#endif
bool operator< (const MomentName& m, const std::string& v)
{
return strcmp (m.name, v.c_str()) < 0;
}
// name -> enum translator
std::map<std::string,xAOD::CaloCluster::MomentType> momentNameToEnumMap = {
{ "AVG_LAR_Q", xAOD::CaloCluster::AVG_LAR_Q },
{ "AVG_TILE_Q", xAOD::CaloCluster::AVG_TILE_Q },
{ "BADLARQ_FRAC", xAOD::CaloCluster::BADLARQ_FRAC },
{ "BAD_CELLS_CORR_E", xAOD::CaloCluster::BAD_CELLS_CORR_E },
{ "CELL_SIGNIFICANCE", xAOD::CaloCluster::CELL_SIGNIFICANCE },
{ "CELL_SIG_SAMPLING", xAOD::CaloCluster::CELL_SIG_SAMPLING },
{ "CENTER_LAMBDA", xAOD::CaloCluster::CENTER_LAMBDA },
{ "CENTER_MAG", xAOD::CaloCluster::CENTER_MAG },
{ "CENTER_X", xAOD::CaloCluster::CENTER_X },
{ "CENTER_Y", xAOD::CaloCluster::CENTER_Y },
{ "CENTER_Z", xAOD::CaloCluster::CENTER_Z },
{ "DELTA_ALPHA", xAOD::CaloCluster::DELTA_ALPHA },
{ "DELTA_PHI", xAOD::CaloCluster::DELTA_PHI },
{ "DELTA_THETA", xAOD::CaloCluster::DELTA_THETA },
{ "ENG_BAD_CELLS", xAOD::CaloCluster::ENG_BAD_CELLS },
{ "ENG_BAD_HV_CELLS", xAOD::CaloCluster::ENG_BAD_HV_CELLS },
{ "ENG_FRAC_CORE", xAOD::CaloCluster::ENG_FRAC_CORE },
{ "ENG_FRAC_EM", xAOD::CaloCluster::ENG_FRAC_EM },
{ "ENG_FRAC_MAX", xAOD::CaloCluster::ENG_FRAC_MAX },
{ "ENG_POS", xAOD::CaloCluster::ENG_POS },
{ "FIRST_ENG_DENS", xAOD::CaloCluster::FIRST_ENG_DENS },
{ "FIRST_ETA", xAOD::CaloCluster::FIRST_ETA },
{ "FIRST_PHI", xAOD::CaloCluster::FIRST_PHI },
{ "ISOLATION", xAOD::CaloCluster::ISOLATION },
{ "LATERAL", xAOD::CaloCluster::LATERAL },
{ "LONGITUDINAL", xAOD::CaloCluster::LONGITUDINAL },
{ "MASS", xAOD::CaloCluster::MASS },
{ "N_BAD_CELLS", xAOD::CaloCluster::N_BAD_CELLS },
{ "N_BAD_HV_CELLS", xAOD::CaloCluster::N_BAD_HV_CELLS },
{ "N_BAD_CELLS_CORR", xAOD::CaloCluster::N_BAD_CELLS_CORR },
{ "PTD", xAOD::CaloCluster::PTD },
{ "SECOND_ENG_DENS", xAOD::CaloCluster::SECOND_ENG_DENS },
{ "SECOND_LAMBDA", xAOD::CaloCluster::SECOND_LAMBDA },
{ "SECOND_R", xAOD::CaloCluster::SECOND_R },
{ "SECOND_TIME", xAOD::CaloCluster::SECOND_TIME },
{ "SIGNIFICANCE", xAOD::CaloCluster::SIGNIFICANCE },
{ "EM_PROBABILITY", xAOD::CaloCluster::EM_PROBABILITY }
};
// enum -> name translator
std::map<xAOD::CaloCluster::MomentType,std::string> momentEnumToNameMap = {
{ xAOD::CaloCluster::AVG_LAR_Q, "AVG_LAR_Q" },
{ xAOD::CaloCluster::AVG_TILE_Q, "AVG_TILE_Q" },
{ xAOD::CaloCluster::BADLARQ_FRAC, "BADLARQ_FRAC" },
{ xAOD::CaloCluster::BAD_CELLS_CORR_E, "BAD_CELLS_CORR_E" },
{ xAOD::CaloCluster::CELL_SIGNIFICANCE, "CELL_SIGNIFICANCE"},
{ xAOD::CaloCluster::CELL_SIG_SAMPLING, "CELL_SIG_SAMPLING"},
{ xAOD::CaloCluster::CENTER_LAMBDA, "CENTER_LAMBDA" },
{ xAOD::CaloCluster::CENTER_MAG, "CENTER_MAG" },
{ xAOD::CaloCluster::CENTER_X, "CENTER_X" },
{ xAOD::CaloCluster::CENTER_Y, "CENTER_Y" },
{ xAOD::CaloCluster::CENTER_Z, "CENTER_Z" },
{ xAOD::CaloCluster::DELTA_ALPHA, "DELTA_ALPHA" },
{ xAOD::CaloCluster::DELTA_PHI, "DELTA_PHI" },
{ xAOD::CaloCluster::DELTA_THETA, "DELTA_THETA" },
{ xAOD::CaloCluster::ENG_BAD_CELLS, "ENG_BAD_CELLS" },
{ xAOD::CaloCluster::ENG_BAD_HV_CELLS, "ENG_BAD_HV_CELLS" },
{ xAOD::CaloCluster::ENG_FRAC_CORE, "ENG_FRAC_CORE" },
{ xAOD::CaloCluster::ENG_FRAC_EM, "ENG_FRAC_EM" },
{ xAOD::CaloCluster::ENG_FRAC_MAX, "ENG_FRAC_MAX" },
{ xAOD::CaloCluster::ENG_POS, "ENG_POS" },
{ xAOD::CaloCluster::FIRST_ENG_DENS, "FIRST_ENG_DENS" },
{ xAOD::CaloCluster::FIRST_ETA, "FIRST_ETA" },
{ xAOD::CaloCluster::FIRST_PHI, "FIRST_PHI" },
{ xAOD::CaloCluster::ISOLATION, "ISOLATION" },
{ xAOD::CaloCluster::LATERAL, "LATERAL" },
{ xAOD::CaloCluster::LONGITUDINAL, "LONGITUDINAL" },
{ xAOD::CaloCluster::MASS, "MASS" },
{ xAOD::CaloCluster::N_BAD_CELLS, "N_BAD_CELLS" },
{ xAOD::CaloCluster::N_BAD_HV_CELLS, "N_BAD_HV_CELLS" },
{ xAOD::CaloCluster::N_BAD_CELLS_CORR, "N_BAD_CELLS_CORR" },
{ xAOD::CaloCluster::PTD, "PTD" },
{ xAOD::CaloCluster::SECOND_ENG_DENS, "SECOND_ENG_DENS" },
{ xAOD::CaloCluster::SECOND_LAMBDA, "SECOND_LAMBDA" },
{ xAOD::CaloCluster::SECOND_R, "SECOND_R" },
{ xAOD::CaloCluster::SECOND_TIME, "SECOND_TIME" },
{ xAOD::CaloCluster::SIGNIFICANCE, "SIGNIFICANCE" },
{ xAOD::CaloCluster::EM_PROBABILITY, "EM_PROBABILITY" }
};
}
//###############################################################################
CaloClusterMomentsMaker::CaloClusterMomentsMaker(const std::string& type,
......@@ -134,117 +155,102 @@ CaloClusterMomentsMaker::CaloClusterMomentsMaker(const std::string& type,
// Name(s) of Moments to calculate
declareProperty("MomentsNames",m_momentsNames);
// Name(s) of Moments which can be stored on the AOD - all others go to ESD
// m_momentsNamesAOD.push_back(std::string("FIRST_PHI"));
// m_momentsNamesAOD.push_back(std::string("FIRST_ETA"));
// m_momentsNamesAOD.push_back(std::string("SECOND_R"));
// m_momentsNamesAOD.push_back(std::string("SECOND_LAMBDA"));
// m_momentsNamesAOD.push_back(std::string("CENTER_LAMBDA"));
// m_momentsNamesAOD.push_back(std::string("FIRST_ENG_DENS"));
// m_momentsNamesAOD.push_back(std::string("ENG_BAD_CELLS"));
// m_momentsNamesAOD.push_back(std::string("N_BAD_CELLS"));
//declareProperty("AODMomentsNames",m_momentsNamesAOD);
// maximum allowed angle between shower axis and the vector pointing
// to the shower center from the IP in degrees. This property is need
// Maximum allowed angle between shower axis and the vector pointing
// to the shower center from the IP in degrees. This property is needed
// to protect against cases where all significant cells are in one sampling
// and the shower axis can not be defined from them
// and the shower axis can thus not be defined.
declareProperty("MaxAxisAngle",m_maxAxisAngle);
declareProperty("MinRLateral",m_minRLateral);
declareProperty("MinLLongitudinal",m_minLLongitudinal);
declareProperty("MinBadLArQuality",m_minBadLArQuality);
// use 2-gaussian noise for Tile
// Use 2-gaussian noise for Tile
declareProperty("TwoGaussianNoise",m_twoGaussianNoise);
declareProperty("LArHVFraction",m_larHVFraction,"Tool Handle for LArHVFraction");
/// Not used anymore (with xAOD), but required when configured from COOL.
// Not used anymore (with xAOD), but required when configured from COOL.
declareProperty("AODMomentsNames",m_momentsNamesAOD);
// Use weighting of neg. clusters option?
declareProperty("WeightingOfNegClusters", m_absOpt);
}
//###############################################################################
StatusCode CaloClusterMomentsMaker::initialize()
{
m_calculateSignificance = false;
m_calculateIsolation = false;
// translate all moment names specified in MomentsNames property to moment enums,
// check that they are all valid and there are no repeating names
for(const auto& name: m_momentsNames) {
const MomentName* it =
std::lower_bound (moment_names, moment_names_end, name);
if (it != moment_names_end) {
m_validMoments.push_back (it->mom);
switch (it->mom) {
case xAOD::CaloCluster::SIGNIFICANCE:
case xAOD::CaloCluster::CELL_SIGNIFICANCE:
m_calculateSignificance = true;
break;
case xAOD::CaloCluster::ISOLATION:
m_calculateIsolation = true;
break;
case xAOD::CaloCluster::ENG_BAD_HV_CELLS:
m_calculateLArHVFraction = true;
default:
break;
}
}
else {
msg(MSG::ERROR) << "Moment " << name
<< " is not a valid Moment name and will be ignored! "
<< "Valid names are:";
int count = 0;
for (const MomentName& m : moment_names)
msg() << ((count++)==0?" ":", ") << m.name;
msg() << endmsg;
}
}
// loop list of requested moments
std::string::size_type nstr(0); int nmom(0);
for ( const auto& mom : m_momentsNames ) {
// check if moment is known (enumerator available)
auto fmap(momentNameToEnumMap.find(mom));
if ( fmap != momentNameToEnumMap.end() ) {
// valid moment found
nstr = std::max(nstr,mom.length()); ++nmom;
if ( fmap->second == xAOD::CaloCluster::SECOND_TIME ) {
// special flag for second moment of cell times - this moment is not
// calculated in this tool! Do not add to internal (!) valid moments list.
// Its value is available from xAOD::CaloCluster::secondTime()!
m_secondTime = true;
} else if ( fmap->second == xAOD::CaloCluster::EM_PROBABILITY ) {
ATH_MSG_WARNING( mom << " not calculated in this tool - misconfiguration?" );
} else {
// all other valid moments
m_validMoments.push_back(fmap->second);
// flag some special requests
switch (fmap->second) {
case xAOD::CaloCluster::SIGNIFICANCE:
case xAOD::CaloCluster::CELL_SIGNIFICANCE:
m_calculateSignificance = true;
break;
case xAOD::CaloCluster::ISOLATION:
m_calculateIsolation = true;
break;
case xAOD::CaloCluster::ENG_BAD_HV_CELLS:
m_calculateLArHVFraction = true;
default:
break;
} // set special processing flags
} // moment calculated with this tool
} else {
ATH_MSG_ERROR( "Moment name " << mom << " not known; known moments are:" );
char buffer[128]; std::string::size_type lstr(nstr);
// determine field size
for ( auto fmom : momentNameToEnumMap ) { lstr = std::max(lstr,fmom.first.length()); }
// print available moments
for ( auto fmom : momentNameToEnumMap ) {
sprintf(buffer,"moment name: %-*.*s - enumerator: %i",(int)lstr,(int)lstr,fmom.first.c_str(),(int)fmom.second);
ATH_MSG_INFO(buffer);
}
return StatusCode::FAILURE;
} // found unknown moment name
} // loop configured moment names
// sort and remove duplicates, order is not required for any of the code below
// but still may be useful property
// sort and remove duplicates
std::sort(m_validMoments.begin(), m_validMoments.end());
m_validMoments.erase(std::unique(m_validMoments.begin(),
m_validMoments.end()),
m_validMoments.end());
/*
// translate moment names in AODMomentsNames property into set of enums,
// only take valid names which are also in MomentsNames property
m_momentsAOD.reserve(m_momentsNamesAOD.size());
for(const auto& name: m_momentsNamesAOD) {
const MomentName* it =
std::lower_bound (moment_names, moment_names_end, name);
if (it != moment_names_end) {
if (std::find(m_validMoments.begin(), m_validMoments.end(), it->mom)
!= m_validMoments.end())
{
m_momentsAOD.push_back(it->mom);
}
}
m_validMoments.erase(std::unique(m_validMoments.begin(),m_validMoments.end()),m_validMoments.end());
// print configured moments
ATH_MSG_INFO( "Construct and save " << nmom << " cluster moments: " );
char buffer[128];
for ( auto menum : m_validMoments ) {
sprintf(buffer,"moment name: %-*.*s - enumerator: %i",(int)nstr,(int)nstr,momentEnumToNameMap.at(menum).c_str(),(int)menum);
ATH_MSG_INFO( buffer );
}
*/
if ( m_secondTime ) {
auto fmom(momentNameToEnumMap.find("SECOND_TIME"));
sprintf(buffer,"moment name: %-*.*s - enumerator: %i (save only)",(int)nstr,(int)nstr,fmom->first.c_str(),(int)fmom->second);
ATH_MSG_INFO( buffer );
}
// retrieve CaloCell ID server
CHECK(detStore()->retrieve(m_calo_id,"CaloCell_ID"));
// retrieve the calo depth tool
CHECK(m_caloDepthTool.retrieve());
if (m_calculateSignificance) {
ATH_CHECK(m_noiseCDOKey.initialize());
}
// retrieve specific servers and tools for selected processes
if (m_calculateSignificance) { ATH_CHECK(m_noiseCDOKey.initialize()); }
if (m_calculateLArHVFraction) { ATH_CHECK(m_larHVFraction.retrieve()); } else { m_larHVFraction.disable(); }
if (m_calculateLArHVFraction) {
ATH_CHECK(m_larHVFraction.retrieve());
}
else {
m_larHVFraction.disable();
}
return StatusCode::SUCCESS;
}
StatusCode CaloClusterMomentsMaker::finalize()
......@@ -256,6 +262,7 @@ StatusCode CaloClusterMomentsMaker::finalize()
namespace CaloClusterMomentsMaker_detail {
struct cellinfo {
double x;
double y;
......@@ -903,7 +910,7 @@ CaloClusterMomentsMaker::execute(const EventContext& ctx,
}
}
}
// normalize moments and copy to Cluster Moment Store
size_t size= m_validMoments.size();
for (size_t iMoment = 0; iMoment != size; ++iMoment) {
......@@ -913,9 +920,11 @@ CaloClusterMomentsMaker::execute(const EventContext& ctx,
if ( moment == xAOD::CaloCluster::FIRST_PHI )
myMoments[iMoment] = CaloPhiRange::fix(myMoments[iMoment]);
theCluster->insertMoment(moment,myMoments[iMoment]);
}
}
}
} // loop on moments for cluster
} // check on requested moments
// check on second moment of time if requested
if ( m_secondTime ) { theCluster->insertMoment(xAOD::CaloCluster::SECOND_TIME,theCluster->secondTime()); }
} // loop on clusters
return StatusCode::SUCCESS;
}
/*
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
//Dear emacs, this is -*-c++-*-
......@@ -8,7 +8,8 @@
/**
* @class CaloClusterMomentsMaker
* @author Sven Menke <menke@mppmu.mpg.de>
* @date 28-February-2005
* @author Peter Loch <loch@physics.arizona.edu>
* @date 23-March-2021
* @brief Calculate moments for CaloCluster objects
*
* This is a CaloClusterCollectionProcessor which can be plugged into a
......@@ -25,7 +26,10 @@
* Note that only cells with positive energy are used in this definition.
* Common variables to calculate first and second moments of are
* \f$\phi\f$, \f$\eta\f$, and radial and longitudinal distances from
* the shower axis and the shower center, respectively. */
* the shower axis and the shower center, respectively.
*
* @since 23-March-2021: second moment of cell time distribution is calculated
*/
#include "GaudiKernel/ToolHandle.h"
......@@ -133,6 +137,10 @@ class CaloClusterMomentsMaker: public AthAlgTool, virtual public CaloClusterColl
* @brief if set to true use abs E value of cells to calculate
* cluster moments */
bool m_absOpt;
/**
* @brief Retreive second moment of cell times */
bool m_secondTime = { false };
};
#endif // CALOCLUSTERMOMENTSMAKER_H
......@@ -76,6 +76,7 @@ CaloTopoTowerFromClusterMaker::CaloTopoTowerFromClusterMaker(const std::string&
declareProperty("DoCellIndexCheck", m_doCellIndexCheck, "Check cell hash indices for consistency");
declareProperty("BuildCombinedTopoSignal", m_buildCombinedSignal, "Build topo-clusters and topo-towers");
declareProperty("TopoClusterRange", m_clusterRange, "Rapidity range for using topo-clusters in combined signal mode");
declareProperty("RemoveSamplingData", m_removeSamplingData, "Remove the associated sampling data");
}
StatusCode CaloTopoTowerFromClusterMaker::initialize()
......@@ -183,6 +184,7 @@ StatusCode CaloTopoTowerFromClusterMaker::initialize()
ATH_MSG_INFO( CaloRec::Helpers::fmtMsg("BuildCombinedTopoSignal .... %s", blu[m_buildCombinedSignal].c_str()) );
ATH_MSG_INFO( CaloRec::Helpers::fmtMsg("TopoClusterRange ........... %.2f", m_clusterRange) );
ATH_MSG_INFO( CaloRec::Helpers::fmtMsg("ExcludedSamplings .......... %zu (number of)",m_excludedSamplingsName.size()) );
ATH_MSG_INFO( CaloRec::Helpers::fmtMsg("RemoveSamplingData ......... %s", blu[m_removeSamplingData].c_str()) );
return StatusCode::SUCCESS;
}
......@@ -268,8 +270,11 @@ StatusCode CaloTopoTowerFromClusterMaker::execute(const EventContext& ctx,
clptr->addCellLink(lptr); // transfer cell links to CaloCluster
clptr->setClusterSize(csize); // set the cluster size spec
CaloRec::Helpers::calculateKine(clptr,false); // calculate kinematics and other signals from cells
clptr->setEta0(m_towerGeometrySvc->towerEta(ipc)); // save the tower center eta
clptr->setPhi0(m_towerGeometrySvc->towerPhi(ipc)); // save the tower center phi
if ( m_removeSamplingData ) { // remove sampling data and invalidate tower center
clptr->clearSamplingData(); clptr->setEta0(0.); clptr->setPhi0(0.);
} else { // keep sampling data and valid tower center
clptr->setEta0(m_towerGeometrySvc->towerEta(ipc)); clptr->setPhi0(m_towerGeometrySvc->towerPhi(ipc));
}
} else {
delete lptr;
}
......
......@@ -69,6 +69,7 @@ private:
bool m_buildCombinedSignal = { false }; ///< Build topo-clusters within given @f$ y @f$ range, else topo-towers
double m_energyThreshold; ///< Cell energy threshold, default is set in @c m_energyThresholdDef
double m_clusterRange; ///< Range where topo-clusters are used when <tt>m_buildCombinedSignal = true</tt>
bool m_removeSamplingData = { true }; ///< Remove sampling data for towers
/// @}
/// @name Constants and parameters
......
......@@ -48,15 +48,16 @@ def _setupAtlasThreadedJob():
topSequence += SGInputLoader (FailIfNoProxy = False)
AlgScheduler.setDataLoaderAlg ('SGInputLoader' )
if theApp._opts.mtes :
# Multi-threaded Event Service
if (theApp._opts.mtes or jps.ConcurrencyFlags.NumProcs()>0):
# Either multi-threaded Event Service or hybrid MP+MT
from AthenaServices.AthenaServicesConf import AthenaMtesEventLoopMgr
svcMgr += AthenaMtesEventLoopMgr()
svcMgr.AthenaMtesEventLoopMgr.WhiteboardSvc = "EventDataSvc"
svcMgr.AthenaMtesEventLoopMgr.SchedulerSvc = AlgScheduler.getScheduler().getName()
if theApp._opts.mtes:
svcMgr.AthenaMtesEventLoopMgr.EventRangeChannel = theApp._opts.mtes_channel
theApp.EventLoop = "AthenaMtesEventLoopMgr"
else:
from AthenaServices.AthenaServicesConf import AthenaHiveEventLoopMgr
......
/*
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
#ifndef ATHENAKERNEL_IHYBRIDPROCESSORHELPER_H
#define ATHENAKERNEL_IHYBRIDPROCESSORHELPER_H
/**
* @file IHybridProcessorHelper.h
* @class IHybridProcessorHelper
* @brief Helper interface for implementing hybrid MP+MT.
Used by the Hybrid Shared Event Queue Consumer MP tool
**/
class IHybridProcessorHelper {
public:
virtual void resetAppReturnCode() = 0;
virtual void setCurrentEventNum(int num) = 0;
virtual bool terminateLoop() = 0;
virtual int drainScheduler(int& finishedEvts, bool report) = 0;
};
#endif
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
#-----Python imports---#
import os, sys, shutil
......@@ -118,12 +118,10 @@ class MpEvtLoopMgr(AthMpEvtLoopMgr):
ChunkSize=chunk_size) ]
if (self.nThreads >= 1):
if(pileup):
raise Exception('Running pileup digitization in mixed MP+MT currently not supported')
from AthenaMPTools.AthenaMPToolsConf import SharedHiveEvtQueueConsumer
self.Tools += [ SharedHiveEvtQueueConsumer(UseSharedReader=use_shared_reader,
UseSharedWriter=use_shared_writer,
IsPileup=pileup,
IsRoundRobin=(strategy=='RoundRobin'),
EventsBeforeFork=events_before_fork,
self.Tools += [ SharedHiveEvtQueueConsumer(EventsBeforeFork=events_before_fork,
Debug=debug_worker) ]
else:
from AthenaMPTools.AthenaMPToolsConf import SharedEvtQueueConsumer
......
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
#include "SharedHiveEvtQueueConsumer.h"
......@@ -7,10 +7,8 @@
#include "AthenaInterprocess/ProcessGroup.h"
#include "AthenaInterprocess/Incidents.h"
#include "AthenaKernel/IEventSeek.h"
#include "AthenaKernel/IEvtSelectorSeek.h"
#include "AthenaKernel/IEventShare.h"
#include "AthenaKernel/IDataShare.h"
#include "AthenaKernel/IHybridProcessorHelper.h"
#include "GaudiKernel/IEvtSelector.h"
#include "GaudiKernel/IIoComponentMgr.h"
#include "GaudiKernel/IFileMgr.h"
......@@ -40,31 +38,20 @@ namespace SharedHiveEvtQueueConsumer_d {
}
SharedHiveEvtQueueConsumer::SharedHiveEvtQueueConsumer(const std::string& type
, const std::string& name
, const IInterface* parent)
, const std::string& name
, const IInterface* parent)
: AthenaMPToolBase(type,name,parent)
, m_useSharedReader(false)
, m_useSharedWriter(false)
, m_isPileup(false)
, m_isRoundRobin(false)
, m_nEventsBeforeFork(0)
, m_debug(false)
, m_rankId(-1)
, m_chronoStatSvc("ChronoStatSvc", name)
, m_evtSeek(0)
, m_evtSelSeek(0)
, m_evtContext(0)
, m_evtShare(0)
, m_dataShare(0)
, m_sharedEventQueue(0)
, m_sharedRankQueue(0)
{
declareInterface<IAthenaMPTool>(this);
declareProperty("UseSharedReader",m_useSharedReader);
declareProperty("UseSharedWriter",m_useSharedWriter);
declareProperty("IsPileup",m_isPileup);
declareProperty("IsRoundRobin",m_isRoundRobin);
declareProperty("EventsBeforeFork",m_nEventsBeforeFork);
declareProperty("Debug", m_debug);
......@@ -82,60 +69,19 @@ SharedHiveEvtQueueConsumer::~SharedHiveEvtQueueConsumer()
StatusCode SharedHiveEvtQueueConsumer::initialize()
{
ATH_MSG_DEBUG("In initialize");
if(m_isPileup) {
m_evtProcessor = ServiceHandle<IEventProcessor>("PileUpEventLoopMgr",name());
ATH_MSG_INFO("The job running in pileup mode");
}
else {
ATH_MSG_INFO("The job running in non-pileup mode");
}
StatusCode sc = AthenaMPToolBase::initialize();
if(!sc.isSuccess())
return sc;
// For pile-up jobs use event loop manager for seeking
// otherwise use event selector
if(m_isPileup) {
m_evtSeek = dynamic_cast<IEventSeek*>(m_evtProcessor.operator->());
if(!m_evtSeek) {
ATH_MSG_ERROR("Unable to dyn-cast PileUpEventLoopMgr to IEventSeek");
return StatusCode::FAILURE;
}
}
else {
sc = serviceLocator()->service(m_evtSelName,m_evtSelSeek);
if(sc.isFailure() || m_evtSelSeek==0) {
ATH_MSG_ERROR("Error retrieving IEvtSelectorSeek");
return StatusCode::FAILURE;
}
ATH_CHECK( evtSelector()->createContext (m_evtContext) );
}
sc = serviceLocator()->service(m_evtSelName,m_evtShare);
if(sc.isFailure() || m_evtShare==0) {
if(m_useSharedReader) {
ATH_MSG_ERROR("Error retrieving IEventShare");
return StatusCode::FAILURE;
}
msg(MSG::INFO) << "Could not retrieve IEventShare" << endmsg;
}
IConversionSvc* cnvSvc = 0;
sc = serviceLocator()->service("AthenaPoolCnvSvc",cnvSvc);
m_dataShare = dynamic_cast<IDataShare*>(cnvSvc);
if(sc.isFailure() || m_dataShare==0) {
if(m_useSharedWriter) {
msg(MSG::ERROR) << "Error retrieving AthenaPoolCnvSvc " << cnvSvc << endmsg;
return StatusCode::FAILURE;
}
}
sc = m_chronoStatSvc.retrieve();
if (!sc.isSuccess()) {
ATH_MSG_ERROR("Cannot get ChronoStatSvc.");
sc = serviceLocator()->service(m_evtSelName,m_evtSelSeek);
if(sc.isFailure() || m_evtSelSeek==0) {
ATH_MSG_ERROR("Error retrieving IEvtSelectorSeek");
return StatusCode::FAILURE;
}
ATH_CHECK( evtSelector()->createContext (m_evtContext) );
ATH_CHECK(m_chronoStatSvc.retrieve());
return StatusCode::SUCCESS;
}
......@@ -285,7 +231,6 @@ SharedHiveEvtQueueConsumer::subProcessLogs(std::vector<std::string>& filenames)
std::unique_ptr<AthenaInterprocess::ScheduledWork>
SharedHiveEvtQueueConsumer::bootstrap_func()
{
if (m_debug) {
ATH_MSG_INFO("Bootstrap worker PID " << getpid() << " - waiting for SIGUSR1");
sigset_t mask, oldmask;
......@@ -369,28 +314,7 @@ SharedHiveEvtQueueConsumer::bootstrap_func()
return outwork;
ATH_MSG_INFO("File descriptors re-opened in the AthenaMP event worker PID=" << getpid());
// ________________________ Make Shared Reader/Writer Client ________________________
if(m_useSharedReader && m_evtShare) {
if(!m_evtShare->makeClient(m_rankId).isSuccess()) {
ATH_MSG_ERROR("Failed to make the event selector a share client");
return outwork;
} else {
ATH_MSG_DEBUG("Successfully made the event selector a share client");
}
}
if(m_useSharedWriter && m_dataShare) {
IProperty* propertyServer = dynamic_cast<IProperty*>(m_dataShare);
if (propertyServer==0 || propertyServer->setProperty("MakeStreamingToolClient", m_rankId + 1).isFailure()) {
ATH_MSG_ERROR("Could not change AthenaPoolCnvSvc MakeClient Property");
return outwork;
} else {
ATH_MSG_DEBUG("Successfully made the conversion service a share client");
}
}
// ________________________ I/O reinit ________________________
if(!m_ioMgr->io_reinitialize().isSuccess()) {
ATH_MSG_ERROR("Failed to reinitialize I/O");
......@@ -412,24 +336,6 @@ SharedHiveEvtQueueConsumer::bootstrap_func()
ATH_MSG_DEBUG("Successfully restarted the event selector");
}
// ________________________ Restart background event selectors in pileup jobs ________________________
if(m_isPileup) {
const std::list<IService*>& service_list = serviceLocator()->getServices();
std::list<IService*>::const_iterator itSvc = service_list.begin(),
itSvcLast = service_list.end();
for(;itSvc!=itSvcLast;++itSvc) {
IEvtSelector* evtsel = dynamic_cast<IEvtSelector*>(*itSvc);
if(evtsel && (evtsel != m_evtSelector)) {
if((*itSvc)->start().isSuccess())
ATH_MSG_DEBUG("Restarted event selector " << (*itSvc)->name());
else {
ATH_MSG_ERROR("Failed to restart event selector " << (*itSvc)->name());
return outwork;
}
}
}
}
// ________________________ Worker dir: chdir ________________________
if(chdir(worker_rundir.string().c_str())==-1) {
ATH_MSG_ERROR("Failed to chdir to " << worker_rundir.string());
......@@ -446,14 +352,13 @@ SharedHiveEvtQueueConsumer::bootstrap_func()
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
std::unique_ptr<AthenaInterprocess::ScheduledWork>
SharedHiveEvtQueueConsumer::exec_func()
std::unique_ptr<AthenaInterprocess::ScheduledWork> SharedHiveEvtQueueConsumer::exec_func()
{
ATH_MSG_INFO("Exec function in the AthenaMP worker PID=" << getpid());
bool all_ok(true);
if (! initHive().isSuccess()) {
if (!initHive().isSuccess()) {
ATH_MSG_FATAL("unable to initialize Hive");
all_ok = false;
}
......@@ -476,141 +381,118 @@ SharedHiveEvtQueueConsumer::exec_func()
}
}
// ________________________ This is needed only for PileUp jobs __________________________________
// **
// If either EventsBeforeFork or SkipEvents is nonzero, first we need to advance the event selector
// by EventsBeforeFork+SkipEvents and only after that start seeking on the PileUpEventLoopMgr
// **
if(m_isPileup && all_ok) {
if (!m_evtSelSeek) {
StatusCode sc = serviceLocator()->service(m_evtSelName,m_evtSelSeek);
if(sc.isFailure() || m_evtSelSeek==0) {
ATH_MSG_ERROR("Error retrieving Event Selector with IEvtSelectorSeek interface for PileUp job");
all_ok = false;
}
if (evtSelector()->createContext (m_evtContext).isFailure()) {
ATH_MSG_ERROR("Error creating IEventSelector context.");
all_ok = false;
}
}
if (all_ok) {
if((m_nEventsBeforeFork+skipEvents)
&& m_evtSelSeek->seek(*m_evtContext, m_nEventsBeforeFork+skipEvents).isFailure()) {
ATH_MSG_ERROR("Unable to seek to " << m_nEventsBeforeFork+skipEvents);
all_ok = false;
}
}
IHybridProcessorHelper* hybridHelper = dynamic_cast<IHybridProcessorHelper*>(m_evtProcessor.get());
if(!hybridHelper) {
ATH_MSG_FATAL("Failed to acquire IHybridProcessorHelper interface");
all_ok = false;
}
// ________________________ This is needed only for PileUp jobs __________________________________
// Reset the application return code.
hybridHelper->resetAppReturnCode();
int finishedEvts =0;
int createdEvts =0;
long intmask = pow(0x100,sizeof(int))-1; // Mask for decoding event number from the value posted to the queue
int nEvt(m_nEventsBeforeFork);
int nEventsProcessed(0);
long evtnumAndChunk(0);
unsigned evtCounter(0);
// unsigned evtCounter(0);
int evtnum(0), chunkSize(1);
// For the round robin we need to know the maximum number of events for this job
if(m_isRoundRobin) {
evtnumAndChunk = 1;
while(evtnumAndChunk>0) {
if(!m_sharedEventQueue->try_receive_basic<long>(evtnumAndChunk)) {
usleep(1000);
}
}
evtnumAndChunk *= -1;
ATH_MSG_INFO("Starting loop on events");
StatusCode sc(StatusCode::SUCCESS,true);
while(!m_sharedEventQueue->try_receive_basic<long>(evtnumAndChunk)) {
ATH_MSG_DEBUG("Event queue is empty");
usleep(1000);
}
if(all_ok) {
while(true) {
if(m_isRoundRobin) {
evtnum = skipEvents + m_nprocs*evtCounter + m_rankId;
if(evtnum>=evtnumAndChunk+skipEvents) {
break;
}
evtCounter++;
bool loop_ended = (evtnumAndChunk<0);
if(!loop_ended) {
ATH_MSG_DEBUG("Received value from the queue 0x" << std::hex << evtnumAndChunk << std::dec);
chunkSize = evtnumAndChunk >> (sizeof(int)*8);
evtnum = evtnumAndChunk & intmask;
ATH_MSG_INFO("Received from the queue: event num=" << evtnum << " chunk size=" << chunkSize);
hybridHelper->setCurrentEventNum(++evtnum);
}
bool no_more_events = false;
while(!loop_ended) {
ATH_MSG_DEBUG(" -> createdEvts: " << createdEvts);
if(!hybridHelper->terminateLoop() // No scheduled loop termination
&& !no_more_events // We are not yet done getting events
&& m_schedulerSvc->freeSlots()>0) { // There are still free slots in the scheduler
ATH_MSG_DEBUG("createdEvts: " << createdEvts << ", freeslots: " << m_schedulerSvc->freeSlots());
auto ctx = m_evtProcessor->createEventContext();
if(!ctx.valid()) {
sc = StatusCode::FAILURE;
}
else {
if(!m_sharedEventQueue->try_receive_basic<long>(evtnumAndChunk)) {
// The event queue is empty, but we should check whether there are more events to come or not
ATH_MSG_DEBUG("Event queue is empty");
usleep(1000);
continue;
}
if(evtnumAndChunk<=0) {
evtnumAndChunk *= -1;
ATH_MSG_DEBUG("No more events are expected. The total number of events for this job = " << evtnumAndChunk);
break;
}
while (m_schedulerSvc->freeSlots() < 1) {
ATH_MSG_DEBUG("waiting for a free scheduler slot");
usleep(1000000);
}
sc = m_evtProcessor->executeEvent(std::move(ctx));
}
ATH_MSG_DEBUG("Received value from the queue 0x" << std::hex << evtnumAndChunk << std::dec);
chunkSize = evtnumAndChunk >> (sizeof(int)*8);
evtnum = evtnumAndChunk & intmask;
ATH_MSG_INFO("Received from the queue: event num=" << evtnum << " chunk size=" << chunkSize);
if (sc.isFailure()) {
ATH_MSG_ERROR("Terminating event processing loop due to errors");
loop_ended = true;
}
nEvt+=chunkSize;
StatusCode sc;
if(m_useSharedReader) {
sc = m_evtShare->share(evtnum);
if(sc.isFailure()){
ATH_MSG_ERROR("Unable to share " << evtnum);
all_ok=false;
break;
} else {
ATH_MSG_INFO("Share of " << evtnum << " succeeded");
else {
++createdEvts;
if(--chunkSize==0) {
// Fetch next chunk
while(!m_sharedEventQueue->try_receive_basic<long>(evtnumAndChunk)) {
ATH_MSG_DEBUG("Event queue is empty");
usleep(1000);
}
if(evtnumAndChunk<0) {
no_more_events = true;
evtnumAndChunk *= -1;
ATH_MSG_DEBUG("No more events are expected. The total number of events for this job = " << evtnumAndChunk);
}
else {
ATH_MSG_DEBUG("Received value from the queue 0x" << std::hex << evtnumAndChunk << std::dec);
chunkSize = evtnumAndChunk >> (sizeof(int)*8);
evtnum = evtnumAndChunk & intmask;
ATH_MSG_INFO("Received from the queue: event num=" << evtnum << " chunk size=" << chunkSize);
}
}
} else {
m_chronoStatSvc->chronoStart("AthenaMP_seek");
if (m_evtSeek) {
sc=m_evtSeek->seek(evtnum);
}
else {
sc=m_evtSelSeek->seek(*m_evtContext, evtnum);
}
if(sc.isFailure()){
ATH_MSG_ERROR("Unable to seek to " << evtnum);
all_ok=false;
break;
} else {
ATH_MSG_INFO("Seek to " << evtnum << " succeeded");
// Advance to the next event
if(!no_more_events) {
hybridHelper->setCurrentEventNum(++evtnum);
}
m_chronoStatSvc->chronoStop("AthenaMP_seek");
}
m_chronoStatSvc->chronoStart("AthenaMP_nextEvent");
sc = m_evtProcessor->nextEvent(chunkSize);
nEventsProcessed += chunkSize;
if(sc.isFailure()){
if(chunkSize==1)
ATH_MSG_ERROR("Unable to process event " << evtnum);
else
ATH_MSG_ERROR("Unable to process the chunk (" << evtnum << "," << evtnum+chunkSize-1 << ")");
all_ok=false;
break;
}
else {
// all the events were created but not all finished or the slots were
// all busy: the scheduler should finish its job
ATH_MSG_DEBUG("Draining the scheduler");
// Pull out of the scheduler the finished events
int ir = hybridHelper->drainScheduler(finishedEvts,true);
if(ir < 0) {
// some sort of error draining scheduler;
loop_ended = true;
sc = StatusCode::FAILURE;
}
else if(ir == 0) {
// no more events in scheduler
if(no_more_events) {
// We are done
loop_ended = true;
sc = StatusCode::SUCCESS;
}
}
else {
// keep going!
}
m_chronoStatSvc->chronoStop("AthenaMP_nextEvent");
}
}
} // end main loop on finished events
if(all_ok) {
if(m_evtProcessor->executeRun(0).isFailure()) {
ATH_MSG_ERROR("Could not finalize the Run");
all_ok=false;
} else {
StatusCode sc;
if (m_evtSeek) {
sc = m_evtSeek->seek(evtnumAndChunk+skipEvents);
}
else {
sc = m_evtSelSeek->seek(*m_evtContext, evtnumAndChunk+skipEvents);
}
if(sc.isFailure()) {
if(m_evtSelSeek->seek(*m_evtContext, evtnumAndChunk+skipEvents).isFailure()) {
ATH_MSG_DEBUG("Seek past maxevt to " << evtnumAndChunk+skipEvents << " returned failure. As expected...");
}
}
......@@ -624,7 +506,7 @@ SharedHiveEvtQueueConsumer::exec_func()
*(int*)(outdata) = (all_ok?0:1); // Error code: for now use 0 success, 1 failure
AthenaMPToolBase::Func_Flag func = AthenaMPToolBase::FUNC_EXEC;
memcpy((char*)outdata+sizeof(int),&func,sizeof(func));
memcpy((char*)outdata+sizeof(int)+sizeof(func),&nEventsProcessed,sizeof(int));
memcpy((char*)outdata+sizeof(int)+sizeof(func),&createdEvts,sizeof(int));
outwork->data = outdata;
outwork->size = outsize;
......@@ -753,7 +635,7 @@ SharedHiveEvtQueueConsumer::initHive() {
}
}
m_evtProcessor = ServiceHandle<IEventProcessor>("AthenaHiveEventLoopMgr",name());
m_evtProcessor = ServiceHandle<IEventProcessor>("AthenaMtesEventLoopMgr",name());
if (m_evtProcessor.retrieve().isFailure()) {
ATH_MSG_ERROR("could not setup " << m_evtProcessor.typeAndName());
......
/*
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
#ifndef ATHENAMPTOOLS_SHAREDHIVEEVTQUEUECONSUMER_H
......@@ -12,10 +12,7 @@
#include "GaudiKernel/IScheduler.h"
#include "GaudiKernel/IEvtSelector.h"
class IEventSeek;
class IEvtSelectorSeek;
class IEventShare;
class IDataShare;
class IChronoStatSvc;
class SharedHiveEvtQueueConsumer final : public AthenaMPToolBase
......@@ -56,21 +53,14 @@ class SharedHiveEvtQueueConsumer final : public AthenaMPToolBase
int decodeProcessResult(const AthenaInterprocess::ProcessResult* presult, bool doFinalize);
// Properties
bool m_useSharedReader; // Work in pair with a SharedReader
bool m_useSharedWriter; // Work in pair with a SharedWriter
bool m_isPileup; // Are we doing pile-up digitization?
bool m_isRoundRobin; // Are we running in the "reproducible mode"?
int m_nEventsBeforeFork;
bool m_debug;
int m_rankId; // Each worker has its own unique RankID from the range (0,...,m_nprocs-1)
ServiceHandle<IChronoStatSvc> m_chronoStatSvc;
IEventSeek* m_evtSeek;
IEvtSelectorSeek* m_evtSelSeek;
IEvtSelector::Context* m_evtContext;
IEventShare* m_evtShare;
IDataShare* m_dataShare;
AthenaInterprocess::SharedQueue* m_sharedEventQueue;
AthenaInterprocess::SharedQueue* m_sharedRankQueue;
......
......@@ -717,14 +717,16 @@ StatusCode AthenaMtesEventLoopMgr::stop()
}
StatusCode AthenaMtesEventLoopMgr::nextEvent(int /*maxevt*/)
StatusCode AthenaMtesEventLoopMgr::nextEvent(int maxevt)
{
if(maxevt==0) return StatusCode::SUCCESS;
yampl::ISocketFactory* socketFactory = new yampl::SocketFactory();
// Create a socket to communicate with the Pilot
yampl::ISocket* socket2Pilot = socketFactory->createClientSocket(yampl::Channel(m_eventRangeChannel.value(),yampl::LOCAL),yampl::MOVE_DATA);
m_socket = socketFactory->createClientSocket(yampl::Channel(m_eventRangeChannel.value(),yampl::LOCAL),yampl::MOVE_DATA);
// Reset the application return code.
Gaudi::setAppReturnCode(m_appMgrProperty, Gaudi::ReturnCode::Success, true).ignore();
resetAppReturnCode();
int finishedEvts =0;
int createdEvts =0;
......@@ -740,7 +742,7 @@ StatusCode AthenaMtesEventLoopMgr::nextEvent(int /*maxevt*/)
std::unique_ptr<RangeStruct> range;
while(!range) {
range = getNextRange(socket2Pilot);
range = getNextRange(m_socket);
usleep(1000);
}
......@@ -782,7 +784,7 @@ StatusCode AthenaMtesEventLoopMgr::nextEvent(int /*maxevt*/)
// Fetch next event range
range.reset();
while(!range) {
range = getNextRange(socket2Pilot);
range = getNextRange(m_socket);
usleep(1000);
}
if(range->eventRangeID.empty()) {
......@@ -803,7 +805,7 @@ StatusCode AthenaMtesEventLoopMgr::nextEvent(int /*maxevt*/)
debug() << "Draining the scheduler" << endmsg;
// Pull out of the scheduler the finished events
int ir = drainScheduler(finishedEvts,socket2Pilot);
int ir = drainScheduler(finishedEvts,true);
if(ir < 0) {
// some sort of error draining scheduler;
loop_ended = true;
......@@ -825,7 +827,8 @@ StatusCode AthenaMtesEventLoopMgr::nextEvent(int /*maxevt*/)
info() << "---> Loop Finished (seconds): " << secsFromStart() <<endmsg;
delete socket2Pilot;
delete m_socket;
m_socket=nullptr;
delete socketFactory;
return sc;
}
......@@ -1204,10 +1207,22 @@ EventContext AthenaMtesEventLoopMgr::createEventContext() {
return ctx;
}
void AthenaMtesEventLoopMgr::resetAppReturnCode()
{
Gaudi::setAppReturnCode(m_appMgrProperty, Gaudi::ReturnCode::Success, true).ignore();
}
void AthenaMtesEventLoopMgr::setCurrentEventNum(int num) {
m_currentEvntNum = num;
}
bool AthenaMtesEventLoopMgr::terminateLoop() {
return m_terminateLoop;
}
//---------------------------------------------------------------------------
int
AthenaMtesEventLoopMgr::drainScheduler(int& finishedEvts,yampl::ISocket* socket){
AthenaMtesEventLoopMgr::drainScheduler(int& finishedEvts,bool report){
StatusCode sc(StatusCode::SUCCESS);
......@@ -1273,20 +1288,23 @@ AthenaMtesEventLoopMgr::drainScheduler(int& finishedEvts,yampl::ISocket* socket)
// Some code still needs global context in addition to that passed in the incident
Gaudi::Hive::setCurrentContext( *thisFinishedEvtContext );
info() << "Firing EndProcessing" << endmsg;
m_incidentSvc->fireIncident(Incident(name(), IncidentType::EndProcessing, *thisFinishedEvtContext ));
// If we completed an event range, then report it to the pilot
OutputStreamSequencerSvc::RangeReport_ptr rangeReport = m_outSeqSvc->getRangeReport();
if(rangeReport) {
std::string outputFileReport = rangeReport->second + std::string(",ID:")
+ rangeReport->first + std::string(",CPU:N/A,WALL:N/A");
if( not m_inTestMode ) {
// In standalone test mode there is no pilot to talk to
void* message2pilot = malloc(outputFileReport.size());
memcpy(message2pilot,outputFileReport.data(),outputFileReport.size());
socket->send(message2pilot,outputFileReport.size());
if(report) {
// If we completed an event range, then report it to the pilot
OutputStreamSequencerSvc::RangeReport_ptr rangeReport = m_outSeqSvc->getRangeReport();
if(rangeReport) {
std::string outputFileReport = rangeReport->second + std::string(",ID:")
+ rangeReport->first + std::string(",CPU:N/A,WALL:N/A");
if( not m_inTestMode ) {
// In standalone test mode there is no pilot to talk to
void* message2pilot = malloc(outputFileReport.size());
memcpy(message2pilot,outputFileReport.data(),outputFileReport.size());
m_socket->send(message2pilot,outputFileReport.size());
}
info() << "Reported the output " << outputFileReport << endmsg;
}
info() << "Reported the output " << outputFileReport << endmsg;
}
debug() << "Clearing slot " << thisFinishedEvtContext->slot()
......
// -*- C++ -*-
/*
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
#ifndef ATHENASERVICES_ATHENAMTESEVENTLOOPMGR_H
......@@ -23,6 +23,7 @@
#include "AthenaKernel/IEventSeek.h"
#include "AthenaKernel/ICollectionSize.h"
#include "AthenaKernel/IConditionsCleanerSvc.h"
#include "AthenaKernel/IHybridProcessorHelper.h"
#include "StoreGate/ActiveStoreSvc.h"
#include <memory>
......@@ -52,6 +53,7 @@ class AthenaMtesEventLoopMgr
: virtual public IEventSeek,
virtual public ICollectionSize,
virtual public IIncidentListener,
virtual public IHybridProcessorHelper,
public MinimalEventLoopMgr,
public Athena::TimeoutMaster
{
......@@ -167,10 +169,6 @@ protected:
StatusCode clearWBSlot(int evtSlot);
/// Declare the root address of the event
int declareEventRootAddress(EventContext&);
/// Create event context
virtual EventContext createEventContext() override;
/// Drain the scheduler from all actions that may be queued
int drainScheduler(int& finishedEvents,yampl::ISocket* socket);
/// Instance of the incident listener waiting for AbortEvent.
SmartIF< IIncidentListener > m_abortEventListener;
/// Name of the scheduler to be used
......@@ -201,6 +199,8 @@ public:
virtual StatusCode finalize() override;
/// implementation of IAppMgrUI::nextEvent. maxevt==0 returns immediately
virtual StatusCode nextEvent(int maxevt) override;
/// implementation of IEventProcessor::createEventContext()
virtual EventContext createEventContext() override;
/// implementation of IEventProcessor::executeEvent(void* par)
virtual StatusCode executeEvent( EventContext&& ctx ) override;
/// implementation of IEventProcessor::executeRun(int maxevt)
......@@ -220,6 +220,15 @@ public:
/// IIncidentListenet interfaces
virtual void handle(const Incident& inc) override;
/// Reset the application return code
virtual void resetAppReturnCode() override;
virtual void setCurrentEventNum(int num) override;
virtual bool terminateLoop() override;
/// Drain the scheduler from all actions that may be queued
virtual int drainScheduler(int& finishedEvents, bool report) override;
/// interface dispatcher
virtual StatusCode queryInterface( const InterfaceID& riid,
void** ppvInterface ) override;
......@@ -294,6 +303,9 @@ private:
// Hopefully a temporary measurement. For the time being we cannot
// support event ranges from different input files.
std::string m_pfn{""};
// For the event service running:
yampl::ISocket* m_socket{nullptr};
};
#endif // ATHENASERVICES_ATHENAHIVEEVENTLOOPMGR_H
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
/**
......@@ -27,6 +27,7 @@
//# include "SealBase/Macros.h" wlav
//# include "SealBase/sysapi/IOTypes.h" wlav
# include <cstddef>
# include <atomic>
// wlav copied from SealBase/sysapi/DebugAids.h
// Windows doesn't have this, so fake a suitable substitute
......@@ -60,7 +61,7 @@ class DebugAids
{
public:
// Miscellaneous functions
static IOFD stacktraceFd ATLAS_NOT_THREAD_SAFE (IOFD fd = IOFD_INVALID);
static IOFD stacktraceFd (IOFD fd = IOFD_INVALID);
static void stacktrace ATLAS_NOT_THREAD_SAFE (IOFD fd = IOFD_INVALID);
static void coredump (int sig, ...);
// sss
......@@ -69,7 +70,7 @@ public:
static void setStackTraceAddr2Line ATLAS_NOT_THREAD_SAFE (const char* path);
private:
static IOFD s_stackTraceFd;
static std::atomic<IOFD> s_stackTraceFd;
};
//<<<<<< PUBLIC FUNCTIONS >>>>>>
......