Templates Module

The Templates module provides boilerplate code and examples for creating custom AnalysisG components.

For complete API reference, see the Doxygen-generated HTML documentation in doxygen-docs/html/.

Template Types

Event Templates

Templates for custom event types.

Location: src/AnalysisG/templates/events/

Includes: * Event class structure * Particle registration * Event compilation logic * Custom property definitions

Particle Templates

Templates for custom particle types.

Location: src/AnalysisG/templates/particles/

Includes: * Particle class structure * Property definitions * Kinematic calculations * Particle identification

Common properties: * Four-momentum components * Charge, mass, PDG ID * Isolation variables * Quality flags

Graph Templates

Templates for graph construction.

Location: src/AnalysisG/templates/graphs/

Customization points: * Node feature selection * Edge connectivity rules * Feature normalization * Graph-level aggregation

Model Templates

Templates for neural network models.

Location: src/AnalysisG/templates/model/

Architecture components: * Input processing layers * Hidden layers * Output layers * Activation functions

Metric Templates

Templates for custom metrics.

Location: src/AnalysisG/templates/metrics/

Metric types: * Classification metrics * Regression metrics * Physics-specific metrics * Custom loss functions

Selection Templates

Templates for event selections.

Location: src/AnalysisG/templates/selections/

Selection features: * Sequential cuts * Event categorization * Weight handling * Histogram filling

Using Templates

Typical Workflow

  1. Copy template directory:

cp -r templates/events/eventtemplate myanalysis/events/myevent
  1. Customize names:

// Change from:
class EventTemplate : public event_template
// To:
class MyEvent : public event_template
  1. Implement logic:

void MyEvent::CompileEvent() {
    // Custom event processing
    compute_custom_variables();
    apply_corrections();
}
  1. Build and test:

mkdir build && cd build
cmake ..
make

Template Structure

Each template includes:

  • Header file (.h) - Class declaration

  • Implementation file (.cxx) - Method implementations

  • CMakeLists.txt - Build configuration

  • Documentation (.md) - Usage instructions

Best Practices

When using templates:

  • Keep Original: Don’t modify templates directly

  • Rename Properly: Use consistent naming

  • Document Changes: Add comments

  • Follow Conventions: Maintain coding style

  • Test Thoroughly: Validate implementations

Example Customizations

Custom Event

class TopPairEvent : public event_template {
    public:
        void CompileEvent() override {
            find_top_candidates();
            compute_masses();
            categorize_event();
        }

    private:
        void find_top_candidates();
        void compute_masses();
        void categorize_event();

        double m_ttbar;
        int n_bjets;
};

Custom Metric

class TopMassAccuracy : public metric_template {
    public:
        void event() override {
            double true_mass = get_true_top_mass();
            double pred_mass = get_predicted_top_mass();
            double error = std::abs(true_mass - pred_mass);

            total_error += error;
            n_events++;
        }

        void end() override {
            mean_error = total_error / n_events;
        }

    private:
        double total_error = 0.0;
        int n_events = 0;
        double mean_error = 0.0;
};

Deprecated Documentation

Original template documentation has been moved to:

  • src/deprecated/eventtemplate.md

  • src/deprecated/modeltemplate.md

  • src/deprecated/selectiontemplate.md

  • src/deprecated/graphtemplate.md

  • src/deprecated/particletemplate.md