Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Gen3 blueprint geometry construction #3869

Merged
merged 102 commits into from
Dec 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
c418116
--------------------------------------------
paulgessinger Aug 9, 2024
6322115
--------------------------------------------
paulgessinger Aug 9, 2024
016c5e8
--------------------------------------------
paulgessinger Aug 9, 2024
b8698c5
blueprint: wip building test
paulgessinger Mar 27, 2024
29426bc
blueprint: basic hierarchy
paulgessinger Mar 27, 2024
ac17247
blueprint: wip API
paulgessinger Mar 27, 2024
4f86535
blueprint: example tree
paulgessinger Mar 27, 2024
0574a07
blueprint: api exploration
paulgessinger Mar 28, 2024
e149a82
blueprint: api in parts
paulgessinger Apr 8, 2024
57874a2
blueprint: add missing headers
paulgessinger Jun 5, 2024
c3e6350
blueprint: fix to blueprintnode after BinningValueChange
paulgessinger Aug 9, 2024
94ca545
blueprint: add missing semicolons
paulgessinger Aug 9, 2024
119eb18
blueprint: Experimenting with shell implementation
paulgessinger Aug 27, 2024
dedc149
blueprint: blueprint tests, currently nullptr access
paulgessinger Aug 28, 2024
e1f490a
blueprint: some fixes after updates
paulgessinger Sep 13, 2024
f48eee3
blueprint: Use pathlib.Path for obj output
paulgessinger Sep 13, 2024
cc8999a
blueprint: fix vector instability
paulgessinger Sep 13, 2024
5d3aa5d
blueprint: static output improvement
paulgessinger Sep 13, 2024
0c834e0
blueprint: Uew ViewConfig designated initializers
paulgessinger Sep 16, 2024
97452e1
blueprint: work on API with root builder node
paulgessinger Sep 16, 2024
67bbdbe
blueprint: basic trackinggeometry construction works
paulgessinger Sep 16, 2024
75d21c3
blueprint: Python bindings visualize removal
paulgessinger Sep 20, 2024
a99776d
blueprint: Output and assertions
paulgessinger Sep 20, 2024
a4b6000
blueprint: Basic pseudo stepping test works
paulgessinger Sep 23, 2024
7463da2
blueprint: NavigationDelegate -> NavigationPolicy
paulgessinger Sep 23, 2024
6ada37d
blueprint: Update after delegate / policy change
paulgessinger Sep 26, 2024
43042a0
blueprint: add options struct being passed through building functions
paulgessinger Sep 30, 2024
0b06e20
blueprint: add fallback policy factory
paulgessinger Sep 30, 2024
c1de40d
blueprint: Add geo context to build call
paulgessinger Oct 1, 2024
3e9e275
blueprint: Minimal Layer node + basic test
paulgessinger Oct 1, 2024
5c2effe
blueprint: Add geo context to build call
paulgessinger Oct 1, 2024
0ce0dca
blueprint: Improve verbosity of test
paulgessinger Oct 1, 2024
f68ec4f
blueprint: Complex geo with surfaces (no navigation yet)
paulgessinger Oct 1, 2024
59996d6
blueprint: Add barrel layers
paulgessinger Oct 2, 2024
91d12db
blueprint: TODO item
paulgessinger Oct 2, 2024
eca1867
blueprint: Add TryAllSurfaces as default policy
paulgessinger Oct 2, 2024
30b5d62
blueprint: Remove Blueprint.cpp
paulgessinger Oct 2, 2024
c81ecdb
blueprint: python script works again
paulgessinger Oct 2, 2024
ca4bf9b
blueprint: api evolution
paulgessinger Oct 4, 2024
af66014
blueprint: ray test configuration
paulgessinger Nov 6, 2024
f71d4e1
blueprint: material designator
paulgessinger Oct 9, 2024
4a92c88
blueprint: Material node graphviz shape change
paulgessinger Oct 9, 2024
38a70b2
blueprint: material node name
paulgessinger Oct 10, 2024
eca6dc7
blueprint: Finalize gets geocontext as well
paulgessinger Oct 12, 2024
45e43ad
blueprint: Adjust to nav policy factory signature change
paulgessinger Oct 15, 2024
b05e221
blueprint: enum renaming
paulgessinger Oct 12, 2024
ca68b00
blueprint: Material node fixes
paulgessinger Oct 12, 2024
f33977c
blueprint: Layer/Static nodes get policy override
paulgessinger Oct 14, 2024
6244bb8
blueprint: Add logger to NavArgs
paulgessinger Oct 15, 2024
9427531
blueprint: Allow setting policy from python
paulgessinger Oct 14, 2024
fc60908
blueprint: Downgrade WARNINGs for non-problematic merges
paulgessinger Oct 15, 2024
5b574d4
blueprint: add clearChildren to node
paulgessinger Oct 16, 2024
02bbada
blueprint: connectOuter -> fill
paulgessinger Nov 6, 2024
a456bb7
blueprint: Fix incorrect dynamic cast ifs
paulgessinger Oct 18, 2024
25b152b
blueprint: Fix shadowing
paulgessinger Oct 18, 2024
309714c
blueprint: Fix extent constructor call
paulgessinger Oct 18, 2024
4b30658
blueprint: Cyl gap policy reg fix
paulgessinger Oct 18, 2024
ab10d48
blueprint: Update after nav API change
paulgessinger Oct 22, 2024
6baa9c1
blueprint: Rename RootBlueprintNode to Blueprint
paulgessinger Nov 18, 2024
1636001
blueprint: Blueprint inherits privately from BlueprintNode
paulgessinger Nov 18, 2024
fa2f858
blueprint: Update after nav API change
paulgessinger Nov 6, 2024
a4a73a7
rename gen2 blueprint test
paulgessinger Nov 27, 2024
b10c977
rename existing test to API test, remove some lower level tests
paulgessinger Nov 27, 2024
a7e5dc0
fix material node error check, blueprint api fix
paulgessinger Nov 27, 2024
1a81501
add better unit test for individual node types
paulgessinger Nov 27, 2024
75fc098
remove some code from the python test
paulgessinger Nov 27, 2024
3c90aa0
blueprint: Remove ActsScalar
paulgessinger Nov 28, 2024
e75a401
remove ActsScalar from blueprint tests
paulgessinger Dec 2, 2024
c7a109e
fix unit test
paulgessinger Dec 3, 2024
4a1ffb5
minimal docs update
paulgessinger Dec 3, 2024
71bdcec
pull out BlueprintOptions into separate files
paulgessinger Dec 3, 2024
70ca53a
fix Portal related doc strings (markdown)
paulgessinger Dec 3, 2024
43e6a1f
make toStream private, use `operator<<` on base class
paulgessinger Dec 3, 2024
f88a5fc
change Root node name
paulgessinger Dec 3, 2024
e9a28fe
doc strings part 1
paulgessinger Dec 3, 2024
9b02b8c
docs: Misc docs fixes
paulgessinger Dec 5, 2024
f4e5717
API cleanup, remove unneeded methods, move definition to cpp
paulgessinger Dec 5, 2024
ca1c08a
doc strings part 2
paulgessinger Dec 5, 2024
35db2c5
add extra checks for cycles + tests
paulgessinger Dec 5, 2024
a480fdb
visibility shuffling
paulgessinger Dec 6, 2024
9d22b85
spelling fixes
paulgessinger Dec 6, 2024
f641f0a
fix doxygen errors
paulgessinger Dec 6, 2024
e70f022
move BlueprintOptions destructor to allow forward declaration
paulgessinger Dec 6, 2024
925ff08
fix python bindigs and API
paulgessinger Dec 6, 2024
9ee0627
drop private inheritance (likely not worth the hassle)
paulgessinger Dec 9, 2024
28f9a81
add decrement depth protected method and call when clearing children
paulgessinger Dec 9, 2024
bc93d98
fix redundant policy construction
paulgessinger Dec 9, 2024
c94102c
add missing docs listings
paulgessinger Dec 9, 2024
2c0f430
don't decrement depth when it's already zero
paulgessinger Dec 9, 2024
d528dfb
more classes
paulgessinger Dec 9, 2024
6774c7b
(hopefully) fix depth issues
paulgessinger Dec 9, 2024
1e0fe94
more docs refs
paulgessinger Dec 9, 2024
80324ef
drop forward decl, missing includes doesn't like it
paulgessinger Dec 9, 2024
0c83e4e
Merge branch 'main' into feat/gen3-blueprints
paulgessinger Dec 9, 2024
390c8d9
try to fix docs issues
paulgessinger Dec 10, 2024
b6f3b8b
sonar fixes
paulgessinger Dec 10, 2024
405dbe3
add test that root node is not added as a child
paulgessinger Dec 10, 2024
364ba59
feat: Make TransformRange fulfill range concept
paulgessinger Dec 10, 2024
58a7df6
PR feedback
paulgessinger Dec 10, 2024
019e87c
Merge branch 'main' into feat/gen3-blueprints
paulgessinger Dec 10, 2024
ab8f7f9
pr feedback
paulgessinger Dec 10, 2024
a99ea3a
sonar fix
paulgessinger Dec 10, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 105 additions & 0 deletions Core/include/Acts/Geometry/Blueprint.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
// This file is part of the ACTS project.
//
// Copyright (C) 2016 CERN for the benefit of the ACTS project
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.

