Skip to content
Snippets Groups Projects

Compare revisions

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

Source

Select target project
No results found

Target

Select target project
  • emsmith/athena
  • dzubov/athena
  • pscholer/athena
  • akvam/athena
  • flasagni/athena
  • hartman/athena
  • alux/athena
  • berenice/athena
  • mschott/athena
  • mgenest/athena
  • pbalek/athena
  • dsalvato/athena
  • korcyl/athena
  • tlyubush/athena
  • lyubushk/athena
  • gstark/athena
  • yharris/athena
  • lmonsoni/athena
  • nagano/athena
  • lcorpe/athena
  • lshi/athena
  • rrosten/athena
  • ytsujika/athena
  • tiledemo/athena
  • abagdato/athena
  • fparodi/athena
  • tmoxter/athena
  • lheinric/athena
  • milu/athena
  • pyin/athena
  • juesseiv/athena-celeritas
  • mmlynari/athena
  • matthier/athena
  • jsandesa/athena
  • borisov/athena
  • zchubini/athena
  • mpenzin/athena
  • mcorradi/athena
  • okovanda/athena
  • meevans/athena
  • isiral/athena
  • haa2mu2tau/athena
  • nkvu/athena
  • andre/athena
  • ebakos/athena
  • gwmyers/athena
  • lportale/athena
  • vasothil/athena
  • bwinter/athena
  • brle/athena
  • camacho/athena
  • icioara/athena
  • mcentonz/athena
  • quli/athena
  • mikhail/athena
  • begilber/athena
  • gartoni/athena
  • abkahn/athena
  • mbasso/athena
  • pagacova/athena
  • dgancarc/athena
  • stefania/athena
  • gmarchio/athena
  • jolsson/athena
  • atlasdqm/athena
  • chuanshu/athena
  • yygao/athena
  • shimoji/athena
  • zhenw/athena
  • jojamies/athena
  • keli/athena
  • cnass/athena
  • beckerov/athena
  • passaggi/athena
  • marvin/athena
  • hdf5-utils/athena
  • pberta/athena
  • aaboulho/athena
  • acrobert/athena
  • ranjitn/athena
  • cescobar/athena
  • ktodome/athena
  • kastanas/athena
  • huirun/athena
  • atrzupek/athena
  • tzorbas/athena
  • lfountas/athena
  • ccarrion/athena
  • aambler/athena
  • derendar/athena
  • britzger/athena
  • hanl/athena
  • epender/athena
  • gipezzul/athena
  • mmineev/athena
  • robertma/athena
  • gnn4itkteam/athena
  • phkoenig/athena
  • pleier/athena
  • nguseyno/athena
  • nekumari/athena
  • avasyuko/athena
  • gtateno/athena
  • pavel/athena
  • 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
  • calfayan/athena
  • kjohns/athena
  • atlas/athena
  • toshi/athena
  • dguest/athena
  • fwinkl/athena
  • wlampl/athena
  • aundrus/athena
  • akraszna/athena
  • karolos/athena
  • jmontejo/athena
  • damazio/athena
  • okuprash/athena
  • smh/athena
  • turra/athena
  • tdado/athena
  • tadej/athena
  • abuckley/athena
  • jmasik/athena
  • pjacka/athena
  • tamartin/athena
  • tbold/athena
  • mhodgkin/athena
  • nstyles/athena
  • mark/athena
  • gemmeren/athena
  • ssnyder/athena
  • wwalko/athena
  • emoyse/athena
  • pgadow/athena
  • solodkov/athena
  • rbielski/athena
  • dcasper/athena
  • mrybar/athena
  • ychiu/athena
  • christos/athena
  • yoyamagu/athena
  • rbianchi/athena
  • graemes/athena
  • sshaw/athena
  • shlomit/athena
  • hartj/athena
  • jcatmore/athena
  • ebuschma/athena
  • gunal/athena
  • ewelina/athena
  • ligang/athena
  • sroe/athena
  • lfiorini/athena
  • longjon/athena
  • jichen/athena
  • nikiforo/athena
  • fpastore/athena
  • harkusha/athena
  • mvozak/athena
  • leggett/athena
  • martindl/athena
  • almaloiz/athena
  • tlari/athena
  • susinha/athena
  • filthaut/athena
  • cchan/athena
  • peter/athena
  • cvarni/athena
  • wleight/athena
  • nwarrack/athena
  • cshimmin/athena
  • mihuebne/athena
  • jsallen/athena-high-pt-ms-jets
  • dkar/athena
  • chays/athena
  • dtovey/athena
  • sgeorge/athena
  • yafu/athena
  • mgignac/athena
  • alfroch/athena
  • mstamenk/athena
  • okepka/athena
  • tkohno/athena
  • janovak/athena
  • wiedenat/athena
  • khoo/athena
  • maklein/athena
  • cohm/athena
  • omajersk/athena
  • dbakshig/athena
  • fernando/athena
  • tmkrtchy/athena
  • gingrich/athena
  • schaarsc/athena
  • ponyisi/athena
  • ravinab/athena
  • scheiric/athena
  • pleskot/athena
  • jobalz/athena
  • ebergeas/athena
  • ekasimi/athena
  • afaulkne/athena
  • ekuwertz/athena
  • xai/athena
  • merrenst/athena
  • goetz/athena
  • dpopov/athena
  • achishol/athena
  • alaurier/athena
  • mtoscani/athena
  • krumnack/athena
  • astruebi/athena
  • mdanning/athena
  • egramsta/athena
  • hye/athena
  • clseitz/athena
  • bmindur/athena
  • efilmer/athena
  • jpanduro/athena
  • ssarikay/athena
  • hyamauch/athena
  • rhauser/athena
  • ppostola/athena
  • shanisch/athena
  • phwindis/athena
  • ncalace/athena
  • aad/athena
  • arnaez/athena
  • gpanizzo/athena
  • rcoelhol/athena
  • tupham/athena
  • baines/athena
  • stelzer/athena
  • ssottoco/athena
  • mmuskinj/athena
  • turnerm/athena
  • sutt/athena
  • psommer/athena
  • nkrengel/athena
  • rkopelia/athena
  • bwynne/athena
  • cmcginn/athena
  • tstreble/athena
  • bernius/athena
  • tsulaia/athena
  • ATLAS-EGamma/athena
  • vcairo/athena
  • stsuno/athena
  • yuxu/athena
  • yunju/athena
  • toyamaza/athena
  • mbandier/athena
  • mehlhase/athena
  • ldc/athena
  • jdandoy/athena
  • dzanzi/athena
  • jmacdona/athena
  • kzoch/athena
  • jufische/athena
  • nasbah/athena
  • amete/athena
  • rcarney/athena
  • kwhalen/athena
  • williams/athena
  • shhirose/athena
  • bmorgan/athena
  • cheidegg/athena
  • heng/athena
  • kkohler/athena
  • msaimper/athena
  • coccaro/athena
  • loch/athena
  • hhibi/athena
  • ynoguchi/athena
  • campanel/athena
  • wbalunas/athena
  • cdeutsch/athena
  • hoide/athena
  • xju/athena
  • yuchou/athena
  • hrussell/athena
  • nova/athena
  • lidiaz/athena
  • todorova/athena
  • sjiggins/athena
  • jbiswal/athena
  • kegraham/athena
  • bgokturk/athena
  • aytul/athena
  • kpachal/athena
  • bouhova/athena
  • guerrero/athena
  • alwang/athena
  • dhayden/athena
  • mverissi/athena
  • alopezso/athena
  • mvessell/athena
  • ssantpur/athena
  • kenelson/athena
  • mvanadia/athena
  • upatel/athena
  • fmeloni/athena
  • igrabows/athena
  • omeshkov/athena
  • tvarol/athena
  • soumya/athena
  • dshope/athena
  • ruyuan/athena
  • korona/athena
  • anperrev/athena
  • eramakot/athena
  • dbogavac/athena
  • mhank/athena
  • tnobe/athena
  • cowagner/athena
  • tursom/athena
  • derue/athena
  • koffas/athena
  • fsforza/athena
  • angianni/athena
  • ballbroo/athena
  • fgiuli/athena
  • diehl/athena
  • myexley/athena
  • chinderk/athena
  • davidek/athena
  • tphamleh/athena
  • falonso/athena
  • ekajomov/athena-general
  • sarbiolv/athena
  • hansenph/athena
  • salvator/athena
  • hirose/athena
  • mfujimot/athena
  • jhaley/athena
  • masato/athena
  • jmendes/athena
  • stapiaar/athena
  • stavrop/athena
  • ffabbri/athena
  • nwenke/athena
  • agbet/athena
  • tpelzer/athena
  • dbabal/athena
  • gia/athena
  • juesseiv/athena
  • hmildner/athena
  • kkrizka/athena
  • temoskal/athena
  • cdelitzs/athena
  • asonay/athena
  • ckitsaki/athena
  • dwallace/athena
  • iaizenbe/athena
  • eschanet/athena
  • czhou/athena
  • lferencz/athena
  • jiawei/athena
  • mromano/athena
  • rustem/athena
  • pmeiring/athena
  • sswatman/athena
  • miqueits/athena
  • jteoh/athena
  • liberato/athena
  • wachan/athena
  • jbeirer/athena
  • ranovotn/athena
  • nielsenj/athena
  • elmsheus/athena
  • markowen/athena
  • asquith/athena
  • eparrish/athena
  • nicholas/athena
  • fuhe/athena
  • dakoch/athena
  • mhance/athena
  • esoldato/athena
  • asoukhar/athena
  • aranzazu/athena
  • ndegroot/athena
  • aporeba/athena
  • lihan/athena
  • ginaciog/athena
  • jkempste/athena
  • verducci/athena
  • martis/athena
  • tjunkerm/athena
  • sschramm/athena
  • mdelmast/athena
  • anmrodri/athena
  • mswiatlo/athena
  • bcarlson/athena
  • pliu/athena
  • fastcalosim_test/athena
  • ssaha/athena
  • mxia/athena
  • gabarone/athena
  • scamarda/athena
  • rlongo/athena
  • amoussa/athena
  • lstocker/athena
  • guindon/athena
  • mdonasci/athena
  • conde/athena
  • mmittal/athena
  • ffollega/athena
  • chelling/athena
  • gialas/athena
  • fcostanz/athena
  • shion/athena
  • sschmitt/athena
  • hmaguire/athena
  • cgutscho/athena
  • sberlend/athena
  • zsoumaim/athena
  • acts/athena
  • nifomin/athena
  • eriefel/athena
  • dwilbern/athena
  • laforge/athena
  • evarnes/athena
  • guescini/athena
  • akotsoke/athena
  • jkremer/athena
  • haozturk/athena
  • susy-hackers/athena
  • llorente/athena
  • kkoeneke/athena
  • istin/athena
  • fizisist/athena
  • acanesse/athena
  • rpoggi/athena
  • fengyu/athena
  • cmerlass/athena
  • rkarnam/athena
  • navarrjo/athena
  • ivivarel/athena
  • chenlian/athena
  • amulski/athena
  • ysmirnov/athena_old
  • bulekov/athena
  • pkramer/athena
  • vcavalie/athena
  • yanlin/athena
  • sanchevi/athena
  • restevam/athena
  • bauerpa/athena
  • sefernan/athena
  • thsjurse/athena
  • smwang/athena
  • mmlynars/athena
  • iyeletsk/athena
  • itrandaf/athena
  • mmazza/athena
  • jgonski/athena
  • almgadm/athena
  • csebasti/athena
  • wobisch/athena
  • jhinds/athena
  • mtchijov/athena
  • tiyang/athena
  • mwielers/athena
  • lapereir/athena
  • emmat/athena
  • lmiller/athena
  • aleopold/athena
  • lucam/athena
  • zuysal/athena
  • kciesla/athena
  • rbalasub/athena
  • pekman/athena
  • somadutt/athena
  • wmccorma/athena
  • masaito/athena
  • kkreul/athena
  • salderwe/athena
  • ycoadou/athena
  • jstupak/athena
  • simmons/athena
  • ilongari/athena
  • adye/athena
  • wtaylor/athena
  • pinamont/athena
  • ssahin/athena
  • jzeng/athena
  • gcallea/athena
  • kbelobor/athena
  • aoneill/athena
  • fbartels/athena
  • dmaximov/athena
  • kghorban/athena
  • ljeanty/athena
  • cschiavi/athena
  • kasai/athena
  • ecarlson/athena
  • jraine/athena
  • brottler/athena
  • aelmouss/athena
  • khanov/athena
  • rozeny/athena
  • nbelyaev/athena
  • mcfayden/athena
  • gotero/athena
  • abandyop/athena
  • rebeca/athena
  • scarra/athena
  • doglioni/athena
  • joheinri/athena
  • alaperto/athena
  • bhonan/athena
  • amarzin/athena
  • bigliett/athena
  • aohatl/athena
  • rgarg/athena
  • begalli/athena
  • pmoskvit/athena
  • yajun/athena
  • dpudzha/athena
  • mpokidov/athena
  • lbozianu/athena
  • jajimene/athena
  • atlidali/athena
  • wprzygod/athena
  • vcroft/athena
  • torrence/athena
  • paulama/athena
  • mtesta/athena
  • demelian/athena
  • sgalantz/athena
  • roward/athena
  • tofitsch/athena
  • hacooke/athena
  • barak/athena
  • salnikov/athena
  • csander/athena
  • atsirigo/athena
  • mmiralle/athena
  • elrossi/athena
  • alory/athena
  • ozaplati/athena
  • amoroso/athena
  • pbokan/athena
  • jsabater/athena
  • ruth/athena
  • jdevivi/athena
  • pottgen/athena
  • apetukho/athena
  • ymino/athena
  • xchen/athena
  • klin/athena
  • trinn/athena
  • xiaoning/athena
  • cappelt/athena
  • nelsonc/athena
  • ratkin/athena
  • nishu/athena
  • juhofer/athena
  • paramon/athena
  • exot-27/athena
  • bleban/athena
  • enarayan/athena
  • qhu/athena
  • acassim/athena
  • dpizzi/athena
  • sampson/athena
  • ztarem/athena
  • bburghgr/athena
  • mmarjano/athena
  • pagessin/athena
  • mkrivos/athena
  • ibordule/athena
  • hessey/athena
  • ychow/athena
  • nviauxma/athena
  • wfawcett/athena
  • LichtenbergGroup/athena
  • watsona/athena
  • perj/athena
  • jreich/athena
  • mleblanc/athena
  • ztao/athena
  • othielma/athena
  • wgeorge/athena
  • jdegens/athena
  • sridouan/athena
  • pmendesa/athena
  • alainb/athena
  • hasada/athena
  • xiaohu/athena
  • kristin/athena
  • jlsmith/athena
  • ludovica/athena
  • yama/athena
  • ssu/athena
  • bachacou/athena
  • yake/athena
  • musafdar/athena
  • angerami/athena
  • ktsuri/athena
  • mproffit/athena
  • pebaron/athena-weights
  • rnayak/athena
  • jezequel/athena
  • amendesj/athena
  • gproto/athena
  • hschwart/athena
  • asalzbur/athena
  • lhelary/athena
  • csamoila/athena
  • lbeemste/athena
  • malgren/athena
  • tiany/athena
  • mprincip/athena
  • rerrabai/athena
  • spolacek/athena
  • grabanal/athena
  • asantra/athena
  • bmondal/athena
  • aczirkos/athena
  • silvinha/athena
  • kyamaguc/athena
  • holau/athena
  • tboeckh/athena
  • jreidels/athena
  • jroloff/athena
  • mdhlamin/athena
  • slawlor/athena
  • emily/athena
  • bozek/athena
  • carlod/athena
  • lkrauth/athena
  • tdiasdov/athena
  • bbrueers/athena
  • iramirez/athena
  • mtian/athena
  • mgrabois/athena
  • oducu/athena
  • idinu/athena
  • bcole/athena
  • roishi/athena
  • ecelebi/athena
  • dhirsch/athena
  • ygo/athena
  • yuanchan/athena
  • jjwilkin/athena
  • exochell/athena
  • ggustavi/athena
  • hmoyanog/athena-4-mr
  • diwillia/athena
  • cgarner/athena
  • changqia/athena
  • skorn/athena
  • sbiryuko/athena
  • jwspence/athena
  • scalvet/athena
  • calpigia/athena
  • honguyen/athena
  • yangx/athena
  • jizamora/athena
  • rysawada/athena
  • atsiamis/athena
  • cmarcon/athena
  • adimitri/athena
  • kpetukho/athena
  • tbisanz/athena
  • dhangal/athena
  • atlidbs/athena
  • iene/athena
  • jspah/athena
  • jkretz/athena
  • tqiu/athena
  • athaler/athena
  • tzenis/athena
  • dopasqua/athena
  • hzuchen/athena
  • jcardena/athena
  • lveloce/athena
  • maliev/athena
  • fdelrio/athena
  • ryamaguc/athena
  • oshukrun/athena
  • mbiros/athena
  • iwang/athena
  • tsano/athena
  • mumohdso/athena2
  • dmunozpe/athena
  • okumura/athena
  • sagara17/athena
  • rhayes/athena
  • mumohdso/athena
  • arennie/athena
  • atate/athena
  • valentem/athena
  • koshimiz/athena
  • zearnsha/athena
  • evguillo/athena
  • dossantn/athena
  • caforio/athena
  • maly/athena
  • bnachman/athena
  • zhijie/athena
  • hlin/athena
  • mtost/athena
  • yuzhan/athena
  • lunedic/athena
  • suyounas/athena
  • rjoshi/athena
  • lvannoli/athena
  • machitis/athena
  • ndebiase/athena
  • crougier/athena
  • mimarine/athena
  • dounwuch/athena
  • thompson/athena
  • nkakati/athena
  • omezhens/athena
  • echeu/athena
  • jonierma/athena
  • saclawso/athena
  • hhanif/athena
  • cprat/athena
  • csauer/athena
  • martinpa/athena
  • mischott/athena
  • sahinsoy/athena
  • inaryshk/athena
  • wendlanb/athena
  • tiknight/athena
  • jodamp/athena
  • lkeszegh/athena
  • knikolop/athena
  • fedin/athena
  • angrigor/athena
  • xchu/athena
  • pbellos/athena
  • adik/athena
  • idrivask/athena
  • jaoliver/athena
  • lbaltes/athena
  • aikoulou/athena
  • echeremu/athena
  • ignesi/athena
  • algilber/athena
  • eschopf/athena
  • ntamir/athena
  • pyanezca/athena
  • sadykov/athena
  • haweber/athena
  • sgurdasa/athena
  • hiito/athena
  • pamachad/athena
  • tavandaa/athena
  • pbhattar/athena
  • tteixeir/athena
  • veellajo/athena
  • mdrozdov/athena
  • bsaifudd/athena
  • fdibello/athena
  • wolter/athena
  • nheatley/athena
  • fsili/athena
  • dparedes/athena
  • minaenko/athena
  • mzhai/athena
  • hsimpson/athena
  • chchau/athena
  • mrenda/athena
  • rkusters/athena
  • zyan/athena
  • emmarsha/athena
  • edweik/athena
  • zmarshal/athena
  • phkenned/athena
  • zhangr/athena
  • slai/athena
  • awilhahn/athena
  • agaa/athena
  • leevans/athena
  • javanden/athena
  • jburzyns/athena
  • zfeng/athena
  • llaatu/athena
  • stsigari/athena
  • srdas/athena
  • kkrowpma/athena
  • zifeng/athena
  • adonofri/athena
  • drousso/athena
  • atropina/athena
  • atlaspmb/athena
  • cleonido/athena
  • seggebre/athena
  • mnoury/athena
  • metsai/athena
  • yuanda/athena
  • ademaria/athena
  • arombola/athena
  • kchoi/athena
  • dgillber/athena
  • saktas/athena
  • ijuarezr/athena
  • eyamashi/athena
  • axiong/athena
  • amdesai/athena
  • zang/athena
  • fbendebb/athena
  • matakagi/athena
  • qibin/athena
  • nlopezca/athena
  • tbuanes/athena
  • berkeleylab/lowmutracking/athena
  • bshresth/athena
  • acanbay/athena
  • cbuitrag/athena
  • jferrand/athena
  • klassen/athena
  • egodden/athena
  • mfarring/athena
  • hpotti/athena
  • otheiner/athena-official
  • hawatson/athena
  • parodi/athena
  • vtudorac/athena
  • chonghao/athena
  • bballard/athena
  • dzengerj/athena
  • buboehm/athena
  • knakkali/athena
  • lmontana/athena
  • weixi/athena
  • zhuyi/athena
  • adaribay/athena
  • cantel/athena
  • dcieri/athena
  • cimcp/athena
  • kbenkend/athena
  • iliadis/athena
  • frenner/athena
  • duperrin/athena
  • asansar/athena
  • isotarri/athena
  • jburr/athena
  • mfewell/athena
  • dkoeck/athena
  • eegidiop/athena
  • bstanisl/athena
  • blumen/athena
  • miholzbo/athena
  • smitani/athena
  • czodrows/athena
  • amincer/athena
  • yulei/athena
  • alsala/athena
  • gshatri/athena
  • clantz/athena
  • olangrek/athena
  • jmharris/athena
  • hpang/athena
  • otheiner/athena
  • gripelli/athena
  • tizuo/athena
  • jgargan/athena
  • ewatton/athena
  • mleigh/athena
  • rushioda/athena
  • sfranche/athena
  • smeriano/athena
  • deniso/athena
  • preselection-hackathon/athena
  • mfernoux/athena
  • chandler/athena
  • bernardo/athena
  • viruelas/athena
  • jnitschk/athena
  • yusano/athena
  • pebaron/athena-td
  • ksugizak/athena
  • anghosh/ef-anindya
  • hriani/athena
  • davetisy/athena
  • skaur/athena
  • jgombas/athena
  • vcepaiti/athena
  • wsherman/athena
  • sroygara/athena
  • rtagami/athena
  • apsallid/athena
  • yochi/athena
  • pakontax/athena
  • dmahon/athena
  • yuanj/athena
  • agavrily/athena
  • dmclaugh/athena
  • chji/athena
  • abunka/athena
  • mcgensvc/athena
  • giagu/athena
  • cjmeyer/athena
  • almay/athena
  • qberthet/athena
  • yuwen/athena
  • ekay/athena
  • islazyk/athena
  • mshapiro/athena
  • mbarel/athena
  • glamprin/athena
  • dkobylia/athena
  • baitbenc/athena
  • rdinardo/athena
  • osalin/athena
  • dakiyama/athena
  • szambito/athena
  • mlanzacb/athena
  • minlin/athena
  • cgrefe/athena
  • hwilkens/athena
  • wsfreund/athena
  • kazhang/athena
  • pebaron/athena
  • yyap/athena
  • enagy/athena
  • menke/athena
  • beringer/athena
  • mspalla/athena
  • schaffer/athena
  • mduehrss/athena
  • fcalosim/athena
  • mavogel/athena
  • tkharlam/athena
  • spagan/athena
  • smobius/athena
  • osunnebo/athena
  • rateixei/athena
  • dportill/athena
  • carquin/athena
  • okiverny/athena
  • desilva/athena
  • jelena/athena
  • chhayes/athena
  • sanmay/athena
  • jwalder/athena
  • lmijovic/athena
  • jahreda/athena
  • junpei/athena
  • tilebeam/athena
  • satom/athena
  • kiabelin/athena
  • mcarnesa/athena
  • vtskhaya/athena
  • jedebevc/athena
  • jstark/athena
  • silu/athena
  • delsart/athena
  • krbjoerk/athena
  • jtanaka/athena
  • cyoung/athena
  • mtogawa/athena
  • luxin/athena
  • maslawin/athena
  • haoran/athena
  • yifany/athena
  • minghui/athena
  • faser/offline/athena
  • danning/athena
  • dcasperfaser/athena
  • almeidvi/athena
  • beddall/athena
  • vmartin/athena
  • cfan/athena
  • kazheng/athena
  • srettie/athena
  • mmontell/athena
  • sudha/athena
  • kgupta/athena
  • lhenkelm/athena
  • pajones/athena
  • beltran/athena-fork
  • ssinha/athena
  • anbaraja/athena
  • lgagnon/athena
  • serodrig/athena
  • dpanchal/athena
  • kkawade/athena
  • joana/athena
  • chiodini/athena
  • mtanasin/athena
  • amorenos/athena
  • jshahini/athena
  • lfeligio/athena
  • vbuxbaum/athena
  • apalazzo/athena
  • jaofferm/athena
  • gonzalri/athena
  • kburka/athena
  • ehaines/athena
  • desengup/athena
  • gavrilen/athena
  • gottino/athena
  • mdidenko/athena
  • rmazini/athena
  • dwkim/athena
  • qidong/athena
  • sabidi/athena
  • cdimitri/athena
  • ktopolni/athena
  • bkerridg/athena
  • jingjing/athena
  • hazeng/athena
  • ktackman/athena
  • yche/athena
  • dabattul/athena
  • yoyeh/athena
  • attrtcal/athena
  • mischott/athena-22
  • sgaid/athena
  • bochen/athena
  • thmaurin/athena
  • asciandr/athena
  • chjiang/athena
  • pclark/athena
  • lbazzano/athena
  • rushioda/athena-3
  • krdona/athena
  • dtorresa/athena
  • meiqi/athena
  • hmoyanog/athena
  • nlad/athena
  • kvidalgu/athena
  • aackerma/athena
  • aaikot/athena
  • yingjun/athena
  • lesplend/athena
  • jcurran/athena
  • xinfei/athena
  • aivina/athena
  • maboelel/athena
  • mschefer/athena
  • rmakhman/athena
  • xinhui/athena
  • kazheng/athena-physics-val-2023
  • zoduan/athena
  • shhan/athena
  • zhiliang/athena
  • liuk/athena
  • sfrances/athena
  • xingguo/athena
  • bdixit/athena
  • alsidley/athena
  • jlue/athena
  • ragrabar/athena
  • kyjones/topoetcone-removal
  • shahzad/athena
  • niabicht/athena
  • yunagai/athena
  • asehrawa/athena
  • mhoppesc/athena
  • llewitt/athena
  • keener/athena
  • lcalic/athena-backup
  • kazheng/athena-workingpoint
  • greynold/athena
  • bschlag/athena
  • yinmiao/athena
  • agentry/athena
  • bruckman/athena
  • adohnalo/athena
  • nkang/athena
  • drankin/athena
  • asmaga/athena
  • kbhide/athena
  • hvanders/athena
  • berkeleylab/acts/athena
  • ladamczy/test
  • tbeumker/athenatest
  • weitao/athena
  • tbeumker/athena
  • losanti/athena
  • menu-hackathon/athena
  • jiturriz/athena
  • losanti/athena-23
  • vmaksimo/athena
  • wsong/athena
  • dmankad/athena-idle
  • seggebre/athena-fluencemap-modification
  • kyjones/trigger-example
  • toobauma/athena
  • dawerner/athena
  • fisopkov/athena
  • gtarna/athena
  • lprimomo/athena
  • edreyer/athena
  • maparo/athena
  • smanzoni/athena
  • shmukher/athena
  • SecVtx-Lancaster/Athena
  • aackerma/atlas-athena
  • lrambell/athena
  • pgraveli/athena
  • wstanek/athena
  • adimri/athena
  • jcrosby/athena
  • tovsiann/athena
  • ppotepa/athena
  • atlas-sa-uct/athena
  • rsnyder/athena
  • eullmank/athena
  • skita/athena
  • mhemmett/athena
  • zgao/athena
  • achakrav/athena
  • lroos/athena
  • xmapekul/athena
  • evitale/athena
  • thmaurin/athena-sim-flavour
  • rashbypi/athena
  • kgoto/athena
  • arej/athena
  • npond/athena
  • ivyas/athena
  • aleksand/athena
  • lkretsch/athena
  • hluk/athena
  • jebohm/athena
  • epasqual/athena
  • mbiyabi/athena
  • mihe/athena
  • dbiswas/athena
  • cvittori/athena
  • aralves/athena
  • dkoeck/anniathenafork
  • rgupta/athena
  • mkareem/athena
  • tslee/athena
  • croland/athena
  • cgarvey/athena
  • kesedlac/athena
  • mhaacke/athena
  • ctosciri/athena-old
  • pkumari/athena
  • ctosciri/athena
  • asoflau/athena
  • feickert/athena
  • gfrattar/athena
  • agerwin/athena
  • ricunnin/athena
  • gtolkach/athena
  • bdixit/masking-strip-modules
  • gwilliam/athena
  • jfeng2/athena
  • bscheuer/athena
  • svanstro/athena
  • gaofeng/athena
  • ksudo/athena
  • rhiguchi/athena
  • vaustrup/athena
  • etoyoda/athena
  • kosuzuki/athena
  • rmizuhik/athena
  • hart/athena
  • kkanke/athena
  • mnegrini/athena
  • whopkins/athena
  • tnakagaw/athena
  • amakita/athena
  • tpaschoa/athena
  • maoki/athena
  • dduda/athena
  • miyamada/athena
  • rishikaw/athena
  • ferusso/athena
  • anayaz/athena
  • smweber/athena
  • aagaard/athena
  • evalient/athena
  • shudong/athena
  • zyan/athena-muon-calib-stream
  • smweber/athena-run-3
  • dellacqu/athena
  • evalient/athena-dnn-calculator
  • zyan/athena-muon-calib
  • glagafon/project-nimber-1
  • strom/athena
  • jsallen/athena
  • strom/athena-dms
  • brosser/athena
  • sbellman/athena
  • macretar/athena
  • aowang/athena
  • skadir/athena-sadaf
  • ooncel/athena
  • leguo/athena
  • tygeorge/athena
  • jhoya/athena
  • glagafon/handi-project
  • hasun/athena
  • wuxi/athena
  • osotosan/athena
  • syan/athena-syan
  • will/athena
  • mnorfolk/athena
  • glagafon/handi-project-1
  • aborbely/athena
  • schernau/athena
  • axgallen/athena-qualification-task
  • karakawa/athena
  • taogawa/athena
  • seinfant/athena
  • tmlinare/athena
  • dmankad/athena-gen
  • mmaroun/ravina-fork
  • axgallen/athena
  • ktariq/athena
  • dhagan/athena
  • agarabag/athena
  • romar/athena
  • vlysenko/athena
  • ipolishc/athena
  • mahorstm/athena
  • tizhang/athena
  • zuzak/athena
  • ibamwidh/athena
  • xilin/athena
  • frfische/athena
  • jlue/athena-latest
  • atishelm/athena
  • jolamber/athena
  • ykhoulak/myathena
  • yil/athena
  • dntounis/athena
  • chuanye/athena
  • nkua-atlas/athena
  • huayu/athena
  • movincen/athena
  • kifarman/athena
  • lderamo/athena
  • tayoshid/athena
  • nischmit/athena
  • steinber/athena-main
  • dongyi/athena
  • tdingley/athena
  • dtruncal/athena
  • malvesca/athena
  • kazheng/athena-acts
  • hasegawa/athena
  • glagafon/dq-optimize
  • ekajomov/athena-fork-fix
  • openc/athena
  • lcalic/athena
  • mnowak/athena
  • ladamczy/athena
  • mhufnage/athena
  • lsultana/obsolete_athena
  • rqian/athena
  • lsultana/athena
  • anfortma/athena
  • yonoda/athena
  • kfung/athena
  • pebaron/athena-leprem
  • alveltma/athena
  • alpleban/athena
  • mmaheshw/athena
  • anstein/athena
  • jdavidso/athena
  • bglik/athena
  • edcritel/athena
  • gbird/athena
  • midandre/athena
  • anhodges/athena
  • kyjones/athena
  • mfurukaw/athena
  • sokkerma/athena
  • fcurcio/athena
  • mvivasal/athena
  • asbrooks/athena
  • mveen/athena
  • mmlynars/athena-v-2
  • lboccard/athena
  • tburatov/athena
  • jmcgowan/athena
  • dmankad/athena
  • joroemer/athena
  • ctaybi/athena
  • ivyoung/athena
  • drasslof/athena
  • tayoshid/athena-test
  • jodafons/athena
  • sdemiran/athena
  • tmclachl/athena
  • sanchezj/athena-2022
  • jiddon/athena
  • anburger/athena
  • fwinkel/athena
  • sdahbi/athena
  • apfleger/athena
  • izahir/athena
  • goblirsc/athena
  • sidoti/athena
  • sanchezj/athena
  • mmoors/athena
  • jwkraus/athena
  • obut/athena
  • rhaberle/athena
  • rvinasco/athena
  • esimpson/athena
  • jhowarth/athena
  • klleras/athena
  • dta/athena_old
  • janders/athena
  • mungo/athena
  • jchapman/athena
  • jecouthu/athena
  • dtrischu/athena
  • avallier/athena
  • fhenry/athena
  • fmontere/athena
  • sfuenzal/athena
  • zhaotong/athena
  • misantan/athena
  • gdigrego/athena
  • zalegria/athena
  • awharton/Athena
  • amelo/athena
  • shaoguan/athena
  • acordeir/athena-ed
  • peiyan/athena
  • pdougan/athena
  • nbruscin/athena
  • gfacini/athena
  • mkholoda/athena
  • fkirfel/athena
  • backes/athena
  • tayoshid/athena-2024
  • esampson/athena-idart
  • caiy/athena
  • kchu/athena
  • bcervato/athena
  • shpeng/athena-2
  • gmercado/athena
  • fwinkl2/athena
  • rhowen/athena
  • gmascare/athena
  • esampson/athena-idart-2
  • costanzo/athena
  • nharriso/athena
  • yvolkotr/athena
  • djlewis/athena
  • yuematsu/athena
  • pibutti/athena
  • esampson/athena-otp
  • bmoser/athena
  • alpleban/athena-met
  • astefl/athena
  • esampson/athena-june-otp
  • yilin/athena
  • zhanhang/athena
  • bdong/athena
  • wcastigl/athena
  • thitchin/athena
  • lbarrade/athena
  • sosarkar/athena-again
  • ksahan/athena
  • msasada/athena
  • seth/athena
  • agheata/athena
  • zhangbo/athena
  • txu/athena
  • okolay/athena
  • robouque/athena
  • mlyukova/athena
  • nsurijr/athena
  • dbaronmo/athena
  • esampson/june-2-otp
  • martyniu/athena
  • wema/athena
  • boudreau/athena
  • damperia/athena-acts
  • eballabe/athena
  • bhuth/athena
  • vsasse/athena
  • acamplan/athena
  • bngair/met-significance-r-22
  • rhicks/athena
  • ksakura/athena
  • menadeem/athena
  • atymchys/athena
  • bngair/me-tsig-athena
  • vkost/athena
  • domatter/athena
  • yanqiw/athena
  • juscerri/athena
  • linghua/athena
  • skadir/athena
  • sgoswami/athena
  • arelycg/athena
  • biliu/athena
  • mwessels/athena
  • beltran/athena
  • ddicroce/athena
  • dreikher/athena
  • sosarkar/athena
  • emoon/athena
  • bdebjani/athena
  • fladias/athena
  • hshaddix/athena
  • lwinkler/athena
  • cleong/athena
  • elham/athena
  • sdiefenb/athena-onnx-tutorial
  • haren/athena
  • mhabedan/athena
  • mads/athena
  • dwilson/athena
  • nkrogh/athena
  • fivone/athena
  • lsanfili/athena
  • scane/athena
  • thart/athena
  • echerepa/athena
  • dahumphr/athena
  • baer/athena
  • dcamarer/athena
  • lifoster/athena
  • kenakamu/athena
  • eskorda/athena
  • glagafon/aaaathena
  • alancast/athena
  • salopez/athena
  • haotianl/athena
  • rshibata/athena
  • glagafon/athena
  • ukhurshi/athena
  • lburke/athena
  • glagafon/glagafon-dq
  • pizhang/athena
  • rvavrick/athena
  • delitez/athena
  • therwig/athena
  • mwitkows/athena
  • htsoi/athena
  • pachabri/athena
  • ezaya/athena
  • lcorazzi/athena
  • mmantina/athena
  • casadop/athena
  • hzhuang/athena
  • jaburles/athena
  • achamber/athena
  • mamirono/athena
  • rmole/athena
  • lmonaco/athena
  • jkrupa/athena
  • mfornasi/athena
  • gserenis/athena
  • semami/athena
  • fdattola/athena
  • rpozzi/athena
  • belderto/athena
  • uepstein/athena
  • abesir/athena
  • ljerala/athena
  • cmavungu/athena
  • jinglis/athena
  • lechols/athena
  • jajohnso/athena
  • jlittle/athena
  • lopezzot/athena
  • htorre/athena
  • robouque/athena-20241115
  • fsiegert/athena
  • wguerin/athena
  • tneep/athena
  • lbrown/athena
  • rmole/athena-personal-fork
  • wenjingw/athena
  • kfang/athena-fork-kyfang
  • prmitra/athena
  • epompapa/athena
  • ashirazi/athena
  • jackersc/athena
  • wasu/athena
  • nihartma/athena
  • amoreira/athena
  • kgrimm/athena-kgrimm
  • toheintz/athena
  • kdipetri/athena
  • aslobodk/athena
  • goetz/athena-acts
  • gfazzino/athena
  • muschmid/athena
  • yazhou/athena
  • wlai/athena
  • alarnold/athena
  • falves/athena
  • djuarezg/athena
  • mdacunha/athena
  • novotnyp/athena
  • rohasan/athena
  • mborodin/athena
  • adsalvad/athena
  • alecrhys/athena
  • lvicenik/athena
  • asickles/athena
  • frcastig/athena
  • ibenaoum/athena
  • zetao/athena
  • mfarzali/athena
  • llarson/athena
  • christog/athena
  • tflee/athena
  • kkazakov/athena
  • jusilva/athena
  • ehampshi/athena
  • pusharma/athena
  • tomoya/athena-low-pt-muon-rec
  • exochell/my-athena
  • gpinheir/athena
  • chhultqu/athena
  • jecifuen/athena
  • mojeda/athena
  • jlieberm/athena
  • hshaddix/athena-hshaddix
  • vchabala/athena
  • nshtokha/athena
  • nsur/athena-lund
  • jlai/athena
  • misavic/athena
  • yuxuanz/local-athena
  • camccrac/athena
  • sizumiya/athena
  • yukari/athena
  • akraus/athena
  • pmourafr/athena
  • zhubacek/athena
  • rkavak/athena
  • mfilipig/athena
  • fdejean/athena
  • sawyer/athena
  • yanqiw/athena-acts-for-run-3-silicon-tracking
  • ssuravar/athena
  • zrokavec/athena
  • beyeo/athena
  • gipoddar/athena
  • vpires/athena-vasco
  • mtancock/athena-2
  • gsalvi/athena
  • ywng/athena
  • fballi/athena
  • sutuncay/athena
  • hadavand/athena
  • stlin/athena
  • ndiasper/athena
