Skip to content
Snippets Groups Projects

Compare revisions

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

Source

Select target project
No results found

Target

Select target project
  • emsmith/athena
  • dzubov/athena
  • pscholer/athena
  • akvam/athena
  • flasagni/athena
  • hartman/athena
  • alux/athena
  • berenice/athena
  • mschott/athena
  • mgenest/athena
  • pbalek/athena
  • dsalvato/athena
  • korcyl/athena
  • tlyubush/athena
  • lyubushk/athena
  • gstark/athena
  • yharris/athena
  • lmonsoni/athena
  • nagano/athena
  • lcorpe/athena
  • lshi/athena
  • rrosten/athena
  • ytsujika/athena
  • tiledemo/athena
  • abagdato/athena
  • fparodi/athena
  • tmoxter/athena
  • lheinric/athena
  • milu/athena
  • pyin/athena
  • juesseiv/athena-celeritas
  • mmlynari/athena
  • matthier/athena
  • jsandesa/athena
  • borisov/athena
  • zchubini/athena
  • mpenzin/athena
  • mcorradi/athena
  • okovanda/athena
  • meevans/athena
  • isiral/athena
  • haa2mu2tau/athena
  • nkvu/athena
  • andre/athena
  • ebakos/athena
  • gwmyers/athena
  • lportale/athena
  • vasothil/athena
  • bwinter/athena
  • brle/athena
  • camacho/athena
  • icioara/athena
  • mcentonz/athena
  • quli/athena
  • mikhail/athena
  • begilber/athena
  • gartoni/athena
  • abkahn/athena
  • mbasso/athena
  • pagacova/athena
  • dgancarc/athena
  • stefania/athena
  • gmarchio/athena
  • jolsson/athena
  • atlasdqm/athena
  • chuanshu/athena
  • yygao/athena
  • shimoji/athena
  • zhenw/athena
  • jojamies/athena
  • keli/athena
  • cnass/athena
  • beckerov/athena
  • passaggi/athena
  • marvin/athena
  • hdf5-utils/athena
  • pberta/athena
  • aaboulho/athena
  • acrobert/athena
  • ranjitn/athena
  • cescobar/athena
  • ktodome/athena
  • kastanas/athena
  • huirun/athena
  • atrzupek/athena
  • tzorbas/athena
  • lfountas/athena
  • ccarrion/athena
  • aambler/athena
  • derendar/athena
  • britzger/athena
  • hanl/athena
  • epender/athena
  • gipezzul/athena
  • mmineev/athena
  • robertma/athena
  • gnn4itkteam/athena
  • phkoenig/athena
  • pleier/athena
  • nguseyno/athena
  • nekumari/athena
  • avasyuko/athena
  • gtateno/athena
  • pavel/athena
  • reznicek/athena
  • aburke/athena
  • jiling/athena
  • jcordeir/athena
  • herrmant/athena
  • lmcelhin/athena
  • xuh/athena
  • averbyts/athena
  • tnommens/athena
  • ewallin/athena
  • tvazquez/athena
  • shbansal/athena
  • gascott/athena
  • yuhui/athena
  • lserkin/athena
  • ccaminch/athena
  • corentin/athena
  • miochoa/athena
  • berkeleylab/CharmPhysics/athena
  • cdiez/athena
  • cpollard/athena
  • hfox/athena
  • madurano/athena_gittutorial
  • msykora/athena
  • ckirfel/athena
  • jakoubek/athena
  • calfayan/athena
  • kjohns/athena
  • atlas/athena
  • toshi/athena
  • dguest/athena
  • fwinkl/athena
  • wlampl/athena
  • aundrus/athena
  • akraszna/athena
  • karolos/athena
  • jmontejo/athena
  • damazio/athena
  • okuprash/athena
  • smh/athena
  • turra/athena
  • tdado/athena
  • tadej/athena
  • abuckley/athena
  • jmasik/athena
  • pjacka/athena
  • tamartin/athena
  • tbold/athena
  • mhodgkin/athena
  • nstyles/athena
  • mark/athena
  • rhauser/athena
  • phwindis/athena
  • arnaez/athena
  • baines/athena
  • mmuskinj/athena
  • psommer/athena
  • bwynne/athena
  • tstreble/athena
  • ATLAS-EGamma/athena
  • yuxu/athena
  • toyamaza/athena
  • gemmeren/athena
  • ssnyder/athena
  • wwalko/athena
  • emoyse/athena
  • pgadow/athena
  • solodkov/athena
  • rbielski/athena
  • dcasper/athena
  • mrybar/athena
  • ychiu/athena
  • christos/athena
  • yoyamagu/athena
  • rbianchi/athena
  • graemes/athena
  • sshaw/athena
  • shlomit/athena
  • hartj/athena
  • jcatmore/athena
  • ebuschma/athena
  • gunal/athena
  • ewelina/athena
  • ligang/athena
  • sroe/athena
  • lfiorini/athena
  • longjon/athena
  • jichen/athena
  • nikiforo/athena
  • fpastore/athena
  • harkusha/athena
  • mvozak/athena
  • leggett/athena
  • martindl/athena
  • almaloiz/athena
  • tlari/athena
  • susinha/athena
  • filthaut/athena
  • cchan/athena
  • peter/athena
  • cvarni/athena
  • wleight/athena
  • nwarrack/athena
  • cshimmin/athena
  • mihuebne/athena
  • jsallen/athena-high-pt-ms-jets
  • dkar/athena
  • chays/athena
  • dtovey/athena
  • sgeorge/athena
  • yafu/athena
  • mgignac/athena
  • alfroch/athena
  • mstamenk/athena
  • okepka/athena
  • tkohno/athena
  • janovak/athena
  • wiedenat/athena
  • khoo/athena
  • maklein/athena
  • cohm/athena
  • omajersk/athena
  • dbakshig/athena
  • fernando/athena
  • tmkrtchy/athena
  • gingrich/athena
  • schaarsc/athena
  • ponyisi/athena
  • ravinab/athena
  • scheiric/athena
  • pleskot/athena
  • jobalz/athena
  • ebergeas/athena
  • ekasimi/athena
  • afaulkne/athena
  • ekuwertz/athena
  • xai/athena
  • merrenst/athena
  • goetz/athena
  • dpopov/athena
  • achishol/athena
  • alaurier/athena
  • mtoscani/athena
  • krumnack/athena
  • astruebi/athena
  • mdanning/athena
  • egramsta/athena
  • hye/athena
  • clseitz/athena
  • bmindur/athena
  • efilmer/athena
  • jpanduro/athena
  • ssarikay/athena
  • hyamauch/athena
  • ppostola/athena
  • shanisch/athena
  • ncalace/athena
  • aad/athena
  • gpanizzo/athena
  • rcoelhol/athena
  • tupham/athena
  • stelzer/athena
  • ssottoco/athena
  • turnerm/athena
  • sutt/athena
  • nkrengel/athena
  • rkopelia/athena
  • cmcginn/athena
  • bernius/athena
  • tsulaia/athena
  • vcairo/athena
  • stsuno/athena
  • yunju/athena
  • ldc/athena
  • jmacdona/athena
  • mbandier/athena
  • mehlhase/athena
  • jdandoy/athena
  • jufische/athena
  • dzanzi/athena
  • kzoch/athena
  • nasbah/athena
  • kwhalen/athena
  • bmorgan/athena
  • msaimper/athena
  • amete/athena
  • rcarney/athena
  • williams/athena
  • shhirose/athena
  • cheidegg/athena
  • heng/athena
  • hhibi/athena
  • kkohler/athena
  • coccaro/athena
  • loch/athena
  • cdeutsch/athena
  • ynoguchi/athena
  • campanel/athena
  • wbalunas/athena
  • hoide/athena
  • xju/athena
  • yuchou/athena
  • nova/athena
  • todorova/athena
  • sjiggins/athena
  • bgokturk/athena
  • aytul/athena
  • hrussell/athena
  • lidiaz/athena
  • jbiswal/athena
  • kegraham/athena
  • guerrero/athena
  • kpachal/athena
  • bouhova/athena
  • alwang/athena
  • mverissi/athena
  • dhayden/athena
  • alopezso/athena
  • mvessell/athena
  • ssantpur/athena
  • kenelson/athena
  • upatel/athena
  • mvanadia/athena
  • omeshkov/athena
  • soumya/athena
  • ruyuan/athena
  • fmeloni/athena
  • igrabows/athena
  • tvarol/athena
  • dshope/athena
  • korona/athena
  • mhank/athena
  • cowagner/athena
  • tursom/athena
  • anperrev/athena
  • eramakot/athena
  • dbogavac/athena
  • tnobe/athena
  • fsforza/athena
  • derue/athena
  • koffas/athena
  • fgiuli/athena
  • angianni/athena
  • ballbroo/athena
  • diehl/athena
  • chinderk/athena
  • myexley/athena
  • davidek/athena
  • falonso/athena
  • tphamleh/athena
  • ekajomov/athena-general
  • sarbiolv/athena
  • hansenph/athena
  • mfujimot/athena
  • salvator/athena
  • hirose/athena
  • masato/athena
  • jhaley/athena
  • stapiaar/athena
  • jmendes/athena
  • nwenke/athena
  • stavrop/athena
  • ffabbri/athena
  • tpelzer/athena
  • agbet/athena
  • gia/athena
  • hmildner/athena
  • dbabal/athena
  • juesseiv/athena
  • cdelitzs/athena
  • kkrizka/athena
  • temoskal/athena
  • dwallace/athena
  • eschanet/athena
  • asonay/athena
  • ckitsaki/athena
  • iaizenbe/athena
  • lferencz/athena
  • czhou/athena
  • pmeiring/athena
  • jiawei/athena
  • mromano/athena
  • rustem/athena
  • sswatman/athena
  • miqueits/athena
  • jteoh/athena
  • liberato/athena
  • jbeirer/athena
  • nielsenj/athena
  • wachan/athena
  • ranovotn/athena
  • elmsheus/athena
  • asquith/athena
  • nicholas/athena
  • markowen/athena
  • eparrish/athena
  • fuhe/athena
  • dakoch/athena
  • esoldato/athena
  • mhance/athena
  • aranzazu/athena
  • ndegroot/athena
  • lihan/athena
  • asoukhar/athena
  • jkempste/athena
  • aporeba/athena
  • tjunkerm/athena
  • ginaciog/athena
  • verducci/athena
  • martis/athena
  • sschramm/athena
  • mdelmast/athena
  • mswiatlo/athena
  • anmrodri/athena
  • pliu/athena
  • bcarlson/athena
  • ssaha/athena
  • gabarone/athena
  • fastcalosim_test/athena
  • scamarda/athena
  • mxia/athena
  • lstocker/athena
  • guindon/athena
  • rlongo/athena
  • amoussa/athena
  • conde/athena
  • mdonasci/athena
  • chelling/athena
  • mmittal/athena
  • ffollega/athena
  • gialas/athena
  • fcostanz/athena
  • shion/athena
  • hmaguire/athena
  • sschmitt/athena
  • sberlend/athena
  • acts/athena
  • cgutscho/athena
  • zsoumaim/athena
  • nifomin/athena
  • eriefel/athena
  • evarnes/athena
  • dwilbern/athena
  • laforge/athena
  • guescini/athena
  • jkremer/athena
  • susy-hackers/athena
  • llorente/athena
  • akotsoke/athena
  • haozturk/athena
  • kkoeneke/athena
  • istin/athena
  • rpoggi/athena
  • fizisist/athena
  • acanesse/athena
  • fengyu/athena
  • rkarnam/athena
  • cmerlass/athena
  • chenlian/athena
  • ysmirnov/athena_old
  • navarrjo/athena
  • ivivarel/athena
  • bulekov/athena
  • amulski/athena
  • pkramer/athena
  • vcavalie/athena
  • sanchevi/athena
  • yanlin/athena
  • restevam/athena
  • sefernan/athena
  • bauerpa/athena
  • smwang/athena
  • thsjurse/athena
  • mmlynars/athena
  • iyeletsk/athena
  • mmazza/athena
  • jgonski/athena
  • itrandaf/athena
  • almgadm/athena
  • csebasti/athena
  • wobisch/athena
  • jhinds/athena
  • mwielers/athena
  • mtchijov/athena
  • tiyang/athena
  • lapereir/athena
  • lmiller/athena
  • emmat/athena
  • lucam/athena
  • kciesla/athena
  • aleopold/athena
  • zuysal/athena
  • pekman/athena
  • rbalasub/athena
  • somadutt/athena
  • masaito/athena
  • wmccorma/athena
  • kkreul/athena
  • salderwe/athena
  • jstupak/athena
  • ycoadou/athena
  • ilongari/athena
  • simmons/athena
  • adye/athena
  • wtaylor/athena
  • pinamont/athena
  • ssahin/athena
  • jzeng/athena
  • kbelobor/athena
  • aoneill/athena
  • dmaximov/athena
  • gcallea/athena
  • kghorban/athena
  • fbartels/athena
  • cschiavi/athena
  • ljeanty/athena
  • kasai/athena
  • mcfayden/athena
  • scarra/athena
  • jraine/athena
  • brottler/athena
  • ecarlson/athena
  • aelmouss/athena
  • rozeny/athena
  • nbelyaev/athena
  • khanov/athena
  • abandyop/athena
  • gotero/athena
  • joheinri/athena
  • rebeca/athena
  • aohatl/athena
  • doglioni/athena
  • alaperto/athena
  • bhonan/athena
  • bigliett/athena
  • amarzin/athena
  • rgarg/athena
  • pmoskvit/athena
  • dpudzha/athena
  • paulama/athena
  • mtesta/athena
  • begalli/athena
  • yajun/athena
  • mpokidov/athena
  • jajimene/athena
  • atlidali/athena
  • lbozianu/athena
  • vcroft/athena
  • torrence/athena
  • demelian/athena
  • wprzygod/athena
  • sgalantz/athena
  • barak/athena
  • hacooke/athena
  • roward/athena
  • tofitsch/athena
  • salnikov/athena
  • atsirigo/athena
  • csander/athena
  • amoroso/athena
  • elrossi/athena
  • mmiralle/athena
  • alory/athena
  • ozaplati/athena
  • jsabater/athena
  • jdevivi/athena
  • pottgen/athena
  • pbokan/athena
  • ymino/athena
  • xchen/athena
  • klin/athena
  • trinn/athena
  • xiaoning/athena
  • ruth/athena
  • apetukho/athena
  • cappelt/athena
  • nishu/athena
  • paramon/athena
  • ratkin/athena
  • nelsonc/athena
  • juhofer/athena
  • bleban/athena
  • dpizzi/athena
  • ztarem/athena
  • enarayan/athena
  • exot-27/athena
  • acassim/athena
  • bburghgr/athena
  • qhu/athena
  • sampson/athena
  • mmarjano/athena
  • pagessin/athena
  • mkrivos/athena
  • ychow/athena
  • nviauxma/athena
  • hessey/athena
  • watsona/athena
  • ibordule/athena
  • LichtenbergGroup/athena
  • wfawcett/athena
  • jreich/athena
  • othielma/athena
  • jdegens/athena
  • hasada/athena
  • perj/athena
  • mleblanc/athena
  • ztao/athena
  • sridouan/athena
  • alainb/athena
  • wgeorge/athena
  • pmendesa/athena
  • kristin/athena
  • xiaohu/athena
  • ludovica/athena
  • bachacou/athena
  • yake/athena
  • yama/athena
  • ssu/athena
  • jlsmith/athena
  • angerami/athena
  • rnayak/athena
  • ktsuri/athena
  • musafdar/athena
  • pebaron/athena-weights
  • jezequel/athena
  • hschwart/athena
  • mproffit/athena
  • amendesj/athena
  • asalzbur/athena
  • csamoila/athena
  • gproto/athena
  • lhelary/athena
  • rerrabai/athena
  • malgren/athena
  • tiany/athena
  • mprincip/athena
  • spolacek/athena
  • bmondal/athena
  • lbeemste/athena
  • grabanal/athena
  • aczirkos/athena
  • kyamaguc/athena
  • asantra/athena
  • tboeckh/athena
  • jreidels/athena
  • silvinha/athena
  • holau/athena
  • mdhlamin/athena
  • jroloff/athena
  • slawlor/athena
  • bozek/athena
  • lkrauth/athena
  • emily/athena
  • tdiasdov/athena
  • carlod/athena
  • iramirez/athena
  • mtian/athena
  • bbrueers/athena
  • mgrabois/athena
  • bcole/athena
  • ecelebi/athena
  • idinu/athena
  • dhirsch/athena
  • oducu/athena
  • roishi/athena
  • jjwilkin/athena
  • hmoyanog/athena-4-mr
  • ygo/athena
  • yuanchan/athena
  • exochell/athena
  • ggustavi/athena
  • diwillia/athena
  • cgarner/athena
  • changqia/athena
  • sbiryuko/athena
  • skorn/athena
  • scalvet/athena
  • honguyen/athena
  • jwspence/athena
  • calpigia/athena
  • yangx/athena
  • jizamora/athena
  • atsiamis/athena
  • adimitri/athena
  • rysawada/athena
  • cmarcon/athena
  • kpetukho/athena
  • dhangal/athena
  • atlidbs/athena
  • iene/athena
  • tbisanz/athena
  • tqiu/athena
  • athaler/athena
  • jspah/athena
  • jkretz/athena
  • dopasqua/athena
  • jcardena/athena
  • tzenis/athena
  • hzuchen/athena
  • lveloce/athena
  • ryamaguc/athena
  • maliev/athena
  • oshukrun/athena
  • fdelrio/athena
  • mbiros/athena
  • mumohdso/athena2
  • tsano/athena
  • iwang/athena
  • sagara17/athena
  • okumura/athena
  • dmunozpe/athena
  • mumohdso/athena
  • arennie/athena
  • valentem/athena
  • rhayes/athena
  • koshimiz/athena
  • atate/athena
  • evguillo/athena
  • dossantn/athena
  • zhijie/athena
  • caforio/athena
  • zearnsha/athena
  • bnachman/athena
  • maly/athena
  • suyounas/athena
  • hlin/athena
  • yuzhan/athena
  • rjoshi/athena
  • machitis/athena
  • lunedic/athena
  • mtost/athena
  • lvannoli/athena
  • crougier/athena
  • mimarine/athena
  • thompson/athena
  • ndebiase/athena
  • omezhens/athena
  • jonierma/athena
  • dounwuch/athena
  • nkakati/athena
  • saclawso/athena
  • cprat/athena
  • echeu/athena
  • hhanif/athena
  • martinpa/athena
  • mischott/athena
  • sahinsoy/athena
  • csauer/athena
  • jodamp/athena
  • tiknight/athena
  • inaryshk/athena
  • wendlanb/athena
  • knikolop/athena
  • fedin/athena
  • xchu/athena
  • lkeszegh/athena
  • angrigor/athena
  • adik/athena
  • jaoliver/athena
  • lbaltes/athena
  • pbellos/athena
  • idrivask/athena
  • aikoulou/athena
  • echeremu/athena
  • eschopf/athena
  • ntamir/athena
  • sadykov/athena
  • ignesi/athena
  • algilber/athena
  • haweber/athena
  • sgurdasa/athena
  • pamachad/athena
  • pyanezca/athena
  • hiito/athena
  • tteixeir/athena
  • pbhattar/athena
  • bsaifudd/athena
  • tavandaa/athena
  • mdrozdov/athena
  • veellajo/athena
  • wolter/athena
  • nheatley/athena
  • fsili/athena
  • fdibello/athena
  • dparedes/athena
  • hsimpson/athena
  • mzhai/athena
  • minaenko/athena
  • mrenda/athena
  • zyan/athena
  • emmarsha/athena
  • chchau/athena
  • zhangr/athena
  • jburzyns/athena
  • rkusters/athena
  • edweik/athena
  • phkenned/athena
  • zmarshal/athena
  • slai/athena
  • awilhahn/athena
  • agaa/athena
  • javanden/athena
  • leevans/athena
  • zfeng/athena
  • llaatu/athena
  • stsigari/athena
  • kkrowpma/athena
  • srdas/athena
  • adonofri/athena
  • zifeng/athena
  • metsai/athena
  • atropina/athena
  • atlaspmb/athena
  • cleonido/athena
  • drousso/athena
  • yuanda/athena
  • seggebre/athena
  • mnoury/athena
  • ademaria/athena
  • arombola/athena
  • ijuarezr/athena
  • kchoi/athena
  • dgillber/athena
  • saktas/athena
  • axiong/athena
  • eyamashi/athena
  • zang/athena
  • matakagi/athena
  • amdesai/athena
  • nlopezca/athena
  • qibin/athena
  • fbendebb/athena
  • berkeleylab/lowmutracking/athena
  • acanbay/athena
  • tbuanes/athena
  • bshresth/athena
  • klassen/athena
  • egodden/athena
  • jferrand/athena
  • cbuitrag/athena
  • otheiner/athena-official
  • hpotti/athena
  • hawatson/athena
  • mfarring/athena
  • vtudorac/athena
  • chonghao/athena
  • parodi/athena
  • dzengerj/athena
  • bballard/athena
  • knakkali/athena
  • lmontana/athena
  • zhuyi/athena
  • buboehm/athena
  • dcieri/athena
  • cimcp/athena
  • adaribay/athena
  • weixi/athena
  • cantel/athena
  • asansar/athena
  • iliadis/athena
  • kbenkend/athena
  • duperrin/athena
  • jburr/athena
  • frenner/athena
  • isotarri/athena
  • dkoeck/athena
  • mfewell/athena
  • eegidiop/athena
  • bstanisl/athena
  • blumen/athena
  • czodrows/athena
  • yulei/athena
  • olangrek/athena
  • smitani/athena
  • alsala/athena
  • clantz/athena
  • miholzbo/athena
  • amincer/athena
  • gshatri/athena
  • jmharris/athena
  • hpang/athena
  • gripelli/athena
  • jgargan/athena
  • ewatton/athena
  • otheiner/athena
  • mleigh/athena
  • tizuo/athena
  • rushioda/athena
  • sfranche/athena
  • preselection-hackathon/athena
  • deniso/athena
  • mfernoux/athena
  • smeriano/athena
  • chandler/athena
  • viruelas/athena
  • bernardo/athena
  • jnitschk/athena
  • pebaron/athena-td
  • ksugizak/athena
  • anghosh/ef-anindya
  • yusano/athena
  • skaur/athena
  • davetisy/athena
  • hriani/athena
  • wsherman/athena
  • jgombas/athena
  • vcepaiti/athena
  • rtagami/athena
  • yochi/athena
  • sroygara/athena
  • apsallid/athena
  • yuanj/athena
  • pakontax/athena
  • chji/athena
  • agavrily/athena
  • dmclaugh/athena
  • abunka/athena
  • mcgensvc/athena
  • dmahon/athena
  • giagu/athena
  • almay/athena
  • cjmeyer/athena
  • yuwen/athena
  • qberthet/athena
  • mshapiro/athena
  • islazyk/athena
  • ekay/athena
  • mbarel/athena
  • dkobylia/athena
  • rdinardo/athena
  • baitbenc/athena
  • dakiyama/athena
  • glamprin/athena
  • osalin/athena
  • mlanzacb/athena
  • minlin/athena
  • cgrefe/athena
  • szambito/athena
  • hwilkens/athena
  • wsfreund/athena
  • kazhang/athena
  • pebaron/athena
  • enagy/athena
  • menke/athena
  • mduehrss/athena
  • beringer/athena
  • yyap/athena
  • mspalla/athena
  • fcalosim/athena
  • smobius/athena
  • schaffer/athena
  • tkharlam/athena
  • mavogel/athena
  • spagan/athena
  • carquin/athena
  • rateixei/athena
  • dportill/athena
  • okiverny/athena
  • jelena/athena
  • osunnebo/athena
  • desilva/athena
  • chhayes/athena
  • jwalder/athena
  • lmijovic/athena
  • junpei/athena
  • tilebeam/athena
  • satom/athena
  • sanmay/athena
  • jahreda/athena
  • kiabelin/athena
  • vtskhaya/athena
  • mcarnesa/athena
  • jedebevc/athena
  • jstark/athena
  • delsart/athena
  • krbjoerk/athena
  • cyoung/athena
  • silu/athena
  • jtanaka/athena
  • mtogawa/athena
  • yifany/athena
  • luxin/athena
  • haoran/athena
  • danning/athena
  • maslawin/athena
  • minghui/athena
  • faser/offline/athena
  • dcasperfaser/athena
  • beddall/athena
  • cfan/athena
  • kazheng/athena
  • almeidvi/athena
  • srettie/athena
  • vmartin/athena
  • mmontell/athena
  • kgupta/athena
  • beltran/athena-fork
  • sudha/athena
  • pajones/athena
  • ssinha/athena
  • lhenkelm/athena
  • anbaraja/athena
  • serodrig/athena
  • kkawade/athena
  • lgagnon/athena
  • dpanchal/athena
  • joana/athena
  • mtanasin/athena
  • amorenos/athena
  • jshahini/athena
  • chiodini/athena
  • apalazzo/athena
  • vbuxbaum/athena
  • kburka/athena
  • ehaines/athena
  • lfeligio/athena
  • jaofferm/athena
  • gonzalri/athena
  • desengup/athena
  • gottino/athena
  • rmazini/athena
  • mdidenko/athena
  • sabidi/athena
  • bkerridg/athena
  • gavrilen/athena
  • dwkim/athena
  • cdimitri/athena
  • qidong/athena
  • hazeng/athena
  • ktackman/athena
  • yche/athena
  • yoyeh/athena
  • jingjing/athena
  • ktopolni/athena
  • dabattul/athena
  • attrtcal/athena
  • sgaid/athena
  • thmaurin/athena
  • mischott/athena-22
  • asciandr/athena
  • chjiang/athena
  • bochen/athena
  • lbazzano/athena
  • rushioda/athena-3
  • krdona/athena
  • pclark/athena
  • meiqi/athena
  • dtorresa/athena
  • nlad/athena
  • kvidalgu/athena
  • hmoyanog/athena
  • aaikot/athena
  • aackerma/athena
  • yingjun/athena
  • jcurran/athena
  • maboelel/athena
  • xinfei/athena
  • lesplend/athena
  • mschefer/athena
  • aivina/athena
  • xinhui/athena
  • rmakhman/athena
  • kazheng/athena-physics-val-2023
  • zhiliang/athena
  • zoduan/athena
  • shhan/athena
  • liuk/athena
  • bdixit/athena
  • alsidley/athena
  • sfrances/athena
  • jlue/athena
  • ragrabar/athena
  • xingguo/athena
  • kyjones/topoetcone-removal
  • niabicht/athena
  • yunagai/athena
  • asehrawa/athena
  • mhoppesc/athena
  • shahzad/athena
  • keener/athena
  • lcalic/athena-backup
  • greynold/athena
  • llewitt/athena
  • bschlag/athena
  • yinmiao/athena
  • bruckman/athena
  • kazheng/athena-workingpoint
  • agentry/athena
  • adohnalo/athena
  • drankin/athena
  • nkang/athena
  • kbhide/athena
  • hvanders/athena
  • ladamczy/test
  • asmaga/athena
  • tbeumker/athenatest
  • tbeumker/athena
  • berkeleylab/acts/athena
  • weitao/athena
  • losanti/athena
  • losanti/athena-23
  • jiturriz/athena
  • dmankad/athena-idle
  • menu-hackathon/athena
  • wsong/athena
  • vmaksimo/athena
  • kyjones/trigger-example
  • dawerner/athena
  • toobauma/athena
  • seggebre/athena-fluencemap-modification
  • gtarna/athena
  • fisopkov/athena
  • lprimomo/athena
  • edreyer/athena
  • smanzoni/athena
  • maparo/athena
  • SecVtx-Lancaster/Athena
  • shmukher/athena
  • aackerma/atlas-athena
  • adimri/athena
  • pgraveli/athena
  • jcrosby/athena
  • wstanek/athena
  • lrambell/athena
  • tovsiann/athena
  • atlas-sa-uct/athena
  • rsnyder/athena
  • ppotepa/athena
  • eullmank/athena
  • skita/athena
  • zgao/athena
  • achakrav/athena
  • mhemmett/athena
  • lroos/athena
  • xmapekul/athena
  • kgoto/athena
  • evitale/athena
  • rashbypi/athena
  • ivyas/athena
  • thmaurin/athena-sim-flavour
  • arej/athena
  • npond/athena
  • lkretsch/athena
  • aleksand/athena
  • jebohm/athena
  • epasqual/athena
  • mbiyabi/athena
  • hluk/athena
  • cvittori/athena
  • dbiswas/athena
  • aralves/athena
  • dkoeck/anniathenafork
  • mihe/athena
  • mkareem/athena
  • tslee/athena
  • rgupta/athena
  • croland/athena
  • cgarvey/athena
  • kesedlac/athena
  • ctosciri/athena-old
  • ctosciri/athena
  • pkumari/athena
  • mhaacke/athena
  • feickert/athena
  • asoflau/athena
  • ricunnin/athena
  • agerwin/athena
  • gfrattar/athena
  • bdixit/masking-strip-modules
  • gwilliam/athena
  • bscheuer/athena
  • gtolkach/athena
  • jfeng2/athena
  • gaofeng/athena
  • ksudo/athena
  • rhiguchi/athena
  • etoyoda/athena
  • svanstro/athena
  • vaustrup/athena
  • kosuzuki/athena
  • rmizuhik/athena
  • kkanke/athena
  • hart/athena
  • tnakagaw/athena
  • amakita/athena
  • maoki/athena
  • miyamada/athena
  • rishikaw/athena
  • tpaschoa/athena
  • whopkins/athena
  • dduda/athena
  • anayaz/athena
  • ferusso/athena
  • evalient/athena
  • aagaard/athena
  • smweber/athena
  • shudong/athena
  • smweber/athena-run-3
  • zyan/athena-muon-calib-stream
  • zyan/athena-muon-calib
  • evalient/athena-dnn-calculator
  • dellacqu/athena
  • glagafon/project-nimber-1
  • strom/athena
  • strom/athena-dms
  • sbellman/athena
  • jsallen/athena
  • brosser/athena
  • macretar/athena
  • skadir/athena-sadaf
  • aowang/athena
  • ooncel/athena
  • jhoya/athena
  • leguo/athena
  • glagafon/handi-project
  • wuxi/athena
  • syan/athena-syan
  • tygeorge/athena
  • osotosan/athena
  • hasun/athena
  • glagafon/handi-project-1
  • mnorfolk/athena
  • will/athena
  • axgallen/athena-qualification-task
  • aborbely/athena
  • karakawa/athena
  • taogawa/athena
  • schernau/athena
  • seinfant/athena
  • dmankad/athena-gen
  • mmaroun/ravina-fork
  • axgallen/athena
  • romar/athena
  • tmlinare/athena
  • ktariq/athena
  • agarabag/athena
  • vlysenko/athena
  • dhagan/athena
  • zuzak/athena
  • mahorstm/athena
  • tizhang/athena
  • ipolishc/athena
  • ibamwidh/athena
  • atishelm/athena
  • jolamber/athena
  • frfische/athena
  • ykhoulak/myathena
  • jlue/athena-latest
  • xilin/athena
  • yil/athena
  • chuanye/athena
  • huayu/athena
  • dntounis/athena
  • nkua-atlas/athena
  • tayoshid/athena
  • kifarman/athena
  • lderamo/athena
  • nischmit/athena
  • movincen/athena
  • steinber/athena-main
  • tdingley/athena
  • hasegawa/athena
  • dtruncal/athena
  • dongyi/athena
  • malvesca/athena
  • kazheng/athena-acts
  • mnowak/athena
  • openc/athena
  • lcalic/athena
  • glagafon/dq-optimize
  • ladamczy/athena
  • mhufnage/athena
  • lsultana/obsolete_athena
  • lsultana/athena
  • ekajomov/athena-fork-fix
  • anfortma/athena
  • rqian/athena
  • yonoda/athena
  • kfung/athena
  • alveltma/athena
  • alpleban/athena
  • mmaheshw/athena
  • jdavidso/athena
  • edcritel/athena
  • pebaron/athena-leprem
  • anstein/athena
  • gbird/athena
  • midandre/athena
  • bglik/athena
  • anhodges/athena
  • mfurukaw/athena
  • sokkerma/athena
  • mvivasal/athena
  • asbrooks/athena
  • kyjones/athena
  • mveen/athena
  • fcurcio/athena
  • mmlynars/athena-v-2
  • jmcgowan/athena
  • tburatov/athena
  • lboccard/athena
  • joroemer/athena
  • dmankad/athena
  • tayoshid/athena-test
  • jodafons/athena
  • ivyoung/athena
  • drasslof/athena
  • ctaybi/athena
  • tmclachl/athena
  • sanchezj/athena-2022
  • jiddon/athena
  • sdemiran/athena
  • anburger/athena
  • sdahbi/athena
  • apfleger/athena
  • goblirsc/athena
  • fwinkel/athena
  • izahir/athena
  • sidoti/athena
  • mmoors/athena
  • sanchezj/athena
  • jwkraus/athena
  • rvinasco/athena
  • esimpson/athena
  • obut/athena
  • rhaberle/athena
  • jhowarth/athena
  • klleras/athena
  • janders/athena
  • jchapman/athena
  • dta/athena_old
  • jecouthu/athena
  • dtrischu/athena
  • mungo/athena
  • avallier/athena
  • fmontere/athena
  • sfuenzal/athena
  • fhenry/athena
  • misantan/athena
  • zalegria/athena
  • zhaotong/athena
  • awharton/Athena
  • gdigrego/athena
  • shaoguan/athena
  • acordeir/athena-ed
  • amelo/athena
  • peiyan/athena
  • nbruscin/athena
  • pdougan/athena
  • mkholoda/athena
  • fkirfel/athena
  • caiy/athena
  • backes/athena
  • tayoshid/athena-2024
  • kchu/athena
  • esampson/athena-idart
  • gfacini/athena
  • bcervato/athena
  • shpeng/athena-2
  • fwinkl2/athena
  • gmercado/athena
  • rhowen/athena
  • esampson/athena-idart-2
  • gmascare/athena
  • yvolkotr/athena
  • nharriso/athena
  • costanzo/athena
  • djlewis/athena
  • pibutti/athena
  • esampson/athena-otp
  • yuematsu/athena
  • alpleban/athena-met
  • astefl/athena
  • esampson/athena-june-otp
  • bmoser/athena
  • yilin/athena
  • wcastigl/athena
  • bdong/athena
  • zhanhang/athena
  • thitchin/athena
  • sosarkar/athena-again
  • ksahan/athena
  • msasada/athena
  • lbarrade/athena
  • seth/athena
  • agheata/athena
  • txu/athena
  • robouque/athena
  • okolay/athena
  • zhangbo/athena
  • mlyukova/athena
  • nsurijr/athena
  • esampson/june-2-otp
  • dbaronmo/athena
  • damperia/athena-acts
  • wema/athena
  • martyniu/athena
  • boudreau/athena
  • eballabe/athena
  • acamplan/athena
  • vsasse/athena
  • bhuth/athena
  • bngair/met-significance-r-22
  • bngair/me-tsig-athena
  • ksakura/athena
  • menadeem/athena
  • atymchys/athena
  • yanqiw/athena
  • linghua/athena
  • vkost/athena
  • rhicks/athena
  • domatter/athena
  • arelycg/athena
  • skadir/athena
  • sgoswami/athena
  • juscerri/athena
  • biliu/athena
  • mwessels/athena
  • beltran/athena
  • dreikher/athena
  • sosarkar/athena
  • ddicroce/athena
  • bdebjani/athena
  • hshaddix/athena
  • lwinkler/athena
  • fladias/athena
  • emoon/athena
  • elham/athena
  • cleong/athena
  • sdiefenb/athena-onnx-tutorial
  • mhabedan/athena
  • haren/athena
  • dwilson/athena
  • fivone/athena
  • nkrogh/athena
  • mads/athena
  • lsanfili/athena
  • thart/athena
  • scane/athena
  • dahumphr/athena
  • echerepa/athena
  • baer/athena
  • dcamarer/athena
  • lifoster/athena
  • kenakamu/athena
  • alancast/athena
  • glagafon/aaaathena
  • eskorda/athena
  • salopez/athena
  • haotianl/athena
  • rshibata/athena
  • glagafon/athena
  • lburke/athena
  • ukhurshi/athena
  • glagafon/glagafon-dq
  • pizhang/athena
  • htsoi/athena
  • rvavrick/athena
  • therwig/athena
  • mwitkows/athena
  • delitez/athena
  • pachabri/athena
  • lcorazzi/athena
  • casadop/athena
  • ezaya/athena
  • mmantina/athena
  • hzhuang/athena
  • jaburles/athena
  • lmonaco/athena
  • achamber/athena
  • rmole/athena
  • jkrupa/athena
  • gserenis/athena
  • semami/athena
  • mamirono/athena
  • rpozzi/athena
  • mfornasi/athena
  • fdattola/athena
  • belderto/athena
  • uepstein/athena
  • jinglis/athena
  • ljerala/athena
  • cmavungu/athena
  • lechols/athena
  • abesir/athena
  • lopezzot/athena
  • jlittle/athena
  • htorre/athena
  • jajohnso/athena
  • robouque/athena-20241115
  • tneep/athena
  • lbrown/athena
  • wguerin/athena
  • fsiegert/athena
  • wenjingw/athena
  • rmole/athena-personal-fork
  • kfang/athena-fork-kyfang
  • jackersc/athena
  • epompapa/athena
  • ashirazi/athena
  • prmitra/athena
  • wasu/athena
  • kgrimm/athena-kgrimm
  • toheintz/athena
  • amoreira/athena
  • nihartma/athena
  • aslobodk/athena
  • goetz/athena-acts
  • gfazzino/athena
  • muschmid/athena
  • kdipetri/athena
  • yazhou/athena
  • djuarezg/athena
  • alarnold/athena
  • falves/athena
  • wlai/athena
  • mdacunha/athena
  • mborodin/athena
  • rohasan/athena
  • asickles/athena
  • novotnyp/athena
  • alecrhys/athena
  • lvicenik/athena
  • adsalvad/athena
  • ibenaoum/athena
  • christog/athena
  • zetao/athena
  • tflee/athena
  • mfarzali/athena
  • frcastig/athena
  • kkazakov/athena
  • llarson/athena
  • ehampshi/athena
  • jusilva/athena
  • pusharma/athena
  • gpinheir/athena
  • tomoya/athena-low-pt-muon-rec
  • exochell/my-athena
  • jecifuen/athena
  • hshaddix/athena-hshaddix
  • mojeda/athena
  • vchabala/athena
  • jlieberm/athena
  • chhultqu/athena
  • nsur/athena-lund
  • nshtokha/athena
  • jlai/athena
  • misavic/athena
  • camccrac/athena
  • yuxuanz/local-athena
  • yukari/athena
  • pmourafr/athena
  • sizumiya/athena
  • akraus/athena
  • zhubacek/athena
  • mnegrini/athena
  • sawyer/athena
  • yanqiw/athena-acts-for-run-3-silicon-tracking
  • mfilipig/athena
  • fdejean/athena
  • rkavak/athena
  • zrokavec/athena
  • ssuravar/athena
  • gipoddar/athena
  • beyeo/athena
  • gsalvi/athena
  • mtancock/athena-2
  • vpires/athena-vasco
  • ywng/athena
  • sutuncay/athena
  • stlin/athena
  • fballi/athena
