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
  • rhauser/athena
  • phwindis/athena
  • arnaez/athena
  • baines/athena
  • mmuskinj/athena
  • psommer/athena
  • bwynne/athena
  • tstreble/athena
  • ATLAS-EGamma/athena
  • yuxu/athena
  • toyamaza/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
  • fpastore/athena
  • harkusha/athena
  • mvozak/athena
  • leggett/athena
  • martindl/athena
  • almaloiz/athena
  • tlari/athena
  • susinha/athena
  • filthaut/athena
  • cchan/athena
  • peter/athena
  • nikiforo/athena
  • cvarni/athena
  • wleight/athena
  • nwarrack/athena
  • chays/athena
  • dtovey/athena
  • cshimmin/athena
  • sgeorge/athena
  • yafu/athena
  • mihuebne/athena
  • mgignac/athena
  • alfroch/athena
  • mstamenk/athena
  • okepka/athena
  • jsallen/athena-high-pt-ms-jets
  • tkohno/athena
  • janovak/athena
  • wiedenat/athena
  • khoo/athena
  • dkar/athena
  • maklein/athena
  • tmkrtchy/athena
  • gingrich/athena
  • schaarsc/athena
  • ponyisi/athena
  • cohm/athena
  • ravinab/athena
  • scheiric/athena
  • pleskot/athena
  • omajersk/athena
  • jobalz/athena
  • ebergeas/athena
  • ekasimi/athena
  • dbakshig/athena
  • afaulkne/athena
  • ekuwertz/athena
  • fernando/athena
  • merrenst/athena
  • goetz/athena
  • dpopov/athena
  • xai/athena
  • astruebi/athena
  • mdanning/athena
  • egramsta/athena
  • achishol/athena
  • hye/athena
  • clseitz/athena
  • bmindur/athena
  • efilmer/athena
  • alaurier/athena
  • jpanduro/athena
  • ssarikay/athena
  • hyamauch/athena
  • mtoscani/athena
  • ppostola/athena
  • krumnack/athena
  • ncalace/athena
  • aad/athena
  • gpanizzo/athena
  • rcoelhol/athena
  • shanisch/athena
  • stelzer/athena
  • ssottoco/athena
  • turnerm/athena
  • sutt/athena
  • nkrengel/athena
  • rkopelia/athena
  • tupham/athena
  • cmcginn/athena
  • tsulaia/athena
  • vcairo/athena
  • bernius/athena
  • ldc/athena
  • jmacdona/athena
  • stsuno/athena
  • mbandier/athena
  • jdandoy/athena
  • yunju/athena
  • jufische/athena
  • mehlhase/athena
  • dzanzi/athena
  • kzoch/athena
  • kwhalen/athena
  • nasbah/athena
  • bmorgan/athena
  • msaimper/athena
  • amete/athena
  • williams/athena
  • shhirose/athena
  • cheidegg/athena
  • heng/athena
  • rcarney/athena
  • hhibi/athena
  • coccaro/athena
  • loch/athena
  • cdeutsch/athena
  • ynoguchi/athena
  • kkohler/athena
  • campanel/athena
  • wbalunas/athena
  • hoide/athena
  • xju/athena
  • yuchou/athena
  • nova/athena
  • hrussell/athena
  • todorova/athena
  • lidiaz/athena
  • sjiggins/athena
  • jbiswal/athena
  • kegraham/athena
  • bgokturk/athena
  • guerrero/athena
  • aytul/athena
  • bouhova/athena
  • alwang/athena
  • dhayden/athena
  • kpachal/athena
  • alopezso/athena
  • mverissi/athena
  • mvessell/athena
  • ssantpur/athena
  • kenelson/athena
  • upatel/athena
  • omeshkov/athena
  • mvanadia/athena
  • soumya/athena
  • ruyuan/athena
  • igrabows/athena
  • tvarol/athena
  • fmeloni/athena
  • mhank/athena
  • dshope/athena
  • cowagner/athena
  • tursom/athena
  • dbogavac/athena
  • anperrev/athena
  • tnobe/athena
  • eramakot/athena
  • fsforza/athena
  • fgiuli/athena
  • derue/athena
  • angianni/athena
  • koffas/athena
  • ballbroo/athena
  • diehl/athena
  • myexley/athena
  • chinderk/athena
  • davidek/athena
  • tphamleh/athena
  • falonso/athena
  • ekajomov/athena-general
  • sarbiolv/athena
  • hansenph/athena
  • mfujimot/athena
  • masato/athena
  • salvator/athena
  • jhaley/athena
  • hirose/athena
  • nwenke/athena
  • stapiaar/athena
  • jmendes/athena
  • ffabbri/athena
  • tpelzer/athena
  • gia/athena
  • stavrop/athena
  • agbet/athena
  • hmildner/athena
  • cdelitzs/athena
  • dbabal/athena
  • kkrizka/athena
  • temoskal/athena
  • juesseiv/athena
  • asonay/athena
  • ckitsaki/athena
  • dwallace/athena
  • iaizenbe/athena
  • lferencz/athena
  • eschanet/athena
  • pmeiring/athena
  • jiawei/athena
  • mromano/athena
  • czhou/athena
  • rustem/athena
  • sswatman/athena
  • miqueits/athena
  • liberato/athena
  • jteoh/athena
  • wachan/athena
  • ranovotn/athena
  • jbeirer/athena
  • elmsheus/athena
  • nielsenj/athena
  • markowen/athena
  • eparrish/athena
  • asquith/athena
  • fuhe/athena
  • dakoch/athena
  • nicholas/athena
  • mhance/athena
  • aranzazu/athena
  • ndegroot/athena
  • lihan/athena
  • esoldato/athena
  • asoukhar/athena
  • jkempste/athena
  • tjunkerm/athena
  • ginaciog/athena
  • verducci/athena
  • aporeba/athena
  • martis/athena
  • sschramm/athena
  • mdelmast/athena
  • mswiatlo/athena
  • anmrodri/athena
  • bcarlson/athena
  • fastcalosim_test/athena
  • pliu/athena
  • ssaha/athena
  • scamarda/athena
  • gabarone/athena
  • mxia/athena
  • rlongo/athena
  • amoussa/athena
  • lstocker/athena
  • conde/athena
  • guindon/athena
  • chelling/athena
  • korona/athena
  • mmittal/athena
  • mdonasci/athena
  • ffollega/athena
  • hmaguire/athena
  • sberlend/athena
  • gialas/athena
  • acts/athena
  • fcostanz/athena
  • zsoumaim/athena
  • shion/athena
  • cgutscho/athena
  • sschmitt/athena
  • evarnes/athena
  • guescini/athena
  • nifomin/athena
  • dwilbern/athena
  • jkremer/athena
  • laforge/athena
  • eriefel/athena
  • susy-hackers/athena
  • llorente/athena
  • istin/athena
  • akotsoke/athena
  • fizisist/athena
  • acanesse/athena
  • rpoggi/athena
  • haozturk/athena
  • fengyu/athena
  • cmerlass/athena
  • kkoeneke/athena
  • rkarnam/athena
  • navarrjo/athena
  • bulekov/athena
  • amulski/athena
  • ivivarel/athena
  • pkramer/athena
  • chenlian/athena
  • vcavalie/athena
  • yanlin/athena
  • ysmirnov/athena_old
  • sanchevi/athena
  • restevam/athena
  • smwang/athena
  • sefernan/athena
  • mmazza/athena
  • bauerpa/athena
  • jgonski/athena
  • thsjurse/athena
  • itrandaf/athena
  • mmlynars/athena
  • iyeletsk/athena
  • almgadm/athena
  • wobisch/athena
  • jhinds/athena
  • mwielers/athena
  • csebasti/athena
  • tiyang/athena
  • mtchijov/athena
  • lapereir/athena
  • lucam/athena
  • emmat/athena
  • kciesla/athena
  • lmiller/athena
  • pekman/athena
  • aleopold/athena
  • somadutt/athena
  • rbalasub/athena
  • zuysal/athena
  • salderwe/athena
  • jstupak/athena
  • masaito/athena
  • ycoadou/athena
  • wmccorma/athena
  • ilongari/athena
  • simmons/athena
  • adye/athena
  • kkreul/athena
  • wtaylor/athena
  • kbelobor/athena
  • pinamont/athena
  • ssahin/athena
  • aoneill/athena
  • jzeng/athena
  • dmaximov/athena
  • kghorban/athena
  • fbartels/athena
  • gcallea/athena
  • ljeanty/athena
  • cschiavi/athena
  • jraine/athena
  • kasai/athena
  • brottler/athena
  • mcfayden/athena
  • rozeny/athena
  • scarra/athena
  • nbelyaev/athena
  • ecarlson/athena
  • abandyop/athena
  • aelmouss/athena
  • khanov/athena
  • rebeca/athena
  • gotero/athena
  • doglioni/athena
  • alaperto/athena
  • aohatl/athena
  • joheinri/athena
  • bhonan/athena
  • pmoskvit/athena
  • bigliett/athena
  • amarzin/athena
  • rgarg/athena
  • jajimene/athena
  • begalli/athena
  • dpudzha/athena
  • atlidali/athena
  • yajun/athena
  • lbozianu/athena
  • paulama/athena
  • mpokidov/athena
  • wprzygod/athena
  • vcroft/athena
  • torrence/athena
  • mtesta/athena
  • sgalantz/athena
  • roward/athena
  • demelian/athena
  • barak/athena
  • atsirigo/athena
  • amoroso/athena
  • tofitsch/athena
  • hacooke/athena
  • elrossi/athena
  • csander/athena
  • salnikov/athena
  • pottgen/athena
  • ozaplati/athena
  • mmiralle/athena
  • jsabater/athena
  • alory/athena
  • pbokan/athena
  • jdevivi/athena
  • ruth/athena
  • apetukho/athena
  • klin/athena
  • trinn/athena
  • xiaoning/athena
  • ymino/athena
  • xchen/athena
  • cappelt/athena
  • nelsonc/athena
  • nishu/athena
  • paramon/athena
  • juhofer/athena
  • bleban/athena
  • ratkin/athena
  • exot-27/athena
  • enarayan/athena
  • dpizzi/athena
  • ztarem/athena
  • qhu/athena
  • acassim/athena
  • mmarjano/athena
  • bburghgr/athena
  • sampson/athena
  • pagessin/athena
  • mkrivos/athena
  • ychow/athena
  • hessey/athena
  • nviauxma/athena
  • watsona/athena
  • wfawcett/athena
  • LichtenbergGroup/athena
  • ibordule/athena
  • perj/athena
  • mleblanc/athena
  • ztao/athena
  • jreich/athena
  • othielma/athena
  • wgeorge/athena
  • jdegens/athena
  • hasada/athena
  • sridouan/athena
  • xiaohu/athena
  • ludovica/athena
  • alainb/athena
  • pmendesa/athena
  • yama/athena
  • kristin/athena
  • bachacou/athena
  • ssu/athena
  • yake/athena
  • ktsuri/athena
  • jlsmith/athena
  • angerami/athena
  • pebaron/athena-weights
  • rnayak/athena
  • musafdar/athena
  • mproffit/athena
  • jezequel/athena
  • amendesj/athena
  • asalzbur/athena
  • hschwart/athena
  • csamoila/athena
  • gproto/athena
  • rerrabai/athena
  • lhelary/athena
  • tiany/athena
  • malgren/athena
  • mprincip/athena
  • aczirkos/athena
  • spolacek/athena
  • lbeemste/athena
  • kyamaguc/athena
  • bmondal/athena
  • grabanal/athena
  • tboeckh/athena
  • asantra/athena
  • jroloff/athena
  • jreidels/athena
  • slawlor/athena
  • silvinha/athena
  • emily/athena
  • holau/athena
  • mdhlamin/athena
  • bozek/athena
  • lkrauth/athena
  • iramirez/athena
  • tdiasdov/athena
  • bbrueers/athena
  • carlod/athena
  • mgrabois/athena
  • mtian/athena
  • oducu/athena
  • idinu/athena
  • bcole/athena
  • roishi/athena
  • ecelebi/athena
  • dhirsch/athena
  • ygo/athena
  • yuanchan/athena
  • exochell/athena
  • jjwilkin/athena
  • hmoyanog/athena-4-mr
  • ggustavi/athena
  • diwillia/athena
  • cgarner/athena
  • changqia/athena
  • sbiryuko/athena
  • skorn/athena
  • jwspence/athena
  • scalvet/athena
  • honguyen/athena
  • calpigia/athena
  • yangx/athena
  • jizamora/athena
  • rysawada/athena
  • atsiamis/athena
  • cmarcon/athena
  • adimitri/athena
  • kpetukho/athena
  • tbisanz/athena
  • dhangal/athena
  • atlidbs/athena
  • iene/athena
  • athaler/athena
  • dopasqua/athena
  • jspah/athena
  • tqiu/athena
  • tzenis/athena
  • jcardena/athena
  • jkretz/athena
  • hzuchen/athena
  • lveloce/athena
  • oshukrun/athena
  • ryamaguc/athena
  • mumohdso/athena2
  • maliev/athena
  • fdelrio/athena
  • iwang/athena
  • tsano/athena
  • okumura/athena
  • mbiros/athena
  • sagara17/athena
  • rhayes/athena
  • mumohdso/athena
  • dmunozpe/athena
  • arennie/athena
  • valentem/athena
  • evguillo/athena
  • koshimiz/athena
  • atate/athena
  • dossantn/athena
  • zhijie/athena
  • caforio/athena
  • suyounas/athena
  • bnachman/athena
  • zearnsha/athena
  • maly/athena
  • yuzhan/athena
  • lunedic/athena
  • rjoshi/athena
  • hlin/athena
  • crougier/athena
  • mtost/athena
  • machitis/athena
  • mimarine/athena
  • lvannoli/athena
  • omezhens/athena
  • thompson/athena
  • jonierma/athena
  • ndebiase/athena
  • dounwuch/athena
  • echeu/athena
  • nkakati/athena
  • saclawso/athena
  • hhanif/athena
  • cprat/athena
  • csauer/athena
  • martinpa/athena
  • mischott/athena
  • tiknight/athena
  • sahinsoy/athena
  • jodamp/athena
  • knikolop/athena
  • inaryshk/athena
  • wendlanb/athena
  • adik/athena
  • lkeszegh/athena
  • angrigor/athena
  • fedin/athena
  • xchu/athena
  • jaoliver/athena
  • echeremu/athena
  • lbaltes/athena
  • pbellos/athena
  • idrivask/athena
  • ignesi/athena
  • aikoulou/athena
  • algilber/athena
  • ntamir/athena
  • sadykov/athena
  • eschopf/athena
  • tteixeir/athena
  • haweber/athena
  • sgurdasa/athena
  • pyanezca/athena
  • tavandaa/athena
  • hiito/athena
  • pamachad/athena
  • pbhattar/athena
  • veellajo/athena
  • mdrozdov/athena
  • fsili/athena
  • wolter/athena
  • bsaifudd/athena
  • nheatley/athena
  • mzhai/athena
  • hsimpson/athena
  • fdibello/athena
  • dparedes/athena
  • zyan/athena
  • mrenda/athena
  • minaenko/athena
  • emmarsha/athena
  • phkenned/athena
  • rkusters/athena
  • edweik/athena
  • chchau/athena
  • zhangr/athena
  • jburzyns/athena
  • slai/athena
  • zmarshal/athena
  • awilhahn/athena
  • agaa/athena
  • javanden/athena
  • kkrowpma/athena
  • leevans/athena
  • zfeng/athena
  • llaatu/athena
  • zifeng/athena
  • stsigari/athena
  • atropina/athena
  • srdas/athena
  • adonofri/athena
  • metsai/athena
  • atlaspmb/athena
  • cleonido/athena
  • seggebre/athena
  • yuanda/athena
  • drousso/athena
  • mnoury/athena
  • ademaria/athena
  • arombola/athena
  • axiong/athena
  • ijuarezr/athena
  • kchoi/athena
  • dgillber/athena
  • eyamashi/athena
  • amdesai/athena
  • saktas/athena
  • zang/athena
  • nlopezca/athena
  • berkeleylab/lowmutracking/athena
  • matakagi/athena
  • fbendebb/athena
  • qibin/athena
  • tbuanes/athena
  • acanbay/athena
  • bshresth/athena
  • cbuitrag/athena
  • klassen/athena
  • jferrand/athena
  • hpotti/athena
  • egodden/athena
  • otheiner/athena-official
  • chonghao/athena
  • hawatson/athena
  • mfarring/athena
  • parodi/athena
  • vtudorac/athena
  • bballard/athena
  • dzengerj/athena
  • buboehm/athena
  • knakkali/athena
  • lmontana/athena
  • dcieri/athena
  • zhuyi/athena
  • cimcp/athena
  • weixi/athena
  • adaribay/athena
  • iliadis/athena
  • cantel/athena
  • duperrin/athena
  • kbenkend/athena
  • asansar/athena
  • isotarri/athena
  • frenner/athena
  • jburr/athena
  • bstanisl/athena
  • dkoeck/athena
  • czodrows/athena
  • mfewell/athena
  • eegidiop/athena
  • blumen/athena
  • yulei/athena
  • olangrek/athena
  • smitani/athena
  • miholzbo/athena
  • amincer/athena
  • alsala/athena
  • hpang/athena
  • clantz/athena
  • gshatri/athena
  • gripelli/athena
  • jmharris/athena
  • jgargan/athena
  • ewatton/athena
  • mleigh/athena
  • otheiner/athena
  • deniso/athena
  • preselection-hackathon/athena
  • tizuo/athena
  • rushioda/athena
  • jnitschk/athena
  • sfranche/athena
  • mfernoux/athena
  • bernardo/athena
  • smeriano/athena
  • pebaron/athena-td
  • chandler/athena
  • viruelas/athena
  • ksugizak/athena
  • yusano/athena
  • hriani/athena
  • anghosh/ef-anindya
  • davetisy/athena
  • skaur/athena
  • jgombas/athena
  • vcepaiti/athena
  • wsherman/athena
  • sroygara/athena
  • rtagami/athena
  • apsallid/athena
  • yochi/athena
  • chji/athena
  • pakontax/athena
  • yuanj/athena
  • abunka/athena
  • agavrily/athena
  • dmclaugh/athena
  • almay/athena
  • mcgensvc/athena
  • giagu/athena
  • dmahon/athena
  • cjmeyer/athena
  • yuwen/athena
  • qberthet/athena
  • islazyk/athena
  • dkobylia/athena
  • mshapiro/athena
  • ekay/athena
  • rdinardo/athena
  • mbarel/athena
  • osalin/athena
  • baitbenc/athena
  • dakiyama/athena
  • glamprin/athena
  • minlin/athena
  • mlanzacb/athena
  • kazhang/athena
  • szambito/athena
  • hwilkens/athena
  • cgrefe/athena
  • wsfreund/athena
  • pebaron/athena
  • enagy/athena
  • beringer/athena
  • yyap/athena
  • menke/athena
  • mduehrss/athena
  • mspalla/athena
  • schaffer/athena
  • mavogel/athena
  • tkharlam/athena
  • fcalosim/athena
  • smobius/athena
  • spagan/athena
  • carquin/athena
  • rateixei/athena
  • osunnebo/athena
  • dportill/athena
  • okiverny/athena
  • desilva/athena
  • jelena/athena
  • chhayes/athena
  • satom/athena
  • jwalder/athena
  • lmijovic/athena
  • jahreda/athena
  • junpei/athena
  • tilebeam/athena
  • sanmay/athena
  • kiabelin/athena
  • mcarnesa/athena
  • vtskhaya/athena
  • jstark/athena
  • krbjoerk/athena
  • delsart/athena
  • jedebevc/athena
  • cyoung/athena
  • silu/athena
  • luxin/athena
  • jtanaka/athena
  • mtogawa/athena
  • maslawin/athena
  • haoran/athena
  • yifany/athena
  • minghui/athena
  • faser/offline/athena
  • danning/athena
  • srettie/athena
  • beddall/athena
  • dcasperfaser/athena
  • almeidvi/athena
  • cfan/athena
  • vmartin/athena
  • kazheng/athena
  • beltran/athena-fork
  • mmontell/athena
  • pajones/athena
  • kgupta/athena
  • sudha/athena
  • ssinha/athena
  • lhenkelm/athena
  • joana/athena
  • anbaraja/athena
  • lgagnon/athena
  • dpanchal/athena
  • mtanasin/athena
  • serodrig/athena
  • kkawade/athena
  • chiodini/athena
  • amorenos/athena
  • jshahini/athena
  • lfeligio/athena
  • apalazzo/athena
  • vbuxbaum/athena
  • jaofferm/athena
  • kburka/athena
  • gonzalri/athena
  • mdidenko/athena
  • desengup/athena
  • gottino/athena
  • ehaines/athena
  • rmazini/athena
  • sabidi/athena
  • bkerridg/athena
  • qidong/athena
  • gavrilen/athena
  • ktackman/athena
  • dwkim/athena
  • cdimitri/athena
  • hazeng/athena
  • jingjing/athena
  • yche/athena
  • yoyeh/athena
  • ktopolni/athena
  • sgaid/athena
  • dabattul/athena
  • attrtcal/athena
  • thmaurin/athena
  • krdona/athena
  • asciandr/athena
  • chjiang/athena
  • lbazzano/athena
  • rushioda/athena-3
  • mischott/athena-22
  • bochen/athena
  • kvidalgu/athena
  • meiqi/athena
  • nlad/athena
  • pclark/athena
  • dtorresa/athena
  • aackerma/athena
  • hmoyanog/athena
  • aaikot/athena
  • yingjun/athena
  • jcurran/athena
  • lesplend/athena
  • maboelel/athena
  • xinfei/athena
  • mschefer/athena
  • aivina/athena
  • xinhui/athena
  • kazheng/athena-physics-val-2023
  • rmakhman/athena
  • shhan/athena
  • zoduan/athena
  • zhiliang/athena
  • sfrances/athena
  • liuk/athena
  • kyjones/topoetcone-removal
  • bdixit/athena
  • alsidley/athena
  • jlue/athena
  • ragrabar/athena
  • asehrawa/athena
  • xingguo/athena
  • niabicht/athena
  • mhoppesc/athena
  • yunagai/athena
  • shahzad/athena
  • keener/athena
  • llewitt/athena
  • lcalic/athena-backup
  • yinmiao/athena
  • greynold/athena
  • bschlag/athena
  • kazheng/athena-workingpoint
  • bruckman/athena
  • agentry/athena
  • hvanders/athena
  • drankin/athena
  • nkang/athena
  • adohnalo/athena
  • kbhide/athena
  • ladamczy/test
  • berkeleylab/acts/athena
  • asmaga/athena
  • tbeumker/athenatest
  • tbeumker/athena
  • weitao/athena
  • jiturriz/athena
  • losanti/athena-23
  • losanti/athena
  • dmankad/athena-idle
  • menu-hackathon/athena
  • kyjones/trigger-example
  • vmaksimo/athena
  • wsong/athena
  • toobauma/athena
  • dawerner/athena
  • edreyer/athena
  • seggebre/athena-fluencemap-modification
  • fisopkov/athena
  • maparo/athena
  • lprimomo/athena
  • gtarna/athena
  • smanzoni/athena
  • adimri/athena
  • SecVtx-Lancaster/Athena
  • shmukher/athena
  • jcrosby/athena
  • aackerma/atlas-athena
  • pgraveli/athena
  • lrambell/athena
  • wstanek/athena
  • eullmank/athena
  • tovsiann/athena
  • rsnyder/athena
  • skita/athena
  • atlas-sa-uct/athena
  • ppotepa/athena
  • achakrav/athena
  • zgao/athena
  • xmapekul/athena
  • lroos/athena
  • mhemmett/athena
  • rashbypi/athena
  • evitale/athena
  • kgoto/athena
  • arej/athena
  • ivyas/athena
  • thmaurin/athena-sim-flavour
  • epasqual/athena
  • lkretsch/athena
  • aleksand/athena
  • npond/athena
  • jebohm/athena
  • mbiyabi/athena
  • cvittori/athena
  • hluk/athena
  • mihe/athena
  • dbiswas/athena
  • aralves/athena
  • dkoeck/anniathenafork
  • rgupta/athena
  • mkareem/athena
  • tslee/athena
  • mhaacke/athena
  • croland/athena
  • asoflau/athena
  • cgarvey/athena
  • kesedlac/athena
  • pkumari/athena
  • feickert/athena
  • ctosciri/athena-old
  • agerwin/athena
  • ctosciri/athena
  • ricunnin/athena
  • gfrattar/athena
  • bscheuer/athena
  • gwilliam/athena
  • bdixit/masking-strip-modules
  • gaofeng/athena
  • gtolkach/athena
  • jfeng2/athena
  • ksudo/athena
  • kosuzuki/athena
  • rhiguchi/athena
  • svanstro/athena
  • rmizuhik/athena
  • vaustrup/athena
  • etoyoda/athena
  • kkanke/athena
  • hart/athena
  • tnakagaw/athena
  • whopkins/athena
  • amakita/athena
  • maoki/athena
  • miyamada/athena
  • tpaschoa/athena
  • anayaz/athena
  • dduda/athena
  • rishikaw/athena
  • aagaard/athena
  • ferusso/athena
  • evalient/athena
  • shudong/athena
  • smweber/athena-run-3
  • smweber/athena
  • evalient/athena-dnn-calculator
  • zyan/athena-muon-calib
  • zyan/athena-muon-calib-stream
  • strom/athena-dms
  • strom/athena
  • dellacqu/athena
  • glagafon/project-nimber-1
  • brosser/athena
  • jsallen/athena
  • sbellman/athena
  • macretar/athena
  • aowang/athena
  • skadir/athena-sadaf
  • ooncel/athena
  • leguo/athena
  • jhoya/athena
  • osotosan/athena
  • tygeorge/athena
  • glagafon/handi-project
  • glagafon/handi-project-1
  • wuxi/athena
  • syan/athena-syan
  • hasun/athena
  • axgallen/athena-qualification-task
  • will/athena
  • mnorfolk/athena
  • aborbely/athena
  • karakawa/athena
  • seinfant/athena
  • taogawa/athena
  • schernau/athena
  • dmankad/athena-gen
  • mmaroun/ravina-fork
  • tmlinare/athena
  • axgallen/athena
  • romar/athena
  • vlysenko/athena
  • agarabag/athena
  • ktariq/athena
  • mahorstm/athena
  • zuzak/athena
  • dhagan/athena
  • tizhang/athena
  • ibamwidh/athena
  • atishelm/athena
  • ipolishc/athena
  • jolamber/athena
  • ykhoulak/myathena
  • frfische/athena
  • xilin/athena
  • jlue/athena-latest
  • nkua-atlas/athena
  • huayu/athena
  • yil/athena
  • chuanye/athena
  • dntounis/athena
  • kifarman/athena
  • tayoshid/athena
  • movincen/athena
  • lderamo/athena
  • steinber/athena-main
  • nischmit/athena
  • dongyi/athena
  • dtruncal/athena
  • tdingley/athena
  • malvesca/athena
  • hasegawa/athena
  • kazheng/athena-acts
  • glagafon/dq-optimize
  • openc/athena
  • mnowak/athena
  • anfortma/athena
  • ladamczy/athena
  • mhufnage/athena
  • lcalic/athena
  • ekajomov/athena-fork-fix
  • rqian/athena
  • kfung/athena
  • yonoda/athena
  • lsultana/obsolete_athena
  • lsultana/athena
  • pebaron/athena-leprem
  • alveltma/athena
  • alpleban/athena
  • mmaheshw/athena
  • jdavidso/athena
  • anstein/athena
  • mfurukaw/athena
  • gbird/athena
  • midandre/athena
  • anhodges/athena
  • edcritel/athena
  • bglik/athena
  • mvivasal/athena
  • sokkerma/athena
  • asbrooks/athena
  • kyjones/athena
  • jmcgowan/athena
  • mveen/athena
  • mmlynars/athena-v-2
  • tburatov/athena
  • fcurcio/athena
  • lboccard/athena
  • dmankad/athena
  • joroemer/athena
  • ctaybi/athena
  • ivyoung/athena
  • tayoshid/athena-test
  • sanchezj/athena-2022
  • jodafons/athena
  • tmclachl/athena
  • drasslof/athena
  • jiddon/athena
  • sdahbi/athena
  • sdemiran/athena
  • anburger/athena
  • sidoti/athena
  • fwinkel/athena
  • apfleger/athena
  • mmoors/athena
  • goblirsc/athena
  • izahir/athena
  • rvinasco/athena
  • sanchezj/athena
  • jwkraus/athena
  • esimpson/athena
  • rhaberle/athena
  • obut/athena
  • janders/athena
  • klleras/athena
  • jhowarth/athena
  • jchapman/athena
  • dta/athena_old
  • avallier/athena
  • mungo/athena
  • jecouthu/athena
  • dtrischu/athena
  • fmontere/athena
  • sfuenzal/athena
  • misantan/athena
  • fhenry/athena
  • zalegria/athena
  • gdigrego/athena
  • zhaotong/athena
  • awharton/Athena
  • amelo/athena
  • shaoguan/athena
  • acordeir/athena-ed
  • peiyan/athena
  • pdougan/athena
  • nbruscin/athena
  • caiy/athena
  • mkholoda/athena
  • backes/athena
  • fkirfel/athena
  • tayoshid/athena-2024
  • esampson/athena-idart
  • kchu/athena
  • shpeng/athena-2
  • bcervato/athena
  • gfacini/athena
  • gmercado/athena
  • fwinkl2/athena
  • rhowen/athena
  • gmascare/athena
  • esampson/athena-idart-2
  • nharriso/athena
  • yvolkotr/athena
  • esampson/athena-otp
  • djlewis/athena
  • costanzo/athena
  • alpleban/athena-met
  • yuematsu/athena
  • pibutti/athena
  • astefl/athena
  • bmoser/athena
  • esampson/athena-june-otp
  • zhanhang/athena
  • yilin/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
  • mlyukova/athena
  • robouque/athena
  • nsurijr/athena
  • dbaronmo/athena
  • esampson/june-2-otp
  • martyniu/athena
  • wema/athena
  • damperia/athena-acts
  • boudreau/athena
  • vsasse/athena
  • acamplan/athena
  • eballabe/athena
  • ksakura/athena
  • bhuth/athena
  • bngair/me-tsig-athena
  • bngair/met-significance-r-22
  • rhicks/athena
  • menadeem/athena
  • atymchys/athena
  • vkost/athena
  • skadir/athena
  • domatter/athena
  • arelycg/athena
  • yanqiw/athena
  • linghua/athena
  • juscerri/athena
  • sgoswami/athena
  • biliu/athena
  • sosarkar/athena
  • mwessels/athena
  • beltran/athena
  • ddicroce/athena
  • hshaddix/athena
  • bdebjani/athena
  • dreikher/athena
  • lwinkler/athena
  • mhabedan/athena
  • emoon/athena
  • cleong/athena
  • sdiefenb/athena-onnx-tutorial
  • fladias/athena
  • elham/athena
  • mads/athena
  • haren/athena
  • nkrogh/athena
  • dwilson/athena
  • lsanfili/athena
  • fivone/athena
  • dahumphr/athena
  • thart/athena
  • scane/athena
  • kenakamu/athena
  • lifoster/athena
  • echerepa/athena
  • baer/athena
  • glagafon/aaaathena
  • dcamarer/athena
  • alancast/athena
  • glagafon/athena
  • haotianl/athena
  • eskorda/athena
  • ukhurshi/athena
  • salopez/athena
  • rshibata/athena
  • lburke/athena
  • glagafon/glagafon-dq
  • rvavrick/athena
  • delitez/athena
  • therwig/athena
  • pizhang/athena
  • htsoi/athena
  • mwitkows/athena
  • casadop/athena
  • pachabri/athena
  • lcorazzi/athena
  • jaburles/athena
  • mmantina/athena
  • ezaya/athena
  • achamber/athena
  • lmonaco/athena
  • rmole/athena
  • hzhuang/athena
  • gserenis/athena
  • jkrupa/athena
  • mamirono/athena
  • semami/athena
  • rpozzi/athena
  • mfornasi/athena
  • jinglis/athena
  • fdattola/athena
  • ljerala/athena
  • belderto/athena
  • uepstein/athena
  • cmavungu/athena
  • lopezzot/athena
  • lechols/athena
  • abesir/athena
  • jlittle/athena
  • tneep/athena
  • htorre/athena
  • robouque/athena-20241115
  • jajohnso/athena
  • lbrown/athena
  • wguerin/athena
  • fsiegert/athena
  • prmitra/athena
  • wenjingw/athena
  • epompapa/athena
  • rmole/athena-personal-fork
  • kfang/athena-fork-kyfang
  • jackersc/athena
  • ashirazi/athena
  • wasu/athena
  • aslobodk/athena
  • amoreira/athena
  • kgrimm/athena-kgrimm
  • toheintz/athena
  • nihartma/athena
  • goetz/athena-acts
  • kdipetri/athena
  • gfazzino/athena
  • djuarezg/athena
  • muschmid/athena
  • yazhou/athena
  • wlai/athena
  • alarnold/athena
  • novotnyp/athena
  • falves/athena
  • mborodin/athena
  • mdacunha/athena
  • rohasan/athena
  • adsalvad/athena
  • asickles/athena
  • alecrhys/athena
  • lvicenik/athena
  • ibenaoum/athena
  • tflee/athena
  • christog/athena
  • zetao/athena
  • frcastig/athena
  • kkazakov/athena
  • mfarzali/athena
  • llarson/athena
  • tomoya/athena-low-pt-muon-rec
  • ehampshi/athena
  • pusharma/athena
  • exochell/my-athena
  • gpinheir/athena
  • jusilva/athena
  • mojeda/athena
  • jecifuen/athena
  • hshaddix/athena-hshaddix
  • jlieberm/athena
  • vchabala/athena
  • nsur/athena-lund
  • chhultqu/athena
  • misavic/athena
  • camccrac/athena
  • nshtokha/athena
  • jlai/athena
  • yukari/athena
  • sizumiya/athena
  • yuxuanz/local-athena
  • pmourafr/athena
  • zhubacek/athena
  • akraus/athena
  • mfilipig/athena
  • fdejean/athena
  • sawyer/athena
  • mnegrini/athena
  • zrokavec/athena
  • rkavak/athena
  • yanqiw/athena-acts-for-run-3-silicon-tracking
  • gipoddar/athena
  • ssuravar/athena
  • gsalvi/athena
  • beyeo/athena
  • sutuncay/athena
  • mtancock/athena-2
  • vpires/athena-vasco
  • ywng/athena
  • fballi/athena
