From 0d1e6751c7dde6329686632656f6f4e9ac0f7af2 Mon Sep 17 00:00:00 2001 From: Felix Russo <72298366+felix-russo@users.noreply.github.com> Date: Thu, 7 Dec 2023 16:05:10 +0100 Subject: [PATCH] feat: add useTime to AMVFinder + python binding (#2721) Enables time seeding and time impact point estimation for `AMVF (+grid seeder) seeded`! For `AMVF (+grid seeder) ttbar` the performance is deteriorating because the parameters of `AdaptiveGridDensityVertexFinder` were tuned for `AMVF (+grid seeder) seeded`. The parameters for ttbar will be tuned once #2745 went in (at the moment, the grid seeder is templated to the grid size so we can't adapt these parameters at run time). In the following, we will discuss the physmon for `AMVF (+grid seeder) seeded`: We get some sensible pulls for the vertex time: ![image](https://github.com/acts-project/acts/assets/72298366/a04db989-f19a-432c-a923-32ee7af8159f) Also, the vertex time residual looks good: ![image](https://github.com/acts-project/acts/assets/72298366/153294d5-591e-4570-9b1f-c51b9b63b692) Using the additional coordinate we are able to resolve more vertices: ![image](https://github.com/acts-project/acts/assets/72298366/b5d7d6a6-4d42-4e45-bb98-019bfc68ac72) At the same time, we don't overshoot (i.e., reconstruct more vertices than there are) as this plot nicely shows. Finally, we are able to better resolve which track corresponds to which vertex: ![image](https://github.com/acts-project/acts/assets/72298366/580b46c4-ac34-4670-b9d6-0f7db3dcbb91) Some remarks: Even though we reconstruct more vertices, the number of entries in the histogram of the vertex covariance seems to decrease: ![image](https://github.com/acts-project/acts/assets/72298366/cc798708-bbf3-4f4c-b4a8-1acda0d03ae4) However, this is not actually the case: the tail of the monitored distribution just gets longer. For higher pile-ups, we expect the improvement to be even more significant. --- ...rformance_amvf_gridseeder_seeded_hist.root | Bin 42304 -> 43363 bytes ...erformance_amvf_gridseeder_ttbar_hist.root | Bin 40516 -> 40307 bytes CI/physmon/workflows/physmon_ckf_tracking.py | 11 +++- .../Vertexing/AdaptiveMultiVertexFinder.hpp | 10 +++- .../Vertexing/AdaptiveMultiVertexFinder.ipp | 54 ++++++++++++------ .../AdaptiveMultiVertexFinderAlgorithm.hpp | 2 + .../AdaptiveMultiVertexFinderAlgorithm.cpp | 20 ++++++- .../python/acts/examples/reconstruction.py | 14 ++++- Examples/Python/src/Vertexing.cpp | 2 +- 9 files changed, 84 insertions(+), 29 deletions(-) diff --git a/CI/physmon/reference/performance_amvf_gridseeder_seeded_hist.root b/CI/physmon/reference/performance_amvf_gridseeder_seeded_hist.root index 9f9d071a76a919dbe2baad34a4ce74d6c7a4e438..1d453e5c49eecf1ef6ca955a9a44f058ad900c2e 100644 GIT binary patch delta 27430 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

&6#kqNiWE6;F!Zu2?v+@-m;`8;6a@GOJJy&1cX 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�!^H{;eesC25#0#hhe_Pl^p8*S7ga^F(EkBG;T=8z delta 26246 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 diff --git a/CI/physmon/reference/performance_amvf_gridseeder_ttbar_hist.root b/CI/physmon/reference/performance_amvf_gridseeder_ttbar_hist.root index 505e1dc7daaa8bbd5af5ed692bb4a3c32cb87d59..c519d0bdbc9af99341d40ee28d24310bd78878c1 100644 GIT binary patch delta 22424 zcmcG$1yq!4+bBFkcXyX`2}m~xNGmDQUD91ccMmBkjewL$cSuR2(kU%SH=JSI-|qK( z@4wdhS!;lq=bF2&uDhoN=C}z)#L3>?1pqki0001{06>;A0Fb!@`9A{kLV&!y;2^)u z001P&UuFvcP%vK#EwLMWKU)GuvK$9o%|MZ$iiY|T@Bn7zjEsz&;AAfg`Sb8E0Dy-1 zFa+cU8T#SJU*ur~S)@Nk0Koiu@;|?UTn|IRt3P}n%m}0b-hdT=O?n^`V(R#H@0mMe zaiRPU$tYM{lMWOko=`sj_k^Z~@Cf)=oZYw41!zQ{(5&QcBs%Hv7`uCyNNw$0bFA1JdS3?tM}x z95+OvyE;|lK1FsF3;@vNDpW&8&4P|92OX8+VN|$U$jO<)smncZ0Up3QH4z0^2`t~n<1WXTNG3d1R$IjtO4R|RyI}Q1nS|Vsmc}cqgEs<+chN{L$IPs*}%b*p5Kr z`dIIjJ?;2Km{*9`yHmSmTgDEgkZhYe_I`R66Tu<`q1oQemMSf6D_~!R*;j)!onu`*3yrwbJ2wvTQ2YA({}VJ*Y=^R zrg*Ylk0-{LA6G8#)_z2lXf0w2GkCoagVUBNDtn>Oonb?K<$C(cPD_50-8d_g@r&xw zV1fp2iMt}7DS5)oy7W%_)nlx;(wRxOUAG=8t1ps?kIGdQF^RVKI9$-yMAsF;u3iTC zk>eg1wc0A{LPQJ}nf-0Uv`)%u`eSRY4wUm5)W>4V=Zr0KP;B zC*TPW8ne3oyfnIiXQTBorx46bePi4U7KJ6Y)RB6PJ)Dj1_qE6B=`<%h(r(i#wwDq#xI zb9tKhqcJBD)iCoP;cN|DKdmaJcFO8FT#s6@`^JaNi2|SURCq^?ey?D%;)+T-ukFoj2 zNVB|RIV8PF=*{^__@TBM|6rljLYsj-GX7K|3{_vFy;9bDupcQ?(faEmO?PgO7GD?-b3_a zUqBfi<)1zksNktkG1Ms6Fw;yhV16?T*%V6t%#7q}v+v!;8J8)#>E)Xyl_R*D-oAS~ zkY10wohfT-@Z~v!yV!j9X&UNop7Z0;?|>Ek;kbC$$2CA#Cu6WOXyyXmL_t3sf&^D6 z5~QI-^yq_NktaCCPfDmYYIk|RtH_HjKBrFJX0lM48`Z?5RJ{;Tn?)htHwI&ItcAD;&ZZYS=I42&#Pb-3?B(UhM5E-{r~x z8zOz5KYo`bnms^|qrU?MjhV_Y^qTk?F{d4IZVGh-1`fT~Jb(Nadzv3n%zJV@GD1pv zjC>=|20v1VHr8watb9HSH-Eo)@1tBEbxK{bqER^JO1Q$)+z-S_ngJ6eswCzZ?9SAK zSZDc-gv{upuo$X97f{}@(Ul>OB85zTRQE-92m+vG(*OiHh#2TW$UqN*{^20_?EdE< zq~V>+OzgEGZ-EH_I9-U2`x6-d^v#H$L&+Z?!tFdV+;}b%Z%aiW&GZ5UEE*rnkwGhXR@~}bh5WiW zJdaJvN;Fn(oA5K&=MSlr-O|+Ji0OV7EDG@_AHBWx>g5}sMgwEq%PimPiMgn*haGu+F9*FidzHe_R63~T&qR0CPja}K#R7Bd{5;w#C~~n# zY&z^1hu7zJuGQ7~gnIPN8P@^V5w+j=D8I<{l)}z6Dn;q>waw{z#ES5_;#KQZwcBeX z8{?9-%l=7*y=&hV!slCS30Ox)p9RjO*0ZrnuWdk6AYtF|x1!~x*8o_02c=&~|KD&9 z!H4nh`1nn6dpPOl=RHMXK@KeafU9mdW`O++mj{T7ZH!xSgxT}r6(}T`vRy)s7eK9@+QhGv`9OO~vbWG5s`ldd(u> z^3VOV!Ede`EygBF{%bzghdbe;!|KkbR)`ywytp-d&M6tulpdfvdsx@G%85F{#1SgY zt=i3)>F4*`+}<8DuPE(49&o%8P_ZvVDF&d1yAD`u+;0SmgWlf__RxUco|jw`+-WS> zU;pGXYUK~~NDFf{6WkB;+Sp?_PC2|x9NM;FclRb(JsFBMaLm4y%=TE=)|Som+Q^hW z@VHlAJt?pKak~v#BK_hWg8q%~q?~~w>Cy$~AmmX1|4p%P(X`q*JZ`T|;D5(q5S*y| zj+4jAu#d4a=Z##N5U}u=u;9nyIRJxQ+<81m;Yl#mA@r(+g_11+ane4493XL7sVMC^ zp)V^AFx0&ao^I~u?zTA{S$TMP_{>1w@o^O`WOX|yPd^d=6c)VR4mFa>Jk=|ud>z_~ zQ;VNAbRBSY`wM+o4cjv=KDe?>^>O&Q$HaK8-NmU_9bMNcK9Q1<}^ODM2=6nx`=E(8P%ybhl$X+3Xr7nFfWnx0;dWe4RUL$)*GgKUeI?>=!LHmZlpOULg=t zv@dlriNE?1!`G_%DO1?DLhLf$BI|bQVAf}2>a~UI6}CXC?=ZLGIe+fRjaru9Ok@8m z0f{EUQ{oy9Sq#H0f$9onKZxRRn$Z39AB2~YFfMQx?Dw1+oFW{HM$#iebh3j`72GWg z3+5Cd0|Bjx6So+hRf7SnSBN1dGUPx^AmE5j2qI{Ko`2UvB6Pn?%m+23{a^_w00Ghu zBJZ=>ZzAt=C}h96;URKZiqyQCqWeCfawOCUYT70cZD@lF~@X67Y|KV8+8ZTDaAt0eu_N;Xb55@@)rwiH-%n z5uA}UXTo?(9Ea%O(ey4f=^qPc5-eFg70iR;+bsA~U+ikQo z`nktRO`Vv#^HOQCWVgZBDXkLv_%b;RsK*Q&dRxL8@%wv6`Q?B zSF)&kyX|{pvy{Wfe9C8o{K_11_SS#bL!w!~pFO;Zz1vHu4Il(gc<~6#Ar=EdU!@A0 zf;B{l{%CK;>(g@c#i=>wps-C^uieSe7)_f(M#_ac0Rs&!5UspJ90A6>AtwP3K%4qI z`u&3dJ;WG&s!FFVkI8j`Be9b}3BwgWg$ zSeZGMkJlW;hO8FuMPZ+wE`e49A|4xh5}}WWNDFduB5_s0z!D>+t@z2j07UCT&G`Ib z32Yb)RW1H-aUzV|au_%aX4P3D`7#MBbjAwA!biCu&>r^EJsh%4=-=Oc6bws3$vy&n zf+*Q}91klxm;-uQvi)wh*W$Drju}ji~qh++hMi?~76)9OM0Khbz4qIEO zDe=o~{FA{U+w{lQ99(T}p{4}Z-w)uK78qHQ3FQBGwvyQU{o4<0^*;tSl&z-K*i;@| z&eq*0soXyFPpPn!U~f@F=5JtjGPrpPkzs&O;6tRa1L20^#6NbfAR$D+hjk{7?CtBu z7N!~_8L`js9WM@#jM&9uVM|J?N-1`LxR`IML&SAO7Af62ZKJ8SBD?(1fo1l4kM zm8|29H9LE!WMaK>O?*w56s$vy>X6If5IDbAe$PAuL5Av1eO&rWn&TYB-?-k{lzR$P z21^|oi>aJnhT43L=Owq}*L5#xLYEk<^zu|9GlVv2|BeDF+rOXy>h+%j!0S?FAS*0H0i@h#DUMl1mE?F<6+)ZScJ5@|dm;2mf$IDUb z8Xzk?fPF&r05W;(-|0d+?)S;zAE*Z^R}Fqslb}{LA$d3m1qhi8aYjTUkP_Lg>PwiR zs&P=&1avh~MN>sqk$A#Bp6cm{LeuYJu{1Yk)&%KKp70yy)s0o|XiS&wlV}>AsiH)p zBm;Jdwp1$Mn4SHmc@R~bB%hPbCS46N^4z}HugG=+ztYY?bqLTIHKKv3<=4;D_hR}S z1FC{UYt!xZxW24g)JwPf;nOz%5`Wjm9L?}c?1?(qUvwuMCbO}0d)nyz4|VU;B@CC! zk4Iok@3V{>;h!6$2s+928N({*CpMnvMPSPaUur1PP7l?;@w9&zPy zSJiQzd8tx9h^OgGXvaj(7zx6zM4N)cU<)x% zBq(L2i}8d{Mmr-&kw<|?N5YoI&P$G|`}R%e0>=%(pi4`&s;W9>WN}1sq?L>=#F?{w z$%ngn2)pKWL2yqec2zV2h?Qx%rgq2=gqi6km*{I?45C0z75g?cv!=U=0Mhq@%cQkf zU`?PRCBsl=hr$1P{#;WboG(6pPeROz1Gd#!5)%TMxAyEgtCmc|ocaqra8 zPXGHG_4ca|uu*E>S0kxkPbI;K`uB6g_PCd_^J(k#Z ztfjP`;Z_AlbEH42<4y(KG=OfBq6*QP53_m>4Nmx9=w^}AS{%zQTkl@fu{&_D4`*$~ zn@%&g_u-Q+q<)av9Fy-SQX#7h5q#1+=!e&Z689aS!{@4Y>pEQ{bI;0irM}h0t|jLP zHSWWV{;a*HC}TC_zwjAQ{F-> zk>Bz2;?K@k6q0drpLz-~8SO6MwcJ}8Aax+428=t8$IeeOHJ|a(Yv+N;P3g)Wfe3zA-`Sg-3S`%Th{J3W zWj(7V38y^OxJ^1Pm4dcSdALL1sj+F+)*NhA4ziPRX53}DZ{{`2U{S^m&&;$QK<>?C43PqHUQJ!!RLVCH;(L=;ZC__6GF!L9?r1J$93{fMRv`%P&O_Bf! z3@s;|;S3JIJ&N}s4*U4ey(qnK_GGpYE<)UdX`ZvP%g^hE%a{Bg6aNcshd8F>!^RD=#pf*1M zAl#zv3W58&>L02T)b!V`5n0u_TB*Jq zb$q^U(_QtJjH&_v7lmpG7RAN|htbb^5`cskyyf zoRv#PsA3Q*k9l6yhc(b*sPx(-rq+*EjRf-fQqrRg6B4xjP`Cq7PCQ?pxd7VB1@Q71<}UdMtROWNBKv*dpVvg-R;KA8prq^x(+TLb{!vJ zW8k^R)3M1V=EFyXdb9{w`3&(TGPzGAPXek41|#_AdH`PuGKH!*4OyDDb9dpUuF?bS z$iCTiggBZb1wsqW(CIR{jXJZF~Q zImmdA3NkSILBPVMHu?-H9%DjW}-zp*Fz*CLW zxSi)z!;s;in^?79T70UlHQ_$RC>@%LC>fP*{;)=2p_g~((E4uwy`tAaE~9g~jpxPD-2P34@8dJ80<;Grp+222$#k6) zvNvnMRBE(tLx|(Xz!MTirshQ<%xZJS zbke|BFWXO+BQBtSq04+ z7`-hf<-}bS^Jk~6s!)@%5y@))GVSLY8?vs2y(om@;7rIKEYpCubL}1A{e zGVF4>QLS^l?yZ6wtXoy+58bk(Tb^5sH{Zaev9&rtgx#aRTZ&pDf5_DbCr};o_McGN z#(#m*d4PgphmHkJ1OnI|$n9kqm{W(40P;v0`sh!&wO4guj^~UFcz>T>b^k8|t3$>5 zcZgUovyuzqM+(9SifoqHdJwp1MCjO0X~_Q~aG8DyTm*zPSGlA7;c+Y?bl?X_>Ld(- z??K6H{(ZI=Fn^g%8)}3xK>Wp;U(y~CBJCGP@dOU8s+S1&ytG(f`t{x||KFU&P##Gm z|AK5*`ijpCL(g5N;Eu)EXC(luM2P5&VB zWyUZ=i1G>X*WrOI)DZ9plH~bwyjkrb4*e@@_~4ssLp`|1kd@MdNz|kNSnWs58;5VQ z?{*s&KJ0QoRc6a}_}_hVTr!y82?Q_Bgm;S)aK?c_Fb{F`JJnfK`CV}5?1bJnyh9;mS;cRVJRG3$KggQ9~{(s%zyu<^T>o*L3?gLQ!w{>$;)%JcHnq4(zWH z`><}8*~QJBQ2_!{oW1DmMISG^l1+%(u975*SwYX;h5tjFGQs{?n`)n6qI`-LgrR@| z@aD)pkh0<5v8%E0m$_g5IV ztLO`GK1N{0%%^UOmqSEAkU-Ehq=E%<&yUKX_$Lej>d>CKgmWVIk{2#gP5U5{5p?xH zGJPn98(kL;I*2p}%dmy5q#bC8un!5pC~?a)fh`_sf`pIchA`3-oX6qnqQ*&`UGN+L z@j~sPe>=Z_vLnO{{dImM+W(KvPdr!7>EGu5CzC(S4fvIR_;r4f&xybiFJle{3m`!Km(~)AQj@?7T~dnfp}K%4;9ZoIIA^%%%+A58nsjY_wr^2`5P|Jh zQS|Kv7Ak55`-M<&rzTc;54&N$p%Jay>TruQ`-~YpDFf%I=cs`5XgW9cN$3`eAmKRS zG7j(jXa)P2SgYGcl{{Y;L3iI!P_0VdT1}gP%`)re9M{h>EJI4zdISAy z0x$3U)~my}98F0q{6O0qjED@rB_EP`(OTczFQe|Gx1U;m&}0C(ymyifDj!W;#_GWc zqxEu-F}EE=U6bC}baKKP8105F-M6h@1ghM>lHfb3JUZ;SN{O8i-G$Tv>~>pR`rX~e zfXXF**%&9tjC?-Cx6j*defu&RjD98zr>ZI?n;U%@A&mWR;a&v=+tEa`l&GB zhfw{25m65Py7E*r)9HBAZ2g^mZCY`Y&Y>s!BbmK;nU|l3hR>oS4nut*eFEF+fyl1Ptt0}g7Q$Qt2cckB1hHW-)~VwOxb6VumIUO0`L<$Y35JY4N@QvYVZFGh6NR^pOz7fIb<<6SllZbP+*)KikchB9v2U1PF3m?@$(?DZ!+UIF2L8fou&`ueXkCGMIP0>}#QEZLb z06e0B$_hH>suF4?OSjjq&H?AnbA*p-Rb_j`7X(2om+v=#t0`VR>wycK``>smdVg(H0#G%fvSnK^mwdUeSncp-lEgeqH3>RlgDwuY>Ci z?~#Q05lmoX-}?s%RM~gNB08#waP{*gSD;ax9h8N6P3BP$jf`?0Z6MiN7_z~~T!m__ z7H#mAt2lVviFTJ!9A%Y+d86%WvR!qFXua@wdCYCI!oXM^!NiO?rVJ<(O?hOkazgFkKbf-j?u5Pb)<5wKD z5O)1#zw=i2M(;+#Ku=V#p=msgAsVvZH$|!^%loz!n&)H|)w)3YB10k;=72RnqD;_9 z-}5)L`Yac!DGVJ_Z*Dyb@Ddl_XwAeBtfQg&im$Q^4~^)G6>f$`s@3MWTf9q&^khJ# zBGlfSkyBHzXD}4n6FJI1Z`-L5&HWm>0;hi26?Oz7ycNay@aFv{ zpV>lPNXDq7C%QV#_z<=Daobkr7x0_F_n^oVFS0{{zVo>&QVlfQ2NQk*00*(>VMqS( zX^nQlL=j{U3Lq5-7=hv?p`AnOIo>CgB`N(Txi!q6p%^Z-J*pG5hqQ_nom9y*ByTin zu2f?j9zBUyRqUfD$REEj#tTx`{3wq`5G9f6Jz6?d*|XZR?lW>eZ@({cE(&)|Vhc9} zj|iNl7N-nBUk+|bwzc+rk{ZQfF2j|bnvGZk;x~M$HY?+bs%`39z$}M(2ujcquf zICf?gh%OS)CPQ@Rmg|Y$>bv)Ha|sqCT6JNMI5G6KO6TZQPCMqE%Di9GTMzON?()51 zpmEfD{?gR9%Csc7Fu}R$*^ym$4bDM9emu8dtd>4hMQK%O5#h%ohlQ*eq=`>@d<$8gnRB=^@4Pg-Ct`#HC0ttd#RT0r?(`(5m_aon!pY9I!a+H&resF5Onx#D4U z_F0S{B0h3ZBm{lXFe_{y6npFsqS&MrtYu0If>@KHJso=;9dw-?D;*tFpF5C(#XE*O zIyzsyNFp~-eFMf#OwdW}2PAD68X8B!Fac|3h|>HA^iW8^~w*>&<6d}R4cSH^T z1u$}WbZ|V;0d+LhG_^$2a=9e<2m}ZSeIUbRoi9<9&ND}!EN6X0rZBnCdk_XKfpw%H za#dg=qz5r%gg(_5$*OLNzBv#ep&B7!71H@gFzD;Ck2wq`WDH9+C%D2hgT>!u27(Lx4pD zG6pH46j3UdNqnvgn&?!W#gs<`No-3aa&}XD1B2PQ{Kuv-u$p>dB;ED=$0psxx8Rwu zybcMGT6+*BM>7C#i?_wM+E9=db^vc}a*yEQvHY%Jkg`?)Z)tNsSilA!AQX~!>LMT# z^XR~I$ub}pK6W|X@&OQTSPVcAFawoo6Ho;3JRrdAA(067jv#&DpiCfO;ui;r$(cxC z^@-so$ID1pX(Fu_;#6a)bMbn8e-!CNatMEK$QgF!V~vA#HiG0vLl&+D->b>WMyW+P zsPT2tbvA-ZJEB%7Us}1d?`7JOPi^2rA@-=S)Xxb#5nnWrXW>0re zrmw*+>YX?$4!Z;6WfQ1%TiclONz z8(OMC-$Pl`k{;YA*;@TLlS}wOsRif4*aS!kKbG2Nm7=ztj9czzCDxu4t_(eOP|g}BJkkJBMzB~982k2hpmZ}~9tL_T z?LJyVCCe@@I2ABRx&EM?!&UW;o$IKaD-yHI{v5%W z_kuad32N=9xZeGa_z}H!7h*`u{hf@gO~E(T)F4zCfbnmhmksziQLhRvEp?QfdxR?7 zHAl(GOFZo0FQI;qloov^cw(Nd390L`7t#<≤osVDj&*N7V)@W3U4Wdpp_lz#a!8 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::getIPSignificance( auto estRes = m_cfg.ipEstimator.getImpactParameters( m_extractParameters(*track), newVtx, vertexingOptions.geoContext, - vertexingOptions.magFieldContext); + vertexingOptions.magFieldContext, m_cfg.useTime); if (!estRes.ok()) { return estRes.error(); } ImpactParametersAndSigma ipas = *estRes; + // TODO: throw error when encountering negative standard deviations + double chi2Time = 0; + if (m_cfg.useTime) { + if (ipas.sigmaDeltaT.value() > 0) { + chi2Time = std::pow(ipas.deltaT.value() / ipas.sigmaDeltaT.value(), 2); + } + } + double significance = 0.; if (ipas.sigmaD0 > 0 && ipas.sigmaZ0 > 0) { significance = std::sqrt(std::pow(ipas.d0 / ipas.sigmaD0, 2) + - std::pow(ipas.z0 / ipas.sigmaZ0, 2)); + std::pow(ipas.z0 / ipas.sigmaZ0, 2) + chi2Time); } return significance; @@ -507,8 +515,6 @@ auto Acts::AdaptiveMultiVertexFinder::isMergedVertex( const std::vector*>& allVertices) const -> bool { const Vector4& candidatePos = vtx.fullPosition(); const SquareMatrix4& candidateCov = vtx.fullCovariance(); - const double candidateZPos = candidatePos[eZ]; - const double candidateZCov = candidateCov(eZ, eZ); for (const auto otherVtx : allVertices) { if (&vtx == otherVtx) { @@ -516,30 +522,40 @@ auto Acts::AdaptiveMultiVertexFinder::isMergedVertex( } const Vector4& otherPos = otherVtx->fullPosition(); const SquareMatrix4& otherCov = otherVtx->fullCovariance(); - const double otherZPos = otherPos[eZ]; - const double otherZCov = otherCov(eZ, eZ); - - const Vector4 deltaPos = otherPos - candidatePos; - const double deltaZPos = otherZPos - candidateZPos; - const double sumCovZ = otherZCov + candidateZCov; double significance = 0; if (!m_cfg.do3dSplitting) { - if (sumCovZ <= 0) { + const double deltaZPos = otherPos[eZ] - candidatePos[eZ]; + const double sumVarZ = otherCov(eZ, eZ) + candidateCov(eZ, eZ); + if (sumVarZ <= 0) { // TODO FIXME this should never happen continue; } // Use only z significance - significance = std::abs(deltaZPos) / std::sqrt(sumCovZ); + significance = std::abs(deltaZPos) / std::sqrt(sumVarZ); } else { - // Use full 3d information for significance - SquareMatrix4 sumCov = candidateCov + otherCov; - auto sumCovInverse = safeInverse(sumCov); - if (!sumCovInverse) { - // TODO FIXME this should never happen - continue; + if (m_cfg.useTime) { + // Use 4D information for significance + const Vector4 deltaPos = otherPos - candidatePos; + SquareMatrix4 sumCov = candidateCov + otherCov; + auto sumCovInverse = safeInverse(sumCov); + if (!sumCovInverse) { + // TODO FIXME this should never happen + continue; + } + significance = std::sqrt(deltaPos.dot(*sumCovInverse * deltaPos)); + } else { + // Use 3D information for significance + const Vector3 deltaPos = otherPos.head<3>() - candidatePos.head<3>(); + SquareMatrix3 sumCov = + candidateCov.topLeftCorner<3, 3>() + otherCov.topLeftCorner<3, 3>(); + auto sumCovInverse = safeInverse(sumCov); + if (!sumCovInverse) { + // TODO FIXME this should never happen + continue; + } + significance = std::sqrt(deltaPos.dot(*sumCovInverse * deltaPos)); } - significance = std::sqrt(deltaPos.dot(*sumCovInverse * deltaPos)); } if (significance < m_cfg.maxMergeVertexSignificance) { return true; diff --git a/Examples/Algorithms/Vertexing/include/ActsExamples/Vertexing/AdaptiveMultiVertexFinderAlgorithm.hpp b/Examples/Algorithms/Vertexing/include/ActsExamples/Vertexing/AdaptiveMultiVertexFinderAlgorithm.hpp index febaaa6309c..c4e828a534c 100644 --- a/Examples/Algorithms/Vertexing/include/ActsExamples/Vertexing/AdaptiveMultiVertexFinderAlgorithm.hpp +++ b/Examples/Algorithms/Vertexing/include/ActsExamples/Vertexing/AdaptiveMultiVertexFinderAlgorithm.hpp @@ -73,6 +73,8 @@ class AdaptiveMultiVertexFinderAlgorithm final : public IAlgorithm { std::string outputVertices = "vertices"; /// Enum member determining the choice of the vertex seed finder SeedFinder seedFinder; + /// Use time information in vertex seeder, finder, and fitter + bool useTime = false; /// The magnetic field std::shared_ptr bField; }; diff --git a/Examples/Algorithms/Vertexing/src/AdaptiveMultiVertexFinderAlgorithm.cpp b/Examples/Algorithms/Vertexing/src/AdaptiveMultiVertexFinderAlgorithm.cpp index f7508ef6d7a..8dd6f806e44 100644 --- a/Examples/Algorithms/Vertexing/src/AdaptiveMultiVertexFinderAlgorithm.cpp +++ b/Examples/Algorithms/Vertexing/src/AdaptiveMultiVertexFinderAlgorithm.cpp @@ -61,10 +61,10 @@ ActsExamples::AdaptiveMultiVertexFinderAlgorithm::execute( Seeder seedFinder; return executeAfterSeederChoice(ctx, seedFinder); } else if (m_cfg.seedFinder == SeedFinder::AdaptiveGridSeeder) { - using Seeder = Acts::AdaptiveGridDensityVertexFinder<109, 1, Fitter>; + using Seeder = Acts::AdaptiveGridDensityVertexFinder<9, 5, Fitter>; using Finder = Acts::AdaptiveMultiVertexFinder; // The seeder config argument corresponds to the bin size in mm - Seeder::Config seederConfig(0.05); + Seeder::Config seederConfig(0.015, 19.); Seeder seedFinder(seederConfig); return executeAfterSeederChoice(ctx, seedFinder); } else { @@ -105,6 +105,7 @@ ActsExamples::AdaptiveMultiVertexFinderAlgorithm::executeAfterSeederChoice( fitterCfg.annealingTool = annealingUtility; fitterCfg.minWeight = 0.001; fitterCfg.doSmoothing = true; + fitterCfg.useTime = m_cfg.useTime; Fitter fitter(std::move(fitterCfg), logger().cloneWithSuffix("AdaptiveMultiVertexFitter")); @@ -114,6 +115,21 @@ ActsExamples::AdaptiveMultiVertexFinderAlgorithm::executeAfterSeederChoice( finderConfig.looseConstrValue = 1e2; finderConfig.tracksMaxZinterval = 1. * Acts::UnitConstants::mm; finderConfig.maxIterations = 200; + finderConfig.useTime = m_cfg.useTime; + if (m_cfg.useTime) { + // When using time, we have an extra contribution to the chi2 by the time + // coordinate. We thus need to increase tracksMaxSignificance (i.e., the + // maximum chi2 that a track can have to be associated with a vertex). + finderConfig.tracksMaxSignificance = 7.5; + // Check if vertices are merged in space and time + // TODO rename do3dSplitting -> doFullSplitting + finderConfig.do3dSplitting = true; + // Reset the maximum significance that two vertices can have before they are + // considered as merged. The default value 3 is tuned for comparing the + // vertices' z-coordinates. Since we consider 4 dimensions here, we need to + // multiply the value by 4 and thus we set it to 3 * 4 = 12. + finderConfig.maxMergeVertexSignificance = 12.; + } // Instantiate the finder Finder finder(std::move(finderConfig), logger().clone()); diff --git a/Examples/Python/python/acts/examples/reconstruction.py b/Examples/Python/python/acts/examples/reconstruction.py index 661f63ea46c..d058f6aaac9 100644 --- a/Examples/Python/python/acts/examples/reconstruction.py +++ b/Examples/Python/python/acts/examples/reconstruction.py @@ -1609,6 +1609,7 @@ def addVertexFitting( outputVertices: str = "fittedVertices", seeder: Optional[acts.VertexSeedFinder] = acts.VertexSeedFinder.GaussianSeeder, vertexFinder: VertexFinder = VertexFinder.Truth, + useTime: Optional[bool] = False, trackSelectorConfig: Optional[TrackSelectorConfig] = None, outputDirRoot: Optional[Union[Path, str]] = None, logLevel: Optional[acts.logging.Level] = None, @@ -1618,16 +1619,22 @@ def addVertexFitting( Parameters ---------- s: Sequencer - the sequencer module to which we add the Seeding steps (returned from addVertexFitting) + the sequencer module to which we add the Seeding steps (returned from + addVertexFitting) field : magnetic field outputDirRoot : Path|str, path, None the output folder for the Root output, None triggers no output associatedParticles : str, "associatedTruthParticles" VertexPerformanceWriter.inputAssociatedTruthParticles seeder : enum member - determines vertex seeder, can be acts.seeder.GaussianSeeder or acts.seeder.AdaptiveGridSeeder + determines vertex seeder for AMVF, can be acts.seeder.GaussianSeeder or + acts.seeder.AdaptiveGridSeeder vertexFinder : VertexFinder, Truth vertexFinder algorithm: one of Truth, AMVF, Iterative + useTime : bool + determines whether time information is used in vertex seeder, finder, + and fitter + only implemented for the AMVF and the AdaptiveGridSeeder logLevel : acts.logging.Level, None logging level to override setting given in `s` """ @@ -1693,8 +1700,9 @@ def addVertexFitting( elif vertexFinder == VertexFinder.AMVF: findVertices = AdaptiveMultiVertexFinderAlgorithm( level=customLogLevel(), - bField=field, seedFinder=seeder, + useTime=useTime, + bField=field, inputTrackParameters=trackParameters, outputProtoVertices=outputProtoVertices, outputVertices=outputVertices, diff --git a/Examples/Python/src/Vertexing.cpp b/Examples/Python/src/Vertexing.cpp index e8f456aad57..04fc078e0c4 100644 --- a/Examples/Python/src/Vertexing.cpp +++ b/Examples/Python/src/Vertexing.cpp @@ -39,7 +39,7 @@ void addVertexing(Context& ctx) { ACTS_PYTHON_DECLARE_ALGORITHM( ActsExamples::AdaptiveMultiVertexFinderAlgorithm, mex, "AdaptiveMultiVertexFinderAlgorithm", inputTrackParameters, - outputProtoVertices, outputVertices, seedFinder, bField); + outputProtoVertices, outputVertices, seedFinder, useTime, bField); ACTS_PYTHON_DECLARE_ALGORITHM(ActsExamples::IterativeVertexFinderAlgorithm, mex, "IterativeVertexFinderAlgorithm",