1578 results
Show changes
Commits on Source (20)
Showing
with 957 additions and 182 deletions
......@@ -30,6 +30,7 @@ from math import \
from AthenaPython import PyAthena
from PyUtils.fprint import fprint, fprintln, fwrite
from PyDumper import PDG
import ROOT
import cppyy
......@@ -2796,7 +2797,7 @@ def _genvertex_particles_out_size(e):
return e.particles_out().size()
def barcodes (beg, end, sz, f):
def barcodes (beg, end, sz):
#out = [x.barcode() for x in toiter (beg, end)]
# Work around pyroot iterator comparison breakage.
......@@ -2808,9 +2809,25 @@ def barcodes (beg, end, sz, f):
out.append (x.barcode())
out.sort()
for i in out:
fprint (f, i)
return
return out
def genvertex_in_barcodes(v):
if hasattr(v, 'particles_in_const_begin'):
parts = barcodes(v.particles_in_const_begin(),
v.particles_in_const_end(),
v.particles_in_size())
else:
parts = [_gen_barcode(p) for p in v.particles_in()]
parts.sort()
return parts
def genvertex_out_barcodes(v):
if hasattr(v, 'particles_out_const_begin'):
parts = barcodes(v.particles_out_const_begin(),
v.particles_out_const_end(),
v.particles_out_size())
else:
parts = [_gen_barcode(p) for p in v.particles_out()]
parts.sort()
return parts
def dump_GenVertex (v, f):
fprint (f, "%d %d %d %d %d" %
(v.status() if hasattr(v,'status') else v.id(),
......@@ -2828,42 +2845,38 @@ def dump_GenVertex (v, f):
ww = list(v.weights())
fprintln (f, [w for w in ww])
fprint (f, ' (')
if hasattr(v, 'particles_in_const_begin'):
barcodes(v.particles_in_const_begin(),
v.particles_in_const_end(),
v.particles_in_size(), f)
else:
parts = [_gen_barcode(p) for p in v.particles_in()]
parts.sort()
for bc in parts:
fprint (f, bc)
for bc in genvertex_in_barcodes(v):
fprint (f, bc)
fprint (f, ')(')
if hasattr(v, 'particles_out_const_begin'):
barcodes(v.particles_out_const_begin(),
v.particles_out_const_end(),
v.particles_out_size(), f)
else:
parts = [_gen_barcode(p) for p in v.particles_out()]
parts.sort()
for bc in parts:
fprint (f, bc)
for bc in genvertex_out_barcodes(v):
fprint (f, bc)
fprint (f, ')')
return
def dump_GenParticle (p, f):
fprint (f, "%d %d %d %d" %
fprint (f, "%d %5s %d %d" %
(_gen_barcode(p),
p.pdg_id(),
PDG.pdgid_to_name(p.pdg_id()),
p.parent_event().event_number(),
p.status(),))
if p.production_vertex():
fprint (f, _gen_barcode (p.production_vertex()))
s = str(_gen_barcode (p.production_vertex())) + '('
parts = genvertex_in_barcodes (p.production_vertex())
for bc in parts: s += '%d ' % bc
if len(parts) > 3: s += '...'
s += '->)'
fprint (f, s)
else:
fprint (f, None)
if p.end_vertex():
fprint (f, _gen_barcode (p.end_vertex()))
s = str (_gen_barcode (p.end_vertex())) + '(->'
parts = genvertex_out_barcodes (p.end_vertex())
for bc in parts: s += '%d ' % bc
if len(parts) > 3: s += '...'
s += ')'
fprint (f, s)
else:
fprint (f, None)
dump_HLV (p.momentum(), f)
......
This diff is collapsed.
......@@ -663,28 +663,13 @@ void TRTDetectorFactory_Full::create(GeoPhysVol *world)
pCoolingTube->add(pCoolingFluid);
double activeGasZPositionNormalStraws, activeGasZPositionStrawsWithLargeDeadRegion;
//AALONSO, create the Argon Straws
GeoNodePtr<GeoPhysVol> pHoleForMixedStrawAR;
GeoNodePtr<GeoPhysVol> pHoleForMixedStrawWithLargeDeadRegionAR;
if (m_doArgon)
{
pHoleForMixedStrawAR = makeStraw(activeGasZPositionNormalStraws, false, GM_ARGON);
pHoleForMixedStrawWithLargeDeadRegionAR = makeStraw(activeGasZPositionStrawsWithLargeDeadRegion,true, GM_ARGON);
}
// and krypton straws
GeoNodePtr<GeoPhysVol> pHoleForMixedStrawKR;
GeoNodePtr<GeoPhysVol> pHoleForMixedStrawWithLargeDeadRegionKR;
if (m_doKrypton)
{
pHoleForMixedStrawKR = makeStraw(activeGasZPositionNormalStraws, false, GM_KRYPTON);
pHoleForMixedStrawWithLargeDeadRegionKR = makeStraw(activeGasZPositionStrawsWithLargeDeadRegion,true, GM_KRYPTON);
}
double lengthOfInnerDeadRegion= m_data->lengthOfDeadRegion;
double lengthOfActiveGas = (m_data->barrelLengthOfStraw-m_data->barrelLengthOfTwister)/2.0 - m_data->lengthOfDeadRegion - lengthOfInnerDeadRegion;
double activeGasZPositionNormalStraws = (lengthOfActiveGas + m_data->barrelLengthOfTwister) / 2. + lengthOfInnerDeadRegion;
// The barrel straw (including the "hole" in the radiator around it):
GeoNodePtr<GeoPhysVol> pHoleForMixedStraw = makeStraw(activeGasZPositionNormalStraws);
// The straws in the inner layers of module A have a large dead region, and are thus different.
GeoNodePtr<GeoPhysVol> pHoleForMixedStrawWithLargeDeadRegion = makeStraw(activeGasZPositionStrawsWithLargeDeadRegion,true);
lengthOfInnerDeadRegion = m_data->barrelLengthOfLargeDeadRegion;
lengthOfActiveGas = (m_data->barrelLengthOfStraw-m_data->barrelLengthOfTwister)/2.0 - m_data->lengthOfDeadRegion - lengthOfInnerDeadRegion;
double activeGasZPositionStrawsWithLargeDeadRegion = (lengthOfActiveGas + m_data->barrelLengthOfTwister) / 2. + lengthOfInnerDeadRegion;
// The modules themselves.
for (size_t iABC=0;iABC<m_data->nBarrelRings;iABC++) {
......@@ -737,37 +722,14 @@ void TRTDetectorFactory_Full::create(GeoPhysVol *world)
if (!radMat) radMat = m_materialManager->getMaterial("trt::FibreRadiator");
lRad = new GeoLogVol(radName, sRad, radMat);
GeoNodePtr<GeoPhysVol> pRad(new GeoPhysVol(lRad));
GeoNodePtr<GeoPhysVol> pRadAR(m_doArgon ? new GeoPhysVol(lRad) : nullptr );
GeoNodePtr<GeoPhysVol> pRadKR(m_doKrypton ? new GeoPhysVol(lRad) : nullptr);
//---------------------------------------------------------------------------------------------------------------
// Place the cooling tubes in the Radiator
GeoTransform *xCool1 = new GeoTransform(shellPosition.inverse()
*GeoTrf::Translate3D(m_data->barrelXOfCoolingTube[iABC][0],m_data->barrelYOfCoolingTube[iABC][0],0));
GeoTransform *xCool2 = new GeoTransform(shellPosition.inverse()
*GeoTrf::Translate3D(m_data->barrelXOfCoolingTube[iABC][1],m_data->barrelYOfCoolingTube[iABC][1],0));
pRad->add(xCool1);
pRad->add(pCoolingTube);
pRad->add(xCool2);
pRad->add(pCoolingTube);
if (m_doArgon)
{
pRadAR->add(xCool1);
pRadAR->add(pCoolingTube);
pRadAR->add(xCool2);
pRadAR->add(pCoolingTube);
}
if (m_doKrypton)
{
pRadKR->add(xCool1);
pRadKR->add(pCoolingTube);
pRadKR->add(xCool2);
pRadKR->add(pCoolingTube);
}
//----------------------------------------------------------------------------------------------------------------
// Parameterize all of the straws and put them within the radiator.
......@@ -840,46 +802,7 @@ void TRTDetectorFactory_Full::create(GeoPhysVol *world)
} else {
m_detectorManager->setBarrelTransformField(iABC,tx2.clone());
}
//AALONSO
GeoSerialTransformer *serialTransformer = nullptr;
GeoSerialTransformer *serialTransformerAR = nullptr; //Ruslan
GeoSerialTransformer *serialTransformerKR = nullptr; //Artem
serialTransformer = new GeoSerialTransformer(pHoleForMixedStraw, &tx2, m_data->barrelNumberOfStrawsInModule[iABC]-nStrawsWithLargeDeadRegion);
if (m_doArgon) {
serialTransformerAR = new GeoSerialTransformer(pHoleForMixedStrawAR, &tx2, m_data->barrelNumberOfStrawsInModule[iABC]-nStrawsWithLargeDeadRegion);
}
if (m_doKrypton) {
serialTransformerKR = new GeoSerialTransformer(pHoleForMixedStrawKR, &tx2, m_data->barrelNumberOfStrawsInModule[iABC]-nStrawsWithLargeDeadRegion);
}
GeoNodePtr<GeoSerialTransformer> serialTransformerDead;
GeoNodePtr<GeoSerialTransformer> serialTransformerDeadAR;
GeoNodePtr<GeoSerialTransformer> serialTransformerDeadKR;
serialTransformerDead = new GeoSerialTransformer(pHoleForMixedStrawWithLargeDeadRegion , &tx2Dead,
nStrawsWithLargeDeadRegion);
if (m_doArgon)
serialTransformerDeadAR = new GeoSerialTransformer(pHoleForMixedStrawWithLargeDeadRegionAR, &tx2Dead,
nStrawsWithLargeDeadRegion);
if (m_doKrypton)
serialTransformerDeadKR = new GeoSerialTransformer(pHoleForMixedStrawWithLargeDeadRegionKR, &tx2Dead,
nStrawsWithLargeDeadRegion);
pRad->add(new GeoSerialIdentifier(0));
if (m_doArgon ) pRadAR->add(new GeoSerialIdentifier(0));
if (m_doKrypton) pRadKR->add(new GeoSerialIdentifier(0));
if (iABC==0) {
pRad->add(serialTransformerDead);
if (m_doArgon ) pRadAR->add(serialTransformerDeadAR);
if (m_doKrypton) pRadKR->add(serialTransformerDeadKR);
}
pRad->add(serialTransformer);
if (m_doArgon ) pRadAR->add(serialTransformerAR);
if (m_doKrypton) pRadKR->add(serialTransformerKR);
// Adds one straw from each layer (reformulate..) (should be done via m_data from database)
double oldx=-999*GeoModelKernelUnits::cm, oldz=-999*GeoModelKernelUnits::cm;
unsigned int c=0;
......@@ -961,24 +884,36 @@ void TRTDetectorFactory_Full::create(GeoPhysVol *world)
if (m_strawsvcavailable && (m_doArgon || m_doKrypton)) strawStatusHT = m_sumTool->getStatusHT(TRT_Identifier);
ActiveGasMixture agm = DecideGasMixture(strawStatusHT);
// Ruslan: insert radiators with Ar-straws
// Artem: same for Kr
// Make a radiator
GeoNodePtr<GeoPhysVol> pRad(new GeoPhysVol(lRad));
pRad->add(xCool1);
pRad->add(pCoolingTube);
pRad->add(xCool2);
pRad->add(pCoolingTube);
pRad->add(new GeoSerialIdentifier(0));
GeoNodePtr<GeoPhysVol> pHoleForMixedStraw;
GeoNodePtr<GeoPhysVol> pHoleForMixedStrawWithLargeDeadRegion;
switch (agm)
{
case GM_ARGON:
ATH_MSG_DEBUG( "Marking Argon straws from /TRT/Cond/StatusHT:\t"
<< idHelper->print_to_string(TRT_Identifier));
pShell->add(pRadAR);
pHoleForMixedStraw = makeStraw(false, GM_ARGON);
pHoleForMixedStrawWithLargeDeadRegion = makeStraw(true, GM_ARGON);
break;
case GM_KRYPTON:
ATH_MSG_DEBUG( "Marking Krypton straws from /TRT/Cond/StatusHT:\t"
<< idHelper->print_to_string(TRT_Identifier));
pShell->add(pRadKR);
pHoleForMixedStraw = makeStraw(false, GM_KRYPTON);
pHoleForMixedStrawWithLargeDeadRegion = makeStraw(true, GM_KRYPTON);
break;
case GM_XENON:
ATH_MSG_DEBUG( "Marking Xenon straws from /TRT/Cond/StatusHT:\t"
<< idHelper->print_to_string(TRT_Identifier) );
pShell->add(pRad);
pHoleForMixedStraw = makeStraw();
pHoleForMixedStrawWithLargeDeadRegion = makeStraw(true);
break;
default:
ATH_MSG_FATAL( "Unexpected gas mixture: " << agm );
......@@ -986,6 +921,20 @@ void TRTDetectorFactory_Full::create(GeoPhysVol *world)
return;
}
GeoNodePtr<GeoSerialTransformer> serialTransformer = new GeoSerialTransformer(pHoleForMixedStraw
, &tx2
, m_data->barrelNumberOfStrawsInModule[iABC]-nStrawsWithLargeDeadRegion);
if (iABC==0) {
GeoNodePtr<GeoSerialTransformer> serialTransformerDead = new GeoSerialTransformer(pHoleForMixedStrawWithLargeDeadRegion
, &tx2Dead
, nStrawsWithLargeDeadRegion);
pRad->add(serialTransformerDead);
}
pRad->add(serialTransformer);
pShell->add(pRad);
//-------------------------------------------------------------------//
// //
// Barrel readout: //
......@@ -2119,16 +2068,13 @@ const GeoShape * TRTDetectorFactory_Full::makeModule ( double length, const GeoT
//////////////////////////////////// makeStraw ///////////////////////////////////
//
//GeoPhysVol * TRTDetectorFactory_Full::makeStraw( double& activeGasZPosition, bool hasLargeDeadRegion /*= false*/ ) const {
GeoPhysVol * TRTDetectorFactory_Full::makeStraw( double& activeGasZPosition, bool hasLargeDeadRegion /*= false*/, ActiveGasMixture gasMixture) {
GeoPhysVol * TRTDetectorFactory_Full::makeStraw(bool hasLargeDeadRegion, ActiveGasMixture gasMixture) {
double lengthOfInnerDeadRegion= hasLargeDeadRegion ? m_data->barrelLengthOfLargeDeadRegion : m_data->lengthOfDeadRegion ;
double lengthOfActiveGas = (m_data->barrelLengthOfStraw-m_data->barrelLengthOfTwister)/2.0 - m_data->lengthOfDeadRegion - lengthOfInnerDeadRegion;
double posA = (lengthOfActiveGas + m_data->barrelLengthOfTwister) / 2. + lengthOfInnerDeadRegion; // middle of lengthOfActiveGas
double posInnerDeadRegion = ( m_data->barrelLengthOfTwister + lengthOfInnerDeadRegion ) / 2;
activeGasZPosition=posA;
// Straws:
GeoTube *sHole = new GeoTube(0,m_data->barrelOuterRadiusOfStrawHole, m_data->barrelLengthOfStraw/2.0);
GeoLogVol *lHole = new GeoLogVol("Hole", sHole, m_materialManager->getMaterial("trt::CO2"));
......
......@@ -73,12 +73,19 @@ class TRTDetectorFactory_Full : public InDetDD::DetectorFactoryBase {
ActiveGasMixture DecideGasMixture(int strawStatusHT);
// private helper methods:
const GeoShape * makeModule ( double length, const GeoTrf::Vector2D& corner1 , const GeoTrf::Vector2D& corner2, const GeoTrf::Vector2D& corner3,
const GeoTrf::Vector2D& corner4, GeoTrf::Transform3D & absolutePosition, double shrinkDist=0 ) const;
//GeoPhysVol * makeStraw( double& activeGasZPosition, bool hasLargeDeadRegion=false ) const;
GeoPhysVol * makeStraw( double& activeGasZPosition, bool hasLargeDeadRegion=false, ActiveGasMixture gasMixture = GM_XENON);
//GeoFullPhysVol *makeStrawPlane( size_t w ) const;
GeoFullPhysVol *makeStrawPlane( size_t w , ActiveGasMixture gasMixture = GM_XENON);
const GeoShape* makeModule(double length
, const GeoTrf::Vector2D& corner1
, const GeoTrf::Vector2D& corner2
, const GeoTrf::Vector2D& corner3
, const GeoTrf::Vector2D& corner4
, GeoTrf::Transform3D & absolutePosition
, double shrinkDist=0) const;
GeoPhysVol* makeStraw(bool hasLargeDeadRegion=false
, ActiveGasMixture gasMixture = GM_XENON);
GeoFullPhysVol* makeStrawPlane(size_t w
, ActiveGasMixture gasMixture = GM_XENON);
// private member data:
InDetDD::TRT_DetectorManager *m_detectorManager = nullptr; // ownership handed to calleer.
......
......@@ -154,7 +154,6 @@ namespace MuonGM {
// MuonChannelDesign m_phiDesign;
std::array<MuonChannelDesign, 4> m_etaDesign{};
std::array<int, 4> m_nStrips{}; // #of active strips
int m_nlayers{0}; // #of gas gaps
const NswPassivationDbData* m_passivData{nullptr};
......@@ -289,11 +288,11 @@ namespace MuonGM {
inline int MMReadoutElement::numberOfLayers(bool) const { return m_nlayers; }
inline int MMReadoutElement::numberOfStrips(const Identifier& layerId) const { return m_nStrips[layerHash(layerId)]; }
inline int MMReadoutElement::numberOfStrips(const Identifier& layerId) const { return m_etaDesign[layerHash(layerId)].totalStrips; }
inline int MMReadoutElement::numberOfStrips(int lay, bool /*measPhi*/) const {
if (lay > -1 && lay < (int)m_nStrips.size())
return m_nStrips[lay];
if (lay > -1 && lay < static_cast<int>(m_etaDesign.size()))
return m_etaDesign[lay].totalStrips;
else
return -1;
}
......
......@@ -193,14 +193,13 @@ namespace MuonGM {
//============================================================================
inline int MuonChannelDesign::channelNumber(const Amg::Vector2D& pos) const {
static const Amg::Vector2D x_axis{1.,0.};
int chNum{-1};
if (type == ChannelType::etaStrip && detType == DetType::MM) {
// ** MM strips: keeping cases outside the active area, but within the envelope,
// to avoid warnings from MuonPRDTest. Those channels are removed from digitization.
const Amg::Vector2D posInEta = m_rotMat.inverse()*pos;
const double xMid = (posInEta - firstPos()*x_axis).dot(m_stereoNormal) / m_stereoNormal.x();
const double xMid = (posInEta - firstPos()*Amg::Vector2D::UnitX()).dot(m_stereoNormal) / m_stereoNormal.x();
const int missedBottom = numberOfMissingBottomStrips();
// first position is always 1/2 pitch above the center of the first active strip
......@@ -356,8 +355,7 @@ namespace MuonGM {
if (st <= nMissedBottom || st > nMissedBottom + nch) return false;
// firstPos is 1/2 pitch above the center of the first active strip.
static const Amg::Vector2D x_axis{1.,0.};
pos = (firstPos() + inputPitch* (st - nMissedBottom - 1.5)) * x_axis;
pos = (firstPos() + inputPitch* (st - nMissedBottom - 1.5)) * Amg::Vector2D::UnitX();
} else {
/// sTGC and default case for eta strips
......
......@@ -200,7 +200,6 @@ namespace MuonGM {
/// Input width is defined as the distance between two channels
design.inputWidth = stripPitch * std::cos(design.stereoAngle());
m_nStrips[il] = design.totalStrips;
if (!design.hasStereoAngle()) { // eta layers
design.nch = design.totalStrips - design.nMissedBottomEta - design.nMissedTopEta;
design.setFirstPos(-0.5 * design.xSize() + stripPitch);
......@@ -275,7 +274,6 @@ namespace MuonGM {
/// Input width is defined as the distance between two channels
design.inputWidth = pitch * std::cos(design.stereoAngle());
m_nStrips[il] = design.totalStrips;
if (!design.hasStereoAngle()) { // eta layers
design.nch = design.totalStrips - design.nMissedBottomEta - design.nMissedTopEta;
design.setFirstPos(-0.5 * design.xSize() + pitch);
......@@ -337,7 +335,7 @@ namespace MuonGM {
if (gasgap < 1 || gasgap > m_nlayers) return false;
int strip = m_idHelper.channel(id);
return strip >= 1 && strip <= m_nStrips[gasgap - 1];
return strip >= 1 && strip <= m_etaDesign[gasgap - 1].totalStrips;
}
......
......@@ -10,15 +10,25 @@
#include <GeoModelKernel/GeoFullPhysVol.h>
#include <MuonReadoutGeometryR4/MdtReadoutElement.h>
#include <MuonReadoutGeometryR4/RpcReadoutElement.h>
#include <MuonReadoutGeometryR4/TgcReadoutElement.h>
#include <MuonReadoutGeometryR4/MmReadoutElement.h>
#include <MuonReadoutGeometryR4/sTgcReadoutElement.h>
#include <MuonReadoutGeometryR4/MuonChamber.h>
#include <MuonAlignmentDataR4/MdtAlignmentStore.h>
#include <MuonAlignmentDataR4/sTgcAlignmentStore.h>
#include <MuonAlignmentDataR4/MmAlignmentStore.h>
#include <MuonReadoutGeometry/MuonStation.h>
#include <MuonReadoutGeometry/MdtReadoutElement.h>
#include <MuonReadoutGeometry/RpcReadoutElement.h>
#include <MuonReadoutGeometry/sTgcReadoutElement.h>
#include <MuonReadoutGeometry/MMReadoutElement.h>
#include <MuonReadoutGeometry/MuonChannelDesign.h>
#include <AthenaKernel/IOVInfiniteRange.h>
......@@ -38,6 +48,7 @@ namespace {
return readOutVol->getAbsoluteTransform().inverse() *
readOutVol->getParent()->getX();
}
using SubDetAlignment = ActsGeometryContext::AlignmentStorePtr;
}
MuonReadoutGeomCnvAlg::MuonReadoutGeomCnvAlg(const std::string& name, ISvcLocator* pSvcLocator):
......@@ -90,8 +101,10 @@ StatusCode MuonReadoutGeomCnvAlg::execute(const EventContext& ctx) const {
PVLink world{createGeoWorld()};
detMgr->addTreeTop(world);
ATH_CHECK(buildMdt(geoContext, detMgr.get(), world));
ATH_CHECK(buildRpc(geoContext, detMgr.get(), world));
ATH_CHECK(buildSTGC(geoContext, detMgr.get(), world));
ATH_CHECK(buildMM(geoContext, detMgr.get(), world));
ATH_CHECK(buildRpc(geoContext, detMgr.get(), world));
ATH_CHECK(writeHandle.record(std::move(detMgr)));
return StatusCode::SUCCESS;
......@@ -249,10 +262,55 @@ StatusCode MuonReadoutGeomCnvAlg::buildRpc(const ActsGeometryContext& gctx,
return StatusCode::SUCCESS;
}
StatusCode MuonReadoutGeomCnvAlg::dumpAndCompare(const ActsGeometryContext& gctx,
const MuonGMR4::MmReadoutElement& refEle,
const MuonGM::MMReadoutElement& testEle) const {
if (!m_checkGeo) {
return StatusCode::SUCCESS;
}
ATH_MSG_VERBOSE("Compare basic readout transforms"<<std::endl
<<GeoTrf::toString(testEle.absTransform(),true)<<std::endl
<<GeoTrf::toString(refEle.localToGlobalTrans(gctx), true));
const MmIdHelper& idHelper{m_idHelperSvc->mmIdHelper()};
for (unsigned int gasGap = 1; gasGap <= refEle.nGasGaps(); ++ gasGap) {
const Identifier gapId = idHelper.channelID(refEle.identify(), refEle.multilayer(), gasGap, 1);
const Amg::Transform3D& refTrf{refEle.localToGlobalTrans(gctx, gapId)};
const Amg::Transform3D& testTrf{testEle.transform(gapId)};
if (!Amg::doesNotDeform(refTrf.inverse()*testTrf)) {
ATH_MSG_FATAL("The layer "<<m_idHelperSvc->toStringGasGap(gapId)<<" does not transform equally"
<<GeoTrf::toString(refTrf, true) <<" vs. "<<GeoTrf::toString(testTrf, true));
return StatusCode::FAILURE;
}
const MuonGMR4::StripDesign& stripDesign{refEle.stripLayer(gapId).design()};
for (int strip = stripDesign.firstStripNumber(); strip <= stripDesign.numStrips(); ++strip) {
const Identifier stripId = idHelper.channelID(refEle.identify(), refEle.multilayer(), gasGap, strip);
const Amg::Vector3D refStripPos{refEle.stripPosition(gctx, stripId)};
const Amg::Vector3D refStripDir{refEle.localToGlobalTrans(gctx, refEle.layerHash(stripId)).linear() * Amg::Vector3D::UnitX()};
Amg::Vector3D testStripPos{Amg::Vector3D::Zero()};
if (!testEle.stripGlobalPosition(stripId, testStripPos)) {
ATH_MSG_FATAL("Failed to retrieve strip position "<<m_idHelperSvc->toString(stripId));
return StatusCode::FAILURE;
}
const double dist = refStripDir.dot(refStripPos - testStripPos);
if (std::abs(dist) > 10. * Gaudi::Units::micrometer) {
ATH_MSG_FATAL("The strip "<<Amg::toString(testStripPos)<<" is not describing the same strip as "
<<Amg::toString(refStripPos)<<". Channel "<<m_idHelperSvc->toString(stripId)
<<" distance: "<<dist<<" "<<(dist / testEle.m_etaDesign[gasGap -1].inputWidth));
return StatusCode::FAILURE;
}
ATH_MSG_VERBOSE("Channel postion "<<m_idHelperSvc->toString(stripId)<<" match between legacy & new");
}
}
return StatusCode::SUCCESS;
}
StatusCode MuonReadoutGeomCnvAlg::dumpAndCompare(const ActsGeometryContext& gctx,
const MuonGMR4::RpcReadoutElement& refEle,
const MuonGM::RpcReadoutElement& testEle) const {
if (!msgLvl(MSG::VERBOSE)) {
if (!m_checkGeo) {
return StatusCode::SUCCESS;
}
ATH_MSG_VERBOSE("Compare basic readout transforms"<<std::endl
......@@ -292,10 +350,70 @@ StatusCode MuonReadoutGeomCnvAlg::dumpAndCompare(const ActsGeometryContext& gctx
}
return StatusCode::SUCCESS;
}
StatusCode MuonReadoutGeomCnvAlg::buildMM(const ActsGeometryContext& gctx,
MuonGM::MuonDetectorManager* mgr,
PVLink world) const {
SubDetAlignment alignItr = gctx.getStore(ActsTrk::DetectorType::Mm);
const auto alignStore = alignItr ?
static_cast<const MmAlignmentStore*>(alignItr->internalAlignment.get()) : nullptr;
const std::vector<const MuonGMR4::MmReadoutElement*> mmReadouts{m_detMgr->getAllMmReadoutElements()};
for (const MuonGMR4::MmReadoutElement* copyMe : mmReadouts) {
const Identifier reId = copyMe->identify();
GeoIntrusivePtr<const GeoVFullPhysVol> readOutVol{copyMe->getMaterialGeom()};
PVLink clonedVol{cloneVolume(const_pointer_cast<GeoVFullPhysVol>(readOutVol))};
GeoIntrusivePtr<GeoFullPhysVol> physVol{dynamic_pointer_cast<GeoFullPhysVol>(clonedVol)};
world->add(make_intrusive<GeoTransform>(copyMe->localToGlobalTrans(gctx)));
world->add(physVol);
auto newRE = std::make_unique<MuonGM::MMReadoutElement>(physVol,
m_idHelperSvc->stationNameString(reId),
copyMe->stationEta(),
copyMe->stationPhi(),
copyMe->multilayer(), mgr,
alignStore ? alignStore->passivation : nullptr);
/// Loop over the gas gaps & efine the
for (unsigned int gasGap = 0; gasGap < copyMe->nGasGaps(); ++gasGap) {
const MuonGMR4::StripLayer& stripLayer{copyMe->stripLayer(copyMe->createHash(0, gasGap +1))};
const MuonGMR4::StripDesign& designFrom{stripLayer.design()};
newRE->m_Xlg[gasGap] = stripLayer.toOrigin() *
Amg::getRotateZ3D(-designFrom.stereoAngle()) *
Amg::getRotateY3D(90. * Gaudi::Units::deg);
ATH_MSG_VERBOSE("Layer transform "<<gasGap<<" "<<GeoTrf::toString(newRE->m_Xlg[gasGap], true));
MuonGM::MuonChannelDesign& designTo{newRE->m_etaDesign[gasGap]};
designTo.defineTrapezoid(designFrom.shortHalfHeight(),
designFrom.longHalfHeight(),
designFrom.halfWidth(),
designFrom.stereoAngle());
designTo.type = MuonGM::MuonChannelDesign::ChannelType::etaStrip;
designTo.detType = MuonGM::MuonChannelDesign::DetType::MM;
designTo.inputPitch = designFrom.stripPitch();
designTo.inputWidth = designTo.inputPitch * std::cos(designTo.stereoAngle());
designTo.nMissedBottomEta = designTo.nMissedBottomStereo = designFrom.firstStripNumber() - 1;
designTo.totalStrips = designFrom.numStrips();
designTo.nch = designFrom.numStrips();
designTo.setFirstPos(designFrom.firstStripPos().x() + 0.5*designTo.inputPitch);
}
newRE->fillCache();
if (alignStore && alignStore->getBLine(reId)) {
newRE->setBLinePar(*alignStore->getBLine(reId));
}
ATH_CHECK(dumpAndCompare(gctx, *copyMe, *newRE));
mgr->addMMReadoutElement(std::move(newRE));
}
return StatusCode::SUCCESS;
}
StatusCode MuonReadoutGeomCnvAlg::buildSTGC(const ActsGeometryContext& gctx,
MuonGM::MuonDetectorManager* mgr,
PVLink world) const{
using SubDetAlignment = ActsGeometryContext::AlignmentStorePtr;
SubDetAlignment alignItr = gctx.getStore(ActsTrk::DetectorType::sTgc);
auto alignStore = alignItr ? static_cast<const sTgcAlignmentStore*>(alignItr->internalAlignment.get()) : nullptr;
......@@ -309,7 +427,7 @@ StatusCode MuonReadoutGeomCnvAlg::buildSTGC(const ActsGeometryContext& gctx,
world->add(physVol);
auto newRE = std::make_unique<MuonGM::sTgcReadoutElement>(physVol,
m_idHelperSvc->stationNameString(reId),
m_idHelperSvc->stationNameString(reId).substr(1),
copyMe->stationEta(),
copyMe->stationPhi(),
copyMe->multilayer(), mgr);
......@@ -342,7 +460,7 @@ StatusCode MuonReadoutGeomCnvAlg::buildSTGC(const ActsGeometryContext& gctx,
etaDesign.inputPitch = copyEtaDesign.stripPitch();
etaDesign.inputWidth = copyEtaDesign.stripWidth();
etaDesign.nch = copyEtaDesign.numStrips();
etaDesign.setFirstPos( (*copyEtaDesign.center(1)).x());
etaDesign.setFirstPos(copyEtaDesign.firstStripPos().x());
/// Initialize the phi design
const MuonGMR4::WireGroupDesign& copyPhiDesign{copyMe->wireDesign(layerHash)};
......@@ -362,7 +480,7 @@ StatusCode MuonReadoutGeomCnvAlg::buildSTGC(const ActsGeometryContext& gctx,
}
phiDesign.inputPitch = copyPhiDesign.stripPitch();
phiDesign.inputWidth = 0.015;
phiDesign.setFirstPos((*copyPhiDesign.center(1)).x()); // Position of 1st wire, accounts for staggering
phiDesign.setFirstPos(copyPhiDesign.firstStripPos().x()); // Position of 1st wire, accounts for staggering
// phiDesign.firstPitch = firstWireGroup[il]; // Number of Wires in 1st group, group staggering
//phiDesign.groupWidth = wireGroupWidth; // Number of Wires normal group
phiDesign.nGroups = copyPhiDesign.numStrips(); // Number of Wire Groups
......@@ -380,7 +498,6 @@ StatusCode MuonReadoutGeomCnvAlg::buildMdt(const ActsGeometryContext& gctx,
MuonGM::MuonDetectorManager* mgr,
PVLink world) const {
/// Access the B-Line and As-built parameters
using SubDetAlignment = ActsGeometryContext::AlignmentStorePtr;
SubDetAlignment alignItr = gctx.getStore(ActsTrk::DetectorType::Mdt);
const MdtAlignmentStore* alignStore = alignItr ?
static_cast<const MdtAlignmentStore*>(alignItr->internalAlignment.get()) : nullptr;
......@@ -474,7 +591,7 @@ StatusCode MuonReadoutGeomCnvAlg::buildMdt(const ActsGeometryContext& gctx,
StatusCode MuonReadoutGeomCnvAlg::dumpAndCompare(const ActsGeometryContext& gctx,
const MuonGMR4::MdtReadoutElement& refEle,
const MuonGM::MdtReadoutElement& testEle) const {
if (!msgLvl(MSG::VERBOSE)) {
if (!m_checkGeo) {
return StatusCode::SUCCESS;
}
......
......@@ -48,6 +48,11 @@ class MuonReadoutGeomCnvAlg : public AthReentrantAlgorithm {
MuonGM::MuonDetectorManager* mgr,
PVLink world) const;
StatusCode buildMM(const ActsGeometryContext& gctx,
MuonGM::MuonDetectorManager* mgr,
PVLink world) const;
StatusCode dumpAndCompare(const ActsGeometryContext& gctx,
const MuonGMR4::RpcReadoutElement& refEle,
......@@ -56,13 +61,19 @@ class MuonReadoutGeomCnvAlg : public AthReentrantAlgorithm {
StatusCode dumpAndCompare(const ActsGeometryContext& gctx,
const MuonGMR4::MdtReadoutElement& refEle,
const MuonGM::MdtReadoutElement& testEle) const;
StatusCode dumpAndCompare(const ActsGeometryContext& gctx,
const MuonGMR4::MmReadoutElement& refEle,
const MuonGM::MMReadoutElement& testEle) const;
ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
SG::WriteCondHandleKey<MuonGM::MuonDetectorManager> m_writeKey{this, "WriteKey", "MuonDetectorManager"};
SG::ReadCondHandleKeyArray<ActsTrk::DetectorAlignStore> m_alignStoreKeys{this, "AlignmentKeys", {}, "Alignment key"};
Gaudi::Property<bool> m_checkGeo{this, "checkGeo", false, "Checks the positions of the sensors"};
const MuonGMR4::MuonDetectorManager* m_detMgr{nullptr};
......
......@@ -172,21 +172,28 @@ if __name__=="__main__":
cfg.merge(setupHistSvcCfg(flags, out_file = args.outRootFile))
chambToTest = args.chambers if len([x for x in args.chambers if x =="all"]) ==0 else []
cfg.getCondAlgo("MuonDetectorManagerCondAlg").checkGeo = False
if flags.Detector.GeometryMDT:
cfg.merge(GeoModelMdtTestCfg(flags,
TestStations = [ch for ch in chambToTest if ch[0] == "B" or ch[0] == "E"],
ReadoutSideXML="ReadoutSides.xml"))
ReadoutSideXML="ReadoutSides.xml",
ExtraInputs=[( 'MuonGM::MuonDetectorManager' , 'ConditionStore+MuonDetectorManager' )]))
if flags.Detector.GeometryRPC:
cfg.merge(GeoModelRpcTestCfg(flags, TestStations = [ch for ch in chambToTest if ch[0] == "B"]))
cfg.merge(GeoModelRpcTestCfg(flags, TestStations = [ch for ch in chambToTest if ch[0] == "B"],
ExtraInputs=[( 'MuonGM::MuonDetectorManager' , 'ConditionStore+MuonDetectorManager' )]))
if flags.Detector.GeometryTGC:
cfg.merge(GeoModelTgcTestCfg(flags, TestStations = [ch for ch in chambToTest if ch[0] == "T"]))
cfg.merge(GeoModelTgcTestCfg(flags, TestStations = [ch for ch in chambToTest if ch[0] == "T"],
ExtraInputs=[( 'MuonGM::MuonDetectorManager' , 'ConditionStore+MuonDetectorManager' )]))
if flags.Detector.GeometryMM:
cfg.merge(GeoModelMmTestCfg(flags, TestStations = [ch for ch in chambToTest if ch[0] == "M"]))
cfg.merge(GeoModelMmTestCfg(flags, TestStations = [ch for ch in chambToTest if ch[0] == "M"],
ExtraInputs=[( 'MuonGM::MuonDetectorManager' , 'ConditionStore+MuonDetectorManager' )]))
if flags.Detector.GeometrysTGC:
cfg.merge(GeoModelsTgcTestCfg(flags, TestStations = [ch for ch in chambToTest if ch[0] == "S"]))
cfg.merge(GeoModelsTgcTestCfg(flags, TestStations = [ch for ch in chambToTest if ch[0] == "S"],
ExtraInputs=[( 'MuonGM::MuonDetectorManager' , 'ConditionStore+MuonDetectorManager' )]))
executeTest(cfg, num_events = args.nEvents)
......@@ -140,6 +140,8 @@ namespace MuonGMR4 {
const Amg::Vector2D& stripNormal() const;
/// Vector pointing along the strip
const Amg::Vector2D& stripDir() const;
/// Vector indicating the first strip position
const Amg::Vector2D& firstStripPos() const;
private:
void setStereoAngle(double stereo);
/// Resets the cache of the directions
......
......@@ -20,7 +20,7 @@ namespace MuonGMR4 {
inline const Amg::Vector2D& StripDesign::cornerTopRight() const { return m_topRight; }
inline const Amg::Vector2D& StripDesign::stripNormal() const { return m_stripNormal; }
inline const Amg::Vector2D& StripDesign::stripDir() const { return m_stripDir; }
inline const Amg::Vector2D& StripDesign::firstStripPos() const { return m_firstStripPos; }
SET_DIRECTION(edgeDirTop, m_dirTopEdge, m_topLeft, m_topRight)
SET_DIRECTION(edgeDirBottom, m_dirBotEdge, m_bottomLeft, m_bottomRight)
......
/*
Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef MUONREADOUTGEOMETRYR4_WIREGROUPDESIGN_ICC
#define MUONREADOUTGEOMETRYR4_WIREGROUPDESIGN_ICC
......@@ -15,7 +15,7 @@ namespace MuonGMR4 {
return Amg::Vector2D::Zero();
}
const wireGroup& wireGrp = m_groups[groupNum];
return StripDesign::stripPosition(0) +
return firstStripPos() +
(wireGrp.accumlWires + wireGrp.numWires/2)*stripPitch() * stripNormal();
}
inline CheckVector2D WireGroupDesign::wirePosition(unsigned int groupNum,
......@@ -33,7 +33,7 @@ namespace MuonGMR4 {
" [1-"<<wireGrp.numWires<<"] wires.");
return std::nullopt;
}
return std::make_optional<Amg::Vector2D>(StripDesign::stripPosition(0) +
return std::make_optional<Amg::Vector2D>(firstStripPos() +
(wireGrp.accumlWires + (wireNum - 1))*stripPitch() * stripNormal());
}
inline CheckVector2D WireGroupDesign::leftWireEdge(unsigned int groupNum,
......@@ -61,7 +61,7 @@ namespace MuonGMR4 {
}
inline int WireGroupDesign::stripNumber(const Amg::Vector2D& extPos) const {
std::optional<double> wirePitches = Amg::intersect<2>(StripDesign::stripPosition(0), stripDir(),
std::optional<double> wirePitches = Amg::intersect<2>(firstStripPos(), stripDir(),
extPos, - Amg::Vector2D::UnitX());
if (!wirePitches) {
return -1;
......
......@@ -127,6 +127,10 @@ class SmallRJetAnalysisConfig (ConfigBlock) :
info="whether to run JVT selection. The default is True.")
self.addOption ('runFJvtSelection', False, type=bool,
info="whether to run forward JVT selection. The default is False.")
self.addOption ('jvtWP', "FixedEffPt", type=str,
info="which Jvt WP to apply. The default is FixedEffPt.")
self.addOption ('fJvtWP', "Loose", type=str,
info="which fJvt WP to apply. The default is Loose.")
self.addOption ('runJvtEfficiency', True, type=bool,
info="whether to calculate the JVT efficiency. The default is True.")
self.addOption ('runFJvtEfficiency', False, type=bool,
......@@ -266,6 +270,14 @@ class SmallRJetAnalysisConfig (ConfigBlock) :
raise ValueError(
"Unsupported input type '{0}' for R=0.4 jets!".format(self.jetInput) )
if self.jvtWP not in ["FixedEffPt"]:
raise ValueError(
"Unsupported NNJvt WP '{0}'".format(self.jvtWP) )
if self.fJvtWP not in ["Loose", "Tight", "Tighter"]:
raise ValueError(
"Unsupported fJvt WP '{0}'".format(self.fJvtWP) )
if not config.isPhyslite() or self.recalibratePhyslite:
# Prepare the jet calibration algorithm
alg = config.createAlgorithm( 'CP::JetCalibrationAlg', 'JetCalibrationAlg'+postfix )
......@@ -343,11 +355,12 @@ class SmallRJetAnalysisConfig (ConfigBlock) :
# Set up the jet efficiency scale factor calculation algorithm
# Change the truthJetCollection property to AntiKt4TruthWZJets if preferred
if self.runJvtSelection :
assert self.jetInput=="EMPFlow", "NNJvt WPs and SFs only valid for PFlow jets"
alg = config.createAlgorithm('CP::AsgSelectionAlg', f'JvtSelectionAlg{postfix}')
config.addPrivateTool('selectionTool', 'CP::NNJvtSelectionTool')
alg.selectionTool.JetContainer = config.readName(self.containerName)
alg.selectionTool.WorkingPoint = "FixedEffPt"
alg.selectionTool.MaxPtForJvt = 60e3 if self.jetInput == "EMPFlow" else 120e3
alg.selectionTool.WorkingPoint = self.jvtWP
alg.selectionTool.MaxPtForJvt = 60e3
alg.selectionDecoration = "jvt_selection,as_char"
alg.particles = config.readName(self.containerName)
......@@ -355,8 +368,12 @@ class SmallRJetAnalysisConfig (ConfigBlock) :
alg = config.createAlgorithm( 'CP::JvtEfficiencyAlg', 'JvtEfficiencyAlg'+postfix )
config.addPrivateTool( 'efficiencyTool', 'CP::NNJvtEfficiencyTool' )
alg.efficiencyTool.JetContainer = config.readName(self.containerName)
alg.efficiencyTool.MaxPtForJvt = 60e3 if self.jetInput == "EMPFlow" else 120e3
alg.efficiencyTool.WorkingPoint = 'FixedEffPt'
alg.efficiencyTool.MaxPtForJvt = 60e3
alg.efficiencyTool.WorkingPoint = self.jvtWP
if config.geometry() is LHCPeriod.Run2:
alg.efficiencyTool.SFFile = "JetJvtEfficiency/May2024/NNJvtSFFile_Run2_EMPFlow.root"
else:
alg.efficiencyTool.SFFile = "JetJvtEfficiency/May2024/NNJvtSFFile_Run3_EMPFlow.root"
alg.selection = 'jvt_selection,as_char'
alg.scaleFactorDecoration = 'jvt_effSF_%SYS%'
alg.outOfValidity = 2
......@@ -368,20 +385,23 @@ class SmallRJetAnalysisConfig (ConfigBlock) :
config.addSelection (self.containerName, 'baselineJvt', 'jvt_selection,as_char', preselection=False)
if self.runFJvtSelection :
assert self.jetInput=="EMPFlow", "fJvt WPs and SFs only valid for PFlow jets"
alg = config.createAlgorithm('CP::AsgSelectionAlg', f'FJvtSelectionAlg{postfix}')
config.addPrivateTool('selectionTool', 'CP::FJvtSelectionTool')
alg.selectionTool.JetContainer = config.readName(self.containerName)
alg.selectionTool.WorkingPoint = "Loose"
alg.selectionTool.WorkingPoint = self.fJvtWP
alg.selectionDecoration = "fjvt_selection,as_char"
alg.particles = config.readName(self.containerName)
alg = config.createAlgorithm( 'CP::JvtEfficiencyAlg', 'ForwardJvtEfficiencyAlg' )
config.addSelection (self.containerName, 'baselineFJvt', 'fjvt_selection,as_char', preselection=False)
if self.runFJvtEfficiency and config.dataType() is not DataType.Data:
alg = config.createAlgorithm( 'CP::JvtEfficiencyAlg', 'FJvtEfficiencyAlg'+postfix )
config.addPrivateTool( 'efficiencyTool', 'CP::FJvtEfficiencyTool' )
alg.efficiencyTool.JetContainer = config.readName(self.containerName)
alg.efficiencyTool.WorkingPoint = 'Loose'
alg.efficiencyTool.WorkingPoint = self.fJvtWP
if config.geometry() is LHCPeriod.Run2:
alg.efficiencyTool.SFFile = "JetJvtEfficiency/May2024/fJvtSFFile_Run2_EMPFlow.root"
else:
alg.efficiencyTool.SFFile = "JetJvtEfficiency/May2024/fvtSFFile_Run3_EMPFlow.root"
alg.selection = 'fjvt_selection,as_char'
alg.scaleFactorDecoration = 'fjvt_effSF_%SYS%'
alg.outOfValidity = 2
......@@ -389,7 +409,8 @@ class SmallRJetAnalysisConfig (ConfigBlock) :
alg.skipBadEfficiency = False
alg.jets = config.readName (self.containerName)
alg.preselection = config.getPreselection (self.containerName, '')
config.addOutputVar (self.containerName, alg.scaleFactorDecoration, 'jvtEfficiency')
config.addOutputVar (self.containerName, alg.scaleFactorDecoration, 'fjvtEfficiency')
config.addSelection (self.containerName, 'baselineFJvt', 'fjvt_selection,as_char', preselection=False)
......@@ -669,6 +690,7 @@ def makeSmallRJetAnalysisConfig( seq, containerName, jetCollection,
jetInput, postfix = None,
runJvtUpdate = None, runNNJvtUpdate = None, runFJvtUpdate = None,
runJvtSelection = None, runFJvtSelection = None,
jvtWP = None, fJvtWP = None,
runJvtEfficiency = None, runFJvtEfficiency = None,
systematicsModelJES = None, systematicsModelJER = None):
"""Add algorithms for the R=0.4 jets.
......@@ -683,6 +705,8 @@ def makeSmallRJetAnalysisConfig( seq, containerName, jetCollection,
runFJvtUpdate -- Determines whether or not to update forward JVT on the jets
runJvtSelection -- Determines whether or not to run JVT selection on the jets
runFJvtSelection -- Determines whether or not to run forward JVT selection on the jets
jvtWP -- Defines the NNJvt WP to apply on the jets
fJvtWP -- Defines the fJvt WP to apply on the jets
runJvtEfficiency -- Determines whether or not to calculate the JVT efficiency
runFJvtEfficiency -- Determines whether or not to calculate the forward JVT efficiency
systematicsModelJES -- Which NP systematicsModelJES scheme should be used (All, Global, Category, Scenario)
......@@ -693,7 +717,6 @@ def makeSmallRJetAnalysisConfig( seq, containerName, jetCollection,
raise ValueError(
"Unsupported input type '{0}' for R=0.4 jets!".format(jetInput) )
config = SmallRJetAnalysisConfig (containerName, jetCollection, jetInput)
config.setOptionValue ('postfix', postfix)
config.setOptionValue ('runJvtUpdate', runJvtUpdate)
......@@ -701,6 +724,8 @@ def makeSmallRJetAnalysisConfig( seq, containerName, jetCollection,
config.setOptionValue ('runFJvtUpdate', runFJvtUpdate)
config.setOptionValue ('runJvtSelection', runJvtSelection)
config.setOptionValue ('runFJvtSelection', runFJvtSelection)
config.setOptionValue ('jvtWP', jvtWP)
config.setOptionValue ('fJvtWP', fJvtWP)
config.setOptionValue ('runJvtEfficiency', runJvtEfficiency)
config.setOptionValue ('runFJvtEfficiency', runFJvtEfficiency)
config.setOptionValue ('systematicsModelJES', systematicsModelJES)
......
......@@ -142,7 +142,7 @@ def TCAL1Cfg(flags):
from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
TCAL1SlimmingHelper = SlimmingHelper("TCAL1SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
TCAL1SlimmingHelper.SmartCollections = ['EventInfo', 'Muons', 'AntiKt4EMTopoJets', 'AntiKt4EMPFlowJets', 'MET_Baseline_AntiKt4EMTopo', 'MET_Baseline_AntiKt4EMPFlow', 'PrimaryVertices']
TCAL1SlimmingHelper.SmartCollections = ['EventInfo', 'Muons', 'AntiKt4EMTopoJets', 'AntiKt4EMPFlowJets', 'MET_Baseline_AntiKt4EMTopo', 'MET_Baseline_AntiKt4EMPFlow', 'PrimaryVertices', 'BTagging_AntiKt4EMPFlow']
TCAL1ExtraVariables = f'Muons.{TCAL1Prefix}etrkcone40'
......
......@@ -252,15 +252,16 @@ SUSYObjDef_xAOD::SUSYObjDef_xAOD( const std::string& name )
m_jetJvt(-99.),
m_JvtWP(""),
m_JvtPtMax(-99.),
m_JvtConfig(""),
m_JvtConfigRun2(""),
m_JvtConfigRun3(""),
m_trkJetPt(-99.),
m_trkJetEta(-99.),
m_doFwdJVT(false),
m_fJvtWP(""),
m_fJvtPtMax(-99.),
m_fJvtEtaMin(-99.),
m_fJvtConfig(""),
m_fJvtRecalculate(false),
m_fJvtConfigRun2(""),
m_fJvtConfigRun3(""),
m_JMScalib(false),
//
m_orDoTau(false),
......@@ -1503,7 +1504,8 @@ StatusCode SUSYObjDef_xAOD::readConfig()
configFromFile(m_jetEta, "Jet.Eta", rEnv, 2.8);
configFromFile(m_JvtWP, "Jet.JvtWP", rEnv, "FixedEffPt"); // https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/PileupJetRecommendations
configFromFile(m_JvtPtMax, "Jet.JvtPtMax", rEnv, 60.0e3);
configFromFile(m_JvtConfig, "Jet.JvtConfig", rEnv, "", true); // empty string means dummy SF
configFromFile(m_JvtConfigRun2, "Jet.JvtConfigRun2", rEnv, "JetJvtEfficiency/May2024/NNJvtSFFile_Run2_EMPFlow.root", true); // empty string means dummy SF
configFromFile(m_JvtConfigRun3, "Jet.JvtConfigRun3", rEnv, "JetJvtEfficiency/May2024/NNJvtSFFile_Run3_EMPFlow.root", true); // empty string means dummy SF
configFromFile(m_jetUncertaintiesConfig, "Jet.UncertConfig", rEnv, "rel22/Summer2023_PreRec/R4_CategoryReduction_FullJER.config"); // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/JetUncertaintiesRel22/
configFromFile(m_jetUncertaintiesAnalysisFile, "Jet.AnalysisFile", rEnv, "default"); // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/JetUncertaintiesRel21Summer2018SmallR
configFromFile(m_jetUncertaintiesCalibArea, "Jet.UncertCalibArea", rEnv, "default"); // Defaults to default area set by tool
......@@ -1535,10 +1537,10 @@ StatusCode SUSYObjDef_xAOD::readConfig()
//
configFromFile(m_doFwdJVT, "FwdJet.doJVT", rEnv, false); // https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/PileupJetRecommendations
configFromFile(m_fJvtWP, "FwdJet.JvtWP", rEnv, "Loose");
configFromFile(m_fJvtPtMax, "FwdJet.JvtPtMax", rEnv, 120e3);
configFromFile(m_fJvtPtMax, "FwdJet.JvtPtMax", rEnv, 60e3);
configFromFile(m_fJvtEtaMin, "FwdJet.JvtEtaMin", rEnv, 2.5);
configFromFile(m_fJvtConfig, "FwdJet.JvtConfig", rEnv, "", true); // empty string means dummy SF
configFromFile(m_fJvtRecalculate, "FwdJet.JvtRecalculate", rEnv, false);
configFromFile(m_fJvtConfigRun2, "FwdJet.JvtConfigRun2", rEnv, "JetJvtEfficiency/May2024/fJvtSFFile_Run2_EMPFlow.root", true); // empty string means dummy SF
configFromFile(m_fJvtConfigRun3, "FwdJet.JvtConfigRun3", rEnv, "JetJvtEfficiency/May2024/fJvtSFFile_Run2_EMPFlow.root", true); // empty string means dummy SF
configFromFile(m_JMScalib, "Jet.JMSCalib", rEnv, false);
//
configFromFile(m_useBtagging, "Btag.enable", rEnv, true);
......
......@@ -537,7 +537,7 @@ StatusCode SUSYObjDef_xAOD::SUSYToolsInit()
ATH_CHECK( m_jetNNJvtEfficiencyTool.setProperty("JetContainer", m_defaultJets) );
ATH_CHECK( m_jetNNJvtEfficiencyTool.setProperty("WorkingPoint", m_JvtWP) );
ATH_CHECK( m_jetNNJvtEfficiencyTool.setProperty("MaxPtForJvt", m_JvtPtMax) );
ATH_CHECK( m_jetNNJvtEfficiencyTool.setProperty("SFFile", m_JvtConfig) );
ATH_CHECK( m_jetNNJvtEfficiencyTool.setProperty("SFFile", m_isRun3 ? m_JvtConfigRun3 : m_JvtConfigRun2) );
ATH_CHECK( m_jetNNJvtEfficiencyTool.setProperty("OutputLevel", this->msg().level()) );
ATH_CHECK( m_jetNNJvtEfficiencyTool.retrieve() );
} else if (m_jetNNJvtEfficiencyTool.isUserConfigured()) ATH_CHECK( m_jetNNJvtEfficiencyTool.retrieve() );
......@@ -565,7 +565,7 @@ StatusCode SUSYObjDef_xAOD::SUSYToolsInit()
ATH_CHECK( m_jetfJvtEfficiencyTool.setProperty("JetContainer", m_defaultJets) );
ATH_CHECK( m_jetfJvtEfficiencyTool.setProperty("WorkingPoint", m_fJvtWP) );
ATH_CHECK( m_jetfJvtEfficiencyTool.setProperty("MaxPtForJvt", m_fJvtPtMax) );
ATH_CHECK( m_jetfJvtEfficiencyTool.setProperty("SFFile", m_fJvtConfig) );
ATH_CHECK( m_jetfJvtEfficiencyTool.setProperty("SFFile", m_isRun3 ? m_fJvtConfigRun3 : m_fJvtConfigRun2) );
ATH_CHECK( m_jetfJvtEfficiencyTool.setProperty("OutputLevel", this->msg().level()) );
ATH_CHECK( m_jetfJvtEfficiencyTool.retrieve() );
} else ATH_CHECK( m_jetfJvtEfficiencyTool.retrieve() );
......
......@@ -716,8 +716,8 @@ namespace ST {
double m_jetJvt;
std::string m_JvtWP;
double m_JvtPtMax;
std::string m_JvtConfig;
std::string m_JvtConfig_SFFile;
std::string m_JvtConfigRun2;
std::string m_JvtConfigRun3;
double m_trkJetPt;
double m_trkJetEta;
......@@ -726,10 +726,8 @@ namespace ST {
std::string m_fJvtWP;
double m_fJvtPtMax;
double m_fJvtEtaMin;
std::string m_fJvtConfig;
std::string m_fJvtConfig_SFFile;
bool m_fJvtRecalculate;
bool m_fJvt_useTightOP;
std::string m_fJvtConfigRun2;
std::string m_fJvtConfigRun3;
bool m_JMScalib;
......
......@@ -82,7 +82,7 @@ Jet.UncertPDsmearing: false # set this to true for pseudo-data smearing for Full
#
FwdJet.doJVT: false
FwdJet.JvtEtaMin: 2.5
FwdJet.JvtWP: Loose # R22 prerec
FwdJet.JvtWP: Loose
FwdJet.JvtPtMax: 60.0e3
#
Jet.LargeRuncConfig: #rec are missing for UFO jets
......
......@@ -82,7 +82,7 @@ Jet.UncertPDsmearing: false # set this to true for pseudo-data smearing for Full
#
FwdJet.doJVT: false
FwdJet.JvtEtaMin: 2.5
FwdJet.JvtWP: Loose # R22 prerec
FwdJet.JvtWP: Loose
FwdJet.JvtPtMax: 60.0e3
#
Jet.LargeRuncConfig: #rec are missing for UFO jets
......