1575 results
Show changes
Showing
with 280 additions and 831 deletions
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef BeamPipeDetectorManager_h
#define BeamPipeDetectorManager_h 1
#ifndef BEAMPIPEGEOMODEL_BEAMPIPEDETECTORMANAGER_H
#define BEAMPIPEGEOMODEL_BEAMPIPEDETECTORMANAGER_H
#include "GeoModelKernel/GeoVPhysVol.h"
#include "GeoModelKernel/GeoVDetectorManager.h"
......@@ -27,7 +27,7 @@ class BeamPipeDetectorManager : public GeoVDetectorManager
virtual PVConstLink getTreeTop(unsigned int i) const;
// Add a Tree top:
void addTreeTop(PVConstLink);
void addTreeTop(const PVConstLink&);
private:
......@@ -35,7 +35,6 @@ class BeamPipeDetectorManager : public GeoVDetectorManager
BeamPipeDetectorManager(const BeamPipeDetectorManager &right);
std::vector<PVConstLink> m_volume;
};
#ifndef GAUDI_NEUTRAL
......
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#include "BeamPipeDetectorFactory.h"
......@@ -33,16 +33,15 @@
BeamPipeDetectorFactory::BeamPipeDetectorFactory(StoreGateSvc *detStore,
IRDBAccessSvc *pAccess)
:m_detectorManager(0),
m_materialManager(0),
:m_detectorManager(nullptr),
m_materialManager(nullptr),
m_detectorStore(detStore),
m_access(pAccess),
m_centralRegionZMax(1500*Gaudi::Units::mm)
{}
BeamPipeDetectorFactory::~BeamPipeDetectorFactory()
{
}
= default;
void BeamPipeDetectorFactory::create(GeoPhysVol *world)
{
......@@ -163,7 +162,7 @@ void BeamPipeDetectorFactory::addSections(GeoPhysVol* parent, int region)
// Sections 2 & 3 are placed in section 1.
// pvMotherSection will point to section 1.
GeoPhysVol* pvMotherSection = 0;
GeoPhysVol* pvMotherSection = nullptr;
bool addToFirstSection = true;
double rminSec1 = 0;
double rmaxSec1 = 0;
......@@ -234,7 +233,7 @@ void BeamPipeDetectorFactory::addSections(GeoPhysVol* parent, int region)
}
const GeoMaterial* mat = m_materialManager->getMaterial(material);
if (mat == 0) {
if (mat == nullptr) {
// For backward compatibility - older geometry versions didn't specify the
// material namespace
// std::cout << "Material """ << material << """ not found. Trying std::" << material << std::endl;
......@@ -242,8 +241,7 @@ void BeamPipeDetectorFactory::addSections(GeoPhysVol* parent, int region)
}
GeoLogVol* lvSection = new GeoLogVol(name,shape,mat);
GeoPhysVol* pvSection = new GeoPhysVol(lvSection);
pvSection->ref();
GeoIntrusivePtr<GeoPhysVol> pvSection{new GeoPhysVol(lvSection)};
// Determine if this is a geometry where the first section can act as the mother of the following
// sections. The following sections are only added to this if their ave radius is within the radial
......@@ -264,10 +262,9 @@ void BeamPipeDetectorFactory::addSections(GeoPhysVol* parent, int region)
}
GeoTransform* tfSection = 0;
GeoTransform* tfSection = nullptr;
if (znew != 0 && (secNum==1 || !addToFirstSection)) tfSection = new GeoTransform(GeoTrf::TranslateZ3D(znew));
GeoNameTag* ntSection = new GeoNameTag(name);
ntSection->ref();
GeoIntrusivePtr<GeoNameTag> ntSection{new GeoNameTag(name)};
if (addToFirstSection && secNum!=1) {
if (!pvMotherSection) {
......@@ -289,7 +286,7 @@ void BeamPipeDetectorFactory::addSections(GeoPhysVol* parent, int region)
// Not needed, but just in case in the future we have +/- sections in central region
if(central && z!=0.) {
// add rotated section as well
GeoTransform* tfSectionRot = 0;
GeoTransform* tfSectionRot = nullptr;
if (isTube) {
// No need for rotation.
tfSectionRot = new GeoTransform(GeoTrf::TranslateZ3D(-znew));
......@@ -302,8 +299,6 @@ void BeamPipeDetectorFactory::addSections(GeoPhysVol* parent, int region)
parent->add(pvSection);
}
pvSection->unref();
ntSection->unref();
}
}
......@@ -340,16 +335,16 @@ BeamPipeDetectorFactory::makeEnvelope(const IRDBRecordset_ptr& bpipeEnvelope)
}
double rFwd = 0;
if (fwdEntry.size()) {
if (!fwdEntry.empty()) {
rFwd = fwdEntry[0].r();
} else if (centralEntry.size()) {
} else if (!centralEntry.empty()) {
rFwd = centralEntry[0].r();
} else {
std::cout << "Unexpected condition when building beam pipe." << std::endl;
}
// central
if (centralEntry.size() == 0) {
if (centralEntry.empty()) {
envelopes.centralShape = new GeoTube(0, rFwd, m_centralRegionZMax);
} else {
// This case probably will never get used and is untested.
......@@ -375,7 +370,7 @@ BeamPipeDetectorFactory::makeEnvelope(const IRDBRecordset_ptr& bpipeEnvelope)
{
GeoRef<GeoPcon> pcone (new GeoPcon(0, 360*Gaudi::Units::deg));
pcone->addPlane(m_centralRegionZMax,0,rFwd);
if (fwdEntry.size() == 0) {
if (fwdEntry.empty()) {
// Unlikely case but for completeness
// we make small fwd region if everything is in central region.
pcone->addPlane(m_centralRegionZMax+0.1*Gaudi::Units::mm,0,rFwd);
......
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef BEAMPIPEGEOMODEL_BEAMPIPEDETECTORFACTORY_H
......
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef BEAMPIPEGEOMODEL_BEAMPIPEDETECTORFACTORY_LITE_H
......@@ -7,8 +7,6 @@
#include "GeoModelKernel/GeoVDetectorFactory.h"
#include "BeamPipeGeoModel/BeamPipeDetectorManager.h"
#include <string>
class BeamPipeDetectorFactory_Lite final : public GeoVDetectorFactory
{
......@@ -23,16 +21,13 @@ class BeamPipeDetectorFactory_Lite final : public GeoVDetectorFactory
// Access to the results:
virtual const BeamPipeDetectorManager * getDetectorManager() const override;
// Illegal operations:
const BeamPipeDetectorFactory_Lite & operator=(const BeamPipeDetectorFactory_Lite &right) = delete;
BeamPipeDetectorFactory_Lite(const BeamPipeDetectorFactory_Lite &right) = delete;
private:
// Illegal operations:
const BeamPipeDetectorFactory_Lite & operator=(const BeamPipeDetectorFactory_Lite &right);
BeamPipeDetectorFactory_Lite(const BeamPipeDetectorFactory_Lite &right);
// The manager:
BeamPipeDetectorManager * m_manager;
BeamPipeDetectorManager* m_manager{nullptr};
};
// Class BeamPipeDetectorFactory_Lite
......
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#include "BeamPipeGeoModel/BeamPipeDetectorManager.h"
......@@ -10,13 +10,7 @@ BeamPipeDetectorManager::BeamPipeDetectorManager()
}
BeamPipeDetectorManager::~BeamPipeDetectorManager()
{
for (unsigned int i = 0; i < m_volume.size(); i++) {
m_volume[i]->unref();
}
}
BeamPipeDetectorManager::~BeamPipeDetectorManager() = default;
unsigned int BeamPipeDetectorManager::getNumTreeTops() const
{
......@@ -28,9 +22,8 @@ PVConstLink BeamPipeDetectorManager::getTreeTop(unsigned int i) const
return m_volume[i];
}
void BeamPipeDetectorManager::addTreeTop(PVConstLink vol)
void BeamPipeDetectorManager::addTreeTop(const PVConstLink& vol)
{
vol->ref();
m_volume.push_back(vol);
}
......
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#include "BeamPipeDetectorTool.h"
#include "BeamPipeDetectorFactory.h"
#include "BeamPipeDetectorFactory_Lite.h"
#include "BeamPipeGeoModel/BeamPipeDetectorManager.h"
#include "BeamPipeDetectorFactory.h"
#include "BeamPipeDetectorFactory_Lite.h"
#include "BeamPipeGeoModel/BeamPipeDetectorManager.h"
#include "GeoModelInterfaces/IGeoDbTagSvc.h"
#include "GeoModelUtilities/GeoModelExperiment.h"
#include "GaudiKernel/IService.h"
#include "GaudiKernel/ISvcLocator.h"
#include "GaudiKernel/MsgStream.h"
#include "StoreGate/StoreGateSvc.h"
......@@ -21,95 +20,65 @@
#include "GeoModelKernel/GeoVolumeCursor.h"
BeamPipeDetectorTool::BeamPipeDetectorTool( const std::string& type,
const std::string& name,
const IInterface* parent ):
GeoModelTool(type,name,parent),
m_manager(0),
m_mode("BeamPipe")
BeamPipeDetectorTool::BeamPipeDetectorTool( const std::string& type,
const std::string& name,
const IInterface* parent ):
GeoModelTool(type,name,parent)
{
declareProperty("BeamPipeMode", m_mode); //m_mode="BeamPipe" by default, setting m_mode="AssemblyBeamPipe" will trigger optimised implementation using assembly volume
}
BeamPipeDetectorTool::~BeamPipeDetectorTool()
{
}
BeamPipeDetectorTool::~BeamPipeDetectorTool() = default;
StatusCode BeamPipeDetectorTool::create()
{
MsgStream log(msgSvc(), name());
log << MSG::INFO << "Building Beam Pipe" << endmsg;
{
ATH_MSG_INFO("Building Beam Pipe");
IGeoDbTagSvc *geoDbTag;
StatusCode sc = service ("GeoDbTagSvc",geoDbTag);
if (sc.isFailure()) {
log << MSG::FATAL << "Could not locate GeoDbTagSvc" << endmsg;
return StatusCode::FAILURE;
}
SmartIF<IGeoDbTagSvc> geoDbTag{Gaudi::svcLocator()->service("GeoDbTagSvc")};
ATH_CHECK(geoDbTag.isValid());
std::string atlasVersion = geoDbTag->atlasVersion();
if(atlasVersion == "AUTO")
atlasVersion = "ATLAS-00";
std::string versionNode = "ATLAS";
GeoModelExperiment * theExpt;
if (StatusCode::SUCCESS != detStore()->retrieve( theExpt, "ATLAS" )) {
log << MSG::ERROR
<< "Could not find GeoModelExperiment ATLAS"
<< endmsg;
return (StatusCode::FAILURE);
}
if ( 0 == m_detector )
{
GeoPhysVol *world=&*theExpt->getPhysVol();
ServiceHandle<IRDBAccessSvc> accessSvc(geoDbTag->getParamSvcName(),name());
ATH_CHECK( accessSvc.retrieve());
GeoModelExperiment* theExpt{nullptr};
ATH_CHECK(detStore()->retrieve(theExpt, "ATLAS"));
GeoPhysVol* world=theExpt->getPhysVol();
ServiceHandle<IRDBAccessSvc> accessSvc(geoDbTag->getParamSvcName(),name());
ATH_CHECK(accessSvc.retrieve());
GeoModelIO::ReadGeoModel* sqliteReader = geoDbTag->getSqliteReader();
if (sqliteReader) {
BeamPipeDetectorFactory_Lite theBeamPipeFactory;
theBeamPipeFactory.create(world);
m_manager = theBeamPipeFactory.getDetectorManager();
}
else {
// Check we have the beampipe and print its version
// Print the version tag:
std::string beampipeVersionTag;
beampipeVersionTag = accessSvc->getChildTag("BeamPipe", atlasVersion,versionNode);
ATH_MSG_DEBUG("Beampipe Version: " << beampipeVersionTag);
if (beampipeVersionTag.empty()) {
ATH_MSG_INFO("No BeamPipe Version. Beam pipe will not be built.");
}
else {
BeamPipeDetectorFactory theBeamPipeFactory(detStore().operator->(),accessSvc.operator->());
theBeamPipeFactory.setTagNode(atlasVersion,versionNode,m_mode);
theBeamPipeFactory.create(world);
GeoModelIO::ReadGeoModel* sqliteReader = geoDbTag->getSqliteReader();
if (sqliteReader) {
BeamPipeDetectorFactory_Lite theBeamPipeFactory;
theBeamPipeFactory.create(world);
m_manager = theBeamPipeFactory.getDetectorManager();
}
else {
// Check we have the beampipe and print its version
// Print the version tag:
std::string beampipeVersionTag;
beampipeVersionTag = accessSvc->getChildTag("BeamPipe", atlasVersion,versionNode);
log << MSG::DEBUG << "Beampipe Version: " << beampipeVersionTag << endmsg;
if (beampipeVersionTag.empty()) {
log << MSG::INFO << "No BeamPipe Version. Beam pipe will not be built." << endmsg;
}
else {
BeamPipeDetectorFactory theBeamPipeFactory(detStore().operator->(),accessSvc.operator->());
theBeamPipeFactory.setTagNode(atlasVersion,versionNode,m_mode);
theBeamPipeFactory.create(world);
m_manager = theBeamPipeFactory.getDetectorManager();
}
}
if (m_manager) {
theExpt->addManager(m_manager);
sc = detStore()->record(m_manager,m_manager->getName());
if (sc.isFailure()) {
log << MSG::ERROR << "Could not register BeamPipe detector manager" << endmsg;
return (StatusCode::FAILURE);
}
return StatusCode::SUCCESS;
}
m_manager = theBeamPipeFactory.getDetectorManager();
}
}
if (m_manager) {
theExpt->addManager(m_manager);
ATH_CHECK(detStore()->record(m_manager,m_manager->getName()));
return StatusCode::SUCCESS;
}
return StatusCode::FAILURE;
}
......@@ -118,7 +87,7 @@ StatusCode BeamPipeDetectorTool::clear()
SG::DataProxy* proxy = detStore()->proxy(ClassID_traits<BeamPipeDetectorManager>::ID(),m_manager->getName());
if(proxy) {
proxy->reset();
m_manager = 0;
m_manager = nullptr;
}
return StatusCode::SUCCESS;
}
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef BEAMPIPEDETECTORTOOL_H
#define BEAMPIPEDETECTORTOOL_H
#ifndef BEAMPIPEGEOMODEL_BEAMPIPEDETECTORTOOL_H
#define BEAMPIPEGEOMODEL_BEAMPIPEDETECTORTOOL_H
#include "GeoModelUtilities/GeoModelTool.h"
class BeamPipeDetectorManager;
......@@ -20,9 +20,13 @@ class BeamPipeDetectorTool final : public GeoModelTool
virtual StatusCode create() override final;
virtual StatusCode clear() override final;
private:
const BeamPipeDetectorManager* m_manager;
std::string m_mode;
const BeamPipeDetectorManager* m_manager{nullptr};
StringProperty m_mode{this
, "BeamPipeMode"
, "BeamPipe"
, "Two modes: 'BeamPipe' default, 'AssemblyBeamPipe' activates implementation based on assembly volume"};
};
#endif
# Copyright (C) 2002-, 20222022 CERN for the benefit of the ATLAS collaboration
# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
# Declare the package name:
atlas_subdir( CavernInfraGeoModel )
......
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#include "CavernInfraDetectorFactory.h"
#include "GeoModelInterfaces/StoredMaterialManager.h"
#include "GeoModelKernel/GeoMaterial.h"
#include "GeoModelKernel/GeoTube.h"
#include "GeoModelKernel/GeoMaterial.h"
#include "GeoModelKernel/GeoTube.h"
#include "GeoModelKernel/GeoBox.h"
#include "GeoModelKernel/GeoTubs.h"
#include "GeoModelKernel/GeoLogVol.h"
#include "GeoModelKernel/GeoNameTag.h"
#include "GeoModelKernel/GeoTubs.h"
#include "GeoModelKernel/GeoLogVol.h"
#include "GeoModelKernel/GeoNameTag.h"
#include "GeoModelKernel/GeoPhysVol.h"
#include "GeoModelKernel/GeoShape.h"
#include "GeoModelKernel/GeoShapeShift.h"
......@@ -21,34 +21,30 @@
#include "GaudiKernel/SystemOfUnits.h"
#include "StoreGate/StoreGateSvc.h"
#include "RDBAccessSvc/IRDBAccessSvc.h"
#include "RDBAccessSvc/IRDBRecord.h"
#include "RDBAccessSvc/IRDBRecordset.h"
#include "RDBAccessSvc/IRDBAccessSvc.h"
#include <string>
#include <map>
#include <string>
#include <utility>
CavernInfraDetectorFactory::CavernInfraDetectorFactory(StoreGateSvc *detStore,
IRDBAccessSvc *pAccess)
:m_detectorManager(NULL),
m_detectorStore(detStore),
m_access(pAccess)
{
}
CavernInfraDetectorFactory::~CavernInfraDetectorFactory()
CavernInfraDetectorFactory::CavernInfraDetectorFactory(ServiceHandle<StoreGateSvc> detStore,
ServiceHandle<IRDBAccessSvc> pAccess)
: m_detectorStore(std::move(detStore))
, m_access(std::move(pAccess))
{
}
void CavernInfraDetectorFactory::create(GeoPhysVol *world)
{
{
m_detectorManager=new CavernInfraDetectorManager();
StoredMaterialManager* materialManager = nullptr;
if (StatusCode::SUCCESS != m_detectorStore->retrieve(materialManager, std::string("MATERIALS"))) {
return;
}
return;
}
// Get the materials
// Get the materials
const GeoMaterial *air = materialManager->getMaterial("std::Air");
const GeoMaterial *rock = materialManager->getMaterial("std::Rock");
const GeoMaterial *conc = materialManager->getMaterial("std::Concrete");
......@@ -56,14 +52,14 @@ void CavernInfraDetectorFactory::create(GeoPhysVol *world)
// Get Recordset CavernElements.
IRDBRecordset_ptr cavernElements = m_access->getRecordsetPtr("CavernElements",m_versionTag,m_versionNode);
std::map<std::string, unsigned int> elementMap;
for (unsigned int i=0; i<cavernElements->size(); i++) {
std::string key = (*cavernElements)[i]->getString("ELEMENT");
elementMap[key] = i;
}
unsigned int recordIndex;
//// -------------------------Build mother volume Point1--------------------------------
......@@ -71,13 +67,13 @@ void CavernInfraDetectorFactory::create(GeoPhysVol *world)
// -- first get index of the record in cavernElements recordset
// which corresponds to Point1 element
// -- get numbers from record
recordIndex = elementMap["Point1"];
recordIndex = elementMap["Point1"];
GeoNameTag *tag = new GeoNameTag("CavernInfra");
//// -----------------------------------Build SX1------------------------------------------
recordIndex = elementMap["SX1"];
double SX1Xpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
double SX1Ypos = (*cavernElements)[recordIndex]->getDouble("YPOS")*Gaudi::Units::m;
......@@ -85,11 +81,11 @@ void CavernInfraDetectorFactory::create(GeoPhysVol *world)
double SX1HalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double SX1HalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double SX1HalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
recordIndex = elementMap["SX1Air"];
double SX1AirYpos = (*cavernElements)[recordIndex]->getDouble("YPOS")*Gaudi::Units::m;
double SX1AirHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double SX1AirHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double SX1AirHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double SX1AirHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double SX1AirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
GeoTransform *s1XYZt = new GeoTransform(GeoTrf::Translate3D(SX1Xpos,SX1Ypos,SX1Zpos)); //1.7 -8.7
......@@ -97,9 +93,9 @@ void CavernInfraDetectorFactory::create(GeoPhysVol *world)
GeoBox *SX1 = new GeoBox(SX1HalfWidth ,SX1HalfHeight, SX1HalfLength); // 11.7, 6.5, 42.3
GeoLogVol *lvsx1s = new GeoLogVol("SX1Steel",SX1,shieldSteel);
GeoPhysVol *sx1 = new GeoPhysVol(lvsx1s);
world->add(tag);
world->add(tag);
world->add(sx1);
GeoTransform *s1z = new GeoTransform(GeoTrf::TranslateY3D(SX1AirYpos));
sx1->add(s1z);
......@@ -107,59 +103,59 @@ void CavernInfraDetectorFactory::create(GeoPhysVol *world)
GeoLogVol *lvsx1a = new GeoLogVol("SX1Air",SX1Air,air);
GeoPhysVol *sx1a = new GeoPhysVol(lvsx1a);
sx1->add(sx1a);
//// ------------------First: Build cavern with concrete-----------------------------
recordIndex = elementMap["WallACConc"];
double WallACConcHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
double WallACConcMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double WallACConcMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double WallACConcMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*Gaudi::Units::m;
double WallACConcSphi= (*cavernElements)[recordIndex]->getDouble("SPHI");
double WallACConcDphi= (*cavernElements)[recordIndex]->getDouble("DPHI");
double WallACConcDphi= (*cavernElements)[recordIndex]->getDouble("DPHI");
recordIndex = elementMap["BoxConc"];
double BoxConcHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double BoxConcHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double BoxConcHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double BoxConcHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double BoxConcHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
recordIndex = elementMap["VaultConc"];
double VaultConcZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double VaultConcZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double VaultConcYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
double VaultConcHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
double VaultConcMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double VaultConcMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double VaultConcMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*Gaudi::Units::m;
double VaultConcSphi= (*cavernElements)[recordIndex]->getDouble("SPHI");
double VaultConcDphi= (*cavernElements)[recordIndex]->getDouble("DPHI");
recordIndex = elementMap["HallConc"];
double HallConcHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double HallConcHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double HallConcHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double HallConcHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double HallConcHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
recordIndex = elementMap["BoxConcW"];
double BoxConcWZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double BoxConcWZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double BoxConcWYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
recordIndex = elementMap["BoxConcVleft"];
double BoxConcVleftZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double BoxConcVleftZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double BoxConcVleftYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
recordIndex = elementMap["BoxConcVright"];
double BoxConcVrightZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double BoxConcVrightZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double BoxConcVrightYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
recordIndex = elementMap["SurfaceFloor"];
double SurfaceFloorXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
double SurfaceFloorZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double SurfaceFloorHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double SurfaceFloorHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double SurfaceFloorZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double SurfaceFloorHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double SurfaceFloorHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double SurfaceFloorHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
GeoTubs *WallACConcrete = new GeoTubs(WallACConcMinR, WallACConcMaxR, WallACConcHalfHeight, WallACConcSphi, WallACConcDphi);
GeoTubs *WallACConcrete = new GeoTubs(WallACConcMinR, WallACConcMaxR, WallACConcHalfHeight, WallACConcSphi, WallACConcDphi);
GeoBox *BoxConc = new GeoBox(BoxConcHalfLength, BoxConcHalfWidth, BoxConcHalfHeight);
GeoTubs *VaultConcrete = new GeoTubs(VaultConcMinR, VaultConcMaxR, VaultConcHalfHeight , VaultConcSphi, VaultConcDphi);
GeoTubs *VaultConcrete = new GeoTubs(VaultConcMinR, VaultConcMaxR, VaultConcHalfHeight , VaultConcSphi, VaultConcDphi);
GeoBox *HallConcrete = new GeoBox(HallConcHalfLength, HallConcHalfWidth, HallConcHalfHeight);
GeoBox *SurfaceFloor = new GeoBox(SurfaceFloorHalfLength, SurfaceFloorHalfWidth, SurfaceFloorHalfHeight);
......@@ -187,46 +183,46 @@ void CavernInfraDetectorFactory::create(GeoPhysVol *world)
subtract((*HoleJN) << GeoTrf::RotateY3D(M_PI*0.5) << GeoTrf::TranslateZ3D(-0.5*WallAAirZpos)*GeoTrf::TranslateY3D(-WallCAirXpos*1.0) );
const GeoShape & CutVaultConc = (*VaultConcrete).subtract((*BoxConc) << GeoTrf::Transform3D(BoxCutVaultLeftConc)).
subtract((*BoxConc) << GeoTrf::Transform3D(BoxCutVaulRightConc));
recordIndex = elementMap["ShaftCut"];
double ShaftCutZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double ShaftCutZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double ShaftCutYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
double ShaftCutHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
double ShaftCutMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double ShaftCutMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double ShaftCutMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*Gaudi::Units::m;
recordIndex = elementMap["PX14Conc"];
double PX14ConcXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
double PX14ConcXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
double PX14ConcYpos = (*cavernElements)[recordIndex]->getDouble("YPOS")*Gaudi::Units::m;
double PX14ConcHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
double PX14ConcMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double PX14ConcMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double PX14ConcMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*Gaudi::Units::m;
recordIndex = elementMap["PX16Conc"];
double PX16ConcXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
double PX16ConcXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
double PX16ConcYpos = (*cavernElements)[recordIndex]->getDouble("YPOS")*Gaudi::Units::m;
double PX16ConcHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
double PX16ConcMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double PX16ConcMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double PX16ConcMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*Gaudi::Units::m;
//--------------- Build concrete shafts------------------------------.
GeoTube *ShaftCut = new GeoTube(ShaftCutMinR, ShaftCutMaxR, ShaftCutHalfHeight);
GeoTube *PX14Conc = new GeoTube(PX14ConcMinR, PX14ConcMaxR, PX14ConcHalfHeight);
GeoTube *PX16Conc = new GeoTube(PX16ConcMinR, PX16ConcMaxR, PX16ConcHalfHeight);
const GeoShape & ShaftsConc=
((*PX14Conc) << GeoTrf::TranslateX3D(PX14ConcXpos)*GeoTrf::TranslateY3D(PX14ConcYpos)).
add((*PX16Conc) << GeoTrf::TranslateX3D(PX16ConcXpos)*GeoTrf::TranslateY3D(PX16ConcYpos)).
subtract((*ShaftCut) << GeoTrf::TranslateZ3D(ShaftCutZpos)*GeoTrf::RotateY3D(ShaftCutYrotate));
recordIndex = elementMap["WallCConc"];
double WallCConcZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double WallCConcXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
double WallCConcXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
double WallCConcZrotate = (*cavernElements)[recordIndex]->getDouble("ZROTATE");
recordIndex = elementMap["WallAConc"];
double WallAConcZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double WallAConcXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
double WallAConcXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
recordIndex = elementMap["ShaftsConc"];
double ShaftsConcZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
......@@ -283,57 +279,57 @@ void CavernInfraDetectorFactory::create(GeoPhysVol *world)
// subtract((*HoleJN) << GeoTrf::RotateY3D(M_PI*0.5) << GeoTrf::TranslateZ3D(-0.5*WallAAirZpos+CavernAirZpos)*GeoTrf::TranslateY3D(-WallCAirXpos*1.0) );
// subtract((*HoleJN) << GeoTrf::RotateY3D(M_PI*0.5) << GeoTrf::TranslateZ3D(-0.5*WallAAirZpos)*GeoTrf::TranslateY3D(-WallCAirXpos*1.0) );
//// -----------------------Second: Build cavern with air-------------------------------
// Create variables for Concrete Cavern and get index of the record in cavernElements
recordIndex = elementMap["WallACAir"];
double WallACAirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
double WallACAirMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double WallACAirMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double WallACAirMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*Gaudi::Units::m;
double WallACAirSphi= (*cavernElements)[recordIndex]->getDouble("SPHI");
double WallACAirDphi= (*cavernElements)[recordIndex]->getDouble("DPHI");
double WallACAirDphi= (*cavernElements)[recordIndex]->getDouble("DPHI");
recordIndex = elementMap["BoxAir"];
double BoxAirHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double BoxAirHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double BoxAirHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double BoxAirHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double BoxAirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
recordIndex = elementMap["VaultAir"];
double VaultAirZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double VaultAirZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double VaultAirYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
double VaultAirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
double VaultAirMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double VaultAirMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double VaultAirMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*Gaudi::Units::m;
double VaultAirSphi= (*cavernElements)[recordIndex]->getDouble("SPHI");
double VaultAirDphi= (*cavernElements)[recordIndex]->getDouble("DPHI");
recordIndex = elementMap["HallAir"];
double HallAirHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double HallAirHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double HallAirHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double HallAirHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double HallAirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
recordIndex = elementMap["BaseAir"];
double BaseAirZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double BaseAirHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double BaseAirHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double BaseAirZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double BaseAirHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double BaseAirHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double BaseAirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
recordIndex = elementMap["BoxAirW"];
double BoxAirWZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double BoxAirWZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double BoxAirWYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
recordIndex = elementMap["BoxAirVleft"];
double BoxAirVleftZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double BoxAirVleftZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double BoxAirVleftYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
recordIndex = elementMap["BoxAirVright"];
double BoxAirVrightZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double BoxAirVrightZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*Gaudi::Units::m;
double BoxAirVrightYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
GeoTubs *WallACAir = new GeoTubs(WallACAirMinR, WallACAirMaxR, WallACAirHalfHeight, WallACAirSphi, WallACAirDphi);
GeoTubs *WallACAir = new GeoTubs(WallACAirMinR, WallACAirMaxR, WallACAirHalfHeight, WallACAirSphi, WallACAirDphi);
GeoBox *BoxAir = new GeoBox(BoxAirHalfLength, BoxAirHalfWidth, BoxAirHalfHeight);
GeoTubs *VaultAir = new GeoTubs(VaultAirMinR, VaultAirMaxR, VaultAirHalfHeight, VaultAirSphi, VaultAirDphi);
GeoTubs *VaultAir = new GeoTubs(VaultAirMinR, VaultAirMaxR, VaultAirHalfHeight, VaultAirSphi, VaultAirDphi);
GeoBox *HallAir = new GeoBox(HallAirHalfLength, HallAirHalfWidth, HallAirHalfHeight);
GeoBox *BaseAir = new GeoBox(BaseAirHalfLength, BaseAirHalfWidth, BaseAirHalfHeight);
GeoTrf::Transform3D BoxCutWallAir = GeoTrf::TranslateZ3D(BoxAirWZpos)*GeoTrf::RotateY3D(BoxAirWYrotate);
......@@ -347,20 +343,20 @@ void CavernInfraDetectorFactory::create(GeoPhysVol *world)
//--------------- Build air shafts------------------------------.
recordIndex = elementMap["PX14Air"];
double PX14AirXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
double PX14AirXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
double PX14AirYpos = (*cavernElements)[recordIndex]->getDouble("YPOS")*Gaudi::Units::m;
double PX14AirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
double PX14AirMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double PX14AirMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double PX14AirMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*Gaudi::Units::m;
recordIndex = elementMap["PX16Air"];
double PX16AirXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
double PX16AirXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
double PX16AirYpos = (*cavernElements)[recordIndex]->getDouble("YPOS")*Gaudi::Units::m;
double PX16AirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
double PX16AirMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double PX16AirMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*Gaudi::Units::m;
double PX16AirMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*Gaudi::Units::m;
GeoTube *PX14Air = new GeoTube(PX14AirMinR, PX14AirMaxR, PX14AirHalfHeight);
GeoTube *PX14Air = new GeoTube(PX14AirMinR, PX14AirMaxR, PX14AirHalfHeight);
GeoTube *PX16Air = new GeoTube(PX16AirMinR, PX16AirMaxR, PX16AirHalfHeight);
recordIndex = elementMap["CavShaftsConc"];
......@@ -368,10 +364,10 @@ void CavernInfraDetectorFactory::create(GeoPhysVol *world)
double CavShaftsXrotate = (*cavernElements)[recordIndex]->getDouble("XROTATE");
double CavShaftsYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
const GeoShape & ShaftsAir=
const GeoShape & ShaftsAir=
((*PX14Air) << GeoTrf::TranslateX3D(PX14AirXpos)*GeoTrf::TranslateY3D(PX14AirYpos)).
add((*PX16Air) << GeoTrf::TranslateX3D(PX16AirXpos)*GeoTrf::TranslateY3D(PX16AirYpos));
//----------------Assemble everything--------------------------------.
const GeoShape & CavernAir = (*HallAir).
// add((*AirJN) << GeoTrf::RotateY3D(M_PI*0.5) << GeoTrf::TranslateZ3D(-0.5*WallAAirZpos)*GeoTrf::TranslateY3D(-WallCAirXpos*1.0) ).
......@@ -400,16 +396,16 @@ void CavernInfraDetectorFactory::create(GeoPhysVol *world)
const GeoShape & AirHall=
((CavernAir << GeoTrf::TranslateZ3D(CavernAirZpos))).
add((ShaftsAir << GeoTrf::TranslateZ3D(ShaftsAirZpos))); //allows for a built-in 2m thick plugs for both PX14 & PX16
//// -----------------------Build BedRock for Shafts and Cavern-------------------------------
recordIndex = elementMap["Rock"];
double RockHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double RockHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double RockHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*Gaudi::Units::m;
double RockHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*Gaudi::Units::m;
double RockHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*Gaudi::Units::m;
double RockXPos = (*cavernElements)[recordIndex]->getDouble("XPOS")*Gaudi::Units::m;
double RockYPos = (*cavernElements)[recordIndex]->getDouble("YPOS")*Gaudi::Units::m;
GeoBox *Rockbox = new GeoBox( RockHalfWidth, RockHalfHeight, RockHalfLength); // 300, 50.75, 300
const GeoShape & BedRock = ((*Rockbox) .
subtract((AirHall) <<GeoTrf::TranslateY3D(CavShaftsYPos)*GeoTrf::RotateY3D(CavShaftsYrotate)*GeoTrf::RotateX3D(CavShaftsXrotate))).
......@@ -426,18 +422,18 @@ void CavernInfraDetectorFactory::create(GeoPhysVol *world)
const GeoShape & CavConcrete = ((Concrete).
// add((*HoleJN) << GeoTrf::RotateY3D(M_PI*0.5) << GeoTrf::TranslateZ3D(-0.5*WallAAirZpos+CavernAirZpos)*GeoTrf::TranslateY3D(-WallCAirXpos*1.0) ).
subtract(AirHall));
GeoTransform* xfTop = new GeoTransform(GeoTrf::TranslateY3D(CavShaftsYPos)*GeoTrf::RotateY3D(CavShaftsYrotate)*GeoTrf::RotateX3D(CavShaftsXrotate));
GeoTransform* xfTop = new GeoTransform(GeoTrf::TranslateY3D(CavShaftsYPos)*GeoTrf::RotateY3D(CavShaftsYrotate)*GeoTrf::RotateX3D(CavShaftsXrotate));
bedrock->add(xfTop);
GeoLogVol *lvcsc = new GeoLogVol("CAV_SHAFTS_CONC",&CavConcrete,conc);
GeoPhysVol *CavShaftsConc = new GeoPhysVol(lvcsc);
bedrock->add(CavShaftsConc);
//// NOW INSERT ALL OF THIS INTO THE WORLD.
m_detectorManager->addTreeTop(sx1);
m_detectorManager->addTreeTop(bedrock);
m_detectorManager->addTreeTop(bedrock);
}
const CavernInfraDetectorManager * CavernInfraDetectorFactory::getDetectorManager() const
......
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef CavernInfraDetectorFactory_h
#define CavernInfraDetectorFactory_h 1
#ifndef CAVERNINFRAGEOMODEL_CAVERNINFRADETECTORFACTORY_H
#define CAVERNINFRAGEOMODEL_CAVERNINFRADETECTORFACTORY_H
#include "GeoModelKernel/GeoVDetectorFactory.h"
#include "CavernInfraDetectorManager.h"
#include "GeoModelKernel/GeoVDetectorFactory.h"
#include "StoreGate/StoreGateSvc.h"
#include "RDBAccessSvc/IRDBAccessSvc.h"
#include <string>
class StoreGateSvc;
#include <string>
class CavernInfraDetectorFactory : public GeoVDetectorFactory
class CavernInfraDetectorFactory : public GeoVDetectorFactory
{
public:
// Constructor:
CavernInfraDetectorFactory(StoreGateSvc *pDetStore,
IRDBAccessSvc *pAccess);
CavernInfraDetectorFactory(ServiceHandle<StoreGateSvc> pDetStore,
ServiceHandle<IRDBAccessSvc> pAccess);
// Illegal operations:
const CavernInfraDetectorFactory & operator=(const CavernInfraDetectorFactory &right) = delete;
CavernInfraDetectorFactory(const CavernInfraDetectorFactory &right) = delete;
// Destructor:
~CavernInfraDetectorFactory();
~CavernInfraDetectorFactory() = default;
// Creation of geometry:
virtual void create(GeoPhysVol *world);
virtual void create(GeoPhysVol *world) override;
// Access to the results:
virtual const CavernInfraDetectorManager * getDetectorManager() const;
virtual const CavernInfraDetectorManager* getDetectorManager() const override;
// Set version Tag and Node
void setTagNode(const std::string& tag, const std::string& node);
private:
// Illegal operations:
const CavernInfraDetectorFactory & operator=(const CavernInfraDetectorFactory &right);
CavernInfraDetectorFactory(const CavernInfraDetectorFactory &right);
private:
// The manager:
CavernInfraDetectorManager *m_detectorManager;
StoreGateSvc *m_detectorStore;
IRDBAccessSvc *m_access;
CavernInfraDetectorManager* m_detectorManager{nullptr};
ServiceHandle<StoreGateSvc> m_detectorStore;
ServiceHandle<IRDBAccessSvc> m_access;
std::string m_versionTag;
std::string m_versionNode;
};
// Class CavernInfraDetectorFactory
// Class CavernInfraDetectorFactory
#endif
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
*/
#include "CavernInfraDetectorFactory01.h"
#include "GeoModelKernel/GeoMaterial.h"
#include "GeoModelKernel/GeoPcon.h"
#include "GeoModelKernel/GeoTube.h"
#include "GeoModelKernel/GeoBox.h"
#include "GeoModelKernel/GeoTubs.h"
#include "GeoModelKernel/GeoCons.h"
#include "GeoModelKernel/GeoLogVol.h"
#include "GeoModelKernel/GeoNameTag.h"
#include "GeoModelKernel/GeoPhysVol.h"
#include "GeoModelKernel/GeoShape.h"
#include "GeoModelKernel/GeoShapeShift.h"
#include "GeoModelKernel/GeoShapeUnion.h"
#include "GeoModelKernel/GeoShapeSubtraction.h"
#include "GeoModelKernel/GeoFullPhysVol.h"
#include "GeoModelKernel/GeoTransform.h"
#include "GeoModelKernel/GeoAlignableTransform.h"
#include "GeoModelKernel/GeoSerialDenominator.h"
#include "GeoModelKernel/GeoSerialTransformer.h"
#include "GeoGenericFunctions/AbsFunction.h"
#include "GeoGenericFunctions/Variable.h"
#include "GeoGenericFunctions/Sin.h"
#include "GeoGenericFunctions/Cos.h"
#include "StoreGate/StoreGateSvc.h"
#include "GeoModelInterfaces/StoredMaterialManager.h"
#include "RDBAccessSvc/IRDBRecord.h"
#include "RDBAccessSvc/IRDBRecordset.h"
#include "RDBAccessSvc/IRDBAccessSvc.h"
#include <string>
#include <map>
using namespace GeoGenfun;
using namespace GeoXF;
CavernInfraDetectorFactory01::CavernInfraDetectorFactory01(StoreGateSvc *detStore,
IRDBAccessSvc *pAccess)
:m_detectorManager(NULL),
m_detectorStore(detStore),
m_access(pAccess)
{
}
CavernInfraDetectorFactory01::~CavernInfraDetectorFactory01()
{
}
void CavernInfraDetectorFactory01::create(GeoPhysVol *world)
{
m_detectorManager=new CavernInfraDetectorManager();
StoredMaterialManager* materialManager = nullptr;
if (StatusCode::SUCCESS != m_detectorStore->retrieve(materialManager, std::string("MATERIALS"))) {
return;
}
// Get the materials
const GeoMaterial *air = materialManager->getMaterial("std::Air");
const GeoMaterial *rock = materialManager->getMaterial("std::Rock");
const GeoMaterial *conc = materialManager->getMaterial("std::Concrete");
const GeoMaterial *shieldSteel = materialManager->getMaterial("shield::ShieldSteel");
// Get Recordset CavernElements.
IRDBRecordset_ptr cavernElements = m_access->getRecordsetPtr("CavernElements", "CavernElements-02");
std::map<std::string, unsigned int> elementMap;
for (unsigned int i=0; i<cavernElements->size(); i++) {
std::string key = (*cavernElements)[i]->getString("ELEMENT");
elementMap[key] = i;
}
unsigned int recordIndex;
//// -------------------------Build mother volume Point1--------------------------------
// Create variables for Point1
// -- first get index of the record in cavernElements recordset
// which corresponds to Point1 element
// -- get numbers from record
recordIndex = elementMap["Point1"];
GeoNameTag *tag = new GeoNameTag("CavernInfra");
//// -----------------------------------Build SX1------------------------------------------
recordIndex = elementMap["SX1"];
double SX1Xpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*GeoModelKernelUnits::m;
double SX1Ypos = (*cavernElements)[recordIndex]->getDouble("YPOS")*GeoModelKernelUnits::m;
double SX1HalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*GeoModelKernelUnits::m;
double SX1HalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*GeoModelKernelUnits::m;
double SX1HalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
recordIndex = elementMap["SX1Air"];
double SX1AirHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*GeoModelKernelUnits::m;
double SX1AirHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*GeoModelKernelUnits::m;
double SX1AirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
GeoTransform *s1XYZt = new GeoTransform(GeoTrf::Translate3D(SX1Ypos,91.75*GeoModelKernelUnits::m, SX1Xpos)); //1.7 -8.7
world->add(s1XYZt);
GeoBox *SX1 = new GeoBox(SX1HalfWidth ,SX1HalfHeight, SX1HalfLength); // 11.7, 6.5, 42.3
GeoLogVol *lvsx1s = new GeoLogVol("SX1Steel",SX1,shieldSteel);
GeoPhysVol *sx1 = new GeoPhysVol(lvsx1s);
world->add(tag);
world->add(sx1);
GeoTransform *s1z = new GeoTransform(GeoTrf::TranslateY3D(-.005*GeoModelKernelUnits::m));
sx1->add(s1z);
GeoBox *SX1Air = new GeoBox( SX1AirHalfWidth, SX1AirHalfHeight, SX1AirHalfLength);
GeoLogVol *lvsx1a = new GeoLogVol("SX1Air",SX1Air,air);
GeoPhysVol *sx1a = new GeoPhysVol(lvsx1a);
sx1->add(sx1a);
//// ------------------First: Build cavern with concrete-----------------------------
recordIndex = elementMap["WallACConc"];
double WallACConcHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
double WallACConcMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*GeoModelKernelUnits::m;
double WallACConcMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*GeoModelKernelUnits::m;
double WallACConcSphi= (*cavernElements)[recordIndex]->getDouble("SPHI");
double WallACConcDphi= (*cavernElements)[recordIndex]->getDouble("DPHI");
recordIndex = elementMap["BoxConc"];
double BoxConcHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*GeoModelKernelUnits::m;
double BoxConcHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*GeoModelKernelUnits::m;
double BoxConcHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
recordIndex = elementMap["VaultConc"];
double VaultConcZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double VaultConcYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
double VaultConcHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
double VaultConcMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*GeoModelKernelUnits::m;
double VaultConcMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*GeoModelKernelUnits::m;
double VaultConcSphi= (*cavernElements)[recordIndex]->getDouble("SPHI");
double VaultConcDphi= (*cavernElements)[recordIndex]->getDouble("DPHI");
recordIndex = elementMap["HallConc"];
double HallConcHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*GeoModelKernelUnits::m;
double HallConcHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*GeoModelKernelUnits::m;
double HallConcHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
recordIndex = elementMap["BoxConcW"];
double BoxConcWZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double BoxConcWYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
recordIndex = elementMap["BoxConcVleft"];
double BoxConcVleftZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double BoxConcVleftYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
recordIndex = elementMap["BoxConcVright"];
double BoxConcVrightZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double BoxConcVrightYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
recordIndex = elementMap["SurfaceFloor"];
double SurfaceFloorXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*GeoModelKernelUnits::m;
double SurfaceFloorZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double SurfaceFloorHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*GeoModelKernelUnits::m;
double SurfaceFloorHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*GeoModelKernelUnits::m;
double SurfaceFloorHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
GeoTubs *WallACConcrete = new GeoTubs(WallACConcMinR, WallACConcMaxR, WallACConcHalfHeight, WallACConcSphi, WallACConcDphi);
GeoBox *BoxConc = new GeoBox(BoxConcHalfLength, BoxConcHalfWidth, BoxConcHalfHeight);
GeoTubs *VaultConcrete = new GeoTubs(VaultConcMinR, VaultConcMaxR, VaultConcHalfHeight , VaultConcSphi, VaultConcDphi);
GeoBox *HallConcrete = new GeoBox(HallConcHalfLength, HallConcHalfWidth, HallConcHalfHeight);
GeoBox *SurfaceFloor = new GeoBox(SurfaceFloorHalfLength, SurfaceFloorHalfWidth, SurfaceFloorHalfHeight);
GeoTrf::Transform3D BoxCutWallConc = GeoTrf::TranslateZ3D(BoxConcWZpos)*GeoTrf::RotateY3D(BoxConcWYrotate);
GeoTrf::Transform3D BoxCutVaultLeftConc = GeoTrf::TranslateZ3D(BoxConcVleftZpos)*GeoTrf::RotateY3D(BoxConcVleftYrotate);
GeoTrf::Transform3D BoxCutVaulRightConc = GeoTrf::TranslateZ3D(BoxConcVrightZpos)*GeoTrf::RotateY3D(BoxConcVrightYrotate);
//---------------- Cut the vault and side walls----------------------------
const GeoShape & CutWallConc = (*WallACConcrete).subtract((*BoxConc) << GeoTrf::Transform3D(BoxCutWallConc));
const GeoShape & CutVaultConc = (*VaultConcrete).subtract((*BoxConc) << GeoTrf::Transform3D(BoxCutVaultLeftConc)).
subtract((*BoxConc) << GeoTrf::Transform3D(BoxCutVaulRightConc));
recordIndex = elementMap["ShaftCut"];
double ShaftCutZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double ShaftCutYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
double ShaftCutHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
double ShaftCutMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*GeoModelKernelUnits::m;
double ShaftCutMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*GeoModelKernelUnits::m;
recordIndex = elementMap["PX14Conc"];
double PX14ConcXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*GeoModelKernelUnits::m;
double PX14ConcYpos = (*cavernElements)[recordIndex]->getDouble("YPOS")*GeoModelKernelUnits::m;
double PX14ConcHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
double PX14ConcMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*GeoModelKernelUnits::m;
double PX14ConcMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*GeoModelKernelUnits::m;
recordIndex = elementMap["PX16Conc"];
double PX16ConcXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*GeoModelKernelUnits::m;
double PX16ConcYpos = (*cavernElements)[recordIndex]->getDouble("YPOS")*GeoModelKernelUnits::m;
double PX16ConcHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
double PX16ConcMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*GeoModelKernelUnits::m;
double PX16ConcMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*GeoModelKernelUnits::m;
//--------------- Build concrete shafts------------------------------.
GeoTube *ShaftCut = new GeoTube(ShaftCutMinR, ShaftCutMaxR, ShaftCutHalfHeight);
GeoTube *PX14Conc = new GeoTube(PX14ConcMinR, PX14ConcMaxR, PX14ConcHalfHeight);
GeoTube *PX16Conc = new GeoTube(PX16ConcMinR, PX16ConcMaxR, PX16ConcHalfHeight);
const GeoShape & ShaftsConc=
((*PX14Conc) << GeoTrf::TranslateX3D(PX14ConcXpos)*GeoTrf::TranslateY3D(PX14ConcYpos)).
add((*PX16Conc) << GeoTrf::TranslateX3D(PX16ConcXpos)*GeoTrf::TranslateY3D(PX16ConcYpos)).
subtract((*ShaftCut) << GeoTrf::TranslateZ3D(ShaftCutZpos)*GeoTrf::RotateY3D(ShaftCutYrotate));
recordIndex = elementMap["WallCConc"];
double WallCConcZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double WallCConcXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*GeoModelKernelUnits::m;
double WallCConcZrotate = (*cavernElements)[recordIndex]->getDouble("ZROTATE");
recordIndex = elementMap["WallAConc"];
double WallAConcZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double WallAConcXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*GeoModelKernelUnits::m;
recordIndex = elementMap["ShaftsConc"];
double ShaftsConcZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
//----------------Assemble everything--------------------------------.
const GeoShape & Concrete= (*HallConcrete).
add((CutWallConc << GeoTrf::TranslateZ3D(WallCConcZpos)*GeoTrf::TranslateX3D(WallCConcXpos)*GeoTrf::RotateZ3D(WallCConcZrotate))).
add((ShaftsConc << GeoTrf::TranslateZ3D(ShaftsConcZpos))).
add((CutVaultConc << GeoTrf::TranslateZ3D(VaultConcZpos)*GeoTrf::RotateY3D(VaultConcYrotate))).
add((*SurfaceFloor) << GeoTrf::TranslateZ3D(SurfaceFloorZpos)*GeoTrf::TranslateX3D(SurfaceFloorXpos)).
add((CutWallConc << GeoTrf::TranslateZ3D(WallAConcZpos)*GeoTrf::TranslateX3D(WallAConcXpos)));
//// -----------------------Second: Build cavern with air-------------------------------
// Create variables for Concrete Cavern and get index of the record in cavernElements
recordIndex = elementMap["WallACAir"];
double WallACAirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
double WallACAirMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*GeoModelKernelUnits::m;
double WallACAirMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*GeoModelKernelUnits::m;
double WallACAirSphi= (*cavernElements)[recordIndex]->getDouble("SPHI");
double WallACAirDphi= (*cavernElements)[recordIndex]->getDouble("DPHI");
recordIndex = elementMap["BoxAir"];
double BoxAirHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*GeoModelKernelUnits::m;
double BoxAirHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*GeoModelKernelUnits::m;
double BoxAirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
recordIndex = elementMap["VaultAir"];
double VaultAirZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double VaultAirYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
double VaultAirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
double VaultAirMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*GeoModelKernelUnits::m;
double VaultAirMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*GeoModelKernelUnits::m;
double VaultAirSphi= (*cavernElements)[recordIndex]->getDouble("SPHI");
double VaultAirDphi= (*cavernElements)[recordIndex]->getDouble("DPHI");
recordIndex = elementMap["HallAir"];
double HallAirHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*GeoModelKernelUnits::m;
double HallAirHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*GeoModelKernelUnits::m;
double HallAirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
recordIndex = elementMap["BaseAir"];
double BaseAirZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double BaseAirHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*GeoModelKernelUnits::m;
double BaseAirHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*GeoModelKernelUnits::m;
double BaseAirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
recordIndex = elementMap["BoxAirW"];
double BoxAirWZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double BoxAirWYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
recordIndex = elementMap["BoxAirVleft"];
double BoxAirVleftZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double BoxAirVleftYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
recordIndex = elementMap["BoxAirVright"];
double BoxAirVrightZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double BoxAirVrightYrotate = (*cavernElements)[recordIndex]->getDouble("YROTATE");
GeoTubs *WallACAir = new GeoTubs(WallACAirMinR, WallACAirMaxR, WallACAirHalfHeight, WallACAirSphi, WallACAirDphi);
GeoBox *BoxAir = new GeoBox(BoxAirHalfLength, BoxAirHalfWidth, BoxAirHalfHeight);
GeoTubs *VaultAir = new GeoTubs(VaultAirMinR, VaultAirMaxR, VaultAirHalfHeight, VaultAirSphi, VaultAirDphi);
GeoBox *HallAir = new GeoBox(HallAirHalfLength, HallAirHalfWidth, HallAirHalfHeight);
GeoBox *BaseAir = new GeoBox(BaseAirHalfLength, BaseAirHalfWidth, BaseAirHalfHeight);
GeoTrf::Transform3D BoxCutWallAir = GeoTrf::TranslateZ3D(BoxAirWZpos)*GeoTrf::RotateY3D(BoxAirWYrotate);
GeoTrf::Transform3D BoxCutVaultLeftAir = GeoTrf::TranslateZ3D(BoxAirVleftZpos)*GeoTrf::RotateY3D(BoxAirVleftYrotate);
GeoTrf::Transform3D BoxCutVaulRightAir = GeoTrf::TranslateZ3D(BoxAirVrightZpos)*GeoTrf::RotateY3D(BoxAirVrightYrotate);
//------------------Cut the vault and side walls----------------------------
const GeoShape & CutWallAir = (*WallACAir).subtract((*BoxAir) << GeoTrf::Transform3D(BoxCutWallAir));
const GeoShape & CutVaultAir = (*VaultAir).subtract((*BoxAir) << GeoTrf::Transform3D(BoxCutVaultLeftAir)).
subtract((*BoxAir) << GeoTrf::Transform3D(BoxCutVaulRightAir));
//--------------- Build air shafts------------------------------.
recordIndex = elementMap["PX14Air"];
double PX14AirXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*GeoModelKernelUnits::m;
double PX14AirYpos = (*cavernElements)[recordIndex]->getDouble("YPOS")*GeoModelKernelUnits::m;
double PX14AirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
double PX14AirMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*GeoModelKernelUnits::m;
double PX14AirMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*GeoModelKernelUnits::m;
recordIndex = elementMap["PX16Air"];
double PX16AirXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*GeoModelKernelUnits::m;
double PX16AirYpos = (*cavernElements)[recordIndex]->getDouble("YPOS")*GeoModelKernelUnits::m;
double PX16AirHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
double PX16AirMinR = (*cavernElements)[recordIndex]->getDouble("MINR")*GeoModelKernelUnits::m;
double PX16AirMaxR = (*cavernElements)[recordIndex]->getDouble("MAXR")*GeoModelKernelUnits::m;
GeoTube *PX14Air = new GeoTube(PX14AirMinR, PX14AirMaxR, PX14AirHalfHeight);
GeoTube *PX16Air = new GeoTube(PX16AirMinR, PX16AirMaxR, PX16AirHalfHeight);
const GeoShape & ShaftsAir=
((*PX14Air) << GeoTrf::TranslateX3D(PX14AirXpos)*GeoTrf::TranslateY3D(PX14AirYpos)).
add((*PX16Air) << GeoTrf::TranslateX3D(PX16AirXpos)*GeoTrf::TranslateY3D(PX16AirYpos));
//----------------Assemble everything--------------------------------.
recordIndex = elementMap["WallAAir"];
double WallAAirZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double WallAAirXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*GeoModelKernelUnits::m;
recordIndex = elementMap["WallCAir"];
double WallCAirZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
double WallCAirXpos = (*cavernElements)[recordIndex]->getDouble("XPOS")*GeoModelKernelUnits::m;
double WallCAirZrotate = (*cavernElements)[recordIndex]->getDouble("ZROTATE");
const GeoShape & CavernAir = (*HallAir).
add(CutWallAir << GeoTrf::TranslateZ3D(WallAAirZpos)*GeoTrf::TranslateX3D(WallAAirXpos)).
add(CutWallAir << GeoTrf::TranslateZ3D(WallCAirZpos)*GeoTrf::TranslateX3D(WallCAirXpos)*GeoTrf::RotateZ3D(WallCAirZrotate)).
add(CutVaultAir << GeoTrf::TranslateZ3D(VaultAirZpos)*GeoTrf::RotateY3D(VaultAirYrotate)).
add((*BaseAir) << GeoTrf::TranslateZ3D(BaseAirZpos));
recordIndex = elementMap["ShaftsAir"];
double ShaftsAirZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
recordIndex = elementMap["CavernAir"];
double CavernAirZpos = (*cavernElements)[recordIndex]->getDouble("ZPOS")*GeoModelKernelUnits::m;
const GeoShape & AirHall=
((CavernAir << GeoTrf::TranslateZ3D(CavernAirZpos))).
add((ShaftsAir << GeoTrf::TranslateZ3D(ShaftsAirZpos))); //allows for a built-in 2m thick plugs for both PX14 & PX16
//// -----------------------Build BedRock for Shafts and Cavern-------------------------------
recordIndex = elementMap["Rock"];
double RockHalfLength = (*cavernElements)[recordIndex]->getDouble("HALFLENGTH")*GeoModelKernelUnits::m;
double RockHalfWidth = (*cavernElements)[recordIndex]->getDouble("HALFWIDTH")*GeoModelKernelUnits::m;
double RockHalfHeight = (*cavernElements)[recordIndex]->getDouble("HALFHEIGHT")*GeoModelKernelUnits::m;
GeoBox *Rockbox = new GeoBox( RockHalfWidth, RockHalfHeight, RockHalfLength); // 300, 50.75, 300
const GeoShape & BedRock = ((*Rockbox) .
subtract((AirHall) <<GeoTrf::TranslateY3D(-34.5*GeoModelKernelUnits::m)*GeoTrf::RotateY3D(-1.57)*GeoTrf::RotateX3D(-1.57)));
GeoTransform *rZt = new GeoTransform(GeoTrf::TranslateY3D(34.5*GeoModelKernelUnits::m)*GeoTrf::TranslateX3D(-1.7*GeoModelKernelUnits::m));
world->add(rZt);
GeoLogVol *lvr = new GeoLogVol("BEDROCK",&BedRock,rock);
GeoPhysVol *bedrock = new GeoPhysVol(lvr);
world->add(tag);
world->add(bedrock);
const GeoShape & CavConcrete = ((Concrete).subtract(AirHall));
GeoTransform* xfTop = new GeoTransform(GeoTrf::TranslateY3D(-34.5*GeoModelKernelUnits::m)*GeoTrf::RotateY3D(-1.57)*GeoTrf::RotateX3D(-1.57));
bedrock->add(xfTop);
GeoLogVol *lvcsc = new GeoLogVol("CAV_SHAFTS_CONC",&CavConcrete,conc);
GeoPhysVol *CavShaftsConc = new GeoPhysVol(lvcsc);
bedrock->add(CavShaftsConc);
//// NOW INSERT ALL OF THIS INTO THE WORLD.
m_detectorManager->addTreeTop(sx1);
m_detectorManager->addTreeTop(bedrock);
}
const CavernInfraDetectorManager * CavernInfraDetectorFactory01::getDetectorManager() const
{
return m_detectorManager;
}
void CavernInfraDetectorFactory01::setTagNode(const std::string& tag,
const std::string& node)
{
m_versionTag = tag;
m_versionNode = node;
}
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
*/
#ifndef CavernInfraDetectorFactory01_h
#define CavernInfraDetectorFactory01_h 1
#include "GeoModelKernel/GeoVDetectorFactory.h"
#include "CavernInfraDetectorManager.h"
#include "RDBAccessSvc/IRDBAccessSvc.h"
#include <string>
class StoreGateSvc;
class CavernInfraDetectorFactory01 : public GeoVDetectorFactory
{
public:
// Constructor:
CavernInfraDetectorFactory01(StoreGateSvc *pDetStore,
IRDBAccessSvc *pAccess);
// Destructor:
~CavernInfraDetectorFactory01();
// Creation of geometry:
virtual void create(GeoPhysVol *world);
// Access to the results:
virtual const CavernInfraDetectorManager * getDetectorManager() const;
// Set version Tag and Node
void setTagNode(const std::string& tag, const std::string& node);
private:
// Illegal operations:
const CavernInfraDetectorFactory01 & operator=(const CavernInfraDetectorFactory01 &right);
CavernInfraDetectorFactory01(const CavernInfraDetectorFactory01 &right);
// The manager:
CavernInfraDetectorManager *m_detectorManager;
StoreGateSvc *m_detectorStore;
IRDBAccessSvc *m_access;
std::string m_versionTag;
std::string m_versionNode;
};
// Class CavernInfraDetectorFactory01
#endif
/*
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#include "CavernInfraDetectorManager.h"
......@@ -10,11 +10,7 @@ CavernInfraDetectorManager::CavernInfraDetectorManager()
}
CavernInfraDetectorManager::~CavernInfraDetectorManager()
{
for(unsigned int i=0; i<m_treeTops.size(); i++)
m_treeTops[i]->unref();
}
CavernInfraDetectorManager::~CavernInfraDetectorManager() = default;
unsigned int CavernInfraDetectorManager::getNumTreeTops() const
......@@ -27,12 +23,11 @@ PVConstLink CavernInfraDetectorManager::getTreeTop(unsigned int i) const
if(i<m_treeTops.size())
return m_treeTops[i];
else
return 0;
return nullptr;
}
void CavernInfraDetectorManager::addTreeTop(PVLink link)
void CavernInfraDetectorManager::addTreeTop(const PVLink& link)
{
link->ref();
m_treeTops.push_back(link);
}
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef CavernInfraDetectorManager_h
#define CavernInfraDetectorManager_h 1
#ifndef CAVERNINFRAGEOMODEL_CAVERNINFRADETECTORMANAGER_H
#define CAVERNINFRAGEOMODEL_CAVERNINFRADETECTORMANAGER_H
#include "GeoModelKernel/GeoVPhysVol.h"
#include "GeoModelKernel/GeoVDetectorManager.h"
#include <vector>
class CavernInfraDetectorManager : public GeoVDetectorManager
class CavernInfraDetectorManager : public GeoVDetectorManager
{
public:
// Constructor
CavernInfraDetectorManager();
// Destructor
const CavernInfraDetectorManager & operator=(const CavernInfraDetectorManager &right) = delete;
CavernInfraDetectorManager(const CavernInfraDetectorManager &right) = delete;
~CavernInfraDetectorManager();
// Access to raw geometry:
virtual unsigned int getNumTreeTops() const;
virtual PVConstLink getTreeTop(unsigned int i) const;
void addTreeTop(PVLink); // Add a Tree top:
virtual unsigned int getNumTreeTops() const override;
virtual PVConstLink getTreeTop(unsigned int i) const override;
private:
void addTreeTop(const PVLink&); // Add a Tree top:
const CavernInfraDetectorManager & operator=(const CavernInfraDetectorManager &right);
CavernInfraDetectorManager(const CavernInfraDetectorManager &right);
private:
// Tree Tops
std::vector<PVLink> m_treeTops;
};
#ifndef GAUDI_NEUTRAL
#include "AthenaKernel/CLASS_DEF.h"
#include "AthenaKernel/CLASS_DEF.h"
CLASS_DEF(CavernInfraDetectorManager, 1500000300, 1)
#endif
......
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#include "CavernInfraDetectorTool.h"
#include "CavernInfraDetectorFactory.h"
#include "CavernInfraDetectorFactory01.h"
#include "CavernInfraDetectorManager.h"
#include "CavernInfraDetectorFactory.h"
#include "CavernInfraDetectorManager.h"
#include "GeoModelInterfaces/IGeoDbTagSvc.h"
#include "GeoModelUtilities/GeoModelExperiment.h"
#include "RDBAccessSvc/IRDBAccessSvc.h"
CavernInfraDetectorTool::CavernInfraDetectorTool( const std::string& type,
CavernInfraDetectorTool::CavernInfraDetectorTool( const std::string& type,
const std::string& name,
const IInterface* parent )
: GeoModelTool( type, name, parent ),
m_manager(0)
: GeoModelTool( type, name, parent )
{
}
CavernInfraDetectorTool::~CavernInfraDetectorTool()
{
}
StatusCode CavernInfraDetectorTool::create()
{
IGeoDbTagSvc *geoDbTag;
StatusCode sc = service ("GeoDbTagSvc",geoDbTag);
if(sc.isFailure()) {
msg(MSG::ERROR) << "Could not locate GeoDbTagSvc" << endmsg;
return sc;
}
{
ServiceHandle<IGeoDbTagSvc> geoDbTag("GeoDbTagSvc", name());
ATH_CHECK(geoDbTag.retrieve());
std::string cavernInfraVersion = geoDbTag->cavernInfraVersion();
msg(MSG::INFO) << "Building Cavern geometry version " << cavernInfraVersion << endmsg;
if(cavernInfraVersion.empty()) {
msg(MSG::INFO) << "No Cavern Infra version for the given configuration. Skip building CavernInfraGeoModel" << endmsg;
ATH_MSG_INFO("No Cavern Infra version for the given configuration. Skip building CavernInfraGeoModel");
return StatusCode::SUCCESS;
}
else {
ATH_MSG_INFO("Building Cavern geometry version " << cavernInfraVersion);
}
std::string versionNode = "CavernInfra";
GeoModelExperiment* theExpt = nullptr;
if (StatusCode::SUCCESS != detStore()->retrieve(theExpt,"ATLAS")) {
msg(MSG::ERROR) << "Could not find GeoModelExperiment ATLAS" << endmsg;
return StatusCode::FAILURE;
}
GeoPhysVol *world=&*theExpt->getPhysVol();
IRDBAccessSvc* raccess = 0;
sc = service("RDBAccessSvc",raccess);
if(sc.isFailure()) {
msg(MSG::ERROR) << "Could not locate RDBAccessSvc" << endmsg;
return sc;
}
ATH_CHECK(detStore()->retrieve(theExpt,"ATLAS"));
if (cavernInfraVersion.rfind("CavernInfra",0) == 0) { //starts with "CavernInfra"
std::string geoVersion = cavernInfraVersion.substr(12,2);
if(geoVersion=="00" || geoVersion=="01") {
msg(MSG::ERROR) << "ERROR. Version " << cavernInfraVersion << " is obsolete and cannot be supported anymore" << endmsg;
return StatusCode::FAILURE;
}
else if(geoVersion=="02") {
// This factory is chosen by CavernInfra-02 tag, but in fact it uses data from CavernInfra-01
CavernInfraDetectorFactory01 theCavernInfraFactory01(detStore().operator->(),raccess);
theCavernInfraFactory01.setTagNode(cavernInfraVersion,versionNode);
theCavernInfraFactory01.create(world);
m_manager = theCavernInfraFactory01.getDetectorManager();
}
}
GeoPhysVol *world=theExpt->getPhysVol();
ServiceHandle<IRDBAccessSvc> raccess("RDBAccessSvc",name());
ATH_CHECK(raccess.retrieve());
if(!m_manager) {
// If geometry has not been built yet fall back to the default factory
CavernInfraDetectorFactory theCavernInfraFactory(detStore().operator->(),raccess);
CavernInfraDetectorFactory theCavernInfraFactory(detStore(),raccess);
theCavernInfraFactory.setTagNode(cavernInfraVersion,versionNode);
theCavernInfraFactory.create(world);
m_manager = theCavernInfraFactory.getDetectorManager();
......@@ -82,15 +50,10 @@ StatusCode CavernInfraDetectorTool::create()
if(m_manager) {
theExpt->addManager(m_manager);
sc = detStore()->record(m_manager,
m_manager->getName());
if(sc.isFailure()) {
msg(MSG::ERROR) << "Could not register CavernInfra detector manager" << endmsg;
return sc;
}
ATH_CHECK(detStore()->record(m_manager,m_manager->getName()));
}
else {
msg(MSG::ERROR) << "ERROR. Failed to build Cavern Version " << cavernInfraVersion << endmsg;
ATH_MSG_ERROR("ERROR. Failed to build Cavern Version " << cavernInfraVersion);
return StatusCode::FAILURE;
}
......@@ -102,7 +65,7 @@ StatusCode CavernInfraDetectorTool::clear()
SG::DataProxy* proxy = detStore()->proxy(ClassID_traits<CavernInfraDetectorManager>::ID(),m_manager->getName());
if(proxy) {
proxy->reset();
m_manager = 0;
m_manager = nullptr;
}
return StatusCode::SUCCESS;
}
......
/*
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef CAVERNINFRADETECTORTOOL_H
#define CAVERNINFRADETECTORTOOL_H
#ifndef CAVERNINFRAGEOMODEL_CAVERNINFRADETECTORTOOL_H
#define CAVERNINFRAGEOMODEL_CAVERNINFRADETECTORTOOL_H
#include "GeoModelUtilities/GeoModelTool.h"
class CavernInfraDetectorManager;
class CavernInfraDetectorTool final : public GeoModelTool
class CavernInfraDetectorTool final : public GeoModelTool
{
public:
// Standard Constructor
CavernInfraDetectorTool( const std::string& type, const std::string& name, const IInterface* parent );
~CavernInfraDetectorTool() = default;
// Standard Destructor
virtual ~CavernInfraDetectorTool() override final;
virtual StatusCode create() override;
virtual StatusCode clear() override;
virtual StatusCode create() override final;
virtual StatusCode clear() override final;
private:
const CavernInfraDetectorManager* m_manager;
const CavernInfraDetectorManager* m_manager{nullptr};
};
#endif
#endif
......@@ -9,6 +9,7 @@ find_package( GeoModel COMPONENTS GeoModelKernel GeoModelDBManager GeoModelRead)
atlas_add_library( CrackRegionGeoModel
src/*.cxx
PUBLIC_HEADERS CrackRegionGeoModel
INCLUDE_DIRS ${GEOMODEL_INCLUDE_DIRS}
LINK_LIBRARIES ${GEOMODEL_LIBRARIES}
PRIVATE_LINK_LIBRARIES GaudiKernel GeoModelUtilities StoreGateLib RDBAccessSvcLib )
......@@ -10,4 +10,5 @@ find_package( GeoModel COMPONENTS GeoModelKernel )
atlas_add_component( GeoModelEnvelopes
src/*.cxx
src/components/*.cxx
INCLUDE_DIRS ${GEOMODEL_INCLUDE_DIRS}
LINK_LIBRARIES ${GEOMODEL_LIBRARIES} AthenaKernel GaudiKernel GeoModelInterfaces GeoModelUtilities SGTools StoreGateLib )
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef ForDetEnvelopeManager_h
......@@ -10,7 +10,7 @@
#include <vector>
class ForDetEnvelopeManager : public GeoVDetectorManager
class ForDetEnvelopeManager : public GeoVDetectorManager
{
public:
......@@ -22,19 +22,19 @@ class ForDetEnvelopeManager : public GeoVDetectorManager
// Access to raw geometry:
virtual unsigned int getNumTreeTops() const;
// Access to raw geometry:
virtual PVConstLink getTreeTop(unsigned int i) const;
// Add a Tree top:
void addTreeTop(PVLink);
void addTreeTop(const PVLink&);
private:
private:
const ForDetEnvelopeManager & operator=(const ForDetEnvelopeManager &right);
ForDetEnvelopeManager(const ForDetEnvelopeManager &right);
std::vector<PVLink> m_volume;
std::vector<PVLink> m_volume;
};
......
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#include "ForDetEnvelopeFactory.h"
#include "GeoModelInterfaces/StoredMaterialManager.h"
#include "GeoModelKernel/GeoMaterial.h"
#include "GeoModelKernel/GeoTube.h"
#include "GeoModelKernel/GeoLogVol.h"
#include "GeoModelKernel/GeoNameTag.h"
#include "GeoModelKernel/GeoPhysVol.h"
#include "GeoModelKernel/GeoShapeShift.h"
#include "GeoModelKernel/GeoMaterial.h"
#include "GeoModelKernel/GeoTube.h"
#include "GeoModelKernel/GeoLogVol.h"
#include "GeoModelKernel/GeoNameTag.h"
#include "GeoModelKernel/GeoPhysVol.h"
#include "GeoModelKernel/GeoShapeShift.h"
#include "GeoModelKernel/GeoShapeUnion.h"
#include "StoreGate/StoreGateSvc.h"
......@@ -20,23 +20,20 @@
ForDetEnvelopeFactory::ForDetEnvelopeFactory(StoreGateSvc *detStore)
: m_detectorManager(0),
m_materialManager(0),
: m_detectorManager(nullptr),
m_materialManager(nullptr),
m_detectorStore(detStore)
{
}
ForDetEnvelopeFactory::~ForDetEnvelopeFactory()
{
}
void ForDetEnvelopeFactory::create(GeoPhysVol *world)
{
if (StatusCode::SUCCESS != m_detectorStore->retrieve(m_materialManager, std::string("MATERIALS"))) {
return;
}
// Get the materials
return;
}
// Get the materials
const GeoMaterial* air = m_materialManager->getMaterial("std::Air");
// Build boolean shape: union of two tubes
......@@ -47,7 +44,7 @@ void ForDetEnvelopeFactory::create(GeoPhysVol *world)
const GeoShapeShift& envShape1 = (*tube1)<<xfRelativeA;
const GeoShapeUnion& envShape = envShape1.add((*tube2)<<xfRelativeC);
GeoLogVol* lvEnv = new GeoLogVol("ForDetEnvelope",&envShape,air);
GeoPhysVol* pvEnv = new GeoPhysVol(lvEnv);
......