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
  • 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
  • reznicek/athena
  • aburke/athena
  • jiling/athena
  • jcordeir/athena
  • herrmant/athena
  • lmcelhin/athena
  • xuh/athena
  • averbyts/athena
  • tnommens/athena
  • ewallin/athena
  • tvazquez/athena
  • shbansal/athena
  • gascott/athena
  • yuhui/athena
  • lserkin/athena
  • ccaminch/athena
  • corentin/athena
  • miochoa/athena
  • berkeleylab/CharmPhysics/athena
  • cdiez/athena
  • cpollard/athena
  • hfox/athena
  • madurano/athena_gittutorial
  • msykora/athena
  • ckirfel/athena
  • jakoubek/athena
  • derendar/athena
  • calfayan/athena
  • kjohns/athena
  • dguest/athena
  • atlas/athena
  • fwinkl/athena
  • wlampl/athena
  • aundrus/athena
  • akraszna/athena
  • toshi/athena
  • rhauser/athena
  • phwindis/athena
  • arnaez/athena
  • baines/athena
  • karolos/athena
  • mmuskinj/athena
  • psommer/athena
  • bwynne/athena
  • jmontejo/athena
  • tstreble/athena
  • ATLAS-EGamma/athena
  • damazio/athena
  • yuxu/athena
  • toyamaza/athena
  • okuprash/athena
  • gemmeren/athena
  • smh/athena
  • ssnyder/athena
  • wwalko/athena
  • emoyse/athena
  • turra/athena
  • pgadow/athena
  • solodkov/athena
  • tdado/athena
  • rbielski/athena
  • tadej/athena
  • dcasper/athena
  • mrybar/athena
  • abuckley/athena
  • ychiu/athena
  • christos/athena
  • jmasik/athena
  • yoyamagu/athena
  • rbianchi/athena
  • pjacka/athena
  • graemes/athena
  • tamartin/athena
  • sshaw/athena
  • tbold/athena
  • shlomit/athena
  • mhodgkin/athena
  • hartj/athena
  • jcatmore/athena
  • nstyles/athena
  • mark/athena
  • ebuschma/athena
  • gunal/athena
  • nikiforo/athena
  • ewelina/athena
  • ligang/athena
  • fpastore/athena
  • harkusha/athena
  • sroe/athena
  • mvozak/athena
  • lfiorini/athena
  • leggett/athena
  • longjon/athena
  • martindl/athena
  • jichen/athena
  • tlari/athena
  • susinha/athena
  • filthaut/athena
  • almaloiz/athena
  • peter/athena
  • cvarni/athena
  • cchan/athena
  • wleight/athena
  • nwarrack/athena
  • cshimmin/athena
  • mihuebne/athena
  • chays/athena
  • dtovey/athena
  • jsallen/athena-high-pt-ms-jets
  • sgeorge/athena
  • yafu/athena
  • dkar/athena
  • mgignac/athena
  • tkohno/athena
  • alfroch/athena
  • janovak/athena
  • wiedenat/athena
  • mstamenk/athena
  • khoo/athena
  • okepka/athena
  • maklein/athena
  • cohm/athena
  • omajersk/athena
  • tmkrtchy/athena
  • dbakshig/athena
  • fernando/athena
  • gingrich/athena
  • scheiric/athena
  • schaarsc/athena
  • pleskot/athena
  • jobalz/athena
  • ebergeas/athena
  • ponyisi/athena
  • ekasimi/athena
  • afaulkne/athena
  • ravinab/athena
  • xai/athena
  • merrenst/athena
  • ekuwertz/athena
  • goetz/athena
  • dpopov/athena
  • achishol/athena
  • astruebi/athena
  • mdanning/athena
  • alaurier/athena
  • egramsta/athena
  • hye/athena
  • mtoscani/athena
  • krumnack/athena
  • efilmer/athena
  • jpanduro/athena
  • clseitz/athena
  • ssarikay/athena
  • hyamauch/athena
  • bmindur/athena
  • shanisch/athena
  • ncalace/athena
  • aad/athena
  • ppostola/athena
  • gpanizzo/athena
  • tupham/athena
  • stelzer/athena
  • rcoelhol/athena
  • ssottoco/athena
  • turnerm/athena
  • nkrengel/athena
  • sutt/athena
  • cmcginn/athena
  • rkopelia/athena
  • tsulaia/athena
  • bernius/athena
  • vcairo/athena
  • ldc/athena
  • stsuno/athena
  • jmacdona/athena
  • yunju/athena
  • jdandoy/athena
  • mbandier/athena
  • mehlhase/athena
  • jufische/athena
  • nasbah/athena
  • kwhalen/athena
  • dzanzi/athena
  • bmorgan/athena
  • kzoch/athena
  • msaimper/athena
  • amete/athena
  • williams/athena
  • rcarney/athena
  • shhirose/athena
  • cheidegg/athena
  • heng/athena
  • hhibi/athena
  • coccaro/athena
  • kkohler/athena
  • loch/athena
  • ynoguchi/athena
  • cdeutsch/athena
  • campanel/athena
  • nova/athena
  • wbalunas/athena
  • todorova/athena
  • sjiggins/athena
  • hoide/athena
  • bgokturk/athena
  • xju/athena
  • aytul/athena
  • yuchou/athena
  • lidiaz/athena
  • hrussell/athena
  • kegraham/athena
  • jbiswal/athena
  • kpachal/athena
  • bouhova/athena
  • guerrero/athena
  • mverissi/athena
  • alwang/athena
  • dhayden/athena
  • mvanadia/athena
  • alopezso/athena
  • omeshkov/athena
  • soumya/athena
  • mvessell/athena
  • ssantpur/athena
  • ruyuan/athena
  • fmeloni/athena
  • kenelson/athena
  • igrabows/athena
  • upatel/athena
  • tvarol/athena
  • mhank/athena
  • dshope/athena
  • korona/athena
  • cowagner/athena
  • tursom/athena
  • anperrev/athena
  • dbogavac/athena
  • eramakot/athena
  • tnobe/athena
  • derue/athena
  • fsforza/athena
  • koffas/athena
  • fgiuli/athena
  • chinderk/athena
  • myexley/athena
  • angianni/athena
  • ballbroo/athena
  • diehl/athena
  • davidek/athena
  • tphamleh/athena
  • falonso/athena
  • ekajomov/athena-general
  • hansenph/athena
  • sarbiolv/athena
  • salvator/athena
  • mfujimot/athena
  • masato/athena
  • stapiaar/athena
  • hirose/athena
  • jhaley/athena
  • jmendes/athena
  • nwenke/athena
  • ffabbri/athena
  • stavrop/athena
  • agbet/athena
  • tpelzer/athena
  • dbabal/athena
  • gia/athena
  • hmildner/athena
  • juesseiv/athena
  • kkrizka/athena
  • temoskal/athena
  • cdelitzs/athena
  • asonay/athena
  • dwallace/athena
  • ckitsaki/athena
  • eschanet/athena
  • lferencz/athena
  • iaizenbe/athena
  • czhou/athena
  • jiawei/athena
  • mromano/athena
  • pmeiring/athena
  • rustem/athena
  • sswatman/athena
  • jteoh/athena
  • miqueits/athena
  • liberato/athena
  • jbeirer/athena
  • elmsheus/athena
  • nielsenj/athena
  • markowen/athena
  • asquith/athena
  • eparrish/athena
  • esoldato/athena
  • nicholas/athena
  • fuhe/athena
  • wachan/athena
  • mhance/athena
  • dakoch/athena
  • asoukhar/athena
  • aranzazu/athena
  • ndegroot/athena
  • ranovotn/athena
  • jkempste/athena
  • aporeba/athena
  • lihan/athena
  • sschramm/athena
  • ginaciog/athena
  • verducci/athena
  • tjunkerm/athena
  • mdelmast/athena
  • martis/athena
  • anmrodri/athena
  • ssaha/athena
  • pliu/athena
  • mswiatlo/athena
  • gabarone/athena
  • scamarda/athena
  • bcarlson/athena
  • fastcalosim_test/athena
  • rlongo/athena
  • mxia/athena
  • conde/athena
  • lstocker/athena
  • mdonasci/athena
  • amoussa/athena
  • mmittal/athena
  • guindon/athena
  • ffollega/athena
  • chelling/athena
  • hmaguire/athena
  • gialas/athena
  • sberlend/athena
  • fcostanz/athena
  • shion/athena
  • sschmitt/athena
  • acts/athena
  • cgutscho/athena
  • nifomin/athena
  • zsoumaim/athena
  • eriefel/athena
  • evarnes/athena
  • guescini/athena
  • akotsoke/athena
  • dwilbern/athena
  • laforge/athena
  • jkremer/athena
  • istin/athena
  • haozturk/athena
  • rpoggi/athena
  • kkoeneke/athena
  • susy-hackers/athena
  • acanesse/athena
  • llorente/athena
  • fizisist/athena
  • fengyu/athena
  • navarrjo/athena
  • cmerlass/athena
  • rkarnam/athena
  • chenlian/athena
  • bulekov/athena
  • ysmirnov/athena_old
  • sanchevi/athena
  • amulski/athena
  • ivivarel/athena
  • sefernan/athena
  • pkramer/athena
  • smwang/athena
  • vcavalie/athena
  • bauerpa/athena
  • yanlin/athena
  • mmazza/athena
  • restevam/athena
  • thsjurse/athena
  • jgonski/athena
  • mmlynars/athena
  • iyeletsk/athena
  • wobisch/athena
  • csebasti/athena
  • itrandaf/athena
  • jhinds/athena
  • almgadm/athena
  • tiyang/athena
  • mwielers/athena
  • lapereir/athena
  • mtchijov/athena
  • lucam/athena
  • emmat/athena
  • lmiller/athena
  • kciesla/athena
  • aleopold/athena
  • masaito/athena
  • pekman/athena
  • rbalasub/athena
  • zuysal/athena
  • salderwe/athena
  • somadutt/athena
  • wmccorma/athena
  • ycoadou/athena
  • kkreul/athena
  • jstupak/athena
  • simmons/athena
  • ilongari/athena
  • pinamont/athena
  • ssahin/athena
  • adye/athena
  • kbelobor/athena
  • wtaylor/athena
  • jzeng/athena
  • aoneill/athena
  • dmaximov/athena
  • kghorban/athena
  • gcallea/athena
  • cschiavi/athena
  • fbartels/athena
  • kasai/athena
  • jraine/athena
  • mcfayden/athena
  • scarra/athena
  • ljeanty/athena
  • brottler/athena
  • khanov/athena
  • ecarlson/athena
  • rozeny/athena
  • nbelyaev/athena
  • aelmouss/athena
  • joheinri/athena
  • gotero/athena
  • aohatl/athena
  • rebeca/athena
  • abandyop/athena
  • bigliett/athena
  • doglioni/athena
  • pmoskvit/athena
  • alaperto/athena
  • amarzin/athena
  • rgarg/athena
  • begalli/athena
  • dpudzha/athena
  • bhonan/athena
  • yajun/athena
  • mpokidov/athena
  • paulama/athena
  • mtesta/athena
  • vcroft/athena
  • jajimene/athena
  • lbozianu/athena
  • torrence/athena
  • atlidali/athena
  • demelian/athena
  • hacooke/athena
  • barak/athena
  • roward/athena
  • wprzygod/athena
  • atsirigo/athena
  • sgalantz/athena
  • tofitsch/athena
  • amoroso/athena
  • salnikov/athena
  • csander/athena
  • ozaplati/athena
  • mmiralle/athena
  • elrossi/athena
  • jsabater/athena
  • alory/athena
  • ruth/athena
  • pottgen/athena
  • ymino/athena
  • jdevivi/athena
  • pbokan/athena
  • klin/athena
  • apetukho/athena
  • trinn/athena
  • xchen/athena
  • nishu/athena
  • cappelt/athena
  • xiaoning/athena
  • paramon/athena
  • bleban/athena
  • nelsonc/athena
  • ratkin/athena
  • dpizzi/athena
  • ztarem/athena
  • juhofer/athena
  • acassim/athena
  • exot-27/athena
  • enarayan/athena
  • bburghgr/athena
  • mkrivos/athena
  • sampson/athena
  • qhu/athena
  • hessey/athena
  • ychow/athena
  • nviauxma/athena
  • mmarjano/athena
  • pagessin/athena
  • watsona/athena
  • LichtenbergGroup/athena
  • jreich/athena
  • ibordule/athena
  • wfawcett/athena
  • ztao/athena
  • othielma/athena
  • perj/athena
  • wgeorge/athena
  • mleblanc/athena
  • sridouan/athena
  • jdegens/athena
  • hasada/athena
  • xiaohu/athena
  • pmendesa/athena
  • alainb/athena
  • bachacou/athena
  • ludovica/athena
  • yama/athena
  • yake/athena
  • kristin/athena
  • ktsuri/athena
  • jlsmith/athena
  • ssu/athena
  • angerami/athena
  • rnayak/athena
  • gproto/athena
  • jezequel/athena
  • hschwart/athena
  • musafdar/athena
  • pebaron/athena-weights
  • mproffit/athena
  • amendesj/athena
  • asalzbur/athena
  • lhelary/athena
  • malgren/athena
  • csamoila/athena
  • rerrabai/athena
  • tiany/athena
  • mprincip/athena
  • aczirkos/athena
  • lbeemste/athena
  • spolacek/athena
  • kyamaguc/athena
  • asantra/athena
  • bmondal/athena
  • grabanal/athena
  • silvinha/athena
  • tboeckh/athena
  • holau/athena
  • jreidels/athena
  • mdhlamin/athena
  • jroloff/athena
  • bozek/athena
  • lkrauth/athena
  • slawlor/athena
  • tdiasdov/athena
  • carlod/athena
  • emily/athena
  • mtian/athena
  • iramirez/athena
  • bcole/athena
  • bbrueers/athena
  • mgrabois/athena
  • ecelebi/athena
  • oducu/athena
  • jjwilkin/athena
  • roishi/athena
  • idinu/athena
  • dhirsch/athena
  • yuanchan/athena
  • ygo/athena
  • hmoyanog/athena-4-mr
  • ggustavi/athena
  • exochell/athena
  • diwillia/athena
  • skorn/athena
  • sbiryuko/athena
  • cgarner/athena
  • scalvet/athena
  • changqia/athena
  • honguyen/athena
  • jwspence/athena
  • atsiamis/athena
  • calpigia/athena
  • yangx/athena
  • jizamora/athena
  • rysawada/athena
  • iene/athena
  • cmarcon/athena
  • kpetukho/athena
  • adimitri/athena
  • dhangal/athena
  • athaler/athena
  • atlidbs/athena
  • tbisanz/athena
  • dopasqua/athena
  • jspah/athena
  • tqiu/athena
  • ryamaguc/athena
  • jcardena/athena
  • jkretz/athena
  • tzenis/athena
  • oshukrun/athena
  • hzuchen/athena
  • lveloce/athena
  • maliev/athena
  • mumohdso/athena2
  • iwang/athena
  • fdelrio/athena
  • okumura/athena
  • tsano/athena
  • dmunozpe/athena
  • sagara17/athena
  • mbiros/athena
  • rhayes/athena
  • mumohdso/athena
  • arennie/athena
  • valentem/athena
  • evguillo/athena
  • atate/athena
  • koshimiz/athena
  • dossantn/athena
  • caforio/athena
  • zhijie/athena
  • zearnsha/athena
  • maly/athena
  • bnachman/athena
  • hlin/athena
  • rjoshi/athena
  • suyounas/athena
  • yuzhan/athena
  • machitis/athena
  • crougier/athena
  • lunedic/athena
  • mtost/athena
  • thompson/athena
  • lvannoli/athena
  • mimarine/athena
  • dounwuch/athena
  • omezhens/athena
  • ndebiase/athena
  • nkakati/athena
  • saclawso/athena
  • jonierma/athena
  • hhanif/athena
  • echeu/athena
  • cprat/athena
  • jodamp/athena
  • mischott/athena
  • martinpa/athena
  • csauer/athena
  • sahinsoy/athena
  • fedin/athena
  • inaryshk/athena
  • tiknight/athena
  • knikolop/athena
  • wendlanb/athena
  • xchu/athena
  • angrigor/athena
  • lkeszegh/athena
  • pbellos/athena
  • adik/athena
  • jaoliver/athena
  • idrivask/athena
  • echeremu/athena
  • lbaltes/athena
  • aikoulou/athena
  • ignesi/athena
  • algilber/athena
  • eschopf/athena
  • ntamir/athena
  • sadykov/athena
  • tteixeir/athena
  • haweber/athena
  • sgurdasa/athena
  • pamachad/athena
  • pyanezca/athena
  • hiito/athena
  • pbhattar/athena
  • mdrozdov/athena
  • bsaifudd/athena
  • tavandaa/athena
  • nheatley/athena
  • wolter/athena
  • veellajo/athena
  • hsimpson/athena
  • fsili/athena
  • fdibello/athena
  • mrenda/athena
  • dparedes/athena
  • zyan/athena
  • minaenko/athena
  • mzhai/athena
  • emmarsha/athena
  • phkenned/athena
  • chchau/athena
  • zhangr/athena
  • jburzyns/athena
  • zmarshal/athena
  • rkusters/athena
  • edweik/athena
  • leevans/athena
  • slai/athena
  • awilhahn/athena
  • kkrowpma/athena
  • agaa/athena
  • llaatu/athena
  • stsigari/athena
  • javanden/athena
  • zfeng/athena
  • srdas/athena
  • atropina/athena
  • adonofri/athena
  • zifeng/athena
  • metsai/athena
  • atlaspmb/athena
  • yuanda/athena
  • drousso/athena
  • cleonido/athena
  • arombola/athena
  • seggebre/athena
  • ademaria/athena
  • ijuarezr/athena
  • kchoi/athena
  • mnoury/athena
  • eyamashi/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
  • otheiner/athena-official
  • cbuitrag/athena
  • hpotti/athena
  • mfarring/athena
  • chonghao/athena
  • hawatson/athena
  • dzengerj/athena
  • parodi/athena
  • vtudorac/athena
  • lmontana/athena
  • bballard/athena
  • zhuyi/athena
  • knakkali/athena
  • dcieri/athena
  • buboehm/athena
  • cimcp/athena
  • asansar/athena
  • weixi/athena
  • adaribay/athena
  • cantel/athena
  • iliadis/athena
  • frenner/athena
  • jburr/athena
  • kbenkend/athena
  • duperrin/athena
  • bstanisl/athena
  • dkoeck/athena
  • isotarri/athena
  • mfewell/athena
  • blumen/athena
  • eegidiop/athena
  • smitani/athena
  • czodrows/athena
  • alsala/athena
  • yulei/athena
  • miholzbo/athena
  • clantz/athena
  • amincer/athena
  • olangrek/athena
  • jgargan/athena
  • gshatri/athena
  • jmharris/athena
  • hpang/athena
  • gripelli/athena
  • ewatton/athena
  • otheiner/athena
  • preselection-hackathon/athena
  • mleigh/athena
  • jnitschk/athena
  • deniso/athena
  • mfernoux/athena
  • bernardo/athena
  • tizuo/athena
  • rushioda/athena
  • sfranche/athena
  • smeriano/athena
  • chandler/athena
  • viruelas/athena
  • anghosh/ef-anindya
  • pebaron/athena-td
  • ksugizak/athena
  • skaur/athena
  • yusano/athena
  • wsherman/athena
  • hriani/athena
  • davetisy/athena
  • jgombas/athena
  • yochi/athena
  • vcepaiti/athena
  • rtagami/athena
  • yuanj/athena
  • apsallid/athena
  • sroygara/athena
  • pakontax/athena
  • mcgensvc/athena
  • agavrily/athena
  • dmclaugh/athena
  • chji/athena
  • abunka/athena
  • almay/athena
  • dmahon/athena
  • giagu/athena
  • yuwen/athena
  • cjmeyer/athena
  • qberthet/athena
  • mshapiro/athena
  • ekay/athena
  • islazyk/athena
  • mbarel/athena
  • dkobylia/athena
  • glamprin/athena
  • rdinardo/athena
  • kazhang/athena
  • minlin/athena
  • wsfreund/athena
  • baitbenc/athena
  • dakiyama/athena
  • osalin/athena
  • mlanzacb/athena
  • cgrefe/athena
  • szambito/athena
  • hwilkens/athena
  • yyap/athena
  • beringer/athena
  • schaffer/athena
  • pebaron/athena
  • tkharlam/athena
  • mspalla/athena
  • enagy/athena
  • fcalosim/athena
  • smobius/athena
  • mavogel/athena
  • menke/athena
  • spagan/athena
  • carquin/athena
  • mduehrss/athena
  • osunnebo/athena
  • okiverny/athena
  • jelena/athena
  • rateixei/athena
  • dportill/athena
  • desilva/athena
  • lmijovic/athena
  • junpei/athena
  • chhayes/athena
  • jwalder/athena
  • sanmay/athena
  • tilebeam/athena
  • mcarnesa/athena
  • jahreda/athena
  • satom/athena
  • jedebevc/athena
  • jstark/athena
  • delsart/athena
  • kiabelin/athena
  • silu/athena
  • vtskhaya/athena
  • krbjoerk/athena
  • cyoung/athena
  • mtogawa/athena
  • jtanaka/athena
  • haoran/athena
  • luxin/athena
  • yifany/athena
  • maslawin/athena
  • danning/athena
  • minghui/athena
  • faser/offline/athena
  • srettie/athena
  • dcasperfaser/athena
  • almeidvi/athena
  • beddall/athena
  • cfan/athena
  • mmontell/athena
  • kazheng/athena
  • vmartin/athena
  • sudha/athena
  • kgupta/athena
  • beltran/athena-fork
  • lgagnon/athena
  • lhenkelm/athena
  • pajones/athena
  • dpanchal/athena
  • ssinha/athena
  • anbaraja/athena
  • amorenos/athena
  • serodrig/athena
  • jshahini/athena
  • kkawade/athena
  • joana/athena
  • apalazzo/athena
  • mtanasin/athena
  • chiodini/athena
  • gonzalri/athena
  • vbuxbaum/athena
  • kburka/athena
  • lfeligio/athena
  • rmazini/athena
  • jaofferm/athena
  • desengup/athena
  • ehaines/athena
  • gavrilen/athena
  • mdidenko/athena
  • gottino/athena
  • sabidi/athena
  • dwkim/athena
  • qidong/athena
  • bkerridg/athena
  • cdimitri/athena
  • ktackman/athena
  • hazeng/athena
  • yche/athena
  • jingjing/athena
  • yoyeh/athena
  • ktopolni/athena
  • mischott/athena-22
  • dabattul/athena
  • attrtcal/athena
  • sgaid/athena
  • bochen/athena
  • thmaurin/athena
  • asciandr/athena
  • chjiang/athena
  • krdona/athena
  • lbazzano/athena
  • rushioda/athena-3
  • nlad/athena
  • meiqi/athena
  • kvidalgu/athena
  • pclark/athena
  • dtorresa/athena
  • aackerma/athena
  • hmoyanog/athena
  • aaikot/athena
  • yingjun/athena
  • jcurran/athena
  • kazheng/athena-physics-val-2023
  • maboelel/athena
  • aivina/athena
  • xinhui/athena
  • xinfei/athena
  • lesplend/athena
  • mschefer/athena
  • rmakhman/athena
  • liuk/athena
  • zoduan/athena
  • zhiliang/athena
  • shhan/athena
  • jlue/athena
  • bdixit/athena
  • sfrances/athena
  • alsidley/athena
  • ragrabar/athena
  • kyjones/topoetcone-removal
  • niabicht/athena
  • asehrawa/athena
  • xingguo/athena
  • yunagai/athena
  • mhoppesc/athena
  • lcalic/athena-backup
  • keener/athena
  • shahzad/athena
  • greynold/athena
  • llewitt/athena
  • yinmiao/athena
  • bschlag/athena
  • kazheng/athena-workingpoint
  • bruckman/athena
  • drankin/athena
  • agentry/athena
  • adohnalo/athena
  • kbhide/athena
  • nkang/athena
  • hvanders/athena
  • ladamczy/test
  • tbeumker/athenatest
  • asmaga/athena
  • berkeleylab/acts/athena
  • tbeumker/athena
  • weitao/athena
  • losanti/athena
  • menu-hackathon/athena
  • jiturriz/athena
  • losanti/athena-23
  • vmaksimo/athena
  • wsong/athena
  • dmankad/athena-idle
  • dawerner/athena
  • kyjones/trigger-example
  • toobauma/athena
  • edreyer/athena
  • seggebre/athena-fluencemap-modification
  • smanzoni/athena
  • gtarna/athena
  • fisopkov/athena
  • lprimomo/athena
  • maparo/athena
  • adimri/athena
  • shmukher/athena
  • SecVtx-Lancaster/Athena
  • jcrosby/athena
  • pgraveli/athena
  • aackerma/atlas-athena
  • wstanek/athena
  • tovsiann/athena
  • lrambell/athena
  • rsnyder/athena
  • atlas-sa-uct/athena
  • skita/athena
  • eullmank/athena
  • ppotepa/athena
  • mhemmett/athena
  • zgao/athena
  • achakrav/athena
  • lroos/athena
  • xmapekul/athena
  • evitale/athena
  • rashbypi/athena
  • kgoto/athena
  • thmaurin/athena-sim-flavour
  • arej/athena
  • ivyas/athena
  • lkretsch/athena
  • npond/athena
  • epasqual/athena
  • jebohm/athena
  • aleksand/athena
  • mbiyabi/athena
  • hluk/athena
  • cvittori/athena
  • mihe/athena
  • dbiswas/athena
  • rgupta/athena
  • mkareem/athena
  • tslee/athena
  • aralves/athena
  • dkoeck/anniathenafork
  • croland/athena
  • cgarvey/athena
  • mhaacke/athena
  • kesedlac/athena
  • feickert/athena
  • ctosciri/athena-old
  • ctosciri/athena
  • pkumari/athena
  • asoflau/athena
  • bdixit/masking-strip-modules
  • ricunnin/athena
  • gfrattar/athena
  • agerwin/athena
  • gtolkach/athena
  • gwilliam/athena
  • bscheuer/athena
  • ksudo/athena
  • jfeng2/athena
  • gaofeng/athena
  • rhiguchi/athena
  • etoyoda/athena
  • kosuzuki/athena
  • rmizuhik/athena
  • svanstro/athena
  • vaustrup/athena
  • tnakagaw/athena
  • hart/athena
  • kkanke/athena
  • amakita/athena
  • tpaschoa/athena
  • maoki/athena
  • whopkins/athena
  • miyamada/athena
  • dduda/athena
  • rishikaw/athena
  • ferusso/athena
  • anayaz/athena
  • smweber/athena-run-3
  • evalient/athena
  • shudong/athena
  • aagaard/athena
  • smweber/athena
  • zyan/athena-muon-calib-stream
  • zyan/athena-muon-calib
  • strom/athena
  • dellacqu/athena
  • glagafon/project-nimber-1
  • evalient/athena-dnn-calculator
  • strom/athena-dms
  • brosser/athena
  • jsallen/athena
  • sbellman/athena
  • macretar/athena
  • aowang/athena
  • ooncel/athena
  • skadir/athena-sadaf
  • jhoya/athena
  • leguo/athena
  • osotosan/athena
  • tygeorge/athena
  • glagafon/handi-project
  • wuxi/athena
  • mnorfolk/athena
  • syan/athena-syan
  • glagafon/handi-project-1
  • hasun/athena
  • will/athena
  • karakawa/athena
  • aborbely/athena
  • axgallen/athena-qualification-task
  • taogawa/athena
  • schernau/athena
  • seinfant/athena
  • mmaroun/ravina-fork
  • dmankad/athena-gen
  • axgallen/athena
  • romar/athena
  • tmlinare/athena
  • agarabag/athena
  • ktariq/athena
  • zuzak/athena
  • vlysenko/athena
  • dhagan/athena
  • ipolishc/athena
  • tizhang/athena
  • mahorstm/athena
  • ibamwidh/athena
  • frfische/athena
  • atishelm/athena
  • jolamber/athena
  • jlue/athena-latest
  • yil/athena
  • xilin/athena
  • ykhoulak/myathena
  • chuanye/athena
  • huayu/athena
  • dntounis/athena
  • nkua-atlas/athena
  • lderamo/athena
  • tayoshid/athena
  • kifarman/athena
  • nischmit/athena
  • dtruncal/athena
  • steinber/athena-main
  • movincen/athena
  • tdingley/athena
  • dongyi/athena
  • kazheng/athena-acts
  • malvesca/athena
  • hasegawa/athena
  • glagafon/dq-optimize
  • openc/athena
  • mnowak/athena
  • anfortma/athena
  • ladamczy/athena
  • mhufnage/athena
  • lsultana/obsolete_athena
  • lsultana/athena
  • lcalic/athena
  • ekajomov/athena-fork-fix
  • rqian/athena
  • alveltma/athena
  • kfung/athena
  • yonoda/athena
  • alpleban/athena
  • mmaheshw/athena
  • jdavidso/athena
  • pebaron/athena-leprem
  • anstein/athena
  • edcritel/athena
  • gbird/athena
  • anhodges/athena
  • midandre/athena
  • bglik/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
  • tayoshid/athena-test
  • dmankad/athena
  • joroemer/athena
  • jodafons/athena
  • ivyoung/athena
  • sanchezj/athena-2022
  • drasslof/athena
  • ctaybi/athena
  • tmclachl/athena
  • jiddon/athena
  • sdemiran/athena
  • apfleger/athena
  • sdahbi/athena
  • sidoti/athena
  • anburger/athena
  • fwinkel/athena
  • goblirsc/athena
  • izahir/athena
  • mmoors/athena
  • rvinasco/athena
  • jwkraus/athena
  • sanchezj/athena
  • esimpson/athena
  • janders/athena
  • rhaberle/athena
  • jhowarth/athena
  • obut/athena
  • klleras/athena
  • jchapman/athena
  • dta/athena_old
  • jecouthu/athena
  • sfuenzal/athena
  • dtrischu/athena
  • avallier/athena
  • fmontere/athena
  • mungo/athena
  • fhenry/athena
  • zhaotong/athena
  • misantan/athena
  • zalegria/athena
  • awharton/Athena
  • gdigrego/athena
  • acordeir/athena-ed
  • nbruscin/athena
  • amelo/athena
  • shaoguan/athena
  • backes/athena
  • pdougan/athena
  • mkholoda/athena
  • fkirfel/athena
  • peiyan/athena
  • caiy/athena
  • kchu/athena
  • tayoshid/athena-2024
  • gfacini/athena
  • esampson/athena-idart
  • fwinkl2/athena
  • shpeng/athena-2
  • bcervato/athena
  • djlewis/athena
  • gmercado/athena
  • rhowen/athena
  • esampson/athena-idart-2
  • nharriso/athena
  • gmascare/athena
  • yvolkotr/athena
  • costanzo/athena
  • esampson/athena-otp
  • yuematsu/athena
  • alpleban/athena-met
  • pibutti/athena
  • astefl/athena
  • esampson/athena-june-otp
  • bmoser/athena
  • zhanhang/athena
  • wcastigl/athena
  • thitchin/athena
  • yilin/athena
  • bdong/athena
  • ksahan/athena
  • lbarrade/athena
  • msasada/athena
  • sosarkar/athena-again
  • agheata/athena
  • seth/athena
  • nsurijr/athena
  • txu/athena
  • robouque/athena
  • okolay/athena
  • zhangbo/athena
  • mlyukova/athena
  • esampson/june-2-otp
  • dbaronmo/athena
  • martyniu/athena
  • wema/athena
  • damperia/athena-acts
  • boudreau/athena
  • eballabe/athena
  • bhuth/athena
  • acamplan/athena
  • bngair/met-significance-r-22
  • vsasse/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
  • mwessels/athena
  • ddicroce/athena
  • sosarkar/athena
  • beltran/athena
  • dreikher/athena
  • bdebjani/athena
  • emoon/athena
  • fladias/athena
  • hshaddix/athena
  • lwinkler/athena
  • cleong/athena
  • elham/athena
  • sdiefenb/athena-onnx-tutorial
  • mhabedan/athena
  • dwilson/athena
  • haren/athena
  • fivone/athena
  • nkrogh/athena
  • thart/athena
  • mads/athena
  • dahumphr/athena
  • lsanfili/athena
  • scane/athena
  • lifoster/athena
  • echerepa/athena
  • baer/athena
  • alancast/athena
  • dcamarer/athena
  • kenakamu/athena
  • glagafon/aaaathena
  • eskorda/athena
  • glagafon/athena
  • salopez/athena
  • haotianl/athena
  • rshibata/athena
  • lburke/athena
  • ukhurshi/athena
  • delitez/athena
  • glagafon/glagafon-dq
  • pizhang/athena
  • htsoi/athena
  • rvavrick/athena
  • therwig/athena
  • mwitkows/athena
  • casadop/athena
  • pachabri/athena
  • lcorazzi/athena
  • ezaya/athena
  • mmantina/athena
  • hzhuang/athena
  • achamber/athena
  • jaburles/athena
  • gserenis/athena
  • lmonaco/athena
  • jkrupa/athena
  • rmole/athena
  • mamirono/athena
  • rpozzi/athena
  • mfornasi/athena
  • semami/athena
  • fdattola/athena
  • jinglis/athena
  • belderto/athena
  • uepstein/athena
  • abesir/athena
  • lechols/athena
  • ljerala/athena
  • cmavungu/athena
  • lopezzot/athena
  • htorre/athena
  • jlittle/athena
  • jajohnso/athena
  • tneep/athena
  • robouque/athena-20241115
  • lbrown/athena
  • fsiegert/athena
  • wenjingw/athena
  • wguerin/athena
  • rmole/athena-personal-fork
  • kfang/athena-fork-kyfang
  • jackersc/athena
  • kgrimm/athena-kgrimm
  • prmitra/athena
  • epompapa/athena
  • ashirazi/athena
  • wasu/athena
  • aslobodk/athena
  • amoreira/athena
  • nihartma/athena
  • kdipetri/athena
  • toheintz/athena
  • gfazzino/athena
  • goetz/athena-acts
  • muschmid/athena
  • yazhou/athena
  • alarnold/athena
  • djuarezg/athena
  • mdacunha/athena
  • falves/athena
  • wlai/athena
  • alecrhys/athena
  • rohasan/athena
  • asickles/athena
  • mborodin/athena
  • novotnyp/athena
  • lvicenik/athena
  • ibenaoum/athena
  • adsalvad/athena
  • christog/athena
  • frcastig/athena
  • tflee/athena
  • zetao/athena
  • mfarzali/athena
  • llarson/athena
  • kkazakov/athena
  • pusharma/athena
  • jusilva/athena
  • ehampshi/athena
  • tomoya/athena-low-pt-muon-rec
  • gpinheir/athena
  • exochell/my-athena
  • vchabala/athena
  • hshaddix/athena-hshaddix
  • mojeda/athena
  • jecifuen/athena
  • jlieberm/athena
  • misavic/athena
  • chhultqu/athena
  • nsur/athena-lund
  • jlai/athena
  • nshtokha/athena
  • camccrac/athena
  • pmourafr/athena
  • yuxuanz/local-athena
  • yukari/athena
  • sizumiya/athena
  • mnegrini/athena
  • zhubacek/athena
  • akraus/athena
  • rkavak/athena
  • sawyer/athena
  • yanqiw/athena-acts-for-run-3-silicon-tracking
  • mfilipig/athena
  • fdejean/athena
  • gipoddar/athena
  • zrokavec/athena
  • ssuravar/athena
  • beyeo/athena
  • gsalvi/athena
  • vpires/athena-vasco
  • mtancock/athena-2
  • sutuncay/athena
  • ywng/athena
  • fballi/athena
  • ndiasper/athena
  • stlin/athena
  • hadavand/athena