#pragma once

#include "Acts/Geometry/BlueprintNode.hpp"
#include "Acts/Geometry/PortalShell.hpp"
#include "Acts/Geometry/TrackingGeometry.hpp"
#include "Acts/Geometry/TrackingVolume.hpp"

namespace Acts {

class GeometryContext;

/// This class is the top-level entry point to build a tracking geometry using
/// the blueprint building mechanism. It forms the root of a tree of nodes where
/// each node performs a portion of the construction. This top-level class has
/// the main construction methods that execute the construction of the geometry.
///
/// ```
/// +---------------+ +-----------+
/// | | | |
/// | Root | | v
/// | | | +---------------+
/// +---------------+ | | |
/// | | | Child 1 |
/// +----------+ | | |
/// v +----------+ +---------------+
/// +---------------+ |
/// | | +--------------+
/// | Child 2 | v +----------+
/// | | .---------. | |
/// +---------------+ / \ | v
/// ( Proc node ) | +---------------+
/// `. ,' | | |
/// `-------' | | Child 3 |
/// | | | |
/// | | +---------------+
/// +---------+
/// ```
///
/// The construction phases are documented in @c BlueprintNode, which is the
/// base class for all nodes in the tree.
/// @note This class inherits from @c BlueprintNode, but hides the main
/// blueprint construction phase overloads. The @c Blueprint class is
/// only ever intended to be the top-level node, and not anywhere else
/// in the tree.
class Blueprint : public BlueprintNode {
paulgessinger marked this conversation as resolved.
Show resolved Hide resolved
public:
struct Config {
/// Determine how much envelope space to produce from the highest volume
/// in the geometry hierarchy and the world volume.
ExtentEnvelope envelope = ExtentEnvelope::Zero();

/// The geometry identifier hook, passed through the `TrackingGeometry`
/// constructor. This will be superseded by a more integrated approach to
/// the identification scheme
GeometryIdentifierHook geometryIdentifierHook = {};
};

/// Constructor from a config object
/// @param config The configuration object
explicit Blueprint(const Config& config);

/// Construct the tracking geometry from the blueprint tree
/// @param options The construction options, see @c BlueprintOptions
/// @param gctx The geometry context for construction. In almost all cases,
/// this should be the *nominal* geometry context
/// @param logger The logger to use for output during construction
std::unique_ptr<TrackingGeometry> construct(
const BlueprintOptions& options, const GeometryContext& gctx,
const Logger& logger = Acts::getDummyLogger());

protected:
/// The name of the blueprint node, always "Root"
/// @return The name
const std::string& name() const override;

/// @copydoc BlueprintNode::build
Volume& build(const BlueprintOptions& options, const GeometryContext& gctx,
const Logger& logger = Acts::getDummyLogger()) override;

/// @copydoc BlueprintNode::connect
PortalShellBase& connect(
const BlueprintOptions& options, const GeometryContext& gctx,
const Logger& logger = Acts::getDummyLogger()) override;

/// @copydoc BlueprintNode::finalize
void finalize(const BlueprintOptions& options, const GeometryContext& gctx,
TrackingVolume& parent,
const Logger& logger = Acts::getDummyLogger()) override;

/// @copydoc BlueprintNode::addToGraphviz
void addToGraphviz(std::ostream& os) const override;

private:
Config m_cfg;
};

} // namespace Acts
Loading
Loading