1576 results
Show changes
Showing
with 289 additions and 639 deletions
# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
# Declare the package name:
atlas_subdir( ALFA_BeamTransport )
......@@ -12,6 +12,3 @@ atlas_add_component( ALFA_BeamTransport
src/components/*.cxx
INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
LINK_LIBRARIES ${ROOT_LIBRARIES} AtlasHepMCLib TruthUtils AthenaBaseComps FPTracker GaudiKernel StoreGateLib xAODEventInfo GeneratorObjects FPTracker )
# Install files from the package:
atlas_install_joboptions( share/*.py )
import os
base_path = os.getenv('TwissFilesPATH') + '/0090.00m'
from ALFA_BeamTransport.ALFA_BeamTransportConf import ALFA_BeamTransport
myBeamTransport = ALFA_BeamTransport("ALFA_BeamTransport")
myBeamTransport.ConfDir = base_path
myBeamTransport.UseALFA = True # use the ALFA oftics hast to be true in oure case
myBeamTransport.Debug = True # write debug output
myBeamTransport.IP = 1 # which interaction point is used in our case always 1
myBeamTransport.UseAper = False
myBeamTransport.apermb = 0.
myBeamTransport.xcol1 = 999.
myBeamTransport.xcol2 = 999.
myBeamTransport.BeamEnergy = 3500. #set beam energy in GeV
myBeamTransport.RPDistance = 237.398 #RP position
myBeamTransport.absZMagMax = 500. # untill this point the magnets are read has to be bigger then the RP pos
myBeamTransport.EtaCut = 8.
myBeamTransport.XiCut = 0.2
myBeamTransport.FPOutputBeam1 = "FPTrackerBeam1.txt"
myBeamTransport.FPOutputBeam2 = "FPTrackerBeam2.txt"
myBeamTransport.McEventCollectionName = "TruthEvent"
topSeq += myBeamTransport
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
###############################################################
#
# JOB OPTIONS FILE. THIS FILE IS TO DEMONSTRATE HOW THE USER CAN
# CHANGE THE PYTHIA PARAMETERS. IT DOES NOT NECESARILY COMPLY TO
# THE ATLAS DEFAULTS FOR PHYSICS EVENT GENERATION.
#==============================================================
#--------------------------------------------------------------
# Private Application Configuration option
from AthenaCommon.AppMgr import ServiceMgr
ServiceMgr.MessageSvc.OutputLevel = DEBUG
#--------------------------------------------------------------
# Event related parameters
#--------------------------------------------------------------
# Number of events to be processed (default is 10)
theApp.EvtMax = 10000
#--------------------------------------------------------------
# Algorithms Private Options
#--------------------------------------------------------------
from RngComps.RngCompsConf import AtRndmGenSvc
ServiceMgr += AtRndmGenSvc()
from AthenaCommon.AlgSequence import AlgSequence
job=AlgSequence()
from Pythia8_i.Pythia8_iConf import Pythia8_i
job +=Pythia8_i()
include("pythia8.common.py")
include("pythia8.elastic.py")
#include("pythia8.single_diffraction.py")
#include("MC9.105001.pythia_minbias.py")
#sj#from TruthExamples.TruthExamplesConf import DumpMC
#sj#job += DumpMC()
# start my own
#from HepMCAnalysis_i.HepMCAnalysis_iConf import HepMCAnalysis
from ALFA_BeamTransport.ALFA_BeamTransportConf import ALFA_BeamTransport
myBeamTransport = ALFA_BeamTransport("ALFA_BeamTransport")
#myBeamTransport.somthing = what
myBeamTransport.ConfDir = "../../../FPTracker/share" #configuration folder with twiss files
myBeamTransport.UseALFA = True # use the ALFA oftics hast to be true in oure case
myBeamTransport.Debug = True # write debug output
myBeamTransport.IP = 1 # which interaction point is used in our case always 1
#some FPTracker suff don't change
myBeamTransport.UseAper = False
myBeamTransport.apermb = 0.
myBeamTransport.xcol1 = 999.
myBeamTransport.xcol2 = 999.
myBeamTransport.BeamEnergy = 7000. #set beam energy in GeV
myBeamTransport.RPDistance = 237.398 #RP position
myBeamTransport.absZMagMax = 500. # untill this point the magnets are read has to be bigger then the RP pos
#some cut for Production
myBeamTransport.EtaCut = 8.
myBeamTransport.XiCut = 0.2
#the two output files if debug i on
myBeamTransport.FPOutputBeam1 = "Beam1.dat1_new"
myBeamTransport.FPOutputBeam2 = "Beam2.dat1_new"
myBeamTransport.McEventCollectionName = "GEN_EVENT"
job += myBeamTransport
from ALFA_BeamAnalysis.ALFA_BeamAnalysisConf import ALFA_BeamAnalysisOtherProcess
myALFA_BeamAnalysisOtherProcess = ALFA_BeamAnalysisOtherProcess("ALFA_BeamAnalysisOtherProcess")
myALFA_BeamAnalysisOtherProcess.OutputFile="ALFA_BeamAnalysisOtherProcess.root"
myALFA_BeamAnalysisOtherProcess.FileOutput=True
myALFA_BeamAnalysisOtherProcess.BeamEnergy=7000.
myALFA_BeamAnalysisOtherProcess.Debug=True
# these cuts need to be the same as in ALFA_BeamTransport
myALFA_BeamAnalysisOtherProcess.EtaCut = 8.
myALFA_BeamAnalysisOtherProcess.XiCut = 0.2
job += myALFA_BeamAnalysisOtherProcess
#from ALFA_BeamAnalysis.ALFA_BeamAnalysisConf import ALFA_BeamAnalysis
#myALFA_BeamAnalysis = ALFA_BeamAnalysis("ALFA_BeamAnalysis")
#myALFA_BeamAnalysis.OutputFile="ALFA_BeamAnalysis.root"
#myALFA_BeamAnalysis.FileOutput=True
#myALFA_BeamAnalysis.BeamEnergy=7000.
#myALFA_BeamAnalysis.Debug=True
#job += myALFA_BeamAnalysis
#from HepMCAnalysis_i.HepMCAnalysis_iConfig import HepMCAnalysis_i
#myHepMCAnalysis = HepMCAnalysis_i("HepMCAnalysis_i", file = 'Pythia8_Process_elastic.root')
#myHepMCAnalysis.JetFinder=False
#myHepMCAnalysis.UserAnalysis=True
#job += myHepMCAnalysis
#---------------------------------------------------------------
# Pool Persistency
#---------------------------------------------------------------
#from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream
#Stream1 = AthenaPoolOutputStream( "Stream1" )
#Stream1.OutputFile = "elastic.pool.root"
#Stream1.ItemList += [ 'EventInfo#*', 'McEventCollection#*' ]
# end my own
#
# End of job options file
#
###############################################################
# minimal changed settings
job.Pythia8_i.Commands += ["Main:writeAllSettings = on",
"Main:showAllStatistics = on",
"Random:setSeed = on",
"Random:seed = 0"]
# -*- coding: utf-8 -*-
# elastic scattering with Pythia8
# Z decays into leptons and tau decays disabled
job.Pythia8_i.Commands += ["SoftQCD:elastic = on", # elastic scattering
"SigmaElastic:setOwn = on", # t-generation accoring to elastic formula
"SigmaTotal:setOwn = on", # use own total cross section
"SigmaTotal:sigmaTot = 100.", # actual value of sig_tot
"SigmaElastic:bSlope = 18.", # nuclear slope
"SigmaElastic:rho = 0.12.", # rho-parameter
"SigmaElastic:lambda = 0.72", # form factor parameter
"SigmaElastic:phaseConst = 0.577", # Coulomb phase constant (gamma_E)
"SigmaElastic:tAbsMin = 4e-5", # t_min for event generation
"Beams:allowMomentumSpread = on", # set up beam class (incoming protons)
"Beams:sigmaPxA = 0.010045", # set divergence in Px beam 1 (0.226 murad)
"Beams:sigmaPyA = 0.009485", # set divergence in Py beam 1
"Beams:sigmaPzA = 0.3955", # set energy smearing beam 1 in GeV (1.13E-4%)
"Beams:sigmaPxB = 0.010045", # set divergence in Px beam 2 (0.226 murad)
"Beams:sigmaPyB = 0.009485", # set divergence in Py beam 2
"Beams:sigmaPzB = 0.3955", # set energy smearing beam 2 in GeV (1.13E-4%)
"Beams:maxDevA = 100.0", # cut off smearing at 100 sigma
"Beams:maxDevB = 100.0", # cut off smearing at 100 sigma
"Beams:allowVertexSpread = on", # beam class vertex
"Beams:sigmaVertexX = 0.250 ", # spread in x
"Beams:sigmaVertexY = 0.237", # spread in y
"Beams:sigmaVertexZ = 0.0", # don't spread in z
"Beams:maxDevVertex = 10.0", # cut off spread at 10 sigma
"Random:setSeed=on", #from here added#########################################################
"Random:seed=4211",
]
......@@ -6,18 +6,18 @@ atlas_subdir( ForwardRegionGeoModel )
# External dependencies:
find_package( CLHEP )
find_package( GeoModel COMPONENTS GeoModelKernel )
# Component(s) in the package:
atlas_add_library( ForwardRegionGeoModelLib
ForwardRegionGeoModel/*.h
INTERFACE
PUBLIC_HEADERS ForwardRegionGeoModel
INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS}
INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS}
LINK_LIBRARIES ${CLHEP_LIBRARIES} GaudiKernel )
atlas_add_component( ForwardRegionGeoModel
src/*.cxx
src/components/*.cxx
INCLUDE_DIRS ${GEOMODEL_INCLUDE_DIRS}
LINK_LIBRARIES ${GEOMODEL_LIBRARIES} ForwardRegionGeoModelLib AthenaKernel GeoModelUtilities GeoModelInterfaces PathResolver StoreGateLib )
# Install files from the package:
......
......@@ -31,25 +31,20 @@ ForwardTransportModel::ForwardTransportModel(const std::string& name, const int
, m_FwdTrSvcName(FwdTrSvcName)
{
ISvcLocator* svcLocator = Gaudi::svcLocator(); // from Bootstrap
if (svcLocator->service(FwdTrSvcName,m_fwdSvc).isFailure())
{
G4ExceptionDescription description;
description << "ForwardTransportModel::ForwardTransportModel Attempt to access ForwardTransportSvc failed.";
G4Exception("ForwardTransportModel", "ForwardTransportModel01", FatalException, description);
abort(); // to keep Coverity happy
}
if (svcLocator->service(FwdTrSvcName,m_fwdSvc).isFailure()) {
G4ExceptionDescription description;
description << "ForwardTransportModel::ForwardTransportModel Attempt to access ForwardTransportSvc failed.";
G4Exception("ForwardTransportModel", "ForwardTransportModel01", FatalException, description);
abort(); // to keep Coverity happy
}
m_fwdTrack.initialize(m_fwdSvc->getConfigData());
if (m_verboseLevel>5)
{
G4cout << " transportFlag " << m_fwdSvc->getTransportFlag() << G4endl;
G4cout << " etaCut " << m_fwdSvc->getEtaCut() << G4endl;
G4cout << " xiCut " << m_fwdSvc->getXiCut() << G4endl;
G4cout << " fillRootTree " << m_fwdSvc->getFillRootTree() << G4endl;
G4cout << " rootFilePath " << m_fwdSvc->getRootFilePath() << G4endl;
G4cout << " MCkey " << m_fwdSvc->getMCkey() << G4endl;
}
if (m_verboseLevel>5) {
G4cout << " transportFlag " << m_fwdSvc->getTransportFlag() << G4endl;
G4cout << " etaCut " << m_fwdSvc->getEtaCut() << G4endl;
G4cout << " xiCut " << m_fwdSvc->getXiCut() << G4endl;
}
return;
}
......@@ -58,16 +53,14 @@ PrimaryParticleInformation* ForwardTransportModel::getPrimaryParticleInformation
{
const G4Track *track = fastTrack.GetPrimaryTrack();
const G4DynamicParticle *dp = track->GetDynamicParticle();
if (dp)
{
const G4PrimaryParticle *pp = dp->GetPrimaryParticle();
if (pp)
{
// Extract the PrimaryParticleInformation
return dynamic_cast<PrimaryParticleInformation*>
( pp->GetUserInformation() );
}
}
if (dp) {
const G4PrimaryParticle *pp = dp->GetPrimaryParticle();
if (pp) {
// Extract the PrimaryParticleInformation
return dynamic_cast<PrimaryParticleInformation*>
( pp->GetUserInformation() );
}
}
return nullptr;
}
......@@ -75,28 +68,25 @@ PrimaryParticleInformation* ForwardTransportModel::getPrimaryParticleInformation
void ForwardTransportModel::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastStep) {
// Depending on particle type and kinematics one can decide to kill the track,
// modify it or change it into something else (e.g. a parameterised shower).
if (m_verboseLevel>4)
{
G4cout <<"ForwardTransportModel::DoIt" << G4endl;
}
if (m_verboseLevel>4) {
G4cout <<"ForwardTransportModel::DoIt" << G4endl;
}
const int pdgcode = fastTrack.GetPrimaryTrack()->GetDefinition()->GetPDGEncoding();
const G4ThreeVector& initialMomentum = fastTrack.GetPrimaryTrack()->GetMomentum();
if (!m_fwdSvc->selectedParticle(initialMomentum, pdgcode)) // FIXME Move method to this class?
{
KillPrimaryTrack(fastTrack, fastStep);
return;
}
if (!m_fwdSvc->selectedParticle(initialMomentum, pdgcode)) { // FIXME Move method to this class?
KillPrimaryTrack(fastTrack, fastStep);
return;
}
const double charge = fastTrack.GetPrimaryTrack()->GetDefinition()->GetPDGCharge();
const G4ThreeVector& initialPosition = fastTrack.GetPrimaryTrack()->GetPosition();
const double time = fastTrack.GetPrimaryTrack()->GetGlobalTime();
const double energy = fastTrack.GetPrimaryTrack()->GetTotalEnergy();
if (m_verboseLevel>5)
{
G4cout <<" pdgCode: " << pdgcode << " energy[GeV]: " << energy/CLHEP::GeV << " charge: " << charge << G4endl;
}
if (m_verboseLevel>5) {
G4cout <<" pdgCode: " << pdgcode << " energy[GeV]: " << energy/CLHEP::GeV << " charge: " << charge << G4endl;
}
ForwardTracker::Particle fParticle = ForwardTracker::Particle(initialPosition.x()/CLHEP::m,
initialPosition.y()/CLHEP::m,
initialPosition.z()/CLHEP::m,
......@@ -104,22 +94,19 @@ void ForwardTransportModel::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastS
initialMomentum.y()/CLHEP::GeV,
initialMomentum.z()/CLHEP::GeV,
std::abs(charge)>0);
if (m_verboseLevel>5)
{
G4cout << fParticle << G4endl;
}
if (m_verboseLevel>5) {
G4cout << fParticle << G4endl;
}
bool isTransported = m_fwdTrack.TrackParticle(fParticle);
if (!isTransported)
{
KillPrimaryTrack(fastTrack, fastStep);
return;
}
if (!isTransported) {
KillPrimaryTrack(fastTrack, fastStep);
return;
}
if (m_verboseLevel>5)
{
G4cout << m_fwdTrack.fPar() << G4endl;
}
if (m_verboseLevel>5) {
G4cout << m_fwdTrack.fPar() << G4endl;
}
ForwardTracker::Point fPos = m_fwdTrack.fPos();
G4ThreeVector postTransportPosition(fPos.x()*CLHEP::m, fPos.y()*CLHEP::m, fPos.z()*CLHEP::m);
......@@ -130,13 +117,12 @@ void ForwardTransportModel::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastS
PrimaryParticleInformation *ppi = this->getPrimaryParticleInformation(fastTrack);
HepMC::GenParticlePtr part = (ppi)? ppi->GetHepMCParticle() : HepMC::GenParticlePtr();
HepMC::GenEvent* gEvent = (part) ? const_cast<HepMC::GenEvent*>(part->parent_event()) : nullptr;
if (!gEvent)
{
G4ExceptionDescription description;
description << "ForwardTransportModel::DoIt Cannot get HepMC::GenEvent pointer";
G4Exception("ForwardTransportModel", "ForwardTransportModel03", FatalException, description);
abort(); // to keep Coverity happy
}
if (!gEvent) {
G4ExceptionDescription description;
description << "ForwardTransportModel::DoIt Cannot get HepMC::GenEvent pointer";
G4Exception("ForwardTransportModel", "ForwardTransportModel03", FatalException, description);
abort(); // to keep Coverity happy
}
// Update HepMC::GenEvent
HepMC::GenVertexPtr gVertex = HepMC::newGenVertexPtr(
HepMC::FourVector(
......@@ -153,7 +139,7 @@ void ForwardTransportModel::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastS
postTransportMomentum.z(),
energy),
pdgcode,
part->status()); // For now leave particle status unchanged - TODO potentially revisit this in the future.
part->status() + HepMC::SIM_STATUS_INCREMENT);
gVertex->add_particle_out(gParticle);
HepMC::suggest_barcode(gParticle, HepMC::barcode(part)+HepMC::SIM_REGENERATION_INCREMENT);
......@@ -162,50 +148,46 @@ void ForwardTransportModel::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastS
const G4ParticleDefinition *aParticleDefinition{};
/// Special cases for Geantinos
if (pdgcode == MC::GEANTINOPLUS)
{
aParticleDefinition = G4ChargedGeantino::Definition();
}
if (pdgcode == MC::GEANTINO0)
{
aParticleDefinition = G4Geantino::GeantinoDefinition();
}
if (!aParticleDefinition)
{
/// Standard particles
G4ParticleTable *ptable = G4ParticleTable::GetParticleTable();
if (ptable)
{
aParticleDefinition = ptable->FindParticle(pdgcode);
}
}
if (pdgcode == MC::GEANTINOPLUS) {
aParticleDefinition = G4ChargedGeantino::Definition();
}
if (pdgcode == MC::GEANTINO0) {
aParticleDefinition = G4Geantino::GeantinoDefinition();
}
if (!aParticleDefinition) {
/// Standard particles
G4ParticleTable *ptable = G4ParticleTable::GetParticleTable();
if (ptable) {
aParticleDefinition = ptable->FindParticle(pdgcode);
}
}
G4DynamicParticle dp2(aParticleDefinition, energy, postTransportMomentum);
// Create UserInformation
const ISF::ISFParticle* initialISP = ppi->GetISFParticle();
std::unique_ptr<ISF::ISFParticle> postTransportISP{};
if (initialISP)
{
// Create postTransportISP if required.
const auto pBarcode = HepMC::barcode(gParticle);
const auto particleID = HepMC::uniqueID(gParticle);
auto tBinding = std::make_unique<ISF::TruthBinding>(gParticle);
auto hmpl = std::make_unique<HepMcParticleLink>(pBarcode, gEvent->event_number(), HepMcParticleLink::IS_EVENTNUM, HepMcParticleLink::IS_BARCODE); // FIXME barcode-based
const Amg::Vector3D pos(postTransportPosition.x(), postTransportPosition.y(), postTransportPosition.z());
const Amg::Vector3D mom(postTransportMomentum.x(), postTransportMomentum.y(), postTransportMomentum.z());
postTransportISP = std::make_unique<ISF::ISFParticle>(pos,
mom,
initialISP->mass(),
initialISP->charge(),
initialISP->pdgCode(),
initialISP->status(), // For now leave particle status unchanged - TODO potentially revisit this in the future.
time, // TODO Update??
*initialISP,
particleID,
pBarcode,
tBinding.release(),
hmpl.release());
}
if (initialISP) {
// Create postTransportISP if required.
const auto pBarcode = HepMC::barcode(gParticle);
const auto particleID = HepMC::uniqueID(gParticle);
const int status = gParticle->status();
auto tBinding = std::make_unique<ISF::TruthBinding>(gParticle);
auto hmpl = std::make_unique<HepMcParticleLink>(pBarcode, gEvent->event_number(), HepMcParticleLink::IS_EVENTNUM, HepMcParticleLink::IS_BARCODE); // FIXME barcode-based
const Amg::Vector3D pos(postTransportPosition.x(), postTransportPosition.y(), postTransportPosition.z());
const Amg::Vector3D mom(postTransportMomentum.x(), postTransportMomentum.y(), postTransportMomentum.z());
postTransportISP = std::make_unique<ISF::ISFParticle>(pos,
mom,
initialISP->mass(),
initialISP->charge(),
initialISP->pdgCode(),
status,
time, // TODO Update??
*initialISP,
particleID,
pBarcode,
tBinding.release(),
hmpl.release());
}
std::unique_ptr<PrimaryParticleInformation> ppi2 = std::make_unique<PrimaryParticleInformation>(gParticle,postTransportISP.release());
std::unique_ptr<G4PrimaryParticle> pp2 = std::make_unique<G4PrimaryParticle>(
aParticleDefinition,
......@@ -221,13 +203,12 @@ void ForwardTransportModel::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastS
postTransportPosition,
time,
false); // position in global coordinates
if (!postTransportTrack)
{
G4ExceptionDescription description;
description << "ForwardTransportModel::DoIt Failed to create secondary G4Track.";
G4Exception("ForwardTransportModel", "ForwardTransportModel04", FatalException, description);
abort(); // to keep Coverity happy
}
if (!postTransportTrack) {
G4ExceptionDescription description;
description << "ForwardTransportModel::DoIt Failed to create secondary G4Track.";
G4Exception("ForwardTransportModel", "ForwardTransportModel04", FatalException, description);
abort(); // to keep Coverity happy
}
fastStep.ProposePrimaryTrackFinalPosition(postTransportPosition, false); // position in global coordinates
fastStep.SetPrimaryTrackFinalMomentum(postTransportMomentum, false);
fastStep.KillPrimaryTrack();
......@@ -238,13 +219,12 @@ void ForwardTransportModel::KillPrimaryTrack(const G4FastTrack& fastTrack, G4Fas
PrimaryParticleInformation *ppi = this->getPrimaryParticleInformation(fastTrack);
HepMC::GenParticlePtr part = (ppi)? ppi->GetHepMCParticle() : HepMC::GenParticlePtr();
HepMC::GenEvent* gEvent = (part) ? const_cast<HepMC::GenEvent*>(part->parent_event()) : nullptr;
if (!gEvent)
{
G4ExceptionDescription description;
description << "ForwardTransportModel::KillPrimaryTrack Cannot get HepMC::GenEvent pointer";
G4Exception("ForwardTransportModel", "ForwardTransportModel02", FatalException, description);
abort(); // to keep Coverity happy
}
if (!gEvent) {
G4ExceptionDescription description;
description << "ForwardTransportModel::KillPrimaryTrack Cannot get HepMC::GenEvent pointer";
G4Exception("ForwardTransportModel", "ForwardTransportModel02", FatalException, description);
abort(); // to keep Coverity happy
}
const G4ThreeVector& initialPosition = fastTrack.GetPrimaryTrack()->GetPosition();
// Add dummy end vertex in Truth
HepMC::GenVertexPtr gVertex = HepMC::newGenVertexPtr(
......
/*
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef IForwardTransportSvc_H
#define IForwardTransportSvc_H
#ifndef FORWARDTRANSPORTSVC_IFORWARDTRANSPORTSVC_H
#define FORWARDTRANSPORTSVC_IFORWARDTRANSPORTSVC_H
#include "GaudiKernel/IInterface.h"
#include "GaudiKernel/StatusCode.h"
#include "AtlasHepMC/GenEvent.h"
#include "ForwardTracker/ConfigData.h"
#include <string>
#include "G4ThreeVector.hh"
class Incident;
// Declaration of the interface ID (interface id, major version, minor version)
static const InterfaceID IID_IForwardTransportSvc("IForwardTransportSvc", 6, 0);
class IForwardTransportSvc: virtual public IInterface {
public:
static const InterfaceID& interfaceID() { return IID_IForwardTransportSvc; }
virtual ForwardTracker::ConfigData getConfigData() const = 0;
virtual bool getTransportFlag() const = 0;
virtual double getEtaCut() const = 0;
virtual double getXiCut() const = 0;
virtual bool getFillRootTree() const = 0;
virtual std::string getRootFilePath() const = 0;
virtual std::string getMCkey() const = 0;
virtual bool selectedParticle(G4ThreeVector mom, int pid) = 0;
virtual void fillMcInfo (G4ThreeVector pos, double tim, G4ThreeVector mom, double ene) = 0;
virtual void addMcVertex (G4ThreeVector pos, double tim, G4ThreeVector mom, double ene, int pid, bool isTransported, HepMC::GenEvent*) = 0;
virtual const HepMC::GenEvent* getEvent() = 0;
/// Creates the InterfaceID and interfaceID() method
DeclareInterfaceID(IForwardTransportSvc, 6 , 0);
virtual ForwardTracker::ConfigData getConfigData() const = 0;
virtual bool getTransportFlag() const = 0;
virtual double getEtaCut() const = 0;
virtual double getXiCut() const = 0;
virtual bool selectedParticle(G4ThreeVector mom, int pid) = 0;
};
#endif
#endif // FORWARDTRANSPORTSVC_IFORWARDTRANSPORTSVC_H
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#include "GaudiKernel/ITHistSvc.h"
......@@ -14,11 +14,9 @@
#include <fstream>
#include "TTree.h"
ForwardTransportSvc::ForwardTransportSvc(const std::string& name, ISvcLocator* svc) :
AthService (name, svc),
m_StoreGate("StoreGateSvc", name),
m_thistSvc ("THistSvc", name)
{
ForwardTransportSvc::ForwardTransportSvc(const std::string& name, ISvcLocator* svc) :
base_class(name,svc)
{
declareProperty("TwissFile1", m_cData.twissFile1);
declareProperty("TwissFile2", m_cData.twissFile2);
declareProperty("PositionC1", m_cData.positionC1);
......@@ -26,195 +24,38 @@ ForwardTransportSvc::ForwardTransportSvc(const std::string& name, ISvcLocator* s
declareProperty("ApertureC1", m_cData.apertureC1);
declareProperty("ApertureC2", m_cData.apertureC2);
declareProperty("EndMarker", m_cData.endMarker);
declareProperty("TransportFlag", m_transportFlag = 0); // Transport only neutrals (0) or charged (1)
declareProperty("EtaCut", m_etaCut = 7.5); // Minimum pseudorapidty of transported particles
declareProperty("XiCut", m_xiCut = 0.8); // Minimum momentum over beam energy of transported particles
declareProperty("FillRootTree", m_fillRootTree = false); // Turn on output debug tree
declareProperty("RootFilePath", m_rootFilePath = "."); // Path to output debug file
declareProperty("McCollection", m_MCkey = "TruthEvent");
declareProperty("THistSvc", m_thistSvc);
declareProperty("StoreGateSvc", m_StoreGate);
m_tree = 0;
m_evt = 0;
m_pid = 0;
m_x0 = 0;
m_y0 = 0;
m_z0 = 0;
m_t0 = 0;
m_px0 = 0;
m_py0 = 0;
m_pz0 = 0;
m_e0 = 0;
m_x1 = 0;
m_y1 = 0;
m_z1 = 0;
m_t1 = 0;
m_x2 = 0;
m_y2 = 0;
m_z2 = 0;
m_t2 = 0;
m_x = 0;
m_y = 0;
m_z = 0;
m_t = 0;
m_px = 0;
m_py = 0;
m_pz = 0;
m_e = 0;
m_ist = 0;
}
StatusCode ForwardTransportSvc::queryInterface(const InterfaceID& riid, void** ppvInterface) {
if (IID_IForwardTransportSvc == riid) *ppvInterface = (IForwardTransportSvc*)this;
else return AthService::queryInterface(riid, ppvInterface);
addRef();
return StatusCode::SUCCESS;
}
StatusCode ForwardTransportSvc::initialize() {
StatusCode ForwardTransportSvc::initialize() {
ATH_MSG_INFO("ForwardTransportSvc::initialize");
if (!m_fillRootTree) return StatusCode::SUCCESS;
m_tree = new TTree("t", "FwdTransportAnalysis");
if (m_thistSvc->regTree("/AANT/FwdTransportAnalysis", m_tree).isFailure()) { ATH_MSG_WARNING(" Unable to register the tree "); return StatusCode::SUCCESS; }
m_tree->Branch("evt", &m_evt, "evt/I");
m_tree->Branch("pid", &m_pid, "pid/I");
m_tree->Branch("x0", &m_x0, "x0/D");
m_tree->Branch("y0", &m_y0, "y0/D");
m_tree->Branch("z0", &m_z0, "z0/D");
m_tree->Branch("t0", &m_t0, "t0/D");
m_tree->Branch("px0", &m_px0, "px0/D");
m_tree->Branch("py0", &m_py0, "py0/D");
m_tree->Branch("pz0", &m_pz0, "pz0/D");
m_tree->Branch("e0", &m_e0, "e0/D");
m_tree->Branch("x1", &m_x1, "x1/D");
m_tree->Branch("y1", &m_y1, "y1/D");
m_tree->Branch("z1", &m_z1, "z1/D");
m_tree->Branch("t1", &m_t1, "t1/D");
m_tree->Branch("x2", &m_x2, "x2/D");
m_tree->Branch("y2", &m_y2, "y2/D");
m_tree->Branch("z2", &m_z2, "z2/D");
m_tree->Branch("t2", &m_t2, "t2/D");
m_tree->Branch("x", &m_x, "x/D");
m_tree->Branch("y", &m_y, "y/D");
m_tree->Branch("z", &m_z, "z/D");
m_tree->Branch("t", &m_t, "t/D");
m_tree->Branch("px", &m_px, "px/D");
m_tree->Branch("py", &m_py, "py/D");
m_tree->Branch("pz", &m_pz, "pz/D");
m_tree->Branch("e", &m_e, "e/D");
m_tree->Branch("ist", &m_ist, "ist/O");
return StatusCode::SUCCESS;
}
}
bool ForwardTransportSvc::selectedParticle(G4ThreeVector momentum, int pid) {
std::ifstream pfile(m_cData.twissFile1.c_str());
double beamEnergy = ForwardTracker::GetBeamEnergy(pfile)*Gaudi::Units::GeV;
double eta = fabs(momentum.pseudoRapidity());
double xi = momentum.mag()/beamEnergy;
double xi = momentum.mag()/beamEnergy;
ATH_MSG_INFO(" pseudoRapidity: " << std::setprecision(9) << eta);
ATH_MSG_INFO(" p/beamEnergy: " << std::setprecision(9) << xi);
if (eta < m_etaCut) return false;
if (xi < m_xiCut) return false;
if (m_transportFlag) {
if (pid == 2212) return true; // proton
}
else {
if (pid == 2112) return true; // neutron
if (pid == 22) return true; // gamma
if (pid == 3122) return true; // lambda
}
return false;
}
void ForwardTransportSvc::fillMcInfo(G4ThreeVector pos, double tim, G4ThreeVector mom, double ene) {
if (!m_fillRootTree) return;
m_x0 = pos.x(); // [mm]
m_y0 = pos.y(); // [mm]
m_z0 = pos.z(); // [mm]
m_t0 = tim; // [ns]
m_px0 = mom.x(); // [MeV]
m_py0 = mom.y(); // [MeV]
m_pz0 = mom.z(); // [MeV]
m_e0 = ene; // [MeV]
int sign = (m_pz0 > 0) ? 1 : -1;
//Straight line projection at the end of the ATLAS cavern (z = 19.040 m). Interesting for neutrons.
m_z1 = sign*19.040*Gaudi::Units::m;
m_x1 = m_x0 + (m_z1 - m_z0)*m_px0/m_pz0;
m_y1 = m_y0 + (m_z1 - m_z0)*m_py0/m_pz0;
m_t1 = m_t0 + (m_z1 - m_z0)*m_e0 /m_pz0;
m_t1 = m_t1/Gaudi::Units::c_light;
//Straight line projection at the detector position (z = endMarker). Interesting for neutrons.
m_z2 = sign*m_cData.endMarker*Gaudi::Units::m;
m_x2 = m_x0 + (m_z2 - m_z0)*m_px0/m_pz0;
m_y2 = m_y0 + (m_z2 - m_z0)*m_py0/m_pz0;
m_t2 = m_t0 + (m_z2 - m_z0)*m_e0 /m_pz0;
m_t2 = m_t2/Gaudi::Units::c_light;
}
void ForwardTransportSvc::addMcVertex(G4ThreeVector pos, double tim, G4ThreeVector mom, double ene, int pid, bool isTransported, HepMC::GenEvent* gEvent) {
int statusCode = (isTransported) ? 212 : 211;
HepMC::GenVertexPtr gVertex = HepMC::newGenVertexPtr (HepMC::FourVector(pos.x(), pos.y(), pos.z(), tim));
HepMC::GenParticlePtr gParticle = HepMC::newGenParticlePtr(HepMC::FourVector(mom.x(), mom.y(), mom.z(), ene), pid, statusCode);
gVertex->add_particle_out(gParticle);
gEvent->add_vertex(gVertex);
if (!m_fillRootTree) return;
m_evt = gEvent->event_number();
m_pid = pid;
m_x = pos.x(); // [mm]
m_y = pos.y(); // [mm]
m_z = pos.z(); // [mm]
m_t = tim; // [ns]
m_px = mom.x(); // [MeV]
m_py = mom.y(); // [MeV]
m_pz = mom.z(); // [MeV]
m_e = ene; // [MeV]
m_ist = isTransported;
if (m_tree) m_tree->Fill();
}
const HepMC::GenEvent* ForwardTransportSvc::getEvent() {
const McEventCollection* mcCollptr;
if (m_StoreGate->retrieve(mcCollptr, m_MCkey).isFailure()) { ATH_MSG_WARNING(" Unable to retrieve the McEventCollection! "); return 0; }
const HepMC::GenEvent* gEvent = 0;
for (McEventCollection::const_iterator itr = mcCollptr->begin(); itr != mcCollptr->end(); ++itr) {
gEvent = (*itr);
}
return gEvent;
return false;
}
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef ForwardTransportSvc_H
#define ForwardTransportSvc_H
#ifndef FOWARDTRANSPORTSVC_FORWARDTRANSPORTSVC_H
#define FOWARDTRANSPORTSVC_FORWARDTRANSPORTSVC_H
#include "AthenaBaseComps/AthService.h"
#include "GaudiKernel/ToolHandle.h"
#include "ForwardTransportSvc/IForwardTransportSvc.h"
#include "GaudiKernel/ITHistSvc.h"
// class ITHistSvc;
class StoreGateSvc;
class TTree;
template <class TYPE> class SvcFactory;
class ForwardTransportSvc: public AthService, virtual public IForwardTransportSvc {
class ForwardTransportSvc: public extends<AthService, IForwardTransportSvc> {
public:
virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvInterface);
ForwardTransportSvc(const std::string& name, ISvcLocator* svc);
virtual StatusCode initialize();
virtual ForwardTracker::ConfigData getConfigData() const { return m_cData; }
virtual bool getTransportFlag() const { return m_transportFlag; }
virtual double getEtaCut() const { return m_etaCut; }
virtual double getXiCut() const { return m_xiCut; }
virtual bool getFillRootTree() const { return m_fillRootTree; }
virtual std::string getRootFilePath() const { return m_rootFilePath; }
virtual std::string getMCkey() const { return m_MCkey; }
virtual ForwardTracker::ConfigData getConfigData() const { return m_cData; }
virtual bool getTransportFlag() const { return m_transportFlag; }
virtual double getEtaCut() const { return m_etaCut; }
virtual double getXiCut() const { return m_xiCut; }
virtual bool selectedParticle(G4ThreeVector mom, int pid);
virtual void fillMcInfo (G4ThreeVector pos, double tim, G4ThreeVector mom, double ene);
virtual void addMcVertex (G4ThreeVector pos, double tim, G4ThreeVector mom, double ene, int pid, bool isTransported, HepMC::GenEvent*);
virtual const HepMC::GenEvent* getEvent();
friend class SvcFactory<ForwardTransportSvc>;
ForwardTransportSvc(const std::string& name, ISvcLocator* svc);
private:
private:
ForwardTracker::ConfigData m_cData;
bool m_transportFlag;
double m_etaCut;
double m_xiCut;
bool m_fillRootTree;
std::string m_rootFilePath;
std::string m_MCkey;
BooleanProperty m_transportFlag{this, "TransportFlag", false}; // Transport only neutrals (0) or charged (1)
DoubleProperty m_etaCut{this, "EtaCut", 7.5}; // Minimum pseudorapidty of transported particles
DoubleProperty m_xiCut{this, "XiCut", 0.8}; // Minimum momentum over beam energy of transported particles
ServiceHandle<StoreGateSvc> m_StoreGate;
ServiceHandle<ITHistSvc> m_thistSvc;
TTree* m_tree;
int m_evt;
int m_pid; // Particle PDG code.
double m_x0; // Position and Momentum where transport code starts.
double m_y0;
double m_z0;
double m_t0;
double m_px0;
double m_py0;
double m_pz0;
double m_e0;
double m_x1; // Position calculated at Cavern.
double m_y1;
double m_z1;
double m_t1;
double m_x2; // Position calculated at Detector front face.
double m_y2;
double m_z2;
double m_t2;
double m_x; // Position and Momentum where transport code ends.
double m_y;
double m_z;
double m_t;
double m_px;
double m_py;
double m_pz;
double m_e;
bool m_ist; // isTransported flag (0:lost, 1:transported). If particle is lost, store (Position, Momentum) where it was lost.
};
#endif
#endif // FOWARDTRANSPORTSVC_FORWARDTRANSPORTSVC_H
......@@ -10,6 +10,7 @@ find_package( GeoModel COMPONENTS GeoModelKernel )
atlas_add_component( ZDC_GeoM
src/*.cxx
src/components/*.cxx
INCLUDE_DIRS ${GEOMODEL_INCLUDE_DIRS}
LINK_LIBRARIES ${GEOMODEL_LIBRARIES} AthenaKernel GeoModelUtilities GaudiKernel GeoModelInterfaces StoreGateLib AthenaBaseComps ZdcIdentifier)
atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
\ No newline at end of file
atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
......@@ -30,7 +30,7 @@ RPDDataAnalyzer::RPDDataAnalyzer(
m_pileupBaselineStdDevThresh(config.pileupBaselineStdDevThresh),
m_nNegativesAllowed(config.nNegativesAllowed),
m_AdcOverflow(config.AdcOverflow),
m_calibFactors(calibFactors),
m_outputCalibFactors(calibFactors),
m_chFadcData(m_nChannels, std::vector<float>(m_nSamples, 0)),
m_chCorrectedFadcData(m_nChannels, std::vector<float>(m_nSamples, 0)),
m_chMaxSample(m_nChannels, 0),
......@@ -52,10 +52,10 @@ RPDDataAnalyzer::RPDDataAnalyzer(
m_chStatus(m_nChannels)
{
if (m_endSignalSample == 0) m_endSignalSample = m_nSamples; // sentinel value 0 -> go to end of waveform
if (m_calibFactors.size() != m_nChannels) {
if (m_outputCalibFactors.size() != m_nChannels) {
(*m_msgFunc_p)(ZDCMsg::Fatal,
"RPDDataAnalyzer::RPDDataAnalyzer: received incorrect number of channels in calibration factors ("
+ std::to_string(m_calibFactors.size()) + " != " + std::to_string(m_nChannels) + ")"
+ std::to_string(m_outputCalibFactors.size()) + " != " + std::to_string(m_nChannels) + ")"
);
}
m_sideStatus.reset();
......@@ -146,7 +146,7 @@ bool RPDDataAnalyzer::checkPulses(unsigned int channel) {
unsigned int postPulseSample = 0;
for (unsigned int sample = 1; sample < m_nSamples - 1; sample++) {
float secondDiff = m_chFadcData.at(channel).at(sample + 1) - 2*m_chFadcData.at(channel).at(sample) + m_chFadcData.at(channel).at(sample - 1);
if (secondDiff*m_calibFactors.at(channel) > m_pulse2ndDerivThresh) continue; // no pulse here
if (secondDiff > m_pulse2ndDerivThresh) continue; // no pulse here
if (sample < m_goodPulseSampleStart && secondDiff < prePulseSize) {
prePulseSize = secondDiff;
prePulseSample = sample;
......@@ -187,7 +187,7 @@ float RPDDataAnalyzer::calculateBaselineSamplesMSE(unsigned int channel, std::fu
MSE += std::pow(m_chFadcData.at(channel).at(sample) - m_chBaseline.at(channel) - fit(sample), 2);
}
MSE /= m_nBaselineSamples;
return MSE*std::pow(m_calibFactors.at(channel), 2);
return MSE;
}
/**
......@@ -276,17 +276,15 @@ unsigned int RPDDataAnalyzer::countSignalRangeNegatives(std::vector<float> const
* Returns true if pileup subtraction succeeded, false if there was a problem.
*/
bool RPDDataAnalyzer::doBaselinePileupSubtraction(unsigned int channel) {
float const& calibFactor = m_calibFactors.at(channel);
float baselineSum = 0;
float nominalBaselineSubtrSum = 0;
/** points (sample, baseline-subtracted ADC) with ADC above baseline, to be used in fit in case of pileup */
std::vector<std::pair<unsigned int, float>> pileupFitPoints;
/** set of (unique) ADC values in baseline samples above nominal baseline */
std::set<float> uniqueBaselineValues;
for (unsigned int sample = 0; sample < m_nBaselineSamples; sample++) {
float const& adc = m_chFadcData.at(channel).at(sample);
baselineSum += adc;
float const adcBaselineSubtr = adc - m_nominalBaseline;
nominalBaselineSubtrSum += adcBaselineSubtr;
if (adcBaselineSubtr > 0) {
// this sample is a candidate for pileup fit
pileupFitPoints.push_back({sample, adcBaselineSubtr});
......@@ -295,7 +293,7 @@ bool RPDDataAnalyzer::doBaselinePileupSubtraction(unsigned int channel) {
}
float baselineStdDev = TMath::RMS(m_chFadcData.at(channel).begin(), std::next(m_chFadcData.at(channel).begin(), m_nBaselineSamples));
if (baselineSum*calibFactor < m_pileupBaselineSumThresh || baselineStdDev*calibFactor < m_pileupBaselineStdDevThresh) {
if (nominalBaselineSubtrSum < m_pileupBaselineSumThresh || baselineStdDev < m_pileupBaselineStdDevThresh) {
// there is NO pileup, we will trust the average of baseline samples as a good baseline estimate
m_chBaseline.at(channel) = TMath::Mean(m_chFadcData.at(channel).begin(), std::next(m_chFadcData.at(channel).begin(), m_nBaselineSamples));
// calculate fadc data with baseline subtracted
......@@ -371,7 +369,7 @@ void RPDDataAnalyzer::calculateMaxSampleMaxAdc(unsigned int channel)
}
}
m_chMaxAdc.at(channel) = maxAdc;
m_chMaxAdcCalib.at(channel) = maxAdc*m_calibFactors.at(channel);
m_chMaxAdcCalib.at(channel) = maxAdc*m_outputCalibFactors.at(channel);
m_chMaxSample.at(channel) = maxSample;
}
......@@ -385,7 +383,7 @@ void RPDDataAnalyzer::calculateSumAdc(unsigned int channel) {
signalRangeAdcSum += m_chCorrectedFadcData.at(channel).at(sample);
}
m_chSumAdc.at(channel) = signalRangeAdcSum;
m_chSumAdcCalib.at(channel) = signalRangeAdcSum*m_calibFactors.at(channel);
m_chSumAdcCalib.at(channel) = signalRangeAdcSum*m_outputCalibFactors.at(channel);
if (m_chStatus.at(channel)[OutOfTimePileupBit]) {
// there is pileup in this channel, calculate fraction of baseline-subtracted raw signal
......@@ -489,7 +487,7 @@ float RPDDataAnalyzer::getChSumAdc(unsigned int channel) const
}
/**
* Get sum of RPD data in signal range after baseline and pileup subtraction, with calibration factors applied.
* Get sum of RPD data in signal range after baseline and pileup subtraction, with output calibration factors applied.
*/
float RPDDataAnalyzer::getChSumAdcCalib(unsigned int channel) const
{
......@@ -505,7 +503,7 @@ float RPDDataAnalyzer::getChMaxAdc(unsigned int channel) const
}
/**
* Get max of RPD data in signal range after baseline and pileup subtraction, with calibration factors applied.
* Get max of RPD data in signal range after baseline and pileup subtraction, with output calibration factors applied.
*/
float RPDDataAnalyzer::getChMaxAdcCalib(unsigned int channel) const
{
......
......@@ -32,7 +32,7 @@ RpdSubtractCentroidTool::RpdSubtractCentroidTool(const std::string& name) :
declareProperty("PileupMaxFrac", m_pileupMaxFrac = {1.0, 1.0}, "Maximum fractional pileup allowed in an RPD channel for valid centroid");
declareProperty("ExcessiveSubtrUnderflowFrac", m_maximumNegativeSubtrAmpFrac = {1.0, 1.0}, "If any RPD channel subtracted amplitude is negative and its fraction of subtracted amplitude sum is greater than or equal to this number, the centroid is invalid");
declareProperty("UseRpdSumAdc", m_useRpdSumAdc = true, "If true, use RPD channel sum ADC for centroid calculation, else use RPD channel max ADC");
declareProperty("UseCalibDecorations", m_useCalibDecorations = true, "If true, use reconstruction-calibrated RPD channel sum/max ADC decorations, else use uncalibrated");
declareProperty("UseCalibDecorations", m_useCalibDecorations = true, "If true, use RPD channel sum/max ADC decorations with output calibration factors applied during reconstruction, else use decorations with raw values");
}
RpdSubtractCentroidTool::~RpdSubtractCentroidTool()
......
......@@ -73,17 +73,17 @@ ZdcAnalysisTool::ZdcAnalysisTool(const std::string& name)
declareProperty("RpdNbaselineSamples", m_rpdNbaselineSamples = 7, "Number of baseline samples; the sample equal to this number is the start of signal region");
declareProperty("RpdEndSignalSample", m_rpdEndSignalSample = 23, "Samples before (not including) this sample are the signal region; 0 or Nsamples goes to end of window");
declareProperty("RpdPulse2ndDerivThresh", m_rpdPulse2ndDerivThresh = -18, "Second differences less than or equal to this number indicate a pulse"); // 3 sigma = 3*3.9, 2nd difference in baseline for first-in-train bcid evts
declareProperty("RpdPulse2ndDerivThresh", m_rpdPulse2ndDerivThresh = -18, "Second differences less than or equal to this number indicate a pulse");
declareProperty("RpdPostPulseFracThresh", m_rpdPostPulseFracThresh = 0.15, "If there is a good pulse and post-pulse and size of post-pulse as a fraction of good pulse is less than or equal to this number, ignore post-pulse");
declareProperty("RpdGoodPulseSampleStart", m_rpdGoodPulseSampleStart = 8, "Pulses before this sample are considered pre-pulses");
declareProperty("RpdGoodPulseSampleStop", m_rpdGoodPulseSampleStop = 10, "Pulses after this sample are considered post-pulses");
declareProperty("RpdNominalBaseline", m_rpdNominalBaseline = 100, "The global nominal baseline; used when pileup is detected");
declareProperty("RpdPileupBaselineSumThresh", m_rpdPileupBaselineSumThresh = 684 + 3*23, "Baseline sums less than this number indicate there is NO pileup"); // 3 sigma, sum of baseline samples in first-in-train bcid evts
declareProperty("RpdPileupBaselineSumThresh", m_rpdPileupBaselineSumThresh = 53, "Baseline sum (after subtracting nominal baseline) less than this number indicates there is NO pileup");
declareProperty("RpdPileupBaselineStdDevThresh", m_rpdPileupBaselineStdDevThresh = 2, "Baseline standard deviations less than this number indicate there is NO pileup");
declareProperty("RpdNNegativesAllowed", m_rpdNNegativesAllowed = 2, "Maximum number of negative ADC values after baseline and pileup subtraction allowed in signal range");
declareProperty("RpdAdcOverflow", m_rpdAdcOverflow = 4095, "ADC values greater than or equal to this number are considered overflow");
declareProperty("RpdSideCCalibFactors", m_rpdSideCCalibFactors = std::vector<float>(16, 1.0), "Multiplicative calibration factors to apply to RPD side C (arm 1-2) channels in reconstruction");
declareProperty("RpdSideACalibFactors", m_rpdSideACalibFactors = std::vector<float>(16, 1.0), "Multiplicative calibration factors to apply to RPD side A (arm 8-1) channels in reconstruction");
declareProperty("RpdSideCCalibFactors", m_rpdSideCOutputCalibFactors = std::vector<float>(16, 1.0), "Multiplicative calibration factors to apply to RPD output, e.g., sum/max ADC, per channel on side C");
declareProperty("RpdSideACalibFactors", m_rpdSideAOutputCalibFactors = std::vector<float>(16, 1.0), "Multiplicative calibration factors to apply to RPD output, e.g., sum/max ADC, per channel on side A");
declareProperty("LHCRun", m_LHCRun = 3);
......@@ -308,8 +308,8 @@ std::unique_ptr<ZDCDataAnalyzer> ZdcAnalysisTool::initializeLHCf2022()
rpdConfig.pileupBaselineStdDevThresh = m_rpdPileupBaselineStdDevThresh;
rpdConfig.nNegativesAllowed = m_rpdNNegativesAllowed;
rpdConfig.AdcOverflow = m_rpdAdcOverflow;
m_rpdDataAnalyzer.push_back(std::make_unique<RPDDataAnalyzer>(MakeMessageFunction(), "rpdC", rpdConfig, m_rpdSideCCalibFactors));
m_rpdDataAnalyzer.push_back(std::make_unique<RPDDataAnalyzer>(MakeMessageFunction(), "rpdA", rpdConfig, m_rpdSideACalibFactors));
m_rpdDataAnalyzer.push_back(std::make_unique<RPDDataAnalyzer>(MakeMessageFunction(), "rpdC", rpdConfig, m_rpdSideCOutputCalibFactors));
m_rpdDataAnalyzer.push_back(std::make_unique<RPDDataAnalyzer>(MakeMessageFunction(), "rpdA", rpdConfig, m_rpdSideAOutputCalibFactors));
return zdcDataAnalyzer;
......@@ -415,8 +415,8 @@ std::unique_ptr<ZDCDataAnalyzer> ZdcAnalysisTool::initializepp2023()
rpdConfig.pileupBaselineStdDevThresh = m_rpdPileupBaselineStdDevThresh;
rpdConfig.nNegativesAllowed = m_rpdNNegativesAllowed;
rpdConfig.AdcOverflow = m_rpdAdcOverflow;
m_rpdDataAnalyzer.push_back(std::make_unique<RPDDataAnalyzer>(MakeMessageFunction(), "rpdC", rpdConfig, m_rpdSideCCalibFactors));
m_rpdDataAnalyzer.push_back(std::make_unique<RPDDataAnalyzer>(MakeMessageFunction(), "rpdA", rpdConfig, m_rpdSideACalibFactors));
m_rpdDataAnalyzer.push_back(std::make_unique<RPDDataAnalyzer>(MakeMessageFunction(), "rpdC", rpdConfig, m_rpdSideCOutputCalibFactors));
m_rpdDataAnalyzer.push_back(std::make_unique<RPDDataAnalyzer>(MakeMessageFunction(), "rpdA", rpdConfig, m_rpdSideAOutputCalibFactors));
return zdcDataAnalyzer;
......@@ -586,8 +586,8 @@ std::unique_ptr<ZDCDataAnalyzer> ZdcAnalysisTool::initializePbPb2023()
rpdConfig.pileupBaselineStdDevThresh = m_rpdPileupBaselineStdDevThresh;
rpdConfig.nNegativesAllowed = m_rpdNNegativesAllowed;
rpdConfig.AdcOverflow = m_rpdAdcOverflow;
m_rpdDataAnalyzer.push_back(std::make_unique<RPDDataAnalyzer>(MakeMessageFunction(), "rpdC", rpdConfig, m_rpdSideCCalibFactors));
m_rpdDataAnalyzer.push_back(std::make_unique<RPDDataAnalyzer>(MakeMessageFunction(), "rpdA", rpdConfig, m_rpdSideACalibFactors));
m_rpdDataAnalyzer.push_back(std::make_unique<RPDDataAnalyzer>(MakeMessageFunction(), "rpdC", rpdConfig, m_rpdSideCOutputCalibFactors));
m_rpdDataAnalyzer.push_back(std::make_unique<RPDDataAnalyzer>(MakeMessageFunction(), "rpdA", rpdConfig, m_rpdSideAOutputCalibFactors));
return zdcDataAnalyzer;
}
......
......@@ -111,15 +111,15 @@ class RPDDataAnalyzer
float m_pileupBaselineStdDevThresh; /** Baseline standard deviations less than this number indicate there is not pileup */
unsigned int m_nNegativesAllowed; /** Maximum number of negative ADC values after baseline and pileup subtraction allowed in signal range */
unsigned int m_AdcOverflow; /** ADC values greater than or equal to this number are considered overflow */
std::vector<float> m_calibFactors; /** multiplicative calibration factors to apply to raw data; per channel */
std::vector<float> m_outputCalibFactors; /** multiplicative calibration factors to apply to output, e.g., max and sum ADC; per channel */
std::vector<std::vector<float>> m_chFadcData; /** raw RPD data; index channel then sample */
std::vector<std::vector<float>> m_chCorrectedFadcData; /** RPD data with baseline and pileup subtracted; index channel then sample */
std::vector<float> m_chMaxSample; /** sample of max of RPD data in signal range after pileup subtraction; per channel */
std::vector<float> m_chSumAdc; /** sum of RPD data in signal range after baseline and pileup subtraction; per channel */
std::vector<float> m_chSumAdcCalib; /** sum of RPD data in signal range after baseline and pileup subtraction, with calibration factors applied; per channel */
std::vector<float> m_chSumAdcCalib; /** sum of RPD data in signal range after baseline and pileup subtraction, with output calibration factors applied; per channel */
std::vector<float> m_chMaxAdc; /** max of RPD data in signal range after baseline and pileup subtraction; per channel */
std::vector<float> m_chMaxAdcCalib; /** max of RPD data in signal range after baseline and pileup subtraction, with calibration factors applied; per channel */
std::vector<float> m_chMaxAdcCalib; /** max of RPD data in signal range after baseline and pileup subtraction, with output calibration factors applied; per channel */
std::vector<float> m_chPileupFrac; /** OOT pileup sum as a fraction of non-pileup sum in entire window (0 if no OOT pileup, -1 if sum ADC <= 0); per channel */
std::vector<float> m_chBaseline; /** baseline used in baseline subtraction; per channel */
std::vector<std::vector<float>> m_chPileupExpFitParams; /** parameters for pileup exponential fit (if pileup was detected and fit did not fail): exp( [0] + [1]*sample ); per channel */
......
......@@ -185,8 +185,8 @@ private:
float m_rpdPileupBaselineStdDevThresh;
unsigned int m_rpdNNegativesAllowed;
unsigned int m_rpdAdcOverflow;
std::vector<float> m_rpdSideCCalibFactors;
std::vector<float> m_rpdSideACalibFactors;
std::vector<float> m_rpdSideCOutputCalibFactors;
std::vector<float> m_rpdSideAOutputCalibFactors;
int m_LHCRun;
......@@ -231,10 +231,10 @@ private:
SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> m_rpdChannelPileupStretchedExpFitParamErrs{this, "RPDChannelPileupStretchedExpFitParamErrs", "", "RPD channel pileup stretched exponential fit parameter errors"};
SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> m_rpdChannelPileupExpFitMSE{this, "RPDChannelPileupExpFitMSE", "", "RPD Channel pileup exponential fit mean squared error in baseline samples"};
SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> m_rpdChannelPileupStretchedExpFitMSE{this, "RPDChannelPileupStretchedExpFitMSE", "", "RPD channel pileup stretched exponential fit mean squared error in baseline samples"};
SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> m_rpdChannelAmplitude{this, "RPDChannelAmplitude", "", "RPD channel sum ADC"};
SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> m_rpdChannelAmplitudeCalib{this, "RPDChannelAmplitudeCalib", "", "RPD channel sum ADC with reconstruction calibrated factors applied"};
SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> m_rpdChannelMaxADC{this, "RPDChannelMaxADC", "", "RPD channel max ADC"};
SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> m_rpdChannelMaxADCCalib{this, "RPDChannelMaxADCCalib", "", "RPD channel max ADC with reconstruction calibrated factors applied"};
SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> m_rpdChannelAmplitude{this, "RPDChannelAmplitude", "", "RPD channel sum ADC (baseline and pileup subtracted)"};
SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> m_rpdChannelAmplitudeCalib{this, "RPDChannelAmplitudeCalib", "", "RPD channel sum ADC (baseline and pileup subtracted) with output calibration factors applied"};
SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> m_rpdChannelMaxADC{this, "RPDChannelMaxADC", "", "RPD channel max ADC (baseline and pileup subtracted)"};
SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> m_rpdChannelMaxADCCalib{this, "RPDChannelMaxADCCalib", "", "RPD channel max ADC (baseline and pileup subtracted) with output calibration factors applied"};
SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> m_rpdChannelMaxSample{this, "RPDChannelMaxSample", "", "RPD channel max sample"};
SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> m_rpdChannelStatus{this, "RPDChannelStatus", "", "RPD channel status"};
SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> m_rpdChannelPileupFrac{this, "RPDChannelPileupFrac", "", "RPD channel pileup as fraction of total (nominal baseline-subtracted) sum ADC"};
......
# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
import sys
from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags
from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude
# force no legacy job properties
from AthenaCommon import JobProperties
JobProperties.jobPropertiesDisallowed = True
def fromRunArgs(runArgs):
from AthenaCommon.Logging import logging
log = logging.getLogger("EVNTMerge")
log.info("****************** STARTING EVNT MERGING *****************")
log.info("**** Transformation run arguments")
log.info(str(runArgs))
log.info("**** Setting-up configuration flags")
from AthenaConfiguration.AllConfigFlags import initConfigFlags
flags = initConfigFlags()
from AthenaConfiguration.Enums import ProductionStep
flags.Common.ProductionStep = ProductionStep.Generation
commonRunArgsToFlags(runArgs, flags)
if hasattr(runArgs, "inputEVNTFile"):
flags.Input.Files = runArgs.inputEVNTFile
else:
raise RuntimeError("No input EVNT file defined")
if hasattr(runArgs, "outputEVNT_MRGFile"):
if runArgs.outputEVNT_MRGFile == "None":
flags.Output.EVNTFileName = ""
# TODO decide if we need a specific EVNT_MRGFileName flag
else:
flags.Output.EVNTFileName = runArgs.outputEVNT_MRGFile
else:
raise RuntimeError("No outputEVNT_MRGFile defined")
# Pre-include
processPreInclude(runArgs, flags)
# Pre-exec
processPreExec(runArgs, flags)
# To respect --athenaopts
flags.fillFromArgs()
# Lock flags
flags.lock()
from AthenaConfiguration.MainServicesConfig import MainServicesCfg
cfg = MainServicesCfg(flags)
from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
cfg.merge(PoolReadCfg(flags))
# Ensure proper metadata propagation
from IOVDbSvc.IOVDbSvcConfig import IOVDbSvcCfg
cfg.merge(IOVDbSvcCfg(flags))
from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
cfg.merge(OutputStreamCfg(flags, "EVNT", disableEventTag=True, takeItemsFromInput = True))
# Add in-file MetaData
from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
cfg.merge(SetupMetaDataForStreamCfg(flags, "EVNT", disableEventTag=True))
# Post-include
processPostInclude(runArgs, flags, cfg)
# Post-exec
processPostExec(runArgs, flags, cfg)
# Write AMI tag into in-file metadata
from PyUtils.AMITagHelperConfig import AMITagCfg
cfg.merge(AMITagCfg(flags, runArgs))
## Special configuration
from AthenaConfiguration.AutoConfigFlags import GetFileMD
hepmc_version = GetFileMD(flags.Input.Files).get("hepmc_version", None)
if hepmc_version is not None:
if hepmc_version == "2":
hepmc_version = "HepMC2"
elif hepmc_version == "3":
hepmc_version = "HepMC3"
log.info("Input file was produced with %s", hepmc_version)
from EventInfoMgt.TagInfoMgrConfig import TagInfoMgrCfg
cfg.merge(TagInfoMgrCfg(flags, tagValuePairs={"hepmc_version": hepmc_version}))
import time
tic = time.time()
# Run the final accumulator
sc = cfg.run()
log.info("Ran EVNTMerge_tf in " + str(time.time()-tic) + " seconds")
sys.exit(not sc.isSuccess())
......@@ -94,6 +94,9 @@ def fromRunArgs(runArgs):
from AthenaConfiguration.AllConfigFlags import initConfigFlags
flags = initConfigFlags()
from AthenaConfiguration.Enums import ProductionStep
flags.Common.ProductionStep = ProductionStep.Generation
# Convert run arguments to global athena flags
from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags
commonRunArgsToFlags(runArgs, flags)
......
......@@ -168,17 +168,17 @@ def ITkTrackingSiPatternCfg(flags,
TracksTruth=ResolvedTrackCollectionKey+"TruthCollection"))
if runActsTrackTruth :
from ActsConfig.ActsTruthConfig import TrackToTruthAssociationCfg, TrackFindingValidationAlgCfg
from ActsConfig.ActsTruthConfig import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
acts_tracks=f"{flags.Tracking.ActiveConfig.extension}Tracks" if not flags.Acts.doAmbiguityResolution else f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks"
acc.merge(TrackToTruthAssociationCfg(flags,
name=f"{acts_tracks}TrackToTruthAssociationAlg",
ACTSTracksLocation=acts_tracks,
AssociationMapOut=acts_tracks+"ToTruthParticleAssociation"))
acc.merge(TrackFindingValidationAlgCfg(flags,
name=f"{acts_tracks}TrackFindingValidationAlg",
TrackToTruthAssociationMap=acts_tracks+"ToTruthParticleAssociation"
))
acc.merge(ActsTrackToTruthAssociationAlgCfg(flags,
name=f"{acts_tracks}TrackToTruthAssociationAlg",
ACTSTracksLocation=acts_tracks,
AssociationMapOut=acts_tracks+"ToTruthParticleAssociation"))
acc.merge(ActsTrackFindingValidationAlgCfg(flags,
name=f"{acts_tracks}TrackFindingValidationAlg",
TrackToTruthAssociationMap=acts_tracks+"ToTruthParticleAssociation"
))
return acc
......@@ -179,9 +179,9 @@ def ITkRecPreProcessingSiliconCfg(flags):
acc.merge(ITkPRD_MultiTruthMakerSiCfg(flags))
if flags.Tracking.ActiveConfig.doActsCluster or flags.Tracking.ActiveConfig.doAthenaToActsCluster:
from ActsConfig.ActsTruthConfig import ITkTruthAssociationCfg, TruthParticleHitCountAlgCfg
acc.merge(ITkTruthAssociationCfg(flags))
acc.merge(TruthParticleHitCountAlgCfg(flags))
from ActsConfig.ActsTruthConfig import ActsTruthAssociationAlgCfg, ActsTruthParticleHitCountAlgCfg
acc.merge(ActsTruthAssociationAlgCfg(flags))
acc.merge(ActsTruthParticleHitCountAlgCfg(flags))
return acc
......