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
  • kahaeuss/athena
  • 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
  • nibrahim/athena
  • haa2mu2tau/athena
  • nkvu/athena
  • andre/athena
  • ebakos/athena
  • gwmyers/athena
  • lportale/athena
  • vasothil/athena
  • rhammad/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
  • 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
  • christog/athena-brem
  • 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
  • nikiforo/athena
  • fpastore/athena
  • harkusha/athena
  • mvozak/athena
  • leggett/athena
  • martindl/athena
  • almaloiz/athena
  • tlari/athena
  • susinha/athena
  • filthaut/athena
  • cchan/athena
  • peter/athena
  • cvarni/athena
  • wleight/athena
  • nwarrack/athena
  • cshimmin/athena
  • mihuebne/athena
  • jsallen/athena-high-pt-ms-jets
  • dkar/athena
  • chays/athena
  • dtovey/athena
  • sgeorge/athena
  • yafu/athena
  • mgignac/athena
  • alfroch/athena
  • mstamenk/athena
  • okepka/athena
  • tkohno/athena
  • janovak/athena
  • wiedenat/athena
  • khoo/athena
  • maklein/athena
  • cohm/athena
  • omajersk/athena
  • dbakshig/athena
  • fernando/athena
  • tmkrtchy/athena
  • gingrich/athena
  • schaarsc/athena
  • ponyisi/athena
  • ravinab/athena
  • scheiric/athena
  • pleskot/athena
  • jobalz/athena
  • ebergeas/athena
  • ekasimi/athena
  • afaulkne/athena
  • ekuwertz/athena
  • xai/athena
  • merrenst/athena
  • goetz/athena
  • dpopov/athena
  • xuh/athena
  • astruebi/athena
  • mdanning/athena
  • egramsta/athena
  • hye/athena
  • clseitz/athena
  • achishol/athena
  • bmindur/athena
  • efilmer/athena
  • jpanduro/athena
  • ssarikay/athena
  • hyamauch/athena
  • alaurier/athena
  • ppostola/athena
  • shanisch/athena
  • mtoscani/athena
  • ncalace/athena
  • aad/athena
  • gpanizzo/athena
  • krumnack/athena
  • tupham/athena
  • stelzer/athena
  • ssottoco/athena
  • turnerm/athena
  • sutt/athena
  • rcoelhol/athena
  • rkopelia/athena
  • cmcginn/athena
  • bernius/athena
  • tsulaia/athena
  • nkrengel/athena
  • vcairo/athena
  • ldc/athena
  • jmacdona/athena
  • mbandier/athena
  • mehlhase/athena
  • stsuno/athena
  • jdandoy/athena
  • dzanzi/athena
  • yunju/athena
  • kzoch/athena
  • nasbah/athena
  • kwhalen/athena
  • jufische/athena
  • bmorgan/athena
  • msaimper/athena
  • williams/athena
  • shhirose/athena
  • cheidegg/athena
  • heng/athena
  • amete/athena
  • hhibi/athena
  • kkohler/athena
  • rcarney/athena
  • cdeutsch/athena
  • ynoguchi/athena
  • campanel/athena
  • coccaro/athena
  • wbalunas/athena
  • hoide/athena
  • xju/athena
  • loch/athena
  • yuchou/athena
  • nova/athena
  • todorova/athena
  • sjiggins/athena
  • bgokturk/athena
  • aytul/athena
  • lidiaz/athena
  • jbiswal/athena
  • hrussell/athena
  • guerrero/athena
  • kpachal/athena
  • bouhova/athena
  • kegraham/athena
  • alwang/athena
  • dhayden/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
  • korona/athena
  • mhank/athena
  • dshope/athena
  • cowagner/athena
  • tursom/athena
  • dbogavac/athena
  • tnobe/athena
  • anperrev/athena
  • fsforza/athena
  • derue/athena
  • eramakot/athena
  • koffas/athena
  • fgiuli/athena
  • angianni/athena
  • ballbroo/athena
  • diehl/athena
  • myexley/athena
  • chinderk/athena
  • davidek/athena
  • tphamleh/athena
  • ekajomov/athena-general
  • sarbiolv/athena
  • hansenph/athena
  • falonso/athena
  • mfujimot/athena
  • hirose/athena
  • salvator/athena
  • jhaley/athena
  • stapiaar/athena
  • masato/athena
  • jmendes/athena
  • nwenke/athena
  • ffabbri/athena
  • tpelzer/athena
  • agbet/athena
  • dbabal/athena
  • stavrop/athena
  • juesseiv/athena
  • cdelitzs/athena
  • gia/athena
  • kkrizka/athena
  • hmildner/athena
  • dwallace/athena
  • eschanet/athena
  • asonay/athena
  • iaizenbe/athena
  • temoskal/athena
  • lferencz/athena
  • czhou/athena
  • ckitsaki/athena
  • pmeiring/athena
  • jteoh/athena
  • liberato/athena
  • jiawei/athena
  • jbeirer/athena
  • mromano/athena
  • nielsenj/athena
  • wachan/athena
  • ranovotn/athena
  • rustem/athena
  • elmsheus/athena
  • asquith/athena
  • sswatman/athena
  • nicholas/athena
  • markowen/athena
  • eparrish/athena
  • miqueits/athena
  • fuhe/athena
  • dakoch/athena
  • mhance/athena
  • aranzazu/athena
  • ndegroot/athena
  • lihan/athena
  • asoukhar/athena
  • esoldato/athena
  • aporeba/athena
  • tjunkerm/athena
  • ginaciog/athena
  • verducci/athena
  • jkempste/athena
  • martis/athena
  • sschramm/athena
  • mdelmast/athena
  • anmrodri/athena
  • bcarlson/athena
  • mswiatlo/athena
  • ssaha/athena
  • pliu/athena
  • gabarone/athena
  • fastcalosim_test/athena
  • mxia/athena
  • lstocker/athena
  • scamarda/athena
  • guindon/athena
  • rlongo/athena
  • amoussa/athena
  • mdonasci/athena
  • chelling/athena
  • conde/athena
  • gialas/athena
  • fcostanz/athena
  • mmittal/athena
  • shion/athena
  • hmaguire/athena
  • ffollega/athena
  • sschmitt/athena
  • cgutscho/athena
  • zsoumaim/athena
  • sberlend/athena
  • evarnes/athena
  • acts/athena
  • nifomin/athena
  • dwilbern/athena
  • laforge/athena
  • guescini/athena
  • eriefel/athena
  • akotsoke/athena
  • jkremer/athena
  • haozturk/athena
  • kkoeneke/athena
  • istin/athena
  • susy-hackers/athena
  • rpoggi/athena
  • llorente/athena
  • acanesse/athena
  • fizisist/athena
  • fengyu/athena
  • cmerlass/athena
  • chenlian/athena
  • rkarnam/athena
  • ysmirnov/athena_old
  • ivivarel/athena
  • bulekov/athena
  • amulski/athena
  • navarrjo/athena
  • pkramer/athena
  • vcavalie/athena
  • yanlin/athena
  • restevam/athena
  • sanchevi/athena
  • bauerpa/athena
  • smwang/athena
  • thsjurse/athena
  • sefernan/athena
  • mmlynars/athena
  • iyeletsk/athena
  • jgonski/athena
  • itrandaf/athena
  • mmazza/athena
  • almgadm/athena
  • csebasti/athena
  • wobisch/athena
  • jhinds/athena
  • mwielers/athena
  • tiyang/athena
  • lapereir/athena
  • mtchijov/athena
  • emmat/athena
  • lucam/athena
  • kciesla/athena
  • aleopold/athena
  • lmiller/athena
  • pekman/athena
  • rbalasub/athena
  • zuysal/athena
  • masaito/athena
  • wmccorma/athena
  • kkreul/athena
  • somadutt/athena
  • jstupak/athena
  • ycoadou/athena
  • salderwe/athena
  • ilongari/athena
  • adye/athena
  • simmons/athena
  • wtaylor/athena
  • jzeng/athena
  • pinamont/athena
  • kbelobor/athena
  • ssahin/athena
  • aoneill/athena
  • dmaximov/athena
  • kghorban/athena
  • fbartels/athena
  • gcallea/athena
  • cschiavi/athena
  • ljeanty/athena
  • kasai/athena
  • jraine/athena
  • brottler/athena
  • ecarlson/athena
  • mcfayden/athena
  • aelmouss/athena
  • rozeny/athena
  • scarra/athena
  • nbelyaev/athena
  • abandyop/athena
  • gotero/athena
  • khanov/athena
  • joheinri/athena
  • aohatl/athena
  • doglioni/athena
  • alaperto/athena
  • rebeca/athena
  • bhonan/athena
  • amarzin/athena
  • rgarg/athena
  • dpudzha/athena
  • bigliett/athena
  • paulama/athena
  • mtesta/athena
  • pmoskvit/athena
  • jajimene/athena
  • atlidali/athena
  • lbozianu/athena
  • begalli/athena
  • vcroft/athena
  • yajun/athena
  • torrence/athena
  • wprzygod/athena
  • mpokidov/athena
  • sgalantz/athena
  • barak/athena
  • demelian/athena
  • roward/athena
  • tofitsch/athena
  • salnikov/athena
  • hacooke/athena
  • atsirigo/athena
  • amoroso/athena
  • elrossi/athena
  • csander/athena
  • mmiralle/athena
  • alory/athena
  • jsabater/athena
  • ozaplati/athena
  • jdevivi/athena
  • pbokan/athena
  • ymino/athena
  • pottgen/athena
  • xchen/athena
  • ruth/athena
  • apetukho/athena
  • klin/athena
  • cappelt/athena
  • nishu/athena
  • paramon/athena
  • trinn/athena
  • ratkin/athena
  • xiaoning/athena
  • nelsonc/athena
  • juhofer/athena
  • enarayan/athena
  • exot-27/athena
  • bleban/athena
  • dpizzi/athena
  • acassim/athena
  • bburghgr/athena
  • ztarem/athena
  • sampson/athena
  • mkrivos/athena
  • qhu/athena
  • ychow/athena
  • nviauxma/athena
  • mmarjano/athena
  • hessey/athena
  • pagessin/athena
  • watsona/athena
  • ibordule/athena
  • wfawcett/athena
  • jreich/athena
  • LichtenbergGroup/athena
  • perj/athena
  • mleblanc/athena
  • ztao/athena
  • othielma/athena
  • sridouan/athena
  • jdegens/athena
  • alainb/athena
  • wgeorge/athena
  • hasada/athena
  • xiaohu/athena
  • ludovica/athena
  • pmendesa/athena
  • bachacou/athena
  • yake/athena
  • yama/athena
  • kristin/athena
  • ssu/athena
  • rjanusia/athena-derivation
  • jlsmith/athena
  • angerami/athena
  • rnayak/athena
  • musafdar/athena
  • pebaron/athena-weights
  • ktsuri/athena
  • jezequel/athena
  • hschwart/athena
  • mproffit/athena
  • amendesj/athena
  • asalzbur/athena
  • csamoila/athena
  • lhelary/athena
  • gproto/athena
  • malgren/athena
  • tiany/athena
  • rerrabai/athena
  • mprincip/athena
  • lbeemste/athena
  • grabanal/athena
  • spolacek/athena
  • aczirkos/athena
  • bmondal/athena
  • kyamaguc/athena
  • tboeckh/athena
  • asantra/athena
  • silvinha/athena
  • holau/athena
  • jreidels/athena
  • mdhlamin/athena
  • bozek/athena
  • jroloff/athena
  • lkrauth/athena
  • tdiasdov/athena
  • slawlor/athena
  • carlod/athena
  • emily/athena
  • mtian/athena
  • bbrueers/athena
  • mgrabois/athena
  • iramirez/athena
  • idinu/athena
  • dhirsch/athena
  • bcole/athena
  • oducu/athena
  • roishi/athena
  • ecelebi/athena
  • jjwilkin/athena
  • ygo/athena
  • yuanchan/athena
  • ggustavi/athena
  • hmoyanog/athena-4-mr
  • exochell/athena
  • diwillia/athena
  • cgarner/athena
  • changqia/athena
  • sbiryuko/athena
  • honguyen/athena
  • jwspence/athena
  • calpigia/athena
  • skorn/athena
  • yangx/athena
  • jizamora/athena
  • scalvet/athena
  • atsiamis/athena
  • rysawada/athena
  • cmarcon/athena
  • kpetukho/athena
  • adimitri/athena
  • iene/athena
  • tbisanz/athena
  • dhangal/athena
  • tqiu/athena
  • atlidbs/athena
  • jspah/athena
  • jkretz/athena
  • dopasqua/athena
  • athaler/athena
  • tzenis/athena
  • hzuchen/athena
  • jcardena/athena
  • lveloce/athena
  • ryamaguc/athena
  • oshukrun/athena
  • fdelrio/athena
  • maliev/athena
  • mbiros/athena
  • tsano/athena
  • mumohdso/athena2
  • sagara17/athena
  • okumura/athena
  • iwang/athena
  • mumohdso/athena
  • rhayes/athena
  • dmunozpe/athena
  • arennie/athena
  • koshimiz/athena
  • valentem/athena
  • evguillo/athena
  • dossantn/athena
  • zhijie/athena
  • atate/athena
  • zearnsha/athena
  • caforio/athena
  • bnachman/athena
  • suyounas/athena
  • hlin/athena
  • yuzhan/athena
  • maly/athena
  • rjoshi/athena
  • machitis/athena
  • mtost/athena
  • lvannoli/athena
  • crougier/athena
  • lunedic/athena
  • mimarine/athena
  • ndebiase/athena
  • omezhens/athena
  • jonierma/athena
  • dounwuch/athena
  • thompson/athena
  • nkakati/athena
  • echeu/athena
  • hhanif/athena
  • saclawso/athena
  • martinpa/athena
  • cprat/athena
  • csauer/athena
  • mischott/athena
  • jodamp/athena
  • tiknight/athena
  • sahinsoy/athena
  • knikolop/athena
  • inaryshk/athena
  • fedin/athena
  • xchu/athena
  • wendlanb/athena
  • angrigor/athena
  • lkeszegh/athena
  • lbaltes/athena
  • adik/athena
  • pbellos/athena
  • jaoliver/athena
  • idrivask/athena
  • aikoulou/athena
  • ntamir/athena
  • echeremu/athena
  • sadykov/athena
  • ignesi/athena
  • eschopf/athena
  • haweber/athena
  • sgurdasa/athena
  • algilber/athena
  • pamachad/athena
  • pyanezca/athena
  • hiito/athena
  • pbhattar/athena
  • bsaifudd/athena
  • tavandaa/athena
  • tteixeir/athena
  • veellajo/athena
  • wolter/athena
  • mdrozdov/athena
  • fsili/athena
  • hsimpson/athena
  • fdibello/athena
  • mzhai/athena
  • dparedes/athena
  • mrenda/athena
  • zyan/athena
  • minaenko/athena
  • emmarsha/athena
  • rkusters/athena
  • edweik/athena
  • chchau/athena
  • zhangr/athena
  • jburzyns/athena
  • zmarshal/athena
  • slai/athena
  • phkenned/athena
  • awilhahn/athena
  • agaa/athena
  • leevans/athena
  • zfeng/athena
  • javanden/athena
  • llaatu/athena
  • stsigari/athena
  • srdas/athena
  • adonofri/athena
  • kkrowpma/athena
  • metsai/athena
  • zifeng/athena
  • drousso/athena
  • atropina/athena
  • yuanda/athena
  • seggebre/athena
  • atlaspmb/athena
  • mnoury/athena
  • cleonido/athena
  • arombola/athena
  • ijuarezr/athena
  • dgillber/athena
  • ademaria/athena
  • saktas/athena
  • eyamashi/athena
  • zang/athena
  • matakagi/athena
  • axiong/athena
  • qibin/athena
  • fbendebb/athena
  • amdesai/athena
  • nlopezca/athena
  • tbuanes/athena
  • berkeleylab/lowmutracking/athena
  • jferrand/athena
  • bshresth/athena
  • cbuitrag/athena
  • hawatson/athena
  • klassen/athena
  • egodden/athena
  • hpotti/athena
  • vtudorac/athena
  • chonghao/athena
  • mfarring/athena
  • dzengerj/athena
  • parodi/athena
  • bballard/athena
  • knakkali/athena
  • ttakemur/athena
  • buboehm/athena
  • lmontana/athena
  • dcieri/athena
  • zhuyi/athena
  • cimcp/athena
  • weixi/athena
  • cantel/athena
  • adaribay/athena
  • asansar/athena
  • kbenkend/athena
  • jburr/athena
  • iliadis/athena
  • dkoeck/athena
  • frenner/athena
  • isotarri/athena
  • bstanisl/athena
  • mnovak/athena
  • blumen/athena
  • mfewell/athena
  • czodrows/athena
  • eegidiop/athena
  • yulei/athena
  • olangrek/athena
  • miholzbo/athena
  • amincer/athena
  • smitani/athena
  • gshatri/athena
  • alsala/athena
  • jmharris/athena
  • jgargan/athena
  • clantz/athena
  • hpang/athena
  • gripelli/athena
  • ewatton/athena
  • tizuo/athena
  • otheiner/athena
  • rushioda/athena
  • mleigh/athena
  • sfranche/athena
  • deniso/athena
  • preselection-hackathon/athena
  • mfernoux/athena
  • smeriano/athena
  • chandler/athena
  • viruelas/athena
  • jnitschk/athena
  • bernardo/athena
  • pebaron/athena-td
  • ksugizak/athena
  • yusano/athena
  • skaur/athena
  • anghosh/ef-anindya
  • hriani/athena
  • wsherman/athena
  • davetisy/athena
  • jgombas/athena
  • vcepaiti/athena
  • yochi/athena
  • sroygara/athena
  • rtagami/athena
  • yuanj/athena
  • apsallid/athena
  • chji/athena
  • agavrily/athena
  • pakontax/athena
  • dmclaugh/athena
  • falfonsi/athena
  • abunka/athena
  • ljerala/athena
  • mcgensvc/athena
  • dmahon/athena
  • giagu/athena
  • almay/athena
  • cjmeyer/athena
  • yuwen/athena
  • qberthet/athena
  • islazyk/athena
  • mshapiro/athena
  • ekay/athena
  • mbarel/athena
  • baitbenc/athena
  • dkobylia/athena
  • rdinardo/athena
  • dakiyama/athena
  • otheiner/athena-official
  • osalin/athena
  • glamprin/athena
  • robouque/athena
  • minlin/athena
  • mlanzacb/athena
  • szambito/athena
  • cgrefe/athena
  • hwilkens/athena
  • beringer/athena
  • kazhang/athena
  • yyap/athena
  • pebaron/athena
  • mspalla/athena
  • wsfreund/athena
  • fcalosim/athena
  • enagy/athena
  • smobius/athena
  • menke/athena
  • mavogel/athena
  • mduehrss/athena
  • spagan/athena
  • schaffer/athena
  • rateixei/athena
  • dportill/athena
  • carquin/athena
  • tkharlam/athena
  • osunnebo/athena
  • desilva/athena
  • lmijovic/athena
  • okiverny/athena
  • junpei/athena
  • jelena/athena
  • tilebeam/athena
  • sanmay/athena
  • chhayes/athena
  • jahreda/athena
  • satom/athena
  • kiabelin/athena
  • jwalder/athena
  • vtskhaya/athena
  • mcarnesa/athena
  • krbjoerk/athena
  • cyoung/athena
  • silu/athena
  • jstark/athena
  • jedebevc/athena
  • jtanaka/athena
  • yifany/athena
  • delsart/athena
  • haoran/athena
  • mtogawa/athena
  • danning/athena
  • faser/offline/athena
  • maslawin/athena
  • dcasperfaser/athena
  • beddall/athena
  • minghui/athena
  • luxin/athena
  • cfan/athena
  • kazheng/athena
  • mmontell/athena
  • almeidvi/athena
  • beltran/athena-fork
  • vmartin/athena
  • srettie/athena
  • sudha/athena
  • lhenkelm/athena
  • kgupta/athena
  • anbaraja/athena
  • lgagnon/athena
  • serodrig/athena
  • kkawade/athena
  • pajones/athena
  • dpanchal/athena
  • joana/athena
  • mtanasin/athena
  • ssinha/athena
  • apalazzo/athena
  • amorenos/athena
  • vbuxbaum/athena
  • jshahini/athena
  • kburka/athena
  • chiodini/athena
  • ehaines/athena
  • lfeligio/athena
  • desengup/athena
  • gottino/athena
  • jaofferm/athena
  • rmazini/athena
  • gonzalri/athena
  • qidong/athena
  • mdidenko/athena
  • hazeng/athena
  • sabidi/athena
  • ktackman/athena
  • bkerridg/athena
  • gavrilen/athena
  • yche/athena
  • dwkim/athena
  • yoyeh/athena
  • jingjing/athena
  • ktopolni/athena
  • cdimitri/athena
  • dabattul/athena
  • attrtcal/athena
  • sgaid/athena
  • thmaurin/athena
  • asciandr/athena
  • chjiang/athena
  • lbazzano/athena
  • mischott/athena-22
  • bochen/athena
  • rushioda/athena-3
  • meiqi/athena
  • nlad/athena
  • pclark/athena
  • krdona/athena
  • hmoyanog/athena
  • dtorresa/athena
  • aackerma/athena
  • aaikot/athena
  • kvidalgu/athena
  • yingjun/athena
  • xinfei/athena
  • jcurran/athena
  • aivina/athena
  • maboelel/athena
  • mschefer/athena
  • lesplend/athena
  • xinhui/athena
  • kazheng/athena-physics-val-2023
  • zoduan/athena
  • rmakhman/athena
  • shhan/athena
  • sfrances/athena
  • zhiliang/athena
  • xingguo/athena
  • bdixit/athena
  • alsidley/athena
  • liuk/athena
  • jlue/athena
  • asehrawa/athena
  • ragrabar/athena
  • kyjones/topoetcone-removal
  • mhoppesc/athena
  • niabicht/athena
  • keener/athena
  • lcalic/athena-backup
  • yunagai/athena
  • greynold/athena
  • yinmiao/athena
  • llewitt/athena
  • shahzad/athena
  • bschlag/athena
  • bruckman/athena
  • kazheng/athena-workingpoint
  • adohnalo/athena
  • drankin/athena
  • agentry/athena
  • jrivaden/athena
  • nkang/athena
  • hvanders/athena
  • ladamczy/test
  • tbeumker/athenatest
  • kbhide/athena
  • tbeumker/athena
  • asmaga/athena
  • losanti/athena-23
  • jiturriz/athena
  • berkeleylab/acts/athena
  • losanti/athena
  • dmankad/athena-idle
  • wsong/athena
  • weitao/athena
  • menu-hackathon/athena
  • dawerner/athena
  • seggebre/athena-fluencemap-modification
  • kyjones/trigger-example
  • vmaksimo/athena
  • toobauma/athena
  • gtarna/athena
  • smanzoni/athena
  • fisopkov/athena
  • edreyer/athena
  • maparo/athena
  • lprimomo/athena
  • shmukher/athena
  • aackerma/atlas-athena
  • adimri/athena
  • SecVtx-Lancaster/Athena
  • japresto/athena
  • jcrosby/athena
  • tovsiann/athena
  • pgraveli/athena
  • lrambell/athena
  • wstanek/athena
  • rsnyder/athena
  • atlas-sa-uct/athena
  • eullmank/athena
  • zgao/athena
  • ppotepa/athena
  • lroos/athena
  • skita/athena
  • xmapekul/athena
  • mhemmett/athena
  • achakrav/athena
  • kgoto/athena
  • rashbypi/athena
  • ivyas/athena
  • evitale/athena
  • npond/athena
  • arej/athena
  • aleksand/athena
  • lkretsch/athena
  • thmaurin/athena-sim-flavour
  • jebohm/athena
  • cvittori/athena
  • dbiswas/athena
  • epasqual/athena
  • hluk/athena
  • aralves/athena
  • dkoeck/anniathenafork
  • mkareem/athena
  • mbiyabi/athena
  • mihe/athena
  • tslee/athena
  • cgarvey/athena
  • croland/athena
  • kesedlac/athena
  • rgupta/athena
  • ctosciri/athena-old
  • ctosciri/athena
  • pkumari/athena
  • feickert/athena
  • mhaacke/athena
  • ricunnin/athena
  • gfrattar/athena
  • agerwin/athena
  • asoflau/athena
  • gwilliam/athena
  • bdixit/masking-strip-modules
  • jfeng2/athena
  • bscheuer/athena
  • ksudo/athena
  • rhiguchi/athena
  • gtolkach/athena
  • etoyoda/athena
  • gaofeng/athena
  • hart/athena
  • svanstro/athena
  • tnakagaw/athena
  • kosuzuki/athena
  • amakita/athena
  • rmizuhik/athena
  • vaustrup/athena
  • maoki/athena
  • miyamada/athena
  • kkanke/athena
  • rishikaw/athena
  • dduda/athena
  • tpaschoa/athena
  • whopkins/athena
  • ferusso/athena
  • aagaard/athena
  • shudong/athena
  • anayaz/athena
  • evalient/athena
  • smweber/athena-run-3
  • zyan/athena-muon-calib
  • smweber/athena
  • dellacqu/athena
  • glagafon/project-nimber-1
  • evalient/athena-dnn-calculator
  • zyan/athena-muon-calib-stream
  • strom/athena-dms
  • jsallen/athena
  • brosser/athena
  • strom/athena
  • sbellman/athena
  • macretar/athena
  • skadir/athena-sadaf
  • leguo/athena
  • aowang/athena
  • glagafon/handi-project
  • wuxi/athena
  • ooncel/athena
  • syan/athena-syan
  • tygeorge/athena
  • hasun/athena
  • mnorfolk/athena
  • osotosan/athena
  • jhoya/athena
  • axgallen/athena-qualification-task
  • glagafon/handi-project-1
  • will/athena
  • schernau/athena
  • aborbely/athena
  • mmaroun/ravina-fork
  • karakawa/athena
  • axgallen/athena
  • taogawa/athena
  • seinfant/athena
  • romar/athena
  • ktariq/athena
  • dmankad/athena-gen
  • vlysenko/athena
  • tmlinare/athena
  • zuzak/athena
  • mahorstm/athena
  • dhagan/athena
  • agarabag/athena
  • ipolishc/athena
  • atishelm/athena
  • jolamber/athena
  • ibamwidh/athena
  • tizhang/athena
  • frfische/athena
  • ykhoulak/myathena
  • huayu/athena
  • jlue/athena-latest
  • dntounis/athena
  • yil/athena
  • chuanye/athena
  • xilin/athena
  • lderamo/athena
  • nkua-atlas/athena
  • tayoshid/athena
  • kifarman/athena
  • movincen/athena
  • dtruncal/athena
  • nischmit/athena
  • kazheng/athena-acts
  • mnowak/athena
  • dongyi/athena
  • steinber/athena-main
  • openc/athena
  • tdingley/athena
  • malvesca/athena
  • lcalic/athena
  • glagafon/dq-optimize
  • ekajomov/athena-fork-fix
  • hasegawa/athena
  • anfortma/athena
  • ladamczy/athena
  • yonoda/athena
  • mhufnage/athena
  • rqian/athena
  • alveltma/athena
  • alpleban/athena
  • mmaheshw/athena
  • jdavidso/athena
  • lsultana/obsolete_athena
  • edcritel/athena
  • lsultana/athena
  • pebaron/athena-leprem
  • bglik/athena
  • anstein/athena
  • anhodges/athena
  • gbird/athena
  • saparede/athena
  • mfurukaw/athena
  • sokkerma/athena
  • midandre/athena
  • fcurcio/athena
  • mvivasal/athena
  • mmlynars/athena-v-2
  • kyjones/athena
  • asbrooks/athena
  • mveen/athena
  • jmcgowan/athena
  • lboccard/athena
  • dmankad/athena
  • tburatov/athena
  • ctaybi/athena
  • tayoshid/athena-test
  • joroemer/athena
  • tmclachl/athena
  • ivyoung/athena
  • jodafons/athena
  • sanchezj/athena-2022
  • drasslof/athena
  • jiddon/athena
  • anburger/athena
  • kayu/athena
  • sdahbi/athena
  • ynarukaw/athena
  • sdemiran/athena
  • fwinkel/athena
  • izahir/athena
  • sanchezj/athena
  • apfleger/athena
  • jwkraus/athena
  • sidoti/athena
  • goblirsc/athena
  • rhaberle/athena
  • rvinasco/athena
  • mmoors/athena
  • jhowarth/athena
  • esimpson/athena
  • janders/athena
  • obut/athena
  • jchapman/athena
  • klleras/athena
  • mungo/athena
  • imaniati/athena
  • avallier/athena
  • jecouthu/athena
  • dtrischu/athena
  • dta/athena_old
  • fmontere/athena
  • misantan/athena
  • zalegria/athena
  • fhenry/athena
  • awharton/Athena
  • sfuenzal/athena
  • shaoguan/athena
  • zhaotong/athena
  • amelo/athena
  • acordeir/athena-ed
  • gdigrego/athena
  • peiyan/athena
  • caiy/athena
  • nbruscin/athena
  • pdougan/athena
  • mkholoda/athena
  • backes/athena
  • fkirfel/athena
  • tayoshid/athena-2024
  • bcervato/athena
  • kchu/athena
  • shpeng/athena-2
  • esampson/athena-idart
  • gfacini/athena
  • gmascare/athena
  • fwinkl2/athena
  • yvolkotr/athena
  • gmercado/athena
  • nharriso/athena
  • rhowen/athena
  • djlewis/athena
  • esampson/athena-idart-2
  • pibutti/athena
  • esampson/athena-otp
  • costanzo/athena
  • esampson/athena-june-otp
  • alpleban/athena-met
  • yuematsu/athena
  • yilin/athena
  • bmoser/athena
  • zhanhang/athena
  • wcastigl/athena
  • astefl/athena
  • ksahan/athena
  • bdong/athena
  • thitchin/athena
  • msasada/athena
  • lbarrade/athena
  • seth/athena
  • sosarkar/athena-again
  • zhangbo/athena
  • agheata/athena
  • mlyukova/athena
  • okolay/athena
  • nsurijr/athena
  • txu/athena
  • dbaronmo/athena
  • wema/athena
  • esampson/june-2-otp
  • eballabe/athena
  • damperia/athena-acts
  • vsasse/athena
  • martyniu/athena
  • acamplan/athena
  • bngair/me-tsig-athena
  • bhuth/athena
  • bngair/met-significance-r-22
  • menadeem/athena
  • ksakura/athena
  • atymchys/athena
  • vkost/athena
  • yanqiw/athena
  • linghua/athena
  • domatter/athena
  • arelycg/athena
  • skadir/athena
  • rhicks/athena
  • sgoswami/athena
  • mwessels/athena
  • juscerri/athena
  • sosarkar/athena
  • bdebjani/athena
  • nheatley/athena
  • beltran/athena
  • hshaddix/athena
  • ddicroce/athena
  • lwinkler/athena
  • dreikher/athena
  • emoon/athena
  • cleong/athena
  • girupnik/athena
  • fladias/athena
  • elham/athena
  • sdiefenb/athena-onnx-tutorial
  • dwilson/athena
  • mhabedan/athena
  • fivone/athena
  • haren/athena
  • mads/athena
  • nkrogh/athena
  • lsanfili/athena
  • scane/athena
  • kenakamu/athena
  • thart/athena
  • echerepa/athena
  • baer/athena
  • dcamarer/athena
  • dahumphr/athena
  • lifoster/athena
  • eskorda/athena
  • alancast/athena
  • glagafon/aaaathena
  • salopez/athena
  • haotianl/athena
  • glagafon/athena
  • ukhurshi/athena
  • rshibata/athena
  • lburke/athena
  • glagafon/glagafon-dq
  • delitez/athena
  • pizhang/athena
  • rvavrick/athena
  • therwig/athena
  • mwitkows/athena
  • htsoi/athena
  • casadop/athena
  • pachabri/athena
  • jaburles/athena
  • lcorazzi/athena
  • ezaya/athena
  • mmantina/athena
  • achamber/athena
  • hzhuang/athena
  • lmonaco/athena
  • gserenis/athena
  • rmole/athena
  • jkrupa/athena
  • semami/athena
  • mamirono/athena
  • fdattola/athena
  • rpozzi/athena
  • mfornasi/athena
  • belderto/athena
  • abesir/athena
  • uepstein/athena
  • jinglis/athena
  • cmavungu/athena
  • jlittle/athena
  • lopezzot/athena
  • lechols/athena
  • robouque/athena-20241115
  • htorre/athena
  • tneep/athena
  • jajohnso/athena
  • lbrown/athena
  • rmole/athena-personal-fork
  • wguerin/athena
  • fsiegert/athena
  • kfang/athena-fork-kyfang
  • epompapa/athena
  • wenjingw/athena
  • prmitra/athena
  • jackersc/athena
  • wasu/athena
  • ashirazi/athena
  • aslobodk/athena
  • toheintz/athena
  • nihartma/athena
  • kgrimm/athena-kgrimm
  • amoreira/athena
  • kdipetri/athena
  • goetz/athena-acts
  • gfazzino/athena
  • djuarezg/athena
  • yazhou/athena
  • falves/athena
  • alarnold/athena
  • wlai/athena
  • muschmid/athena
  • rohasan/athena
  • mdacunha/athena
  • mborodin/athena
  • asickles/athena
  • adsalvad/athena
  • ibenaoum/athena
  • novotnyp/athena
  • alecrhys/athena
  • zetao/athena
  • lvicenik/athena
  • christog/athena
  • mfarzali/athena
  • tflee/athena
  • llarson/athena
  • ehampshi/athena
  • kkazakov/athena
  • frcastig/athena
  • pusharma/athena
  • gpinheir/athena
  • exochell/my-athena
  • jusilva/athena
  • tomoya/athena-low-pt-muon-rec
  • mojeda/athena
  • vchabala/athena
  • jecifuen/athena
  • hshaddix/athena-hshaddix
  • jlieberm/athena
  • nsur/athena-lund
  • estahl/athena
  • chhultqu/athena
  • jlai/athena
  • yuxuanz/local-athena
  • misavic/athena
  • camccrac/athena
  • nshtokha/athena
  • sizumiya/athena
  • yukari/athena
  • pmourafr/athena
  • yanqiw/athena-acts-for-run-3-silicon-tracking
  • zhubacek/athena
  • rkavak/athena
  • micontre/athena
  • ssuravar/athena
  • zrokavec/athena
  • mfilipig/athena
  • fdejean/athena
  • beyeo/athena
  • gsalvi/athena
  • gipoddar/athena
  • mtancock/athena-2
  • orlandin/athena
  • heya/athena
  • vpires/athena-vasco
  • ndiederi/athena
  • treisch/athena
  • mnegrini/athena
  • tjayapra/athena
  • mowaris/athena
  • rbrener/athena
  • rjanusia/athena-trigger
  • yuxuanz/athena
  • sutuncay/athena
  • kfung/athena
  • ywng/athena
  • akraus/athena
  • hchoudha/athena
  • sjankovy/athena
  • stlin/athena
  • rosati/athena
  • boudreau/athena
  • biliu/athena
  • garbonaf/athena
  • sawyer/athena
  • bkamgama/athena
  • yshiraiw/athena
  • fballi/athena
  • rlazarid/athena
  • hadavand/athena
  • albojani/athena
  • ndiasper/athena
