--- /srv/rebuilderd/tmp/rebuilderdqIwhdy/inputs/siscone-doc-pdf_3.0.5-3_all.deb +++ /srv/rebuilderd/tmp/rebuilderdqIwhdy/out/siscone-doc-pdf_3.0.5-3_all.deb ├── file list │ @@ -1,3 +1,3 @@ │ -rw-r--r-- 0 0 0 4 2025-01-07 11:57:28.000000 debian-binary │ -rw-r--r-- 0 0 0 808 2025-01-07 11:57:28.000000 control.tar.xz │ --rw-r--r-- 0 0 0 1647152 2025-01-07 11:57:28.000000 data.tar.xz │ +-rw-r--r-- 0 0 0 1645904 2025-01-07 11:57:28.000000 data.tar.xz ├── control.tar.xz │ ├── control.tar │ │ ├── ./control │ │ │ @@ -1,13 +1,13 @@ │ │ │ Package: siscone-doc-pdf │ │ │ Source: siscone │ │ │ Version: 3.0.5-3 │ │ │ Architecture: all │ │ │ Maintainer: Debian Science Maintainers │ │ │ -Installed-Size: 1620 │ │ │ +Installed-Size: 1618 │ │ │ Section: doc │ │ │ Priority: optional │ │ │ Multi-Arch: foreign │ │ │ Homepage: http://projects.hepforge.org/siscone/ │ │ │ Description: Developer's reference manual of SISCone (PDF) │ │ │ SISCone implements a Seedless Infrared (IR) Safe Cone jet algorithm, it takes │ │ │ N^2*ln(N) time to find jets among N particles, comparing to N*2^N time of │ │ ├── ./md5sums │ │ │ ├── ./md5sums │ │ │ │┄ Files differ ├── data.tar.xz │ ├── data.tar │ │ ├── file list │ │ │ @@ -3,10 +3,10 @@ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-01-07 11:57:28.000000 ./usr/share/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-01-07 11:57:28.000000 ./usr/share/doc/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-01-07 11:57:28.000000 ./usr/share/doc/siscone-doc-pdf/ │ │ │ -rw-r--r-- 0 root (0) root (0) 1083 2025-01-07 11:57:28.000000 ./usr/share/doc/siscone-doc-pdf/changelog.Debian.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 16688 2020-04-24 08:56:01.000000 ./usr/share/doc/siscone-doc-pdf/changelog.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 1151 2025-01-07 11:56:31.000000 ./usr/share/doc/siscone-doc-pdf/copyright │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-01-07 11:57:28.000000 ./usr/share/doc/siscone-doc-pdf/pdf/ │ │ │ --rw-r--r-- 0 root (0) root (0) 1627199 2025-01-07 11:57:28.000000 ./usr/share/doc/siscone-doc-pdf/pdf/refman.pdf.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 1625959 2025-01-07 11:57:28.000000 ./usr/share/doc/siscone-doc-pdf/pdf/refman.pdf.gz │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-01-07 11:57:28.000000 ./usr/share/doc-base/ │ │ │ -rw-r--r-- 0 root (0) root (0) 240 2025-01-07 11:56:31.000000 ./usr/share/doc-base/siscone-doc-pdf.siscone-pdf │ │ ├── ./usr/share/doc/siscone-doc-pdf/pdf/refman.pdf.gz │ │ │ ├── refman.pdf │ │ │ │ ├── pdftotext {} - │ │ │ │ │ @@ -1635,35 +1635,35 @@ │ │ │ │ │ 4.37.2.1 centre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 │ │ │ │ │ 4.37.2.2 is_stable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 │ │ │ │ │ 4.37.2.3 next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 │ │ │ │ │ 5 File Documentation │ │ │ │ │ │ │ │ │ │ 179 │ │ │ │ │ │ │ │ │ │ -5.1 main.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 │ │ │ │ │ -5.2 options.cpp │ │ │ │ │ +5.1 area.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 │ │ │ │ │ +5.2 area.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 │ │ │ │ │ +5.3 main.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 │ │ │ │ │ +5.4 options.cpp │ │ │ │ │ │ │ │ │ │ -. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 │ │ │ │ │ +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 │ │ │ │ │ │ │ │ │ │ -5.3 options.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 │ │ │ │ │ -5.4 sample.cpp │ │ │ │ │ +5.5 options.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 │ │ │ │ │ +5.6 sample.cpp │ │ │ │ │ │ │ │ │ │ -. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 │ │ │ │ │ +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 │ │ │ │ │ │ │ │ │ │ -5.5 spherical.cpp │ │ │ │ │ +5.7 spherical.cpp │ │ │ │ │ │ │ │ │ │ -. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 │ │ │ │ │ +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 │ │ │ │ │ │ │ │ │ │ -5.6 test.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 │ │ │ │ │ -5.7 times.cpp │ │ │ │ │ +5.8 test.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 │ │ │ │ │ +5.9 times.cpp │ │ │ │ │ │ │ │ │ │ -. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 │ │ │ │ │ +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 │ │ │ │ │ │ │ │ │ │ -5.8 area.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 │ │ │ │ │ -5.9 area.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 │ │ │ │ │ 5.10 area.h │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 │ │ │ │ │ │ │ │ │ │ 5.11 circulator.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ @@ -1683,62 +1683,62 @@ │ │ │ │ │ 5.14.1.4 PT_TSHOLD │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 │ │ │ │ │ │ │ │ │ │ 5.14.2 Variable Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 │ │ │ │ │ 5.14.2.1 twopi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 │ │ │ │ │ 5.15 defines.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 │ │ │ │ │ -5.16 geom_2d.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 │ │ │ │ │ -5.17 geom_2d.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 │ │ │ │ │ -5.18 geom_2d.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 │ │ │ │ │ -5.19 geom_2d.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 │ │ │ │ │ -5.20 quadtree.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 │ │ │ │ │ -5.21 quadtree.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 │ │ │ │ │ -5.22 ranlux.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 │ │ │ │ │ -5.23 siscone/ranlux.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 │ │ │ │ │ -5.23.1 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 │ │ │ │ │ -5.23.1.1 ranlux_get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 │ │ │ │ │ -5.23.1.2 ranlux_init() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 │ │ │ │ │ -5.23.1.3 ranlux_print_state() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 │ │ │ │ │ -5.24 ranlux.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 │ │ │ │ │ -5.25 reference.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 │ │ │ │ │ -5.26 reference.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 │ │ │ │ │ -5.27 siscone_error.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 │ │ │ │ │ -5.28 siscone_error.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 │ │ │ │ │ +5.16 quadtree.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 │ │ │ │ │ +5.17 quadtree.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 │ │ │ │ │ +5.18 ranlux.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 │ │ │ │ │ +5.19 siscone/ranlux.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 │ │ │ │ │ +5.19.1 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 │ │ │ │ │ +5.19.1.1 ranlux_get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 │ │ │ │ │ +5.19.1.2 ranlux_init() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 │ │ │ │ │ +5.19.1.3 ranlux_print_state() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 │ │ │ │ │ +5.20 ranlux.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 │ │ │ │ │ +5.21 reference.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 │ │ │ │ │ +5.22 reference.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 │ │ │ │ │ +5.23 siscone_error.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 │ │ │ │ │ +5.24 siscone_error.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 │ │ │ │ │ +5.25 geom_2d.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 │ │ │ │ │ +5.26 geom_2d.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 │ │ │ │ │ +5.27 geom_2d.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 │ │ │ │ │ +5.28 geom_2d.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 │ │ │ │ │ 5.29 hash.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 │ │ │ │ │ 5.30 hash.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 │ │ │ │ │ 5.31 hash.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 │ │ │ │ │ 5.32 hash.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 │ │ │ │ │ 5.33 momentum.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 │ │ │ │ │ 5.34 momentum.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 │ │ │ │ │ 5.35 momentum.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 │ │ │ │ │ 5.36 momentum.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 │ │ │ │ │ 5.37 protocones.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 │ │ │ │ │ -5.38 protocones.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 │ │ │ │ │ +5.38 protocones.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 │ │ │ │ │ 5.39 protocones.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 │ │ │ │ │ 5.40 protocones.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 │ │ │ │ │ 5.41 siscone.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 │ │ │ │ │ -5.42 siscone.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 │ │ │ │ │ +5.42 siscone.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ xvi │ │ │ │ │ │ │ │ │ │ 5.43 siscone.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 │ │ │ │ │ 5.44 siscone.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 │ │ │ │ │ -5.45 split_merge.cpp │ │ │ │ │ +5.45 split_merge.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 │ │ │ │ │ +5.46 split_merge.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 │ │ │ │ │ +5.47 split_merge.cpp │ │ │ │ │ │ │ │ │ │ -. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 │ │ │ │ │ +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 │ │ │ │ │ │ │ │ │ │ -5.46 split_merge.cpp │ │ │ │ │ +5.48 split_merge.cpp │ │ │ │ │ │ │ │ │ │ -. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 │ │ │ │ │ +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 │ │ │ │ │ │ │ │ │ │ -5.47 split_merge.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 │ │ │ │ │ -5.48 split_merge.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 │ │ │ │ │ 5.49 vicinity.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 │ │ │ │ │ 5.50 vicinity.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 │ │ │ │ │ 5.51 vicinity.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 │ │ │ │ │ 5.52 vicinity.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 │ │ │ │ │ Index │ │ │ │ │ │ │ │ │ │ 311 │ │ │ │ │ @@ -2009,48 +2009,48 @@ │ │ │ │ │ siscone/siscone_error.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ siscone/siscone_error.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ siscone/split_merge.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ siscone/split_merge.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ siscone/vicinity.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ -189 │ │ │ │ │ 179 │ │ │ │ │ -180 │ │ │ │ │ -183 │ │ │ │ │ 184 │ │ │ │ │ -185 │ │ │ │ │ 186 │ │ │ │ │ -188 │ │ │ │ │ +189 │ │ │ │ │ +189 │ │ │ │ │ 191 │ │ │ │ │ +192 │ │ │ │ │ +193 │ │ │ │ │ +180 │ │ │ │ │ 195 │ │ │ │ │ 196 │ │ │ │ │ 197 │ │ │ │ │ 198 │ │ │ │ │ 199 │ │ │ │ │ -202 │ │ │ │ │ -206 │ │ │ │ │ +214 │ │ │ │ │ +218 │ │ │ │ │ 220 │ │ │ │ │ 225 │ │ │ │ │ 227 │ │ │ │ │ 232 │ │ │ │ │ 236 │ │ │ │ │ 255 │ │ │ │ │ -208 │ │ │ │ │ +202 │ │ │ │ │ +206 │ │ │ │ │ +206 │ │ │ │ │ +209 │ │ │ │ │ +210 │ │ │ │ │ 212 │ │ │ │ │ -213 │ │ │ │ │ -215 │ │ │ │ │ -216 │ │ │ │ │ -218 │ │ │ │ │ 259 │ │ │ │ │ 266 │ │ │ │ │ -219 │ │ │ │ │ -219 │ │ │ │ │ -282 │ │ │ │ │ -298 │ │ │ │ │ +213 │ │ │ │ │ +213 │ │ │ │ │ +287 │ │ │ │ │ +271 │ │ │ │ │ 304 │ │ │ │ │ │ │ │ │ │ 6 │ │ │ │ │ │ │ │ │ │ File Index │ │ │ │ │ │ │ │ │ │ siscone/vicinity.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ @@ -2066,26 +2066,26 @@ │ │ │ │ │ siscone/spherical/siscone.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ siscone/spherical/split_merge.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ siscone/spherical/split_merge.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ siscone/spherical/vicinity.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ siscone/spherical/vicinity.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 309 │ │ │ │ │ -204 │ │ │ │ │ -207 │ │ │ │ │ +216 │ │ │ │ │ +219 │ │ │ │ │ 223 │ │ │ │ │ 226 │ │ │ │ │ 229 │ │ │ │ │ 234 │ │ │ │ │ -245 │ │ │ │ │ +246 │ │ │ │ │ 257 │ │ │ │ │ -262 │ │ │ │ │ +263 │ │ │ │ │ 267 │ │ │ │ │ +273 │ │ │ │ │ 268 │ │ │ │ │ -295 │ │ │ │ │ 301 │ │ │ │ │ 308 │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ Chapter 4 │ │ │ │ │ │ │ │ │ │ @@ -12306,15 +12306,15 @@ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ Chapter 5 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ 5.1 │ │ │ │ │ │ │ │ │ │ -main.cpp │ │ │ │ │ +area.cpp │ │ │ │ │ │ │ │ │ │ 00001 │ │ │ │ │ 00002 // File: main.cpp │ │ │ │ │ // │ │ │ │ │ 00003 // Description: main program that runs siscone from the command line │ │ │ │ │ // │ │ │ │ │ 00004 // This file is part of the SISCone project. │ │ │ │ │ @@ -12350,14 +12350,852 @@ │ │ │ │ │ 00019 // You should have received a copy of the GNU General Public License │ │ │ │ │ // │ │ │ │ │ 00020 // along with this program; if not, write to the Free Software │ │ │ │ │ // │ │ │ │ │ 00021 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ 00022 // │ │ │ │ │ // │ │ │ │ │ +00023 // $Revision:: 171 │ │ │ │ │ +$// │ │ │ │ │ +00024 // $Date:: 2007-06-19 10:26:05 -0400 (Tue, 19 Jun 2007) │ │ │ │ │ +$// │ │ │ │ │ +00026 │ │ │ │ │ +00027 #include │ │ │ │ │ +00028 #include │ │ │ │ │ +00029 #include │ │ │ │ │ +00030 #include "siscone/momentum.h" │ │ │ │ │ +00031 #include "siscone/siscone.h" │ │ │ │ │ +00032 #include "siscone/area.h" │ │ │ │ │ +00033 #include "options.h" │ │ │ │ │ +00034 │ │ │ │ │ +00035 using namespace std; │ │ │ │ │ +00036 using namespace siscone; │ │ │ │ │ +00037 │ │ │ │ │ +00038 int main(int argc, char *argv[]){ │ │ │ │ │ +00039 │ │ │ │ │ +vector particles; │ │ │ │ │ +00040 │ │ │ │ │ +Carea siscone_with_area; │ │ │ │ │ +00041 │ │ │ │ │ +int i,N; │ │ │ │ │ +00042 │ │ │ │ │ +double px,py,pz,E; │ │ │ │ │ +00043 │ │ │ │ │ +Coptions opts; │ │ │ │ │ +00044 │ │ │ │ │ +char fline[512]; │ │ │ │ │ +00045 │ │ │ │ │ +00046 │ │ │ │ │ +if (opts.parse_options(argc, argv)) │ │ │ │ │ +00047 │ │ │ │ │ +exit(1); │ │ │ │ │ +00048 │ │ │ │ │ +00049 │ │ │ │ │ +// deal with help message │ │ │ │ │ +00050 │ │ │ │ │ +if (opts.help_flag){ │ │ │ │ │ +00051 │ │ │ │ │ +opts.print_help(); │ │ │ │ │ +00052 │ │ │ │ │ +exit(0); │ │ │ │ │ +00053 │ │ │ │ │ +} │ │ │ │ │ +00054 │ │ │ │ │ +00055 │ │ │ │ │ +// deal with version flag │ │ │ │ │ +00056 │ │ │ │ │ +if (opts.version_flag){ │ │ │ │ │ +00057 │ │ │ │ │ +opts.print_version(); │ │ │ │ │ +00058 │ │ │ │ │ +exit(0); │ │ │ │ │ +00059 │ │ │ │ │ +} │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 180 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ +00060 │ │ │ │ │ +00061 │ │ │ │ │ +// various files used to read input data and store results │ │ │ │ │ +00062 │ │ │ │ │ +FILE *flux; │ │ │ │ │ +00063 │ │ │ │ │ +FILE *fpart; │ │ │ │ │ +00064 │ │ │ │ │ +00065 │ │ │ │ │ +// read particles │ │ │ │ │ +00066 │ │ │ │ │ +if (opts.verbose_flag) cout « "reading particles" « endl; │ │ │ │ │ +00067 │ │ │ │ │ +flux = fopen(opts.ev_name, "r"); │ │ │ │ │ +00068 │ │ │ │ │ +if (flux==NULL){ │ │ │ │ │ +00069 │ │ │ │ │ +cerr « "cannot read event" « endl; │ │ │ │ │ +00070 │ │ │ │ │ +return 1; │ │ │ │ │ +00071 │ │ │ │ │ +} │ │ │ │ │ +00072 │ │ │ │ │ +00073 │ │ │ │ │ +N=0; │ │ │ │ │ +00074 │ │ │ │ │ +fpart = fopen("particles.dat", "w+"); │ │ │ │ │ +00075 │ │ │ │ │ +while ((opts.N_stop!=0) && (fgets(fline, 512, flux)!=NULL)){ │ │ │ │ │ +00076 │ │ │ │ │ +if (fline[0]!=’#’){ // skip lines beginning with ’#’ │ │ │ │ │ +00077 │ │ │ │ │ +if (sscanf(fline, "%le%le%le%le", &px, &py, &pz, &E)==4){ │ │ │ │ │ +00078 │ │ │ │ │ +particles.push_back(Cmomentum(px, py, pz, E)); │ │ │ │ │ +00079 │ │ │ │ │ +fprintf(fpart, "%e\t%e\n", │ │ │ │ │ +particles[N].eta, particles[N].phi); │ │ │ │ │ +00080 │ │ │ │ │ +N++; │ │ │ │ │ +00081 │ │ │ │ │ +opts.N_stop--; │ │ │ │ │ +00082 │ │ │ │ │ +} else { │ │ │ │ │ +00083 │ │ │ │ │ +cout « "error in reading event file Giving up." « endl; │ │ │ │ │ +00084 │ │ │ │ │ +fclose(flux); │ │ │ │ │ +00085 │ │ │ │ │ +fclose(fpart); │ │ │ │ │ +00086 │ │ │ │ │ +exit(2); │ │ │ │ │ +00087 │ │ │ │ │ +} │ │ │ │ │ +00088 │ │ │ │ │ +} │ │ │ │ │ +00089 │ │ │ │ │ +} │ │ │ │ │ +00090 │ │ │ │ │ +fclose(flux); │ │ │ │ │ +00091 │ │ │ │ │ +fclose(fpart); │ │ │ │ │ +00092 │ │ │ │ │ +if (opts.verbose_flag) │ │ │ │ │ +00093 │ │ │ │ │ +cout « " working with " « N « " particles" « endl; │ │ │ │ │ +00094 │ │ │ │ │ +00095 │ │ │ │ │ +// compute jets │ │ │ │ │ +00096 │ │ │ │ │ +if (opts.verbose_flag) cout « "computing jet contents" « endl; │ │ │ │ │ +00097 │ │ │ │ │ +i=siscone_with_area.compute_areas(particles, opts.R, opts.f, opts.npass, opts.SM_var); │ │ │ │ │ +00098 │ │ │ │ │ +if (opts.verbose_flag){ │ │ │ │ │ +00099 │ │ │ │ │ +unsigned int pass; │ │ │ │ │ +00100 │ │ │ │ │ +for (pass=0;pass::iterator ja; │ │ │ │ │ +00111 │ │ │ │ │ +for (ja=siscone_with_area.jet_areas.begin();ja!=siscone_with_area.jet_areas.end();ja++){ │ │ │ │ │ +00112 │ │ │ │ │ +fprintf(flux, "%e\t%e\t%e\t%e\t%e\n", │ │ │ │ │ +00113 │ │ │ │ │ +ja->v.perp(), ja->v.eta, ja->v.phi, │ │ │ │ │ +00114 │ │ │ │ │ +ja->active_area, ja->passive_area); │ │ │ │ │ +00115 │ │ │ │ │ +} │ │ │ │ │ +00116 │ │ │ │ │ +00117 │ │ │ │ │ +fclose(flux); │ │ │ │ │ +00118 │ │ │ │ │ +00119 │ │ │ │ │ +if (opts.verbose_flag) │ │ │ │ │ +00120 │ │ │ │ │ +cout « "bye..." « endl; │ │ │ │ │ +00121 │ │ │ │ │ +00122 │ │ │ │ │ +return 0; │ │ │ │ │ +00123 } │ │ │ │ │ + │ │ │ │ │ +5.2 │ │ │ │ │ + │ │ │ │ │ +area.cpp │ │ │ │ │ + │ │ │ │ │ +00001 // -*- C++ -*00003 // File: area.h │ │ │ │ │ +00004 // Description: header file for the computation of jet area │ │ │ │ │ +00005 // This file is part of the SISCone project. │ │ │ │ │ +00006 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ +00007 // │ │ │ │ │ +00008 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ +00009 // │ │ │ │ │ +00010 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ +00011 // it under the terms of the GNU General Public License as published by │ │ │ │ │ +00012 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ +00013 // (at your option) any later version. │ │ │ │ │ +00014 // │ │ │ │ │ +00015 // This program is distributed in the hope that it will be useful, │ │ │ │ │ +00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ + │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.2 area.cpp │ │ │ │ │ + │ │ │ │ │ +00018 // GNU General Public License for more details. │ │ │ │ │ +// │ │ │ │ │ +00019 // │ │ │ │ │ +// │ │ │ │ │ +00020 // You should have received a copy of the GNU General Public License │ │ │ │ │ +// │ │ │ │ │ +00021 // along with this program; if not, write to the Free Software │ │ │ │ │ +// │ │ │ │ │ +00022 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ +00023 // │ │ │ │ │ +// │ │ │ │ │ +00024 // $Revision:: 149 │ │ │ │ │ +$// │ │ │ │ │ +00025 // $Date:: 2007-03-15 00:13:58 +0100 (Thu, 15 Mar 2007) │ │ │ │ │ +$// │ │ │ │ │ +00027 │ │ │ │ │ +00028 #include "area.h" │ │ │ │ │ +00029 #include "momentum.h" │ │ │ │ │ +00030 #include │ │ │ │ │ +00031 #include │ │ │ │ │ +00032 │ │ │ │ │ +00033 namespace siscone{ │ │ │ │ │ +00034 using namespace std; │ │ │ │ │ +00035 │ │ │ │ │ +00036 /******************************************************* │ │ │ │ │ +00037 * Cjet_area implementation │ │ │ │ │ +* │ │ │ │ │ +00038 * real Jet information, including its area(s) │ │ │ │ │ +* │ │ │ │ │ +00039 * │ │ │ │ │ +* │ │ │ │ │ +00040 * This class contains information for one single jet. * │ │ │ │ │ +00041 * That is, first, its momentum carrying information │ │ │ │ │ +* │ │ │ │ │ +00042 * about its centre and pT, and second, its particle │ │ │ │ │ +* │ │ │ │ │ +00043 * contents (from CJeT). │ │ │ │ │ +* │ │ │ │ │ +00044 * Compared to the Cjet class, it also includes the │ │ │ │ │ +* │ │ │ │ │ +00045 * passive and active areas of the jet computed using * │ │ │ │ │ +00046 * the Carea class. │ │ │ │ │ +* │ │ │ │ │ +00047 *******************************************************/ │ │ │ │ │ +00048 │ │ │ │ │ +00049 // default ctor │ │ │ │ │ +00050 //-------------00051 Cjet_area::Cjet_area(){ │ │ │ │ │ +00052 │ │ │ │ │ +active_area = passive_area = 0.0; │ │ │ │ │ +00053 } │ │ │ │ │ +00054 │ │ │ │ │ +00055 // jet-initiated ctor │ │ │ │ │ +00056 //------------------00057 Cjet_area::Cjet_area(Cjet &j){ │ │ │ │ │ +00058 │ │ │ │ │ +v = j.v; │ │ │ │ │ +00059 │ │ │ │ │ +n = j.n; │ │ │ │ │ +00060 │ │ │ │ │ +contents = j.contents; │ │ │ │ │ +00061 │ │ │ │ │ +00062 │ │ │ │ │ +pass = j.pass; │ │ │ │ │ +00063 │ │ │ │ │ +00064 │ │ │ │ │ +pt_tilde = j.pt_tilde; │ │ │ │ │ +00065 │ │ │ │ │ +sm_var2 = j.sm_var2; │ │ │ │ │ +00066 │ │ │ │ │ +00067 │ │ │ │ │ +active_area = passive_area = 0.0; │ │ │ │ │ +00068 } │ │ │ │ │ +00069 │ │ │ │ │ +00070 // default dtor │ │ │ │ │ +00071 //-------------00072 Cjet_area::~Cjet_area(){ │ │ │ │ │ +00073 │ │ │ │ │ +00074 } │ │ │ │ │ +00075 │ │ │ │ │ +00076 │ │ │ │ │ +00077 /****************************************************************** │ │ │ │ │ +00078 * Csiscone_area implementation │ │ │ │ │ +* │ │ │ │ │ +00079 * class for the computation of jet areas. │ │ │ │ │ +* │ │ │ │ │ +00080 * │ │ │ │ │ +* │ │ │ │ │ +00081 * This is the class user should use whenever you want to compute * │ │ │ │ │ +00082 * the jet area (passive and active). │ │ │ │ │ +* │ │ │ │ │ +00083 * It uses the SISCone algorithm to perform the jet analysis. │ │ │ │ │ +* │ │ │ │ │ +00084 ******************************************************************/ │ │ │ │ │ +00085 │ │ │ │ │ +00086 // default ctor │ │ │ │ │ +00087 //------------00088 Carea::Carea(){ │ │ │ │ │ +00089 │ │ │ │ │ +grid_size = 60; │ │ │ │ │ +// 3600 particles added │ │ │ │ │ +00090 │ │ │ │ │ +grid_eta_max = 6.0; // maybe having twice more points in eta than in phi should be nice │ │ │ │ │ +00091 │ │ │ │ │ +grid_shift = 0.5; │ │ │ │ │ +// 50% "shacking" │ │ │ │ │ +00092 │ │ │ │ │ +00093 │ │ │ │ │ +pt_soft = 1e-100; │ │ │ │ │ +00094 │ │ │ │ │ +pt_shift = 0.05; │ │ │ │ │ +00095 │ │ │ │ │ +pt_soft_min = 1e-90; │ │ │ │ │ +00096 } │ │ │ │ │ +00097 │ │ │ │ │ +00098 // default dtor │ │ │ │ │ +00099 //------------00100 Carea::~Carea(){ │ │ │ │ │ +00101 │ │ │ │ │ +00102 } │ │ │ │ │ +00103 │ │ │ │ │ +00104 /* │ │ │ │ │ +00105 * compute the jet areas from a given particle set. │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +181 │ │ │ │ │ + │ │ │ │ │ + 182 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ +00106 * The parameters of this method are the ones which control the jet clustering alghorithm. │ │ │ │ │ +00107 * Note that the pt_min is not allowed here soince the jet-area determination involves soft │ │ │ │ │ +00108 * particles/jets and thus is used internally. │ │ │ │ │ +00109 * - _particles │ │ │ │ │ +list of particles │ │ │ │ │ +00110 * - _radius │ │ │ │ │ +cone radius │ │ │ │ │ +00111 * - _f │ │ │ │ │ +shared energy threshold for splitting&merging │ │ │ │ │ +00112 * - _n_pass_max maximum number of passes (0=full search, the default) │ │ │ │ │ +00113 * - _split_merge_scale │ │ │ │ │ +the scale choice for the split-merge procedure │ │ │ │ │ +00114 * │ │ │ │ │ +NOTE: SM_pt leads to IR unsafety for some events with momentum conservation. │ │ │ │ │ +00115 * │ │ │ │ │ +SM_Et is IR safe but not boost invariant and not implemented(!) │ │ │ │ │ +00116 * │ │ │ │ │ +SM_mt is IR safe for hadronic events, but not for decays of two │ │ │ │ │ +00117 * │ │ │ │ │ +back-to-back particles of identical mass │ │ │ │ │ +00118 * │ │ │ │ │ +SM_pttilde │ │ │ │ │ +00119 * │ │ │ │ │ +is always IR safe, and also boost invariant (default) │ │ │ │ │ +00120 * - _hard_only │ │ │ │ │ +when this is set on, only hard jets are computed │ │ │ │ │ +00121 * │ │ │ │ │ +and not the purely ghosted jets (default: false) │ │ │ │ │ +00122 * return the jets together with their areas │ │ │ │ │ +00123 * The return value is the number of jets (including pure-ghost ones if they are included) │ │ │ │ │ +00124 ********************************************************************************************/ │ │ │ │ │ +00125 int Carea::compute_areas(std::vector &_particles, double _radius, double _f, │ │ │ │ │ +00126 │ │ │ │ │ +int _n_pass_max, Esplit_merge_scale _split_merge_scale, │ │ │ │ │ +00127 │ │ │ │ │ +bool _hard_only){ │ │ │ │ │ +00128 │ │ │ │ │ +00129 │ │ │ │ │ +vector all_particles; │ │ │ │ │ +00130 │ │ │ │ │ +00131 │ │ │ │ │ +// put "hardest cut-off" if needed │ │ │ │ │ +00132 │ │ │ │ │ +// this avoids computation of ghosted jets when not required and │ │ │ │ │ +00133 │ │ │ │ │ +// significantly shortens the SM. │ │ │ │ │ +00134 │ │ │ │ │ +if (_hard_only){ │ │ │ │ │ +00135 │ │ │ │ │ +SM_var2_hardest_cut_off = pt_soft_min*pt_soft_min; │ │ │ │ │ +00136 │ │ │ │ │ +} │ │ │ │ │ +00137 │ │ │ │ │ +00138 │ │ │ │ │ +// clear potential previous runs │ │ │ │ │ +00139 │ │ │ │ │ +jet_areas.clear(); │ │ │ │ │ +00140 │ │ │ │ │ +00141 │ │ │ │ │ +// put initial set of particles in the list │ │ │ │ │ +00142 │ │ │ │ │ +int n_hard = _particles.size(); │ │ │ │ │ +00143 │ │ │ │ │ +all_particles = _particles; │ │ │ │ │ +00144 │ │ │ │ │ +00145 │ │ │ │ │ +// build the set of ghost particles and add them to the particle list │ │ │ │ │ +00146 │ │ │ │ │ +int i,j; │ │ │ │ │ +00147 │ │ │ │ │ +double eta_g,phi_g,pt_g; │ │ │ │ │ +00148 │ │ │ │ │ +00149 │ │ │ │ │ +for (i=0;i= n_hard │ │ │ │ │ +00167 │ │ │ │ │ +// and deduce the number of ghosts in the jet, hence the area. │ │ │ │ │ +00168 │ │ │ │ │ +double area_factor = (2.0*grid_eta_max/grid_size)*(twopi/grid_size); │ │ │ │ │ +00169 │ │ │ │ │ +00170 │ │ │ │ │ +for (i=0;i<(int) jets.size();i++){ │ │ │ │ │ +00171 │ │ │ │ │ +jet_areas.push_back(jets[i]); │ │ │ │ │ +00172 │ │ │ │ │ +j=0; │ │ │ │ │ +00173 │ │ │ │ │ +while ((j &_particles, double _radius, double _f, │ │ │ │ │ +00218 │ │ │ │ │ +int _n_pass_max, Esplit_merge_scale _split_merge_scale){ │ │ │ │ │ +00219 │ │ │ │ │ +00220 │ │ │ │ │ +vector all_particles; │ │ │ │ │ +00221 │ │ │ │ │ +00222 │ │ │ │ │ +// in the case of passive area, we do not need │ │ │ │ │ +00223 │ │ │ │ │ +// to put the ghosts in the stable-cone search │ │ │ │ │ +00224 │ │ │ │ │ +// (they do no influence the list of stable cones) │ │ │ │ │ +00225 │ │ │ │ │ +// Here’s how it goes... │ │ │ │ │ +00226 │ │ │ │ │ +stable_cone_soft_pt2_cutoff = pt_soft_min*pt_soft_min; │ │ │ │ │ +00227 │ │ │ │ │ +00228 │ │ │ │ │ +// clear potential previous runs │ │ │ │ │ +00229 │ │ │ │ │ +jet_areas.clear(); │ │ │ │ │ +00230 │ │ │ │ │ +00231 │ │ │ │ │ +// put initial set of particles in the list │ │ │ │ │ +00232 │ │ │ │ │ +int n_hard = _particles.size(); │ │ │ │ │ +00233 │ │ │ │ │ +all_particles = _particles; │ │ │ │ │ +00234 │ │ │ │ │ +00235 │ │ │ │ │ +// build the set of ghost particles and add them to the particle list │ │ │ │ │ +00236 │ │ │ │ │ +int i,j; │ │ │ │ │ +00237 │ │ │ │ │ +double eta_g,phi_g,pt_g; │ │ │ │ │ +00238 │ │ │ │ │ +00239 │ │ │ │ │ +for (i=0;i= n_hard │ │ │ │ │ +00257 │ │ │ │ │ +// and deduce the number of ghosts in the jet, hence the area. │ │ │ │ │ +00258 │ │ │ │ │ +double area_factor = (2.0*grid_eta_max/grid_size)*(twopi/grid_size); │ │ │ │ │ +00259 │ │ │ │ │ +for (i=0;i<(int) jets.size();i++){ │ │ │ │ │ +00260 │ │ │ │ │ +j=0; │ │ │ │ │ +00261 │ │ │ │ │ +while ((j &_particles, double _radius, double _f, │ │ │ │ │ +00292 │ │ │ │ │ +int _n_pass_max, Esplit_merge_scale _split_merge_scale, │ │ │ │ │ +00293 │ │ │ │ │ +bool _hard_only){ │ │ │ │ │ +00294 │ │ │ │ │ +00295 │ │ │ │ │ +vector all_particles; │ │ │ │ │ +00296 │ │ │ │ │ +00297 │ │ │ │ │ +// put "hardest cut-off" if needed │ │ │ │ │ +00298 │ │ │ │ │ +// this avoids computation of ghosted jets when not required and │ │ │ │ │ +00299 │ │ │ │ │ +// significantly shortens the SM. │ │ │ │ │ +00300 │ │ │ │ │ +if (_hard_only){ │ │ │ │ │ +00301 │ │ │ │ │ +SM_var2_hardest_cut_off = pt_soft_min*pt_soft_min; │ │ │ │ │ +00302 │ │ │ │ │ +} │ │ │ │ │ +00303 │ │ │ │ │ +00304 │ │ │ │ │ +// clear potential previous runs │ │ │ │ │ +00305 │ │ │ │ │ +jet_areas.clear(); │ │ │ │ │ +00306 │ │ │ │ │ +00307 │ │ │ │ │ +// put initial set of particles in the list │ │ │ │ │ +00308 │ │ │ │ │ +int n_hard = _particles.size(); │ │ │ │ │ +00309 │ │ │ │ │ +all_particles = _particles; │ │ │ │ │ +00310 │ │ │ │ │ +00311 │ │ │ │ │ +// build the set of ghost particles and add them to the particle list │ │ │ │ │ +00312 │ │ │ │ │ +int i,j; │ │ │ │ │ +00313 │ │ │ │ │ +double eta_g,phi_g,pt_g; │ │ │ │ │ +00314 │ │ │ │ │ +00315 │ │ │ │ │ +for (i=0;i= n_hard │ │ │ │ │ +00333 │ │ │ │ │ +// and deduce the number of ghosts in the jet, hence the area. │ │ │ │ │ +00334 │ │ │ │ │ +double area_factor = (2.0*grid_eta_max/grid_size)*(twopi/grid_size); │ │ │ │ │ +00335 │ │ │ │ │ +00336 │ │ │ │ │ +for (i=0;i<(int) jets.size();i++){ │ │ │ │ │ +00337 │ │ │ │ │ +jet_areas.push_back(jets[i]); │ │ │ │ │ +00338 │ │ │ │ │ +j=0; │ │ │ │ │ +00339 │ │ │ │ │ +while ((j │ │ │ │ │ 00028 #include │ │ │ │ │ @@ -12406,21 +13244,14 @@ │ │ │ │ │ 00056 │ │ │ │ │ opts.print_version(); │ │ │ │ │ 00057 │ │ │ │ │ exit(0); │ │ │ │ │ 00058 │ │ │ │ │ } │ │ │ │ │ 00059 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 180 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00060 │ │ │ │ │ // various files used to read input data and store results │ │ │ │ │ 00061 │ │ │ │ │ FILE *flux; │ │ │ │ │ 00062 │ │ │ │ │ FILE *fpart; │ │ │ │ │ 00063 │ │ │ │ │ @@ -12485,14 +13316,23 @@ │ │ │ │ │ 00093 │ │ │ │ │ cout « " working with " « N « " particles" « endl; │ │ │ │ │ 00094 │ │ │ │ │ 00095 │ │ │ │ │ // compute jets │ │ │ │ │ 00096 │ │ │ │ │ if (opts.verbose_flag) cout « "computing jet contents" « endl; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +185 │ │ │ │ │ + │ │ │ │ │ + 186 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00097 │ │ │ │ │ i=siscone.compute_jets(particles, opts.R, opts.f, opts.npass, opts.ptmin, opts.SM_var); │ │ │ │ │ 00098 │ │ │ │ │ if (opts.verbose_flag){ │ │ │ │ │ 00099 │ │ │ │ │ unsigned int pass; │ │ │ │ │ 00100 │ │ │ │ │ @@ -12525,15 +13365,15 @@ │ │ │ │ │ 00114 │ │ │ │ │ cout « "bye..." « endl; │ │ │ │ │ 00115 │ │ │ │ │ 00116 │ │ │ │ │ return 0; │ │ │ │ │ 00117 } │ │ │ │ │ │ │ │ │ │ -5.2 │ │ │ │ │ +5.4 │ │ │ │ │ │ │ │ │ │ options.cpp │ │ │ │ │ │ │ │ │ │ 00001 │ │ │ │ │ 00002 // File: options.cpp │ │ │ │ │ // │ │ │ │ │ 00003 // Description: management of the cmdline options of the main program │ │ │ │ │ @@ -12571,21 +13411,18 @@ │ │ │ │ │ 00019 // You should have received a copy of the GNU General Public License │ │ │ │ │ // │ │ │ │ │ 00020 // along with this program; if not, write to the Free Software │ │ │ │ │ // │ │ │ │ │ 00021 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ 00022 // │ │ │ │ │ // │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.2 options.cpp │ │ │ │ │ - │ │ │ │ │ 00023 // $Revision:: 213 │ │ │ │ │ +$// │ │ │ │ │ 00024 // $Date:: 2008-03-17 17:05:59 +0100 (Mon, 17 Mar 2008) │ │ │ │ │ +$// │ │ │ │ │ 00026 │ │ │ │ │ 00027 #include "options.h" │ │ │ │ │ 00028 #include │ │ │ │ │ 00029 #include │ │ │ │ │ 00030 #include │ │ │ │ │ 00031 │ │ │ │ │ 00032 using namespace std; │ │ │ │ │ @@ -12629,14 +13466,21 @@ │ │ │ │ │ N_stop = N_DEFAULT; │ │ │ │ │ 00058 │ │ │ │ │ R = R_DEFAULT; │ │ │ │ │ 00059 │ │ │ │ │ f = THRESHOLD_DEFAULT; │ │ │ │ │ 00060 │ │ │ │ │ npass = NPASS_DEFAULT; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.4 options.cpp │ │ │ │ │ + │ │ │ │ │ +187 │ │ │ │ │ + │ │ │ │ │ 00061 │ │ │ │ │ ev_name = NULL; │ │ │ │ │ 00062 │ │ │ │ │ SM_var = SM_DEFAULT; │ │ │ │ │ 00063 } │ │ │ │ │ 00064 │ │ │ │ │ 00065 │ │ │ │ │ @@ -12716,55 +13560,41 @@ │ │ │ │ │ 00107 │ │ │ │ │ // retreive options │ │ │ │ │ 00108 │ │ │ │ │ opt_param = getopt_long(argc, argv, "hvqN:R:f:p:n:e:s:", │ │ │ │ │ 00109 │ │ │ │ │ siscone_options, &option_index); │ │ │ │ │ 00110 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -181 │ │ │ │ │ - │ │ │ │ │ -$// │ │ │ │ │ -$// │ │ │ │ │ - │ │ │ │ │ - 182 │ │ │ │ │ - │ │ │ │ │ 00111 │ │ │ │ │ +// Detect the end of the options. │ │ │ │ │ 00112 │ │ │ │ │ +if (opt_param == -1) │ │ │ │ │ 00113 │ │ │ │ │ +stop=true; │ │ │ │ │ 00114 │ │ │ │ │ 00115 │ │ │ │ │ -00116 │ │ │ │ │ -00117 │ │ │ │ │ -00118 │ │ │ │ │ -00119 │ │ │ │ │ -00120 │ │ │ │ │ -00121 │ │ │ │ │ -00122 │ │ │ │ │ -00123 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ -// Detect the end of the options. │ │ │ │ │ -if (opt_param == -1) │ │ │ │ │ -stop=true; │ │ │ │ │ - │ │ │ │ │ // branch according to ’opt_param’ │ │ │ │ │ +00116 │ │ │ │ │ switch (opt_param){ │ │ │ │ │ +00117 │ │ │ │ │ case ’h’: help_flag = 1; │ │ │ │ │ break; // help │ │ │ │ │ +00118 │ │ │ │ │ case ’v’: verbose_flag = 1; │ │ │ │ │ break; // verbose │ │ │ │ │ +00119 │ │ │ │ │ case ’q’: verbose_flag = 0; │ │ │ │ │ break; // quiet │ │ │ │ │ +00120 │ │ │ │ │ case ’N’: // max number of paprticles │ │ │ │ │ +00121 │ │ │ │ │ sscanf(optarg, "%d", &N_stop); │ │ │ │ │ +00122 │ │ │ │ │ if (N_stop<=0){ │ │ │ │ │ +00123 │ │ │ │ │ cout « "Warning: the specified number of particles must be positive. Using default one" « │ │ │ │ │ endl; │ │ │ │ │ 00124 │ │ │ │ │ N_stop = N_DEFAULT; │ │ │ │ │ 00125 │ │ │ │ │ } │ │ │ │ │ 00126 │ │ │ │ │ @@ -12804,25 +13634,33 @@ │ │ │ │ │ sscanf(optarg, "%lf", &ptmin); │ │ │ │ │ 00143 │ │ │ │ │ if (ptmin<0){ │ │ │ │ │ 00144 │ │ │ │ │ cout « "Warning: the specified minimal pT must be non-negative. Using default one" « endl; │ │ │ │ │ 00145 │ │ │ │ │ ptmin = PTMIN_DEFAULT; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 188 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00146 │ │ │ │ │ -} │ │ │ │ │ 00147 │ │ │ │ │ -break; │ │ │ │ │ 00148 │ │ │ │ │ -case ’n’: // max number of paprticles │ │ │ │ │ 00149 │ │ │ │ │ -sscanf(optarg, "%d", &npass); │ │ │ │ │ 00150 │ │ │ │ │ -if (npass<0){ │ │ │ │ │ 00151 │ │ │ │ │ + │ │ │ │ │ +} │ │ │ │ │ +break; │ │ │ │ │ +case ’n’: // max number of paprticles │ │ │ │ │ +sscanf(optarg, "%d", &npass); │ │ │ │ │ +if (npass<0){ │ │ │ │ │ cout « "Warning: the specified number of passes must be non negative. Using default one" « │ │ │ │ │ endl; │ │ │ │ │ 00152 │ │ │ │ │ npass = NPASS_DEFAULT; │ │ │ │ │ 00153 │ │ │ │ │ } │ │ │ │ │ 00154 │ │ │ │ │ @@ -12901,21 +13739,14 @@ │ │ │ │ │ 00190 │ │ │ │ │ } while (!stop); │ │ │ │ │ 00191 │ │ │ │ │ 00192 │ │ │ │ │ if (ev_name==NULL){ │ │ │ │ │ 00193 │ │ │ │ │ ev_name = new char[strlen(DEFAULT_EVENT)+1]; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.3 options.h │ │ │ │ │ - │ │ │ │ │ -183 │ │ │ │ │ - │ │ │ │ │ 00194 │ │ │ │ │ strcpy(ev_name, DEFAULT_EVENT); │ │ │ │ │ 00195 │ │ │ │ │ } │ │ │ │ │ 00196 │ │ │ │ │ 00197 │ │ │ │ │ return 0; │ │ │ │ │ @@ -12973,14 +13804,19 @@ │ │ │ │ │ cout « endl; │ │ │ │ │ 00223 │ │ │ │ │ 00224 │ │ │ │ │ return 0; │ │ │ │ │ 00225 } │ │ │ │ │ 00226 │ │ │ │ │ 00227 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.5 options.h │ │ │ │ │ + │ │ │ │ │ 00228 // print program version │ │ │ │ │ 00229 //----------------------00230 int Coptions::print_version(){ │ │ │ │ │ 00231 │ │ │ │ │ cout « siscone_package_name() « " " « siscone_version() « endl; │ │ │ │ │ 00232 │ │ │ │ │ cout « "Copyright (C) 2006." « endl; │ │ │ │ │ 00233 │ │ │ │ │ @@ -12998,15 +13834,15 @@ │ │ │ │ │ 00239 │ │ │ │ │ cout « "Please send bugs or comments to AUTHORS" « endl; │ │ │ │ │ 00240 │ │ │ │ │ 00241 │ │ │ │ │ return 0; │ │ │ │ │ 00242 } │ │ │ │ │ │ │ │ │ │ -5.3 │ │ │ │ │ +5.5 │ │ │ │ │ │ │ │ │ │ options.h │ │ │ │ │ │ │ │ │ │ 00001 │ │ │ │ │ 00002 // File: options.h │ │ │ │ │ // │ │ │ │ │ 00003 // Description: management of the cmdline options of the main program │ │ │ │ │ @@ -13052,21 +13888,14 @@ │ │ │ │ │ $// │ │ │ │ │ 00024 // $Date:: 2007-10-03 19:21:19 +0200 (Wed, 03 Oct 2007) │ │ │ │ │ $// │ │ │ │ │ 00026 │ │ │ │ │ 00027 #ifndef __OPTIONS_H__ │ │ │ │ │ 00028 #define __OPTIONS_H__ │ │ │ │ │ 00029 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 184 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00030 #include "siscone/siscone.h" │ │ │ │ │ 00031 │ │ │ │ │ 00037 class Coptions{ │ │ │ │ │ 00038 public: │ │ │ │ │ 00040 │ │ │ │ │ Coptions(); │ │ │ │ │ 00041 │ │ │ │ │ @@ -13108,19 +13937,28 @@ │ │ │ │ │ 00069 │ │ │ │ │ 00071 │ │ │ │ │ siscone::Esplit_merge_scale SM_var; │ │ │ │ │ 00072 }; │ │ │ │ │ 00073 │ │ │ │ │ 00074 #endif │ │ │ │ │ │ │ │ │ │ -5.4 │ │ │ │ │ +5.6 │ │ │ │ │ │ │ │ │ │ sample.cpp │ │ │ │ │ │ │ │ │ │ 00001 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +189 │ │ │ │ │ + │ │ │ │ │ + 190 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00002 // File: sample.cpp │ │ │ │ │ // │ │ │ │ │ 00003 // Description: example program for the Csiscone class (see documentation) │ │ │ │ │ // │ │ │ │ │ 00004 // This file is part of the SISCone project. │ │ │ │ │ // │ │ │ │ │ 00005 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ @@ -13200,115 +14038,116 @@ │ │ │ │ │ 00047 │ │ │ │ │ 00048 │ │ │ │ │ // read particles │ │ │ │ │ 00049 │ │ │ │ │ FILE *flux; │ │ │ │ │ 00050 │ │ │ │ │ flux = fopen("events/single-event.dat", "r"); │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.5 spherical.cpp │ │ │ │ │ - │ │ │ │ │ 00051 │ │ │ │ │ +if (flux==NULL){ │ │ │ │ │ 00052 │ │ │ │ │ +cerr « "cannot read event" « endl; │ │ │ │ │ 00053 │ │ │ │ │ +return 1; │ │ │ │ │ 00054 │ │ │ │ │ +} │ │ │ │ │ 00055 │ │ │ │ │ 00056 │ │ │ │ │ +N=0; │ │ │ │ │ 00057 │ │ │ │ │ +while (fgets(fline, 512, flux)!=NULL){ │ │ │ │ │ 00058 │ │ │ │ │ +if (fline[0]!=’#’){ // skip lines beginning with ’#’ │ │ │ │ │ 00059 │ │ │ │ │ +if (sscanf(fline, "%le%le%le%le", &px, &py, &pz, &E)==4){ │ │ │ │ │ 00060 │ │ │ │ │ +particles.push_back(Cmomentum(px, py, pz, E)); │ │ │ │ │ 00061 │ │ │ │ │ +N++; │ │ │ │ │ 00062 │ │ │ │ │ +} else { │ │ │ │ │ 00063 │ │ │ │ │ +cout « "error in reading event file Giving up." « endl; │ │ │ │ │ 00064 │ │ │ │ │ +fclose(flux); │ │ │ │ │ 00065 │ │ │ │ │ +return 2; │ │ │ │ │ 00066 │ │ │ │ │ +} │ │ │ │ │ 00067 │ │ │ │ │ +} │ │ │ │ │ 00068 │ │ │ │ │ +} │ │ │ │ │ 00069 │ │ │ │ │ +fclose(flux); │ │ │ │ │ 00070 │ │ │ │ │ 00071 │ │ │ │ │ +// compute jets │ │ │ │ │ 00072 │ │ │ │ │ +// first compute with multiple passes (default) │ │ │ │ │ 00073 │ │ │ │ │ +i=siscone.compute_jets(particles, R, f); │ │ │ │ │ 00074 │ │ │ │ │ +cout « " " « i « " jets found in multi-pass run" « endl; │ │ │ │ │ 00075 │ │ │ │ │ 00076 │ │ │ │ │ +// then, recompute it with a different f │ │ │ │ │ 00077 │ │ │ │ │ +i=siscone.recompute_jets(f_alt); │ │ │ │ │ 00078 │ │ │ │ │ +cout « " " « i « " jets found with alternative f" « endl; │ │ │ │ │ 00079 │ │ │ │ │ 00080 │ │ │ │ │ +// one pass │ │ │ │ │ 00081 │ │ │ │ │ +i=siscone.compute_jets(particles, R, f, 1); │ │ │ │ │ 00082 │ │ │ │ │ +cout « " " « i « " jets found in single-pass run" « endl; │ │ │ │ │ 00083 │ │ │ │ │ 00084 │ │ │ │ │ -00085 │ │ │ │ │ -00086 │ │ │ │ │ -00087 │ │ │ │ │ - │ │ │ │ │ -if (flux==NULL){ │ │ │ │ │ -cerr « "cannot read event" « endl; │ │ │ │ │ -return 1; │ │ │ │ │ -} │ │ │ │ │ -N=0; │ │ │ │ │ -while (fgets(fline, 512, flux)!=NULL){ │ │ │ │ │ -if (fline[0]!=’#’){ // skip lines beginning with ’#’ │ │ │ │ │ -if (sscanf(fline, "%le%le%le%le", &px, &py, &pz, &E)==4){ │ │ │ │ │ -particles.push_back(Cmomentum(px, py, pz, E)); │ │ │ │ │ -N++; │ │ │ │ │ -} else { │ │ │ │ │ -cout « "error in reading event file Giving up." « endl; │ │ │ │ │ -fclose(flux); │ │ │ │ │ -return 2; │ │ │ │ │ -} │ │ │ │ │ -} │ │ │ │ │ -} │ │ │ │ │ -fclose(flux); │ │ │ │ │ -// compute jets │ │ │ │ │ -// first compute with multiple passes (default) │ │ │ │ │ -i=siscone.compute_jets(particles, R, f); │ │ │ │ │ -cout « " " « i « " jets found in multi-pass run" « endl; │ │ │ │ │ -// then, recompute it with a different f │ │ │ │ │ -i=siscone.recompute_jets(f_alt); │ │ │ │ │ -cout « " " « i « " jets found with alternative f" « endl; │ │ │ │ │ -// one pass │ │ │ │ │ -i=siscone.compute_jets(particles, R, f, 1); │ │ │ │ │ -cout « " " « i « " jets found in single-pass run" « endl; │ │ │ │ │ - │ │ │ │ │ // show jets │ │ │ │ │ +00085 │ │ │ │ │ vector::iterator it_j; │ │ │ │ │ +00086 │ │ │ │ │ int i1; │ │ │ │ │ +00087 │ │ │ │ │ fprintf(stdout, "# │ │ │ │ │ pT │ │ │ │ │ eta │ │ │ │ │ phi │ │ │ │ │ px │ │ │ │ │ py │ │ │ │ │ \n"); │ │ │ │ │ 00088 │ │ │ │ │ for (it_j = siscone.jets.begin(), i1=0 ; │ │ │ │ │ + │ │ │ │ │ +pz │ │ │ │ │ + │ │ │ │ │ +E │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.7 spherical.cpp │ │ │ │ │ + │ │ │ │ │ 00089 │ │ │ │ │ -it_j != siscone.jets.end() ; it_j++, i1++){ │ │ │ │ │ 00090 │ │ │ │ │ -fprintf(stdout, "Jet %3d: %10.3f %8.3f %8.3f %10.3f %10.3f %10.3f %10.3f\n", │ │ │ │ │ 00091 │ │ │ │ │ + │ │ │ │ │ +it_j != siscone.jets.end() ; it_j++, i1++){ │ │ │ │ │ +fprintf(stdout, "Jet %3d: %10.3f %8.3f %8.3f %10.3f %10.3f %10.3f %10.3f\n", │ │ │ │ │ i1, it_j->v.perp(), it_j->v.eta, it_j->v.phi, it_j->v.px, it_j->v.py, │ │ │ │ │ it_j->v.E); │ │ │ │ │ 00092 │ │ │ │ │ } │ │ │ │ │ 00093 │ │ │ │ │ 00094 │ │ │ │ │ return 0; │ │ │ │ │ 00095 } │ │ │ │ │ │ │ │ │ │ -5.5 │ │ │ │ │ - │ │ │ │ │ -185 │ │ │ │ │ +5.7 │ │ │ │ │ │ │ │ │ │ spherical.cpp │ │ │ │ │ │ │ │ │ │ 00001 │ │ │ │ │ 00002 // File: spherical.cpp │ │ │ │ │ // │ │ │ │ │ 00003 // Description: example program for the CSphsiscone class (spherical SISCone)// │ │ │ │ │ @@ -13361,27 +14200,14 @@ │ │ │ │ │ 00028 │ │ │ │ │ 00029 #include │ │ │ │ │ 00030 #include │ │ │ │ │ 00031 #include │ │ │ │ │ 00032 #include "siscone/spherical/momentum.h" │ │ │ │ │ 00033 #include "siscone/spherical/siscone.h" │ │ │ │ │ 00034 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -pz │ │ │ │ │ - │ │ │ │ │ -it_j->v.pz, │ │ │ │ │ - │ │ │ │ │ -E │ │ │ │ │ - │ │ │ │ │ - 186 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00035 #define R │ │ │ │ │ 0.7 │ │ │ │ │ 00036 #define f │ │ │ │ │ 0.5 │ │ │ │ │ 00037 #define f_alt 0.75 │ │ │ │ │ 00038 │ │ │ │ │ 00039 using namespace std; │ │ │ │ │ @@ -13448,14 +14274,25 @@ │ │ │ │ │ 00070 │ │ │ │ │ } │ │ │ │ │ 00071 │ │ │ │ │ fclose(flux); │ │ │ │ │ 00072 │ │ │ │ │ 00073 │ │ │ │ │ // compute jets │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +191 │ │ │ │ │ + │ │ │ │ │ +it_j->v.pz, │ │ │ │ │ + │ │ │ │ │ + 192 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00074 │ │ │ │ │ // first compute with multiple passes (default) │ │ │ │ │ 00075 │ │ │ │ │ i=siscone.compute_jets(particles, R, f); │ │ │ │ │ 00076 │ │ │ │ │ cout « " " « i « " jets found in multi-pass run" « endl; │ │ │ │ │ 00077 │ │ │ │ │ @@ -13497,67 +14334,58 @@ │ │ │ │ │ 00094 │ │ │ │ │ } │ │ │ │ │ 00095 │ │ │ │ │ 00096 │ │ │ │ │ return 0; │ │ │ │ │ 00097 } │ │ │ │ │ │ │ │ │ │ -5.6 │ │ │ │ │ +5.8 │ │ │ │ │ │ │ │ │ │ E │ │ │ │ │ │ │ │ │ │ \n"); │ │ │ │ │ │ │ │ │ │ it_j->v.E); │ │ │ │ │ │ │ │ │ │ test.cpp │ │ │ │ │ │ │ │ │ │ 00001 │ │ │ │ │ 00002 // File: test.cpp │ │ │ │ │ -00003 // Description: example program that implements tests with random particles │ │ │ │ │ +// │ │ │ │ │ +00003 // Description: example program that implements tests with random particles // │ │ │ │ │ 00004 // │ │ │ │ │ and output various informations │ │ │ │ │ +// │ │ │ │ │ 00005 // │ │ │ │ │ +// │ │ │ │ │ 00006 // Note: for a usage example of SISCone, we advise looking at main.cpp │ │ │ │ │ +// │ │ │ │ │ 00007 // │ │ │ │ │ or http://projects.hepforge.org/siscone/usage.html │ │ │ │ │ -00008 // │ │ │ │ │ -00009 // This file is part of the SISCone project. │ │ │ │ │ -00010 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ -00011 // │ │ │ │ │ -00012 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ -00013 // │ │ │ │ │ -00014 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ -00015 // it under the terms of the GNU General Public License as published by │ │ │ │ │ -00016 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ -00017 // (at your option) any later version. │ │ │ │ │ - │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ // │ │ │ │ │ +00008 // │ │ │ │ │ // │ │ │ │ │ +00009 // This file is part of the SISCone project. │ │ │ │ │ // │ │ │ │ │ +00010 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ // │ │ │ │ │ +00011 // │ │ │ │ │ // │ │ │ │ │ +00012 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ // │ │ │ │ │ +00013 // │ │ │ │ │ // │ │ │ │ │ +00014 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ // │ │ │ │ │ +00015 // it under the terms of the GNU General Public License as published by │ │ │ │ │ // │ │ │ │ │ +00016 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ // │ │ │ │ │ +00017 // (at your option) any later version. │ │ │ │ │ // │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.6 test.cpp │ │ │ │ │ - │ │ │ │ │ -187 │ │ │ │ │ - │ │ │ │ │ 00018 // │ │ │ │ │ // │ │ │ │ │ 00019 // This program is distributed in the hope that it will be useful, │ │ │ │ │ // │ │ │ │ │ 00020 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ // │ │ │ │ │ 00021 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ @@ -13608,14 +14436,21 @@ │ │ │ │ │ unsigned int N; │ │ │ │ │ 00054 │ │ │ │ │ 00055 │ │ │ │ │ unsigned int i; │ │ │ │ │ 00056 │ │ │ │ │ FILE *flux; │ │ │ │ │ 00057 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.9 times.cpp │ │ │ │ │ + │ │ │ │ │ +193 │ │ │ │ │ + │ │ │ │ │ 00058 │ │ │ │ │ if (argc==1){ │ │ │ │ │ 00059 │ │ │ │ │ //cout « "using default number of particles" « endl; │ │ │ │ │ 00060 │ │ │ │ │ N = N_default; │ │ │ │ │ 00061 │ │ │ │ │ @@ -13693,21 +14528,14 @@ │ │ │ │ │ cout « "save stable cone results:" « endl; │ │ │ │ │ 00102 │ │ │ │ │ unsigned int pass; │ │ │ │ │ 00103 │ │ │ │ │ flux = fopen("protocones.dat", "w+"); │ │ │ │ │ 00104 │ │ │ │ │ for (pass=0;pass particles; │ │ │ │ │ 00066 │ │ │ │ │ Csiscone siscone; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.8 area.cpp │ │ │ │ │ - │ │ │ │ │ 00067 │ │ │ │ │ double eta,phi; │ │ │ │ │ 00068 │ │ │ │ │ 00069 │ │ │ │ │ // number of events and particles │ │ │ │ │ 00070 │ │ │ │ │ int i, N; │ │ │ │ │ @@ -13908,14 +14739,19 @@ │ │ │ │ │ 00102 │ │ │ │ │ 00103 │ │ │ │ │ // run siscone │ │ │ │ │ 00104 │ │ │ │ │ gettimeofday(&time_start, NULL); │ │ │ │ │ 00105 │ │ │ │ │ siscone.compute_jets(particles, R, f); │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.10 area.h │ │ │ │ │ + │ │ │ │ │ 00106 │ │ │ │ │ gettimeofday(&time_end, NULL); │ │ │ │ │ 00107 │ │ │ │ │ time_siscone+=time_spent(); │ │ │ │ │ 00108 │ │ │ │ │ } │ │ │ │ │ 00109 │ │ │ │ │ @@ -13941,856 +14777,14 @@ │ │ │ │ │ 00121 │ │ │ │ │ cout « "bye..." « endl; │ │ │ │ │ 00122 │ │ │ │ │ 00123 │ │ │ │ │ return 0; │ │ │ │ │ 00124 } │ │ │ │ │ │ │ │ │ │ -5.8 │ │ │ │ │ - │ │ │ │ │ -area.cpp │ │ │ │ │ - │ │ │ │ │ -00001 │ │ │ │ │ -00002 // File: main.cpp │ │ │ │ │ -// │ │ │ │ │ -00003 // Description: main program that runs siscone from the command line │ │ │ │ │ -// │ │ │ │ │ -00004 // This file is part of the SISCone project. │ │ │ │ │ -// │ │ │ │ │ -00005 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ -// │ │ │ │ │ -00006 // │ │ │ │ │ -// │ │ │ │ │ -00007 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ -// │ │ │ │ │ -00008 // │ │ │ │ │ -// │ │ │ │ │ -00009 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ -// │ │ │ │ │ -00010 // it under the terms of the GNU General Public License as published by │ │ │ │ │ -// │ │ │ │ │ -00011 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ -// │ │ │ │ │ -00012 // (at your option) any later version. │ │ │ │ │ -// │ │ │ │ │ -00013 // │ │ │ │ │ -// │ │ │ │ │ -00014 // This program is distributed in the hope that it will be useful, │ │ │ │ │ -// │ │ │ │ │ -00015 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -// │ │ │ │ │ -00016 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ -// │ │ │ │ │ -00017 // GNU General Public License for more details. │ │ │ │ │ -// │ │ │ │ │ -00018 // │ │ │ │ │ -// │ │ │ │ │ -00019 // You should have received a copy of the GNU General Public License │ │ │ │ │ -// │ │ │ │ │ -00020 // along with this program; if not, write to the Free Software │ │ │ │ │ -// │ │ │ │ │ -00021 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ -00022 // │ │ │ │ │ -// │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -189 │ │ │ │ │ - │ │ │ │ │ - 190 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ -00023 // $Revision:: 171 │ │ │ │ │ -$// │ │ │ │ │ -00024 // $Date:: 2007-06-19 10:26:05 -0400 (Tue, 19 Jun 2007) │ │ │ │ │ -$// │ │ │ │ │ -00026 │ │ │ │ │ -00027 #include │ │ │ │ │ -00028 #include │ │ │ │ │ -00029 #include │ │ │ │ │ -00030 #include "siscone/momentum.h" │ │ │ │ │ -00031 #include "siscone/siscone.h" │ │ │ │ │ -00032 #include "siscone/area.h" │ │ │ │ │ -00033 #include "options.h" │ │ │ │ │ -00034 │ │ │ │ │ -00035 using namespace std; │ │ │ │ │ -00036 using namespace siscone; │ │ │ │ │ -00037 │ │ │ │ │ -00038 int main(int argc, char *argv[]){ │ │ │ │ │ -00039 │ │ │ │ │ -vector particles; │ │ │ │ │ -00040 │ │ │ │ │ -Carea siscone_with_area; │ │ │ │ │ -00041 │ │ │ │ │ -int i,N; │ │ │ │ │ -00042 │ │ │ │ │ -double px,py,pz,E; │ │ │ │ │ -00043 │ │ │ │ │ -Coptions opts; │ │ │ │ │ -00044 │ │ │ │ │ -char fline[512]; │ │ │ │ │ -00045 │ │ │ │ │ -00046 │ │ │ │ │ -if (opts.parse_options(argc, argv)) │ │ │ │ │ -00047 │ │ │ │ │ -exit(1); │ │ │ │ │ -00048 │ │ │ │ │ -00049 │ │ │ │ │ -// deal with help message │ │ │ │ │ -00050 │ │ │ │ │ -if (opts.help_flag){ │ │ │ │ │ -00051 │ │ │ │ │ -opts.print_help(); │ │ │ │ │ -00052 │ │ │ │ │ -exit(0); │ │ │ │ │ -00053 │ │ │ │ │ -} │ │ │ │ │ -00054 │ │ │ │ │ -00055 │ │ │ │ │ -// deal with version flag │ │ │ │ │ -00056 │ │ │ │ │ -if (opts.version_flag){ │ │ │ │ │ -00057 │ │ │ │ │ -opts.print_version(); │ │ │ │ │ -00058 │ │ │ │ │ -exit(0); │ │ │ │ │ -00059 │ │ │ │ │ -} │ │ │ │ │ -00060 │ │ │ │ │ -00061 │ │ │ │ │ -// various files used to read input data and store results │ │ │ │ │ -00062 │ │ │ │ │ -FILE *flux; │ │ │ │ │ -00063 │ │ │ │ │ -FILE *fpart; │ │ │ │ │ -00064 │ │ │ │ │ -00065 │ │ │ │ │ -// read particles │ │ │ │ │ -00066 │ │ │ │ │ -if (opts.verbose_flag) cout « "reading particles" « endl; │ │ │ │ │ -00067 │ │ │ │ │ -flux = fopen(opts.ev_name, "r"); │ │ │ │ │ -00068 │ │ │ │ │ -if (flux==NULL){ │ │ │ │ │ -00069 │ │ │ │ │ -cerr « "cannot read event" « endl; │ │ │ │ │ -00070 │ │ │ │ │ -return 1; │ │ │ │ │ -00071 │ │ │ │ │ -} │ │ │ │ │ -00072 │ │ │ │ │ -00073 │ │ │ │ │ -N=0; │ │ │ │ │ -00074 │ │ │ │ │ -fpart = fopen("particles.dat", "w+"); │ │ │ │ │ -00075 │ │ │ │ │ -while ((opts.N_stop!=0) && (fgets(fline, 512, flux)!=NULL)){ │ │ │ │ │ -00076 │ │ │ │ │ -if (fline[0]!=’#’){ // skip lines beginning with ’#’ │ │ │ │ │ -00077 │ │ │ │ │ -if (sscanf(fline, "%le%le%le%le", &px, &py, &pz, &E)==4){ │ │ │ │ │ -00078 │ │ │ │ │ -particles.push_back(Cmomentum(px, py, pz, E)); │ │ │ │ │ -00079 │ │ │ │ │ -fprintf(fpart, "%e\t%e\n", │ │ │ │ │ -particles[N].eta, particles[N].phi); │ │ │ │ │ -00080 │ │ │ │ │ -N++; │ │ │ │ │ -00081 │ │ │ │ │ -opts.N_stop--; │ │ │ │ │ -00082 │ │ │ │ │ -} else { │ │ │ │ │ -00083 │ │ │ │ │ -cout « "error in reading event file Giving up." « endl; │ │ │ │ │ -00084 │ │ │ │ │ -fclose(flux); │ │ │ │ │ -00085 │ │ │ │ │ -fclose(fpart); │ │ │ │ │ -00086 │ │ │ │ │ -exit(2); │ │ │ │ │ -00087 │ │ │ │ │ -} │ │ │ │ │ -00088 │ │ │ │ │ -} │ │ │ │ │ -00089 │ │ │ │ │ -} │ │ │ │ │ -00090 │ │ │ │ │ -fclose(flux); │ │ │ │ │ -00091 │ │ │ │ │ -fclose(fpart); │ │ │ │ │ -00092 │ │ │ │ │ -if (opts.verbose_flag) │ │ │ │ │ -00093 │ │ │ │ │ -cout « " working with " « N « " particles" « endl; │ │ │ │ │ -00094 │ │ │ │ │ -00095 │ │ │ │ │ -// compute jets │ │ │ │ │ -00096 │ │ │ │ │ -if (opts.verbose_flag) cout « "computing jet contents" « endl; │ │ │ │ │ -00097 │ │ │ │ │ -i=siscone_with_area.compute_areas(particles, opts.R, opts.f, opts.npass, opts.SM_var); │ │ │ │ │ -00098 │ │ │ │ │ -if (opts.verbose_flag){ │ │ │ │ │ -00099 │ │ │ │ │ -unsigned int pass; │ │ │ │ │ -00100 │ │ │ │ │ -for (pass=0;pass::iterator ja; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.9 area.cpp │ │ │ │ │ - │ │ │ │ │ -00111 │ │ │ │ │ -for (ja=siscone_with_area.jet_areas.begin();ja!=siscone_with_area.jet_areas.end();ja++){ │ │ │ │ │ -00112 │ │ │ │ │ -fprintf(flux, "%e\t%e\t%e\t%e\t%e\n", │ │ │ │ │ -00113 │ │ │ │ │ -ja->v.perp(), ja->v.eta, ja->v.phi, │ │ │ │ │ -00114 │ │ │ │ │ -ja->active_area, ja->passive_area); │ │ │ │ │ -00115 │ │ │ │ │ -} │ │ │ │ │ -00116 │ │ │ │ │ -00117 │ │ │ │ │ -fclose(flux); │ │ │ │ │ -00118 │ │ │ │ │ -00119 │ │ │ │ │ -if (opts.verbose_flag) │ │ │ │ │ -00120 │ │ │ │ │ -cout « "bye..." « endl; │ │ │ │ │ -00121 │ │ │ │ │ -00122 │ │ │ │ │ -return 0; │ │ │ │ │ -00123 } │ │ │ │ │ - │ │ │ │ │ -5.9 │ │ │ │ │ - │ │ │ │ │ -area.cpp │ │ │ │ │ - │ │ │ │ │ -00001 // -*- C++ -*00003 // File: area.h │ │ │ │ │ -// │ │ │ │ │ -00004 // Description: header file for the computation of jet area │ │ │ │ │ -// │ │ │ │ │ -00005 // This file is part of the SISCone project. │ │ │ │ │ -// │ │ │ │ │ -00006 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ -// │ │ │ │ │ -00007 // │ │ │ │ │ -// │ │ │ │ │ -00008 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ -// │ │ │ │ │ -00009 // │ │ │ │ │ -// │ │ │ │ │ -00010 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ -// │ │ │ │ │ -00011 // it under the terms of the GNU General Public License as published by │ │ │ │ │ -// │ │ │ │ │ -00012 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ -// │ │ │ │ │ -00013 // (at your option) any later version. │ │ │ │ │ -// │ │ │ │ │ -00014 // │ │ │ │ │ -// │ │ │ │ │ -00015 // This program is distributed in the hope that it will be useful, │ │ │ │ │ -// │ │ │ │ │ -00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -// │ │ │ │ │ -00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ -// │ │ │ │ │ -00018 // GNU General Public License for more details. │ │ │ │ │ -// │ │ │ │ │ -00019 // │ │ │ │ │ -// │ │ │ │ │ -00020 // You should have received a copy of the GNU General Public License │ │ │ │ │ -// │ │ │ │ │ -00021 // along with this program; if not, write to the Free Software │ │ │ │ │ -// │ │ │ │ │ -00022 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ -00023 // │ │ │ │ │ -// │ │ │ │ │ -00024 // $Revision:: 149 │ │ │ │ │ -$// │ │ │ │ │ -00025 // $Date:: 2007-03-15 00:13:58 +0100 (Thu, 15 Mar 2007) │ │ │ │ │ -$// │ │ │ │ │ -00027 │ │ │ │ │ -00028 #include "area.h" │ │ │ │ │ -00029 #include "momentum.h" │ │ │ │ │ -00030 #include │ │ │ │ │ -00031 #include │ │ │ │ │ -00032 │ │ │ │ │ -00033 namespace siscone{ │ │ │ │ │ -00034 using namespace std; │ │ │ │ │ -00035 │ │ │ │ │ -00036 /******************************************************* │ │ │ │ │ -00037 * Cjet_area implementation │ │ │ │ │ -* │ │ │ │ │ -00038 * real Jet information, including its area(s) │ │ │ │ │ -* │ │ │ │ │ -00039 * │ │ │ │ │ -* │ │ │ │ │ -00040 * This class contains information for one single jet. * │ │ │ │ │ -00041 * That is, first, its momentum carrying information │ │ │ │ │ -* │ │ │ │ │ -00042 * about its centre and pT, and second, its particle │ │ │ │ │ -* │ │ │ │ │ -00043 * contents (from CJeT). │ │ │ │ │ -* │ │ │ │ │ -00044 * Compared to the Cjet class, it also includes the │ │ │ │ │ -* │ │ │ │ │ -00045 * passive and active areas of the jet computed using * │ │ │ │ │ -00046 * the Carea class. │ │ │ │ │ -* │ │ │ │ │ -00047 *******************************************************/ │ │ │ │ │ -00048 │ │ │ │ │ -00049 // default ctor │ │ │ │ │ -00050 //-------------00051 Cjet_area::Cjet_area(){ │ │ │ │ │ -00052 │ │ │ │ │ -active_area = passive_area = 0.0; │ │ │ │ │ -00053 } │ │ │ │ │ -00054 │ │ │ │ │ -00055 // jet-initiated ctor │ │ │ │ │ -00056 //------------------00057 Cjet_area::Cjet_area(Cjet &j){ │ │ │ │ │ -00058 │ │ │ │ │ -v = j.v; │ │ │ │ │ -00059 │ │ │ │ │ -n = j.n; │ │ │ │ │ -00060 │ │ │ │ │ -contents = j.contents; │ │ │ │ │ -00061 │ │ │ │ │ -00062 │ │ │ │ │ -pass = j.pass; │ │ │ │ │ -00063 │ │ │ │ │ -00064 │ │ │ │ │ -pt_tilde = j.pt_tilde; │ │ │ │ │ -00065 │ │ │ │ │ -sm_var2 = j.sm_var2; │ │ │ │ │ -00066 │ │ │ │ │ -00067 │ │ │ │ │ -active_area = passive_area = 0.0; │ │ │ │ │ -00068 } │ │ │ │ │ -00069 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -191 │ │ │ │ │ - │ │ │ │ │ - 192 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ -00070 // default dtor │ │ │ │ │ -00071 //-------------00072 Cjet_area::~Cjet_area(){ │ │ │ │ │ -00073 │ │ │ │ │ -00074 } │ │ │ │ │ -00075 │ │ │ │ │ -00076 │ │ │ │ │ -00077 /****************************************************************** │ │ │ │ │ -00078 * Csiscone_area implementation │ │ │ │ │ -* │ │ │ │ │ -00079 * class for the computation of jet areas. │ │ │ │ │ -* │ │ │ │ │ -00080 * │ │ │ │ │ -* │ │ │ │ │ -00081 * This is the class user should use whenever you want to compute * │ │ │ │ │ -00082 * the jet area (passive and active). │ │ │ │ │ -* │ │ │ │ │ -00083 * It uses the SISCone algorithm to perform the jet analysis. │ │ │ │ │ -* │ │ │ │ │ -00084 ******************************************************************/ │ │ │ │ │ -00085 │ │ │ │ │ -00086 // default ctor │ │ │ │ │ -00087 //------------00088 Carea::Carea(){ │ │ │ │ │ -00089 │ │ │ │ │ -grid_size = 60; │ │ │ │ │ -// 3600 particles added │ │ │ │ │ -00090 │ │ │ │ │ -grid_eta_max = 6.0; // maybe having twice more points in eta than in phi should be nice │ │ │ │ │ -00091 │ │ │ │ │ -grid_shift = 0.5; │ │ │ │ │ -// 50% "shacking" │ │ │ │ │ -00092 │ │ │ │ │ -00093 │ │ │ │ │ -pt_soft = 1e-100; │ │ │ │ │ -00094 │ │ │ │ │ -pt_shift = 0.05; │ │ │ │ │ -00095 │ │ │ │ │ -pt_soft_min = 1e-90; │ │ │ │ │ -00096 } │ │ │ │ │ -00097 │ │ │ │ │ -00098 // default dtor │ │ │ │ │ -00099 //------------00100 Carea::~Carea(){ │ │ │ │ │ -00101 │ │ │ │ │ -00102 } │ │ │ │ │ -00103 │ │ │ │ │ -00104 /* │ │ │ │ │ -00105 * compute the jet areas from a given particle set. │ │ │ │ │ -00106 * The parameters of this method are the ones which control the jet clustering alghorithm. │ │ │ │ │ -00107 * Note that the pt_min is not allowed here soince the jet-area determination involves soft │ │ │ │ │ -00108 * particles/jets and thus is used internally. │ │ │ │ │ -00109 * - _particles │ │ │ │ │ -list of particles │ │ │ │ │ -00110 * - _radius │ │ │ │ │ -cone radius │ │ │ │ │ -00111 * - _f │ │ │ │ │ -shared energy threshold for splitting&merging │ │ │ │ │ -00112 * - _n_pass_max maximum number of passes (0=full search, the default) │ │ │ │ │ -00113 * - _split_merge_scale │ │ │ │ │ -the scale choice for the split-merge procedure │ │ │ │ │ -00114 * │ │ │ │ │ -NOTE: SM_pt leads to IR unsafety for some events with momentum conservation. │ │ │ │ │ -00115 * │ │ │ │ │ -SM_Et is IR safe but not boost invariant and not implemented(!) │ │ │ │ │ -00116 * │ │ │ │ │ -SM_mt is IR safe for hadronic events, but not for decays of two │ │ │ │ │ -00117 * │ │ │ │ │ -back-to-back particles of identical mass │ │ │ │ │ -00118 * │ │ │ │ │ -SM_pttilde │ │ │ │ │ -00119 * │ │ │ │ │ -is always IR safe, and also boost invariant (default) │ │ │ │ │ -00120 * - _hard_only │ │ │ │ │ -when this is set on, only hard jets are computed │ │ │ │ │ -00121 * │ │ │ │ │ -and not the purely ghosted jets (default: false) │ │ │ │ │ -00122 * return the jets together with their areas │ │ │ │ │ -00123 * The return value is the number of jets (including pure-ghost ones if they are included) │ │ │ │ │ -00124 ********************************************************************************************/ │ │ │ │ │ -00125 int Carea::compute_areas(std::vector &_particles, double _radius, double _f, │ │ │ │ │ -00126 │ │ │ │ │ -int _n_pass_max, Esplit_merge_scale _split_merge_scale, │ │ │ │ │ -00127 │ │ │ │ │ -bool _hard_only){ │ │ │ │ │ -00128 │ │ │ │ │ -00129 │ │ │ │ │ -vector all_particles; │ │ │ │ │ -00130 │ │ │ │ │ -00131 │ │ │ │ │ -// put "hardest cut-off" if needed │ │ │ │ │ -00132 │ │ │ │ │ -// this avoids computation of ghosted jets when not required and │ │ │ │ │ -00133 │ │ │ │ │ -// significantly shortens the SM. │ │ │ │ │ -00134 │ │ │ │ │ -if (_hard_only){ │ │ │ │ │ -00135 │ │ │ │ │ -SM_var2_hardest_cut_off = pt_soft_min*pt_soft_min; │ │ │ │ │ -00136 │ │ │ │ │ -} │ │ │ │ │ -00137 │ │ │ │ │ -00138 │ │ │ │ │ -// clear potential previous runs │ │ │ │ │ -00139 │ │ │ │ │ -jet_areas.clear(); │ │ │ │ │ -00140 │ │ │ │ │ -00141 │ │ │ │ │ -// put initial set of particles in the list │ │ │ │ │ -00142 │ │ │ │ │ -int n_hard = _particles.size(); │ │ │ │ │ -00143 │ │ │ │ │ -all_particles = _particles; │ │ │ │ │ -00144 │ │ │ │ │ -00145 │ │ │ │ │ -// build the set of ghost particles and add them to the particle list │ │ │ │ │ -00146 │ │ │ │ │ -int i,j; │ │ │ │ │ -00147 │ │ │ │ │ -double eta_g,phi_g,pt_g; │ │ │ │ │ -00148 │ │ │ │ │ -00149 │ │ │ │ │ -for (i=0;i= n_hard │ │ │ │ │ -00167 │ │ │ │ │ -// and deduce the number of ghosts in the jet, hence the area. │ │ │ │ │ -00168 │ │ │ │ │ -double area_factor = (2.0*grid_eta_max/grid_size)*(twopi/grid_size); │ │ │ │ │ -00169 │ │ │ │ │ -00170 │ │ │ │ │ -for (i=0;i<(int) jets.size();i++){ │ │ │ │ │ -00171 │ │ │ │ │ -jet_areas.push_back(jets[i]); │ │ │ │ │ -00172 │ │ │ │ │ -j=0; │ │ │ │ │ -00173 │ │ │ │ │ -while ((j &_particles, double _radius, double _f, │ │ │ │ │ -00218 │ │ │ │ │ -int _n_pass_max, Esplit_merge_scale _split_merge_scale){ │ │ │ │ │ -00219 │ │ │ │ │ -00220 │ │ │ │ │ -vector all_particles; │ │ │ │ │ -00221 │ │ │ │ │ -00222 │ │ │ │ │ -// in the case of passive area, we do not need │ │ │ │ │ -00223 │ │ │ │ │ -// to put the ghosts in the stable-cone search │ │ │ │ │ -00224 │ │ │ │ │ -// (they do no influence the list of stable cones) │ │ │ │ │ -00225 │ │ │ │ │ -// Here’s how it goes... │ │ │ │ │ -00226 │ │ │ │ │ -stable_cone_soft_pt2_cutoff = pt_soft_min*pt_soft_min; │ │ │ │ │ -00227 │ │ │ │ │ -00228 │ │ │ │ │ -// clear potential previous runs │ │ │ │ │ -00229 │ │ │ │ │ -jet_areas.clear(); │ │ │ │ │ -00230 │ │ │ │ │ -00231 │ │ │ │ │ -// put initial set of particles in the list │ │ │ │ │ -00232 │ │ │ │ │ -int n_hard = _particles.size(); │ │ │ │ │ -00233 │ │ │ │ │ -all_particles = _particles; │ │ │ │ │ -00234 │ │ │ │ │ -00235 │ │ │ │ │ -// build the set of ghost particles and add them to the particle list │ │ │ │ │ -00236 │ │ │ │ │ -int i,j; │ │ │ │ │ -00237 │ │ │ │ │ -double eta_g,phi_g,pt_g; │ │ │ │ │ -00238 │ │ │ │ │ -00239 │ │ │ │ │ -for (i=0;i= n_hard │ │ │ │ │ -00257 │ │ │ │ │ -// and deduce the number of ghosts in the jet, hence the area. │ │ │ │ │ -00258 │ │ │ │ │ -double area_factor = (2.0*grid_eta_max/grid_size)*(twopi/grid_size); │ │ │ │ │ -00259 │ │ │ │ │ -for (i=0;i<(int) jets.size();i++){ │ │ │ │ │ -00260 │ │ │ │ │ -j=0; │ │ │ │ │ -00261 │ │ │ │ │ -while ((j &_particles, double _radius, double _f, │ │ │ │ │ -00292 │ │ │ │ │ -int _n_pass_max, Esplit_merge_scale _split_merge_scale, │ │ │ │ │ -00293 │ │ │ │ │ -bool _hard_only){ │ │ │ │ │ -00294 │ │ │ │ │ -00295 │ │ │ │ │ -vector all_particles; │ │ │ │ │ -00296 │ │ │ │ │ -00297 │ │ │ │ │ -// put "hardest cut-off" if needed │ │ │ │ │ -00298 │ │ │ │ │ -// this avoids computation of ghosted jets when not required and │ │ │ │ │ -00299 │ │ │ │ │ -// significantly shortens the SM. │ │ │ │ │ -00300 │ │ │ │ │ -if (_hard_only){ │ │ │ │ │ -00301 │ │ │ │ │ -SM_var2_hardest_cut_off = pt_soft_min*pt_soft_min; │ │ │ │ │ -00302 │ │ │ │ │ -} │ │ │ │ │ -00303 │ │ │ │ │ -00304 │ │ │ │ │ -// clear potential previous runs │ │ │ │ │ -00305 │ │ │ │ │ -jet_areas.clear(); │ │ │ │ │ -00306 │ │ │ │ │ -00307 │ │ │ │ │ -// put initial set of particles in the list │ │ │ │ │ -00308 │ │ │ │ │ -int n_hard = _particles.size(); │ │ │ │ │ -00309 │ │ │ │ │ -all_particles = _particles; │ │ │ │ │ -00310 │ │ │ │ │ -00311 │ │ │ │ │ -// build the set of ghost particles and add them to the particle list │ │ │ │ │ -00312 │ │ │ │ │ -int i,j; │ │ │ │ │ -00313 │ │ │ │ │ -double eta_g,phi_g,pt_g; │ │ │ │ │ -00314 │ │ │ │ │ -00315 │ │ │ │ │ -for (i=0;i= n_hard │ │ │ │ │ -00333 │ │ │ │ │ -// and deduce the number of ghosts in the jet, hence the area. │ │ │ │ │ -00334 │ │ │ │ │ -double area_factor = (2.0*grid_eta_max/grid_size)*(twopi/grid_size); │ │ │ │ │ -00335 │ │ │ │ │ -00336 │ │ │ │ │ -for (i=0;i<(int) jets.size();i++){ │ │ │ │ │ -00337 │ │ │ │ │ -jet_areas.push_back(jets[i]); │ │ │ │ │ -00338 │ │ │ │ │ -j=0; │ │ │ │ │ -00339 │ │ │ │ │ -while ((j &_particles, double _radius, double _f, │ │ │ │ │ 00113 │ │ │ │ │ int _n_pass_max=0, Esplit_merge_scale _split_merge_scale=SM_pttilde, │ │ │ │ │ 00114 │ │ │ │ │ bool _hard_only=false); │ │ │ │ │ +00115 │ │ │ │ │ +00123 │ │ │ │ │ +int compute_passive_areas(std::vector &_particles, double _radius, double _f, │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 195 │ │ │ │ │ │ │ │ │ │ 196 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ -00115 │ │ │ │ │ -00123 │ │ │ │ │ -int compute_passive_areas(std::vector &_particles, double _radius, double _f, │ │ │ │ │ 00124 │ │ │ │ │ int _n_pass_max=0, Esplit_merge_scale _split_merge_scale=SM_pttilde); │ │ │ │ │ 00125 │ │ │ │ │ 00126 │ │ │ │ │ int grid_size; │ │ │ │ │ 00127 │ │ │ │ │ double grid_eta_max; │ │ │ │ │ @@ -15023,21 +15017,21 @@ │ │ │ │ │ 00082 │ │ │ │ │ bool operator!=(const circulator & other) const {return m_here != other.m_here;} │ │ │ │ │ 00083 │ │ │ │ │ 00084 private: │ │ │ │ │ 00085 │ │ │ │ │ T m_here, m_begin, m_end; │ │ │ │ │ 00086 }; │ │ │ │ │ +00087 │ │ │ │ │ +00088 } │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 5.12 config.h │ │ │ │ │ │ │ │ │ │ -00087 │ │ │ │ │ -00088 } │ │ │ │ │ 00089 │ │ │ │ │ 00090 #endif // __CIRCULATOR_H__ │ │ │ │ │ │ │ │ │ │ 5.12 │ │ │ │ │ │ │ │ │ │ config.h │ │ │ │ │ │ │ │ │ │ @@ -15113,25 +15107,25 @@ │ │ │ │ │ 00070 #define SISCONE_PACKAGE "siscone" │ │ │ │ │ 00071 #endif │ │ │ │ │ 00072 │ │ │ │ │ 00073 /* Define to the address where bug reports for this package should be sent. */ │ │ │ │ │ 00074 #ifndef SISCONE_PACKAGE_BUGREPORT │ │ │ │ │ 00075 #define SISCONE_PACKAGE_BUGREPORT "" │ │ │ │ │ 00076 #endif │ │ │ │ │ +00077 │ │ │ │ │ +00078 /* Define to the full name of this package. */ │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 197 │ │ │ │ │ │ │ │ │ │ 198 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ -00077 │ │ │ │ │ -00078 /* Define to the full name of this package. */ │ │ │ │ │ 00079 #ifndef SISCONE_PACKAGE_NAME │ │ │ │ │ 00080 #define SISCONE_PACKAGE_NAME "SISCone" │ │ │ │ │ 00081 #endif │ │ │ │ │ 00082 │ │ │ │ │ 00083 /* Define to the full name and version of this package. */ │ │ │ │ │ 00084 #ifndef SISCONE_PACKAGE_STRING │ │ │ │ │ 00085 #define SISCONE_PACKAGE_STRING "SISCone 3.0.5" │ │ │ │ │ @@ -15174,15 +15168,15 @@ │ │ │ │ │ 00120 /* once: _SISCONE_CONFIG_H */ │ │ │ │ │ 00121 #endif │ │ │ │ │ │ │ │ │ │ 5.13 │ │ │ │ │ │ │ │ │ │ config_raw.h │ │ │ │ │ │ │ │ │ │ -00001 /* siscone/config_raw.h. Generated from config.h.in by configure. │ │ │ │ │ +00001 /* siscone/config_raw.h. Generated from config.h.in by configure. */ │ │ │ │ │ 00002 /* config.h.in. Generated from configure.ac by autoheader. */ │ │ │ │ │ 00003 │ │ │ │ │ 00004 /* Define to 1 if you have the header file. */ │ │ │ │ │ 00005 #define HAVE_DLFCN_H 1 │ │ │ │ │ 00006 │ │ │ │ │ 00007 /* Define to 1 if you have the header file. */ │ │ │ │ │ 00008 #define HAVE_INTTYPES_H 1 │ │ │ │ │ @@ -15209,25 +15203,23 @@ │ │ │ │ │ 00029 #define HAVE_SYS_STAT_H 1 │ │ │ │ │ 00030 │ │ │ │ │ 00031 /* Define to 1 if you have the header file. */ │ │ │ │ │ 00032 #define HAVE_SYS_TYPES_H 1 │ │ │ │ │ 00033 │ │ │ │ │ 00034 /* Define to 1 if you have the header file. */ │ │ │ │ │ 00035 #define HAVE_UNISTD_H 1 │ │ │ │ │ - │ │ │ │ │ -*/ │ │ │ │ │ +00036 │ │ │ │ │ +00037 /* Define to the sub-directory where libtool stores uninstalled libraries. */ │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 5.14 siscone/defines.h File Reference │ │ │ │ │ │ │ │ │ │ 199 │ │ │ │ │ │ │ │ │ │ -00036 │ │ │ │ │ -00037 /* Define to the sub-directory where libtool stores uninstalled libraries. */ │ │ │ │ │ 00038 #define LT_OBJDIR ".libs/" │ │ │ │ │ 00039 │ │ │ │ │ 00040 /* Name of package */ │ │ │ │ │ 00041 #define PACKAGE "siscone" │ │ │ │ │ 00042 │ │ │ │ │ 00043 /* Define to the address where bug reports for this package should be sent. */ │ │ │ │ │ 00044 #define PACKAGE_BUGREPORT "" │ │ │ │ │ @@ -15575,20 +15567,20 @@ │ │ │ │ │ 00125 #endif │ │ │ │ │ 00126 │ │ │ │ │ 00127 #endif // __DEFINES_H__ │ │ │ │ │ 00128 │ │ │ │ │ │ │ │ │ │ 5.16 │ │ │ │ │ │ │ │ │ │ -geom_2d.cpp │ │ │ │ │ +quadtree.cpp │ │ │ │ │ │ │ │ │ │ 00001 │ │ │ │ │ -00002 // File: geom_2d.cpp │ │ │ │ │ +00002 // File: quadtree.cpp │ │ │ │ │ // │ │ │ │ │ -00003 // Description: source file for two-dimensional geometry tools │ │ │ │ │ +00003 // Description: source file for quadtree management (Cquadtree class) │ │ │ │ │ // │ │ │ │ │ 00004 // This file is part of the SISCone project. │ │ │ │ │ // │ │ │ │ │ 00005 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ // │ │ │ │ │ 00006 // │ │ │ │ │ // │ │ │ │ │ @@ -15619,849 +15611,14 @@ │ │ │ │ │ 00019 // You should have received a copy of the GNU General Public License │ │ │ │ │ // │ │ │ │ │ 00020 // along with this program; if not, write to the Free Software │ │ │ │ │ // │ │ │ │ │ 00021 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ 00022 // │ │ │ │ │ // │ │ │ │ │ -00023 // $Revision:: 171 │ │ │ │ │ -$// │ │ │ │ │ -00024 // $Date:: 2007-06-19 16:26:05 +0200 (Tue, 19 Jun 2007) │ │ │ │ │ -$// │ │ │ │ │ -00026 │ │ │ │ │ -00027 #include "geom_2d.h" │ │ │ │ │ -00028 #include │ │ │ │ │ -00029 │ │ │ │ │ -00030 namespace siscone{ │ │ │ │ │ -00031 │ │ │ │ │ -00032 #define PHI_RANGE_MASK 0xFFFFFFFF │ │ │ │ │ -00033 │ │ │ │ │ -00034 /********************************************************* │ │ │ │ │ -00035 * class Ceta_phi_range implementation │ │ │ │ │ -* │ │ │ │ │ -00036 * class for holding a covering range in eta-phi │ │ │ │ │ -* │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.16 geom_2d.cpp │ │ │ │ │ - │ │ │ │ │ -00037 * │ │ │ │ │ -* │ │ │ │ │ -00038 * This class deals with ranges in the eta-phi plane. It * │ │ │ │ │ -00039 * implements methods to test if two ranges overlap and * │ │ │ │ │ -00040 * to take the union of two overlapping intervals. │ │ │ │ │ -* │ │ │ │ │ -00041 *********************************************************/ │ │ │ │ │ -00042 │ │ │ │ │ -00043 using namespace std; │ │ │ │ │ -00044 │ │ │ │ │ -00045 // static member default init │ │ │ │ │ -00046 //---------------------------00047 double Ceta_phi_range::eta_min = -100.0; │ │ │ │ │ -00048 double Ceta_phi_range::eta_max = 100.0; │ │ │ │ │ -00049 │ │ │ │ │ -00050 // default ctor │ │ │ │ │ -00051 //-------------00052 Ceta_phi_range::Ceta_phi_range(){ │ │ │ │ │ -00053 │ │ │ │ │ -eta_range = 0; │ │ │ │ │ -00054 │ │ │ │ │ -phi_range = 0; │ │ │ │ │ -00055 } │ │ │ │ │ -00056 │ │ │ │ │ -00057 // ctor with initialisation │ │ │ │ │ -00058 // we initialise with a centre (in eta,phi) and a radius │ │ │ │ │ -00059 // - c_eta │ │ │ │ │ -eta coordinate of the centre │ │ │ │ │ -00060 // - c_phi │ │ │ │ │ -phi coordinate of the centre │ │ │ │ │ -00061 // - R │ │ │ │ │ -radius │ │ │ │ │ -00062 //------------------------------------------------------00063 Ceta_phi_range::Ceta_phi_range(double c_eta, double c_phi, double R){ │ │ │ │ │ -00064 │ │ │ │ │ -// determination of the eta range │ │ │ │ │ -00065 │ │ │ │ │ -//------------------------------00066 │ │ │ │ │ -double xmin = max(c_eta-R,eta_min+0.0001); │ │ │ │ │ -00067 │ │ │ │ │ -double xmax = min(c_eta+R,eta_max-0.0001); │ │ │ │ │ -00068 │ │ │ │ │ -00069 │ │ │ │ │ -unsigned int cell_min = get_eta_cell(xmin); │ │ │ │ │ -00070 │ │ │ │ │ -unsigned int cell_max = get_eta_cell(xmax); │ │ │ │ │ -00071 │ │ │ │ │ -00072 │ │ │ │ │ -// warning: if cell_max==2^31, 2*cell_max==0 hence, │ │ │ │ │ -00073 │ │ │ │ │ -// even if the next formula is formally (2*cell_max-cell_min), │ │ │ │ │ -00074 │ │ │ │ │ -// expressing it as (cell_max-cell_min)+cell_max is safe. │ │ │ │ │ -00075 │ │ │ │ │ -eta_range = (cell_max-cell_min)+cell_max; │ │ │ │ │ -00076 │ │ │ │ │ -00077 │ │ │ │ │ -// determination of the phi range │ │ │ │ │ -00078 │ │ │ │ │ -// !! taking care of periodicity !! │ │ │ │ │ -00079 │ │ │ │ │ -//--------------------------------00080 │ │ │ │ │ -xmin = phi_in_range(c_phi-R); │ │ │ │ │ -00081 │ │ │ │ │ -xmax = phi_in_range(c_phi+R); │ │ │ │ │ -00082 │ │ │ │ │ -00083 │ │ │ │ │ -cell_min = get_phi_cell(xmin); │ │ │ │ │ -00084 │ │ │ │ │ -cell_max = get_phi_cell(xmax); │ │ │ │ │ -00085 │ │ │ │ │ -00086 │ │ │ │ │ -// Also, if the interval goes through pi, inversion is needed │ │ │ │ │ -00087 │ │ │ │ │ -if (xmax>xmin) │ │ │ │ │ -00088 │ │ │ │ │ -phi_range = (cell_max-cell_min)+cell_max; │ │ │ │ │ -00089 │ │ │ │ │ -else { │ │ │ │ │ -00090 │ │ │ │ │ -phi_range = (cell_min==cell_max) │ │ │ │ │ -00091 │ │ │ │ │ -? PHI_RANGE_MASK │ │ │ │ │ -00092 │ │ │ │ │ -: ((PHI_RANGE_MASK^(cell_min-cell_max)) + cell_max); │ │ │ │ │ -00093 │ │ │ │ │ -} │ │ │ │ │ -00094 } │ │ │ │ │ -00095 │ │ │ │ │ -00096 // assignment of range │ │ │ │ │ -00097 // - r │ │ │ │ │ -range to assign to current one │ │ │ │ │ -00098 //--------------------------------------00099 Ceta_phi_range& Ceta_phi_range::operator = (const Ceta_phi_range &r){ │ │ │ │ │ -00100 │ │ │ │ │ -eta_range = r.eta_range; │ │ │ │ │ -00101 │ │ │ │ │ -phi_range = r.phi_range; │ │ │ │ │ -00102 │ │ │ │ │ -00103 │ │ │ │ │ -return *this; │ │ │ │ │ -00104 } │ │ │ │ │ -00105 │ │ │ │ │ -00106 // add a particle to the range │ │ │ │ │ -00107 // - eta eta coordinate of the particle │ │ │ │ │ -00108 // - phi phi coordinate of the particle │ │ │ │ │ -00109 // \return 0 on success, 1 on error │ │ │ │ │ -00110 //---------------------------------------00111 int Ceta_phi_range::add_particle(const double eta, const double phi){ │ │ │ │ │ -00112 │ │ │ │ │ -// deal with the eta coordinate │ │ │ │ │ -00113 │ │ │ │ │ -eta_range |= get_eta_cell(eta); │ │ │ │ │ -00114 │ │ │ │ │ -00115 │ │ │ │ │ -// deal with the phi coordinate │ │ │ │ │ -00116 │ │ │ │ │ -phi_range |= get_phi_cell(phi); │ │ │ │ │ -00117 │ │ │ │ │ -00118 │ │ │ │ │ -return 0; │ │ │ │ │ -00119 } │ │ │ │ │ -00120 │ │ │ │ │ -00121 │ │ │ │ │ -00122 // test overlap │ │ │ │ │ -00123 // - r1 first range │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -203 │ │ │ │ │ - │ │ │ │ │ - 204 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ -00124 // - r2 second range │ │ │ │ │ -00125 // return true if overlap, false otherwise. │ │ │ │ │ -00126 //-----------------------------------------00127 bool is_range_overlap(const Ceta_phi_range &r1, const Ceta_phi_range &r2){ │ │ │ │ │ -00128 │ │ │ │ │ -// check overlap in eta AND phi │ │ │ │ │ -00129 │ │ │ │ │ -return ((r1.eta_range & r2.eta_range) && (r1.phi_range & r2.phi_range)); │ │ │ │ │ -00130 } │ │ │ │ │ -00131 │ │ │ │ │ -00132 // compute union │ │ │ │ │ -00133 // Note: we assume that the two intervals overlap │ │ │ │ │ -00134 // - r1 first range │ │ │ │ │ -00135 // - r2 second range │ │ │ │ │ -00136 // \return union of the two ranges │ │ │ │ │ -00137 //-----------------------------------------00138 const Ceta_phi_range range_union (const Ceta_phi_range &r1, const Ceta_phi_range &r2){ │ │ │ │ │ -00139 │ │ │ │ │ -Ceta_phi_range tmp; │ │ │ │ │ -00140 │ │ │ │ │ -00141 │ │ │ │ │ -// compute union in eta │ │ │ │ │ -00142 │ │ │ │ │ -tmp.eta_range = r1.eta_range | r2.eta_range; │ │ │ │ │ -00143 │ │ │ │ │ -00144 │ │ │ │ │ -// compute union in phi │ │ │ │ │ -00145 │ │ │ │ │ -tmp.phi_range = r1.phi_range | r2.phi_range; │ │ │ │ │ -00146 │ │ │ │ │ -00147 │ │ │ │ │ -return tmp; │ │ │ │ │ -00148 } │ │ │ │ │ -00149 │ │ │ │ │ -00150 } │ │ │ │ │ - │ │ │ │ │ -5.17 │ │ │ │ │ - │ │ │ │ │ -geom_2d.cpp │ │ │ │ │ - │ │ │ │ │ -00001 │ │ │ │ │ -00002 // File: geom_2d.cpp │ │ │ │ │ -// │ │ │ │ │ -00003 // Description: source file for two-dimensional geometry tools │ │ │ │ │ -// │ │ │ │ │ -00004 // This file is part of the SISCone project. │ │ │ │ │ -// │ │ │ │ │ -00005 // WARNING: this is not the main SISCone trunk but │ │ │ │ │ -// │ │ │ │ │ -00006 // │ │ │ │ │ -an adaptation to spherical coordinates │ │ │ │ │ -// │ │ │ │ │ -00007 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ -// │ │ │ │ │ -00008 // │ │ │ │ │ -// │ │ │ │ │ -00009 // Copyright (c) 2006-2008 Gavin Salam and Gregory Soyez │ │ │ │ │ -00010 // │ │ │ │ │ -// │ │ │ │ │ -00011 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ -// │ │ │ │ │ -00012 // it under the terms of the GNU General Public License as published by │ │ │ │ │ -// │ │ │ │ │ -00013 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ -// │ │ │ │ │ -00014 // (at your option) any later version. │ │ │ │ │ -// │ │ │ │ │ -00015 // │ │ │ │ │ -// │ │ │ │ │ -00016 // This program is distributed in the hope that it will be useful, │ │ │ │ │ -// │ │ │ │ │ -00017 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -// │ │ │ │ │ -00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ -// │ │ │ │ │ -00019 // GNU General Public License for more details. │ │ │ │ │ -// │ │ │ │ │ -00020 // │ │ │ │ │ -// │ │ │ │ │ -00021 // You should have received a copy of the GNU General Public License │ │ │ │ │ -// │ │ │ │ │ -00022 // along with this program; if not, write to the Free Software │ │ │ │ │ -// │ │ │ │ │ -00023 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ -00024 // │ │ │ │ │ -// │ │ │ │ │ -00025 // $Revision:: 378 │ │ │ │ │ -$// │ │ │ │ │ -00026 // $Date:: 2016-02-24 15:10:38 +0100 (Wed, 24 Feb 2016) │ │ │ │ │ -$// │ │ │ │ │ -00028 │ │ │ │ │ -00029 #include "geom_2d.h" │ │ │ │ │ -00030 #include │ │ │ │ │ -00031 │ │ │ │ │ -00032 namespace siscone_spherical{ │ │ │ │ │ -00033 │ │ │ │ │ -00034 #define PHI_RANGE_MASK 0xFFFFFFFF │ │ │ │ │ -00035 │ │ │ │ │ -00036 /********************************************************* │ │ │ │ │ -00037 * class CSphtheta_phi_range implementation │ │ │ │ │ -* │ │ │ │ │ -00038 * class for holding a covering range in eta-phi │ │ │ │ │ -* │ │ │ │ │ -00039 * │ │ │ │ │ -* │ │ │ │ │ -00040 * This class deals with ranges in the eta-phi plane. It * │ │ │ │ │ -00041 * implements methods to test if two ranges overlap and * │ │ │ │ │ -00042 * to take the union of two overlapping intervals. │ │ │ │ │ -* │ │ │ │ │ -00043 *********************************************************/ │ │ │ │ │ -00044 │ │ │ │ │ -00045 using namespace std; │ │ │ │ │ -00046 │ │ │ │ │ -00047 // static member default init │ │ │ │ │ -00048 //---------------------------00049 double CSphtheta_phi_range::theta_min = 0.0; │ │ │ │ │ -00050 double CSphtheta_phi_range::theta_max = M_PI; │ │ │ │ │ -00051 │ │ │ │ │ -00052 // default ctor │ │ │ │ │ -00053 //-------------00054 CSphtheta_phi_range::CSphtheta_phi_range(){ │ │ │ │ │ - │ │ │ │ │ -// │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.17 geom_2d.cpp │ │ │ │ │ - │ │ │ │ │ -00055 │ │ │ │ │ -theta_range = 0; │ │ │ │ │ -00056 │ │ │ │ │ -phi_range = 0; │ │ │ │ │ -00057 } │ │ │ │ │ -00058 │ │ │ │ │ -00059 // ctor with initialisation │ │ │ │ │ -00060 // we initialise with a centre (in eta,phi) and a radius │ │ │ │ │ -00061 // - c_theta theta coordinate of the centre │ │ │ │ │ -00062 // - c_phi │ │ │ │ │ -phi coordinate of the centre │ │ │ │ │ -00063 // - R │ │ │ │ │ -radius │ │ │ │ │ -00064 //------------------------------------------------------00065 CSphtheta_phi_range::CSphtheta_phi_range(double c_theta, double c_phi, double R){ │ │ │ │ │ -00066 │ │ │ │ │ -// determination of the eta range │ │ │ │ │ -00067 │ │ │ │ │ -//------------------------------00068 │ │ │ │ │ -double xmin = max(c_theta-R,theta_min+0.00001); │ │ │ │ │ -00069 │ │ │ │ │ -double xmax = min(c_theta+R,theta_max-0.00001); │ │ │ │ │ -00070 │ │ │ │ │ -00071 │ │ │ │ │ -unsigned int cell_min = get_theta_cell(xmin); │ │ │ │ │ -00072 │ │ │ │ │ -unsigned int cell_max = get_theta_cell(xmax); │ │ │ │ │ -00073 │ │ │ │ │ -00074 │ │ │ │ │ -// warning: if cell_max==2^31, 2*cell_max==0 hence, │ │ │ │ │ -00075 │ │ │ │ │ -// even if the next formula is formally (2*cell_max-cell_min), │ │ │ │ │ -00076 │ │ │ │ │ -// expressing it as (cell_max-cell_min)+cell_max is safe. │ │ │ │ │ -00077 │ │ │ │ │ -theta_range = (cell_max-cell_min)+cell_max; │ │ │ │ │ -00078 │ │ │ │ │ -00079 │ │ │ │ │ -// determination of the phi range │ │ │ │ │ -00080 │ │ │ │ │ -// !! taking care of periodicity !! │ │ │ │ │ -00081 │ │ │ │ │ -// !! and the theta dependence │ │ │ │ │ -!! │ │ │ │ │ -00082 │ │ │ │ │ -//--------------------------------00083 │ │ │ │ │ -double ymin,ymax; │ │ │ │ │ -00084 │ │ │ │ │ -double extra = asin(R/M_PI); │ │ │ │ │ -00085 │ │ │ │ │ -// if the theta range comes too close to the endpoints (theta=0 or │ │ │ │ │ -00086 │ │ │ │ │ -// theta=pi), then keep the full phi range │ │ │ │ │ -00087 │ │ │ │ │ -if (xmin<=theta_min+extra){ │ │ │ │ │ -00088 │ │ │ │ │ -ymin = -M_PI+0.00001; │ │ │ │ │ -00089 │ │ │ │ │ -ymax = M_PI-0.00001; │ │ │ │ │ -00090 │ │ │ │ │ -} else if (xmax>=theta_max-extra){ │ │ │ │ │ -00091 │ │ │ │ │ -ymin = -M_PI+0.00001; │ │ │ │ │ -00092 │ │ │ │ │ -ymax = M_PI-0.00001; │ │ │ │ │ -00093 │ │ │ │ │ -} else { │ │ │ │ │ -00094 │ │ │ │ │ -extra = max(1.0/sin(xmin), 1.0/sin(xmax)); │ │ │ │ │ -00095 │ │ │ │ │ -ymin = (c_phi-R)*extra; │ │ │ │ │ -00096 │ │ │ │ │ -while (ymin<-M_PI) ymin+=twopi; │ │ │ │ │ -00097 │ │ │ │ │ -while (ymin> M_PI) ymin-=twopi; │ │ │ │ │ -00098 │ │ │ │ │ -ymax = (c_phi-R)*extra; │ │ │ │ │ -00099 │ │ │ │ │ -while (ymax<-M_PI) ymax+=twopi; │ │ │ │ │ -00100 │ │ │ │ │ -while (ymax> M_PI) ymax-=twopi; │ │ │ │ │ -00101 │ │ │ │ │ -} │ │ │ │ │ -00102 │ │ │ │ │ -cell_min = get_phi_cell(ymin); │ │ │ │ │ -00103 │ │ │ │ │ -cell_max = get_phi_cell(ymax); │ │ │ │ │ -00104 │ │ │ │ │ -00105 │ │ │ │ │ -// Also, if the interval goes through pi, inversion is needed │ │ │ │ │ -00106 │ │ │ │ │ -if (ymax>ymin) │ │ │ │ │ -00107 │ │ │ │ │ -phi_range = (cell_max-cell_min)+cell_max; │ │ │ │ │ -00108 │ │ │ │ │ -else { │ │ │ │ │ -00109 │ │ │ │ │ -phi_range = (cell_min==cell_max) │ │ │ │ │ -00110 │ │ │ │ │ -? PHI_RANGE_MASK │ │ │ │ │ -00111 │ │ │ │ │ -: ((PHI_RANGE_MASK^(cell_min-cell_max)) + cell_max); │ │ │ │ │ -00112 │ │ │ │ │ -} │ │ │ │ │ -00113 } │ │ │ │ │ -00114 │ │ │ │ │ -00115 // assignment of range │ │ │ │ │ -00116 // - r │ │ │ │ │ -range to assign to current one │ │ │ │ │ -00117 //--------------------------------------00118 CSphtheta_phi_range& CSphtheta_phi_range::operator = (const CSphtheta_phi_range &r){ │ │ │ │ │ -00119 │ │ │ │ │ -theta_range = r.theta_range; │ │ │ │ │ -00120 │ │ │ │ │ -phi_range = r.phi_range; │ │ │ │ │ -00121 │ │ │ │ │ -00122 │ │ │ │ │ -return *this; │ │ │ │ │ -00123 } │ │ │ │ │ -00124 │ │ │ │ │ -00125 // add a particle to the range │ │ │ │ │ -00126 // - eta eta coordinate of the particle │ │ │ │ │ -00127 // - phi phi coordinate of the particle │ │ │ │ │ -00128 // \return 0 on success, 1 on error │ │ │ │ │ -00129 //---------------------------------------00130 int CSphtheta_phi_range::add_particle(const double theta, const double phi){ │ │ │ │ │ -00131 │ │ │ │ │ -// get the theta cell │ │ │ │ │ -00132 │ │ │ │ │ -unsigned int theta_cell = get_theta_cell(theta); │ │ │ │ │ -00133 │ │ │ │ │ -00134 │ │ │ │ │ -// deal with the eta coordinate │ │ │ │ │ -00135 │ │ │ │ │ -theta_range |= theta_cell; │ │ │ │ │ -00136 │ │ │ │ │ -00137 │ │ │ │ │ -// deal with the phi coordinate │ │ │ │ │ -00138 │ │ │ │ │ -// │ │ │ │ │ -00139 │ │ │ │ │ -// watch out: if the theta_cell includes theta==0 or theta==pi, │ │ │ │ │ -00140 │ │ │ │ │ -// incude the full phi range │ │ │ │ │ -00141 │ │ │ │ │ -if ((theta_cell == 0x1) || (theta_cell == 0x80000000)) │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -205 │ │ │ │ │ - │ │ │ │ │ - 206 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ -00142 │ │ │ │ │ -phi_range = 0xffffffff; │ │ │ │ │ -00143 │ │ │ │ │ -else │ │ │ │ │ -00144 │ │ │ │ │ -phi_range |= get_phi_cell(phi); │ │ │ │ │ -00145 │ │ │ │ │ -00146 │ │ │ │ │ -return 0; │ │ │ │ │ -00147 } │ │ │ │ │ -00148 │ │ │ │ │ -00149 │ │ │ │ │ -00150 // test overlap │ │ │ │ │ -00151 // - r1 first range │ │ │ │ │ -00152 // - r2 second range │ │ │ │ │ -00153 // return true if overlap, false otherwise. │ │ │ │ │ -00154 //-----------------------------------------00155 bool is_range_overlap(const CSphtheta_phi_range &r1, const CSphtheta_phi_range &r2){ │ │ │ │ │ -00156 │ │ │ │ │ -// check overlap in eta AND phi │ │ │ │ │ -00157 │ │ │ │ │ -return ((r1.theta_range & r2.theta_range) && (r1.phi_range & r2.phi_range)); │ │ │ │ │ -00158 } │ │ │ │ │ -00159 │ │ │ │ │ -00160 // compute union │ │ │ │ │ -00161 // Note: we assume that the two intervals overlap │ │ │ │ │ -00162 // - r1 first range │ │ │ │ │ -00163 // - r2 second range │ │ │ │ │ -00164 // \return union of the two ranges │ │ │ │ │ -00165 //-----------------------------------------00166 const CSphtheta_phi_range range_union (const CSphtheta_phi_range &r1, const CSphtheta_phi_range &r2){ │ │ │ │ │ -00167 │ │ │ │ │ -CSphtheta_phi_range tmp; │ │ │ │ │ -00168 │ │ │ │ │ -00169 │ │ │ │ │ -// compute union in eta │ │ │ │ │ -00170 │ │ │ │ │ -tmp.theta_range = r1.theta_range | r2.theta_range; │ │ │ │ │ -00171 │ │ │ │ │ -00172 │ │ │ │ │ -// compute union in phi │ │ │ │ │ -00173 │ │ │ │ │ -tmp.phi_range = r1.phi_range | r2.phi_range; │ │ │ │ │ -00174 │ │ │ │ │ -00175 │ │ │ │ │ -return tmp; │ │ │ │ │ -00176 } │ │ │ │ │ -00177 │ │ │ │ │ -00178 } │ │ │ │ │ - │ │ │ │ │ -5.18 │ │ │ │ │ - │ │ │ │ │ -geom_2d.h │ │ │ │ │ - │ │ │ │ │ -00001 // -*- C++ -*00003 // File: geom_2d.h │ │ │ │ │ -// │ │ │ │ │ -00004 // Description: header file for two-dimensional geometry tools │ │ │ │ │ -// │ │ │ │ │ -00005 // This file is part of the SISCone project. │ │ │ │ │ -// │ │ │ │ │ -00006 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ -// │ │ │ │ │ -00007 // │ │ │ │ │ -// │ │ │ │ │ -00008 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ -// │ │ │ │ │ -00009 // │ │ │ │ │ -// │ │ │ │ │ -00010 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ -// │ │ │ │ │ -00011 // it under the terms of the GNU General Public License as published by │ │ │ │ │ -// │ │ │ │ │ -00012 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ -// │ │ │ │ │ -00013 // (at your option) any later version. │ │ │ │ │ -// │ │ │ │ │ -00014 // │ │ │ │ │ -// │ │ │ │ │ -00015 // This program is distributed in the hope that it will be useful, │ │ │ │ │ -// │ │ │ │ │ -00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -// │ │ │ │ │ -00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ -// │ │ │ │ │ -00018 // GNU General Public License for more details. │ │ │ │ │ -// │ │ │ │ │ -00019 // │ │ │ │ │ -// │ │ │ │ │ -00020 // You should have received a copy of the GNU General Public License │ │ │ │ │ -// │ │ │ │ │ -00021 // along with this program; if not, write to the Free Software │ │ │ │ │ -// │ │ │ │ │ -00022 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ -00023 // │ │ │ │ │ -// │ │ │ │ │ -00024 // $Revision:: 422 │ │ │ │ │ -$// │ │ │ │ │ -00025 // $Date:: 2020-04-22 11:51:09 +0200 (Wed, 22 Apr 2020) │ │ │ │ │ -$// │ │ │ │ │ -00027 │ │ │ │ │ -00028 #ifndef __GEOM_2D_H__ │ │ │ │ │ -00029 #define __GEOM_2D_H__ │ │ │ │ │ -00030 │ │ │ │ │ -00031 #include │ │ │ │ │ -00032 #include │ │ │ │ │ -00033 #include "defines.h" │ │ │ │ │ -00034 │ │ │ │ │ -00035 #ifndef M_PI │ │ │ │ │ -00036 #define M_PI 3.141592653589793238462643383279502884197 │ │ │ │ │ -00037 #endif │ │ │ │ │ -00038 │ │ │ │ │ -00039 namespace siscone{ │ │ │ │ │ -00040 │ │ │ │ │ -00043 inline double phi_in_range(double phi) { │ │ │ │ │ -00044 │ │ │ │ │ -if │ │ │ │ │ -(phi <= -M_PI) phi += twopi; │ │ │ │ │ -00045 │ │ │ │ │ -else if (phi > │ │ │ │ │ -M_PI) phi -= twopi; │ │ │ │ │ -00046 │ │ │ │ │ -return phi; │ │ │ │ │ -00047 } │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.19 geom_2d.h │ │ │ │ │ - │ │ │ │ │ -207 │ │ │ │ │ - │ │ │ │ │ -00048 │ │ │ │ │ -00052 inline double dphi(double phi1, double phi2) { │ │ │ │ │ -00053 │ │ │ │ │ -return phi_in_range(phi1-phi2); │ │ │ │ │ -00054 } │ │ │ │ │ -00055 │ │ │ │ │ -00056 │ │ │ │ │ -00060 inline double abs_dphi(double phi1, double phi2) { │ │ │ │ │ -00061 │ │ │ │ │ -double delta = fabs(phi1-phi2); │ │ │ │ │ -00062 │ │ │ │ │ -return delta > M_PI ? twopi-delta : delta; │ │ │ │ │ -00063 } │ │ │ │ │ -00064 │ │ │ │ │ -00066 inline double pow2(double x) {return x*x;} │ │ │ │ │ -00067 │ │ │ │ │ -00068 │ │ │ │ │ -00073 class Ctwovect { │ │ │ │ │ -00074 public: │ │ │ │ │ -00076 │ │ │ │ │ -Ctwovect() : x(0.0), y(0.0) {} │ │ │ │ │ -00077 │ │ │ │ │ -00081 │ │ │ │ │ -Ctwovect(double _x, double _y) : x(_x), y(_y) {} │ │ │ │ │ -00082 │ │ │ │ │ -00084 │ │ │ │ │ -double x, y; │ │ │ │ │ -00085 │ │ │ │ │ -00087 │ │ │ │ │ -inline double mod2() const {return pow2(x)+pow2(y);} │ │ │ │ │ -00088 │ │ │ │ │ -00090 │ │ │ │ │ -inline double modulus() const {return sqrt(mod2());} │ │ │ │ │ -00091 }; │ │ │ │ │ -00092 │ │ │ │ │ -00093 │ │ │ │ │ -00098 inline double dot_product(const Ctwovect & a, const Ctwovect & b) { │ │ │ │ │ -00099 │ │ │ │ │ -return a.x*b.x + a.y*b.y; │ │ │ │ │ -00100 } │ │ │ │ │ -00101 │ │ │ │ │ -00102 │ │ │ │ │ -00107 inline double cross_product(const Ctwovect & a, const Ctwovect & b) { │ │ │ │ │ -00108 │ │ │ │ │ -return a.x*b.y - a.y*b.x; │ │ │ │ │ -00109 } │ │ │ │ │ -00110 │ │ │ │ │ -00111 │ │ │ │ │ -00120 class Ceta_phi_range{ │ │ │ │ │ -00121 public: │ │ │ │ │ -00123 │ │ │ │ │ -Ceta_phi_range(); │ │ │ │ │ -00124 │ │ │ │ │ -00130 │ │ │ │ │ -Ceta_phi_range(double c_eta, double c_phi, double R); │ │ │ │ │ -00131 │ │ │ │ │ -00134 │ │ │ │ │ -Ceta_phi_range& operator = (const Ceta_phi_range &r); │ │ │ │ │ -00135 │ │ │ │ │ -00140 │ │ │ │ │ -int add_particle(const double eta, const double phi); │ │ │ │ │ -00141 │ │ │ │ │ -00143 │ │ │ │ │ -unsigned int eta_range; │ │ │ │ │ -00144 │ │ │ │ │ -00146 │ │ │ │ │ -unsigned int phi_range; │ │ │ │ │ -00147 │ │ │ │ │ -00148 │ │ │ │ │ -// extremal value for eta │ │ │ │ │ -00149 │ │ │ │ │ -static double eta_min; │ │ │ │ │ -00150 │ │ │ │ │ -static double eta_max; │ │ │ │ │ -00151 │ │ │ │ │ -00152 private: │ │ │ │ │ -00154 │ │ │ │ │ -inline unsigned int get_eta_cell(double eta){ │ │ │ │ │ -00155 │ │ │ │ │ -return (unsigned int) (1u « ((int) (32*((eta-eta_min)/(eta_max-eta_min))))); │ │ │ │ │ -00156 │ │ │ │ │ -} │ │ │ │ │ -00157 │ │ │ │ │ -00159 │ │ │ │ │ -inline unsigned int get_phi_cell(double phi){ │ │ │ │ │ -00160 │ │ │ │ │ -return (unsigned int) (1u « ((int) (32*phi/twopi+16)%32)); │ │ │ │ │ -00161 │ │ │ │ │ -} │ │ │ │ │ -00162 }; │ │ │ │ │ -00163 │ │ │ │ │ -00168 bool is_range_overlap(const Ceta_phi_range &r1, const Ceta_phi_range &r2); │ │ │ │ │ -00169 │ │ │ │ │ -00175 const Ceta_phi_range range_union(const Ceta_phi_range &r1, const Ceta_phi_range &r2); │ │ │ │ │ -00176 │ │ │ │ │ -00177 } │ │ │ │ │ -00178 │ │ │ │ │ -00179 #endif │ │ │ │ │ - │ │ │ │ │ -5.19 │ │ │ │ │ - │ │ │ │ │ -geom_2d.h │ │ │ │ │ - │ │ │ │ │ -00001 // -*- C++ -*00003 // File: geom_2d.h │ │ │ │ │ -00004 // Description: header file for two-dimensional geometry tools │ │ │ │ │ -00005 // This file is part of the SISCone project. │ │ │ │ │ -00006 // WARNING: this is not the main SISCone trunk but │ │ │ │ │ -00007 // │ │ │ │ │ -an adaptation to spherical coordinates │ │ │ │ │ -00008 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ - │ │ │ │ │ - 208 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ -00009 // │ │ │ │ │ -// │ │ │ │ │ -00010 // Copyright (c) 2006-2008 Gavin Salam and Gregory Soyez │ │ │ │ │ -// │ │ │ │ │ -00011 // │ │ │ │ │ -// │ │ │ │ │ -00012 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ -// │ │ │ │ │ -00013 // it under the terms of the GNU General Public License as published by │ │ │ │ │ -// │ │ │ │ │ -00014 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ -// │ │ │ │ │ -00015 // (at your option) any later version. │ │ │ │ │ -// │ │ │ │ │ -00016 // │ │ │ │ │ -// │ │ │ │ │ -00017 // This program is distributed in the hope that it will be useful, │ │ │ │ │ -// │ │ │ │ │ -00018 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -// │ │ │ │ │ -00019 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ -// │ │ │ │ │ -00020 // GNU General Public License for more details. │ │ │ │ │ -// │ │ │ │ │ -00021 // │ │ │ │ │ -// │ │ │ │ │ -00022 // You should have received a copy of the GNU General Public License │ │ │ │ │ -// │ │ │ │ │ -00023 // along with this program; if not, write to the Free Software │ │ │ │ │ -// │ │ │ │ │ -00024 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ -00025 // │ │ │ │ │ -// │ │ │ │ │ -00026 // $Revision:: 422 │ │ │ │ │ -$// │ │ │ │ │ -00027 // $Date:: 2020-04-22 11:51:09 +0200 (Wed, 22 Apr 2020) │ │ │ │ │ -$// │ │ │ │ │ -00029 │ │ │ │ │ -00030 #ifndef __SPH_GEOM_2D_H__ │ │ │ │ │ -00031 #define __SPH_GEOM_2D_H__ │ │ │ │ │ -00032 │ │ │ │ │ -00033 #include │ │ │ │ │ -00034 #include │ │ │ │ │ -00035 #include │ │ │ │ │ -00036 #include │ │ │ │ │ -00037 │ │ │ │ │ -00038 #ifndef M_PI │ │ │ │ │ -00039 #define M_PI 3.141592653589793238462643383279502884197 │ │ │ │ │ -00040 #endif │ │ │ │ │ -00041 │ │ │ │ │ -00042 namespace siscone_spherical{ │ │ │ │ │ -00043 │ │ │ │ │ -00052 class CSphtheta_phi_range{ │ │ │ │ │ -00053 public: │ │ │ │ │ -00055 │ │ │ │ │ -CSphtheta_phi_range(); │ │ │ │ │ -00056 │ │ │ │ │ -00062 │ │ │ │ │ -CSphtheta_phi_range(double c_theta, double c_phi, double R); │ │ │ │ │ -00063 │ │ │ │ │ -00066 │ │ │ │ │ -CSphtheta_phi_range& operator = (const CSphtheta_phi_range &r); │ │ │ │ │ -00067 │ │ │ │ │ -00072 │ │ │ │ │ -int add_particle(const double theta, const double phi); │ │ │ │ │ -00073 │ │ │ │ │ -00075 │ │ │ │ │ -unsigned int theta_range; │ │ │ │ │ -00076 │ │ │ │ │ -00078 │ │ │ │ │ -unsigned int phi_range; │ │ │ │ │ -00079 │ │ │ │ │ -00081 │ │ │ │ │ -static double theta_min; │ │ │ │ │ -00082 │ │ │ │ │ -static double theta_max; │ │ │ │ │ -00083 │ │ │ │ │ -00084 private: │ │ │ │ │ -00086 │ │ │ │ │ -inline unsigned int get_theta_cell(double theta){ │ │ │ │ │ -00087 │ │ │ │ │ -if (theta>=theta_max) return 1u«31; │ │ │ │ │ -00088 │ │ │ │ │ -return (unsigned int) (1u « ((int) (32*((theta-theta_min)/(theta_max-theta_min))))); │ │ │ │ │ -00089 │ │ │ │ │ -} │ │ │ │ │ -00090 │ │ │ │ │ -00092 │ │ │ │ │ -inline unsigned int get_phi_cell(double phi){ │ │ │ │ │ -00093 │ │ │ │ │ -return (unsigned int) (1u « ((int) (32*phi/twopi+16)%32)); │ │ │ │ │ -00094 │ │ │ │ │ -} │ │ │ │ │ -00095 }; │ │ │ │ │ -00096 │ │ │ │ │ -00101 bool is_range_overlap(const CSphtheta_phi_range &r1, const CSphtheta_phi_range &r2); │ │ │ │ │ -00102 │ │ │ │ │ -00108 const CSphtheta_phi_range range_union(const CSphtheta_phi_range &r1, const CSphtheta_phi_range &r2); │ │ │ │ │ -00109 │ │ │ │ │ -00110 } │ │ │ │ │ -00111 │ │ │ │ │ -00112 #endif │ │ │ │ │ - │ │ │ │ │ -5.20 │ │ │ │ │ - │ │ │ │ │ -quadtree.cpp │ │ │ │ │ - │ │ │ │ │ -00001 │ │ │ │ │ -00002 // File: quadtree.cpp │ │ │ │ │ -00003 // Description: source file for quadtree management (Cquadtree class) │ │ │ │ │ -00004 // This file is part of the SISCone project. │ │ │ │ │ -00005 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ -00006 // │ │ │ │ │ -00007 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ -00008 // │ │ │ │ │ -00009 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ -00010 // it under the terms of the GNU General Public License as published by │ │ │ │ │ -00011 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ - │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ -// │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.20 quadtree.cpp │ │ │ │ │ - │ │ │ │ │ -00012 // (at your option) any later version. │ │ │ │ │ -// │ │ │ │ │ -00013 // │ │ │ │ │ -// │ │ │ │ │ -00014 // This program is distributed in the hope that it will be useful, │ │ │ │ │ -// │ │ │ │ │ -00015 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -// │ │ │ │ │ -00016 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ -// │ │ │ │ │ -00017 // GNU General Public License for more details. │ │ │ │ │ -// │ │ │ │ │ -00018 // │ │ │ │ │ -// │ │ │ │ │ -00019 // You should have received a copy of the GNU General Public License │ │ │ │ │ -// │ │ │ │ │ -00020 // along with this program; if not, write to the Free Software │ │ │ │ │ -// │ │ │ │ │ -00021 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ -00022 // │ │ │ │ │ -// │ │ │ │ │ 00023 // $Revision:: 320 │ │ │ │ │ $// │ │ │ │ │ 00024 // $Date:: 2011-11-15 09:54:50 +0100 (Tue, 15 Nov 2011) │ │ │ │ │ $// │ │ │ │ │ 00026 │ │ │ │ │ 00027 #include "quadtree.h" │ │ │ │ │ 00028 #include │ │ │ │ │ @@ -16469,14 +15626,19 @@ │ │ │ │ │ 00030 #include │ │ │ │ │ 00031 │ │ │ │ │ 00032 namespace siscone{ │ │ │ │ │ 00033 │ │ │ │ │ 00034 using namespace std; │ │ │ │ │ 00035 │ │ │ │ │ 00036 /******************************************************************* │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.16 quadtree.cpp │ │ │ │ │ + │ │ │ │ │ 00037 * Cquadtree implementation │ │ │ │ │ * │ │ │ │ │ 00038 * Implementation of a 2D quadtree. │ │ │ │ │ * │ │ │ │ │ 00039 * This class implements the traditional two-dimensional quadtree. * │ │ │ │ │ 00040 * The elements at each node are of ’Cmomentum’ type. │ │ │ │ │ * │ │ │ │ │ @@ -16555,23 +15717,14 @@ │ │ │ │ │ 00096 │ │ │ │ │ centre_y = _y; │ │ │ │ │ 00097 │ │ │ │ │ half_size_x = _half_size_x; │ │ │ │ │ 00098 │ │ │ │ │ half_size_y = _half_size_y; │ │ │ │ │ 00099 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -209 │ │ │ │ │ - │ │ │ │ │ - 210 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00100 │ │ │ │ │ return 0; │ │ │ │ │ 00101 } │ │ │ │ │ 00102 │ │ │ │ │ 00103 │ │ │ │ │ 00104 /* │ │ │ │ │ 00105 * adding a particle to the tree. │ │ │ │ │ @@ -16606,14 +15759,23 @@ │ │ │ │ │ // │ │ │ │ │ adequate child │ │ │ │ │ 00122 │ │ │ │ │ // NOTE: we assume in the whole procedure that the particle is │ │ │ │ │ 00123 │ │ │ │ │ // │ │ │ │ │ indeed inside the cell ! │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +203 │ │ │ │ │ + │ │ │ │ │ + 204 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00124 │ │ │ │ │ 00125 │ │ │ │ │ // step 1: the case of empty cells │ │ │ │ │ 00126 │ │ │ │ │ if (v==NULL){ │ │ │ │ │ 00127 │ │ │ │ │ v = v_add; │ │ │ │ │ @@ -16715,19 +15877,14 @@ │ │ │ │ │ // 4. check if the square is inside the circle. │ │ │ │ │ 00184 │ │ │ │ │ // │ │ │ │ │ If yes, add it to qt and return. │ │ │ │ │ 00185 │ │ │ │ │ // 5. check intersections with children. │ │ │ │ │ 00186 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.20 quadtree.cpp │ │ │ │ │ - │ │ │ │ │ 00187 │ │ │ │ │ // step 1: if there is no particle inside te square, no reason to go further │ │ │ │ │ 00188 │ │ │ │ │ if (v==NULL) │ │ │ │ │ 00189 │ │ │ │ │ return Creference(); │ │ │ │ │ 00190 │ │ │ │ │ @@ -16764,14 +15921,19 @@ │ │ │ │ │ } │ │ │ │ │ 00207 │ │ │ │ │ 00208 │ │ │ │ │ return Creference(); │ │ │ │ │ 00209 │ │ │ │ │ } │ │ │ │ │ 00210 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.16 quadtree.cpp │ │ │ │ │ + │ │ │ │ │ 00211 │ │ │ │ │ // step 3: check if there is an intersection │ │ │ │ │ 00212 │ │ │ │ │ //double ryp, rym; │ │ │ │ │ 00213 │ │ │ │ │ double dx_c, dy_c; │ │ │ │ │ 00214 │ │ │ │ │ @@ -16867,23 +16029,14 @@ │ │ │ │ │ 00270 │ │ │ │ │ children[1][0]->save(flux); │ │ │ │ │ 00271 │ │ │ │ │ children[1][1]->save(flux); │ │ │ │ │ 00272 │ │ │ │ │ } │ │ │ │ │ 00273 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -211 │ │ │ │ │ - │ │ │ │ │ - 212 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00274 │ │ │ │ │ return 0; │ │ │ │ │ 00275 } │ │ │ │ │ 00276 │ │ │ │ │ 00277 │ │ │ │ │ 00278 /* │ │ │ │ │ 00279 * output a data file for drawing the tree leaves. │ │ │ │ │ @@ -16909,26 +16062,35 @@ │ │ │ │ │ if (children[0][1]!=NULL) children[0][1]->save_leaves(flux); │ │ │ │ │ 00295 │ │ │ │ │ if (children[1][0]!=NULL) children[1][0]->save_leaves(flux); │ │ │ │ │ 00296 │ │ │ │ │ if (children[1][1]!=NULL) children[1][1]->save_leaves(flux); │ │ │ │ │ 00297 │ │ │ │ │ } else { │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +205 │ │ │ │ │ + │ │ │ │ │ + 206 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00298 │ │ │ │ │ fprintf(flux, "%e\t%e\t%e\t%e\n", centre_x, centre_y, half_size_x, half_size_y); │ │ │ │ │ 00299 │ │ │ │ │ } │ │ │ │ │ 00300 │ │ │ │ │ 00301 │ │ │ │ │ return 0; │ │ │ │ │ 00302 } │ │ │ │ │ 00303 │ │ │ │ │ 00304 } │ │ │ │ │ │ │ │ │ │ -5.21 │ │ │ │ │ +5.17 │ │ │ │ │ │ │ │ │ │ quadtree.h │ │ │ │ │ │ │ │ │ │ 00001 // -*- C++ -*00003 // File: quadtree.h │ │ │ │ │ // │ │ │ │ │ 00004 // Description: header file for quadtree management (Cquadtree class) │ │ │ │ │ // │ │ │ │ │ @@ -17001,19 +16163,14 @@ │ │ │ │ │ 00077 │ │ │ │ │ 00088 │ │ │ │ │ Creference circle_intersect(double cx, double cy, double cR2); │ │ │ │ │ 00089 │ │ │ │ │ 00099 │ │ │ │ │ int save(FILE *flux); │ │ │ │ │ 00100 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.22 ranlux.cpp │ │ │ │ │ - │ │ │ │ │ 00110 │ │ │ │ │ int save_leaves(FILE *flux); │ │ │ │ │ 00111 │ │ │ │ │ 00112 │ │ │ │ │ double centre_x; │ │ │ │ │ 00113 │ │ │ │ │ double centre_y; │ │ │ │ │ @@ -17030,20 +16187,25 @@ │ │ │ │ │ 00120 │ │ │ │ │ bool has_child; │ │ │ │ │ 00121 }; │ │ │ │ │ 00122 │ │ │ │ │ 00123 } │ │ │ │ │ 00124 #endif │ │ │ │ │ │ │ │ │ │ -5.22 │ │ │ │ │ +5.18 │ │ │ │ │ │ │ │ │ │ ranlux.cpp │ │ │ │ │ │ │ │ │ │ 00001 // file: ranlux.xpp │ │ │ │ │ 00002 #include "ranlux.h" │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.18 ranlux.cpp │ │ │ │ │ + │ │ │ │ │ 00003 #include │ │ │ │ │ 00004 #include │ │ │ │ │ 00005 │ │ │ │ │ 00006 /* This is a lagged fibonacci generator with skipping developed by Luescher. │ │ │ │ │ 00007 │ │ │ │ │ The sequence is a series of 24-bit integers, x_n, │ │ │ │ │ 00008 │ │ │ │ │ @@ -17125,23 +16287,14 @@ │ │ │ │ │ 00060 │ │ │ │ │ 00061 // incrementation of the generator state │ │ │ │ │ 00062 //--------------------------------------00063 static inline unsigned long int increment_state(){ │ │ │ │ │ 00064 │ │ │ │ │ unsigned int i = local_ranlux_state.i; │ │ │ │ │ 00065 │ │ │ │ │ unsigned int j = local_ranlux_state.j; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -213 │ │ │ │ │ - │ │ │ │ │ - 214 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00066 │ │ │ │ │ long int delta = local_ranlux_state.u[j] - local_ranlux_state.u[i] │ │ │ │ │ 00067 │ │ │ │ │ - local_ranlux_state.carry; │ │ │ │ │ 00068 │ │ │ │ │ 00069 │ │ │ │ │ if (delta & mask_hi){ │ │ │ │ │ @@ -17176,14 +16329,23 @@ │ │ │ │ │ 00086 │ │ │ │ │ j = 23; │ │ │ │ │ 00087 │ │ │ │ │ else │ │ │ │ │ 00088 │ │ │ │ │ j--; │ │ │ │ │ 00089 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +207 │ │ │ │ │ + │ │ │ │ │ + 208 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00090 │ │ │ │ │ local_ranlux_state.j = j; │ │ │ │ │ 00091 │ │ │ │ │ 00092 │ │ │ │ │ return delta; │ │ │ │ │ 00093 } │ │ │ │ │ 00094 │ │ │ │ │ @@ -17273,21 +16435,14 @@ │ │ │ │ │ unsigned int i; │ │ │ │ │ 00150 │ │ │ │ │ local_ranlux_state.n = 0; │ │ │ │ │ 00151 │ │ │ │ │ for (i = 0; i < skip; i++) │ │ │ │ │ 00152 │ │ │ │ │ increment_state(); │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.23 siscone/ranlux.h File Reference │ │ │ │ │ - │ │ │ │ │ -215 │ │ │ │ │ - │ │ │ │ │ 00153 │ │ │ │ │ } │ │ │ │ │ 00154 │ │ │ │ │ 00155 │ │ │ │ │ return r; │ │ │ │ │ 00156 } │ │ │ │ │ 00157 │ │ │ │ │ @@ -17308,15 +16463,21 @@ │ │ │ │ │ printf("%.2x", *(p+i)); │ │ │ │ │ 00168 │ │ │ │ │ } │ │ │ │ │ 00169 } │ │ │ │ │ 00170 │ │ │ │ │ 00171 } │ │ │ │ │ │ │ │ │ │ -5.23 │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.19 siscone/ranlux.h File Reference │ │ │ │ │ + │ │ │ │ │ +5.19 │ │ │ │ │ + │ │ │ │ │ +209 │ │ │ │ │ │ │ │ │ │ siscone/ranlux.h File Reference │ │ │ │ │ │ │ │ │ │ This graph shows which files directly or indirectly include this file: │ │ │ │ │ │ │ │ │ │ siscone/ranlux.h │ │ │ │ │ │ │ │ │ │ @@ -17330,55 +16491,56 @@ │ │ │ │ │ │ │ │ │ │ • unsigned long int siscone::ranlux_get () │ │ │ │ │ generate random value (24 bits) │ │ │ │ │ │ │ │ │ │ • void siscone::ranlux_print_state () │ │ │ │ │ save state of the generator │ │ │ │ │ │ │ │ │ │ -5.23.1 │ │ │ │ │ +5.19.1 │ │ │ │ │ │ │ │ │ │ Function Documentation │ │ │ │ │ │ │ │ │ │ -5.23.1.1 │ │ │ │ │ +5.19.1.1 │ │ │ │ │ │ │ │ │ │ ranlux_get() │ │ │ │ │ │ │ │ │ │ unsigned long int siscone::ranlux_get ( ) │ │ │ │ │ │ │ │ │ │ generate random value (24 bits) │ │ │ │ │ Definition at line 142 of file ranlux.cpp. │ │ │ │ │ │ │ │ │ │ -5.23.1.2 │ │ │ │ │ +5.19.1.2 │ │ │ │ │ │ │ │ │ │ ranlux_init() │ │ │ │ │ │ │ │ │ │ void siscone::ranlux_init ( ) │ │ │ │ │ │ │ │ │ │ initialize 'ranlux' generator │ │ │ │ │ Definition at line 134 of file ranlux.cpp. │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ -siscone/siscone.cpp │ │ │ │ │ - │ │ │ │ │ -siscone/spherical/siscone.cpp │ │ │ │ │ - │ │ │ │ │ - 216 │ │ │ │ │ - │ │ │ │ │ -5.23.1.3 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ +5.19.1.3 │ │ │ │ │ │ │ │ │ │ ranlux_print_state() │ │ │ │ │ │ │ │ │ │ void siscone::ranlux_print_state ( ) │ │ │ │ │ │ │ │ │ │ save state of the generator │ │ │ │ │ Definition at line 160 of file ranlux.cpp. │ │ │ │ │ │ │ │ │ │ -5.24 │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +siscone/siscone.cpp │ │ │ │ │ + │ │ │ │ │ +siscone/spherical/siscone.cpp │ │ │ │ │ + │ │ │ │ │ + 210 │ │ │ │ │ + │ │ │ │ │ +5.20 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ │ │ │ │ │ ranlux.h │ │ │ │ │ │ │ │ │ │ Go to the documentation of this file. │ │ │ │ │ 00001 │ │ │ │ │ 00002 │ │ │ │ │ 00003 #ifndef __RANLUX_H__ │ │ │ │ │ @@ -17442,49 +16604,43 @@ │ │ │ │ │ 00043 unsigned long int ranlux_get(); │ │ │ │ │ 00044 │ │ │ │ │ 00046 void ranlux_print_state(); │ │ │ │ │ 00047 │ │ │ │ │ 00048 } │ │ │ │ │ 00049 #endif │ │ │ │ │ │ │ │ │ │ -5.25 │ │ │ │ │ +5.21 │ │ │ │ │ │ │ │ │ │ reference.cpp │ │ │ │ │ │ │ │ │ │ 00001 │ │ │ │ │ 00002 // File: reference.cpp │ │ │ │ │ -00003 // Description: source file for checkxor management (Creference class) │ │ │ │ │ -00004 // This file is part of the SISCone project. │ │ │ │ │ -00005 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ -00006 // │ │ │ │ │ -00007 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ -00008 // │ │ │ │ │ -00009 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ -00010 // it under the terms of the GNU General Public License as published by │ │ │ │ │ -00011 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ -00012 // (at your option) any later version. │ │ │ │ │ -00013 // │ │ │ │ │ - │ │ │ │ │ // │ │ │ │ │ +00003 // Description: source file for checkxor management (Creference class) │ │ │ │ │ // │ │ │ │ │ +00004 // This file is part of the SISCone project. │ │ │ │ │ // │ │ │ │ │ +00005 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ // │ │ │ │ │ +00006 // │ │ │ │ │ // │ │ │ │ │ +00007 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ // │ │ │ │ │ +00008 // │ │ │ │ │ // │ │ │ │ │ +00009 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ // │ │ │ │ │ +00010 // it under the terms of the GNU General Public License as published by │ │ │ │ │ // │ │ │ │ │ +00011 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ // │ │ │ │ │ +00012 // (at your option) any later version. │ │ │ │ │ // │ │ │ │ │ +00013 // │ │ │ │ │ // │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.25 reference.cpp │ │ │ │ │ - │ │ │ │ │ 00014 // This program is distributed in the hope that it will be useful, │ │ │ │ │ // │ │ │ │ │ 00015 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ // │ │ │ │ │ 00016 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ // │ │ │ │ │ 00017 // GNU General Public License for more details. │ │ │ │ │ @@ -17503,14 +16659,19 @@ │ │ │ │ │ 00024 // $Date:: 2011-10-05 23:27:09 +0200 (Wed, 05 Oct 2011) │ │ │ │ │ $// │ │ │ │ │ 00026 │ │ │ │ │ 00027 #include "reference.h" │ │ │ │ │ 00028 #include "ranlux.h" │ │ │ │ │ 00029 #include │ │ │ │ │ 00030 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.21 reference.cpp │ │ │ │ │ + │ │ │ │ │ 00031 namespace siscone{ │ │ │ │ │ 00032 │ │ │ │ │ 00033 /******************************************************* │ │ │ │ │ 00034 * Creference implementation │ │ │ │ │ * │ │ │ │ │ 00035 * references used for checksums. │ │ │ │ │ * │ │ │ │ │ @@ -17595,25 +16756,15 @@ │ │ │ │ │ 00097 │ │ │ │ │ Creference tmp = *this; │ │ │ │ │ 00098 │ │ │ │ │ return tmp+=r; │ │ │ │ │ 00099 } │ │ │ │ │ 00100 │ │ │ │ │ 00101 // incrementation of reference │ │ │ │ │ -00102 //----------------------------- │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -217 │ │ │ │ │ - │ │ │ │ │ - 218 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ -00103 Creference& Creference::operator += (const Creference &r){ │ │ │ │ │ +00102 //----------------------------00103 Creference& Creference::operator += (const Creference &r){ │ │ │ │ │ 00104 │ │ │ │ │ ref[0] ^= r.ref[0]; │ │ │ │ │ 00105 │ │ │ │ │ ref[1] ^= r.ref[1]; │ │ │ │ │ 00106 │ │ │ │ │ ref[2] ^= r.ref[2]; │ │ │ │ │ 00107 │ │ │ │ │ @@ -17628,18 +16779,27 @@ │ │ │ │ │ ref[1] ^= r.ref[1]; │ │ │ │ │ 00115 │ │ │ │ │ ref[2] ^= r.ref[2]; │ │ │ │ │ 00116 │ │ │ │ │ return *this; │ │ │ │ │ 00117 } │ │ │ │ │ 00118 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +211 │ │ │ │ │ + │ │ │ │ │ + 212 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00119 } │ │ │ │ │ 00120 │ │ │ │ │ │ │ │ │ │ -5.26 │ │ │ │ │ +5.22 │ │ │ │ │ │ │ │ │ │ reference.h │ │ │ │ │ │ │ │ │ │ 00001 // -*- C++ -*00003 // File: reference.h │ │ │ │ │ // │ │ │ │ │ 00004 // Description: header file for checkxor management (Creference class) │ │ │ │ │ // │ │ │ │ │ @@ -17728,21 +16888,14 @@ │ │ │ │ │ 00079 bool operator == (const Creference &r1, const Creference &r2); │ │ │ │ │ 00080 │ │ │ │ │ 00082 bool operator != (const Creference &r1, const Creference &r2); │ │ │ │ │ 00083 │ │ │ │ │ 00085 bool operator < (const Creference &r1, const Creference &r2); │ │ │ │ │ 00086 │ │ │ │ │ 00087 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.27 siscone_error.cpp │ │ │ │ │ - │ │ │ │ │ -219 │ │ │ │ │ - │ │ │ │ │ 00088 //=============== inline material ================ │ │ │ │ │ 00089 │ │ │ │ │ 00090 // equality test for two references │ │ │ │ │ 00091 //---------------------------------00092 inline bool operator == (const Creference &r1, const Creference &r2){ │ │ │ │ │ 00093 │ │ │ │ │ return (r1.ref[0]==r2.ref[0]) && (r1.ref[1]==r2.ref[1]) && (r1.ref[2]==r2.ref[2]); │ │ │ │ │ 00094 } │ │ │ │ │ @@ -17750,28 +16903,34 @@ │ │ │ │ │ 00096 // difference test for two references │ │ │ │ │ 00097 //---------------------------------00098 inline bool operator != (const Creference &r1, const Creference &r2){ │ │ │ │ │ 00099 │ │ │ │ │ return (r1.ref[0]!=r2.ref[0]) || (r1.ref[1]!=r2.ref[1]) || (r1.ref[2]!=r2.ref[2]); │ │ │ │ │ 00100 } │ │ │ │ │ 00101 │ │ │ │ │ 00102 // difference test for two references │ │ │ │ │ -00103 //---------------------------------00104 inline bool operator < (const Creference &r1, const Creference &r2){ │ │ │ │ │ +00103 //---------------------------------- │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.23 siscone_error.cpp │ │ │ │ │ + │ │ │ │ │ +00104 inline bool operator < (const Creference &r1, const Creference &r2){ │ │ │ │ │ 00105 │ │ │ │ │ return (r1.ref[0] │ │ │ │ │ 00032 #include │ │ │ │ │ 00033 │ │ │ │ │ 00034 namespace siscone{ │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +213 │ │ │ │ │ + │ │ │ │ │ + 214 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00035 │ │ │ │ │ 00038 class Csiscone_error { │ │ │ │ │ 00039 public: │ │ │ │ │ 00041 │ │ │ │ │ Csiscone_error() {;}; │ │ │ │ │ 00042 │ │ │ │ │ 00045 │ │ │ │ │ @@ -17920,14 +17080,842 @@ │ │ │ │ │ 00060 │ │ │ │ │ static bool m_print_errors; │ │ │ │ │ 00061 }; │ │ │ │ │ 00062 │ │ │ │ │ 00063 } │ │ │ │ │ 00064 #endif │ │ │ │ │ │ │ │ │ │ +5.25 │ │ │ │ │ + │ │ │ │ │ +geom_2d.cpp │ │ │ │ │ + │ │ │ │ │ +00001 │ │ │ │ │ +00002 // File: geom_2d.cpp │ │ │ │ │ +// │ │ │ │ │ +00003 // Description: source file for two-dimensional geometry tools │ │ │ │ │ +// │ │ │ │ │ +00004 // This file is part of the SISCone project. │ │ │ │ │ +// │ │ │ │ │ +00005 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ +// │ │ │ │ │ +00006 // │ │ │ │ │ +// │ │ │ │ │ +00007 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ +// │ │ │ │ │ +00008 // │ │ │ │ │ +// │ │ │ │ │ +00009 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ +// │ │ │ │ │ +00010 // it under the terms of the GNU General Public License as published by │ │ │ │ │ +// │ │ │ │ │ +00011 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ +// │ │ │ │ │ +00012 // (at your option) any later version. │ │ │ │ │ +// │ │ │ │ │ +00013 // │ │ │ │ │ +// │ │ │ │ │ +00014 // This program is distributed in the hope that it will be useful, │ │ │ │ │ +// │ │ │ │ │ +00015 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +// │ │ │ │ │ +00016 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ +// │ │ │ │ │ +00017 // GNU General Public License for more details. │ │ │ │ │ +// │ │ │ │ │ +00018 // │ │ │ │ │ +// │ │ │ │ │ +00019 // You should have received a copy of the GNU General Public License │ │ │ │ │ +// │ │ │ │ │ +00020 // along with this program; if not, write to the Free Software │ │ │ │ │ +// │ │ │ │ │ +00021 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ +00022 // │ │ │ │ │ +// │ │ │ │ │ +00023 // $Revision:: 171 │ │ │ │ │ +$// │ │ │ │ │ +00024 // $Date:: 2007-06-19 16:26:05 +0200 (Tue, 19 Jun 2007) │ │ │ │ │ +$// │ │ │ │ │ +00026 │ │ │ │ │ +00027 #include "geom_2d.h" │ │ │ │ │ +00028 #include │ │ │ │ │ +00029 │ │ │ │ │ +00030 namespace siscone{ │ │ │ │ │ +00031 │ │ │ │ │ +00032 #define PHI_RANGE_MASK 0xFFFFFFFF │ │ │ │ │ +00033 │ │ │ │ │ +00034 /********************************************************* │ │ │ │ │ +00035 * class Ceta_phi_range implementation │ │ │ │ │ +* │ │ │ │ │ +00036 * class for holding a covering range in eta-phi │ │ │ │ │ +* │ │ │ │ │ +00037 * │ │ │ │ │ +* │ │ │ │ │ +00038 * This class deals with ranges in the eta-phi plane. It * │ │ │ │ │ +00039 * implements methods to test if two ranges overlap and * │ │ │ │ │ +00040 * to take the union of two overlapping intervals. │ │ │ │ │ +* │ │ │ │ │ +00041 *********************************************************/ │ │ │ │ │ +00042 │ │ │ │ │ +00043 using namespace std; │ │ │ │ │ +00044 │ │ │ │ │ +00045 // static member default init │ │ │ │ │ +00046 //---------------------------00047 double Ceta_phi_range::eta_min = -100.0; │ │ │ │ │ +00048 double Ceta_phi_range::eta_max = 100.0; │ │ │ │ │ +00049 │ │ │ │ │ +00050 // default ctor │ │ │ │ │ +00051 //-------------00052 Ceta_phi_range::Ceta_phi_range(){ │ │ │ │ │ +00053 │ │ │ │ │ +eta_range = 0; │ │ │ │ │ +00054 │ │ │ │ │ +phi_range = 0; │ │ │ │ │ +00055 } │ │ │ │ │ +00056 │ │ │ │ │ +00057 // ctor with initialisation │ │ │ │ │ +00058 // we initialise with a centre (in eta,phi) and a radius │ │ │ │ │ +00059 // - c_eta │ │ │ │ │ +eta coordinate of the centre │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.25 geom_2d.cpp │ │ │ │ │ + │ │ │ │ │ +00060 // - c_phi │ │ │ │ │ +phi coordinate of the centre │ │ │ │ │ +00061 // - R │ │ │ │ │ +radius │ │ │ │ │ +00062 //------------------------------------------------------00063 Ceta_phi_range::Ceta_phi_range(double c_eta, double c_phi, double R){ │ │ │ │ │ +00064 │ │ │ │ │ +// determination of the eta range │ │ │ │ │ +00065 │ │ │ │ │ +//------------------------------00066 │ │ │ │ │ +double xmin = max(c_eta-R,eta_min+0.0001); │ │ │ │ │ +00067 │ │ │ │ │ +double xmax = min(c_eta+R,eta_max-0.0001); │ │ │ │ │ +00068 │ │ │ │ │ +00069 │ │ │ │ │ +unsigned int cell_min = get_eta_cell(xmin); │ │ │ │ │ +00070 │ │ │ │ │ +unsigned int cell_max = get_eta_cell(xmax); │ │ │ │ │ +00071 │ │ │ │ │ +00072 │ │ │ │ │ +// warning: if cell_max==2^31, 2*cell_max==0 hence, │ │ │ │ │ +00073 │ │ │ │ │ +// even if the next formula is formally (2*cell_max-cell_min), │ │ │ │ │ +00074 │ │ │ │ │ +// expressing it as (cell_max-cell_min)+cell_max is safe. │ │ │ │ │ +00075 │ │ │ │ │ +eta_range = (cell_max-cell_min)+cell_max; │ │ │ │ │ +00076 │ │ │ │ │ +00077 │ │ │ │ │ +// determination of the phi range │ │ │ │ │ +00078 │ │ │ │ │ +// !! taking care of periodicity !! │ │ │ │ │ +00079 │ │ │ │ │ +//--------------------------------00080 │ │ │ │ │ +xmin = phi_in_range(c_phi-R); │ │ │ │ │ +00081 │ │ │ │ │ +xmax = phi_in_range(c_phi+R); │ │ │ │ │ +00082 │ │ │ │ │ +00083 │ │ │ │ │ +cell_min = get_phi_cell(xmin); │ │ │ │ │ +00084 │ │ │ │ │ +cell_max = get_phi_cell(xmax); │ │ │ │ │ +00085 │ │ │ │ │ +00086 │ │ │ │ │ +// Also, if the interval goes through pi, inversion is needed │ │ │ │ │ +00087 │ │ │ │ │ +if (xmax>xmin) │ │ │ │ │ +00088 │ │ │ │ │ +phi_range = (cell_max-cell_min)+cell_max; │ │ │ │ │ +00089 │ │ │ │ │ +else { │ │ │ │ │ +00090 │ │ │ │ │ +phi_range = (cell_min==cell_max) │ │ │ │ │ +00091 │ │ │ │ │ +? PHI_RANGE_MASK │ │ │ │ │ +00092 │ │ │ │ │ +: ((PHI_RANGE_MASK^(cell_min-cell_max)) + cell_max); │ │ │ │ │ +00093 │ │ │ │ │ +} │ │ │ │ │ +00094 } │ │ │ │ │ +00095 │ │ │ │ │ +00096 // assignment of range │ │ │ │ │ +00097 // - r │ │ │ │ │ +range to assign to current one │ │ │ │ │ +00098 //--------------------------------------00099 Ceta_phi_range& Ceta_phi_range::operator = (const Ceta_phi_range &r){ │ │ │ │ │ +00100 │ │ │ │ │ +eta_range = r.eta_range; │ │ │ │ │ +00101 │ │ │ │ │ +phi_range = r.phi_range; │ │ │ │ │ +00102 │ │ │ │ │ +00103 │ │ │ │ │ +return *this; │ │ │ │ │ +00104 } │ │ │ │ │ +00105 │ │ │ │ │ +00106 // add a particle to the range │ │ │ │ │ +00107 // - eta eta coordinate of the particle │ │ │ │ │ +00108 // - phi phi coordinate of the particle │ │ │ │ │ +00109 // \return 0 on success, 1 on error │ │ │ │ │ +00110 //---------------------------------------00111 int Ceta_phi_range::add_particle(const double eta, const double phi){ │ │ │ │ │ +00112 │ │ │ │ │ +// deal with the eta coordinate │ │ │ │ │ +00113 │ │ │ │ │ +eta_range |= get_eta_cell(eta); │ │ │ │ │ +00114 │ │ │ │ │ +00115 │ │ │ │ │ +// deal with the phi coordinate │ │ │ │ │ +00116 │ │ │ │ │ +phi_range |= get_phi_cell(phi); │ │ │ │ │ +00117 │ │ │ │ │ +00118 │ │ │ │ │ +return 0; │ │ │ │ │ +00119 } │ │ │ │ │ +00120 │ │ │ │ │ +00121 │ │ │ │ │ +00122 // test overlap │ │ │ │ │ +00123 // - r1 first range │ │ │ │ │ +00124 // - r2 second range │ │ │ │ │ +00125 // return true if overlap, false otherwise. │ │ │ │ │ +00126 //-----------------------------------------00127 bool is_range_overlap(const Ceta_phi_range &r1, const Ceta_phi_range &r2){ │ │ │ │ │ +00128 │ │ │ │ │ +// check overlap in eta AND phi │ │ │ │ │ +00129 │ │ │ │ │ +return ((r1.eta_range & r2.eta_range) && (r1.phi_range & r2.phi_range)); │ │ │ │ │ +00130 } │ │ │ │ │ +00131 │ │ │ │ │ +00132 // compute union │ │ │ │ │ +00133 // Note: we assume that the two intervals overlap │ │ │ │ │ +00134 // - r1 first range │ │ │ │ │ +00135 // - r2 second range │ │ │ │ │ +00136 // \return union of the two ranges │ │ │ │ │ +00137 //-----------------------------------------00138 const Ceta_phi_range range_union (const Ceta_phi_range &r1, const Ceta_phi_range &r2){ │ │ │ │ │ +00139 │ │ │ │ │ +Ceta_phi_range tmp; │ │ │ │ │ +00140 │ │ │ │ │ +00141 │ │ │ │ │ +// compute union in eta │ │ │ │ │ +00142 │ │ │ │ │ +tmp.eta_range = r1.eta_range | r2.eta_range; │ │ │ │ │ +00143 │ │ │ │ │ +00144 │ │ │ │ │ +// compute union in phi │ │ │ │ │ +00145 │ │ │ │ │ +tmp.phi_range = r1.phi_range | r2.phi_range; │ │ │ │ │ +00146 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +215 │ │ │ │ │ + │ │ │ │ │ + 216 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ +00147 │ │ │ │ │ +return tmp; │ │ │ │ │ +00148 } │ │ │ │ │ +00149 │ │ │ │ │ +00150 } │ │ │ │ │ + │ │ │ │ │ +5.26 │ │ │ │ │ + │ │ │ │ │ +geom_2d.cpp │ │ │ │ │ + │ │ │ │ │ +00001 │ │ │ │ │ +00002 // File: geom_2d.cpp │ │ │ │ │ +// │ │ │ │ │ +00003 // Description: source file for two-dimensional geometry tools │ │ │ │ │ +// │ │ │ │ │ +00004 // This file is part of the SISCone project. │ │ │ │ │ +// │ │ │ │ │ +00005 // WARNING: this is not the main SISCone trunk but │ │ │ │ │ +// │ │ │ │ │ +00006 // │ │ │ │ │ +an adaptation to spherical coordinates │ │ │ │ │ +// │ │ │ │ │ +00007 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ +// │ │ │ │ │ +00008 // │ │ │ │ │ +// │ │ │ │ │ +00009 // Copyright (c) 2006-2008 Gavin Salam and Gregory Soyez │ │ │ │ │ +// │ │ │ │ │ +00010 // │ │ │ │ │ +// │ │ │ │ │ +00011 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ +// │ │ │ │ │ +00012 // it under the terms of the GNU General Public License as published by │ │ │ │ │ +// │ │ │ │ │ +00013 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ +// │ │ │ │ │ +00014 // (at your option) any later version. │ │ │ │ │ +// │ │ │ │ │ +00015 // │ │ │ │ │ +// │ │ │ │ │ +00016 // This program is distributed in the hope that it will be useful, │ │ │ │ │ +// │ │ │ │ │ +00017 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +// │ │ │ │ │ +00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ +// │ │ │ │ │ +00019 // GNU General Public License for more details. │ │ │ │ │ +// │ │ │ │ │ +00020 // │ │ │ │ │ +// │ │ │ │ │ +00021 // You should have received a copy of the GNU General Public License │ │ │ │ │ +// │ │ │ │ │ +00022 // along with this program; if not, write to the Free Software │ │ │ │ │ +// │ │ │ │ │ +00023 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ +00024 // │ │ │ │ │ +// │ │ │ │ │ +00025 // $Revision:: 378 │ │ │ │ │ +$// │ │ │ │ │ +00026 // $Date:: 2016-02-24 15:10:38 +0100 (Wed, 24 Feb 2016) │ │ │ │ │ +$// │ │ │ │ │ +00028 │ │ │ │ │ +00029 #include "geom_2d.h" │ │ │ │ │ +00030 #include │ │ │ │ │ +00031 │ │ │ │ │ +00032 namespace siscone_spherical{ │ │ │ │ │ +00033 │ │ │ │ │ +00034 #define PHI_RANGE_MASK 0xFFFFFFFF │ │ │ │ │ +00035 │ │ │ │ │ +00036 /********************************************************* │ │ │ │ │ +00037 * class CSphtheta_phi_range implementation │ │ │ │ │ +* │ │ │ │ │ +00038 * class for holding a covering range in eta-phi │ │ │ │ │ +* │ │ │ │ │ +00039 * │ │ │ │ │ +* │ │ │ │ │ +00040 * This class deals with ranges in the eta-phi plane. It * │ │ │ │ │ +00041 * implements methods to test if two ranges overlap and * │ │ │ │ │ +00042 * to take the union of two overlapping intervals. │ │ │ │ │ +* │ │ │ │ │ +00043 *********************************************************/ │ │ │ │ │ +00044 │ │ │ │ │ +00045 using namespace std; │ │ │ │ │ +00046 │ │ │ │ │ +00047 // static member default init │ │ │ │ │ +00048 //---------------------------00049 double CSphtheta_phi_range::theta_min = 0.0; │ │ │ │ │ +00050 double CSphtheta_phi_range::theta_max = M_PI; │ │ │ │ │ +00051 │ │ │ │ │ +00052 // default ctor │ │ │ │ │ +00053 //-------------00054 CSphtheta_phi_range::CSphtheta_phi_range(){ │ │ │ │ │ +00055 │ │ │ │ │ +theta_range = 0; │ │ │ │ │ +00056 │ │ │ │ │ +phi_range = 0; │ │ │ │ │ +00057 } │ │ │ │ │ +00058 │ │ │ │ │ +00059 // ctor with initialisation │ │ │ │ │ +00060 // we initialise with a centre (in eta,phi) and a radius │ │ │ │ │ +00061 // - c_theta theta coordinate of the centre │ │ │ │ │ +00062 // - c_phi │ │ │ │ │ +phi coordinate of the centre │ │ │ │ │ +00063 // - R │ │ │ │ │ +radius │ │ │ │ │ +00064 //------------------------------------------------------00065 CSphtheta_phi_range::CSphtheta_phi_range(double c_theta, double c_phi, double R){ │ │ │ │ │ +00066 │ │ │ │ │ +// determination of the eta range │ │ │ │ │ +00067 │ │ │ │ │ +//------------------------------00068 │ │ │ │ │ +double xmin = max(c_theta-R,theta_min+0.00001); │ │ │ │ │ +00069 │ │ │ │ │ +double xmax = min(c_theta+R,theta_max-0.00001); │ │ │ │ │ +00070 │ │ │ │ │ +00071 │ │ │ │ │ +unsigned int cell_min = get_theta_cell(xmin); │ │ │ │ │ +00072 │ │ │ │ │ +unsigned int cell_max = get_theta_cell(xmax); │ │ │ │ │ +00073 │ │ │ │ │ +00074 │ │ │ │ │ +// warning: if cell_max==2^31, 2*cell_max==0 hence, │ │ │ │ │ +00075 │ │ │ │ │ +// even if the next formula is formally (2*cell_max-cell_min), │ │ │ │ │ +00076 │ │ │ │ │ +// expressing it as (cell_max-cell_min)+cell_max is safe. │ │ │ │ │ +00077 │ │ │ │ │ +theta_range = (cell_max-cell_min)+cell_max; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.26 geom_2d.cpp │ │ │ │ │ + │ │ │ │ │ +00078 │ │ │ │ │ +00079 │ │ │ │ │ +// determination of the phi range │ │ │ │ │ +00080 │ │ │ │ │ +// !! taking care of periodicity !! │ │ │ │ │ +00081 │ │ │ │ │ +// !! and the theta dependence │ │ │ │ │ +!! │ │ │ │ │ +00082 │ │ │ │ │ +//--------------------------------00083 │ │ │ │ │ +double ymin,ymax; │ │ │ │ │ +00084 │ │ │ │ │ +double extra = asin(R/M_PI); │ │ │ │ │ +00085 │ │ │ │ │ +// if the theta range comes too close to the endpoints (theta=0 or │ │ │ │ │ +00086 │ │ │ │ │ +// theta=pi), then keep the full phi range │ │ │ │ │ +00087 │ │ │ │ │ +if (xmin<=theta_min+extra){ │ │ │ │ │ +00088 │ │ │ │ │ +ymin = -M_PI+0.00001; │ │ │ │ │ +00089 │ │ │ │ │ +ymax = M_PI-0.00001; │ │ │ │ │ +00090 │ │ │ │ │ +} else if (xmax>=theta_max-extra){ │ │ │ │ │ +00091 │ │ │ │ │ +ymin = -M_PI+0.00001; │ │ │ │ │ +00092 │ │ │ │ │ +ymax = M_PI-0.00001; │ │ │ │ │ +00093 │ │ │ │ │ +} else { │ │ │ │ │ +00094 │ │ │ │ │ +extra = max(1.0/sin(xmin), 1.0/sin(xmax)); │ │ │ │ │ +00095 │ │ │ │ │ +ymin = (c_phi-R)*extra; │ │ │ │ │ +00096 │ │ │ │ │ +while (ymin<-M_PI) ymin+=twopi; │ │ │ │ │ +00097 │ │ │ │ │ +while (ymin> M_PI) ymin-=twopi; │ │ │ │ │ +00098 │ │ │ │ │ +ymax = (c_phi-R)*extra; │ │ │ │ │ +00099 │ │ │ │ │ +while (ymax<-M_PI) ymax+=twopi; │ │ │ │ │ +00100 │ │ │ │ │ +while (ymax> M_PI) ymax-=twopi; │ │ │ │ │ +00101 │ │ │ │ │ +} │ │ │ │ │ +00102 │ │ │ │ │ +cell_min = get_phi_cell(ymin); │ │ │ │ │ +00103 │ │ │ │ │ +cell_max = get_phi_cell(ymax); │ │ │ │ │ +00104 │ │ │ │ │ +00105 │ │ │ │ │ +// Also, if the interval goes through pi, inversion is needed │ │ │ │ │ +00106 │ │ │ │ │ +if (ymax>ymin) │ │ │ │ │ +00107 │ │ │ │ │ +phi_range = (cell_max-cell_min)+cell_max; │ │ │ │ │ +00108 │ │ │ │ │ +else { │ │ │ │ │ +00109 │ │ │ │ │ +phi_range = (cell_min==cell_max) │ │ │ │ │ +00110 │ │ │ │ │ +? PHI_RANGE_MASK │ │ │ │ │ +00111 │ │ │ │ │ +: ((PHI_RANGE_MASK^(cell_min-cell_max)) + cell_max); │ │ │ │ │ +00112 │ │ │ │ │ +} │ │ │ │ │ +00113 } │ │ │ │ │ +00114 │ │ │ │ │ +00115 // assignment of range │ │ │ │ │ +00116 // - r │ │ │ │ │ +range to assign to current one │ │ │ │ │ +00117 //--------------------------------------00118 CSphtheta_phi_range& CSphtheta_phi_range::operator = (const CSphtheta_phi_range &r){ │ │ │ │ │ +00119 │ │ │ │ │ +theta_range = r.theta_range; │ │ │ │ │ +00120 │ │ │ │ │ +phi_range = r.phi_range; │ │ │ │ │ +00121 │ │ │ │ │ +00122 │ │ │ │ │ +return *this; │ │ │ │ │ +00123 } │ │ │ │ │ +00124 │ │ │ │ │ +00125 // add a particle to the range │ │ │ │ │ +00126 // - eta eta coordinate of the particle │ │ │ │ │ +00127 // - phi phi coordinate of the particle │ │ │ │ │ +00128 // \return 0 on success, 1 on error │ │ │ │ │ +00129 //---------------------------------------00130 int CSphtheta_phi_range::add_particle(const double theta, const double phi){ │ │ │ │ │ +00131 │ │ │ │ │ +// get the theta cell │ │ │ │ │ +00132 │ │ │ │ │ +unsigned int theta_cell = get_theta_cell(theta); │ │ │ │ │ +00133 │ │ │ │ │ +00134 │ │ │ │ │ +// deal with the eta coordinate │ │ │ │ │ +00135 │ │ │ │ │ +theta_range |= theta_cell; │ │ │ │ │ +00136 │ │ │ │ │ +00137 │ │ │ │ │ +// deal with the phi coordinate │ │ │ │ │ +00138 │ │ │ │ │ +// │ │ │ │ │ +00139 │ │ │ │ │ +// watch out: if the theta_cell includes theta==0 or theta==pi, │ │ │ │ │ +00140 │ │ │ │ │ +// incude the full phi range │ │ │ │ │ +00141 │ │ │ │ │ +if ((theta_cell == 0x1) || (theta_cell == 0x80000000)) │ │ │ │ │ +00142 │ │ │ │ │ +phi_range = 0xffffffff; │ │ │ │ │ +00143 │ │ │ │ │ +else │ │ │ │ │ +00144 │ │ │ │ │ +phi_range |= get_phi_cell(phi); │ │ │ │ │ +00145 │ │ │ │ │ +00146 │ │ │ │ │ +return 0; │ │ │ │ │ +00147 } │ │ │ │ │ +00148 │ │ │ │ │ +00149 │ │ │ │ │ +00150 // test overlap │ │ │ │ │ +00151 // - r1 first range │ │ │ │ │ +00152 // - r2 second range │ │ │ │ │ +00153 // return true if overlap, false otherwise. │ │ │ │ │ +00154 //-----------------------------------------00155 bool is_range_overlap(const CSphtheta_phi_range &r1, const CSphtheta_phi_range &r2){ │ │ │ │ │ +00156 │ │ │ │ │ +// check overlap in eta AND phi │ │ │ │ │ +00157 │ │ │ │ │ +return ((r1.theta_range & r2.theta_range) && (r1.phi_range & r2.phi_range)); │ │ │ │ │ +00158 } │ │ │ │ │ +00159 │ │ │ │ │ +00160 // compute union │ │ │ │ │ +00161 // Note: we assume that the two intervals overlap │ │ │ │ │ +00162 // - r1 first range │ │ │ │ │ +00163 // - r2 second range │ │ │ │ │ +00164 // \return union of the two ranges │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +217 │ │ │ │ │ + │ │ │ │ │ + 218 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ +00165 //-----------------------------------------00166 const CSphtheta_phi_range range_union (const CSphtheta_phi_range &r1, const CSphtheta_phi_range &r2){ │ │ │ │ │ +00167 │ │ │ │ │ +CSphtheta_phi_range tmp; │ │ │ │ │ +00168 │ │ │ │ │ +00169 │ │ │ │ │ +// compute union in eta │ │ │ │ │ +00170 │ │ │ │ │ +tmp.theta_range = r1.theta_range | r2.theta_range; │ │ │ │ │ +00171 │ │ │ │ │ +00172 │ │ │ │ │ +// compute union in phi │ │ │ │ │ +00173 │ │ │ │ │ +tmp.phi_range = r1.phi_range | r2.phi_range; │ │ │ │ │ +00174 │ │ │ │ │ +00175 │ │ │ │ │ +return tmp; │ │ │ │ │ +00176 } │ │ │ │ │ +00177 │ │ │ │ │ +00178 } │ │ │ │ │ + │ │ │ │ │ +5.27 │ │ │ │ │ + │ │ │ │ │ +geom_2d.h │ │ │ │ │ + │ │ │ │ │ +00001 // -*- C++ -*00003 // File: geom_2d.h │ │ │ │ │ +// │ │ │ │ │ +00004 // Description: header file for two-dimensional geometry tools │ │ │ │ │ +// │ │ │ │ │ +00005 // This file is part of the SISCone project. │ │ │ │ │ +// │ │ │ │ │ +00006 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ +// │ │ │ │ │ +00007 // │ │ │ │ │ +// │ │ │ │ │ +00008 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ +// │ │ │ │ │ +00009 // │ │ │ │ │ +// │ │ │ │ │ +00010 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ +// │ │ │ │ │ +00011 // it under the terms of the GNU General Public License as published by │ │ │ │ │ +// │ │ │ │ │ +00012 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ +// │ │ │ │ │ +00013 // (at your option) any later version. │ │ │ │ │ +// │ │ │ │ │ +00014 // │ │ │ │ │ +// │ │ │ │ │ +00015 // This program is distributed in the hope that it will be useful, │ │ │ │ │ +// │ │ │ │ │ +00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +// │ │ │ │ │ +00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ +// │ │ │ │ │ +00018 // GNU General Public License for more details. │ │ │ │ │ +// │ │ │ │ │ +00019 // │ │ │ │ │ +// │ │ │ │ │ +00020 // You should have received a copy of the GNU General Public License │ │ │ │ │ +// │ │ │ │ │ +00021 // along with this program; if not, write to the Free Software │ │ │ │ │ +// │ │ │ │ │ +00022 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ +00023 // │ │ │ │ │ +// │ │ │ │ │ +00024 // $Revision:: 422 │ │ │ │ │ +$// │ │ │ │ │ +00025 // $Date:: 2020-04-22 11:51:09 +0200 (Wed, 22 Apr 2020) │ │ │ │ │ +$// │ │ │ │ │ +00027 │ │ │ │ │ +00028 #ifndef __GEOM_2D_H__ │ │ │ │ │ +00029 #define __GEOM_2D_H__ │ │ │ │ │ +00030 │ │ │ │ │ +00031 #include │ │ │ │ │ +00032 #include │ │ │ │ │ +00033 #include "defines.h" │ │ │ │ │ +00034 │ │ │ │ │ +00035 #ifndef M_PI │ │ │ │ │ +00036 #define M_PI 3.141592653589793238462643383279502884197 │ │ │ │ │ +00037 #endif │ │ │ │ │ +00038 │ │ │ │ │ +00039 namespace siscone{ │ │ │ │ │ +00040 │ │ │ │ │ +00043 inline double phi_in_range(double phi) { │ │ │ │ │ +00044 │ │ │ │ │ +if │ │ │ │ │ +(phi <= -M_PI) phi += twopi; │ │ │ │ │ +00045 │ │ │ │ │ +else if (phi > │ │ │ │ │ +M_PI) phi -= twopi; │ │ │ │ │ +00046 │ │ │ │ │ +return phi; │ │ │ │ │ +00047 } │ │ │ │ │ +00048 │ │ │ │ │ +00052 inline double dphi(double phi1, double phi2) { │ │ │ │ │ +00053 │ │ │ │ │ +return phi_in_range(phi1-phi2); │ │ │ │ │ +00054 } │ │ │ │ │ +00055 │ │ │ │ │ +00056 │ │ │ │ │ +00060 inline double abs_dphi(double phi1, double phi2) { │ │ │ │ │ +00061 │ │ │ │ │ +double delta = fabs(phi1-phi2); │ │ │ │ │ +00062 │ │ │ │ │ +return delta > M_PI ? twopi-delta : delta; │ │ │ │ │ +00063 } │ │ │ │ │ +00064 │ │ │ │ │ +00066 inline double pow2(double x) {return x*x;} │ │ │ │ │ +00067 │ │ │ │ │ +00068 │ │ │ │ │ +00073 class Ctwovect { │ │ │ │ │ +00074 public: │ │ │ │ │ +00076 │ │ │ │ │ +Ctwovect() : x(0.0), y(0.0) {} │ │ │ │ │ +00077 │ │ │ │ │ +00081 │ │ │ │ │ +Ctwovect(double _x, double _y) : x(_x), y(_y) {} │ │ │ │ │ +00082 │ │ │ │ │ +00084 │ │ │ │ │ +double x, y; │ │ │ │ │ +00085 │ │ │ │ │ +00087 │ │ │ │ │ +inline double mod2() const {return pow2(x)+pow2(y);} │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.28 geom_2d.h │ │ │ │ │ + │ │ │ │ │ +219 │ │ │ │ │ + │ │ │ │ │ +00088 │ │ │ │ │ +00090 │ │ │ │ │ +inline double modulus() const {return sqrt(mod2());} │ │ │ │ │ +00091 }; │ │ │ │ │ +00092 │ │ │ │ │ +00093 │ │ │ │ │ +00098 inline double dot_product(const Ctwovect & a, const Ctwovect & b) { │ │ │ │ │ +00099 │ │ │ │ │ +return a.x*b.x + a.y*b.y; │ │ │ │ │ +00100 } │ │ │ │ │ +00101 │ │ │ │ │ +00102 │ │ │ │ │ +00107 inline double cross_product(const Ctwovect & a, const Ctwovect & b) { │ │ │ │ │ +00108 │ │ │ │ │ +return a.x*b.y - a.y*b.x; │ │ │ │ │ +00109 } │ │ │ │ │ +00110 │ │ │ │ │ +00111 │ │ │ │ │ +00120 class Ceta_phi_range{ │ │ │ │ │ +00121 public: │ │ │ │ │ +00123 │ │ │ │ │ +Ceta_phi_range(); │ │ │ │ │ +00124 │ │ │ │ │ +00130 │ │ │ │ │ +Ceta_phi_range(double c_eta, double c_phi, double R); │ │ │ │ │ +00131 │ │ │ │ │ +00134 │ │ │ │ │ +Ceta_phi_range& operator = (const Ceta_phi_range &r); │ │ │ │ │ +00135 │ │ │ │ │ +00140 │ │ │ │ │ +int add_particle(const double eta, const double phi); │ │ │ │ │ +00141 │ │ │ │ │ +00143 │ │ │ │ │ +unsigned int eta_range; │ │ │ │ │ +00144 │ │ │ │ │ +00146 │ │ │ │ │ +unsigned int phi_range; │ │ │ │ │ +00147 │ │ │ │ │ +00148 │ │ │ │ │ +// extremal value for eta │ │ │ │ │ +00149 │ │ │ │ │ +static double eta_min; │ │ │ │ │ +00150 │ │ │ │ │ +static double eta_max; │ │ │ │ │ +00151 │ │ │ │ │ +00152 private: │ │ │ │ │ +00154 │ │ │ │ │ +inline unsigned int get_eta_cell(double eta){ │ │ │ │ │ +00155 │ │ │ │ │ +return (unsigned int) (1u « ((int) (32*((eta-eta_min)/(eta_max-eta_min))))); │ │ │ │ │ +00156 │ │ │ │ │ +} │ │ │ │ │ +00157 │ │ │ │ │ +00159 │ │ │ │ │ +inline unsigned int get_phi_cell(double phi){ │ │ │ │ │ +00160 │ │ │ │ │ +return (unsigned int) (1u « ((int) (32*phi/twopi+16)%32)); │ │ │ │ │ +00161 │ │ │ │ │ +} │ │ │ │ │ +00162 }; │ │ │ │ │ +00163 │ │ │ │ │ +00168 bool is_range_overlap(const Ceta_phi_range &r1, const Ceta_phi_range &r2); │ │ │ │ │ +00169 │ │ │ │ │ +00175 const Ceta_phi_range range_union(const Ceta_phi_range &r1, const Ceta_phi_range &r2); │ │ │ │ │ +00176 │ │ │ │ │ +00177 } │ │ │ │ │ +00178 │ │ │ │ │ +00179 #endif │ │ │ │ │ + │ │ │ │ │ +5.28 │ │ │ │ │ + │ │ │ │ │ +geom_2d.h │ │ │ │ │ + │ │ │ │ │ +00001 // -*- C++ -*00003 // File: geom_2d.h │ │ │ │ │ +// │ │ │ │ │ +00004 // Description: header file for two-dimensional geometry tools │ │ │ │ │ +// │ │ │ │ │ +00005 // This file is part of the SISCone project. │ │ │ │ │ +// │ │ │ │ │ +00006 // WARNING: this is not the main SISCone trunk but │ │ │ │ │ +// │ │ │ │ │ +00007 // │ │ │ │ │ +an adaptation to spherical coordinates │ │ │ │ │ +// │ │ │ │ │ +00008 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ +// │ │ │ │ │ +00009 // │ │ │ │ │ +// │ │ │ │ │ +00010 // Copyright (c) 2006-2008 Gavin Salam and Gregory Soyez │ │ │ │ │ +00011 // │ │ │ │ │ +// │ │ │ │ │ +00012 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ +// │ │ │ │ │ +00013 // it under the terms of the GNU General Public License as published by │ │ │ │ │ +// │ │ │ │ │ +00014 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ +// │ │ │ │ │ +00015 // (at your option) any later version. │ │ │ │ │ +// │ │ │ │ │ +00016 // │ │ │ │ │ +// │ │ │ │ │ +00017 // This program is distributed in the hope that it will be useful, │ │ │ │ │ +// │ │ │ │ │ +00018 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +// │ │ │ │ │ +00019 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ +// │ │ │ │ │ +00020 // GNU General Public License for more details. │ │ │ │ │ +// │ │ │ │ │ +00021 // │ │ │ │ │ +// │ │ │ │ │ +00022 // You should have received a copy of the GNU General Public License │ │ │ │ │ +// │ │ │ │ │ +00023 // along with this program; if not, write to the Free Software │ │ │ │ │ +// │ │ │ │ │ +00024 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ +00025 // │ │ │ │ │ +// │ │ │ │ │ +00026 // $Revision:: 422 │ │ │ │ │ +$// │ │ │ │ │ +00027 // $Date:: 2020-04-22 11:51:09 +0200 (Wed, 22 Apr 2020) │ │ │ │ │ +$// │ │ │ │ │ +00029 │ │ │ │ │ +00030 #ifndef __SPH_GEOM_2D_H__ │ │ │ │ │ +00031 #define __SPH_GEOM_2D_H__ │ │ │ │ │ +00032 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +// │ │ │ │ │ + │ │ │ │ │ + 220 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ +00033 #include │ │ │ │ │ +00034 #include │ │ │ │ │ +00035 #include │ │ │ │ │ +00036 #include │ │ │ │ │ +00037 │ │ │ │ │ +00038 #ifndef M_PI │ │ │ │ │ +00039 #define M_PI 3.141592653589793238462643383279502884197 │ │ │ │ │ +00040 #endif │ │ │ │ │ +00041 │ │ │ │ │ +00042 namespace siscone_spherical{ │ │ │ │ │ +00043 │ │ │ │ │ +00052 class CSphtheta_phi_range{ │ │ │ │ │ +00053 public: │ │ │ │ │ +00055 │ │ │ │ │ +CSphtheta_phi_range(); │ │ │ │ │ +00056 │ │ │ │ │ +00062 │ │ │ │ │ +CSphtheta_phi_range(double c_theta, double c_phi, double R); │ │ │ │ │ +00063 │ │ │ │ │ +00066 │ │ │ │ │ +CSphtheta_phi_range& operator = (const CSphtheta_phi_range &r); │ │ │ │ │ +00067 │ │ │ │ │ +00072 │ │ │ │ │ +int add_particle(const double theta, const double phi); │ │ │ │ │ +00073 │ │ │ │ │ +00075 │ │ │ │ │ +unsigned int theta_range; │ │ │ │ │ +00076 │ │ │ │ │ +00078 │ │ │ │ │ +unsigned int phi_range; │ │ │ │ │ +00079 │ │ │ │ │ +00081 │ │ │ │ │ +static double theta_min; │ │ │ │ │ +00082 │ │ │ │ │ +static double theta_max; │ │ │ │ │ +00083 │ │ │ │ │ +00084 private: │ │ │ │ │ +00086 │ │ │ │ │ +inline unsigned int get_theta_cell(double theta){ │ │ │ │ │ +00087 │ │ │ │ │ +if (theta>=theta_max) return 1u«31; │ │ │ │ │ +00088 │ │ │ │ │ +return (unsigned int) (1u « ((int) (32*((theta-theta_min)/(theta_max-theta_min))))); │ │ │ │ │ +00089 │ │ │ │ │ +} │ │ │ │ │ +00090 │ │ │ │ │ +00092 │ │ │ │ │ +inline unsigned int get_phi_cell(double phi){ │ │ │ │ │ +00093 │ │ │ │ │ +return (unsigned int) (1u « ((int) (32*phi/twopi+16)%32)); │ │ │ │ │ +00094 │ │ │ │ │ +} │ │ │ │ │ +00095 }; │ │ │ │ │ +00096 │ │ │ │ │ +00101 bool is_range_overlap(const CSphtheta_phi_range &r1, const CSphtheta_phi_range &r2); │ │ │ │ │ +00102 │ │ │ │ │ +00108 const CSphtheta_phi_range range_union(const CSphtheta_phi_range &r1, const CSphtheta_phi_range &r2); │ │ │ │ │ +00109 │ │ │ │ │ +00110 } │ │ │ │ │ +00111 │ │ │ │ │ +00112 #endif │ │ │ │ │ + │ │ │ │ │ 5.29 │ │ │ │ │ │ │ │ │ │ hash.cpp │ │ │ │ │ │ │ │ │ │ 00001 │ │ │ │ │ 00002 // File: hash.cpp │ │ │ │ │ // │ │ │ │ │ @@ -17980,31 +17968,31 @@ │ │ │ │ │ 00029 #include "hash.h" │ │ │ │ │ 00030 #include │ │ │ │ │ 00031 │ │ │ │ │ 00032 namespace siscone{ │ │ │ │ │ 00033 │ │ │ │ │ 00034 using namespace std; │ │ │ │ │ 00035 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.29 hash.cpp │ │ │ │ │ + │ │ │ │ │ 00036 /************************************************************** │ │ │ │ │ 00037 * implementation of hash_cones │ │ │ │ │ * │ │ │ │ │ 00038 * list of cones candidates. │ │ │ │ │ * │ │ │ │ │ 00039 * We store in this class all the hash_elements and give │ │ │ │ │ * │ │ │ │ │ 00040 * functions to manipulate them. │ │ │ │ │ * │ │ │ │ │ 00041 **************************************************************/ │ │ │ │ │ 00042 │ │ │ │ │ 00043 // constructor with initialisation │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.29 hash.cpp │ │ │ │ │ - │ │ │ │ │ 00044 // - _Np number of particles │ │ │ │ │ 00045 // - _R2 cone radius (squared) │ │ │ │ │ 00046 //----------------------------------00047 hash_cones::hash_cones(int _Np, double _R2){ │ │ │ │ │ 00048 │ │ │ │ │ int i; │ │ │ │ │ 00049 │ │ │ │ │ 00050 │ │ │ │ │ @@ -18121,14 +18109,23 @@ │ │ │ │ │ 00120 │ │ │ │ │ // set its varibles │ │ │ │ │ 00121 │ │ │ │ │ // Note: at this level, eta and phi have already been computed │ │ │ │ │ 00122 │ │ │ │ │ // │ │ │ │ │ through Cmomentum::build_etaphi. │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +221 │ │ │ │ │ + │ │ │ │ │ + 222 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00123 │ │ │ │ │ elm->ref = v->ref; │ │ │ │ │ 00124 │ │ │ │ │ 00125 │ │ │ │ │ //compute vectors centre │ │ │ │ │ 00126 │ │ │ │ │ v->build_etaphi(); │ │ │ │ │ @@ -18136,23 +18133,14 @@ │ │ │ │ │ elm->eta = v->eta; │ │ │ │ │ 00128 │ │ │ │ │ elm->phi = v->phi; │ │ │ │ │ 00129 │ │ │ │ │ // if at least one of the two is_inside tests gives a result != from the expected, │ │ │ │ │ 00130 │ │ │ │ │ // the || will be true hence !(...) false as wanted │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -221 │ │ │ │ │ - │ │ │ │ │ - 222 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00131 │ │ │ │ │ elm->is_stable = !((is_inside(v, parent)^p_io)||(is_inside(v, child)^c_io)); │ │ │ │ │ 00132 │ │ │ │ │ //cout « "-- new status of " « v->ref[0] « ":" « elm->is_stable « endl; │ │ │ │ │ 00133 │ │ │ │ │ 00134 │ │ │ │ │ // update hash │ │ │ │ │ @@ -18284,31 +18272,31 @@ │ │ │ │ │ elm = elm->next; │ │ │ │ │ 00206 │ │ │ │ │ } while (1); │ │ │ │ │ 00207 │ │ │ │ │ 00208 │ │ │ │ │ return 1; │ │ │ │ │ 00209 } │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.30 hash.cpp │ │ │ │ │ + │ │ │ │ │ +223 │ │ │ │ │ + │ │ │ │ │ 00210 │ │ │ │ │ 00211 /* │ │ │ │ │ 00212 * test if a particle is inside a cone of given centre. │ │ │ │ │ 00213 * check if the particle of coordinates ’v’ is inside the circle of radius R │ │ │ │ │ 00214 * centered at ’centre’. │ │ │ │ │ 00215 * - centre │ │ │ │ │ centre of the circle │ │ │ │ │ 00216 * - v │ │ │ │ │ particle to test │ │ │ │ │ 00217 * return true if inside, false if outside │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.30 hash.cpp │ │ │ │ │ - │ │ │ │ │ -223 │ │ │ │ │ - │ │ │ │ │ 00218 ******************************************************************************/ │ │ │ │ │ 00219 inline bool hash_cones::is_inside(Cmomentum *centre, Cmomentum *v){ │ │ │ │ │ 00220 │ │ │ │ │ double dx, dy; │ │ │ │ │ 00221 │ │ │ │ │ 00222 │ │ │ │ │ dx = centre->eta - v->eta; │ │ │ │ │ @@ -18418,37 +18406,37 @@ │ │ │ │ │ // determine hash size │ │ │ │ │ 00058 │ │ │ │ │ // for a ymax=5 and R=0.7, we observed an occupancy around 1/8 N^2 ~ N2 R2/4 │ │ │ │ │ 00059 │ │ │ │ │ //mask = 1 « (int) (2*log(double(_Np))/log(2.0)); │ │ │ │ │ 00060 │ │ │ │ │ //if (mask<=1) mask=2; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +// │ │ │ │ │ + │ │ │ │ │ + 224 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00061 │ │ │ │ │ int nbits = (int) (log(_Np*_radius*_radius*_Np/4.0)/log(2.0)); │ │ │ │ │ 00062 │ │ │ │ │ if (nbits<1) nbits=1; │ │ │ │ │ 00063 │ │ │ │ │ mask = 1 « nbits; │ │ │ │ │ 00064 │ │ │ │ │ 00065 │ │ │ │ │ // create hash │ │ │ │ │ 00066 │ │ │ │ │ hash_array = new sph_hash_element*[mask]; │ │ │ │ │ 00067 │ │ │ │ │ mask--; │ │ │ │ │ 00068 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -// │ │ │ │ │ - │ │ │ │ │ - 224 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00069 │ │ │ │ │ // set the array to 0 │ │ │ │ │ 00070 │ │ │ │ │ //? needed ? │ │ │ │ │ 00071 │ │ │ │ │ for (i=0;iis_stable){ │ │ │ │ │ 00145 │ │ │ │ │ elm->is_stable = !((is_closer(v, parent, tan2R)^p_io)||(is_closer(v, child, tan2R)^c_io)); │ │ │ │ │ 00146 │ │ │ │ │ //cout « " parent/child: " │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.31 hash.h │ │ │ │ │ + │ │ │ │ │ +225 │ │ │ │ │ + │ │ │ │ │ 00147 │ │ │ │ │ // │ │ │ │ │ « parent->ref[0] « ":" « is_closer(v, parent) « ":" « p_io « " " │ │ │ │ │ 00148 │ │ │ │ │ // │ │ │ │ │ « child->ref[0] « ":" « is_closer(v, child) « ":" « c_io « endl; │ │ │ │ │ 00149 │ │ │ │ │ @@ -18589,19 +18584,14 @@ │ │ │ │ │ //cout « (child->eta) « " " « child->phi « endl; │ │ │ │ │ 00152 │ │ │ │ │ } │ │ │ │ │ 00153 │ │ │ │ │ return 0; │ │ │ │ │ 00154 │ │ │ │ │ } │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.31 hash.h │ │ │ │ │ - │ │ │ │ │ 00155 │ │ │ │ │ 00156 │ │ │ │ │ elm = elm->next; │ │ │ │ │ 00157 │ │ │ │ │ } while (1); │ │ │ │ │ 00158 │ │ │ │ │ 00159 │ │ │ │ │ @@ -18686,70 +18676,69 @@ │ │ │ │ │ 00207 } │ │ │ │ │ │ │ │ │ │ 5.31 │ │ │ │ │ │ │ │ │ │ hash.h │ │ │ │ │ │ │ │ │ │ 00001 // -*- C++ -*00003 // File: hash.h │ │ │ │ │ -// │ │ │ │ │ 00004 // Description: header file for classes hash_element and hash_cones │ │ │ │ │ -// │ │ │ │ │ 00005 // This file is part of the SISCone project. │ │ │ │ │ -// │ │ │ │ │ 00006 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ -// │ │ │ │ │ 00007 // │ │ │ │ │ -// │ │ │ │ │ 00008 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ -// │ │ │ │ │ 00009 // │ │ │ │ │ -// │ │ │ │ │ 00010 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ -// │ │ │ │ │ 00011 // it under the terms of the GNU General Public License as published by │ │ │ │ │ -// │ │ │ │ │ 00012 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ -// │ │ │ │ │ 00013 // (at your option) any later version. │ │ │ │ │ -// │ │ │ │ │ 00014 // │ │ │ │ │ -// │ │ │ │ │ 00015 // This program is distributed in the hope that it will be useful, │ │ │ │ │ -// │ │ │ │ │ 00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -// │ │ │ │ │ 00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ -// │ │ │ │ │ 00018 // GNU General Public License for more details. │ │ │ │ │ -// │ │ │ │ │ 00019 // │ │ │ │ │ -// │ │ │ │ │ 00020 // You should have received a copy of the GNU General Public License │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +// │ │ │ │ │ // │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ + │ │ │ │ │ + 226 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00021 // along with this program; if not, write to the Free Software │ │ │ │ │ // │ │ │ │ │ 00022 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ 00023 // │ │ │ │ │ // │ │ │ │ │ 00024 // $Revision:: 224 │ │ │ │ │ $// │ │ │ │ │ 00025 // $Date:: 2008-05-16 19:58:30 +0200 (Fri, 16 May 2008) │ │ │ │ │ $// │ │ │ │ │ 00027 │ │ │ │ │ 00028 #ifndef __HASH_H__ │ │ │ │ │ 00029 #define __HASH_H__ │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -225 │ │ │ │ │ - │ │ │ │ │ - 226 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00030 │ │ │ │ │ 00031 #include "momentum.h" │ │ │ │ │ 00032 #include "reference.h" │ │ │ │ │ 00033 │ │ │ │ │ 00034 namespace siscone{ │ │ │ │ │ 00035 │ │ │ │ │ 00045 class hash_element{ │ │ │ │ │ @@ -18857,30 +18846,30 @@ │ │ │ │ │ 00026 // $Revision:: 294 │ │ │ │ │ $// │ │ │ │ │ 00027 // $Date:: 2009-05-01 17:15:04 +0200 (Fri, 01 May 2009) │ │ │ │ │ $// │ │ │ │ │ 00029 │ │ │ │ │ 00030 #ifndef __SPH_HASH_H__ │ │ │ │ │ 00031 #define __SPH_HASH_H__ │ │ │ │ │ + │ │ │ │ │ +// │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.33 momentum.cpp │ │ │ │ │ + │ │ │ │ │ 00032 │ │ │ │ │ 00033 #include "momentum.h" │ │ │ │ │ 00034 │ │ │ │ │ 00035 namespace siscone_spherical{ │ │ │ │ │ 00036 │ │ │ │ │ 00046 class sph_hash_element{ │ │ │ │ │ 00047 public: │ │ │ │ │ 00048 │ │ │ │ │ CSph3vector centre; │ │ │ │ │ - │ │ │ │ │ -// │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.33 momentum.cpp │ │ │ │ │ - │ │ │ │ │ 00049 │ │ │ │ │ bool is_stable; │ │ │ │ │ 00050 │ │ │ │ │ 00051 │ │ │ │ │ sph_hash_element *next; │ │ │ │ │ 00052 }; │ │ │ │ │ 00053 │ │ │ │ │ @@ -18986,36 +18975,37 @@ │ │ │ │ │ * │ │ │ │ │ 00036 * particles management. │ │ │ │ │ * │ │ │ │ │ 00037 * It includes all Lorentz properties as well as tools for summing them. * │ │ │ │ │ 00038 *************************************************************************/ │ │ │ │ │ 00039 │ │ │ │ │ 00040 // default ctor │ │ │ │ │ -00041 //-------------00042 Cmomentum::Cmomentum(){ │ │ │ │ │ +00041 //-------------- │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +227 │ │ │ │ │ + │ │ │ │ │ + 228 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ +00042 Cmomentum::Cmomentum(){ │ │ │ │ │ 00043 │ │ │ │ │ eta = 0.0; │ │ │ │ │ 00044 │ │ │ │ │ phi = 0.0; │ │ │ │ │ 00045 │ │ │ │ │ px = py = pz = E = 0.0; │ │ │ │ │ 00046 │ │ │ │ │ ref = Creference(); │ │ │ │ │ 00047 │ │ │ │ │ index = -1; │ │ │ │ │ 00048 } │ │ │ │ │ 00049 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -227 │ │ │ │ │ - │ │ │ │ │ - 228 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00050 // ctor with initialisation │ │ │ │ │ 00051 //-------------------------00052 Cmomentum::Cmomentum(double _px, double _py, double _pz, double _E){ │ │ │ │ │ 00053 │ │ │ │ │ px = _px; │ │ │ │ │ 00054 │ │ │ │ │ py = _py; │ │ │ │ │ 00055 │ │ │ │ │ @@ -19112,33 +19102,33 @@ │ │ │ │ │ 00124 │ │ │ │ │ ref-=v.ref; │ │ │ │ │ 00125 │ │ │ │ │ return *this; │ │ │ │ │ 00126 } │ │ │ │ │ 00127 │ │ │ │ │ 00128 // build eta-phi from 4-momentum info │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.34 momentum.cpp │ │ │ │ │ + │ │ │ │ │ +229 │ │ │ │ │ + │ │ │ │ │ 00129 // !!! │ │ │ │ │ WARNING │ │ │ │ │ !!! │ │ │ │ │ 00130 // !!! computing eta and phi is time-consuming !!! │ │ │ │ │ 00131 // !!! use this whenever you need eta or phi │ │ │ │ │ !!! │ │ │ │ │ 00132 // !!! automatically called for single-particle !!! │ │ │ │ │ 00133 //-------------------------------------------------00134 void Cmomentum::build_etaphi(){ │ │ │ │ │ 00135 │ │ │ │ │ // note: the factor n (ref.nb) cancels in all expressions !! │ │ │ │ │ 00136 │ │ │ │ │ eta = 0.5*log((E+pz)/(E-pz)); │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.34 momentum.cpp │ │ │ │ │ - │ │ │ │ │ -229 │ │ │ │ │ - │ │ │ │ │ 00137 │ │ │ │ │ phi = atan2(py,px); │ │ │ │ │ 00138 } │ │ │ │ │ 00139 │ │ │ │ │ 00140 │ │ │ │ │ 00141 // ordering of two vectors │ │ │ │ │ 00142 // the default ordering is w.r.t. their references │ │ │ │ │ @@ -19238,34 +19228,34 @@ │ │ │ │ │ _theta = _phi = _norm = 0.0; │ │ │ │ │ 00045 │ │ │ │ │ px = py = pz = 0.0; │ │ │ │ │ 00046 │ │ │ │ │ ref = siscone::Creference(); │ │ │ │ │ 00047 } │ │ │ │ │ 00048 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +// │ │ │ │ │ + │ │ │ │ │ + 230 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00049 // ctor with initialisation │ │ │ │ │ 00050 //-------------------------00051 CSph3vector::CSph3vector(double _px, double _py, double _pz){ │ │ │ │ │ 00052 │ │ │ │ │ px = _px; │ │ │ │ │ 00053 │ │ │ │ │ py = _py; │ │ │ │ │ 00054 │ │ │ │ │ pz = _pz; │ │ │ │ │ 00055 │ │ │ │ │ 00056 │ │ │ │ │ // compute the norm │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -// │ │ │ │ │ - │ │ │ │ │ - 230 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00057 │ │ │ │ │ build_norm(); │ │ │ │ │ 00058 │ │ │ │ │ 00059 │ │ │ │ │ ref = siscone::Creference(); │ │ │ │ │ 00060 } │ │ │ │ │ 00061 │ │ │ │ │ @@ -19358,30 +19348,30 @@ │ │ │ │ │ pz*=r; │ │ │ │ │ 00131 │ │ │ │ │ 00132 │ │ │ │ │ return *this; │ │ │ │ │ 00133 } │ │ │ │ │ 00134 │ │ │ │ │ 00135 // division by a constant │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.34 momentum.cpp │ │ │ │ │ + │ │ │ │ │ 00136 //-----------------------------------------------00137 CSph3vector& CSph3vector::operator /= (const double &r){ │ │ │ │ │ 00138 │ │ │ │ │ px/=r; │ │ │ │ │ 00139 │ │ │ │ │ py/=r; │ │ │ │ │ 00140 │ │ │ │ │ pz/=r; │ │ │ │ │ 00141 │ │ │ │ │ 00142 │ │ │ │ │ _norm/=r; │ │ │ │ │ 00143 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.34 momentum.cpp │ │ │ │ │ - │ │ │ │ │ 00144 │ │ │ │ │ return *this; │ │ │ │ │ 00145 } │ │ │ │ │ 00146 │ │ │ │ │ 00147 // build norm from 3-momentum info │ │ │ │ │ 00148 void CSph3vector::build_norm(){ │ │ │ │ │ 00149 │ │ │ │ │ @@ -19485,35 +19475,35 @@ │ │ │ │ │ 00215 │ │ │ │ │ 00216 // default dtor │ │ │ │ │ 00217 //-------------00218 CSphmomentum::~CSphmomentum(){ │ │ │ │ │ 00219 │ │ │ │ │ 00220 } │ │ │ │ │ 00221 │ │ │ │ │ 00222 // assignment of vectors │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +231 │ │ │ │ │ + │ │ │ │ │ + 232 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00223 //----------------------00224 CSphmomentum& CSphmomentum::operator = (const CSphmomentum &v){ │ │ │ │ │ 00225 │ │ │ │ │ px = v.px; │ │ │ │ │ 00226 │ │ │ │ │ py = v.py; │ │ │ │ │ 00227 │ │ │ │ │ pz = v.pz; │ │ │ │ │ 00228 │ │ │ │ │ E = v.E; │ │ │ │ │ 00229 │ │ │ │ │ 00230 │ │ │ │ │ _norm = v._norm; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -231 │ │ │ │ │ - │ │ │ │ │ - 232 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00231 │ │ │ │ │ _theta = v._theta; │ │ │ │ │ 00232 │ │ │ │ │ _phi │ │ │ │ │ = v._phi; │ │ │ │ │ 00233 │ │ │ │ │ 00234 │ │ │ │ │ @@ -19598,43 +19588,43 @@ │ │ │ │ │ 00001 // -*- C++ -*00003 // File: momentum.h │ │ │ │ │ 00004 // Description: header file for 4-momentum class Cmomentum │ │ │ │ │ 00005 // This file is part of the SISCone project. │ │ │ │ │ 00006 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ 00007 // │ │ │ │ │ 00008 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ 00009 // │ │ │ │ │ -00010 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ -00011 // it under the terms of the GNU General Public License as published by │ │ │ │ │ -00012 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ -00013 // (at your option) any later version. │ │ │ │ │ -00014 // │ │ │ │ │ -00015 // This program is distributed in the hope that it will be useful, │ │ │ │ │ -00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ │ │ │ │ │ // │ │ │ │ │ // │ │ │ │ │ // │ │ │ │ │ // │ │ │ │ │ // │ │ │ │ │ // │ │ │ │ │ // │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.35 momentum.h │ │ │ │ │ + │ │ │ │ │ +00010 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ // │ │ │ │ │ +00011 // it under the terms of the GNU General Public License as published by │ │ │ │ │ // │ │ │ │ │ +00012 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ // │ │ │ │ │ +00013 // (at your option) any later version. │ │ │ │ │ // │ │ │ │ │ +00014 // │ │ │ │ │ // │ │ │ │ │ +00015 // This program is distributed in the hope that it will be useful, │ │ │ │ │ // │ │ │ │ │ +00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ // │ │ │ │ │ +00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ // │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.35 momentum.h │ │ │ │ │ - │ │ │ │ │ 00018 // GNU General Public License for more details. │ │ │ │ │ // │ │ │ │ │ 00019 // │ │ │ │ │ // │ │ │ │ │ 00020 // You should have received a copy of the GNU General Public License │ │ │ │ │ // │ │ │ │ │ 00021 // along with this program; if not, write to the Free Software │ │ │ │ │ @@ -19740,36 +19730,36 @@ │ │ │ │ │ 00130 bool momentum_eta_less(const Cmomentum &v1, const Cmomentum &v2); │ │ │ │ │ 00131 │ │ │ │ │ 00133 bool momentum_pt_less(const Cmomentum &v1, const Cmomentum &v2); │ │ │ │ │ 00134 │ │ │ │ │ 00135 │ │ │ │ │ 00137 // some handy utilities // │ │ │ │ │ 00139 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +233 │ │ │ │ │ + │ │ │ │ │ + 234 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00144 inline double get_distance(double eta, double phi, Cmomentum *v){ │ │ │ │ │ 00145 │ │ │ │ │ double dx, dy; │ │ │ │ │ 00146 │ │ │ │ │ 00147 │ │ │ │ │ dx = eta - v->eta; │ │ │ │ │ 00148 │ │ │ │ │ dy = fabs(phi - v->phi); │ │ │ │ │ 00149 │ │ │ │ │ if (dy>M_PI) │ │ │ │ │ 00150 │ │ │ │ │ dy -= twopi; │ │ │ │ │ 00151 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -233 │ │ │ │ │ - │ │ │ │ │ - 234 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00152 │ │ │ │ │ return dx*dx+dy*dy; │ │ │ │ │ 00153 } │ │ │ │ │ 00154 │ │ │ │ │ 00155 } │ │ │ │ │ 00156 │ │ │ │ │ 00157 #endif │ │ │ │ │ @@ -19877,31 +19867,31 @@ │ │ │ │ │ 00095 │ │ │ │ │ 00097 │ │ │ │ │ inline double perp() const {return sqrt(perp2());} │ │ │ │ │ 00098 │ │ │ │ │ 00100 │ │ │ │ │ inline double perp2() const {return px*px+py*py;} │ │ │ │ │ 00101 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.36 momentum.h │ │ │ │ │ + │ │ │ │ │ 00103 │ │ │ │ │ inline double norm() const {return sqrt(px*px+py*py+pz*pz);} │ │ │ │ │ 00104 │ │ │ │ │ 00106 │ │ │ │ │ inline double norm2() const {return px*px+py*py+pz*pz;} │ │ │ │ │ 00107 │ │ │ │ │ 00109 │ │ │ │ │ inline double phi() const {return atan2(py, px);} │ │ │ │ │ 00110 │ │ │ │ │ 00112 │ │ │ │ │ inline double theta() const {return atan2(perp(),pz);} │ │ │ │ │ 00113 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.36 momentum.h │ │ │ │ │ - │ │ │ │ │ 00120 │ │ │ │ │ void build_norm(); │ │ │ │ │ 00121 │ │ │ │ │ 00125 │ │ │ │ │ void build_thetaphi(); │ │ │ │ │ 00126 │ │ │ │ │ 00129 │ │ │ │ │ @@ -20012,14 +20002,23 @@ │ │ │ │ │ « v2.px « " " « v2.py « " " « v2.pz « std::endl; │ │ │ │ │ 00242 │ │ │ │ │ //} │ │ │ │ │ 00243 │ │ │ │ │ return v1.px*v2.px + v1.py*v2.py + v1.pz*v2.pz; │ │ │ │ │ 00244 } │ │ │ │ │ 00245 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +235 │ │ │ │ │ + │ │ │ │ │ + 236 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00249 inline CSph3vector cross_product3(const CSph3vector &v1, const CSph3vector &v2){ │ │ │ │ │ 00250 │ │ │ │ │ //CSph3vector tmp; │ │ │ │ │ 00251 │ │ │ │ │ //tmp.px = v1.py*v2.pz-v1.pz*v2.py; │ │ │ │ │ 00252 │ │ │ │ │ //tmp.py = v1.pz*v2.px-v1.px*v2.pz; │ │ │ │ │ @@ -20027,23 +20026,14 @@ │ │ │ │ │ //tmp.pz = v1.px*v2.py-v1.py*v2.px; │ │ │ │ │ 00254 │ │ │ │ │ //return tmp; │ │ │ │ │ 00255 │ │ │ │ │ return CSph3vector(v1.py*v2.pz-v1.pz*v2.py, │ │ │ │ │ 00256 │ │ │ │ │ v1.pz*v2.px-v1.px*v2.pz, │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -235 │ │ │ │ │ - │ │ │ │ │ - 236 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00257 │ │ │ │ │ v1.px*v2.py-v1.py*v2.px); │ │ │ │ │ 00258 } │ │ │ │ │ 00259 │ │ │ │ │ 00263 inline double norm2_cross_product3(const CSph3vector &v1, const CSph3vector &v2){ │ │ │ │ │ 00264 │ │ │ │ │ return sqr(v1.py*v2.pz-v1.pz*v2.py) + sqr(v1.pz*v2.px-v1.px*v2.pz) + sqr(v1.px*v2.py-v1.py*v2.px); │ │ │ │ │ @@ -20159,14 +20149,19 @@ │ │ │ │ │ * │ │ │ │ │ 00039 * - init_cone() │ │ │ │ │ * │ │ │ │ │ 00040 * - test_cone() │ │ │ │ │ * │ │ │ │ │ 00041 * - update_cone() │ │ │ │ │ * │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.37 protocones.cpp │ │ │ │ │ + │ │ │ │ │ 00042 * - proceed_with_stability() │ │ │ │ │ * │ │ │ │ │ 00043 * ALGORITHM MAIN STEPS FOR COCIRCULAR SITUATIONS │ │ │ │ │ * │ │ │ │ │ 00044 * - cocircular_pt_less(v1, v2) │ │ │ │ │ * │ │ │ │ │ 00045 * - prepare_cocircular_list() │ │ │ │ │ @@ -20175,19 +20170,14 @@ │ │ │ │ │ * │ │ │ │ │ 00047 * - test_stability(candidate, border_list) │ │ │ │ │ * │ │ │ │ │ 00048 * - updat_cone_cocircular() │ │ │ │ │ * │ │ │ │ │ 00049 * RECOMPUTATION OF CONE CONTENTS │ │ │ │ │ * │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.37 protocones.cpp │ │ │ │ │ - │ │ │ │ │ 00050 * - compute_cone_contents() │ │ │ │ │ * │ │ │ │ │ 00051 * - recompute_cone_contents() │ │ │ │ │ * │ │ │ │ │ 00052 * - recompute_cone_contents_if_needed() │ │ │ │ │ * │ │ │ │ │ 00053 * VARIOUS TOOLS │ │ │ │ │ @@ -20291,31 +20281,31 @@ │ │ │ │ │ 00126 } │ │ │ │ │ 00127 │ │ │ │ │ 00128 │ │ │ │ │ 00130 // ALGORITHM MAIN ENTRY │ │ │ │ │ // │ │ │ │ │ 00131 // - get_stable_cone(radius) │ │ │ │ │ // │ │ │ │ │ -00133 │ │ │ │ │ -00134 /* │ │ │ │ │ -00135 * compute stable cones. │ │ │ │ │ -00136 * This function really does the job i.e. computes │ │ │ │ │ -00137 * the list of stable cones (in a seedless way) │ │ │ │ │ -00138 * - _radius: radius of the cones │ │ │ │ │ -00139 * The number of stable cones found is returned │ │ │ │ │ -00140 *********************************************************************/ │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 237 │ │ │ │ │ │ │ │ │ │ 238 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ +00133 │ │ │ │ │ +00134 /* │ │ │ │ │ +00135 * compute stable cones. │ │ │ │ │ +00136 * This function really does the job i.e. computes │ │ │ │ │ +00137 * the list of stable cones (in a seedless way) │ │ │ │ │ +00138 * - _radius: radius of the cones │ │ │ │ │ +00139 * The number of stable cones found is returned │ │ │ │ │ +00140 *********************************************************************/ │ │ │ │ │ 00141 int Cstable_cones::get_stable_cones(double _radius){ │ │ │ │ │ 00142 │ │ │ │ │ int p_idx; │ │ │ │ │ 00143 │ │ │ │ │ 00144 │ │ │ │ │ // check if everything is correctly initialised │ │ │ │ │ 00145 │ │ │ │ │ @@ -20443,28 +20433,28 @@ │ │ │ │ │ 00218 │ │ │ │ │ // build the initial cone (nodist: avoids calculating distances -00219 │ │ │ │ │ // just deduces contents by circulating around all in/out operations) │ │ │ │ │ 00220 │ │ │ │ │ // this function also sets the list of included particles │ │ │ │ │ 00221 │ │ │ │ │ compute_cone_contents(); │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.37 protocones.cpp │ │ │ │ │ + │ │ │ │ │ 00222 │ │ │ │ │ 00223 │ │ │ │ │ return 0; │ │ │ │ │ 00224 } │ │ │ │ │ 00225 │ │ │ │ │ 00226 │ │ │ │ │ 00227 /* │ │ │ │ │ 00228 * test cones. │ │ │ │ │ 00229 * We check if the cone(s) built with the present parent and child │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.37 protocones.cpp │ │ │ │ │ - │ │ │ │ │ 00230 * are stable │ │ │ │ │ 00231 * return 0 on success 1 on error │ │ │ │ │ 00232 *********************************************************************/ │ │ │ │ │ 00233 int Cstable_cones::test_cone(){ │ │ │ │ │ 00234 │ │ │ │ │ Creference weighted_cone_ref; │ │ │ │ │ 00235 │ │ │ │ │ @@ -20590,37 +20580,37 @@ │ │ │ │ │ 00305 │ │ │ │ │ 00306 │ │ │ │ │ // check cocircularity │ │ │ │ │ 00307 │ │ │ │ │ // note that if cocirculaity is detected (i.e. if we receive 1 │ │ │ │ │ 00308 │ │ │ │ │ // in the next test), we need to recall ’update_cone’ directly │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +239 │ │ │ │ │ + │ │ │ │ │ + 240 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00309 │ │ │ │ │ // since tests and remaining part of te update has been performed │ │ │ │ │ 00310 │ │ │ │ │ //if (cocircular_check()) │ │ │ │ │ 00311 │ │ │ │ │ if (cocircular_check()) │ │ │ │ │ 00312 │ │ │ │ │ return update_cone(); │ │ │ │ │ 00313 │ │ │ │ │ 00314 │ │ │ │ │ 00315 │ │ │ │ │ // update the cone w.r.t. the new child │ │ │ │ │ 00316 │ │ │ │ │ // only required if the new child was already inside in which │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -239 │ │ │ │ │ - │ │ │ │ │ - 240 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00317 │ │ │ │ │ // case we need to remove it. We also know that the child is │ │ │ │ │ 00318 │ │ │ │ │ // inside iff its side is +. │ │ │ │ │ 00319 │ │ │ │ │ if ((centre->side) && (cone.ref.not_empty())){ │ │ │ │ │ 00320 │ │ │ │ │ @@ -20749,31 +20739,31 @@ │ │ │ │ │ nb_hash_cones = hc->n_cones; │ │ │ │ │ 00392 │ │ │ │ │ nb_hash_occupied = hc->n_occupied_cells; │ │ │ │ │ 00393 #endif │ │ │ │ │ 00394 │ │ │ │ │ 00395 │ │ │ │ │ delete hc; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.37 protocones.cpp │ │ │ │ │ + │ │ │ │ │ 00396 │ │ │ │ │ hc=NULL; │ │ │ │ │ 00397 │ │ │ │ │ 00398 │ │ │ │ │ return protocones.size(); │ │ │ │ │ 00399 } │ │ │ │ │ 00400 │ │ │ │ │ 00401 │ │ │ │ │ 00403 // ALGORITHM MAIN STEPS FOR COCIRCULAR SITUATIONS │ │ │ │ │ // │ │ │ │ │ 00404 // - cocircular_pt_less(v1, v2) │ │ │ │ │ // │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.37 protocones.cpp │ │ │ │ │ - │ │ │ │ │ 00405 // - prepare_cocircular_list() │ │ │ │ │ // │ │ │ │ │ 00406 // - test_cone_cocircular() │ │ │ │ │ // │ │ │ │ │ 00407 // - test_stability(candidate, border_vect) │ │ │ │ │ // │ │ │ │ │ 00408 // - updat_cone_cocircular() │ │ │ │ │ @@ -20892,14 +20882,23 @@ │ │ │ │ │ } │ │ │ │ │ 00482 │ │ │ │ │ 00483 │ │ │ │ │ // get them into order of angle │ │ │ │ │ 00484 │ │ │ │ │ sort(border_vect.begin(), border_vect.end()); │ │ │ │ │ 00485 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +241 │ │ │ │ │ + │ │ │ │ │ + 242 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00486 │ │ │ │ │ // set up some circulators, since these will help us go around the │ │ │ │ │ 00487 │ │ │ │ │ // circle easily │ │ │ │ │ 00488 │ │ │ │ │ circulator::iterator > │ │ │ │ │ 00489 │ │ │ │ │ @@ -20907,23 +20906,14 @@ │ │ │ │ │ 00490 │ │ │ │ │ circulator::iterator > mid(start), end(start); │ │ │ │ │ 00491 │ │ │ │ │ 00492 │ │ │ │ │ // test the borderless cone │ │ │ │ │ 00493 │ │ │ │ │ Cmomentum candidate = borderless_cone; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -241 │ │ │ │ │ - │ │ │ │ │ - 242 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00494 │ │ │ │ │ candidate.build_etaphi(); │ │ │ │ │ 00495 │ │ │ │ │ if (candidate.ref.not_empty()) │ │ │ │ │ 00496 │ │ │ │ │ test_stability(candidate, border_vect); │ │ │ │ │ 00497 │ │ │ │ │ @@ -21046,33 +21036,33 @@ │ │ │ │ │ 00574 │ │ │ │ │ 00575 │ │ │ │ │ 00576 │ │ │ │ │ // now establish the list of unique children in the list │ │ │ │ │ 00577 │ │ │ │ │ // first make sure parent and child are in! │ │ │ │ │ 00578 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.37 protocones.cpp │ │ │ │ │ + │ │ │ │ │ 00579 │ │ │ │ │ list removed_from_cone; │ │ │ │ │ 00580 │ │ │ │ │ list put_in_border; │ │ │ │ │ 00581 │ │ │ │ │ list border_list; │ │ │ │ │ 00582 │ │ │ │ │ 00583 │ │ │ │ │ Cmomentum cone_removal; │ │ │ │ │ 00584 │ │ │ │ │ Cmomentum border = *parent; │ │ │ │ │ 00585 │ │ │ │ │ border_list.push_back(parent); │ │ │ │ │ 00586 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.37 protocones.cpp │ │ │ │ │ - │ │ │ │ │ 00587 │ │ │ │ │ // make sure child appears in the border region │ │ │ │ │ 00588 │ │ │ │ │ centre->cocircular.push_back(centre); │ │ │ │ │ 00589 │ │ │ │ │ 00590 │ │ │ │ │ // now establish the full contents of the cone minus the cocircular │ │ │ │ │ @@ -21208,36 +21198,36 @@ │ │ │ │ │ 00661 } │ │ │ │ │ 00662 │ │ │ │ │ 00663 │ │ │ │ │ 00665 // RECOMPUTATION OF CONE CONTENTS │ │ │ │ │ // │ │ │ │ │ 00666 // - compute_cone_contents() │ │ │ │ │ // │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +243 │ │ │ │ │ + │ │ │ │ │ + 244 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00667 // - recompute_cone_contents() │ │ │ │ │ // │ │ │ │ │ 00668 // - recompute_cone_contents_if_needed() │ │ │ │ │ // │ │ │ │ │ 00670 │ │ │ │ │ 00679 void Cstable_cones::compute_cone_contents() { │ │ │ │ │ 00680 │ │ │ │ │ circulator::iterator > │ │ │ │ │ 00681 │ │ │ │ │ start(vicinity.begin()+first_cone, vicinity.begin(), vicinity.end()); │ │ │ │ │ 00682 │ │ │ │ │ 00683 │ │ │ │ │ circulator::iterator > here(start); │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -243 │ │ │ │ │ - │ │ │ │ │ - 244 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00684 │ │ │ │ │ 00685 │ │ │ │ │ // note that in the following algorithm, the cone contents never includes │ │ │ │ │ 00686 │ │ │ │ │ // the child. Indeed, if it has positive sign, then it will be set as │ │ │ │ │ 00687 │ │ │ │ │ // outside at the last step in the loop. If it has negative sign, then the │ │ │ │ │ @@ -21358,14 +21348,19 @@ │ │ │ │ │ // Among those, we only add the particles for which ’is_inside’ is true ! │ │ │ │ │ 00760 │ │ │ │ │ // This methos rather than a direct comparison avoids rounding errors │ │ │ │ │ 00761 │ │ │ │ │ for (unsigned int i=0;iside) && (vicinity[i]->is_inside->cone)) │ │ │ │ │ 00764 │ │ │ │ │ this_cone += *vicinity[i]->v; │ │ │ │ │ 00765 │ │ │ │ │ } │ │ │ │ │ 00766 │ │ │ │ │ @@ -21373,21 +21368,14 @@ │ │ │ │ │ } │ │ │ │ │ 00768 │ │ │ │ │ // set check variables back to 0 │ │ │ │ │ 00769 │ │ │ │ │ this_dpt = 0.0; │ │ │ │ │ 00770 │ │ │ │ │ } │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.38 protocones.cpp │ │ │ │ │ - │ │ │ │ │ -245 │ │ │ │ │ - │ │ │ │ │ 00771 │ │ │ │ │ 00772 } │ │ │ │ │ 00773 │ │ │ │ │ 00774 │ │ │ │ │ 00776 // VARIOUS TOOLS │ │ │ │ │ // │ │ │ │ │ 00777 // - circle_intersect() │ │ │ │ │ @@ -21494,31 +21482,31 @@ │ │ │ │ │ 00845 │ │ │ │ │ 00846 │ │ │ │ │ return dphi; │ │ │ │ │ 00847 } │ │ │ │ │ 00848 │ │ │ │ │ 00849 } │ │ │ │ │ │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +245 │ │ │ │ │ + │ │ │ │ │ + 246 │ │ │ │ │ + │ │ │ │ │ 5.38 │ │ │ │ │ │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ protocones.cpp │ │ │ │ │ │ │ │ │ │ 00001 │ │ │ │ │ 00002 // File: protocones.cpp │ │ │ │ │ -00003 // Description: source file for stable cones determination (Cstable_cones) │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ // │ │ │ │ │ +00003 // Description: source file for stable cones determination (Cstable_cones) │ │ │ │ │ // │ │ │ │ │ - │ │ │ │ │ - 246 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00004 // This file is part of the SISCone project. │ │ │ │ │ // │ │ │ │ │ 00005 // WARNING: this is not the main SISCone trunk but │ │ │ │ │ // │ │ │ │ │ 00006 // │ │ │ │ │ an adaptation to spherical coordinates │ │ │ │ │ // │ │ │ │ │ @@ -21654,25 +21642,25 @@ │ │ │ │ │ 00084 // - ctor(particle_list) │ │ │ │ │ // │ │ │ │ │ 00085 // - dtor() │ │ │ │ │ // │ │ │ │ │ 00086 // - init(particle_list) │ │ │ │ │ // │ │ │ │ │ 00088 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.38 protocones.cpp │ │ │ │ │ + │ │ │ │ │ 00089 // default ctor │ │ │ │ │ 00090 //-------------00091 CSphstable_cones::CSphstable_cones(){ │ │ │ │ │ 00092 │ │ │ │ │ nb_tot = 0; │ │ │ │ │ 00093 │ │ │ │ │ hc = NULL; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.38 protocones.cpp │ │ │ │ │ - │ │ │ │ │ 00094 } │ │ │ │ │ 00095 │ │ │ │ │ 00096 // ctor with initialisation │ │ │ │ │ 00097 //-------------------------00098 CSphstable_cones::CSphstable_cones(vector &_particle_list) │ │ │ │ │ 00099 │ │ │ │ │ : CSphvicinity(_particle_list){ │ │ │ │ │ 00100 │ │ │ │ │ @@ -21790,31 +21778,31 @@ │ │ │ │ │ 00174 │ │ │ │ │ cout « endl « endl; │ │ │ │ │ 00175 │ │ │ │ │ cout « "plot ’particles.dat’ u 2:1 pt 1 ps 3" « endl; │ │ │ │ │ 00176 │ │ │ │ │ cout « "set label 1 ’x’ at " « parent->_phi « ", " « parent->_theta « endl; │ │ │ │ │ 00177 #endif │ │ │ │ │ -00178 │ │ │ │ │ -00179 │ │ │ │ │ -// step 1: initialise with the first cone candidate │ │ │ │ │ -00180 │ │ │ │ │ -init_cone(); │ │ │ │ │ -00181 │ │ │ │ │ -00182 │ │ │ │ │ -do{ │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 247 │ │ │ │ │ │ │ │ │ │ 248 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ +00178 │ │ │ │ │ +00179 │ │ │ │ │ +// step 1: initialise with the first cone candidate │ │ │ │ │ +00180 │ │ │ │ │ +init_cone(); │ │ │ │ │ +00181 │ │ │ │ │ +00182 │ │ │ │ │ +do{ │ │ │ │ │ 00183 │ │ │ │ │ // step 2: test cone stability for that pair (P,C) │ │ │ │ │ 00184 │ │ │ │ │ test_cone(); │ │ │ │ │ 00185 │ │ │ │ │ 00186 │ │ │ │ │ // step 3: go to the next cone child candidate C │ │ │ │ │ @@ -21947,33 +21935,33 @@ │ │ │ │ │ //UPDATED(see below): │ │ │ │ │ } │ │ │ │ │ 00265 │ │ │ │ │ //UPDATED(see below): │ │ │ │ │ 00266 │ │ │ │ │ //UPDATED(see below): │ │ │ │ │ cone_candidate = cone; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.38 protocones.cpp │ │ │ │ │ + │ │ │ │ │ 00267 │ │ │ │ │ //UPDATED(see below): │ │ │ │ │ cone_candidate+= *parent + *child; │ │ │ │ │ 00268 │ │ │ │ │ //UPDATED(see below): │ │ │ │ │ hc->insert(&cone_candidate, parent, child, true, true); │ │ │ │ │ 00269 │ │ │ │ │ //UPDATED(see below): } else { │ │ │ │ │ 00270 │ │ │ │ │ //UPDATED(see below): │ │ │ │ │ // test when 1! of the particles is in the cone │ │ │ │ │ 00271 │ │ │ │ │ //UPDATED(see below): │ │ │ │ │ cone_candidate = cone + *parent; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.38 protocones.cpp │ │ │ │ │ - │ │ │ │ │ 00272 │ │ │ │ │ //UPDATED(see below): │ │ │ │ │ hc->insert(&cone_candidate, parent, child, true, false); │ │ │ │ │ 00273 │ │ │ │ │ //UPDATED(see below): │ │ │ │ │ 00274 │ │ │ │ │ //UPDATED(see below): │ │ │ │ │ @@ -22107,32 +22095,32 @@ │ │ │ │ │ 00350 │ │ │ │ │ 00351 │ │ │ │ │ // check cocircularity │ │ │ │ │ 00352 │ │ │ │ │ // note that if cocirculaity is detected (i.e. if we receive 1 │ │ │ │ │ 00353 │ │ │ │ │ // in the next test), we need to recall ’update_cone’ directly │ │ │ │ │ -00354 │ │ │ │ │ -// since tests and remaining part of te update has been performed │ │ │ │ │ -00355 │ │ │ │ │ -//if (cocircular_check()) │ │ │ │ │ -00356 │ │ │ │ │ -if (cocircular_check()){ │ │ │ │ │ -00357 #ifdef DEBUG_STABLE_CONES │ │ │ │ │ -00358 │ │ │ │ │ -cout « " Co-circular case detected" « endl; │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 249 │ │ │ │ │ │ │ │ │ │ 250 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ +00354 │ │ │ │ │ +// since tests and remaining part of te update has been performed │ │ │ │ │ +00355 │ │ │ │ │ +//if (cocircular_check()) │ │ │ │ │ +00356 │ │ │ │ │ +if (cocircular_check()){ │ │ │ │ │ +00357 #ifdef DEBUG_STABLE_CONES │ │ │ │ │ +00358 │ │ │ │ │ +cout « " Co-circular case detected" « endl; │ │ │ │ │ 00359 #endif │ │ │ │ │ 00360 │ │ │ │ │ return update_cone(); │ │ │ │ │ 00361 │ │ │ │ │ } │ │ │ │ │ 00362 │ │ │ │ │ 00363 │ │ │ │ │ @@ -22260,27 +22248,27 @@ │ │ │ │ │ 00437 │ │ │ │ │ // we do that at this level because hash eats rather a lot of memory │ │ │ │ │ 00438 │ │ │ │ │ // we want to free it before running the split/merge algorithm │ │ │ │ │ 00439 #ifdef DEBUG_STABLE_CONES │ │ │ │ │ 00440 │ │ │ │ │ nb_hash_cones = hc->n_cones; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.38 protocones.cpp │ │ │ │ │ + │ │ │ │ │ 00441 │ │ │ │ │ nb_hash_occupied = hc->n_occupied_cells; │ │ │ │ │ 00442 #endif │ │ │ │ │ 00443 │ │ │ │ │ 00444 │ │ │ │ │ delete hc; │ │ │ │ │ 00445 │ │ │ │ │ hc=NULL; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.38 protocones.cpp │ │ │ │ │ - │ │ │ │ │ 00446 │ │ │ │ │ 00447 │ │ │ │ │ return protocones.size(); │ │ │ │ │ 00448 } │ │ │ │ │ 00449 │ │ │ │ │ 00450 │ │ │ │ │ 00452 // ALGORITHM MAIN STEPS FOR COCIRCULAR SITUATIONS │ │ │ │ │ @@ -22403,32 +22391,32 @@ │ │ │ │ │ CSph3vector angl_dir1, angl_dir2; │ │ │ │ │ 00528 │ │ │ │ │ centre->centre.get_angular_directions(angl_dir1, angl_dir2); │ │ │ │ │ 00529 │ │ │ │ │ angl_dir1/=angl_dir1._norm; │ │ │ │ │ 00530 │ │ │ │ │ angl_dir2/=angl_dir2._norm; │ │ │ │ │ -00531 │ │ │ │ │ -00532 │ │ │ │ │ -// now we have te reference axis, create the CSphborder_store structure │ │ │ │ │ -00533 │ │ │ │ │ -vector border_vect; │ │ │ │ │ -00534 │ │ │ │ │ -border_vect.reserve(border_list.size()); │ │ │ │ │ -00535 │ │ │ │ │ -for (list::iterator it = border_list.begin(); │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 251 │ │ │ │ │ │ │ │ │ │ 252 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ +00531 │ │ │ │ │ +00532 │ │ │ │ │ +// now we have te reference axis, create the CSphborder_store structure │ │ │ │ │ +00533 │ │ │ │ │ +vector border_vect; │ │ │ │ │ +00534 │ │ │ │ │ +border_vect.reserve(border_list.size()); │ │ │ │ │ +00535 │ │ │ │ │ +for (list::iterator it = border_list.begin(); │ │ │ │ │ 00536 │ │ │ │ │ it != border_list.end(); it++) { │ │ │ │ │ 00537 │ │ │ │ │ border_vect.push_back(CSphborder_store(*it, centre->centre, angl_dir1, angl_dir2)); │ │ │ │ │ 00538 │ │ │ │ │ } │ │ │ │ │ 00539 │ │ │ │ │ @@ -22558,27 +22546,24 @@ │ │ │ │ │ 00619 │ │ │ │ │ 00620 │ │ │ │ │ // first get cone into status required at end... │ │ │ │ │ 00621 │ │ │ │ │ if ((centre->side) && (cone.ref.not_empty())){ │ │ │ │ │ 00622 │ │ │ │ │ // update cone │ │ │ │ │ -00623 │ │ │ │ │ -cone -= (*child); │ │ │ │ │ -00624 │ │ │ │ │ -00625 │ │ │ │ │ -// update info on particles inside │ │ │ │ │ -00626 │ │ │ │ │ -centre->is_inside->cone = false; │ │ │ │ │ -00627 │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 5.38 protocones.cpp │ │ │ │ │ │ │ │ │ │ +00623 │ │ │ │ │ +00624 │ │ │ │ │ +00625 │ │ │ │ │ +00626 │ │ │ │ │ +00627 │ │ │ │ │ 00628 │ │ │ │ │ 00629 │ │ │ │ │ 00630 │ │ │ │ │ 00631 │ │ │ │ │ 00632 │ │ │ │ │ 00633 │ │ │ │ │ 00634 │ │ │ │ │ @@ -22614,14 +22599,17 @@ │ │ │ │ │ 00664 │ │ │ │ │ 00665 │ │ │ │ │ 00666 │ │ │ │ │ 00667 │ │ │ │ │ │ │ │ │ │ 253 │ │ │ │ │ │ │ │ │ │ +cone -= (*child); │ │ │ │ │ +// update info on particles inside │ │ │ │ │ +centre->is_inside->cone = false; │ │ │ │ │ // update stability check quantities │ │ │ │ │ dpt += fabs(child->px)+fabs(child->py)+fabs(child->pz); //child->perp2(); │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ // now establish the list of unique children in the list │ │ │ │ │ // first make sure parent and child are in! │ │ │ │ │ list removed_from_cone; │ │ │ │ │ @@ -22724,30 +22712,30 @@ │ │ │ │ │ for(list::iterator is_in = removed_from_cone.begin(); │ │ │ │ │ 00706 │ │ │ │ │ is_in != removed_from_cone.end(); is_in++) { │ │ │ │ │ 00707 │ │ │ │ │ (*is_in)->cone = true; │ │ │ │ │ 00708 │ │ │ │ │ } │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 254 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00709 │ │ │ │ │ 00710 │ │ │ │ │ // relabel things that got put into the border │ │ │ │ │ 00711 │ │ │ │ │ for(list::iterator is_in = put_in_border.begin(); │ │ │ │ │ 00712 │ │ │ │ │ is_in != put_in_border.end(); is_in++) { │ │ │ │ │ 00713 │ │ │ │ │ (*is_in)->cocirc = false; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 254 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00714 │ │ │ │ │ } │ │ │ │ │ 00715 │ │ │ │ │ 00716 │ │ │ │ │ // we’re done with everything -- return true to signal to user that we’ve │ │ │ │ │ 00717 │ │ │ │ │ // been through the co-circularity rigmarole │ │ │ │ │ @@ -22869,28 +22857,28 @@ │ │ │ │ │ 00800 * the cone momentum from particle list. in this version, we use the │ │ │ │ │ 00801 * ’pincluded’ information from the CSphvicinity class, but we don’t │ │ │ │ │ 00802 * change the member cone, only the locally supplied one │ │ │ │ │ 00803 */ │ │ │ │ │ 00804 void CSphstable_cones::recompute_cone_contents_if_needed(CSphmomentum & this_cone, │ │ │ │ │ 00805 │ │ │ │ │ double & this_dpt){ │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.39 protocones.h │ │ │ │ │ + │ │ │ │ │ 00806 │ │ │ │ │ 00807 │ │ │ │ │ if (this_dpt > PT_TSHOLD*(fabs(this_cone.px)+fabs(this_cone.py))) { │ │ │ │ │ 00808 │ │ │ │ │ if (cone.ref.is_empty()) { │ │ │ │ │ 00809 │ │ │ │ │ this_cone = CSphmomentum(); │ │ │ │ │ 00810 │ │ │ │ │ } else { │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.39 protocones.h │ │ │ │ │ - │ │ │ │ │ 00811 │ │ │ │ │ // set momentum to 0 │ │ │ │ │ 00812 │ │ │ │ │ this_cone = CSphmomentum(); │ │ │ │ │ 00813 │ │ │ │ │ 00814 │ │ │ │ │ // Important note: we can browse only the particles │ │ │ │ │ @@ -23014,28 +23002,28 @@ │ │ │ │ │ 00023 // │ │ │ │ │ // │ │ │ │ │ 00024 // $Revision:: 224 │ │ │ │ │ $// │ │ │ │ │ 00025 // $Date:: 2008-05-16 19:58:30 +0200 (Fri, 16 May 2008) │ │ │ │ │ $// │ │ │ │ │ 00027 │ │ │ │ │ -00028 #ifndef __PROTOCONES_H__ │ │ │ │ │ -00029 #define __PROTOCONES_H__ │ │ │ │ │ -00030 │ │ │ │ │ -00031 #include "momentum.h" │ │ │ │ │ -00032 #include "vicinity.h" │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 255 │ │ │ │ │ │ │ │ │ │ 256 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ +00028 #ifndef __PROTOCONES_H__ │ │ │ │ │ +00029 #define __PROTOCONES_H__ │ │ │ │ │ +00030 │ │ │ │ │ +00031 #include "momentum.h" │ │ │ │ │ +00032 #include "vicinity.h" │ │ │ │ │ 00033 #include │ │ │ │ │ 00034 #include │ │ │ │ │ 00035 #include │ │ │ │ │ 00036 #include "hash.h" │ │ │ │ │ 00037 │ │ │ │ │ 00038 #include "defines.h" │ │ │ │ │ 00039 │ │ │ │ │ @@ -23147,29 +23135,29 @@ │ │ │ │ │ 00185 │ │ │ │ │ void test_cone_cocircular(Cmomentum & borderless_cone, │ │ │ │ │ 00186 │ │ │ │ │ std::list & border_list); │ │ │ │ │ 00187 │ │ │ │ │ 00194 │ │ │ │ │ void test_stability(Cmomentum & candidate, │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.40 protocones.h │ │ │ │ │ + │ │ │ │ │ +257 │ │ │ │ │ + │ │ │ │ │ 00195 │ │ │ │ │ const std::vector & border_vect); │ │ │ │ │ 00196 │ │ │ │ │ 00203 │ │ │ │ │ void compute_cone_contents(); │ │ │ │ │ 00204 │ │ │ │ │ 00210 │ │ │ │ │ void recompute_cone_contents(); │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.40 protocones.h │ │ │ │ │ - │ │ │ │ │ -257 │ │ │ │ │ - │ │ │ │ │ 00211 │ │ │ │ │ 00212 │ │ │ │ │ /* │ │ │ │ │ 00213 │ │ │ │ │ * if we have gone beyond the acceptable threshold of change, compute │ │ │ │ │ 00214 │ │ │ │ │ * the cone momentum from particle list. in this version, we use the │ │ │ │ │ @@ -23292,28 +23280,28 @@ │ │ │ │ │ 00027 // $Date:: 2008-07-12 17:40:35 +0200 (Sat, 12 Jul 2008) │ │ │ │ │ $// │ │ │ │ │ 00029 │ │ │ │ │ 00030 #ifndef __SPH_PROTOCONES_H__ │ │ │ │ │ 00031 #define __SPH_PROTOCONES_H__ │ │ │ │ │ 00032 │ │ │ │ │ 00033 #include "momentum.h" │ │ │ │ │ -00034 #include "vicinity.h" │ │ │ │ │ -00035 #include │ │ │ │ │ -00036 #include │ │ │ │ │ -00037 #include │ │ │ │ │ -00038 #include "hash.h" │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ // │ │ │ │ │ │ │ │ │ │ 258 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ +00034 #include "vicinity.h" │ │ │ │ │ +00035 #include │ │ │ │ │ +00036 #include │ │ │ │ │ +00037 #include │ │ │ │ │ +00038 #include "hash.h" │ │ │ │ │ 00039 │ │ │ │ │ 00040 #include │ │ │ │ │ 00041 │ │ │ │ │ 00042 namespace siscone_spherical{ │ │ │ │ │ 00043 │ │ │ │ │ 00055 class CSphborder_store{ │ │ │ │ │ 00056 public: │ │ │ │ │ @@ -23426,28 +23414,28 @@ │ │ │ │ │ */ │ │ │ │ │ 00180 │ │ │ │ │ void prepare_cocircular_lists(); │ │ │ │ │ 00181 │ │ │ │ │ 00189 │ │ │ │ │ bool cocircular_check(); │ │ │ │ │ 00190 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.41 siscone.cpp │ │ │ │ │ + │ │ │ │ │ 00195 │ │ │ │ │ void test_cone_cocircular(CSphmomentum & borderless_cone, │ │ │ │ │ 00196 │ │ │ │ │ std::list & border_list); │ │ │ │ │ 00197 │ │ │ │ │ 00204 │ │ │ │ │ void test_stability(CSphmomentum & candidate, │ │ │ │ │ 00205 │ │ │ │ │ const std::vector & border_vect); │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.41 siscone.cpp │ │ │ │ │ - │ │ │ │ │ 00206 │ │ │ │ │ 00213 │ │ │ │ │ void compute_cone_contents(); │ │ │ │ │ 00214 │ │ │ │ │ 00220 │ │ │ │ │ void recompute_cone_contents(); │ │ │ │ │ 00221 │ │ │ │ │ @@ -23568,31 +23556,31 @@ │ │ │ │ │ 00033 #include │ │ │ │ │ 00034 #include │ │ │ │ │ 00035 #include │ │ │ │ │ 00036 │ │ │ │ │ 00037 namespace siscone{ │ │ │ │ │ 00038 using namespace std; │ │ │ │ │ 00039 │ │ │ │ │ -00040 /*************************************************************** │ │ │ │ │ -00041 * Csiscone implementation │ │ │ │ │ -* │ │ │ │ │ -00042 * final class: gather everything to compute the jet contents. * │ │ │ │ │ -00043 * │ │ │ │ │ -* │ │ │ │ │ -00044 * This is the class user should use. │ │ │ │ │ -* │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 259 │ │ │ │ │ │ │ │ │ │ 260 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ +00040 /*************************************************************** │ │ │ │ │ +00041 * Csiscone implementation │ │ │ │ │ +* │ │ │ │ │ +00042 * final class: gather everything to compute the jet contents. * │ │ │ │ │ +00043 * │ │ │ │ │ +* │ │ │ │ │ +00044 * This is the class user should use. │ │ │ │ │ +* │ │ │ │ │ 00045 * It computes the jet contents of a list of particles │ │ │ │ │ * │ │ │ │ │ 00046 * given a cone radius and a threshold for splitting/merging. * │ │ │ │ │ 00047 ***************************************************************/ │ │ │ │ │ 00048 │ │ │ │ │ 00049 // default ctor │ │ │ │ │ 00050 //-------------00051 Csiscone::Csiscone(){ │ │ │ │ │ @@ -23710,28 +23698,28 @@ │ │ │ │ │ 00123 │ │ │ │ │ add_protocones(&protocones, R2, _ptmin); │ │ │ │ │ 00124 │ │ │ │ │ protocones_list.push_back(protocones); │ │ │ │ │ 00125 #ifdef DEBUG_STABLE_CONES │ │ │ │ │ 00126 │ │ │ │ │ nb_hash_cones_total += nb_hash_cones; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.41 siscone.cpp │ │ │ │ │ + │ │ │ │ │ 00127 │ │ │ │ │ nb_hash_occupied_total += nb_hash_occupied; │ │ │ │ │ 00128 #endif │ │ │ │ │ 00129 │ │ │ │ │ } else { │ │ │ │ │ 00130 │ │ │ │ │ // no new protocone: leave │ │ │ │ │ 00131 │ │ │ │ │ finished=true; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.41 siscone.cpp │ │ │ │ │ - │ │ │ │ │ 00132 │ │ │ │ │ } │ │ │ │ │ 00133 │ │ │ │ │ 00134 │ │ │ │ │ _n_pass_max--; │ │ │ │ │ 00135 │ │ │ │ │ } while ((!finished) && (n_left>0) && (_n_pass_max!=0)); │ │ │ │ │ @@ -23858,30 +23846,30 @@ │ │ │ │ │ the scale choice for the split-merge procedure │ │ │ │ │ 00211 * │ │ │ │ │ NOTE: using pt leads to IR unsafety for some events with momentum │ │ │ │ │ 00212 * │ │ │ │ │ conservation. So we strongly advise not to change the default │ │ │ │ │ 00213 * │ │ │ │ │ value. │ │ │ │ │ -00214 * return the number of jets found, -1 if recomputation not allowed. │ │ │ │ │ -00215 ********************************************************************/ │ │ │ │ │ -00216 int Csiscone::recompute_jets(double _f, double _ptmin, │ │ │ │ │ -00217 │ │ │ │ │ -Esplit_merge_scale _split_merge_scale){ │ │ │ │ │ -00218 │ │ │ │ │ -if (!rerun_allowed) │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 261 │ │ │ │ │ │ │ │ │ │ 262 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ +00214 * return the number of jets found, -1 if recomputation not allowed. │ │ │ │ │ +00215 ********************************************************************/ │ │ │ │ │ +00216 int Csiscone::recompute_jets(double _f, double _ptmin, │ │ │ │ │ +00217 │ │ │ │ │ +Esplit_merge_scale _split_merge_scale){ │ │ │ │ │ +00218 │ │ │ │ │ +if (!rerun_allowed) │ │ │ │ │ 00219 │ │ │ │ │ return -1; │ │ │ │ │ 00220 │ │ │ │ │ 00221 │ │ │ │ │ ptcomparison.split_merge_scale = _split_merge_scale; │ │ │ │ │ 00222 │ │ │ │ │ 00223 │ │ │ │ │ @@ -24001,29 +23989,27 @@ │ │ │ │ │ 00290 string siscone_version(){ │ │ │ │ │ 00291 │ │ │ │ │ return SISCONE_VERSION; │ │ │ │ │ 00292 } │ │ │ │ │ 00293 │ │ │ │ │ 00294 } │ │ │ │ │ │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.42 siscone.cpp │ │ │ │ │ + │ │ │ │ │ 5.42 │ │ │ │ │ │ │ │ │ │ siscone.cpp │ │ │ │ │ │ │ │ │ │ 00001 │ │ │ │ │ 00002 // File: siscone.cpp │ │ │ │ │ -00003 // Description: source file for the main SISCone class │ │ │ │ │ - │ │ │ │ │ // │ │ │ │ │ +00003 // Description: source file for the main SISCone class │ │ │ │ │ // │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.42 siscone.cpp │ │ │ │ │ - │ │ │ │ │ 00004 // This file is part of the SISCone project. │ │ │ │ │ // │ │ │ │ │ 00005 // WARNING: this is not the main SISCone trunk but │ │ │ │ │ // │ │ │ │ │ 00006 // │ │ │ │ │ an adaptation to spherical coordinates │ │ │ │ │ // │ │ │ │ │ @@ -24137,33 +24123,33 @@ │ │ │ │ │ 00083 │ │ │ │ │ Esplit_merge_scale _split_merge_scale){ │ │ │ │ │ 00084 │ │ │ │ │ // make sure things are initialised │ │ │ │ │ 00085 │ │ │ │ │ _initialise_if_needed(); │ │ │ │ │ 00086 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +263 │ │ │ │ │ + │ │ │ │ │ + 264 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00087 │ │ │ │ │ // run some general safety tests (NB: f will be checked in split-merge) │ │ │ │ │ 00088 │ │ │ │ │ if (_radius <= 0.0 || _radius >= 0.5*M_PI) { │ │ │ │ │ 00089 │ │ │ │ │ ostringstream message; │ │ │ │ │ 00090 │ │ │ │ │ message « "Illegal value for cone radius, R = " « _radius │ │ │ │ │ 00091 │ │ │ │ │ « " (legal values are 0flush(); │ │ │ │ │ @@ -24592,27 +24578,29 @@ │ │ │ │ │ 00055 │ │ │ │ │ 00076 │ │ │ │ │ int compute_jets(std::vector &_particles, double _radius, double _f, │ │ │ │ │ 00077 │ │ │ │ │ int _n_pass_max=0, double _ptmin=0.0, │ │ │ │ │ 00078 │ │ │ │ │ Esplit_merge_scale _split_merge_scale=SM_pttilde); │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.44 siscone.h │ │ │ │ │ + │ │ │ │ │ +267 │ │ │ │ │ + │ │ │ │ │ 00079 │ │ │ │ │ 00097 │ │ │ │ │ int compute_jets_progressive_removal(std::vector &_particles, double _radius, │ │ │ │ │ 00098 │ │ │ │ │ int _n_pass_max=0, double _ptmin=0.0, │ │ │ │ │ 00099 │ │ │ │ │ Esplit_merge_scale _ordering_scale=SM_pttilde); │ │ │ │ │ 00100 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.44 siscone.h │ │ │ │ │ - │ │ │ │ │ 00113 │ │ │ │ │ int recompute_jets(double _f, double _ptmin = 0.0, │ │ │ │ │ 00114 │ │ │ │ │ Esplit_merge_scale _split_merge_scale=SM_pttilde); │ │ │ │ │ 00115 │ │ │ │ │ 00117 │ │ │ │ │ std::vector > protocones_list; │ │ │ │ │ @@ -24671,15 +24659,14 @@ │ │ │ │ │ an adaptation to spherical coordinates │ │ │ │ │ // │ │ │ │ │ 00008 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ // │ │ │ │ │ 00009 // │ │ │ │ │ // │ │ │ │ │ 00010 // Copyright (c) 2006-2008 Gavin Salam and Gregory Soyez │ │ │ │ │ -// │ │ │ │ │ 00011 // │ │ │ │ │ // │ │ │ │ │ 00012 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ // │ │ │ │ │ 00013 // it under the terms of the GNU General Public License as published by │ │ │ │ │ // │ │ │ │ │ 00014 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ @@ -24721,31 +24708,31 @@ │ │ │ │ │ 00050 class CSphsiscone : public CSphstable_cones, public CSphsplit_merge{ │ │ │ │ │ 00051 public: │ │ │ │ │ 00053 │ │ │ │ │ CSphsiscone(); │ │ │ │ │ 00054 │ │ │ │ │ 00056 │ │ │ │ │ ~CSphsiscone(); │ │ │ │ │ -00057 │ │ │ │ │ -00076 │ │ │ │ │ -int compute_jets(std::vector &_particles, double _radius, double _f, │ │ │ │ │ -00077 │ │ │ │ │ -int _n_pass_max=0, double _Emin=0.0, │ │ │ │ │ -00078 │ │ │ │ │ -Esplit_merge_scale _split_merge_scale=SM_Etilde); │ │ │ │ │ -00079 │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ -267 │ │ │ │ │ +// │ │ │ │ │ │ │ │ │ │ 268 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ +00057 │ │ │ │ │ +00076 │ │ │ │ │ +int compute_jets(std::vector &_particles, double _radius, double _f, │ │ │ │ │ +00077 │ │ │ │ │ +int _n_pass_max=0, double _Emin=0.0, │ │ │ │ │ +00078 │ │ │ │ │ +Esplit_merge_scale _split_merge_scale=SM_Etilde); │ │ │ │ │ +00079 │ │ │ │ │ 00094 │ │ │ │ │ int compute_jets_progressive_removal(std::vector &_particles, double _radius, │ │ │ │ │ 00095 │ │ │ │ │ int _n_pass_max=0, double _Emin=0.0, │ │ │ │ │ 00096 │ │ │ │ │ Esplit_merge_scale _ordering_scale=SM_Etilde); │ │ │ │ │ 00097 │ │ │ │ │ @@ -24793,31 +24780,751 @@ │ │ │ │ │ 00170 std::string siscone_version(); │ │ │ │ │ 00171 │ │ │ │ │ 00172 } │ │ │ │ │ 00173 #endif │ │ │ │ │ │ │ │ │ │ 5.45 │ │ │ │ │ │ │ │ │ │ +split_merge.h │ │ │ │ │ + │ │ │ │ │ +00001 // -*- C++ -*00003 // File: split_merge.h │ │ │ │ │ +// │ │ │ │ │ +00004 // Description: header file for splitting/merging (contains the CJet class) // │ │ │ │ │ +00005 // This file is part of the SISCone project. │ │ │ │ │ +// │ │ │ │ │ +00006 // WARNING: this is not the main SISCone trunk but │ │ │ │ │ +// │ │ │ │ │ +00007 // │ │ │ │ │ +an adaptation to spherical coordinates │ │ │ │ │ +// │ │ │ │ │ +00008 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ +// │ │ │ │ │ +00009 // │ │ │ │ │ +// │ │ │ │ │ +00010 // Copyright (c) 2006-2008 Gavin Salam and Gregory Soyez │ │ │ │ │ +00011 // │ │ │ │ │ +// │ │ │ │ │ +00012 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ +// │ │ │ │ │ +00013 // it under the terms of the GNU General Public License as published by │ │ │ │ │ +// │ │ │ │ │ +00014 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ +// │ │ │ │ │ +00015 // (at your option) any later version. │ │ │ │ │ +// │ │ │ │ │ +00016 // │ │ │ │ │ +// │ │ │ │ │ +00017 // This program is distributed in the hope that it will be useful, │ │ │ │ │ +// │ │ │ │ │ +00018 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +// │ │ │ │ │ +00019 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ +// │ │ │ │ │ +00020 // GNU General Public License for more details. │ │ │ │ │ +// │ │ │ │ │ +00021 // │ │ │ │ │ +// │ │ │ │ │ +00022 // You should have received a copy of the GNU General Public License │ │ │ │ │ +// │ │ │ │ │ +00023 // along with this program; if not, write to the Free Software │ │ │ │ │ +// │ │ │ │ │ +00024 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ +00025 // │ │ │ │ │ +// │ │ │ │ │ +00026 // $Revision:: 404 │ │ │ │ │ +$// │ │ │ │ │ +00027 // $Date:: 2016-05-22 12:14:42 +0200 (Sun, 22 May 2016) │ │ │ │ │ +$// │ │ │ │ │ +00029 │ │ │ │ │ +00030 #ifndef __SPH_SPLIT_MERGE_H__ │ │ │ │ │ +00031 #define __SPH_SPLIT_MERGE_H__ │ │ │ │ │ +00032 │ │ │ │ │ +00033 #include │ │ │ │ │ +00034 #include │ │ │ │ │ +00035 #include "geom_2d.h" │ │ │ │ │ +00036 #include "momentum.h" │ │ │ │ │ +00037 #include │ │ │ │ │ +00038 #include │ │ │ │ │ + │ │ │ │ │ +// │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.45 split_merge.h │ │ │ │ │ + │ │ │ │ │ +269 │ │ │ │ │ + │ │ │ │ │ +00039 #include │ │ │ │ │ +00040 #include │ │ │ │ │ +00041 #include │ │ │ │ │ +00042 │ │ │ │ │ +00043 namespace siscone_spherical{ │ │ │ │ │ +00044 │ │ │ │ │ +00045 const int CJET_INEXISTENT_PASS = -2; │ │ │ │ │ +00046 │ │ │ │ │ +00056 class CSphjet{ │ │ │ │ │ +00057 public: │ │ │ │ │ +00059 │ │ │ │ │ +CSphjet(); │ │ │ │ │ +00060 │ │ │ │ │ +00062 │ │ │ │ │ +~CSphjet(); │ │ │ │ │ +00063 │ │ │ │ │ +00064 │ │ │ │ │ +CSphmomentum v; │ │ │ │ │ +00065 │ │ │ │ │ +double E_tilde; │ │ │ │ │ +00066 │ │ │ │ │ +int n; │ │ │ │ │ +00067 │ │ │ │ │ +std::vector contents; │ │ │ │ │ +00068 │ │ │ │ │ +00080 │ │ │ │ │ +double sm_var2; │ │ │ │ │ +00081 │ │ │ │ │ +00083 │ │ │ │ │ +CSphtheta_phi_range range; │ │ │ │ │ +00084 │ │ │ │ │ +00089 │ │ │ │ │ +int pass; │ │ │ │ │ +00090 }; │ │ │ │ │ +00091 │ │ │ │ │ +00094 │ │ │ │ │ +00096 bool jets_E_less(const CSphjet &j1, const CSphjet &j2); │ │ │ │ │ +00097 │ │ │ │ │ +00098 │ │ │ │ │ +00106 enum Esplit_merge_scale { │ │ │ │ │ +00107 │ │ │ │ │ +SM_E, │ │ │ │ │ +00108 │ │ │ │ │ +SM_Etilde │ │ │ │ │ +00109 }; │ │ │ │ │ +00110 │ │ │ │ │ +00112 std::string split_merge_scale_name(Esplit_merge_scale sms); │ │ │ │ │ +00113 │ │ │ │ │ +00119 class CSphsplit_merge_ptcomparison{ │ │ │ │ │ +00120 public: │ │ │ │ │ +00122 │ │ │ │ │ +CSphsplit_merge_ptcomparison() : │ │ │ │ │ +00123 │ │ │ │ │ +particles(0), split_merge_scale(SM_Etilde){}; │ │ │ │ │ +00124 │ │ │ │ │ +00126 │ │ │ │ │ +std::string SM_scale_name() const { │ │ │ │ │ +00127 │ │ │ │ │ +return split_merge_scale_name(split_merge_scale);} │ │ │ │ │ +00128 │ │ │ │ │ +00129 │ │ │ │ │ +std::vector * particles; │ │ │ │ │ +00130 │ │ │ │ │ +std::vector * particles_norm2; │ │ │ │ │ +00131 │ │ │ │ │ +00133 │ │ │ │ │ +bool operator()(const CSphjet &jet1, const CSphjet &jet2) const; │ │ │ │ │ +00134 │ │ │ │ │ +00146 │ │ │ │ │ +void get_difference(const CSphjet &j1, const CSphjet &j2, CSphmomentum *v, double *E_tilde) const; │ │ │ │ │ +00147 │ │ │ │ │ +00158 │ │ │ │ │ +Esplit_merge_scale split_merge_scale; │ │ │ │ │ +00159 }; │ │ │ │ │ +00160 │ │ │ │ │ +00161 │ │ │ │ │ +00162 // iterator types │ │ │ │ │ +00164 typedef std::multiset::iterator │ │ │ │ │ +cjet_iterator; │ │ │ │ │ +00165 │ │ │ │ │ +00167 typedef std::vector::iterator jet_iterator; │ │ │ │ │ +00168 │ │ │ │ │ +00169 │ │ │ │ │ +00170 │ │ │ │ │ +00175 class CSphsplit_merge{ │ │ │ │ │ +00176 public: │ │ │ │ │ +00178 │ │ │ │ │ +CSphsplit_merge(); │ │ │ │ │ +00179 │ │ │ │ │ +00181 │ │ │ │ │ +~CSphsplit_merge(); │ │ │ │ │ +00182 │ │ │ │ │ +00183 │ │ │ │ │ +00185 │ │ │ │ │ +// initialisation functions // │ │ │ │ │ +00187 │ │ │ │ │ +00196 │ │ │ │ │ +int init(std::vector &_particles, std::vector *protocones, double R2, │ │ │ │ │ +double Emin=0.0); │ │ │ │ │ +00197 │ │ │ │ │ +00203 │ │ │ │ │ +int init_particles(std::vector &_particles); │ │ │ │ │ +00204 │ │ │ │ │ +00208 │ │ │ │ │ +int init_pleft(); │ │ │ │ │ +00209 │ │ │ │ │ +00221 │ │ │ │ │ +inline int set_E_weighted_splitting(bool _use_E_weighted_splitting){ │ │ │ │ │ +00222 │ │ │ │ │ +use_E_weighted_splitting = _use_E_weighted_splitting; │ │ │ │ │ +00223 │ │ │ │ │ +return 0; │ │ │ │ │ +00224 │ │ │ │ │ +} │ │ │ │ │ +00225 │ │ │ │ │ +00227 │ │ │ │ │ +// cleaning functions // │ │ │ │ │ +00229 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 270 │ │ │ │ │ + │ │ │ │ │ +00231 │ │ │ │ │ +00232 │ │ │ │ │ +00234 │ │ │ │ │ +00235 │ │ │ │ │ +00237 │ │ │ │ │ +00239 │ │ │ │ │ +00245 │ │ │ │ │ +00246 │ │ │ │ │ +00248 │ │ │ │ │ +00249 │ │ │ │ │ +00254 │ │ │ │ │ +00255 │ │ │ │ │ +00266 │ │ │ │ │ +00267 │ │ │ │ │ +00268 │ │ │ │ │ +00269 │ │ │ │ │ +00270 │ │ │ │ │ +00275 │ │ │ │ │ +00276 │ │ │ │ │ +00277 │ │ │ │ │ +00278 │ │ │ │ │ +00280 │ │ │ │ │ +00281 │ │ │ │ │ +00282 │ │ │ │ │ +00284 │ │ │ │ │ +00286 │ │ │ │ │ +00296 │ │ │ │ │ +00297 │ │ │ │ │ +00305 │ │ │ │ │ +00306 │ │ │ │ │ +00317 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ +int partial_clear(); │ │ │ │ │ +int full_clear(); │ │ │ │ │ +// user-defined stable-cone ordering // │ │ │ │ │ +class Cuser_scale_base{ │ │ │ │ │ +public: │ │ │ │ │ +virtual ~Cuser_scale_base(){} │ │ │ │ │ +virtual double operator()(const CSphjet & jet) const = 0; │ │ │ │ │ +virtual bool is_larger(const CSphjet & a, const CSphjet & b) const{ │ │ │ │ │ +return (a.sm_var2 > b.sm_var2); │ │ │ │ │ +} │ │ │ │ │ +}; │ │ │ │ │ +void set_user_scale(const Cuser_scale_base * user_scale_in){ │ │ │ │ │ +_user_scale = user_scale_in; │ │ │ │ │ +} │ │ │ │ │ +const Cuser_scale_base * user_scale() const { return _user_scale; } │ │ │ │ │ +// main parts of the algorithm // │ │ │ │ │ +int merge_collinear_and_remove_soft(); │ │ │ │ │ +int add_protocones(std::vector *protocones, double R2, double Emin=0.0); │ │ │ │ │ +int add_hardest_protocone_to_jets(std::vector *protocones, double R2, double │ │ │ │ │ +Emin=0.0); │ │ │ │ │ + │ │ │ │ │ +00318 │ │ │ │ │ +00328 │ │ │ │ │ +int perform(double overlap_tshold, double Emin=0.0); │ │ │ │ │ +00329 │ │ │ │ │ +00330 │ │ │ │ │ +00332 │ │ │ │ │ +// save and debug functions // │ │ │ │ │ +00334 │ │ │ │ │ +00337 │ │ │ │ │ +int save_contents(FILE *flux); │ │ │ │ │ +00338 │ │ │ │ │ +00340 │ │ │ │ │ +int show(); │ │ │ │ │ +00341 │ │ │ │ │ +00342 │ │ │ │ │ +// particle information │ │ │ │ │ +00343 │ │ │ │ │ +int n; │ │ │ │ │ +00344 │ │ │ │ │ +std::vector particles; │ │ │ │ │ +00345 │ │ │ │ │ +std::vector particles_norm2; │ │ │ │ │ +00346 │ │ │ │ │ +int n_left; │ │ │ │ │ +00347 │ │ │ │ │ +std::vector p_remain; │ │ │ │ │ +00348 │ │ │ │ │ +std::vector p_uncol_hard; │ │ │ │ │ +00349 │ │ │ │ │ +int n_pass; │ │ │ │ │ +00350 │ │ │ │ │ +00354 │ │ │ │ │ +double most_ambiguous_split; │ │ │ │ │ +00355 │ │ │ │ │ +00356 │ │ │ │ │ +// jets information │ │ │ │ │ +00357 │ │ │ │ │ +std::vector jets; │ │ │ │ │ +00358 │ │ │ │ │ +00359 │ │ │ │ │ +// working entries │ │ │ │ │ +00360 │ │ │ │ │ +int *indices; │ │ │ │ │ +00361 │ │ │ │ │ +int idx_size; │ │ │ │ │ +00362 │ │ │ │ │ +00371 │ │ │ │ │ +bool merge_identical_protocones; │ │ │ │ │ +00372 │ │ │ │ │ +00374 │ │ │ │ │ +CSphsplit_merge_ptcomparison ptcomparison; │ │ │ │ │ +00375 │ │ │ │ │ +00382 │ │ │ │ │ +double SM_var2_hardest_cut_off; │ │ │ │ │ +00383 │ │ │ │ │ +00391 │ │ │ │ │ +double stable_cone_soft_E2_cutoff; │ │ │ │ │ +00392 │ │ │ │ │ +00393 private: │ │ │ │ │ +00401 │ │ │ │ │ +bool get_overlap(const CSphjet &j1, const CSphjet &j2, double *v); │ │ │ │ │ +00402 │ │ │ │ │ +00403 │ │ │ │ │ +00415 │ │ │ │ │ +bool split(cjet_iterator &it_j1, cjet_iterator &it_j2); │ │ │ │ │ +00416 │ │ │ │ │ +00425 │ │ │ │ │ +bool merge(cjet_iterator &it_j1, cjet_iterator &it_j2); │ │ │ │ │ +00426 │ │ │ │ │ +00433 │ │ │ │ │ +bool insert(CSphjet &jet); │ │ │ │ │ +00434 │ │ │ │ │ +00441 │ │ │ │ │ +double get_sm_var2(CSphmomentum &v, double &E_tilde); │ │ │ │ │ +00442 │ │ │ │ │ +00444 │ │ │ │ │ +void compute_Etilde(CSphjet &j); │ │ │ │ │ +00445 │ │ │ │ │ +00446 │ │ │ │ │ +// jet information │ │ │ │ │ +00448 #ifdef SISCONE_USES_UNIQUE_PTR_AS_AUTO_PTR │ │ │ │ │ +00449 │ │ │ │ │ +std::unique_ptr > candidates; │ │ │ │ │ +00450 #else │ │ │ │ │ +00451 │ │ │ │ │ +std::auto_ptr > candidates; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.46 split_merge.h │ │ │ │ │ + │ │ │ │ │ +00452 #endif │ │ │ │ │ +00453 │ │ │ │ │ +00455 │ │ │ │ │ +double E_min; │ │ │ │ │ +00456 │ │ │ │ │ +00462 │ │ │ │ │ +bool use_E_weighted_splitting; │ │ │ │ │ +00463 │ │ │ │ │ +00466 │ │ │ │ │ +const Cuser_scale_base *_user_scale; │ │ │ │ │ +00467 │ │ │ │ │ +00468 #ifdef ALLOW_MERGE_IDENTICAL_PROTOCONES │ │ │ │ │ +00470 │ │ │ │ │ +std::set cand_refs; │ │ │ │ │ +00471 #endif │ │ │ │ │ +00472 }; │ │ │ │ │ +00473 │ │ │ │ │ +00474 } │ │ │ │ │ +00475 │ │ │ │ │ +00476 │ │ │ │ │ +00477 #endif │ │ │ │ │ + │ │ │ │ │ +5.46 │ │ │ │ │ + │ │ │ │ │ +split_merge.h │ │ │ │ │ + │ │ │ │ │ +00001 // -*- C++ -*00003 // File: split_merge.h │ │ │ │ │ +// │ │ │ │ │ +00004 // Description: header file for splitting/merging (contains the CJet class) // │ │ │ │ │ +00005 // This file is part of the SISCone project. │ │ │ │ │ +// │ │ │ │ │ +00006 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ +// │ │ │ │ │ +00007 // │ │ │ │ │ +// │ │ │ │ │ +00008 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ +// │ │ │ │ │ +00009 // │ │ │ │ │ +// │ │ │ │ │ +00010 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ +// │ │ │ │ │ +00011 // it under the terms of the GNU General Public License as published by │ │ │ │ │ +// │ │ │ │ │ +00012 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ +// │ │ │ │ │ +00013 // (at your option) any later version. │ │ │ │ │ +// │ │ │ │ │ +00014 // │ │ │ │ │ +// │ │ │ │ │ +00015 // This program is distributed in the hope that it will be useful, │ │ │ │ │ +// │ │ │ │ │ +00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ +// │ │ │ │ │ +00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ +// │ │ │ │ │ +00018 // GNU General Public License for more details. │ │ │ │ │ +// │ │ │ │ │ +00019 // │ │ │ │ │ +// │ │ │ │ │ +00020 // You should have received a copy of the GNU General Public License │ │ │ │ │ +// │ │ │ │ │ +00021 // along with this program; if not, write to the Free Software │ │ │ │ │ +// │ │ │ │ │ +00022 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ +00023 // │ │ │ │ │ +// │ │ │ │ │ +00024 // $Revision:: 405 │ │ │ │ │ +$// │ │ │ │ │ +00025 // $Date:: 2016-05-23 20:15:02 +0200 (Mon, 23 May 2016) │ │ │ │ │ +$// │ │ │ │ │ +00027 │ │ │ │ │ +00028 #ifndef __SPLIT_MERGE_H__ │ │ │ │ │ +00029 #define __SPLIT_MERGE_H__ │ │ │ │ │ +00030 │ │ │ │ │ +00031 #include │ │ │ │ │ +00032 #include "defines.h" │ │ │ │ │ +00033 #include "geom_2d.h" │ │ │ │ │ +00034 #include "momentum.h" │ │ │ │ │ +00035 #include │ │ │ │ │ +00036 #include │ │ │ │ │ +00037 #include │ │ │ │ │ +00038 #include │ │ │ │ │ +00039 #include │ │ │ │ │ +00040 │ │ │ │ │ +00041 namespace siscone{ │ │ │ │ │ +00042 │ │ │ │ │ +00043 const int CJET_INEXISTENT_PASS = -2; │ │ │ │ │ +00044 │ │ │ │ │ +00054 class Cjet{ │ │ │ │ │ +00055 public: │ │ │ │ │ +00057 │ │ │ │ │ +Cjet(); │ │ │ │ │ +00058 │ │ │ │ │ +00060 │ │ │ │ │ +~Cjet(); │ │ │ │ │ +00061 │ │ │ │ │ +00062 │ │ │ │ │ +Cmomentum v; │ │ │ │ │ +00063 │ │ │ │ │ +double pt_tilde; │ │ │ │ │ +00064 │ │ │ │ │ +int n; │ │ │ │ │ +00065 │ │ │ │ │ +std::vector contents; │ │ │ │ │ +00066 │ │ │ │ │ +00073 │ │ │ │ │ +double sm_var2; │ │ │ │ │ +00074 │ │ │ │ │ +00076 │ │ │ │ │ +Ceta_phi_range range; │ │ │ │ │ +00077 │ │ │ │ │ +00082 │ │ │ │ │ +int pass; │ │ │ │ │ +00083 }; │ │ │ │ │ +00084 │ │ │ │ │ +00086 bool jets_pt_less(const Cjet &j1, const Cjet &j2); │ │ │ │ │ +00087 │ │ │ │ │ +00088 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +271 │ │ │ │ │ + │ │ │ │ │ + 272 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ +00096 enum Esplit_merge_scale { │ │ │ │ │ +00097 │ │ │ │ │ +SM_pt, │ │ │ │ │ +00098 │ │ │ │ │ +SM_Et, │ │ │ │ │ +00100 │ │ │ │ │ +SM_mt, │ │ │ │ │ +00102 │ │ │ │ │ +SM_pttilde │ │ │ │ │ +00104 }; │ │ │ │ │ +00105 │ │ │ │ │ +00107 std::string split_merge_scale_name(Esplit_merge_scale sms); │ │ │ │ │ +00108 │ │ │ │ │ +00116 class Csplit_merge_ptcomparison{ │ │ │ │ │ +00117 public: │ │ │ │ │ +00119 │ │ │ │ │ +Csplit_merge_ptcomparison() : │ │ │ │ │ +00120 │ │ │ │ │ +particles(0), split_merge_scale(SM_pttilde){}; │ │ │ │ │ +00121 │ │ │ │ │ +00123 │ │ │ │ │ +std::string SM_scale_name() const { │ │ │ │ │ +00124 │ │ │ │ │ +return split_merge_scale_name(split_merge_scale);} │ │ │ │ │ +00125 │ │ │ │ │ +00126 │ │ │ │ │ +std::vector * particles; │ │ │ │ │ +00127 │ │ │ │ │ +std::vector * pt; │ │ │ │ │ +00128 │ │ │ │ │ +00130 │ │ │ │ │ +bool operator()(const Cjet &jet1, const Cjet &jet2) const; │ │ │ │ │ +00131 │ │ │ │ │ +00143 │ │ │ │ │ +void get_difference(const Cjet &j1, const Cjet &j2, Cmomentum *v, double *pt_tilde) const; │ │ │ │ │ +00144 │ │ │ │ │ +00163 │ │ │ │ │ +Esplit_merge_scale split_merge_scale; │ │ │ │ │ +00164 }; │ │ │ │ │ +00165 │ │ │ │ │ +00166 │ │ │ │ │ +00167 // iterator types │ │ │ │ │ +00169 typedef std::multiset::iterator cjet_iterator; │ │ │ │ │ +00170 │ │ │ │ │ +00172 typedef std::vector::iterator jet_iterator; │ │ │ │ │ +00173 │ │ │ │ │ +00174 │ │ │ │ │ +00175 │ │ │ │ │ +00180 class Csplit_merge{ │ │ │ │ │ +00181 public: │ │ │ │ │ +00183 │ │ │ │ │ +Csplit_merge(); │ │ │ │ │ +00184 │ │ │ │ │ +00186 │ │ │ │ │ +~Csplit_merge(); │ │ │ │ │ +00187 │ │ │ │ │ +00188 │ │ │ │ │ +00190 │ │ │ │ │ +// initialisation functions // │ │ │ │ │ +00192 │ │ │ │ │ +00201 │ │ │ │ │ +int init(std::vector &_particles, std::vector *protocones, double R2, double │ │ │ │ │ +ptmin=0.0); │ │ │ │ │ +00202 │ │ │ │ │ +00208 │ │ │ │ │ +int init_particles(std::vector &_particles); │ │ │ │ │ +00209 │ │ │ │ │ +00213 │ │ │ │ │ +int init_pleft(); │ │ │ │ │ +00214 │ │ │ │ │ +00226 │ │ │ │ │ +inline int set_pt_weighted_splitting(bool _use_pt_weighted_splitting){ │ │ │ │ │ +00227 │ │ │ │ │ +use_pt_weighted_splitting = _use_pt_weighted_splitting; │ │ │ │ │ +00228 │ │ │ │ │ +return 0; │ │ │ │ │ +00229 │ │ │ │ │ +} │ │ │ │ │ +00230 │ │ │ │ │ +00232 │ │ │ │ │ +// cleaning functions // │ │ │ │ │ +00234 │ │ │ │ │ +00236 │ │ │ │ │ +int partial_clear(); │ │ │ │ │ +00237 │ │ │ │ │ +00239 │ │ │ │ │ +int full_clear(); │ │ │ │ │ +00240 │ │ │ │ │ +00242 │ │ │ │ │ +// user-defined stable-cone ordering // │ │ │ │ │ +00244 │ │ │ │ │ +00250 │ │ │ │ │ +class Cuser_scale_base{ │ │ │ │ │ +00251 │ │ │ │ │ +public: │ │ │ │ │ +00253 │ │ │ │ │ +virtual ~Cuser_scale_base(){} │ │ │ │ │ +00254 │ │ │ │ │ +00259 │ │ │ │ │ +virtual double operator()(const Cjet & jet) const = 0; │ │ │ │ │ +00260 │ │ │ │ │ +00271 │ │ │ │ │ +virtual bool is_larger(const Cjet & a, const Cjet & b) const{ │ │ │ │ │ +00272 │ │ │ │ │ +return (a.sm_var2 > b.sm_var2); │ │ │ │ │ +00273 │ │ │ │ │ +} │ │ │ │ │ +00274 │ │ │ │ │ +}; │ │ │ │ │ +00275 │ │ │ │ │ +00280 │ │ │ │ │ +void set_user_scale(const Cuser_scale_base * user_scale_in){ │ │ │ │ │ +00281 │ │ │ │ │ +_user_scale = user_scale_in; │ │ │ │ │ +00282 │ │ │ │ │ +} │ │ │ │ │ +00283 │ │ │ │ │ +00285 │ │ │ │ │ +const Cuser_scale_base * user_scale() const { return _user_scale; } │ │ │ │ │ +00286 │ │ │ │ │ +00287 │ │ │ │ │ +00289 │ │ │ │ │ +// main parts of the algorithm // │ │ │ │ │ +00291 │ │ │ │ │ +00299 │ │ │ │ │ +int merge_collinear_and_remove_soft(); │ │ │ │ │ +00300 │ │ │ │ │ +00308 │ │ │ │ │ +int add_protocones(std::vector *protocones, double R2, double ptmin=0.0); │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.47 split_merge.cpp │ │ │ │ │ + │ │ │ │ │ +273 │ │ │ │ │ + │ │ │ │ │ +00309 │ │ │ │ │ +00320 │ │ │ │ │ +int add_hardest_protocone_to_jets(std::vector *protocones, double R2, double ptmin=0.0); │ │ │ │ │ +00321 │ │ │ │ │ +00331 │ │ │ │ │ +int perform(double overlap_tshold, double ptmin=0.0); │ │ │ │ │ +00332 │ │ │ │ │ +00333 │ │ │ │ │ +00335 │ │ │ │ │ +// save and debug functions // │ │ │ │ │ +00337 │ │ │ │ │ +00340 │ │ │ │ │ +int save_contents(FILE *flux); │ │ │ │ │ +00341 │ │ │ │ │ +00343 │ │ │ │ │ +int show(); │ │ │ │ │ +00344 │ │ │ │ │ +00345 │ │ │ │ │ +// particle information │ │ │ │ │ +00346 │ │ │ │ │ +int n; │ │ │ │ │ +00347 │ │ │ │ │ +std::vector particles; │ │ │ │ │ +00348 │ │ │ │ │ +std::vector pt; │ │ │ │ │ +00349 │ │ │ │ │ +int n_left; │ │ │ │ │ +00350 │ │ │ │ │ +std::vector p_remain; │ │ │ │ │ +00351 │ │ │ │ │ +std::vector p_uncol_hard; │ │ │ │ │ +00352 │ │ │ │ │ +int n_pass; │ │ │ │ │ +00353 │ │ │ │ │ +00357 │ │ │ │ │ +double most_ambiguous_split; │ │ │ │ │ +00358 │ │ │ │ │ +00359 │ │ │ │ │ +// jets information │ │ │ │ │ +00360 │ │ │ │ │ +std::vector jets; │ │ │ │ │ +00361 │ │ │ │ │ +00362 │ │ │ │ │ +// working entries │ │ │ │ │ +00363 │ │ │ │ │ +int *indices; │ │ │ │ │ +00364 │ │ │ │ │ +int idx_size; │ │ │ │ │ +00365 │ │ │ │ │ +00374 │ │ │ │ │ +bool merge_identical_protocones; │ │ │ │ │ +00375 │ │ │ │ │ +00377 │ │ │ │ │ +Csplit_merge_ptcomparison ptcomparison; │ │ │ │ │ +00378 │ │ │ │ │ +00385 │ │ │ │ │ +double SM_var2_hardest_cut_off; │ │ │ │ │ +00386 │ │ │ │ │ +00394 │ │ │ │ │ +double stable_cone_soft_pt2_cutoff; │ │ │ │ │ +00395 │ │ │ │ │ +00396 private: │ │ │ │ │ +00404 │ │ │ │ │ +bool get_overlap(const Cjet &j1, const Cjet &j2, double *v); │ │ │ │ │ +00405 │ │ │ │ │ +00406 │ │ │ │ │ +00418 │ │ │ │ │ +bool split(cjet_iterator &it_j1, cjet_iterator &it_j2); │ │ │ │ │ +00419 │ │ │ │ │ +00428 │ │ │ │ │ +bool merge(cjet_iterator &it_j1, cjet_iterator &it_j2); │ │ │ │ │ +00429 │ │ │ │ │ +00436 │ │ │ │ │ +bool insert(Cjet &jet); │ │ │ │ │ +00437 │ │ │ │ │ +00444 │ │ │ │ │ +double get_sm_var2(Cmomentum &v, double &pt_tilde); │ │ │ │ │ +00445 │ │ │ │ │ +00446 │ │ │ │ │ +// jet information │ │ │ │ │ +00448 #ifdef SISCONE_USES_UNIQUE_PTR_AS_AUTO_PTR │ │ │ │ │ +00449 │ │ │ │ │ +std::unique_ptr > candidates; │ │ │ │ │ +00450 #else │ │ │ │ │ +00451 │ │ │ │ │ +std::auto_ptr > candidates; │ │ │ │ │ +00452 #endif │ │ │ │ │ +00453 │ │ │ │ │ +00455 │ │ │ │ │ +double pt_min2; │ │ │ │ │ +00456 │ │ │ │ │ +00462 │ │ │ │ │ +bool use_pt_weighted_splitting; │ │ │ │ │ +00463 │ │ │ │ │ +00466 │ │ │ │ │ +const Cuser_scale_base *_user_scale; │ │ │ │ │ +00467 │ │ │ │ │ +00468 #ifdef ALLOW_MERGE_IDENTICAL_PROTOCONES │ │ │ │ │ +00470 │ │ │ │ │ +std::set cand_refs; │ │ │ │ │ +00471 #endif │ │ │ │ │ +00472 }; │ │ │ │ │ +00473 │ │ │ │ │ +00474 } │ │ │ │ │ +00475 │ │ │ │ │ +00476 │ │ │ │ │ +00477 #endif │ │ │ │ │ + │ │ │ │ │ +5.47 │ │ │ │ │ + │ │ │ │ │ split_merge.cpp │ │ │ │ │ │ │ │ │ │ 00001 │ │ │ │ │ 00002 // File: split_merge.cpp │ │ │ │ │ -// │ │ │ │ │ -00003 // Description: source file for splitting/merging (contains the CJet class) // │ │ │ │ │ +00003 // Description: source file for splitting/merging (contains the CJet class) │ │ │ │ │ 00004 // This file is part of the SISCone project. │ │ │ │ │ -// │ │ │ │ │ 00005 // WARNING: this is not the main SISCone trunk but │ │ │ │ │ -// │ │ │ │ │ 00006 // │ │ │ │ │ an adaptation to spherical coordinates │ │ │ │ │ -// │ │ │ │ │ 00007 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ -// │ │ │ │ │ 00008 // │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ // │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ +// │ │ │ │ │ + │ │ │ │ │ + 274 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00009 // Copyright (c) 2006-2008 Gavin Salam and Gregory Soyez │ │ │ │ │ // │ │ │ │ │ 00010 // │ │ │ │ │ // │ │ │ │ │ 00011 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ // │ │ │ │ │ 00012 // it under the terms of the GNU General Public License as published by │ │ │ │ │ @@ -24861,19 +25568,14 @@ │ │ │ │ │ 00036 #include │ │ │ │ │ 00037 #include │ │ │ │ │ 00038 │ │ │ │ │ 00039 namespace siscone_spherical{ │ │ │ │ │ 00040 │ │ │ │ │ 00041 using namespace std; │ │ │ │ │ 00042 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.45 split_merge.cpp │ │ │ │ │ - │ │ │ │ │ 00043 /******************************************************** │ │ │ │ │ 00044 * class CSphjet implementation │ │ │ │ │ * │ │ │ │ │ 00045 * real Jet information. │ │ │ │ │ * │ │ │ │ │ 00046 * This class contains information for one single jet. * │ │ │ │ │ 00047 * That is, first, its momentum carrying information │ │ │ │ │ @@ -24929,14 +25631,19 @@ │ │ │ │ │ 00089 // │ │ │ │ │ 00090 // NB: there is a potential issue in momentum-conserving events, │ │ │ │ │ 00091 // whereby the harder of two jets becomes ill-defined when a soft │ │ │ │ │ 00092 // particle is emitted --- this may have a knock-on effect on │ │ │ │ │ 00093 // subsequent split-merge steps in cases with sufficiently large R │ │ │ │ │ 00094 // (but we don’t know what the limit is...) │ │ │ │ │ 00095 //-----------------------------------------------------------------00096 bool CSphsplit_merge_ptcomparison::operator ()(const CSphjet &jet1, const CSphjet &jet2) const{ │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.47 split_merge.cpp │ │ │ │ │ + │ │ │ │ │ 00097 │ │ │ │ │ double q1, q2; │ │ │ │ │ 00098 │ │ │ │ │ 00099 │ │ │ │ │ // compute the value for comparison for both jets │ │ │ │ │ 00100 │ │ │ │ │ // This depends on the choice of variable (mt is the default) │ │ │ │ │ @@ -24987,23 +25694,14 @@ │ │ │ │ │ // depending on the choice of ordering variable, set the result │ │ │ │ │ 00127 │ │ │ │ │ switch (split_merge_scale){ │ │ │ │ │ 00128 │ │ │ │ │ case SM_Etilde: │ │ │ │ │ 00129 │ │ │ │ │ qdiff = E_tilde_sum*E_tilde_difference; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -269 │ │ │ │ │ - │ │ │ │ │ - 270 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00130 │ │ │ │ │ break; │ │ │ │ │ 00131 │ │ │ │ │ case SM_E: │ │ │ │ │ 00132 │ │ │ │ │ qdiff = sum.E*difference.E; │ │ │ │ │ 00133 │ │ │ │ │ @@ -25087,21 +25785,31 @@ │ │ │ │ │ 00182 │ │ │ │ │ 00183 │ │ │ │ │ // compute overlap │ │ │ │ │ 00184 │ │ │ │ │ // at the same time, we store union in indices │ │ │ │ │ 00185 │ │ │ │ │ // note tat for Etilde, we’ll add the direct energy contributino at the end │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +275 │ │ │ │ │ + │ │ │ │ │ + 276 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00186 │ │ │ │ │ -do{ │ │ │ │ │ 00187 │ │ │ │ │ -if (j1.contents[i1]==j2.contents[i2]) { │ │ │ │ │ 00188 │ │ │ │ │ -const CSphmomentum & p = (*particles)[j1.contents[i1]]; │ │ │ │ │ 00189 │ │ │ │ │ + │ │ │ │ │ +do{ │ │ │ │ │ +if (j1.contents[i1]==j2.contents[i2]) { │ │ │ │ │ +const CSphmomentum & p = (*particles)[j1.contents[i1]]; │ │ │ │ │ (*E_tilde) += │ │ │ │ │ p.E*((norm2_cross_product3(p,jet1_axis)-norm2_cross_product3(p,jet2_axis))/(*particles_norm2)[j1.contents[i1]]); │ │ │ │ │ 00190 │ │ │ │ │ i1++; │ │ │ │ │ 00191 │ │ │ │ │ i2++; │ │ │ │ │ 00192 │ │ │ │ │ @@ -25151,19 +25859,14 @@ │ │ │ │ │ while (i2 < j2.n) { │ │ │ │ │ 00215 │ │ │ │ │ const CSphmomentum &p = (*particles)[j2.contents[i2]]; │ │ │ │ │ 00216 │ │ │ │ │ (*v) -= p; │ │ │ │ │ 00217 │ │ │ │ │ (*E_tilde) -= p.E*norm2_cross_product3(p,jet2_axis)/(*particles_norm2)[j2.contents[i2]]; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.45 split_merge.cpp │ │ │ │ │ - │ │ │ │ │ 00218 │ │ │ │ │ i2++; │ │ │ │ │ 00219 │ │ │ │ │ } │ │ │ │ │ 00220 │ │ │ │ │ 00221 │ │ │ │ │ // add the direct energy contribution to Etilde │ │ │ │ │ @@ -25230,14 +25933,19 @@ │ │ │ │ │ 00266 // - _particles list of particles │ │ │ │ │ 00267 // - protocones list of protocones (initial jet candidates) │ │ │ │ │ 00268 // - R2 │ │ │ │ │ cone radius (squared) │ │ │ │ │ 00269 // - Emin │ │ │ │ │ minimal energy allowed for jets │ │ │ │ │ 00270 //------------------------------------------------------------00271 int CSphsplit_merge::init(vector & /*_particles*/, vector *protocones, │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.47 split_merge.cpp │ │ │ │ │ + │ │ │ │ │ double R2, double Emin){ │ │ │ │ │ 00272 │ │ │ │ │ // browse protocones │ │ │ │ │ 00273 │ │ │ │ │ return add_protocones(protocones, R2, Emin); │ │ │ │ │ 00274 } │ │ │ │ │ 00275 │ │ │ │ │ @@ -25281,23 +25989,14 @@ │ │ │ │ │ // set up the list of particles left. │ │ │ │ │ 00300 │ │ │ │ │ init_pleft(); │ │ │ │ │ 00301 │ │ │ │ │ 00302 │ │ │ │ │ indices = new int[n]; │ │ │ │ │ 00303 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -271 │ │ │ │ │ - │ │ │ │ │ - 272 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00304 │ │ │ │ │ return 0; │ │ │ │ │ 00305 } │ │ │ │ │ 00306 │ │ │ │ │ 00307 │ │ │ │ │ 00308 // build initial list of remaining particles │ │ │ │ │ 00309 //-----------------------------------------00310 int CSphsplit_merge::init_pleft(){ │ │ │ │ │ @@ -25386,14 +26085,23 @@ │ │ │ │ │ return 0; │ │ │ │ │ 00353 } │ │ │ │ │ 00354 │ │ │ │ │ 00355 │ │ │ │ │ 00356 // partial clearance │ │ │ │ │ 00357 // we want to keep │ │ │ │ │ particle list and indices │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +277 │ │ │ │ │ + │ │ │ │ │ + 278 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00358 // for future usage, so do not clear it ! │ │ │ │ │ 00359 // this is done in full_clear │ │ │ │ │ 00360 //---------------------------------------00361 int CSphsplit_merge::partial_clear(){ │ │ │ │ │ 00362 │ │ │ │ │ // release jets │ │ │ │ │ 00363 │ │ │ │ │ 00364 │ │ │ │ │ @@ -25432,21 +26140,14 @@ │ │ │ │ │ 00387 │ │ │ │ │ partial_clear(); │ │ │ │ │ 00388 │ │ │ │ │ 00389 │ │ │ │ │ // clear previously allocated memory │ │ │ │ │ 00390 │ │ │ │ │ if (indices != NULL){ │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.45 split_merge.cpp │ │ │ │ │ - │ │ │ │ │ -273 │ │ │ │ │ - │ │ │ │ │ 00391 │ │ │ │ │ delete[] indices; │ │ │ │ │ 00392 │ │ │ │ │ } │ │ │ │ │ 00393 │ │ │ │ │ particles.clear(); │ │ │ │ │ 00394 │ │ │ │ │ @@ -25530,14 +26231,21 @@ │ │ │ │ │ //p_sorted[j].build_thetaphi(); │ │ │ │ │ 00441 │ │ │ │ │ p_sorted[j].build_norm(); │ │ │ │ │ 00442 │ │ │ │ │ // set collinearity test to true │ │ │ │ │ 00443 │ │ │ │ │ collinear = true; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.47 split_merge.cpp │ │ │ │ │ + │ │ │ │ │ +279 │ │ │ │ │ + │ │ │ │ │ 00444 │ │ │ │ │ } │ │ │ │ │ 00445 │ │ │ │ │ j++; │ │ │ │ │ 00446 │ │ │ │ │ } │ │ │ │ │ 00447 │ │ │ │ │ @@ -25584,21 +26292,14 @@ │ │ │ │ │ 00473 │ │ │ │ │ double R = sqrt(R2); │ │ │ │ │ 00474 │ │ │ │ │ tan2R = tan(R); │ │ │ │ │ 00475 │ │ │ │ │ tan2R *= tan2R; │ │ │ │ │ 00476 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 274 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00477 #ifdef DEBUG_SPLIT_MERGE │ │ │ │ │ 00478 │ │ │ │ │ cout « "particle list: "; │ │ │ │ │ 00479 │ │ │ │ │ for (int i2=0;i2is_larger(jet_candidate, jet) │ │ │ │ │ 00647 │ │ │ │ │ : ptcomparison(jet_candidate, jet))){ │ │ │ │ │ 00648 │ │ │ │ │ jet = jet_candidate; │ │ │ │ │ 00649 │ │ │ │ │ found_jet = true; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 276 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00650 │ │ │ │ │ } │ │ │ │ │ 00651 │ │ │ │ │ } │ │ │ │ │ 00652 │ │ │ │ │ 00653 │ │ │ │ │ // make sure at least one of the jets has passed the selection │ │ │ │ │ @@ -26001,14 +26700,23 @@ │ │ │ │ │ 00700 │ │ │ │ │ // efficient] │ │ │ │ │ 00701 │ │ │ │ │ merge_collinear_and_remove_soft(); │ │ │ │ │ 00702 │ │ │ │ │ 00703 │ │ │ │ │ return 0; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +281 │ │ │ │ │ + │ │ │ │ │ + 282 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00704 } │ │ │ │ │ 00705 │ │ │ │ │ 00706 /* │ │ │ │ │ 00707 * really do the splitting and merging │ │ │ │ │ 00708 * At the end, the vector jets is filled with the jets found. │ │ │ │ │ 00709 * the ’contents’ field of each jets contains the indices │ │ │ │ │ 00710 * of the particles included in that jet. │ │ │ │ │ @@ -26052,19 +26760,14 @@ │ │ │ │ │ 00733 │ │ │ │ │ // the split--merge variable.) │ │ │ │ │ 00734 │ │ │ │ │ // Note that the square of the ovelap is used │ │ │ │ │ 00735 │ │ │ │ │ double overlap2; │ │ │ │ │ 00736 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.45 split_merge.cpp │ │ │ │ │ - │ │ │ │ │ 00737 │ │ │ │ │ // avoid to compute tshold*tshold at each overlap │ │ │ │ │ 00738 │ │ │ │ │ double overlap_tshold2 = overlap_tshold*overlap_tshold; │ │ │ │ │ 00739 │ │ │ │ │ 00740 │ │ │ │ │ do{ │ │ │ │ │ @@ -26151,14 +26854,19 @@ │ │ │ │ │ j2 = j1 = candidates->begin(); │ │ │ │ │ 00788 │ │ │ │ │ j2_relindex = 0; │ │ │ │ │ 00789 │ │ │ │ │ } │ │ │ │ │ 00790 │ │ │ │ │ } │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.47 split_merge.cpp │ │ │ │ │ + │ │ │ │ │ 00791 │ │ │ │ │ // watch out: split/merge might have caused new jets with E < │ │ │ │ │ 00792 │ │ │ │ │ // Emin to disappear, so the total number of jets may │ │ │ │ │ 00793 │ │ │ │ │ // have changed by more than expected and j2 might already by │ │ │ │ │ 00794 │ │ │ │ │ @@ -26210,23 +26918,14 @@ │ │ │ │ │ 00819 │ │ │ │ │ sort(jets.begin(), jets.end(), jets_E_less); │ │ │ │ │ 00820 #ifdef DEBUG_SPLIT_MERGE │ │ │ │ │ 00821 │ │ │ │ │ show(); │ │ │ │ │ 00822 #endif │ │ │ │ │ 00823 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -277 │ │ │ │ │ - │ │ │ │ │ - 278 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00824 │ │ │ │ │ return jets.size(); │ │ │ │ │ 00825 } │ │ │ │ │ 00826 │ │ │ │ │ 00827 │ │ │ │ │ 00828 │ │ │ │ │ 00829 // save the event on disk │ │ │ │ │ @@ -26307,14 +27006,23 @@ │ │ │ │ │ unsigned int phirange=j->range.phi_range; │ │ │ │ │ 00875 │ │ │ │ │ for (i2=0;i2<32;i2++) fprintf(stdout, "%d", (phirange&(1«i2)) » i2 ); │ │ │ │ │ 00876 │ │ │ │ │ fprintf(stdout, "\t"); │ │ │ │ │ 00877 │ │ │ │ │ unsigned int thetarange=j->range.theta_range; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +283 │ │ │ │ │ + │ │ │ │ │ + 284 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00878 │ │ │ │ │ for (i2=0;i2<32;i2++) fprintf(stdout, "%d", (thetarange&(1«i2)) » i2); │ │ │ │ │ 00879 │ │ │ │ │ fprintf(stdout, "\t"); │ │ │ │ │ 00880 │ │ │ │ │ 00881 │ │ │ │ │ for (i2=0;i2n;i2++) │ │ │ │ │ @@ -26364,19 +27072,14 @@ │ │ │ │ │ 00906 │ │ │ │ │ 00907 │ │ │ │ │ 00908 // get the overlap between 2 jets │ │ │ │ │ 00909 // - j1 │ │ │ │ │ first jet │ │ │ │ │ 00910 // - j2 │ │ │ │ │ second jet │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.45 split_merge.cpp │ │ │ │ │ - │ │ │ │ │ 00911 // - overlap2 returned overlap^2 (determined by the choice of SM variable) │ │ │ │ │ 00912 // return true if overlapping, false if disjoint │ │ │ │ │ 00913 //--------------------------------------------------------------------00914 bool CSphsplit_merge::get_overlap(const CSphjet &j1, const CSphjet &j2, double *overlap2){ │ │ │ │ │ 00915 │ │ │ │ │ // check if ranges overlap │ │ │ │ │ 00916 │ │ │ │ │ if (!is_range_overlap(j1.range,j2.range)) │ │ │ │ │ @@ -26466,14 +27169,19 @@ │ │ │ │ │ 00961 │ │ │ │ │ // assign the overlapping var as return variable │ │ │ │ │ 00962 │ │ │ │ │ (*overlap2) = sqr(v.E); //get_sm_var2(v, E_tilde); │ │ │ │ │ 00963 │ │ │ │ │ 00964 │ │ │ │ │ return is_overlap; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.47 split_merge.cpp │ │ │ │ │ + │ │ │ │ │ 00965 } │ │ │ │ │ 00966 │ │ │ │ │ 00967 │ │ │ │ │ 00968 │ │ │ │ │ 00969 // split the two given jet. │ │ │ │ │ 00970 // during this procedure, the jets j1 & j2 are replaced │ │ │ │ │ 00971 // by 2 new jets. Common particles are associted to the │ │ │ │ │ @@ -26517,23 +27225,14 @@ │ │ │ │ │ // "geometrical" distance is weighted by the inverse │ │ │ │ │ 00996 │ │ │ │ │ // of the E of the protojet │ │ │ │ │ 00997 │ │ │ │ │ // This is stored in E{1,2}_weight │ │ │ │ │ 00998 │ │ │ │ │ E1_weight = (use_E_weighted_splitting) ? 1.0/j1.v.E/j1.v.E : 1.0; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -279 │ │ │ │ │ - │ │ │ │ │ - 280 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00999 │ │ │ │ │ E2_weight = (use_E_weighted_splitting) ? 1.0/j2.v.E/j2.v.E : 1.0; │ │ │ │ │ 01000 │ │ │ │ │ 01001 │ │ │ │ │ // compute jet splitting │ │ │ │ │ 01002 │ │ │ │ │ do{ │ │ │ │ │ @@ -26629,14 +27328,23 @@ │ │ │ │ │ i1++; │ │ │ │ │ 01050 │ │ │ │ │ i2++; │ │ │ │ │ 01051 │ │ │ │ │ } │ │ │ │ │ 01052 │ │ │ │ │ } while ((i1erase(it_j1); │ │ │ │ │ 01085 │ │ │ │ │ candidates->erase(it_j2); │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.45 split_merge.cpp │ │ │ │ │ - │ │ │ │ │ 01086 │ │ │ │ │ 01087 │ │ │ │ │ // reinsert new ones │ │ │ │ │ 01088 │ │ │ │ │ insert(jet1); │ │ │ │ │ 01089 │ │ │ │ │ insert(jet2); │ │ │ │ │ @@ -26778,14 +27481,21 @@ │ │ │ │ │ 01142 │ │ │ │ │ // eventually check that no other candidate are present with the │ │ │ │ │ 01143 │ │ │ │ │ // same cone contents. We recall that this automatic merging of │ │ │ │ │ 01144 │ │ │ │ │ // identical protocones can lead to infrared-unsafe situations. │ │ │ │ │ 01145 #ifdef ALLOW_MERGE_IDENTICAL_PROTOCONES │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.48 split_merge.cpp │ │ │ │ │ + │ │ │ │ │ +287 │ │ │ │ │ + │ │ │ │ │ 01146 │ │ │ │ │ if ((merge_identical_protocones) && (!cand_refs.insert(jet.v.ref).second)) │ │ │ │ │ 01147 │ │ │ │ │ return false; │ │ │ │ │ 01148 #endif │ │ │ │ │ 01149 │ │ │ │ │ 01150 │ │ │ │ │ @@ -26831,23 +27541,14 @@ │ │ │ │ │ 01179 } │ │ │ │ │ 01180 │ │ │ │ │ 01181 │ │ │ │ │ 01182 │ │ │ │ │ 01184 void CSphsplit_merge::compute_Etilde(CSphjet &jet){ │ │ │ │ │ 01185 │ │ │ │ │ jet.v.build_norm(); │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -281 │ │ │ │ │ - │ │ │ │ │ - 282 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 01186 │ │ │ │ │ jet.E_tilde=0.0; │ │ │ │ │ 01187 │ │ │ │ │ CSph3vector jet_axis = jet.v; │ │ │ │ │ 01188 │ │ │ │ │ //if (jet.v._norm==0){ │ │ │ │ │ 01189 │ │ │ │ │ @@ -26870,15 +27571,15 @@ │ │ │ │ │ jet.E_tilde+=p.E*(1.0+norm2_cross_product3(p,jet_axis)/particles_norm2[*cont_it]); │ │ │ │ │ 01198 │ │ │ │ │ } │ │ │ │ │ 01199 } │ │ │ │ │ 01200 │ │ │ │ │ 01201 } │ │ │ │ │ │ │ │ │ │ -5.46 │ │ │ │ │ +5.48 │ │ │ │ │ │ │ │ │ │ split_merge.cpp │ │ │ │ │ │ │ │ │ │ 00001 │ │ │ │ │ 00002 // File: split_merge.cpp │ │ │ │ │ // │ │ │ │ │ 00003 // Description: source file for splitting/merging (contains the CJet class) // │ │ │ │ │ @@ -26927,14 +27628,21 @@ │ │ │ │ │ 00027 #include "split_merge.h" │ │ │ │ │ 00028 #include "siscone_error.h" │ │ │ │ │ 00029 #include "momentum.h" │ │ │ │ │ 00030 #include │ │ │ │ │ // for max │ │ │ │ │ 00031 #include │ │ │ │ │ 00032 #include │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 288 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00033 #include │ │ │ │ │ 00034 #include │ │ │ │ │ 00035 #include │ │ │ │ │ 00036 │ │ │ │ │ 00037 namespace siscone{ │ │ │ │ │ 00038 │ │ │ │ │ 00039 using namespace std; │ │ │ │ │ @@ -26969,19 +27677,14 @@ │ │ │ │ │ 00058 } │ │ │ │ │ 00059 │ │ │ │ │ 00060 // default dtor │ │ │ │ │ 00061 //-------------00062 Cjet::~Cjet(){ │ │ │ │ │ 00063 │ │ │ │ │ 00064 } │ │ │ │ │ 00065 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.46 split_merge.cpp │ │ │ │ │ - │ │ │ │ │ 00066 // ordering of jets in pt (e.g. used in final jets ordering) │ │ │ │ │ 00067 //----------------------------------------------------------00068 bool jets_pt_less(const Cjet &j1, const Cjet &j2){ │ │ │ │ │ 00069 │ │ │ │ │ return j1.v.perp2() > j2.v.perp2(); │ │ │ │ │ 00070 } │ │ │ │ │ 00071 │ │ │ │ │ 00072 │ │ │ │ │ @@ -27048,14 +27751,21 @@ │ │ │ │ │ double qdiff; │ │ │ │ │ 00117 │ │ │ │ │ Cmomentum sum = jet1.v ; │ │ │ │ │ 00118 │ │ │ │ │ sum += jet2.v; │ │ │ │ │ 00119 │ │ │ │ │ double pt_tilde_sum = jet1.pt_tilde + jet2.pt_tilde; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.48 split_merge.cpp │ │ │ │ │ + │ │ │ │ │ +289 │ │ │ │ │ + │ │ │ │ │ 00120 │ │ │ │ │ 00121 │ │ │ │ │ // depending on the choice of ordering variable, set the result │ │ │ │ │ 00122 │ │ │ │ │ switch (split_merge_scale){ │ │ │ │ │ 00123 │ │ │ │ │ case SM_mt: │ │ │ │ │ @@ -27110,23 +27820,14 @@ │ │ │ │ │ } │ │ │ │ │ 00148 #endif // EPSILON_SPLITMERGE │ │ │ │ │ 00149 │ │ │ │ │ 00150 │ │ │ │ │ return res; │ │ │ │ │ 00151 } │ │ │ │ │ 00152 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -283 │ │ │ │ │ - │ │ │ │ │ - 284 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00153 │ │ │ │ │ 00156 std::string split_merge_scale_name(Esplit_merge_scale sms) { │ │ │ │ │ 00157 │ │ │ │ │ switch(sms) { │ │ │ │ │ 00158 │ │ │ │ │ case SM_pt: │ │ │ │ │ 00159 │ │ │ │ │ @@ -27213,14 +27914,21 @@ │ │ │ │ │ 00204 │ │ │ │ │ } while ((i1(ptcomparison)); │ │ │ │ │ 00240 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.46 split_merge.cpp │ │ │ │ │ - │ │ │ │ │ -285 │ │ │ │ │ - │ │ │ │ │ 00241 │ │ │ │ │ // no hardest cut (col-unsafe) │ │ │ │ │ 00242 │ │ │ │ │ SM_var2_hardest_cut_off = -numeric_limits::max(); │ │ │ │ │ 00243 │ │ │ │ │ 00244 │ │ │ │ │ // no pt cutoff for the particles to put in p_uncol_hard │ │ │ │ │ @@ -27348,14 +28049,19 @@ │ │ │ │ │ 00290 │ │ │ │ │ ptcomparison.pt = &pt; │ │ │ │ │ 00291 │ │ │ │ │ 00292 │ │ │ │ │ // set up the list of particles left. │ │ │ │ │ 00293 │ │ │ │ │ init_pleft(); │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.48 split_merge.cpp │ │ │ │ │ + │ │ │ │ │ 00294 │ │ │ │ │ 00295 │ │ │ │ │ indices = new int[n]; │ │ │ │ │ 00296 │ │ │ │ │ 00297 │ │ │ │ │ return 0; │ │ │ │ │ 00298 } │ │ │ │ │ @@ -27403,21 +28109,14 @@ │ │ │ │ │ // check if rapidity is not infinite or ill-defined │ │ │ │ │ 00324 │ │ │ │ │ if (fabs(particles[i].pz) < (particles[i].E)){ │ │ │ │ │ 00325 │ │ │ │ │ p_remain.push_back(particles[i]); │ │ │ │ │ 00326 │ │ │ │ │ // set up parent index for tracability │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 286 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00327 │ │ │ │ │ p_remain[j].parent_index = i; │ │ │ │ │ 00328 │ │ │ │ │ // left particles are marked with a 1 │ │ │ │ │ 00329 │ │ │ │ │ // IMPORTANT NOTE: the meaning of index in p_remain is │ │ │ │ │ 00330 │ │ │ │ │ @@ -27502,14 +28201,23 @@ │ │ │ │ │ 00376 #ifdef ALLOW_MERGE_IDENTICAL_PROTOCONES │ │ │ │ │ 00377 │ │ │ │ │ if (merge_identical_protocones) │ │ │ │ │ 00378 │ │ │ │ │ cand_refs.clear(); │ │ │ │ │ 00379 #endif │ │ │ │ │ 00380 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +291 │ │ │ │ │ + │ │ │ │ │ + 292 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00381 │ │ │ │ │ p_remain.clear(); │ │ │ │ │ 00382 │ │ │ │ │ 00383 │ │ │ │ │ return 0; │ │ │ │ │ 00384 } │ │ │ │ │ 00385 │ │ │ │ │ @@ -27547,21 +28255,14 @@ │ │ │ │ │ bool collinear; │ │ │ │ │ 00410 │ │ │ │ │ double dphi; │ │ │ │ │ 00411 │ │ │ │ │ 00412 │ │ │ │ │ p_uncol_hard.clear(); │ │ │ │ │ 00413 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.46 split_merge.cpp │ │ │ │ │ - │ │ │ │ │ -287 │ │ │ │ │ - │ │ │ │ │ 00414 │ │ │ │ │ // we first sort the particles according to their rapidity │ │ │ │ │ 00415 │ │ │ │ │ for (i=0;isize()==0) │ │ │ │ │ 00470 │ │ │ │ │ return 1; │ │ │ │ │ 00471 │ │ │ │ │ 00472 │ │ │ │ │ @@ -27712,21 +28418,14 @@ │ │ │ │ │ if (dy>M_PI) │ │ │ │ │ 00498 │ │ │ │ │ dy -= twopi; │ │ │ │ │ 00499 │ │ │ │ │ if (dx*dx+dy*dyparent_index); │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 288 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00501 │ │ │ │ │ jet.v+= *v; │ │ │ │ │ 00502 │ │ │ │ │ jet.pt_tilde+= pt[v->parent_index]; │ │ │ │ │ 00503 │ │ │ │ │ v->index=0; │ │ │ │ │ 00504 │ │ │ │ │ @@ -27812,14 +28511,23 @@ │ │ │ │ │ cout « endl; │ │ │ │ │ 00551 #endif │ │ │ │ │ 00552 │ │ │ │ │ n_left = j; │ │ │ │ │ 00553 │ │ │ │ │ p_remain.resize(j); │ │ │ │ │ 00554 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +293 │ │ │ │ │ + │ │ │ │ │ + 294 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00555 │ │ │ │ │ merge_collinear_and_remove_soft(); │ │ │ │ │ 00556 │ │ │ │ │ 00557 │ │ │ │ │ return 0; │ │ │ │ │ 00558 } │ │ │ │ │ 00559 │ │ │ │ │ @@ -27861,19 +28569,14 @@ │ │ │ │ │ 00583 │ │ │ │ │ return 1; │ │ │ │ │ 00584 │ │ │ │ │ 00585 │ │ │ │ │ pt_min2 = ptmin*ptmin; │ │ │ │ │ 00586 │ │ │ │ │ R = sqrt(R2); │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.46 split_merge.cpp │ │ │ │ │ - │ │ │ │ │ 00587 │ │ │ │ │ 00588 │ │ │ │ │ // browse protocones │ │ │ │ │ 00589 │ │ │ │ │ // for each of them, build the list of particles in them │ │ │ │ │ 00590 │ │ │ │ │ for (vector::iterator p_it = protocones->begin();p_it != protocones->end();p_it++){ │ │ │ │ │ @@ -27967,14 +28670,19 @@ │ │ │ │ │ if (_user_scale) { │ │ │ │ │ 00638 │ │ │ │ │ // sm_var2 is the signed square of the user scale returned │ │ │ │ │ 00639 │ │ │ │ │ // for the jet candidate │ │ │ │ │ 00640 │ │ │ │ │ jet_candidate.sm_var2 = (*_user_scale)(jet_candidate); │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.48 split_merge.cpp │ │ │ │ │ + │ │ │ │ │ 00641 │ │ │ │ │ jet_candidate.sm_var2 *= abs(jet_candidate.sm_var2); │ │ │ │ │ 00642 │ │ │ │ │ } else { │ │ │ │ │ 00643 │ │ │ │ │ jet_candidate.sm_var2 = get_sm_var2(jet_candidate.v, jet_candidate.pt_tilde); │ │ │ │ │ 00644 │ │ │ │ │ @@ -28026,23 +28734,14 @@ │ │ │ │ │ for (int index=0;index=1.0 || overlap_tshold <= 0) { │ │ │ │ │ 00727 │ │ │ │ │ ostringstream message; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +295 │ │ │ │ │ + │ │ │ │ │ + 296 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00728 │ │ │ │ │ message « "Illegal value for overlap_tshold, f = " « overlap_tshold; │ │ │ │ │ 00729 │ │ │ │ │ message « " (legal values are 0size()>0); │ │ │ │ │ 00814 │ │ │ │ │ 00815 │ │ │ │ │ // sort jets by pT │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.48 split_merge.cpp │ │ │ │ │ + │ │ │ │ │ 00816 │ │ │ │ │ sort(jets.begin(), jets.end(), jets_pt_less); │ │ │ │ │ 00817 #ifdef DEBUG_SPLIT_MERGE │ │ │ │ │ 00818 │ │ │ │ │ show(); │ │ │ │ │ 00819 #endif │ │ │ │ │ 00820 │ │ │ │ │ @@ -28338,23 +29046,14 @@ │ │ │ │ │ for (it_j = jets.begin(), i1=0 ; it_j != jets.end() ; it_j++, i1++){ │ │ │ │ │ 00846 │ │ │ │ │ j1 = &(*it_j); │ │ │ │ │ 00847 │ │ │ │ │ for (i2=0;i2n;i2++) │ │ │ │ │ 00848 │ │ │ │ │ fprintf(flux, "%f\t%f\t%e\t%d\t%d\n", │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -291 │ │ │ │ │ - │ │ │ │ │ - 292 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00849 │ │ │ │ │ particles[j1->contents[i2]].eta, particles[j1->contents[i2]].phi, │ │ │ │ │ 00850 │ │ │ │ │ particles[j1->contents[i2]].perp(), j1->contents[i2], i1); │ │ │ │ │ 00851 │ │ │ │ │ } │ │ │ │ │ 00852 │ │ │ │ │ @@ -28433,14 +29132,23 @@ │ │ │ │ │ return false; │ │ │ │ │ 00899 │ │ │ │ │ 00900 │ │ │ │ │ int i1,i2; │ │ │ │ │ 00901 │ │ │ │ │ bool is_overlap; │ │ │ │ │ 00902 │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +297 │ │ │ │ │ + │ │ │ │ │ + 298 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00903 │ │ │ │ │ // initialise │ │ │ │ │ 00904 │ │ │ │ │ i1=i2=idx_size=0; │ │ │ │ │ 00905 │ │ │ │ │ is_overlap = false; │ │ │ │ │ 00906 │ │ │ │ │ @@ -28497,19 +29205,14 @@ │ │ │ │ │ while (i1eta,v->phi); │ │ │ │ │ 01007 │ │ │ │ │ -} else if (j1.contents[i1]>j2.contents[i2]){ │ │ │ │ │ 01008 │ │ │ │ │ -// particle i2 belong only to jet 2 │ │ │ │ │ 01009 │ │ │ │ │ -v = &(particles[j2.contents[i2]]); │ │ │ │ │ 01010 │ │ │ │ │ -jet2.contents.push_back(j2.contents[i2]); │ │ │ │ │ 01011 │ │ │ │ │ -jet2.v += *v; │ │ │ │ │ 01012 │ │ │ │ │ -jet2.pt_tilde += pt[j2.contents[i2]]; │ │ │ │ │ 01013 │ │ │ │ │ -i2++; │ │ │ │ │ 01014 │ │ │ │ │ -jet2.range.add_particle(v->eta,v->phi); │ │ │ │ │ 01015 │ │ │ │ │ -} else { // (j1.contents[i1]==j2.contents[i2]) │ │ │ │ │ 01016 │ │ │ │ │ -// common particle, decide which is the closest centre │ │ │ │ │ 01017 │ │ │ │ │ -v = &(particles[j1.contents[i1]]); │ │ │ │ │ 01018 │ │ │ │ │ 01019 │ │ │ │ │ -// distance w.r.t. centroid 1 │ │ │ │ │ 01020 │ │ │ │ │ -dx1 = eta1 - v->eta; │ │ │ │ │ 01021 │ │ │ │ │ -dy1 = fabs(phi1 - v->phi); │ │ │ │ │ 01022 │ │ │ │ │ -if (dy1>M_PI) │ │ │ │ │ 01023 │ │ │ │ │ -dy1 -= twopi; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -293 │ │ │ │ │ - │ │ │ │ │ - 294 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 01024 │ │ │ │ │ 01025 │ │ │ │ │ -// distance w.r.t. centroid 2 │ │ │ │ │ 01026 │ │ │ │ │ -dx2 = eta2 - v->eta; │ │ │ │ │ 01027 │ │ │ │ │ -dy2 = fabs(phi2 - v->phi); │ │ │ │ │ 01028 │ │ │ │ │ -if (dy2>M_PI) │ │ │ │ │ 01029 │ │ │ │ │ -dy2 -= twopi; │ │ │ │ │ 01030 │ │ │ │ │ 01031 │ │ │ │ │ -//? what when == ? │ │ │ │ │ 01032 │ │ │ │ │ -// When use_pt_weighted_splitting is activated, the │ │ │ │ │ 01033 │ │ │ │ │ -// "geometrical" distance is weighted by the inverse │ │ │ │ │ 01034 │ │ │ │ │ -// of the pt of the protojet │ │ │ │ │ 01035 │ │ │ │ │ -double d1sq = (dx1*dx1+dy1*dy1)*pt1_weight; │ │ │ │ │ 01036 │ │ │ │ │ -double d2sq = (dx2*dx2+dy2*dy2)*pt2_weight; │ │ │ │ │ 01037 │ │ │ │ │ -// do bookkeeping on most ambiguous split │ │ │ │ │ 01038 │ │ │ │ │ -if (fabs(d1sq-d2sq) < most_ambiguous_split) │ │ │ │ │ 01039 │ │ │ │ │ -most_ambiguous_split = fabs(d1sq-d2sq); │ │ │ │ │ 01040 │ │ │ │ │ 01041 │ │ │ │ │ -if (d1sqeta,v->phi); │ │ │ │ │ 01047 │ │ │ │ │ -} else { │ │ │ │ │ 01048 │ │ │ │ │ -// particle i2 belong only to jet 2 │ │ │ │ │ 01049 │ │ │ │ │ -jet2.contents.push_back(j2.contents[i2]); │ │ │ │ │ 01050 │ │ │ │ │ -jet2.v += *v; │ │ │ │ │ 01051 │ │ │ │ │ -jet2.pt_tilde += pt[j2.contents[i2]]; │ │ │ │ │ 01052 │ │ │ │ │ -jet2.range.add_particle(v->eta,v->phi); │ │ │ │ │ 01053 │ │ │ │ │ -} │ │ │ │ │ 01054 │ │ │ │ │ 01055 │ │ │ │ │ -i1++; │ │ │ │ │ 01056 │ │ │ │ │ -i2++; │ │ │ │ │ 01057 │ │ │ │ │ -} │ │ │ │ │ 01058 │ │ │ │ │ -} while ((i1eta,v->phi); │ │ │ │ │ 01067 │ │ │ │ │ -} │ │ │ │ │ 01068 │ │ │ │ │ -while (i2eta,v->phi); │ │ │ │ │ 01075 │ │ │ │ │ -} │ │ │ │ │ 01076 │ │ │ │ │ 01077 │ │ │ │ │ + │ │ │ │ │ +eta2 = tmp.eta; │ │ │ │ │ +phi2 = tmp.phi; │ │ │ │ │ +pt2_weight = (use_pt_weighted_splitting) ? 1.0/tmp.perp2() : 1.0; │ │ │ │ │ +jet1.v = jet2.v = Cmomentum(); │ │ │ │ │ +// compute jet splitting │ │ │ │ │ +do{ │ │ │ │ │ +if (j1.contents[i1]eta,v->phi); │ │ │ │ │ +} else if (j1.contents[i1]>j2.contents[i2]){ │ │ │ │ │ +// particle i2 belong only to jet 2 │ │ │ │ │ +v = &(particles[j2.contents[i2]]); │ │ │ │ │ +jet2.contents.push_back(j2.contents[i2]); │ │ │ │ │ +jet2.v += *v; │ │ │ │ │ +jet2.pt_tilde += pt[j2.contents[i2]]; │ │ │ │ │ +i2++; │ │ │ │ │ +jet2.range.add_particle(v->eta,v->phi); │ │ │ │ │ +} else { // (j1.contents[i1]==j2.contents[i2]) │ │ │ │ │ +// common particle, decide which is the closest centre │ │ │ │ │ +v = &(particles[j1.contents[i1]]); │ │ │ │ │ +// distance w.r.t. centroid 1 │ │ │ │ │ +dx1 = eta1 - v->eta; │ │ │ │ │ +dy1 = fabs(phi1 - v->phi); │ │ │ │ │ +if (dy1>M_PI) │ │ │ │ │ +dy1 -= twopi; │ │ │ │ │ +// distance w.r.t. centroid 2 │ │ │ │ │ +dx2 = eta2 - v->eta; │ │ │ │ │ +dy2 = fabs(phi2 - v->phi); │ │ │ │ │ +if (dy2>M_PI) │ │ │ │ │ +dy2 -= twopi; │ │ │ │ │ +//? what when == ? │ │ │ │ │ +// When use_pt_weighted_splitting is activated, the │ │ │ │ │ +// "geometrical" distance is weighted by the inverse │ │ │ │ │ +// of the pt of the protojet │ │ │ │ │ +double d1sq = (dx1*dx1+dy1*dy1)*pt1_weight; │ │ │ │ │ +double d2sq = (dx2*dx2+dy2*dy2)*pt2_weight; │ │ │ │ │ +// do bookkeeping on most ambiguous split │ │ │ │ │ +if (fabs(d1sq-d2sq) < most_ambiguous_split) │ │ │ │ │ +most_ambiguous_split = fabs(d1sq-d2sq); │ │ │ │ │ +if (d1sqeta,v->phi); │ │ │ │ │ +} else { │ │ │ │ │ +// particle i2 belong only to jet 2 │ │ │ │ │ +jet2.contents.push_back(j2.contents[i2]); │ │ │ │ │ +jet2.v += *v; │ │ │ │ │ +jet2.pt_tilde += pt[j2.contents[i2]]; │ │ │ │ │ +jet2.range.add_particle(v->eta,v->phi); │ │ │ │ │ +} │ │ │ │ │ +i1++; │ │ │ │ │ +i2++; │ │ │ │ │ +} │ │ │ │ │ +} while ((i1eta,v->phi); │ │ │ │ │ +} │ │ │ │ │ +while (i2eta,v->phi); │ │ │ │ │ +} │ │ │ │ │ // finalise jets │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +299 │ │ │ │ │ + │ │ │ │ │ + 300 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 01078 │ │ │ │ │ jet1.n = jet1.contents.size(); │ │ │ │ │ 01079 │ │ │ │ │ jet2.n = jet2.contents.size(); │ │ │ │ │ 01080 │ │ │ │ │ 01081 │ │ │ │ │ //jet1.range = j1.range; │ │ │ │ │ @@ -28816,21 +29525,14 @@ │ │ │ │ │ 01108 │ │ │ │ │ int i; │ │ │ │ │ 01109 │ │ │ │ │ 01110 │ │ │ │ │ // build new jet │ │ │ │ │ 01111 │ │ │ │ │ // note: particles within j1 & j2 have already been stored in indices │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.47 split_merge.h │ │ │ │ │ - │ │ │ │ │ -295 │ │ │ │ │ - │ │ │ │ │ 01112 │ │ │ │ │ for (i=0;i │ │ │ │ │ -00034 #include │ │ │ │ │ -00035 #include "geom_2d.h" │ │ │ │ │ -00036 #include "momentum.h" │ │ │ │ │ -00037 #include │ │ │ │ │ -00038 #include │ │ │ │ │ -00039 #include │ │ │ │ │ -00040 #include │ │ │ │ │ -00041 #include │ │ │ │ │ -00042 │ │ │ │ │ -00043 namespace siscone_spherical{ │ │ │ │ │ -00044 │ │ │ │ │ -00045 const int CJET_INEXISTENT_PASS = -2; │ │ │ │ │ -00046 │ │ │ │ │ -00056 class CSphjet{ │ │ │ │ │ -00057 public: │ │ │ │ │ -00059 │ │ │ │ │ -CSphjet(); │ │ │ │ │ -00060 │ │ │ │ │ -00062 │ │ │ │ │ -~CSphjet(); │ │ │ │ │ -00063 │ │ │ │ │ -00064 │ │ │ │ │ -CSphmomentum v; │ │ │ │ │ -00065 │ │ │ │ │ -double E_tilde; │ │ │ │ │ -00066 │ │ │ │ │ -int n; │ │ │ │ │ -00067 │ │ │ │ │ -std::vector contents; │ │ │ │ │ -00068 │ │ │ │ │ -00080 │ │ │ │ │ -double sm_var2; │ │ │ │ │ -00081 │ │ │ │ │ -00083 │ │ │ │ │ -CSphtheta_phi_range range; │ │ │ │ │ -00084 │ │ │ │ │ -00089 │ │ │ │ │ -int pass; │ │ │ │ │ -00090 }; │ │ │ │ │ -00091 │ │ │ │ │ -00094 │ │ │ │ │ -00096 bool jets_E_less(const CSphjet &j1, const CSphjet &j2); │ │ │ │ │ -00097 │ │ │ │ │ -00098 │ │ │ │ │ -00106 enum Esplit_merge_scale { │ │ │ │ │ -00107 │ │ │ │ │ -SM_E, │ │ │ │ │ -00108 │ │ │ │ │ -SM_Etilde │ │ │ │ │ -00109 }; │ │ │ │ │ -00110 │ │ │ │ │ -00112 std::string split_merge_scale_name(Esplit_merge_scale sms); │ │ │ │ │ -00113 │ │ │ │ │ -00119 class CSphsplit_merge_ptcomparison{ │ │ │ │ │ -00120 public: │ │ │ │ │ -00122 │ │ │ │ │ -CSphsplit_merge_ptcomparison() : │ │ │ │ │ -00123 │ │ │ │ │ -particles(0), split_merge_scale(SM_Etilde){}; │ │ │ │ │ -00124 │ │ │ │ │ -00126 │ │ │ │ │ -std::string SM_scale_name() const { │ │ │ │ │ -00127 │ │ │ │ │ -return split_merge_scale_name(split_merge_scale);} │ │ │ │ │ -00128 │ │ │ │ │ -00129 │ │ │ │ │ -std::vector * particles; │ │ │ │ │ -00130 │ │ │ │ │ -std::vector * particles_norm2; │ │ │ │ │ -00131 │ │ │ │ │ -00133 │ │ │ │ │ -bool operator()(const CSphjet &jet1, const CSphjet &jet2) const; │ │ │ │ │ -00134 │ │ │ │ │ -00146 │ │ │ │ │ -void get_difference(const CSphjet &j1, const CSphjet &j2, CSphmomentum *v, double *E_tilde) const; │ │ │ │ │ -00147 │ │ │ │ │ -00158 │ │ │ │ │ -Esplit_merge_scale split_merge_scale; │ │ │ │ │ -00159 }; │ │ │ │ │ -00160 │ │ │ │ │ -00161 │ │ │ │ │ -00162 // iterator types │ │ │ │ │ -00164 typedef std::multiset::iterator │ │ │ │ │ -cjet_iterator; │ │ │ │ │ -00165 │ │ │ │ │ -00167 typedef std::vector::iterator jet_iterator; │ │ │ │ │ -00168 │ │ │ │ │ -00169 │ │ │ │ │ -00170 │ │ │ │ │ -00175 class CSphsplit_merge{ │ │ │ │ │ -00176 public: │ │ │ │ │ -00178 │ │ │ │ │ -CSphsplit_merge(); │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.47 split_merge.h │ │ │ │ │ - │ │ │ │ │ -00179 │ │ │ │ │ -00181 │ │ │ │ │ -00182 │ │ │ │ │ -00183 │ │ │ │ │ -00185 │ │ │ │ │ -00187 │ │ │ │ │ -00196 │ │ │ │ │ -00197 │ │ │ │ │ -00203 │ │ │ │ │ -00204 │ │ │ │ │ -00208 │ │ │ │ │ -00209 │ │ │ │ │ -00221 │ │ │ │ │ -00222 │ │ │ │ │ -00223 │ │ │ │ │ -00224 │ │ │ │ │ -00225 │ │ │ │ │ -00227 │ │ │ │ │ -00229 │ │ │ │ │ -00231 │ │ │ │ │ -00232 │ │ │ │ │ -00234 │ │ │ │ │ -00235 │ │ │ │ │ -00237 │ │ │ │ │ -00239 │ │ │ │ │ -00245 │ │ │ │ │ -00246 │ │ │ │ │ -00248 │ │ │ │ │ -00249 │ │ │ │ │ -00254 │ │ │ │ │ -00255 │ │ │ │ │ -00266 │ │ │ │ │ -00267 │ │ │ │ │ -00268 │ │ │ │ │ -00269 │ │ │ │ │ -00270 │ │ │ │ │ -00275 │ │ │ │ │ -00276 │ │ │ │ │ -00277 │ │ │ │ │ -00278 │ │ │ │ │ -00280 │ │ │ │ │ -00281 │ │ │ │ │ -00282 │ │ │ │ │ -00284 │ │ │ │ │ -00286 │ │ │ │ │ -00296 │ │ │ │ │ -00297 │ │ │ │ │ -00305 │ │ │ │ │ -00306 │ │ │ │ │ -00317 │ │ │ │ │ -00318 │ │ │ │ │ -00328 │ │ │ │ │ -00329 │ │ │ │ │ -00330 │ │ │ │ │ -00332 │ │ │ │ │ -00334 │ │ │ │ │ -00337 │ │ │ │ │ -00338 │ │ │ │ │ -00340 │ │ │ │ │ -00341 │ │ │ │ │ -00342 │ │ │ │ │ -00343 │ │ │ │ │ -00344 │ │ │ │ │ -00345 │ │ │ │ │ -00346 │ │ │ │ │ -00347 │ │ │ │ │ -00348 │ │ │ │ │ -00349 │ │ │ │ │ -00350 │ │ │ │ │ -00354 │ │ │ │ │ -00355 │ │ │ │ │ -00356 │ │ │ │ │ -00357 │ │ │ │ │ -00358 │ │ │ │ │ -00359 │ │ │ │ │ -00360 │ │ │ │ │ -00361 │ │ │ │ │ -00362 │ │ │ │ │ -00371 │ │ │ │ │ -00372 │ │ │ │ │ -00374 │ │ │ │ │ -00375 │ │ │ │ │ -00382 │ │ │ │ │ -00383 │ │ │ │ │ -00391 │ │ │ │ │ - │ │ │ │ │ -297 │ │ │ │ │ - │ │ │ │ │ -~CSphsplit_merge(); │ │ │ │ │ - │ │ │ │ │ -// initialisation functions // │ │ │ │ │ -int init(std::vector &_particles, std::vector *protocones, double R2, │ │ │ │ │ -double Emin=0.0); │ │ │ │ │ -int init_particles(std::vector &_particles); │ │ │ │ │ -int init_pleft(); │ │ │ │ │ -inline int set_E_weighted_splitting(bool _use_E_weighted_splitting){ │ │ │ │ │ -use_E_weighted_splitting = _use_E_weighted_splitting; │ │ │ │ │ -return 0; │ │ │ │ │ -} │ │ │ │ │ -// cleaning functions // │ │ │ │ │ -int partial_clear(); │ │ │ │ │ -int full_clear(); │ │ │ │ │ -// user-defined stable-cone ordering // │ │ │ │ │ -class Cuser_scale_base{ │ │ │ │ │ -public: │ │ │ │ │ -virtual ~Cuser_scale_base(){} │ │ │ │ │ -virtual double operator()(const CSphjet & jet) const = 0; │ │ │ │ │ -virtual bool is_larger(const CSphjet & a, const CSphjet & b) const{ │ │ │ │ │ -return (a.sm_var2 > b.sm_var2); │ │ │ │ │ -} │ │ │ │ │ -}; │ │ │ │ │ -void set_user_scale(const Cuser_scale_base * user_scale_in){ │ │ │ │ │ -_user_scale = user_scale_in; │ │ │ │ │ -} │ │ │ │ │ -const Cuser_scale_base * user_scale() const { return _user_scale; } │ │ │ │ │ -// main parts of the algorithm // │ │ │ │ │ -int merge_collinear_and_remove_soft(); │ │ │ │ │ -int add_protocones(std::vector *protocones, double R2, double Emin=0.0); │ │ │ │ │ -int add_hardest_protocone_to_jets(std::vector *protocones, double R2, double │ │ │ │ │ -Emin=0.0); │ │ │ │ │ -int perform(double overlap_tshold, double Emin=0.0); │ │ │ │ │ - │ │ │ │ │ -// save and debug functions // │ │ │ │ │ -int save_contents(FILE *flux); │ │ │ │ │ -int show(); │ │ │ │ │ -// particle information │ │ │ │ │ -int n; │ │ │ │ │ -std::vector particles; │ │ │ │ │ -std::vector particles_norm2; │ │ │ │ │ -int n_left; │ │ │ │ │ -std::vector p_remain; │ │ │ │ │ -std::vector p_uncol_hard; │ │ │ │ │ -int n_pass; │ │ │ │ │ -double most_ambiguous_split; │ │ │ │ │ -// jets information │ │ │ │ │ -std::vector jets; │ │ │ │ │ -// working entries │ │ │ │ │ -int *indices; │ │ │ │ │ -int idx_size; │ │ │ │ │ -bool merge_identical_protocones; │ │ │ │ │ -CSphsplit_merge_ptcomparison ptcomparison; │ │ │ │ │ -double SM_var2_hardest_cut_off; │ │ │ │ │ -double stable_cone_soft_E2_cutoff; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 298 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ -00392 │ │ │ │ │ -00393 private: │ │ │ │ │ -00401 │ │ │ │ │ -bool get_overlap(const CSphjet &j1, const CSphjet &j2, double *v); │ │ │ │ │ -00402 │ │ │ │ │ -00403 │ │ │ │ │ -00415 │ │ │ │ │ -bool split(cjet_iterator &it_j1, cjet_iterator &it_j2); │ │ │ │ │ -00416 │ │ │ │ │ -00425 │ │ │ │ │ -bool merge(cjet_iterator &it_j1, cjet_iterator &it_j2); │ │ │ │ │ -00426 │ │ │ │ │ -00433 │ │ │ │ │ -bool insert(CSphjet &jet); │ │ │ │ │ -00434 │ │ │ │ │ -00441 │ │ │ │ │ -double get_sm_var2(CSphmomentum &v, double &E_tilde); │ │ │ │ │ -00442 │ │ │ │ │ -00444 │ │ │ │ │ -void compute_Etilde(CSphjet &j); │ │ │ │ │ -00445 │ │ │ │ │ -00446 │ │ │ │ │ -// jet information │ │ │ │ │ -00448 #ifdef SISCONE_USES_UNIQUE_PTR_AS_AUTO_PTR │ │ │ │ │ -00449 │ │ │ │ │ -std::unique_ptr > candidates; │ │ │ │ │ -00450 #else │ │ │ │ │ -00451 │ │ │ │ │ -std::auto_ptr > candidates; │ │ │ │ │ -00452 #endif │ │ │ │ │ -00453 │ │ │ │ │ -00455 │ │ │ │ │ -double E_min; │ │ │ │ │ -00456 │ │ │ │ │ -00462 │ │ │ │ │ -bool use_E_weighted_splitting; │ │ │ │ │ -00463 │ │ │ │ │ -00466 │ │ │ │ │ -const Cuser_scale_base *_user_scale; │ │ │ │ │ -00467 │ │ │ │ │ -00468 #ifdef ALLOW_MERGE_IDENTICAL_PROTOCONES │ │ │ │ │ -00470 │ │ │ │ │ -std::set cand_refs; │ │ │ │ │ -00471 #endif │ │ │ │ │ -00472 }; │ │ │ │ │ -00473 │ │ │ │ │ -00474 } │ │ │ │ │ -00475 │ │ │ │ │ -00476 │ │ │ │ │ -00477 #endif │ │ │ │ │ - │ │ │ │ │ -5.48 │ │ │ │ │ - │ │ │ │ │ -split_merge.h │ │ │ │ │ - │ │ │ │ │ -00001 // -*- C++ -*00003 // File: split_merge.h │ │ │ │ │ -// │ │ │ │ │ -00004 // Description: header file for splitting/merging (contains the CJet class) // │ │ │ │ │ -00005 // This file is part of the SISCone project. │ │ │ │ │ -// │ │ │ │ │ -00006 // For more details, see http://projects.hepforge.org/siscone │ │ │ │ │ -// │ │ │ │ │ -00007 // │ │ │ │ │ -// │ │ │ │ │ -00008 // Copyright (c) 2006 Gavin Salam and Gregory Soyez │ │ │ │ │ -// │ │ │ │ │ -00009 // │ │ │ │ │ -// │ │ │ │ │ -00010 // This program is free software; you can redistribute it and/or modify │ │ │ │ │ -// │ │ │ │ │ -00011 // it under the terms of the GNU General Public License as published by │ │ │ │ │ -// │ │ │ │ │ -00012 // the Free Software Foundation; either version 2 of the License, or │ │ │ │ │ -// │ │ │ │ │ -00013 // (at your option) any later version. │ │ │ │ │ -// │ │ │ │ │ -00014 // │ │ │ │ │ -// │ │ │ │ │ -00015 // This program is distributed in the hope that it will be useful, │ │ │ │ │ -// │ │ │ │ │ -00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of │ │ │ │ │ -// │ │ │ │ │ -00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the │ │ │ │ │ -// │ │ │ │ │ -00018 // GNU General Public License for more details. │ │ │ │ │ -// │ │ │ │ │ -00019 // │ │ │ │ │ -// │ │ │ │ │ -00020 // You should have received a copy of the GNU General Public License │ │ │ │ │ -// │ │ │ │ │ -00021 // along with this program; if not, write to the Free Software │ │ │ │ │ -// │ │ │ │ │ -00022 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // │ │ │ │ │ -00023 // │ │ │ │ │ -// │ │ │ │ │ -00024 // $Revision:: 405 │ │ │ │ │ -$// │ │ │ │ │ -00025 // $Date:: 2016-05-23 20:15:02 +0200 (Mon, 23 May 2016) │ │ │ │ │ -$// │ │ │ │ │ -00027 │ │ │ │ │ -00028 #ifndef __SPLIT_MERGE_H__ │ │ │ │ │ -00029 #define __SPLIT_MERGE_H__ │ │ │ │ │ -00030 │ │ │ │ │ -00031 #include │ │ │ │ │ -00032 #include "defines.h" │ │ │ │ │ -00033 #include "geom_2d.h" │ │ │ │ │ -00034 #include "momentum.h" │ │ │ │ │ -00035 #include │ │ │ │ │ -00036 #include │ │ │ │ │ -00037 #include │ │ │ │ │ -00038 #include │ │ │ │ │ -00039 #include │ │ │ │ │ -00040 │ │ │ │ │ -00041 namespace siscone{ │ │ │ │ │ -00042 │ │ │ │ │ -00043 const int CJET_INEXISTENT_PASS = -2; │ │ │ │ │ -00044 │ │ │ │ │ -00054 class Cjet{ │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.48 split_merge.h │ │ │ │ │ - │ │ │ │ │ -299 │ │ │ │ │ - │ │ │ │ │ -00055 public: │ │ │ │ │ -00057 │ │ │ │ │ -Cjet(); │ │ │ │ │ -00058 │ │ │ │ │ -00060 │ │ │ │ │ -~Cjet(); │ │ │ │ │ -00061 │ │ │ │ │ -00062 │ │ │ │ │ -Cmomentum v; │ │ │ │ │ -00063 │ │ │ │ │ -double pt_tilde; │ │ │ │ │ -00064 │ │ │ │ │ -int n; │ │ │ │ │ -00065 │ │ │ │ │ -std::vector contents; │ │ │ │ │ -00066 │ │ │ │ │ -00073 │ │ │ │ │ -double sm_var2; │ │ │ │ │ -00074 │ │ │ │ │ -00076 │ │ │ │ │ -Ceta_phi_range range; │ │ │ │ │ -00077 │ │ │ │ │ -00082 │ │ │ │ │ -int pass; │ │ │ │ │ -00083 }; │ │ │ │ │ -00084 │ │ │ │ │ -00086 bool jets_pt_less(const Cjet &j1, const Cjet &j2); │ │ │ │ │ -00087 │ │ │ │ │ -00088 │ │ │ │ │ -00096 enum Esplit_merge_scale { │ │ │ │ │ -00097 │ │ │ │ │ -SM_pt, │ │ │ │ │ -00098 │ │ │ │ │ -SM_Et, │ │ │ │ │ -00100 │ │ │ │ │ -SM_mt, │ │ │ │ │ -00102 │ │ │ │ │ -SM_pttilde │ │ │ │ │ -00104 }; │ │ │ │ │ -00105 │ │ │ │ │ -00107 std::string split_merge_scale_name(Esplit_merge_scale sms); │ │ │ │ │ -00108 │ │ │ │ │ -00116 class Csplit_merge_ptcomparison{ │ │ │ │ │ -00117 public: │ │ │ │ │ -00119 │ │ │ │ │ -Csplit_merge_ptcomparison() : │ │ │ │ │ -00120 │ │ │ │ │ -particles(0), split_merge_scale(SM_pttilde){}; │ │ │ │ │ -00121 │ │ │ │ │ -00123 │ │ │ │ │ -std::string SM_scale_name() const { │ │ │ │ │ -00124 │ │ │ │ │ -return split_merge_scale_name(split_merge_scale);} │ │ │ │ │ -00125 │ │ │ │ │ -00126 │ │ │ │ │ -std::vector * particles; │ │ │ │ │ -00127 │ │ │ │ │ -std::vector * pt; │ │ │ │ │ -00128 │ │ │ │ │ -00130 │ │ │ │ │ -bool operator()(const Cjet &jet1, const Cjet &jet2) const; │ │ │ │ │ -00131 │ │ │ │ │ -00143 │ │ │ │ │ -void get_difference(const Cjet &j1, const Cjet &j2, Cmomentum *v, double *pt_tilde) const; │ │ │ │ │ -00144 │ │ │ │ │ -00163 │ │ │ │ │ -Esplit_merge_scale split_merge_scale; │ │ │ │ │ -00164 }; │ │ │ │ │ -00165 │ │ │ │ │ -00166 │ │ │ │ │ -00167 // iterator types │ │ │ │ │ -00169 typedef std::multiset::iterator cjet_iterator; │ │ │ │ │ -00170 │ │ │ │ │ -00172 typedef std::vector::iterator jet_iterator; │ │ │ │ │ -00173 │ │ │ │ │ -00174 │ │ │ │ │ -00175 │ │ │ │ │ -00180 class Csplit_merge{ │ │ │ │ │ -00181 public: │ │ │ │ │ -00183 │ │ │ │ │ -Csplit_merge(); │ │ │ │ │ -00184 │ │ │ │ │ -00186 │ │ │ │ │ -~Csplit_merge(); │ │ │ │ │ -00187 │ │ │ │ │ -00188 │ │ │ │ │ -00190 │ │ │ │ │ -// initialisation functions // │ │ │ │ │ -00192 │ │ │ │ │ -00201 │ │ │ │ │ -int init(std::vector &_particles, std::vector *protocones, double R2, double │ │ │ │ │ -ptmin=0.0); │ │ │ │ │ -00202 │ │ │ │ │ -00208 │ │ │ │ │ -int init_particles(std::vector &_particles); │ │ │ │ │ -00209 │ │ │ │ │ -00213 │ │ │ │ │ -int init_pleft(); │ │ │ │ │ -00214 │ │ │ │ │ -00226 │ │ │ │ │ -inline int set_pt_weighted_splitting(bool _use_pt_weighted_splitting){ │ │ │ │ │ -00227 │ │ │ │ │ -use_pt_weighted_splitting = _use_pt_weighted_splitting; │ │ │ │ │ -00228 │ │ │ │ │ -return 0; │ │ │ │ │ -00229 │ │ │ │ │ -} │ │ │ │ │ -00230 │ │ │ │ │ -00232 │ │ │ │ │ -// cleaning functions // │ │ │ │ │ -00234 │ │ │ │ │ -00236 │ │ │ │ │ -int partial_clear(); │ │ │ │ │ -00237 │ │ │ │ │ -00239 │ │ │ │ │ -int full_clear(); │ │ │ │ │ -00240 │ │ │ │ │ -00242 │ │ │ │ │ -// user-defined stable-cone ordering // │ │ │ │ │ -00244 │ │ │ │ │ -00250 │ │ │ │ │ -class Cuser_scale_base{ │ │ │ │ │ -00251 │ │ │ │ │ -public: │ │ │ │ │ -00253 │ │ │ │ │ -virtual ~Cuser_scale_base(){} │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 300 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ -00254 │ │ │ │ │ -00259 │ │ │ │ │ -virtual double operator()(const Cjet & jet) const = 0; │ │ │ │ │ -00260 │ │ │ │ │ -00271 │ │ │ │ │ -virtual bool is_larger(const Cjet & a, const Cjet & b) const{ │ │ │ │ │ -00272 │ │ │ │ │ -return (a.sm_var2 > b.sm_var2); │ │ │ │ │ -00273 │ │ │ │ │ -} │ │ │ │ │ -00274 │ │ │ │ │ -}; │ │ │ │ │ -00275 │ │ │ │ │ -00280 │ │ │ │ │ -void set_user_scale(const Cuser_scale_base * user_scale_in){ │ │ │ │ │ -00281 │ │ │ │ │ -_user_scale = user_scale_in; │ │ │ │ │ -00282 │ │ │ │ │ -} │ │ │ │ │ -00283 │ │ │ │ │ -00285 │ │ │ │ │ -const Cuser_scale_base * user_scale() const { return _user_scale; } │ │ │ │ │ -00286 │ │ │ │ │ -00287 │ │ │ │ │ -00289 │ │ │ │ │ -// main parts of the algorithm // │ │ │ │ │ -00291 │ │ │ │ │ -00299 │ │ │ │ │ -int merge_collinear_and_remove_soft(); │ │ │ │ │ -00300 │ │ │ │ │ -00308 │ │ │ │ │ -int add_protocones(std::vector *protocones, double R2, double ptmin=0.0); │ │ │ │ │ -00309 │ │ │ │ │ -00320 │ │ │ │ │ -int add_hardest_protocone_to_jets(std::vector *protocones, double R2, double ptmin=0.0); │ │ │ │ │ -00321 │ │ │ │ │ -00331 │ │ │ │ │ -int perform(double overlap_tshold, double ptmin=0.0); │ │ │ │ │ -00332 │ │ │ │ │ -00333 │ │ │ │ │ -00335 │ │ │ │ │ -// save and debug functions // │ │ │ │ │ -00337 │ │ │ │ │ -00340 │ │ │ │ │ -int save_contents(FILE *flux); │ │ │ │ │ -00341 │ │ │ │ │ -00343 │ │ │ │ │ -int show(); │ │ │ │ │ -00344 │ │ │ │ │ -00345 │ │ │ │ │ -// particle information │ │ │ │ │ -00346 │ │ │ │ │ -int n; │ │ │ │ │ -00347 │ │ │ │ │ -std::vector particles; │ │ │ │ │ -00348 │ │ │ │ │ -std::vector pt; │ │ │ │ │ -00349 │ │ │ │ │ -int n_left; │ │ │ │ │ -00350 │ │ │ │ │ -std::vector p_remain; │ │ │ │ │ -00351 │ │ │ │ │ -std::vector p_uncol_hard; │ │ │ │ │ -00352 │ │ │ │ │ -int n_pass; │ │ │ │ │ -00353 │ │ │ │ │ -00357 │ │ │ │ │ -double most_ambiguous_split; │ │ │ │ │ -00358 │ │ │ │ │ -00359 │ │ │ │ │ -// jets information │ │ │ │ │ -00360 │ │ │ │ │ -std::vector jets; │ │ │ │ │ -00361 │ │ │ │ │ -00362 │ │ │ │ │ -// working entries │ │ │ │ │ -00363 │ │ │ │ │ -int *indices; │ │ │ │ │ -00364 │ │ │ │ │ -int idx_size; │ │ │ │ │ -00365 │ │ │ │ │ -00374 │ │ │ │ │ -bool merge_identical_protocones; │ │ │ │ │ -00375 │ │ │ │ │ -00377 │ │ │ │ │ -Csplit_merge_ptcomparison ptcomparison; │ │ │ │ │ -00378 │ │ │ │ │ -00385 │ │ │ │ │ -double SM_var2_hardest_cut_off; │ │ │ │ │ -00386 │ │ │ │ │ -00394 │ │ │ │ │ -double stable_cone_soft_pt2_cutoff; │ │ │ │ │ -00395 │ │ │ │ │ -00396 private: │ │ │ │ │ -00404 │ │ │ │ │ -bool get_overlap(const Cjet &j1, const Cjet &j2, double *v); │ │ │ │ │ -00405 │ │ │ │ │ -00406 │ │ │ │ │ -00418 │ │ │ │ │ -bool split(cjet_iterator &it_j1, cjet_iterator &it_j2); │ │ │ │ │ -00419 │ │ │ │ │ -00428 │ │ │ │ │ -bool merge(cjet_iterator &it_j1, cjet_iterator &it_j2); │ │ │ │ │ -00429 │ │ │ │ │ -00436 │ │ │ │ │ -bool insert(Cjet &jet); │ │ │ │ │ -00437 │ │ │ │ │ -00444 │ │ │ │ │ -double get_sm_var2(Cmomentum &v, double &pt_tilde); │ │ │ │ │ -00445 │ │ │ │ │ -00446 │ │ │ │ │ -// jet information │ │ │ │ │ -00448 #ifdef SISCONE_USES_UNIQUE_PTR_AS_AUTO_PTR │ │ │ │ │ -00449 │ │ │ │ │ -std::unique_ptr > candidates; │ │ │ │ │ -00450 #else │ │ │ │ │ -00451 │ │ │ │ │ -std::auto_ptr > candidates; │ │ │ │ │ -00452 #endif │ │ │ │ │ -00453 │ │ │ │ │ -00455 │ │ │ │ │ -double pt_min2; │ │ │ │ │ -00456 │ │ │ │ │ -00462 │ │ │ │ │ -bool use_pt_weighted_splitting; │ │ │ │ │ -00463 │ │ │ │ │ -00466 │ │ │ │ │ -const Cuser_scale_base *_user_scale; │ │ │ │ │ -00467 │ │ │ │ │ -00468 #ifdef ALLOW_MERGE_IDENTICAL_PROTOCONES │ │ │ │ │ -00470 │ │ │ │ │ -std::set cand_refs; │ │ │ │ │ -00471 #endif │ │ │ │ │ -00472 }; │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.49 vicinity.cpp │ │ │ │ │ - │ │ │ │ │ -301 │ │ │ │ │ - │ │ │ │ │ -00473 │ │ │ │ │ -00474 } │ │ │ │ │ -00475 │ │ │ │ │ -00476 │ │ │ │ │ -00477 #endif │ │ │ │ │ - │ │ │ │ │ 5.49 │ │ │ │ │ │ │ │ │ │ vicinity.cpp │ │ │ │ │ │ │ │ │ │ 00001 │ │ │ │ │ 00002 // File: vicinity.cpp │ │ │ │ │ // │ │ │ │ │ @@ -29762,29 +29751,28 @@ │ │ │ │ │ quadtree = NULL; │ │ │ │ │ 00068 #endif │ │ │ │ │ 00069 │ │ │ │ │ 00070 │ │ │ │ │ parent = NULL; │ │ │ │ │ 00071 │ │ │ │ │ VR2 = VR = 0.0; │ │ │ │ │ -00072 │ │ │ │ │ -00073 } │ │ │ │ │ -00074 │ │ │ │ │ -00075 // constructor with initialisation │ │ │ │ │ -00076 //--------------------------------- │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ // │ │ │ │ │ │ │ │ │ │ 302 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ -00077 CSphvicinity::CSphvicinity(vector &_particle_list){ │ │ │ │ │ +00072 │ │ │ │ │ +00073 } │ │ │ │ │ +00074 │ │ │ │ │ +00075 // constructor with initialisation │ │ │ │ │ +00076 //--------------------------------00077 CSphvicinity::CSphvicinity(vector &_particle_list){ │ │ │ │ │ 00078 │ │ │ │ │ parent = NULL; │ │ │ │ │ 00079 │ │ │ │ │ ve_list = NULL; │ │ │ │ │ 00080 #ifdef USE_QUADTREE_FOR_STABILITY_TEST │ │ │ │ │ 00081 │ │ │ │ │ quadtree = NULL; │ │ │ │ │ @@ -29907,27 +29895,27 @@ │ │ │ │ │ eta_max+=0.1; │ │ │ │ │ 00155 │ │ │ │ │ quadtree = new siscone::Cquadtree(0.0, 0.0, eta_max, M_PI); │ │ │ │ │ 00156 #endif │ │ │ │ │ 00157 │ │ │ │ │ 00158 │ │ │ │ │ // append particle to the vicinity_elm list │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.49 vicinity.cpp │ │ │ │ │ + │ │ │ │ │ 00159 │ │ │ │ │ j = 0; │ │ │ │ │ 00160 │ │ │ │ │ for (i=0;iadd(&plist[i]); │ │ │ │ │ 00163 #endif │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.49 vicinity.cpp │ │ │ │ │ - │ │ │ │ │ 00164 │ │ │ │ │ ve_list[j].v = ve_list[j+1].v = &plist[i]; │ │ │ │ │ 00165 │ │ │ │ │ ve_list[j].is_inside = ve_list[j+1].is_inside = &(pincluded[i]); │ │ │ │ │ 00166 │ │ │ │ │ j+=2; │ │ │ │ │ 00167 │ │ │ │ │ @@ -30053,32 +30041,28 @@ │ │ │ │ │ 00243 │ │ │ │ │ CSph3vector vnormal = *v; │ │ │ │ │ 00244 │ │ │ │ │ vnormal/=v->_norm; │ │ │ │ │ 00245 │ │ │ │ │ dot/=v->_norm; │ │ │ │ │ 00246 │ │ │ │ │ -00247 │ │ │ │ │ -// really check if the distance is less than VR │ │ │ │ │ -00248 │ │ │ │ │ -if (dot>cosVR){ │ │ │ │ │ -00249 │ │ │ │ │ -CSph3vector cross = cross_product3(parent_centre,vnormal); │ │ │ │ │ -00250 │ │ │ │ │ -00251 │ │ │ │ │ -// for the centres │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 303 │ │ │ │ │ │ │ │ │ │ 304 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ +00247 │ │ │ │ │ +00248 │ │ │ │ │ +00249 │ │ │ │ │ +00250 │ │ │ │ │ +00251 │ │ │ │ │ 00252 │ │ │ │ │ 00253 │ │ │ │ │ 00254 │ │ │ │ │ 00255 │ │ │ │ │ 00256 │ │ │ │ │ 00257 │ │ │ │ │ 00258 │ │ │ │ │ @@ -30093,22 +30077,26 @@ │ │ │ │ │ 00267 │ │ │ │ │ 00268 │ │ │ │ │ 00269 │ │ │ │ │ 00270 │ │ │ │ │ 00271 │ │ │ │ │ 00272 │ │ │ │ │ │ │ │ │ │ -CSph3vector median = (parent_centre+vnormal); │ │ │ │ │ -double amplT = sqrt((tan2R*(1+dot)+(dot-1))*(1+dot)); │ │ │ │ │ -CSph3vector transverse = amplT*cross/cross._norm; │ │ │ │ │ +// really check if the distance is less than VR │ │ │ │ │ +if (dot>cosVR){ │ │ │ │ │ +CSph3vector cross = cross_product3(parent_centre,vnormal); │ │ │ │ │ │ │ │ │ │ 5.50 │ │ │ │ │ │ │ │ │ │ vicinity.cpp │ │ │ │ │ │ │ │ │ │ +// for the centres │ │ │ │ │ +CSph3vector median = (parent_centre+vnormal); │ │ │ │ │ +double amplT = sqrt((tan2R*(1+dot)+(dot-1))*(1+dot)); │ │ │ │ │ +CSph3vector transverse = amplT*cross/cross._norm; │ │ │ │ │ // first angle (+) │ │ │ │ │ ve_list[i].centre = median + transverse; │ │ │ │ │ ve_list[i].centre.build_norm(); │ │ │ │ │ ve_list[i].centre/=ve_list[i].centre._norm; │ │ │ │ │ CSph3vector diff = ve_list[i].centre - parent_centre; │ │ │ │ │ //ve_list[i].angle = atan2(dot_product3(angular_dir2, diff),dot_product3(angular_dir1, diff)); │ │ │ │ │ ve_list[i].angle = sort_angle(dot_product3(angular_dir2, diff),dot_product3(angular_dir1, diff)); │ │ │ │ │ @@ -30218,24 +30206,24 @@ │ │ │ │ │ 00022 // │ │ │ │ │ // │ │ │ │ │ 00023 // $Revision:: 388 │ │ │ │ │ $// │ │ │ │ │ 00024 // $Date:: 2016-03-03 10:42:25 +0100 (Thu, 03 Mar 2016) │ │ │ │ │ $// │ │ │ │ │ 00026 │ │ │ │ │ -00027 #include "vicinity.h" │ │ │ │ │ -00028 #include │ │ │ │ │ -00029 #include │ │ │ │ │ -00030 #include │ │ │ │ │ -00031 │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 5.50 vicinity.cpp │ │ │ │ │ │ │ │ │ │ +00027 #include "vicinity.h" │ │ │ │ │ +00028 #include │ │ │ │ │ +00029 #include │ │ │ │ │ +00030 #include │ │ │ │ │ +00031 │ │ │ │ │ 00032 namespace siscone{ │ │ │ │ │ 00033 │ │ │ │ │ 00034 using namespace std; │ │ │ │ │ 00035 │ │ │ │ │ 00036 /************************************************************* │ │ │ │ │ 00037 * Cvicinity_elm implementation │ │ │ │ │ * │ │ │ │ │ @@ -30338,30 +30326,30 @@ │ │ │ │ │ if (ve_list!=NULL){ │ │ │ │ │ 00111 │ │ │ │ │ delete[] ve_list; │ │ │ │ │ 00112 │ │ │ │ │ } │ │ │ │ │ 00113 │ │ │ │ │ vicinity.clear(); │ │ │ │ │ -00114 #ifdef USE_QUADTREE_FOR_STABILITY_TEST │ │ │ │ │ -00115 │ │ │ │ │ -if (quadtree!=NULL) │ │ │ │ │ -00116 │ │ │ │ │ -delete quadtree; │ │ │ │ │ -00117 #endif │ │ │ │ │ -00118 │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 305 │ │ │ │ │ │ │ │ │ │ 306 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ +00114 #ifdef USE_QUADTREE_FOR_STABILITY_TEST │ │ │ │ │ +00115 │ │ │ │ │ +if (quadtree!=NULL) │ │ │ │ │ +00116 │ │ │ │ │ +delete quadtree; │ │ │ │ │ +00117 #endif │ │ │ │ │ +00118 │ │ │ │ │ 00119 │ │ │ │ │ // allocate memory array for particles │ │ │ │ │ 00120 │ │ │ │ │ // Note: - we compute max for |eta| │ │ │ │ │ 00121 │ │ │ │ │ // │ │ │ │ │ - we allocate indices to particles │ │ │ │ │ @@ -30495,26 +30483,26 @@ │ │ │ │ │ 00197 │ │ │ │ │ append_to_vicinity(&plist[i]); │ │ │ │ │ 00198 │ │ │ │ │ } │ │ │ │ │ 00199 │ │ │ │ │ 00200 │ │ │ │ │ // sort the vicinity │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.50 vicinity.cpp │ │ │ │ │ + │ │ │ │ │ 00201 │ │ │ │ │ sort(vicinity.begin(), vicinity.end(), ve_less); │ │ │ │ │ 00202 │ │ │ │ │ 00203 │ │ │ │ │ vicinity_size = vicinity.size(); │ │ │ │ │ 00204 } │ │ │ │ │ 00205 │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.50 vicinity.cpp │ │ │ │ │ - │ │ │ │ │ 00206 │ │ │ │ │ 00208 inline double sort_angle(double s, double c){ │ │ │ │ │ 00209 │ │ │ │ │ if (s==0) return (c>0) ? 0.0 : 2.0; │ │ │ │ │ 00210 │ │ │ │ │ double t=c/s; │ │ │ │ │ 00211 │ │ │ │ │ @@ -30653,33 +30641,33 @@ │ │ │ │ │ c = dot_product(OP,OC); │ │ │ │ │ 00286 │ │ │ │ │ s = fabs(cross_product(OP,OC)); │ │ │ │ │ 00287 │ │ │ │ │ double inv_err1 = s * inv_R_EPS_COCIRC; │ │ │ │ │ 00288 │ │ │ │ │ double inv_err2_sq = (R2-c) * inv_R_2EPS_COCIRC; │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ +307 │ │ │ │ │ + │ │ │ │ │ + 308 │ │ │ │ │ + │ │ │ │ │ +File Documentation │ │ │ │ │ + │ │ │ │ │ 00289 │ │ │ │ │ ve_list[i].cocircular_range = pow2(inv_err1) > inv_err2_sq ? │ │ │ │ │ 00290 │ │ │ │ │ 1.0/inv_err1 : │ │ │ │ │ 00291 │ │ │ │ │ sqrt(1.0/inv_err2_sq); │ │ │ │ │ 00292 │ │ │ │ │ ve_list[i+1].cocircular_range = ve_list[i].cocircular_range; │ │ │ │ │ 00293 │ │ │ │ │ } │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ -307 │ │ │ │ │ - │ │ │ │ │ - 308 │ │ │ │ │ - │ │ │ │ │ -File Documentation │ │ │ │ │ - │ │ │ │ │ 00294 } │ │ │ │ │ 00295 │ │ │ │ │ 00296 } │ │ │ │ │ │ │ │ │ │ 5.51 │ │ │ │ │ │ │ │ │ │ vicinity.h │ │ │ │ │ @@ -30788,31 +30776,31 @@ │ │ │ │ │ 00093 │ │ │ │ │ 00098 │ │ │ │ │ void set_particle_list(std::vector &_particle_list); │ │ │ │ │ 00099 │ │ │ │ │ 00105 │ │ │ │ │ void build(CSphmomentum *_parent, double _VR); │ │ │ │ │ 00106 │ │ │ │ │ + │ │ │ │ │ +// │ │ │ │ │ + │ │ │ │ │ +Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ + │ │ │ │ │ + 5.52 vicinity.h │ │ │ │ │ + │ │ │ │ │ 00107 │ │ │ │ │ // cone kinematical information │ │ │ │ │ 00108 │ │ │ │ │ CSphmomentum *parent; │ │ │ │ │ 00109 │ │ │ │ │ double VR; │ │ │ │ │ 00110 │ │ │ │ │ double VR2; │ │ │ │ │ 00111 │ │ │ │ │ double cosVR; │ │ │ │ │ - │ │ │ │ │ -// │ │ │ │ │ - │ │ │ │ │ -Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ - │ │ │ │ │ - 5.52 vicinity.h │ │ │ │ │ - │ │ │ │ │ 00112 │ │ │ │ │ double R; │ │ │ │ │ 00113 │ │ │ │ │ double R2; │ │ │ │ │ 00114 │ │ │ │ │ double tan2R; │ │ │ │ │ 00115 │ │ │ │ │ @@ -30928,29 +30916,29 @@ │ │ │ │ │ 00046 class Cvicinity_inclusion { │ │ │ │ │ 00047 public: │ │ │ │ │ 00049 │ │ │ │ │ Cvicinity_inclusion() : cone(false), cocirc(false) {} │ │ │ │ │ 00050 │ │ │ │ │ 00051 │ │ │ │ │ bool cone; │ │ │ │ │ -00052 │ │ │ │ │ -bool cocirc; │ │ │ │ │ -00053 }; │ │ │ │ │ -00054 │ │ │ │ │ -00055 │ │ │ │ │ -00063 class Cvicinity_elm{ │ │ │ │ │ │ │ │ │ │ Generated on Tue Jan 7 2025 11:57:28 for SISCone by Doxygen │ │ │ │ │ │ │ │ │ │ 309 │ │ │ │ │ │ │ │ │ │ 310 │ │ │ │ │ │ │ │ │ │ File Documentation │ │ │ │ │ │ │ │ │ │ +00052 │ │ │ │ │ +bool cocirc; │ │ │ │ │ +00053 }; │ │ │ │ │ +00054 │ │ │ │ │ +00055 │ │ │ │ │ +00063 class Cvicinity_elm{ │ │ │ │ │ 00064 public: │ │ │ │ │ 00066 │ │ │ │ │ Cmomentum *v; │ │ │ │ │ 00067 │ │ │ │ │ 00069 │ │ │ │ │ Cvicinity_inclusion *is_inside; │ │ │ │ │ 00070 │ │ │ │ │ @@ -31289,22 +31277,22 @@ │ │ │ │ │ siscone::Ceta_phi_range, 20 │ │ │ │ │ eta_min │ │ │ │ │ siscone::Ceta_phi_range, 20 │ │ │ │ │ eta_range │ │ │ │ │ siscone::Ceta_phi_range, 21 │ │ │ │ │ ev_name │ │ │ │ │ Coptions, 42 │ │ │ │ │ -examples/area.cpp, 189 │ │ │ │ │ -examples/main.cpp, 179 │ │ │ │ │ -examples/options.cpp, 180 │ │ │ │ │ -examples/options.h, 183 │ │ │ │ │ -examples/sample.cpp, 184 │ │ │ │ │ -examples/spherical.cpp, 185 │ │ │ │ │ -examples/test.cpp, 186 │ │ │ │ │ -examples/times.cpp, 188 │ │ │ │ │ +examples/area.cpp, 179 │ │ │ │ │ +examples/main.cpp, 184 │ │ │ │ │ +examples/options.cpp, 186 │ │ │ │ │ +examples/options.h, 189 │ │ │ │ │ +examples/sample.cpp, 189 │ │ │ │ │ +examples/spherical.cpp, 191 │ │ │ │ │ +examples/test.cpp, 192 │ │ │ │ │ +examples/times.cpp, 193 │ │ │ │ │ │ │ │ │ │ 313 │ │ │ │ │ │ │ │ │ │ siscone::hash_cones, 167 │ │ │ │ │ siscone_spherical::sph_hash_cones, 174 │ │ │ │ │ hash_cones │ │ │ │ │ siscone::hash_cones, 165 │ │ │ │ │ @@ -31641,23 +31629,23 @@ │ │ │ │ │ siscone_spherical::sph_hash_cones, 175 │ │ │ │ │ randomize │ │ │ │ │ siscone::Creference, 53 │ │ │ │ │ range │ │ │ │ │ siscone::Cjet, 27 │ │ │ │ │ siscone_spherical::CSphjet, 77 │ │ │ │ │ ranlux.h │ │ │ │ │ -ranlux_get, 215 │ │ │ │ │ -ranlux_init, 215 │ │ │ │ │ -ranlux_print_state, 215 │ │ │ │ │ +ranlux_get, 209 │ │ │ │ │ +ranlux_init, 209 │ │ │ │ │ +ranlux_print_state, 209 │ │ │ │ │ ranlux_get │ │ │ │ │ -ranlux.h, 215 │ │ │ │ │ +ranlux.h, 209 │ │ │ │ │ ranlux_init │ │ │ │ │ -ranlux.h, 215 │ │ │ │ │ +ranlux.h, 209 │ │ │ │ │ ranlux_print_state │ │ │ │ │ -ranlux.h, 215 │ │ │ │ │ +ranlux.h, 209 │ │ │ │ │ recompute_jets │ │ │ │ │ siscone::Csiscone, 61 │ │ │ │ │ siscone_spherical::CSphsiscone, 92 │ │ │ │ │ ref │ │ │ │ │ siscone::Cmomentum, 39 │ │ │ │ │ siscone::Creference, 53 │ │ │ │ │ siscone::hash_element, 170 │ │ │ │ │ @@ -31691,54 +31679,54 @@ │ │ │ │ │ siscone_spherical::CSphsplit_merge, 101 │ │ │ │ │ side │ │ │ │ │ siscone::Cvicinity_elm, 162 │ │ │ │ │ siscone_spherical::CSphvicinity_elm, 127 │ │ │ │ │ │ │ │ │ │ INDEX │ │ │ │ │ │ │ │ │ │ -siscone/area.cpp, 191 │ │ │ │ │ +siscone/area.cpp, 180 │ │ │ │ │ siscone/area.h, 195 │ │ │ │ │ siscone/circulator.h, 196 │ │ │ │ │ siscone/config.h, 197 │ │ │ │ │ siscone/config_raw.h, 198 │ │ │ │ │ siscone/defines.h, 199, 201 │ │ │ │ │ -siscone/geom_2d.cpp, 202 │ │ │ │ │ -siscone/geom_2d.h, 206 │ │ │ │ │ +siscone/geom_2d.cpp, 214 │ │ │ │ │ +siscone/geom_2d.h, 218 │ │ │ │ │ siscone/hash.cpp, 220 │ │ │ │ │ siscone/hash.h, 225 │ │ │ │ │ siscone/momentum.cpp, 227 │ │ │ │ │ siscone/momentum.h, 232 │ │ │ │ │ siscone/protocones.cpp, 236 │ │ │ │ │ siscone/protocones.h, 255 │ │ │ │ │ -siscone/quadtree.cpp, 208 │ │ │ │ │ -siscone/quadtree.h, 212 │ │ │ │ │ -siscone/ranlux.cpp, 213 │ │ │ │ │ -siscone/ranlux.h, 215, 216 │ │ │ │ │ -siscone/reference.cpp, 216 │ │ │ │ │ -siscone/reference.h, 218 │ │ │ │ │ +siscone/quadtree.cpp, 202 │ │ │ │ │ +siscone/quadtree.h, 206 │ │ │ │ │ +siscone/ranlux.cpp, 206 │ │ │ │ │ +siscone/ranlux.h, 209, 210 │ │ │ │ │ +siscone/reference.cpp, 210 │ │ │ │ │ +siscone/reference.h, 212 │ │ │ │ │ siscone/siscone.cpp, 259 │ │ │ │ │ siscone/siscone.h, 266 │ │ │ │ │ -siscone/siscone_error.cpp, 219 │ │ │ │ │ -siscone/siscone_error.h, 219 │ │ │ │ │ -siscone/spherical/geom_2d.cpp, 204 │ │ │ │ │ -siscone/spherical/geom_2d.h, 207 │ │ │ │ │ +siscone/siscone_error.cpp, 213 │ │ │ │ │ +siscone/siscone_error.h, 213 │ │ │ │ │ +siscone/spherical/geom_2d.cpp, 216 │ │ │ │ │ +siscone/spherical/geom_2d.h, 219 │ │ │ │ │ siscone/spherical/hash.cpp, 223 │ │ │ │ │ siscone/spherical/hash.h, 226 │ │ │ │ │ siscone/spherical/momentum.cpp, 229 │ │ │ │ │ siscone/spherical/momentum.h, 234 │ │ │ │ │ -siscone/spherical/protocones.cpp, 245 │ │ │ │ │ +siscone/spherical/protocones.cpp, 246 │ │ │ │ │ siscone/spherical/protocones.h, 257 │ │ │ │ │ -siscone/spherical/siscone.cpp, 262 │ │ │ │ │ +siscone/spherical/siscone.cpp, 263 │ │ │ │ │ siscone/spherical/siscone.h, 267 │ │ │ │ │ -siscone/spherical/split_merge.cpp, 268 │ │ │ │ │ -siscone/spherical/split_merge.h, 295 │ │ │ │ │ +siscone/spherical/split_merge.cpp, 273 │ │ │ │ │ +siscone/spherical/split_merge.h, 268 │ │ │ │ │ siscone/spherical/vicinity.cpp, 301 │ │ │ │ │ siscone/spherical/vicinity.h, 308 │ │ │ │ │ -siscone/split_merge.cpp, 282 │ │ │ │ │ -siscone/split_merge.h, 298 │ │ │ │ │ +siscone/split_merge.cpp, 287 │ │ │ │ │ +siscone/split_merge.h, 271 │ │ │ │ │ siscone/vicinity.cpp, 304 │ │ │ │ │ siscone/vicinity.h, 309 │ │ │ │ │ siscone::Carea, 7 │ │ │ │ │ ∼Carea, 13 │ │ │ │ │ Carea, 13 │ │ │ │ │ compute_active_areas, 13 │ │ │ │ │ compute_areas, 13