1578 results
Show changes
Commits on Source (6)
Showing
with 774 additions and 606 deletions
......@@ -164,10 +164,10 @@ def createPriVertexingFlags():
flags.addFlag("maxAbsEta", 9999.0)
flags.addFlag("maxD0", 4.0 * Units.mm)
flags.addFlag("maxNPixelHoles", 1)
flags.addFlag("maxSigmaD0", 5.0)
flags.addFlag("maxSigmaZ0SinTheta", 10.0)
flags.addFlag("maxSigmaD0", 5.0 * Units.mm)
flags.addFlag("maxSigmaZ0SinTheta", 10.0 * Units.mm)
flags.addFlag("maxZ0", 1000.0 * Units.mm)
flags.addFlag("maxZ0SinTheta", 1000.0)
flags.addFlag("maxZ0SinTheta", 1000.0 * Units.mm)
flags.addFlag("minNInnermostLayerHits", 0)
flags.addFlag("minNPixelHits", 1)
flags.addFlag("minNSctHits", 4)
......@@ -175,6 +175,7 @@ def createPriVertexingFlags():
flags.addFlag("minNTrtHits", 0)
flags.addFlag("minPt", 500.0 * Units.MeV)
flags.addFlag("maxZinterval", 3)
# MaxTracks cuts are specific to the IterativeFinding config
flags.addFlag("doMaxTracksCut", True)
flags.addFlag("MaxTracks", 3000)
# string to store the setup for primary vertexing.
......@@ -195,5 +196,13 @@ def createITkPriVertexingFlags():
flags = createPriVertexingFlags()
flags.minNTrtHits = 0
flags.minPt = 900.0 * Units.MeV
flags.maxD0 = 1.0 * Units.mm
flags.maxSigmaD0 = 0.35 * Units.mm
flags.maxSigmaZ0SinTheta = 2.5 * Units.mm
flags.minNPixelHits = 3
flags.minNSctHits = 0
flags.minNSiHits = 7
flags.maxZinterval = 0.5
return flags
/*
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
*/
///////////////////////////////////////////////////////////////////
......@@ -86,58 +86,58 @@ public:
private:
TimedHitCollection<SiHit>* m_thpcsi;
TimedHitCollection<SiHit>* m_thpcsi{};
ServiceHandle<IAthRNGSvc> m_rndmSvc{this, "RndmSvc", "AthRNGSvc", ""}; //!< Random number service
std::string m_randomEngineName; //!< Name of the random number stream
StringProperty m_randomEngineName{this, "RndmEngine", "FastPixelDigitization"}; //!< Name of the random number stream
const PixelID* m_pixel_ID; //!< Handle to the ID helper
const PixelID* m_pixel_ID{}; //!< Handle to the ID helper
ToolHandle<InDet::ClusterMakerTool> m_clusterMaker; //!< ToolHandle to ClusterMaker
PublicToolHandle<InDet::ClusterMakerTool> m_clusterMaker{this, "ClusterMaker", "InDet::ClusterMakerTool/FatrasClusterMaker"}; //!< ToolHandle to ClusterMaker
ToolHandle<ISiLorentzAngleTool> m_lorentzAngleTool{this, "LorentzAngleTool", "PixelLorentzAngleTool", "Tool to retreive Lorentz angle"};
bool m_pixUseClusterMaker; //!< use the pixel cluster maker or not
BooleanProperty m_pixUseClusterMaker{this, "PixelUseClusterMaker", true}; //!< use the pixel cluster maker or not
InDet::PixelClusterContainer* m_pixelClusterContainer; //!< the PixelClusterContainer
std::string m_pixel_SiClustersName;
InDet::PixelClusterContainer* m_pixelClusterContainer{}; //!< the PixelClusterContainer
StringProperty m_pixel_SiClustersName{this, "PixelClusterContainerName", "PixelClusters"};
ServiceHandle<PileUpMergeSvc> m_mergeSvc; /**< PileUp Merge service */
int m_HardScatterSplittingMode; /**< Process all SiHit or just those from signal or background events */
bool m_HardScatterSplittingSkipper;
ServiceHandle<PileUpMergeSvc> m_mergeSvc{this, "MergeSvc", "PileUpMergeSvc"}; /**< PileUp Merge service */
IntegerProperty m_HardScatterSplittingMode{this, "HardScatterSplittingMode", 0, "Control pileup & signal splitting"}; /**< Process all SiHit or just those from signal or background events */
bool m_HardScatterSplittingSkipper{false};
typedef std::multimap<IdentifierHash, InDet::PixelCluster*> Pixel_detElement_RIO_map;
Pixel_detElement_RIO_map* m_pixelClusterMap;
std::string m_prdTruthNamePixel;
PRD_MultiTruthCollection* m_pixPrdTruth; //!< the PRD truth map for Pixel measurements
ToolHandle< InDet::PixelGangedAmbiguitiesFinder > m_gangedAmbiguitiesFinder;
std::string m_inputObjectName; //! name of the sub event hit collections.
std::vector<SiHitCollection*> m_siHitCollList;
double m_pixTanLorentzAngleScalor; //!< scale the lorentz angle effect
bool m_pixEmulateSurfaceCharge; //!< emulate the surface charge
double m_pixSmearPathLength; //!< the 2. model parameter: smear the path
bool m_pixSmearLandau; //!< if true : landau else: gauss
double m_pixMinimalPathCut; //!< the 1. model parameter: minimal 3D path in pixel
double m_pixPathLengthTotConv; //!< from path length to tot
bool m_pixModuleDistortion; //!< simulationn of module bowing
std::vector<double> m_pixPhiError; //!< phi error when not using the ClusterMaker
std::vector<double> m_pixEtaError; //!< eta error when not using the ClusterMaker
int m_pixErrorStrategy; //!< error strategy for the ClusterMaker
double m_pixDiffShiftBarrX; //Shift of the track to improve cluster size description
double m_pixDiffShiftBarrY; //Shift of the track to improve cluster size description
double m_pixDiffShiftEndCX; //Shift of the track to improve cluster size description
double m_pixDiffShiftEndCY; //Shift of the track to improve cluster size description
double m_ThrConverted;
bool m_mergeCluster; //!< enable the merging of neighbour Pixel clusters >
short m_splitClusters; //!< merging parameter used to define two clusters as neighbour >
bool m_acceptDiagonalClusters; //!< merging parameter used to define two clusters as neighbour >
std::string m_pixelClusterAmbiguitiesMapName;
InDet::PixelGangedClusterAmbiguities* m_ambiguitiesMap;
Pixel_detElement_RIO_map* m_pixelClusterMap{};
StringProperty m_prdTruthNamePixel{this, "TruthNamePixel", "PRD_MultiTruthPixel"};
PRD_MultiTruthCollection* m_pixPrdTruth{}; //!< the PRD truth map for Pixel measurements
PublicToolHandle< InDet::PixelGangedAmbiguitiesFinder > m_gangedAmbiguitiesFinder{this, "gangedAmbiguitiesFinder", "InDet::PixelGangedAmbiguitiesFinder"};
StringProperty m_inputObjectName{this, "InputObjectName", "PixelHits"}; //! name of the sub event hit collections.
std::vector<SiHitCollection*> m_siHitCollList{};
double m_pixTanLorentzAngleScalor{1.}; //!< scale the lorentz angle effect
BooleanProperty m_pixEmulateSurfaceCharge{this, "PixelEmulateSurfaceCharge", true}; //!< emulate the surface charge
DoubleProperty m_pixSmearPathLength{this, "PixelSmearPathSigma", 0.01}; //!< the 2. model parameter: smear the path
BooleanProperty m_pixSmearLandau{this, "PixelSmearLandau", true}; //!< if true : landau else: gauss
DoubleProperty m_pixMinimalPathCut{this, "PixelMinimalPathLength", 0.06}; //!< the 1. model parameter: minimal 3D path in pixel
DoubleProperty m_pixPathLengthTotConv{this, "PixelPathLengthTotConversion", 125.}; //!< from path length to tot
BooleanProperty m_pixModuleDistortion{this, "PixelEmulateModuleDistortion", true}; //!< simulationn of module bowing
DoubleArrayProperty m_pixPhiError{this, "PixelErrorPhi", {} }; //!< phi error when not using the ClusterMaker
DoubleArrayProperty m_pixEtaError{this, "PixelErrorEta", {} }; //!< eta error when not using the ClusterMaker
IntegerProperty m_pixErrorStrategy{this, "PixelErrorStrategy", 2}; //!< error strategy for the ClusterMaker
DoubleProperty m_pixDiffShiftBarrX{this, "PixDiffShiftBarrX", 0.005}; //Shift of the track to improve cluster size description
DoubleProperty m_pixDiffShiftBarrY{this, "PixDiffShiftBarrY", 0.005}; //Shift of the track to improve cluster size description
DoubleProperty m_pixDiffShiftEndCX{this, "PixDiffShiftEndCX", 0.008}; //Shift of the track to improve cluster size description
DoubleProperty m_pixDiffShiftEndCY{this, "PixDiffShiftEndCY", 0.008}; //Shift of the track to improve cluster size description
DoubleProperty m_ThrConverted{this, "ThrConverted", 50000};
bool m_mergeCluster{true}; //!< enable the merging of neighbour Pixel clusters >
short m_splitClusters{0}; //!< merging parameter used to define two clusters as neighbour >
bool m_acceptDiagonalClusters{true}; //!< merging parameter used to define two clusters as neighbour >
StringProperty m_pixelClusterAmbiguitiesMapName{this, "PixelClusterAmbiguitiesMapName", "PixelClusterAmbiguitiesMap"};
InDet::PixelGangedClusterAmbiguities* m_ambiguitiesMap{};
ServiceHandle<InDetDD::IPixelReadoutManager> m_pixelReadout
{this, "PixelReadoutManager", "PixelReadoutManager", "Pixel readout manager" };
......@@ -157,7 +157,7 @@ private:
PixelFastDigitizationTool& operator=(const PixelFastDigitizationTool&);
ToolHandle<Trk::IModuleStepper> m_digitizationStepper;
PublicToolHandle<Trk::IModuleStepper> m_digitizationStepper{this, "DigitizationStepper", "Trk::PlanarModuleStepper"};
Trk::DigitizationModule * buildDetectorModule(const InDetDD::SiDetectorElement* ) const;
......
......@@ -2,7 +2,7 @@
/*
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
*/
#ifndef FASTSIDIGITZATION_SCT_FASTDIGITZATIONTOOL_H
......@@ -102,48 +102,47 @@ public:
private:
StatusCode digitize(const EventContext& ctx);
StatusCode createOutputContainers();
bool NeighbouringClusters(const std::vector<Identifier>& potentialClusterRDOList, const InDet::SCT_Cluster *existingCluster) const;
void Diffuse(HepGeom::Point3D<double>& localEntry, HepGeom::Point3D<double>& localExit, double shiftX, double shiftY ) const;
std::string m_inputObjectName; //! name of the sub event hit collections.
StringProperty m_inputObjectName{this, "InputObjectName", "SCT_Hits", "Input Object name"}; //! name of the sub event hit collections.
std::vector<SiHitCollection*> m_siHitCollList;
const SCT_ID* m_sct_ID; //!< Handle to the ID helper
ServiceHandle<PileUpMergeSvc> m_mergeSvc; //!< PileUp Merge service
int m_HardScatterSplittingMode; /**< Process all SiHit or just those from signal or background events */
bool m_HardScatterSplittingSkipper;
const SCT_ID* m_sct_ID{}; //!< Handle to the ID helper
ServiceHandle<PileUpMergeSvc> m_mergeSvc{this, "MergeSvc", "PileUpMergeSvc", "Merge service"}; //!< PileUp Merge service
IntegerProperty m_HardScatterSplittingMode{this, "HardScatterSplittingMode", 0, "Control pileup & signal splitting"}; /**< Process all SiHit or just those from signal or background events */
bool m_HardScatterSplittingSkipper{false};
ServiceHandle<IAthRNGSvc> m_rndmSvc{this, "RndmSvc", "AthRNGSvc", ""}; //!< Random number service
std::string m_randomEngineName; //!< Name of the random number stream
StringProperty m_randomEngineName{this, "RndmEngine", "FastSCT_Digitization"}; //!< Name of the random number stream
TimedHitCollection<SiHit>* m_thpcsi;
TimedHitCollection<SiHit>* m_thpcsi{};
ToolHandle<InDet::ClusterMakerTool> m_clusterMaker;
PublicToolHandle<InDet::ClusterMakerTool> m_clusterMaker{this, "ClusterMaker", "InDet::ClusterMakerTool"};
ToolHandle<ISiLorentzAngleTool> m_lorentzAngleTool{this, "LorentzAngleTool", "SiLorentzAngleTool/SCTLorentzAngleTool", "Tool to retreive Lorentz angle"};
typedef std::multimap<IdentifierHash, InDet::SCT_Cluster*> SCT_detElement_RIO_map;
SCT_detElement_RIO_map* m_sctClusterMap;
SCT_detElement_RIO_map* m_sctClusterMap{};
SG::WriteHandle<InDet::SCT_ClusterContainer> m_sctClusterContainer; //!< the SCT_ClusterContainer
SG::WriteHandle<PRD_MultiTruthCollection> m_sctPrdTruth; //!< the PRD truth map for SCT measurements
SG::WriteHandleKey<InDet::SCT_ClusterContainer> m_sctClusterContainerKey{this, "SCT_ClusterContainerName", "SCT_Clusters"}; //!< the SCT_ClusterContainer
SG::WriteHandleKey<PRD_MultiTruthCollection> m_sctPrdTruthKey{this, "TruthNameSCT", "PRD_MultiTruthSCT"}; //!< the PRD truth map for SCT measurements
SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};
double m_sctSmearPathLength; //!< the 2. model parameter: smear the path
bool m_sctSmearLandau; //!< if true : landau else: gauss
bool m_sctEmulateSurfaceCharge; //!< emulate the surface charge
double m_sctTanLorentzAngleScalor; //!< scale the lorentz angle effect
bool m_sctAnalogStripClustering; //!< not being done in ATLAS: analog strip clustering
int m_sctErrorStrategy; //!< error strategy for the ClusterMaker
bool m_sctRotateEC;
bool m_mergeCluster; //!< enable the merging of neighbour SCT clusters >
double m_DiffusionShiftX_barrel;
double m_DiffusionShiftY_barrel;
double m_DiffusionShiftX_endcap;
double m_DiffusionShiftY_endcap;
double m_sctMinimalPathCut; //!< the 1. model parameter: minimal 3D path in strip
DoubleProperty m_sctSmearPathLength{this, "SCT_SmearPathSigma", 0.01}; //!< the 2. model parameter: smear the path
BooleanProperty m_sctSmearLandau{this, "SCT_SmearLandau", true}; //!< if true : landau else: gauss
BooleanProperty m_sctEmulateSurfaceCharge{this, "EmulateSurfaceCharge", true}; //!< emulate the surface charge
DoubleProperty m_sctTanLorentzAngleScalor{this, "SCT_ScaleTanLorentzAngle", 1.}; //!< scale the lorentz angle effect
BooleanProperty m_sctAnalogStripClustering{this, "SCT_AnalogClustering", false}; //!< not being done in ATLAS: analog strip clustering
IntegerProperty m_sctErrorStrategy{this, "SCT_ErrorStrategy", 2}; //!< error strategy for the ClusterMaker
BooleanProperty m_sctRotateEC{this, "SCT_RotateEndcapClusters", true};
bool m_mergeCluster{true}; //!< enable the merging of neighbour SCT clusters >
DoubleProperty m_DiffusionShiftX_barrel{this, "DiffusionShiftX_barrel",4 };
DoubleProperty m_DiffusionShiftY_barrel{this, "DiffusionShiftY_barrel", 4};
DoubleProperty m_DiffusionShiftX_endcap{this, "DiffusionShiftX_endcap", 15};
DoubleProperty m_DiffusionShiftY_endcap{this, "DiffusionShiftY_endcap", 15};
DoubleProperty m_sctMinimalPathCut{this, "SCT_MinimalPathLength", 90.}; //!< the 1. model parameter: minimal 3D path in strip
Amg::Vector3D stepToStripBorder(const InDetDD::SiDetectorElement& sidetel,
//const Trk::Surface& surface,
......
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
from AthenaCommon.CfgGetter import addTool
addTool("FastSiDigitization.FastSiDigitizationConfig.PixelFastDigitizationTool" , "PixelFastDigitizationTool")
addTool("FastSiDigitization.FastSiDigitizationConfig.PixelFastDigitizationToolHS" , "PixelFastDigitizationToolHS")
addTool("FastSiDigitization.FastSiDigitizationConfig.PixelFastDigitizationToolPU" , "PixelFastDigitizationToolPU")
addTool("FastSiDigitization.FastSiDigitizationConfig.PixelFastDigitizationToolSplitNoMergePU", "PixelFastDigitizationToolSplitNoMergePU")
addTool("FastSiDigitization.FastSiDigitizationConfig.getFastPixelRange" , "FastPixelRange")
addTool("FastSiDigitization.FastSiDigitizationConfigLegacy.PixelFastDigitizationTool" , "PixelFastDigitizationTool")
addTool("FastSiDigitization.FastSiDigitizationConfigLegacy.PixelFastDigitizationToolHS" , "PixelFastDigitizationToolHS")
addTool("FastSiDigitization.FastSiDigitizationConfigLegacy.PixelFastDigitizationToolPU" , "PixelFastDigitizationToolPU")
addTool("FastSiDigitization.FastSiDigitizationConfigLegacy.PixelFastDigitizationToolSplitNoMergePU", "PixelFastDigitizationToolSplitNoMergePU")
addTool("FastSiDigitization.FastSiDigitizationConfigLegacy.getFastPixelRange" , "FastPixelRange")
addTool("FastSiDigitization.FastSiDigitizationConfig.FastClusterMakerTool" , "FastClusterMakerTool")
addTool("FastSiDigitization.FastSiDigitizationConfig.SCT_FastDigitizationTool" , "SCT_FastDigitizationTool")
addTool("FastSiDigitization.FastSiDigitizationConfig.SCT_FastDigitizationToolHS" , "SCT_FastDigitizationToolHS")
addTool("FastSiDigitization.FastSiDigitizationConfig.SCT_FastDigitizationToolPU" , "SCT_FastDigitizationToolPU")
addTool("FastSiDigitization.FastSiDigitizationConfig.SCT_FastDigitizationToolSplitNoMergePU" , "SCT_FastDigitizationToolSplitNoMergePU")
addTool("FastSiDigitization.FastSiDigitizationConfig.getFastSCTRange" , "FastSCTRange" )
addTool("FastSiDigitization.FastSiDigitizationConfigLegacy.FastClusterMakerTool" , "FastClusterMakerTool")
addTool("FastSiDigitization.FastSiDigitizationConfigLegacy.SCT_FastDigitizationTool" , "SCT_FastDigitizationTool")
addTool("FastSiDigitization.FastSiDigitizationConfigLegacy.SCT_FastDigitizationToolHS" , "SCT_FastDigitizationToolHS")
addTool("FastSiDigitization.FastSiDigitizationConfigLegacy.SCT_FastDigitizationToolPU" , "SCT_FastDigitizationToolPU")
addTool("FastSiDigitization.FastSiDigitizationConfigLegacy.SCT_FastDigitizationToolSplitNoMergePU" , "SCT_FastDigitizationToolSplitNoMergePU")
addTool("FastSiDigitization.FastSiDigitizationConfigLegacy.getFastSCTRange" , "FastSCTRange" )
# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
# The earliest bunch crossing time for which interactions will be sent
# to the Fast Pixel Digitization code.
def FastPixel_FirstXing():
FirstXing = 0
from AthenaCommon.BeamFlags import jobproperties
if jobproperties.Beam.estimatedLuminosity()> 0.5e33:
FirstXing = 0
return FirstXing
# The latest bunch crossing time for which interactions will be sent
# to the Fast Pixel Digitization code.
def FastPixel_LastXing():
LastXing = 0
from AthenaCommon.BeamFlags import jobproperties
if jobproperties.Beam.estimatedLuminosity()> 0.5e33:
if jobproperties.Beam.bunchSpacing.get_Value() > 50 :
LastXing = 0
else :
LastXing = 0
return LastXing
# The earliest bunch crossing time for which interactions will be sent
# to the Fast SCT Digitization code.
def FastSCT_FirstXing():
return 0
# The latest bunch crossing time for which interactions will be sent
# to the Fast SCT Digitization code.
def FastSCT_LastXing():
return 0
def FastClusterMakerTool(name="FastClusterMakerTool", **kwargs):
from Digitization.DigitizationFlags import digitizationFlags
from AtlasGeoModel.CommonGMJobProperties import CommonGeometryFlags as commonGeoFlags
from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags as geoFlags
#################################
# Config pixel conditions setup #
#################################
from IOVDbSvc.CondDB import conddb
from AthenaCommon.AppMgr import ToolSvc
from AthenaCommon.AlgSequence import AthSequencer
condSeq = AthSequencer("AthCondSeq")
#################
# Module status #
#################
if not hasattr(condSeq, "PixelConfigCondAlg"):
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelConfigCondAlg
IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_2016.dat"
# ITk:
if geoFlags.isSLHC():
IdMappingDat = "ITk_Atlas_IdMapping.dat"
if "BrlIncl4.0_ref" == commonGeoFlags.GeoType():
IdMappingDat = "ITk_Atlas_IdMapping_InclBrl4.dat"
elif "IBrlExt4.0ref" == commonGeoFlags.GeoType():
IdMappingDat = "ITk_Atlas_IdMapping_IExtBrl4.dat"
elif "BrlExt4.0_ref" == commonGeoFlags.GeoType():
IdMappingDat = "ITk_Atlas_IdMapping_ExtBrl4.dat"
elif "BrlExt3.2_ref" == commonGeoFlags.GeoType():
IdMappingDat = "ITk_Atlas_IdMapping_ExtBrl32.dat"
elif (geoFlags.isIBL() is False):
IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping.dat"
else:
# Planar IBL
if (geoFlags.IBLLayout() == "planar"):
if (geoFlags.isDBM() is True):
IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_inclIBL_DBM.dat"
else:
IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_inclIBL.dat"
# Hybrid IBL plus DBM
elif (geoFlags.IBLLayout() == "3D"):
IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_Run2.dat"
condSeq += PixelConfigCondAlg(name="PixelConfigCondAlg",
ReadDeadMapKey = "",
CablingMapFileName=IdMappingDat)
if not hasattr(condSeq, "PixelDeadMapCondAlg"):
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelDeadMapCondAlg
condSeq += PixelDeadMapCondAlg(name="PixelDeadMapCondAlg",ReadKey="")
#FIXME: at some point we should move away from being dependent on the experimentalDigi flags.
if 'doFastSCT_Digi' in digitizationFlags.experimentalDigi() and 'doFastPixelDigi' not in digitizationFlags.experimentalDigi():
# Set empty Folder
if commonGeoFlags.Run()=="RUN3":
if not hasattr(condSeq, 'PixelChargeLUTCalibCondAlg'):
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelChargeLUTCalibCondAlg
condSeq += PixelChargeLUTCalibCondAlg(name="PixelChargeLUTCalibCondAlg", ReadKey="")
else:
if not hasattr(condSeq, 'PixelChargeCalibCondAlg'):
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelChargeCalibCondAlg
condSeq += PixelChargeCalibCondAlg(name="PixelChargeCalibCondAlg", ReadKey="")
else:
#####################
# Calibration Setup #
#####################
if commonGeoFlags.Run()=="RUN3":
if not conddb.folderRequested("/PIXEL/ChargeCalibration"):
conddb.addFolder("PIXEL_OFL", "/PIXEL/ChargeCalibration", className="CondAttrListCollection")
if not hasattr(condSeq, 'PixelChargeLUTCalibCondAlg'):
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelChargeLUTCalibCondAlg
condSeq += PixelChargeLUTCalibCondAlg(name="PixelChargeLUTCalibCondAlg", ReadKey="/PIXEL/ChargeCalibration")
else:
if not conddb.folderRequested("/PIXEL/PixCalib"):
conddb.addFolderSplitOnline("PIXEL", "/PIXEL/Onl/PixCalib", "/PIXEL/PixCalib", className="CondAttrListCollection")
if not hasattr(condSeq, 'PixelChargeCalibCondAlg'):
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelChargeCalibCondAlg
condSeq += PixelChargeCalibCondAlg(name="PixelChargeCalibCondAlg", ReadKey="/PIXEL/PixCalib")
#####################
# Cabling map Setup #
#####################
if (conddb.dbmc=="OFLP200" and geoFlags.isIBL() is True) and not conddb.folderRequested("/PIXEL/HitDiscCnfg"):
conddb.addFolderSplitMC("PIXEL","/PIXEL/HitDiscCnfg","/PIXEL/HitDiscCnfg", className="AthenaAttributeList")
if not hasattr(condSeq, 'PixelHitDiscCnfgAlg'):
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelHitDiscCnfgAlg
condSeq += PixelHitDiscCnfgAlg(name="PixelHitDiscCnfgAlg")
if not conddb.folderRequested("/PIXEL/ReadoutSpeed"):
conddb.addFolderSplitMC("PIXEL","/PIXEL/ReadoutSpeed","/PIXEL/ReadoutSpeed", className="AthenaAttributeList")
if not hasattr(condSeq, 'PixelReadoutSpeedAlg'):
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelReadoutSpeedAlg
condSeq += PixelReadoutSpeedAlg(name="PixelReadoutSpeedAlg")
if not hasattr(condSeq, 'PixelCablingCondAlg'):
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelCablingCondAlg
condSeq += PixelCablingCondAlg(name="PixelCablingCondAlg", ReadKey="")
if not conddb.folderRequested('/PIXEL/PixdEdx'):
conddb.addFolder("PIXEL_OFL", "/PIXEL/PixdEdx", className="AthenaAttributeList")
if not conddb.folderRequested("/PIXEL/PixReco"):
conddb.addFolder("PIXEL_OFL", "/PIXEL/PixReco", className="DetCondCFloat")
if not conddb.folderRequested("/Indet/PixelDist"):
conddb.addFolder("INDET", "/Indet/PixelDist", className="DetCondCFloat")
if not hasattr(condSeq, 'PixelOfflineCalibCondAlg'):
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelOfflineCalibCondAlg
condSeq += PixelOfflineCalibCondAlg(name="PixelOfflineCalibCondAlg", ReadKey="/PIXEL/PixReco")
PixelOfflineCalibCondAlg.InputSource = 2
if not hasattr(ToolSvc, "PixelLorentzAngleTool"):
from SiLorentzAngleTool.PixelLorentzAngleToolSetup import PixelLorentzAngleToolSetup
PixelLorentzAngleToolSetup()
if not hasattr(condSeq, 'PixelDistortionAlg'):
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelDistortionAlg
condSeq += PixelDistortionAlg(name="PixelDistortionAlg")
if not hasattr(condSeq, 'PixeldEdxAlg'):
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixeldEdxAlg
condSeq += PixeldEdxAlg(name="PixeldEdxAlg")
PixeldEdxAlg.ReadFromCOOL = True
from AthenaCommon import CfgMgr
return CfgMgr.InDet__ClusterMakerTool(name,**kwargs)
def commonPixelFastDigitizationConfig(name,**kwargs):
kwargs.setdefault("ClusterMaker", "FastClusterMakerTool")
# Import Digitization job properties
from Digitization.DigitizationFlags import digitizationFlags
from AtlasGeoModel.CommonGMJobProperties import CommonGeometryFlags as commonGeoFlags
kwargs.setdefault("RndmEngine", "FastPixelDigitization")
if digitizationFlags.doXingByXingPileUp():
kwargs.setdefault("FirstXing", FastPixel_FirstXing())
kwargs.setdefault("LastXing", FastPixel_LastXing() )
#################################
# Config pixel conditions setup #
#################################
from AthenaCommon.AlgSequence import AthSequencer
condSeq = AthSequencer("AthCondSeq")
#################
# Module status #
#################
if not hasattr(condSeq, "PixelConfigCondAlg"):
from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelConfigCondAlg
from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags as geoFlags
IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_2016.dat"
# ITk:
if geoFlags.isSLHC():
IdMappingDat = "ITk_Atlas_IdMapping.dat"
if "BrlIncl4.0_ref" == commonGeoFlags.GeoType():
IdMappingDat = "ITk_Atlas_IdMapping_InclBrl4.dat"
elif "IBrlExt4.0ref" == commonGeoFlags.GeoType():
IdMappingDat = "ITk_Atlas_IdMapping_IExtBrl4.dat"
elif "BrlExt4.0_ref" == commonGeoFlags.GeoType():
IdMappingDat = "ITk_Atlas_IdMapping_ExtBrl4.dat"
elif "BrlExt3.2_ref" == commonGeoFlags.GeoType():
IdMappingDat = "ITk_Atlas_IdMapping_ExtBrl32.dat"
elif (geoFlags.isIBL() is False):
IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping.dat"
else:
# Planar IBL
if (geoFlags.IBLLayout() == "planar"):
if (geoFlags.isDBM() is True):
IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_inclIBL_DBM.dat"
else:
IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_inclIBL.dat"
# Hybrid IBL plus DBM
elif (geoFlags.IBLLayout() == "3D"):
IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_Run2.dat"
condSeq += PixelConfigCondAlg(name="PixelConfigCondAlg",
ReadDeadMapKey = "",
CablingMapFileName=IdMappingDat)
# SiLorentzAngleTool for PixelFastDigitizationTool
from AthenaCommon.AppMgr import ToolSvc
if not hasattr(ToolSvc, "PixelLorentzAngleTool"):
from SiLorentzAngleTool.PixelLorentzAngleToolSetup import PixelLorentzAngleToolSetup
PixelLorentzAngleToolSetup()
kwargs.setdefault("LorentzAngleTool", ToolSvc.PixelLorentzAngleTool)
from AthenaCommon import CfgMgr
return CfgMgr.PixelFastDigitizationTool(name,**kwargs)
def commonSCT_FastDigitizationConfig(name,**kwargs):
# Setup the DCS folders and tool used in the sctSiliconConditionsTool
from SCT_ConditionsTools.SCT_DCSConditionsToolSetup import SCT_DCSConditionsToolSetup
sct_DCSConditionsToolSetup = SCT_DCSConditionsToolSetup()
sct_DCSConditionsToolSetup.setup()
kwargs.setdefault("ClusterMaker", "FastClusterMakerTool")
# Import Digitization job properties
from Digitization.DigitizationFlags import digitizationFlags
kwargs.setdefault("RndmEngine", "FastSCT_Digitization")
if digitizationFlags.doXingByXingPileUp():
kwargs.setdefault("FirstXing", FastSCT_FirstXing())
kwargs.setdefault("LastXing", FastSCT_LastXing() )
# Set up SCT_SiliconConditionsTool
from SCT_ConditionsTools.SCT_SiliconConditionsToolSetup import SCT_SiliconConditionsToolSetup
sct_SiliconConditionsToolSetup = SCT_SiliconConditionsToolSetup()
sct_SiliconConditionsToolSetup.setDcsTool(sct_DCSConditionsToolSetup.getTool())
sct_SiliconConditionsToolSetup.setup()
# Set up SCT_SiPropertiesTool
from SiPropertiesTool.SCT_SiPropertiesToolSetup import SCT_SiPropertiesToolSetup
sct_SiPropertiesToolSetup = SCT_SiPropertiesToolSetup()
sct_SiPropertiesToolSetup.setSiliconTool(sct_SiliconConditionsToolSetup.getTool())
sct_SiPropertiesToolSetup.setup()
# SiLorentzAngleTool for SCT_FastDigitizationTool
from SiLorentzAngleTool.SCTLorentzAngleToolSetup import SCTLorentzAngleToolSetup
sctLorentzAngleToolSetup = SCTLorentzAngleToolSetup()
kwargs.setdefault("LorentzAngleTool", sctLorentzAngleToolSetup.SCTLorentzAngleTool)
from AthenaCommon import CfgMgr
return CfgMgr.SCT_FastDigitizationTool(name,**kwargs)
######################################################################################
def PixelFastDigitizationTool(name="PixelFastDigitizationTool", **kwargs):
kwargs.setdefault("HardScatterSplittingMode", 0)
return commonPixelFastDigitizationConfig(name, **kwargs)
######################################################################################
def PixelFastDigitizationToolHS(name="PixelFastDigitizationToolHS", **kwargs):
kwargs.setdefault("HardScatterSplittingMode", 1)
return commonPixelFastDigitizationConfig(name, **kwargs)
######################################################################################
def PixelFastDigitizationToolPU(name="PixelFastDigitizationToolPU", **kwargs):
kwargs.setdefault("PixelClusterContainerName", "Pixel_PU_Clusters")
kwargs.setdefault("TruthNamePixel", "PRD_MultiTruthPixel_PU")
kwargs.setdefault("HardScatterSplittingMode", 2)
return commonPixelFastDigitizationConfig(name, **kwargs)
######################################################################################
def PixelFastDigitizationToolSplitNoMergePU(name="PixelFastDigitizationToolSplitNoMergePU", **kwargs):
kwargs.setdefault("InputObjectName", "PileupPixelHits")
kwargs.setdefault("PixelClusterContainerName", "PixelFast_PU_Clusters")
kwargs.setdefault("TruthNamePixel", "PRD_MultiTruthPixel_PU")
kwargs.setdefault("HardScatterSplittingMode", 0)
kwargs.setdefault("PixelClusterAmbiguitiesMapName", "PixelClusterAmbiguitiesMapPU")
return commonPixelFastDigitizationConfig(name, **kwargs)
######################################################################################
def SCT_FastDigitizationTool(name="SCT_FastDigitizationTool", **kwargs):
kwargs.setdefault("HardScatterSplittingMode", 0)
return commonSCT_FastDigitizationConfig(name,**kwargs)
######################################################################################
def SCT_FastDigitizationToolHS(name="SCT_FastDigitizationToolHS",**kwargs):
kwargs.setdefault("HardScatterSplittingMode", 1)
return commonSCT_FastDigitizationConfig(name,**kwargs)
######################################################################################
def SCT_FastDigitizationToolPU(name="SCT_FastDigitizationToolPU",**kwargs):
kwargs.setdefault("SCT_ClusterContainerName", "SCT_PU_Clusters")
kwargs.setdefault("TruthNameSCT", "PRD_MultiTruthSCT_PU")
kwargs.setdefault("HardScatterSplittingMode", 2)
return commonSCT_FastDigitizationConfig(name,**kwargs)
######################################################################################
def SCT_FastDigitizationToolSplitNoMergePU(name="SCT_FastDigitizationToolSplitNoMergePU",**kwargs):
kwargs.setdefault("InputObjectName", "PileupSCT_Hits")
kwargs.setdefault("SCT_ClusterContainerName", "SCT_PU_Clusters")
kwargs.setdefault("TruthNameSCT", "PRD_MultiTruthSCT_PU")
kwargs.setdefault("HardScatterSplittingMode", 0)
return commonSCT_FastDigitizationConfig(name,**kwargs)
######################################################################################
def getFastPixelRange(name="FastPixelRange" , **kwargs):
kwargs.setdefault('FirstXing', FastPixel_FirstXing() )
kwargs.setdefault('LastXing', FastPixel_LastXing() )
kwargs.setdefault('CacheRefreshFrequency', 1.0 ) #default 0 no dataproxy reset
kwargs.setdefault('ItemList', ["SiHitCollection#PixelHits"] )
from AthenaCommon import CfgMgr
return CfgMgr.PileUpXingFolder(name, **kwargs)
######################################################################################
def getFastSCTRange(name="FastSCTRange" , **kwargs):
#this is the time of the xing in ns
kwargs.setdefault('FirstXing', FastSCT_FirstXing() )
kwargs.setdefault('LastXing', FastSCT_LastXing() )
kwargs.setdefault('CacheRefreshFrequency', 1.0 ) #default 0 no dataproxy reset
kwargs.setdefault('ItemList', ["SiHitCollection#SCT_Hits"] )
from AthenaCommon import CfgMgr
return CfgMgr.PileUpXingFolder(name, **kwargs)
......@@ -68,69 +68,8 @@ using namespace InDet;
PixelFastDigitizationTool::PixelFastDigitizationTool(const std::string &type, const std::string &name,
const IInterface* parent):
PileUpToolBase(type, name, parent),
m_thpcsi(nullptr),
m_randomEngineName("FastPixelDigitization"),
m_pixel_ID(nullptr),
m_clusterMaker("InDet::ClusterMakerTool/FatrasClusterMaker"),
m_pixUseClusterMaker(true),
m_pixelClusterContainer(nullptr),
m_pixel_SiClustersName("PixelClusters"),
m_mergeSvc("PileUpMergeSvc",name),
m_HardScatterSplittingMode(0),
m_HardScatterSplittingSkipper(false),
m_pixelClusterMap(nullptr),
m_prdTruthNamePixel("PRD_MultiTruthPixel"),
m_pixPrdTruth(nullptr),
// m_pixelCondSummarySvc("PixelConditionsSummarySvc", name),
m_gangedAmbiguitiesFinder("InDet::PixelGangedAmbiguitiesFinder"),
m_inputObjectName("PixelHits"),
m_pixTanLorentzAngleScalor(1.),
m_pixEmulateSurfaceCharge(true),
m_pixSmearPathLength(0.01),
m_pixSmearLandau(true),
m_pixMinimalPathCut(0.06),// Optimized choice of threshold (old 0.02)
m_pixPathLengthTotConv(125.),
m_pixModuleDistortion(true), // default: false
m_pixErrorStrategy(2),
m_pixDiffShiftBarrX(0.005),
m_pixDiffShiftBarrY(0.005),
m_pixDiffShiftEndCX(0.008),
m_pixDiffShiftEndCY(0.008),
m_ThrConverted(50000),
m_mergeCluster(true),
m_splitClusters(0),
m_acceptDiagonalClusters(true),
m_pixelClusterAmbiguitiesMapName("PixelClusterAmbiguitiesMap"),
m_ambiguitiesMap(nullptr),
m_digitizationStepper("Trk::PlanarModuleStepper")
PileUpToolBase(type, name, parent)
{
declareProperty("RndmEngine" , m_randomEngineName, "Random engine name");
declareProperty("ClusterMaker" , m_clusterMaker);
declareProperty("PixelUseClusterMaker" , m_pixUseClusterMaker);
declareProperty("PixelClusterContainerName" , m_pixel_SiClustersName);
declareProperty("MergeSvc" , m_mergeSvc, "Merge service" );
declareProperty("TruthNamePixel" , m_prdTruthNamePixel);
//declareProperty("PixelConditionsSummarySvc" , m_pixelCondSummarySvc, "Name of the pixel conditions service");
declareProperty("gangedAmbiguitiesFinder" , m_gangedAmbiguitiesFinder);
declareProperty("InputObjectName" , m_inputObjectName, "Input Object name" );
declareProperty("PixelEmulateSurfaceCharge" , m_pixEmulateSurfaceCharge);
declareProperty("PixelSmearPathSigma" , m_pixSmearPathLength);
declareProperty("PixelSmearLandau" , m_pixSmearLandau);
declareProperty("PixelMinimalPathLength" , m_pixMinimalPathCut);
declareProperty("PixelPathLengthTotConversion" , m_pixPathLengthTotConv);
declareProperty("PixelEmulateModuleDistortion" , m_pixModuleDistortion);
declareProperty("PixelErrorPhi" , m_pixPhiError);
declareProperty("PixelErrorEta" , m_pixEtaError);
declareProperty("PixelErrorStrategy" , m_pixErrorStrategy);
declareProperty("PixelClusterAmbiguitiesMapName" , m_pixelClusterAmbiguitiesMapName);
declareProperty("HardScatterSplittingMode" , m_HardScatterSplittingMode, "Control pileup & signal splitting" );
declareProperty("DigitizationStepper", m_digitizationStepper);
declareProperty("PixDiffShiftBarrX", m_pixDiffShiftBarrX);
declareProperty("PixDiffShiftBarrY", m_pixDiffShiftBarrY);
declareProperty("PixDiffShiftEndCX", m_pixDiffShiftEndCX);
declareProperty("PixDiffShiftEndCY", m_pixDiffShiftEndCY);
declareProperty("ThrConverted", m_ThrConverted);
}
PixelFastDigitizationTool::~PixelFastDigitizationTool() {
......
......@@ -54,51 +54,8 @@ SCT_FastDigitizationTool::SCT_FastDigitizationTool(const std::string& type,
const std::string& name,
const IInterface* parent) :
PileUpToolBase(type, name, parent),
m_inputObjectName("SCT_Hits"),
m_sct_ID(nullptr),
m_mergeSvc("PileUpMergeSvc",name),
m_HardScatterSplittingMode(0),
m_HardScatterSplittingSkipper(false),
m_randomEngineName("FastSCT_Digitization"),
m_thpcsi(nullptr),
m_clusterMaker("InDet::ClusterMakerTool"),
m_sctClusterMap(nullptr),
m_sctClusterContainer("SCT_Clusters"),
m_sctPrdTruth("PRD_MultiTruthSCT"),
m_sctSmearPathLength(0.01),
m_sctSmearLandau(true),
m_sctEmulateSurfaceCharge(true),
m_sctTanLorentzAngleScalor(1.),
m_sctAnalogStripClustering(false),
m_sctErrorStrategy(2),
m_sctRotateEC(true),
m_mergeCluster(true),
m_DiffusionShiftX_barrel(4),
m_DiffusionShiftY_barrel(4),
m_DiffusionShiftX_endcap(15),
m_DiffusionShiftY_endcap(15),
m_sctMinimalPathCut(90.)
PileUpToolBase(type, name, parent)
{
declareProperty("InputObjectName" , m_inputObjectName, "Input Object name" );
declareProperty("MergeSvc" , m_mergeSvc, "Merge service" );
declareProperty("RndmEngine" , m_randomEngineName, "Random Number Engine used in SCT digitization" );
declareProperty("ClusterMaker" , m_clusterMaker);
declareProperty("SCT_ClusterContainerName" , m_sctClusterContainer);
declareProperty("TruthNameSCT" , m_sctPrdTruth);
declareProperty("SCT_SmearPathSigma" , m_sctSmearPathLength);
declareProperty("SCT_SmearLandau" , m_sctSmearLandau);
declareProperty("EmulateSurfaceCharge" , m_sctEmulateSurfaceCharge);
declareProperty("SCT_ScaleTanLorentzAngle" , m_sctTanLorentzAngleScalor);
declareProperty("SCT_AnalogClustering" , m_sctAnalogStripClustering);
declareProperty("SCT_ErrorStrategy" , m_sctErrorStrategy);
declareProperty("SCT_RotateEndcapClusters" , m_sctRotateEC);
declareProperty("SCT_MinimalPathLength" , m_sctMinimalPathCut);
declareProperty("DiffusionShiftX_barrel", m_DiffusionShiftX_barrel);
declareProperty("DiffusionShiftY_barrel", m_DiffusionShiftY_barrel);
declareProperty("DiffusionShiftX_endcap", m_DiffusionShiftX_endcap);
declareProperty("DiffusionShiftY_endcap", m_DiffusionShiftY_endcap);
declareProperty("HardScatterSplittingMode" , m_HardScatterSplittingMode, "Control pileup & signal splitting" );
}
//----------------------------------------------------------------------
......@@ -121,6 +78,8 @@ StatusCode SCT_FastDigitizationTool::initialize()
{
ATH_MSG_DEBUG ( "Input objects: '" << m_inputObjectName << "'" );
}
ATH_CHECK(m_sctClusterContainerKey.initialize());
ATH_CHECK(m_sctPrdTruthKey.initialize());
// retrieve the offline cluster maker : for pixel and/or sct
if (!m_clusterMaker.empty())
......@@ -192,44 +151,8 @@ StatusCode SCT_FastDigitizationTool::processBunchXing(int bunchXing,
}
StatusCode SCT_FastDigitizationTool::createOutputContainers()
{
if (!m_sctClusterContainer.isValid())
{
m_sctClusterContainer = std::make_unique<InDet::SCT_ClusterContainer>(m_sct_ID->wafer_hash_max());
if(!m_sctClusterContainer.isValid())
{
ATH_MSG_FATAL( "[ --- ] Could not create SCT_ClusterContainer");
return StatusCode::FAILURE;
}
}
m_sctClusterContainer->cleanup();
// --------------------------------------
// symlink the SCT Container
InDet::SiClusterContainer* symSiContainer=nullptr;
CHECK(evtStore()->symLink(m_sctClusterContainer.ptr(),symSiContainer));
ATH_MSG_DEBUG( "[ hitproc ] SCT_ClusterContainer symlinked to SiClusterContainer in StoreGate" );
// --------------------------------------
// truth info
if (!m_sctPrdTruth.isValid())
{
m_sctPrdTruth = std::make_unique<PRD_MultiTruthCollection>();
if (!m_sctPrdTruth.isValid())
{
ATH_MSG_FATAL("Could not record collection " << m_sctPrdTruth.name());
return StatusCode::FAILURE;
}
}
return StatusCode::SUCCESS;
}
StatusCode SCT_FastDigitizationTool::processAllSubEvents(const EventContext& ctx) {
CHECK(this->createOutputContainers());
// get the container(s)
using TimedHitCollList = PileUpMergeSvc::TimedList<SiHitCollection>::type;
......@@ -281,8 +204,6 @@ StatusCode SCT_FastDigitizationTool::processAllSubEvents(const EventContext& ctx
StatusCode SCT_FastDigitizationTool::mergeEvent(const EventContext& ctx)
{
CHECK(this->createOutputContainers());
if (m_thpcsi != nullptr)
{
CHECK(this->digitize(ctx));
......@@ -304,7 +225,16 @@ StatusCode SCT_FastDigitizationTool::mergeEvent(const EventContext& ctx)
StatusCode SCT_FastDigitizationTool::digitize(const EventContext& ctx)
{
// Set the RNG to use for this event.
// truth info
SG::WriteHandle< PRD_MultiTruthCollection > sctPrdTruth(m_sctPrdTruthKey, ctx);
sctPrdTruth = std::make_unique< PRD_MultiTruthCollection >();
if ( !sctPrdTruth.isValid() ) {
ATH_MSG_FATAL( "Could not record collection " << sctPrdTruth.name() );
return StatusCode::FAILURE;
}
ATH_MSG_DEBUG( "PRD_MultiTruthCollection " << sctPrdTruth.name() << " registered in StoreGate" );
// Set the RNG to use for this event.
ATHRNG::RNGWrapper* rngWrapper = m_rndmSvc->getEngine(this, m_randomEngineName);
const std::string rngName = name()+m_randomEngineName;
rngWrapper->setSeed( rngName, ctx );
......@@ -825,13 +755,13 @@ StatusCode SCT_FastDigitizationTool::digitize(const EventContext& ctx)
//Store HepMcParticleLink connected to the cluster removed from the collection
std::pair<PRD_MultiTruthCollection::iterator,PRD_MultiTruthCollection::iterator> saved_hit = m_sctPrdTruth->equal_range(existingCluster->identify());
std::pair<PRD_MultiTruthCollection::iterator,PRD_MultiTruthCollection::iterator> saved_hit = sctPrdTruth->equal_range(existingCluster->identify());
for (PRD_MultiTruthCollection::iterator this_hit = saved_hit.first; this_hit != saved_hit.second; ++this_hit)
{
hit_vector.push_back(this_hit->second);
}
//Delete all the occurency of the currentCluster from the multi map
if (saved_hit.first != saved_hit.second) m_sctPrdTruth->erase(existingCluster->identify());
if (saved_hit.first != saved_hit.second) sctPrdTruth->erase(existingCluster->identify());
delete existingCluster;
ATH_MSG_VERBOSE("Merged two clusters.");
......@@ -924,7 +854,7 @@ StatusCode SCT_FastDigitizationTool::digitize(const EventContext& ctx)
const int barcode( currentSiHit->particleLink().barcode());
if ( barcode !=0 && barcode != m_vetoThisBarcode )
{
m_sctPrdTruth->insert(std::make_pair(potentialCluster->identify(), currentSiHit->particleLink()));
sctPrdTruth->insert(std::make_pair(potentialCluster->identify(), currentSiHit->particleLink()));
ATH_MSG_DEBUG("Truth map filled with cluster" << potentialCluster << " and link = " << currentSiHit->particleLink());
}
}
......@@ -935,7 +865,7 @@ StatusCode SCT_FastDigitizationTool::digitize(const EventContext& ctx)
for(const HepMcParticleLink& p: hit_vector){
m_sctPrdTruth->insert(std::make_pair(potentialCluster->identify(), p ));
sctPrdTruth->insert(std::make_pair(potentialCluster->identify(), p ));
}
hit_vector.clear();
......@@ -951,6 +881,21 @@ StatusCode SCT_FastDigitizationTool::digitize(const EventContext& ctx)
StatusCode SCT_FastDigitizationTool::createAndStoreRIOs(const EventContext& ctx)
{
SG::WriteHandle<InDet::SCT_ClusterContainer> sctClusterContainer(m_sctClusterContainerKey, ctx);
sctClusterContainer = std::make_unique<InDet::SCT_ClusterContainer>(m_sct_ID->wafer_hash_max());
if(!sctClusterContainer.isValid()) {
ATH_MSG_FATAL( "[ --- ] Could not create SCT_ClusterContainer");
return StatusCode::FAILURE;
}
sctClusterContainer->cleanup();
// --------------------------------------
// symlink the SCT Container
InDet::SiClusterContainer* symSiContainer=nullptr;
CHECK(evtStore()->symLink(sctClusterContainer.ptr(),symSiContainer));
ATH_MSG_DEBUG( "[ hitproc ] SCT_ClusterContainer symlinked to SiClusterContainer in StoreGate" );
// --------------------------------------
// Get SCT_DetectorElementCollection
SG::ReadCondHandle<InDetDD::SiDetectorElementCollection> sctDetEle(m_SCTDetEleCollKey, ctx);
const InDetDD::SiDetectorElementCollection* elements(sctDetEle.retrieve());
......@@ -978,7 +923,7 @@ StatusCode SCT_FastDigitizationTool::createAndStoreRIOs(const EventContext& ctx)
sctCluster->setHashAndIndex(clusterCollection->identifyHash(),clusterCollection->size());
clusterCollection->push_back(sctCluster);
}
if (m_sctClusterContainer->addCollection(clusterCollection, clusterCollection->identifyHash()).isFailure())
if (sctClusterContainer->addCollection(clusterCollection, clusterCollection->identifyHash()).isFailure())
{
ATH_MSG_WARNING( "Could not add collection to Identifiable container !" );
}
......
......@@ -93,11 +93,10 @@ private:
StatusCode setNumericalConstants(); // once per event (pileup-dependent constants)
StatusCode produceDriftCircles(const EventContext& ctx, CLHEP::HepRandomEngine* rndmEngine);
StatusCode createOutputContainers();
Identifier getIdentifier( int hitID, IdentifierHash &hash, Identifier &layer_id, bool &status ) const;
StatusCode createAndStoreRIOs(CLHEP::HepRandomEngine* rndmEngine);
StatusCode createAndStoreRIOs(const EventContext& ctx, CLHEP::HepRandomEngine* rndmEngine);
static double getDriftRadiusFromXYZ( const TimedHitPtr< TRTUncompressedHit > &hit );
HepGeom::Point3D< double > getGlobalPosition( const TimedHitPtr< TRTUncompressedHit > &hit );
......@@ -113,43 +112,43 @@ private:
double particleMass( int i ) const;
// Tools and Services
ToolHandle< ITRT_DriftFunctionTool > m_trtDriftFunctionTool;
bool m_useTrtElectronPidTool; // false: use Tina's parametrization
ToolHandle< Trk::ITRT_ElectronPidTool > m_trtElectronPidTool;
ToolHandle< ITRT_StrawStatusSummaryTool > m_trtStrawStatusSummaryTool; // Argon / Xenon
ServiceHandle< PileUpMergeSvc > m_mergeSvc; // PileUp Merge service
PublicToolHandle< ITRT_DriftFunctionTool > m_trtDriftFunctionTool{this, "TRT_DriftFunctionTool", "TRT_DriftFunctionTool/FatrasTrtDriftFunctionTool"};
bool m_useTrtElectronPidTool{true}; // false: use Tina's parametrization
PublicToolHandle< Trk::ITRT_ElectronPidTool > m_trtElectronPidTool{this, "TRT_ElectronPidTool", "InDet::TRT_ElectronPidToolRun2/InDetTRT_ElectronPidTool"};
ToolHandle< ITRT_StrawStatusSummaryTool > m_trtStrawStatusSummaryTool{this, "TRT_StrawStatusSummaryTool", "InDetTRTStrawStatusSummaryTool"}; // Argon / Xenon
ServiceHandle< PileUpMergeSvc > m_mergeSvc{this, "MergeSvc", "PileUpMergeSvc"}; // PileUp Merge service
ServiceHandle<IAthRNGSvc> m_rndmSvc{this, "RndmSvc", "AthRNGSvc", ""}; //!< Random number service
std::string m_randomEngineName; // Name of the random number stream
StringProperty m_randomEngineName{this, "RandomStreamName", "FatrasRnd"}; // Name of the random number stream
// INPUT
std::string m_trtHitCollectionKey;
StringProperty m_trtHitCollectionKey{this, "trtHitCollectionName", "TRTUncompressedHits"};
std::vector< TRTUncompressedHitCollection * > m_trtHitCollList;
// OUTPUT
SG::WriteHandle< InDet::TRT_DriftCircleContainer > m_trtDriftCircleContainer;
SG::WriteHandle< PRD_MultiTruthCollection > m_trtPrdTruth;
SG::WriteHandleKey< InDet::TRT_DriftCircleContainer > m_trtDriftCircleContainerKey{this, "trtDriftCircleContainer", "TRT_DriftCircles"};
SG::WriteHandleKey< PRD_MultiTruthCollection > m_trtPrdTruthKey{this, "trtPrdMultiTruthCollection", "PRD_MultiTruthTRT"};
TimedHitCollection< TRTUncompressedHit > *m_thpctrt;
TimedHitCollection< TRTUncompressedHit > *m_thpctrt{};
std::multimap< Identifier, InDet::TRT_DriftCircle * > m_driftCircleMap;
// Helpers
const InDetDD::TRT_DetectorManager *m_trt_manager;
const TRT_ID *m_trt_id; // TRT Id Helper
const InDetDD::TRT_DetectorManager *m_trt_manager{};
const TRT_ID *m_trt_id{}; // TRT Id Helper
// Split configuration
int m_HardScatterSplittingMode; // Process all TRT_Hits or just those from signal or background events
bool m_HardScatterSplittingSkipper;
IntegerProperty m_HardScatterSplittingMode{this, "HardScatterSplittingMode", 0, "Control pileup & signal splitting"}; // Process all TRT_Hits or just those from signal or background events
bool m_HardScatterSplittingSkipper{false};
bool m_useEventInfo; // get mu from EventInfo ?
BooleanProperty m_useEventInfo{this, "useEventInfo", false}; // get mu from EventInfo ?
SG::ReadHandleKey<xAOD::EventInfo> m_EventInfoKey
{ this, "EventInfoKey", "EventInfo", "SG key for EventInfo" };
float m_NCollPerEvent;
FloatProperty m_NCollPerEvent{this, "NCollPerEvent", 30};
// numerical constants. Might wish to move these to a DB in the future
double m_trtTailFraction = 0.0; // fraction in tails
double m_trtSigmaDriftRadiusTail = 0.0; // sigma of one TRT straw in R
double m_trtHighProbabilityBoostBkg;
double m_trtHighProbabilityBoostEle;
double m_trtTailFraction{0.0}; // fraction in tails
double m_trtSigmaDriftRadiusTail{0.0}; // sigma of one TRT straw in R
double m_trtHighProbabilityBoostBkg{1.};
double m_trtHighProbabilityBoostEle{1.};
double m_cFit[ 8 ][ 5 ]{}; // efficiency and resolution
};
......
# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
from AthenaConfiguration.ComponentFactory import CompFactory
from Digitization.PileUpMergeSvcConfig import PileUpMergeSvcCfg, PileUpXingFolderCfg
# The earliest bunch crossing time for which interactions will be sent
# to the FastTRT Digitization code.
def FastTRT_FirstXing():
return -50
# The latest bunch crossing time for which interactions will be sent
# to the FastTRT Digitization code.
def FastTRT_LastXing():
return 50
def FastTRTRangeCfg(flags, name="FastTRTRange", **kwargs):
#this is the time of the xing in ns
kwargs.setdefault('FirstXing', FastTRT_FirstXing() )
kwargs.setdefault('LastXing', FastTRT_LastXing() )
kwargs.setdefault('CacheRefreshFrequency', 1.0 ) #default 0 no dataproxy reset
kwargs.setdefault('ItemList', ["TRTUncompressedHitCollection#TRTUncompressedHits"] )
return PileUpXingFolderCfg(flags, name, **kwargs)
def BasicTRTFastDigitizationToolCfg(flags, name, **kwargs):
acc = ComponentAccumulator()
from IOVDbSvc.IOVDbSvcConfig import addFolders, addFoldersSplitOnline
acc.merge(addFoldersSplitOnline(flags, "TRT", "/TRT/Onl/Calib/errors", "/TRT/Calib/errors"))
acc.merge(addFoldersSplitOnline(flags, "TRT","/TRT/Onl/Calib/PID_vector", "/TRT/Calib/PID_vector"))
acc.merge(addFolders(flags, "TRT_OFL", "/TRT/Calib/ToT/ToTVectors"))
acc.merge(addFolders(flags, "TRT_OFL", "/TRT/Calib/ToT/ToTValue"))
if flags.Digitization.DoXingByXingPileUp:
kwargs.setdefault("FirstXing", FastTRT_FirstXing())
kwargs.setdefault("LastXing", FastTRT_LastXing())
from RngComps.RandomServices import AthRNGSvcCfg
kwargs.setdefault("RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)).name)
kwargs.setdefault("RandomStreamName", "FastTRTDigitization")
tool = CompFactory.TRTFastDigitizationTool(name,**kwargs)
acc.setPrivateTools(tool)
return acc
def TRTFastDigitizationToolCfg(flags, name="TRTFastDigitizationTool",**kwargs):
acc = ComponentAccumulator()
intervals = []
if not flags.Digitization.DoXingByXingPileUp:
intervals += [acc.popToolsAndMerge(FastTRTRangeCfg(flags))]
kwargs.setdefault("MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)).name)
kwargs.setdefault("trtDriftCircleContainer", "TRT_DriftCircles")
kwargs.setdefault("trtPrdMultiTruthCollection", "PRD_MultiTruthTRT")
kwargs.setdefault("HardScatterSplittingMode", 0)
acc.setPrivateTools(BasicTRTFastDigitizationToolCfg(flags, name,**kwargs))
return acc
def TRTFastDigitizationToolHS(flags, name="TRTFastDigitizationToolHS",**kwargs):
acc = ComponentAccumulator()
intervals = []
if not flags.Digitization.DoXingByXingPileUp:
intervals += [acc.popToolsAndMerge(FastTRTRangeCfg(flags))]
kwargs.setdefault("MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)).name)
kwargs.setdefault("OnlyUseContainerName", True)
kwargs.setdefault("trtDriftCircleContainer", "TRT_DriftCircles")
kwargs.setdefault("trtPrdMultiTruthCollection", "PRD_MultiTruthTRT")
kwargs.setdefault("HardScatterSplittingMode", 1)
acc.setPrivateTools(BasicTRTFastDigitizationToolCfg(flags, name,**kwargs))
return acc
def TRTFastDigitizationToolPU(flags, name="TRTFastDigitizationToolPU",**kwargs):
acc = ComponentAccumulator()
intervals = []
if not flags.Digitization.DoXingByXingPileUp:
intervals += [acc.popToolsAndMerge(FastTRTRangeCfg(flags))]
kwargs.setdefault("MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)).name)
kwargs.setdefault("trtDriftCircleContainer", "TRT_PU_DriftCircles")
kwargs.setdefault("trtPrdMultiTruthCollection", "PRD_MultiTruthTRT_PU")
kwargs.setdefault("HardScatterSplittingMode", 2)
acc.setPrivateTools(BasicTRTFastDigitizationToolCfg(flags, name,**kwargs))
return acc
def TRTFastDigitizationToolSplitNoMergePU(flags, name="TRTFastDigitizationToolSplitNoMergePU",**kwargs):
acc = ComponentAccumulator()
intervals = []
if not flags.Digitization.DoXingByXingPileUp:
intervals += [acc.popToolsAndMerge(FastTRTRangeCfg(flags))]
kwargs.setdefault("MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)).name)
kwargs.setdefault("trtHitCollectionName", "PileupTRTUncompressedHits")
kwargs.setdefault("trtDriftCircleContainer", "TRT_PU_DriftCircles")
kwargs.setdefault("trtPrdMultiTruthCollection", "PRD_MultiTruthTRT_PU")
kwargs.setdefault("HardScatterSplittingMode", 0)
acc.setPrivateTools(BasicTRTFastDigitizationToolCfg(flags, name,**kwargs))
return acc
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
# The earliest bunch crossing time for which interactions will be sent
# to the FastTRT Digitization code.
......@@ -30,13 +30,8 @@ def BasicTRTFastDigitizationTool(name, **kwargs):
conddb.addFolder( "TRT_OFL", "/TRT/Calib/ToT/ToTVectors")
if not conddb.folderRequested( "/TRT/Calib/ToT/ToTValue"):
conddb.addFolder( "TRT_OFL", "/TRT/Calib/ToT/ToTValue")
#choose random number service
from Digitization.DigitizationFlags import digitizationFlags
kwargs.setdefault("RndmSvc", digitizationFlags.rndmSvc() )
streamName = kwargs.setdefault("RandomStreamName", "FastTRTDigitization")
# set rndm seeds
if not digitizationFlags.rndmSeedList.checkForExistingSeed(streamName):
digitizationFlags.rndmSeedList.addSeed(streamName, 45123, 94345 )
kwargs.setdefault("RandomStreamName", "FastTRTDigitization")
from Digitization.DigitizationFlags import digitizationFlags
if digitizationFlags.doXingByXingPileUp():
......
......@@ -53,37 +53,8 @@ static const unsigned int maskHT=0x04020100;
TRTFastDigitizationTool::TRTFastDigitizationTool( const std::string &type,
const std::string &name,
const IInterface *parent )
: PileUpToolBase( type, name, parent ),
m_trtDriftFunctionTool( "TRT_DriftFunctionTool/FatrasTrtDriftFunctionTool" ),
m_useTrtElectronPidTool( true ),
m_trtElectronPidTool( "InDet::TRT_ElectronPidToolRun2/InDetTRT_ElectronPidTool" ),
m_trtStrawStatusSummaryTool( "InDetTRTStrawStatusSummaryTool", this ),
m_mergeSvc( "PileUpMergeSvc", name ),
m_randomEngineName( "FatrasRnd" ),
m_trtHitCollectionKey( "TRTUncompressedHits" ),
m_trtDriftCircleContainer( "TRT_DriftCircles" ),
m_trtPrdTruth( "PRD_MultiTruthTRT" ),
m_thpctrt( nullptr ),
m_trt_manager( nullptr ),
m_trt_id( nullptr ),
m_HardScatterSplittingMode( 0 ),
m_HardScatterSplittingSkipper( false ),
m_useEventInfo( false ),
m_NCollPerEvent( 30 ),
m_trtHighProbabilityBoostBkg(1.),
m_trtHighProbabilityBoostEle(1.)
: PileUpToolBase( type, name, parent )
{
declareProperty( "TRT_DriftFunctionTool", m_trtDriftFunctionTool );
declareProperty( "TRT_ElectronPidTool", m_trtElectronPidTool );
declareProperty( "TRT_StrawStatusSummaryTool", m_trtStrawStatusSummaryTool );
declareProperty( "MergeSvc", m_mergeSvc );
declareProperty( "RandomStreamName", m_randomEngineName );
declareProperty( "trtHitCollectionName", m_trtHitCollectionKey );
declareProperty( "trtDriftCircleContainer", m_trtDriftCircleContainer );
declareProperty( "trtPrdMultiTruthCollection", m_trtPrdTruth );
declareProperty( "HardScatterSplittingMode", m_HardScatterSplittingMode, "Control pileup & signal splitting" );
declareProperty( "useEventInfo", m_useEventInfo);
declareProperty( "NCollPerEvent", m_NCollPerEvent);
}
......@@ -115,6 +86,9 @@ StatusCode TRTFastDigitizationTool::initialize()
ATH_MSG_DEBUG( "Input hits: " << m_trtHitCollectionKey );
}
ATH_CHECK(m_trtPrdTruthKey.initialize());
ATH_CHECK(m_trtDriftCircleContainerKey.initialize());
CHECK( m_trtDriftFunctionTool.retrieve() );
if ( m_useTrtElectronPidTool ) {
......@@ -278,6 +252,15 @@ StatusCode TRTFastDigitizationTool::setNumericalConstants() {
StatusCode TRTFastDigitizationTool::produceDriftCircles(const EventContext& ctx, CLHEP::HepRandomEngine* rndmEngine) {
// Create OUTPUT PRD_MultiTruthCollection for TRT measurements
SG::WriteHandle< PRD_MultiTruthCollection > trtPrdTruth(m_trtPrdTruthKey, ctx);
trtPrdTruth = std::make_unique< PRD_MultiTruthCollection >();
if ( !trtPrdTruth.isValid() ) {
ATH_MSG_FATAL( "Could not record collection " << trtPrdTruth.name() );
return StatusCode::FAILURE;
}
ATH_MSG_DEBUG( "PRD_MultiTruthCollection " << trtPrdTruth.name() << " registered in StoreGate" );
if(m_useEventInfo){
SG::ReadHandle<xAOD::EventInfo> eventInfoContainer(m_EventInfoKey, ctx);
......@@ -422,7 +405,7 @@ StatusCode TRTFastDigitizationTool::produceDriftCircles(const EventContext& ctx,
if ( hit->particleLink().isValid() ) {
const int barcode( hit->particleLink().barcode() );
if ( barcode !=0 && barcode != m_vetoThisBarcode ) {
m_trtPrdTruth->insert( std::make_pair( trtDriftCircle->identify(), hit->particleLink() ) );
trtPrdTruth->insert( std::make_pair( trtDriftCircle->identify(), hit->particleLink() ) );
ATH_MSG_DEBUG( "Truth map filled with cluster " << trtDriftCircle << " and link = " << hit->particleLink() );
}
}
......@@ -441,8 +424,6 @@ StatusCode TRTFastDigitizationTool::processAllSubEvents(const EventContext& ctx)
ATH_MSG_DEBUG( "TRTFastDigitizationTool::processAllSubEvents()" );
CHECK( this->createOutputContainers() );
using HitCollectionTimedList = PileUpMergeSvc::TimedList<TRTUncompressedHitCollection>::type;
HitCollectionTimedList hitCollectionTimedList;
......@@ -473,49 +454,19 @@ StatusCode TRTFastDigitizationTool::processAllSubEvents(const EventContext& ctx)
CLHEP::HepRandomEngine *rndmEngine = rngWrapper->getEngine(ctx);
// Process the Hits straw by straw: get the iterator pairs for given straw
CHECK( this->produceDriftCircles(ctx, rndmEngine) );
CHECK( this->produceDriftCircles(ctx, rndmEngine ) );
CHECK( this->createAndStoreRIOs(rndmEngine) );
CHECK( this->createAndStoreRIOs(ctx, rndmEngine) );
ATH_MSG_DEBUG ( "createAndStoreRIOs() succeeded" );
return StatusCode::SUCCESS;
}
StatusCode TRTFastDigitizationTool::createOutputContainers() {
ATH_MSG_DEBUG( "TRTFastDigitizationTool::createOutputContainers()" );
// Create OUTPUT TRT_DriftCircleContainer and register it in StoreGate
if ( !m_trtDriftCircleContainer.isValid() ) {
m_trtDriftCircleContainer = std::make_unique< InDet::TRT_DriftCircleContainer >( m_trt_id->straw_layer_hash_max() );
if ( !m_trtDriftCircleContainer.isValid() ) {
ATH_MSG_FATAL( "Could not create TRT_DriftCircleContainer" );
return StatusCode::FAILURE;
}
}
ATH_MSG_DEBUG( "InDet::TRT_DriftCircleContainer " << m_trtDriftCircleContainer.name() << " registered in StoreGate" );
// Create OUTPUT PRD_MultiTruthCollection for TRT measurements
if ( !m_trtPrdTruth.isValid() ) {
m_trtPrdTruth = std::make_unique< PRD_MultiTruthCollection >();
if ( !m_trtPrdTruth.isValid() ) {
ATH_MSG_FATAL( "Could not record collection " << m_trtPrdTruth.name() );
return StatusCode::FAILURE;
}
}
ATH_MSG_DEBUG( "PRD_MultiTruthCollection " << m_trtPrdTruth.name() << " registered in StoreGate" );
return StatusCode::SUCCESS;
}
StatusCode TRTFastDigitizationTool::mergeEvent(const EventContext& ctx) {
ATH_MSG_DEBUG( "TRTFastDigitizationTool::mergeEvent()" );
CHECK( this->createOutputContainers() );
// Set the RNG to use for this event.
ATHRNG::RNGWrapper* rngWrapper = m_rndmSvc->getEngine(this, m_randomEngineName);
const std::string rngName = name()+m_randomEngineName;
......@@ -532,15 +483,24 @@ StatusCode TRTFastDigitizationTool::mergeEvent(const EventContext& ctx) {
for(TRTUncompressedHitCollection* ptr : m_trtHitCollList) delete ptr;
m_trtHitCollList.clear();
CHECK( this->createAndStoreRIOs(rndmEngine) );
CHECK( this->createAndStoreRIOs(ctx, rndmEngine) );
ATH_MSG_DEBUG ( "createAndStoreRIOs() succeeded" );
return StatusCode::SUCCESS;
}
StatusCode TRTFastDigitizationTool::createAndStoreRIOs(CLHEP::HepRandomEngine* rndmEngine)
StatusCode TRTFastDigitizationTool::createAndStoreRIOs(const EventContext& ctx, CLHEP::HepRandomEngine* rndmEngine)
{
// Create OUTPUT TRT_DriftCircleContainer and register it in StoreGate
SG::WriteHandle<InDet::TRT_DriftCircleContainer > trtDriftCircleContainer(m_trtDriftCircleContainerKey, ctx);
trtDriftCircleContainer = std::make_unique< InDet::TRT_DriftCircleContainer >( m_trt_id->straw_layer_hash_max() );
if ( !trtDriftCircleContainer.isValid() ) {
ATH_MSG_FATAL( "Could not create TRT_DriftCircleContainer" );
return StatusCode::FAILURE;
}
ATH_MSG_DEBUG( "InDet::TRT_DriftCircleContainer " << trtDriftCircleContainer.name() << " registered in StoreGate" );
using DriftCircleMapItr = std::multimap<Identifier, InDet::TRT_DriftCircle *>::iterator;
using HashMapItr = std::multimap<IdentifierHash, InDet::TRT_DriftCircle *>::iterator;
......@@ -611,7 +571,7 @@ StatusCode TRTFastDigitizationTool::createAndStoreRIOs(CLHEP::HepRandomEngine* r
trtDriftCircleCollection->push_back( trtDriftCircle );
}
if ( m_trtDriftCircleContainer->addCollection( trtDriftCircleCollection, hash ).isFailure() ) {
if ( trtDriftCircleContainer->addCollection( trtDriftCircleCollection, hash ).isFailure() ) {
ATH_MSG_WARNING( "Could not add collection to Identifyable container" );
}
}
......
......@@ -6,18 +6,17 @@ from AthenaConfiguration.Enums import BeamType
def MuonCaloTagAlgCfg(flags, name="MuonCaloTagAlg", **kwargs):
result = ComponentAccumulator()
from MuonCombinedConfig.MuonCombinedRecToolsConfig import MuonCaloTagToolCfg
tools = []
result = MuonCaloTagToolCfg(flags)
tools.append(result.popPrivateTools())
kwargs.setdefault("MuonCombinedInDetExtensionTools", tools)
result.addPublicTool(kwargs['MuonCombinedInDetExtensionTools'][0]) # Ugh
tool = result.popToolsAndMerge(MuonCaloTagToolCfg(flags))
# needs to be made public for some reason?
result.addPublicTool(tool)
kwargs.setdefault("MuonCombinedInDetExtensionTools", [tool])
kwargs.setdefault("TagMap", "caloTagMap")
kwargs.setdefault("CombinedTrackCollection", "")
kwargs.setdefault("METrackCollection", "")
kwargs.setdefault("usePRDs", False)
alg = CompFactory.MuonCombinedInDetExtensionAlg(name, **kwargs)
result.addEventAlgo(alg, primary=True)
result.addEventAlgo(CompFactory.MuonCombinedInDetExtensionAlg(name, **kwargs))
return result
......
......@@ -132,6 +132,8 @@ def createDigitizationCfgFlags():
flags.addFlag("Digitization.PU.NumberOfCavern", 0.0)
# Repeating pattern to determine which events to simulate when using Stepping Cache
flags.addFlag("Digitization.PU.SignalPatternForSteppingCache", [])
# Which sub-systems should use Fast Digitization
flags.addFlag("Digitization.DoFastDigi", [])
return flags
......