1609 results
Show changes
Showing
with 377 additions and 839 deletions
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef BeamPipeDetectorFactory_h
#define BeamPipeDetectorFactory_h 1
#ifndef BEAMPIPEGEOMODEL_BEAMPIPEDETECTORFACTORY_H
#define BEAMPIPEGEOMODEL_BEAMPIPEDETECTORFACTORY_H
#include "GeoModelKernel/GeoVDetectorFactory.h"
#include "GeoModelUtilities/GeoRef.h"
#include "BeamPipeGeoModel/BeamPipeDetectorManager.h"
#include "RDBAccessSvc/IRDBAccessSvc.h"
#include <string>
class StoreGateSvc;
class AbsMaterialManager;
class StoredMaterialManager;
class GeoShape;
class BeamPipeDetectorFactory : public GeoVDetectorFactory
class BeamPipeDetectorFactory final : public GeoVDetectorFactory
{
public:
......@@ -26,13 +27,13 @@ class BeamPipeDetectorFactory : public GeoVDetectorFactory
~BeamPipeDetectorFactory();
// Creation of geometry:
virtual void create(GeoPhysVol *world);
virtual void create(GeoPhysVol *world) override;
// Access to the results:
virtual const BeamPipeDetectorManager * getDetectorManager() const;
virtual const BeamPipeDetectorManager * getDetectorManager() const override;
// Set version Tag and Node
void setTagNode(std::string tag, std::string node);
void setTagNode(std::string tag, std::string node, std::string mode);
void addSections(GeoPhysVol* parent, int region);
......@@ -52,14 +53,15 @@ class BeamPipeDetectorFactory : public GeoVDetectorFactory
class EnvelopeShapes {
public:
EnvelopeShapes() : centralShape(0), fwdShape(0) {}
GeoShape * centralShape;
GeoShape * fwdShape;
EnvelopeShapes() : centralShape(0), fwdShape(0), bpShape(0) {}
GeoRef<GeoShape> centralShape;
GeoRef<GeoShape> fwdShape;
GeoRef<GeoShape> bpShape;
};
EnvelopeShapes makeEnvelope(IRDBRecordset_ptr bpipeEnvelope);
EnvelopeShapes makeEnvelopeOld(IRDBRecordset_ptr atlasMother);
EnvelopeShapes makeEnvelope(const IRDBRecordset_ptr& bpipeEnvelope);
EnvelopeShapes makeEnvelopeOld(const IRDBRecordset_ptr& atlasMother);
// Illegal operations:
......@@ -69,12 +71,13 @@ class BeamPipeDetectorFactory : public GeoVDetectorFactory
// The manager:
BeamPipeDetectorManager * m_detectorManager;
const AbsMaterialManager * m_materialManager;
StoredMaterialManager * m_materialManager;
StoreGateSvc * m_detectorStore;
IRDBAccessSvc * m_access;
std::string m_versionTag;
std::string m_versionNode;
std::string m_mode;
double m_centralRegionZMax;
};
......
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
*/
#include "BeamPipeDetectorFactory_Lite.h"
#include "GeoModelKernel/GeoVolumeCursor.h"
#include "GeoModelKernel/GeoPhysVol.h"
#include "GeoModelKernel/GeoDefinitions.h"
BeamPipeDetectorFactory_Lite::BeamPipeDetectorFactory_Lite()
:m_manager(nullptr)
{}
void BeamPipeDetectorFactory_Lite::create(GeoPhysVol *world)
{
m_manager=new BeamPipeDetectorManager();
GeoVolumeCursor cursor(world);
while (!cursor.atEnd()) {
if (cursor.getName()=="BeamPipe") m_manager->addTreeTop(cursor.getVolume());
cursor.next();
}
}
const BeamPipeDetectorManager * BeamPipeDetectorFactory_Lite::getDetectorManager() const
{
return m_manager;
}
/*
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef BEAMPIPEGEOMODEL_BEAMPIPEDETECTORFACTORY_LITE_H
#define BEAMPIPEGEOMODEL_BEAMPIPEDETECTORFACTORY_LITE_H
#include "GeoModelKernel/GeoVDetectorFactory.h"
#include "BeamPipeGeoModel/BeamPipeDetectorManager.h"
class BeamPipeDetectorFactory_Lite final : public GeoVDetectorFactory
{
public:
// Constructor:
BeamPipeDetectorFactory_Lite();
// Creation of geometry:
virtual void create(GeoPhysVol *world) override;
// 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:
// The manager:
BeamPipeDetectorManager* m_manager{nullptr};
};
// Class BeamPipeDetectorFactory_Lite
#endif
/*
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 "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(PVLink vol)
void BeamPipeDetectorManager::addTreeTop(const PVConstLink& vol)
{
vol->ref();
m_volume.push_back(vol);
}
......
/*
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 "BeamPipeDetectorTool.h"
#include "BeamPipeDetectorFactory.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"
......@@ -18,86 +18,67 @@
#include "AthenaKernel/ClassID_traits.h"
#include "SGTools/DataProxy.h"
BeamPipeDetectorTool::BeamPipeDetectorTool( const std::string& type,
const std::string& name,
const IInterface* parent ):
GeoModelTool(type,name,parent),
m_manager(0)
{
}
#include "GeoModelKernel/GeoVolumeCursor.h"
BeamPipeDetectorTool::~BeamPipeDetectorTool()
BeamPipeDetectorTool::BeamPipeDetectorTool( const std::string& type,
const std::string& name,
const IInterface* parent ):
GeoModelTool(type,name,parent)
{
}
BeamPipeDetectorTool::~BeamPipeDetectorTool() = default;
StatusCode BeamPipeDetectorTool::create()
{
MsgStream log(msgSvc(), name());
log << MSG::INFO << "Building Beam Pipe" << endmsg;
StatusCode BeamPipeDetectorTool::create()
{
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();
IRDBAccessSvc* raccess = 0;
sc = service("RDBAccessSvc",raccess);
if (sc.isFailure()) {
log << MSG::FATAL << "Could not locate RDBAccessSvc" << endmsg;
return StatusCode::FAILURE;
}
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 = raccess->getChildTag("BeamPipe", atlasVersion,versionNode);
log << MSG::DEBUG << "Beampipe Version: " << beampipeVersionTag << endmsg;
beampipeVersionTag = accessSvc->getChildTag("BeamPipe", atlasVersion,versionNode);
ATH_MSG_DEBUG("Beampipe Version: " << beampipeVersionTag);
if (beampipeVersionTag.empty()) {
log << MSG::INFO << "No BeamPipe Version. Beam pipe will not be built." << endmsg;
} else {
BeamPipeDetectorFactory theBeamPipeFactory(detStore().operator->(),raccess);
theBeamPipeFactory.setTagNode(atlasVersion,versionNode);
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);
m_manager = theBeamPipeFactory.getDetectorManager();
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);
}
}
}
if (m_manager) {
theExpt->addManager(m_manager);
ATH_CHECK(detStore()->record(m_manager,m_manager->getName()));
return StatusCode::SUCCESS;
}
return StatusCode::FAILURE;
}
......@@ -106,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-2018 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;
class BeamPipeDetectorTool : public GeoModelTool
class BeamPipeDetectorTool final : public GeoModelTool
{
public:
......@@ -20,8 +20,13 @@ class BeamPipeDetectorTool : public GeoModelTool
virtual StatusCode create() override final;
virtual StatusCode clear() override final;
private:
const BeamPipeDetectorManager* m_manager;
const BeamPipeDetectorManager* m_manager{nullptr};
StringProperty m_mode{this
, "BeamPipeMode"
, "BeamPipe"
, "Two modes: 'BeamPipe' default, 'AssemblyBeamPipe' activates implementation based on assembly volume"};
};
#endif
#!/usr/bin/env python
"""Run tests on BeamPipeGeoModel configuration
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
"""
if __name__ == "__main__":
from AthenaCommon.Configurable import Configurable
Configurable.configurableRun3Behavior=1
from AthenaConfiguration.AllConfigFlags import ConfigFlags
from AthenaConfiguration.AllConfigFlags import initConfigFlags
from AthenaConfiguration.TestDefaults import defaultTestFiles
ConfigFlags.Input.Files = defaultTestFiles.HITS
ConfigFlags.Detector.SimulatePixel = False
ConfigFlags.Detector.SimulateSCT = False
ConfigFlags.Detector.SimulateTRT = False
ConfigFlags.GeoModel.Align.Dynamic = False
ConfigFlags.lock()
flags = initConfigFlags()
flags.Input.Files = defaultTestFiles.HITS_RUN2
flags.GeoModel.Align.Dynamic = False
flags.lock()
from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
from BeamPipeGeoModel.BeamPipeGMConfig import BeamPipeGeometryCfg
acc = BeamPipeGeometryCfg(ConfigFlags)
f=open('BeamPipeGeometryCfg.pkl','w')
acc.store(f)
f.close()
acc = BeamPipeGeometryCfg(flags)
with open('BeamPipeGeometryCfg.pkl', 'wb') as f:
acc.store(f)
AtlasGeometryCommon/CavernInfraGeoModel
################################################################################
# Package: CavernInfraGeoModel
################################################################################
# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
# Declare the package name:
atlas_subdir( CavernInfraGeoModel )
# Declare the package's dependencies:
atlas_depends_on_subdirs( PUBLIC
Control/AthenaKernel
Database/RDBAccessSvc
DetectorDescription/GeoModel/GeoModelUtilities
PRIVATE
Control/StoreGate
DetectorDescription/GeoModel/GeoModelInterfaces
GaudiKernel )
# External dependencies:
find_package( Boost COMPONENTS filesystem thread system )
find_package( Eigen )
find_package( CORAL COMPONENTS CoralBase CoralKernel RelationalAccess )
find_package( GeoModel )
find_package( GeoModel COMPONENTS GeoModelKernel )
# Component(s) in the package:
atlas_add_component( CavernInfraGeoModel
src/*.cxx
src/components/*.cxx
INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${CORAL_INCLUDE_DIRS}
LINK_LIBRARIES ${Boost_LIBRARIES} ${CORAL_LIBRARIES} ${GEOMODEL_LIBRARIES} GeoModelUtilities StoreGateLib SGtests GaudiKernel )
# Install files from the package:
atlas_install_headers( CavernInfraGeoModel )
INCLUDE_DIRS ${GEOMODEL_INCLUDE_DIRS}
LINK_LIBRARIES ${GEOMODEL_LIBRARIES} AthenaKernel GaudiKernel GeoModelInterfaces GeoModelUtilities RDBAccessSvcLib StoreGateLib )
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef CavernInfraDetectorManager_h
#define CavernInfraDetectorManager_h 1
#include "GeoModelKernel/GeoVPhysVol.h"
#include "GeoModelKernel/GeoVDetectorManager.h"
#include <vector>
class CavernInfraDetectorManager : public GeoVDetectorManager
{
public:
// Constructor
CavernInfraDetectorManager();
// Destructor
~CavernInfraDetectorManager();
// Access to raw geometry:
virtual unsigned int getNumTreeTops() const;
virtual PVConstLink getTreeTop(unsigned int i) const;
void addTreeTop(PVLink); // Add a Tree top:
private:
const CavernInfraDetectorManager & operator=(const CavernInfraDetectorManager &right);
CavernInfraDetectorManager(const CavernInfraDetectorManager &right);
// Tree Tops
std::vector<PVLink> m_treeTops;
};
#ifndef GAUDI_NEUTRAL
#include "AthenaKernel/CLASS_DEF.h"
CLASS_DEF(CavernInfraDetectorManager, 1500000300, 1)
#endif
#endif
/*
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 "CavernInfraDetectorFactory.h"
#include "GeoModelInterfaces/AbsMaterialManager.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"
......@@ -22,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();
const StoredMaterialManager* materialManager = nullptr;
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");
......@@ -57,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--------------------------------
......@@ -72,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;
......@@ -86,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
......@@ -98,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);
......@@ -108,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);
......@@ -188,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;
......@@ -284,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);
......@@ -348,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"];
......@@ -369,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) ).
......@@ -401,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))).
......@@ -427,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
......@@ -446,7 +441,8 @@ const CavernInfraDetectorManager * CavernInfraDetectorFactory::getDetectorManage
return m_detectorManager;
}
void CavernInfraDetectorFactory::setTagNode(std::string tag, std::string node)
void CavernInfraDetectorFactory::setTagNode(const std::string& tag,
const std::string& node)
{
m_versionTag = tag;
m_versionNode = node;
......
/*
Copyright (C) 2002-2018 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 "CavernInfraDetectorManager.h"
#include "GeoModelKernel/GeoVDetectorFactory.h"
#include "CavernInfraGeoModel/CavernInfraDetectorManager.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(std::string tag, std::string 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-2018 CERN for the benefit of the ATLAS collaboration
*/
#include "CavernInfraDetectorFactory01.h"
#include "GeoModelInterfaces/AbsMaterialManager.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();
const 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(std::string tag, std::string node)
{
m_versionTag = tag;
m_versionNode = node;
}
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
*/
#ifndef CavernInfraDetectorFactory01_h
#define CavernInfraDetectorFactory01_h 1
#include "GeoModelKernel/GeoVDetectorFactory.h"
#include "CavernInfraGeoModel/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(std::string tag, 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-2018 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#include "CavernInfraGeoModel/CavernInfraDetectorManager.h"
#include "CavernInfraDetectorManager.h"
CavernInfraDetectorManager::CavernInfraDetectorManager()
{
......@@ -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-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef CAVERNINFRAGEOMODEL_CAVERNINFRADETECTORMANAGER_H
#define CAVERNINFRAGEOMODEL_CAVERNINFRADETECTORMANAGER_H
#include "GeoModelKernel/GeoVPhysVol.h"
#include "GeoModelKernel/GeoVDetectorManager.h"
#include <vector>
class CavernInfraDetectorManager : public GeoVDetectorManager
{
public:
CavernInfraDetectorManager();
const CavernInfraDetectorManager & operator=(const CavernInfraDetectorManager &right) = delete;
CavernInfraDetectorManager(const CavernInfraDetectorManager &right) = delete;
~CavernInfraDetectorManager();
// Access to raw geometry:
virtual unsigned int getNumTreeTops() const override;
virtual PVConstLink getTreeTop(unsigned int i) const override;
void addTreeTop(const PVLink&); // Add a Tree top:
private:
// Tree Tops
std::vector<PVLink> m_treeTops;
};
#ifndef GAUDI_NEUTRAL
#include "AthenaKernel/CLASS_DEF.h"
CLASS_DEF(CavernInfraDetectorManager, 1500000300, 1)
#endif
#endif
/*
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 "CavernInfraDetectorTool.h"
#include "CavernInfraDetectorFactory.h"
#include "CavernInfraDetectorFactory01.h"
#include "CavernInfraGeoModel/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.find("CavernInfra")==0) {
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();
......@@ -81,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;
}
......@@ -101,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-2018 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 : 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
# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
# Declare the package name.
atlas_subdir( CrackRegionGeoModel )
find_package( GeoModel COMPONENTS GeoModelKernel GeoModelDBManager GeoModelRead)
# Component(s) in the package.
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 )
AtlasGeometryCommon/CrackRegionGeoModel
\ No newline at end of file