Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
Parameters.h
Go to the documentation of this file.
1#ifndef PARAMETERS_H
2#define PARAMETERS_H
3
4#include <memory>
5#include <ranges>
6#include <algorithm>
7#include <unordered_set>
8#include <functional>
9
10#include "ParameterRouter.h"
11#include "BlockAccessor.h"
12#include "Interface.h"
13#include "QCDHelper.h"
14#include "EWHelper.h"
15#include "config.hpp"
16#include "SourcesView.h"
17#include "DependentParameter.h"
18
19// Forward declaration for strategy interface
20class Parameters;
21
91public:
101 virtual std::unordered_set<BlockName> initializeParameters(class Parameters& params) = 0;
102
114 virtual void postInitialization(Parameters& params) = 0;
115
119 virtual ~ModelStrategy() = default;
120
125 void add_absent_block(std::unordered_set<BlockName> _) {absent_blocks = _;};
126
130 void remove_absent_block() {absent_blocks = std::unordered_set<BlockName>();}
131protected:
132 std::unordered_set<BlockName> absent_blocks;
133};
134
150public:
154 std::unordered_set<BlockName> initializeParameters(class Parameters& params) override;
155
159 void postInitialization(Parameters& params) override;
160};
161
175public:
179 std::unordered_set<BlockName> initializeParameters(class Parameters& params) override;
180
184 void postInitialization(Parameters& params) override;
185};
186
196public:
200 std::unordered_set<BlockName> initializeParameters(class Parameters& params) override;
201
208};
209
223public:
227 std::unordered_set<BlockName> initializeParameters(class Parameters& params) override;
228
235};
236
250public:
254 std::unordered_set<BlockName> initializeParameters(class Parameters& params) override;
255
259 void postInitialization(Parameters& params) override;
260};
261
271public:
275 std::unordered_set<BlockName> initializeParameters(class Parameters& params) override;
276
283};
284
294public:
298 std::unordered_set<BlockName> initializeParameters(class Parameters& params) override;
299
306};
307
318public:
322 std::unordered_set<BlockName> initializeParameters(class Parameters& params) override;
323
330};
331
352public:
366 static std::shared_ptr<Parameters> GetInstance(ParameterType id = ParameterType::SM);
367
376
388 bool exist(const BlockName& block, LhaID pdgCode);
389
399 scalar_t operator()(const BlockName& block, LhaID pdgCode) const;
400
408 std::shared_ptr<Parameter> get_parameter(const BlockName& block, LhaID pdgCode);
409
419 void setBlockValue(const BlockName& name, LhaID pdgCode, scalar_t value);
420
427 std::map<LhaID, scalar_t> get_block_infos(BlockName blockName);
428
439 double get_block_scale(BlockName blockName) const;
440
441
447 std::unordered_set<BlockName> get_blocks_list();
448
460 bool is_dependent_block(const BlockName& blockName) const;
461
473 std::vector<std::string> get_source_blocks(const BlockName& blockName) const;
474
486 std::vector<std::string> get_dependent_blocks(const BlockName& blockName) const;
487
498 std::vector<std::string> get_all_source_blocks(const BlockName& blockName) const;
499
510 std::vector<std::string> get_all_dependent_blocks(const BlockName& blockName) const;
511
521 void changeParameterMode(const ParamId& param_id, ParameterMode new_mode);
522
535 void shiftParameter(const ParamId& param_id, scalar_t shift_value);
536
551 std::unordered_set<BlockName> init_blocks(ParameterType type);
552
560 void freeze_block(const BlockName& blockName);
561
569 void unfreeze_block(const BlockName& blockName);
570
577 void freeze_param(const BlockName& blockName, const LhaID& id);
578
585 void unfreeze_param(const BlockName& blockName, const LhaID& id);
586
594 void detach_block(const BlockName& blockName);
595
603 void reattach_block(const BlockName& blockName);
604
613 void detach_param(const BlockName& blockName, const LhaID& id);
614
623 void reattach_param(const BlockName& blockName, const LhaID& id);
624
632 std::shared_ptr<BlockAccessor> get_block_accessor() { return this->blockAccessor;}
633
642 void print_block(const std::string blockname);
643
653 friend std::ostream& operator<<(std::ostream&, std::shared_ptr<Parameters>);
654
660 ~Parameters() { LOG_DEBUG("Parameters at ", this); }
661
662private:
670 void claim_parameters(ParameterType type);
671
680 explicit Parameters(std::shared_ptr<ModelStrategy> modelStrategy);
681
682 static std::map<ParameterType, std::shared_ptr<Parameters>> instances;
683 std::shared_ptr<ModelStrategy> strategy;
684 std::shared_ptr<BlockAccessor> blockAccessor;
685
687 friend class ParametersFactory;
689};
690
704public:
717 static std::shared_ptr<Parameters> GetParameters(ParameterType id);
718
726 static std::shared_ptr<Parameters> CreateUncached(ParameterType id);
727
738 static std::shared_ptr<Parameters> CreateUncachedRegistered(
739 ParameterType id,
740 const std::function<void(const std::shared_ptr<Parameters>&)>& register_before_postinit
741 );
742
750 static void removeParameters(ParameterType id);
751
752 static void clear();
753private:
754 static std::map<ParameterType, std::shared_ptr<Parameters>> instances;
755
773 static std::shared_ptr<ModelStrategy> createStrategy(ParameterType id);
774};
775
776#endif
Alias-aware façade for accessing and manipulating multiple parameter blocks.
Defines parameters whose values are lazily computed from other parameters.
Electroweak helper utilities and dependent-block initialization.
ParameterType
Declares generic calculator interfaces and the general calculator factory.
#define LOG_DEBUG(...)
Macro for logging debug messages.
Definition Logger.h:45
Defines structures and classes for routing and categorizing parameter blocks.
ParameterMode
Defines the modes in which a parameter can operate.
Definition Parameter.h:45
Core QCD utilities for α_s running and quark mass evolution.
Strategy responsible for BSM parameters.
Definition Parameters.h:174
std::unordered_set< BlockName > initializeParameters(class Parameters &params) override
Initializes the block set for the target parameter repository.
void postInitialization(Parameters &params) override
Performs additional initialization after raw blocks are loaded.
Block identifier with alias support.
Definition BlockName.h:59
Strategy responsible for decay-related parameter blocks.
Definition Parameters.h:270
std::unordered_set< BlockName > initializeParameters(class Parameters &params) override
Initializes the block set for the target parameter repository.
void postInitialization(Parameters &) override
Performs additional initialization after raw blocks are loaded.
Definition Parameters.h:282
Static class for handling dependent blocks and parameters across different Parameters instances.
Strategy responsible for flavor-sector input blocks.
Definition Parameters.h:195
std::unordered_set< BlockName > initializeParameters(class Parameters &params) override
Initializes the block set for the target parameter repository.
void postInitialization(Parameters &) override
Performs additional initialization after raw blocks are loaded.
Definition Parameters.h:207
Placeholder / generic strategy class.
Definition Parameters.h:222
std::unordered_set< BlockName > initializeParameters(class Parameters &params) override
Initializes the block set for the target parameter repository.
void postInitialization(Parameters &) override
Performs additional initialization after raw blocks are loaded.
Definition Parameters.h:234
Abstract initialization strategy for one parameter namespace.
Definition Parameters.h:90
void remove_absent_block()
Clears the list of absent blocks.
Definition Parameters.h:130
std::unordered_set< BlockName > absent_blocks
Definition Parameters.h:132
virtual ~ModelStrategy()=default
Virtual destructor.
virtual void postInitialization(Parameters &params)=0
Performs additional initialization after raw blocks are loaded.
void add_absent_block(std::unordered_set< BlockName > _)
Stores the set of blocks absent during initialization.
Definition Parameters.h:125
virtual std::unordered_set< BlockName > initializeParameters(class Parameters &params)=0
Initializes the block set for the target parameter repository.
Strategy responsible for observable-related blocks.
Definition Parameters.h:293
std::unordered_set< BlockName > initializeParameters(class Parameters &params) override
Initializes the block set for the target parameter repository.
void postInitialization(Parameters &) override
Performs additional initialization after raw blocks are loaded.
Definition Parameters.h:305
Factory/cache for Parameters instances.
Definition Parameters.h:703
static std::shared_ptr< Parameters > CreateUncachedRegistered(ParameterType id, const std::function< void(const std::shared_ptr< Parameters > &)> &register_before_postinit)
Creates a fresh uncached repository and registers it before post-initialization.
static std::shared_ptr< Parameters > CreateUncached(ParameterType id)
Creates a fresh uncached repository for a runtime context.
static void clear()
static std::shared_ptr< Parameters > GetParameters(ParameterType id)
Returns the cached repository for one parameter type.
static void removeParameters(ParameterType id)
Removes one cached repository.
Block-based parameter repository for one ParameterType namespace.
Definition Parameters.h:351
void reattach_block(const BlockName &blockName)
Reattaches one previously detached dependent block.
void detach_param(const BlockName &blockName, const LhaID &id)
Detaches one dependent parameter from its upstream dependencies.
std::vector< std::string > get_dependent_blocks(const BlockName &blockName) const
Returns the direct blocks depending on one block.
std::vector< std::string > get_all_dependent_blocks(const BlockName &blockName) const
Returns all transitive blocks depending on one block.
std::unordered_set< BlockName > get_blocks_list()
Returns the list of blocks currently held in this repository.
void unfreeze_block(const BlockName &blockName)
Freezes one whole block.
~Parameters()
Destructor.
Definition Parameters.h:660
void reattach_param(const BlockName &blockName, const LhaID &id)
Reattaches one previously detached dependent parameter.
std::shared_ptr< BlockAccessor > get_block_accessor()
Returns the underlying block accessor.
Definition Parameters.h:632
void shiftParameter(const ParamId &param_id, scalar_t shift_value)
Applies an additive shift to a parameter by rewriting its value.
void CleanupInstance(ParameterType id=ParameterType::SM)
Removes one repository instance from the factory cache.
bool exist(const BlockName &block, LhaID pdgCode)
Checks whether a parameter exists in a given block.
std::unordered_set< BlockName > init_blocks(ParameterType type)
Loads the raw blocks for one parameter namespace from MemoryManager.
scalar_t operator()(const BlockName &block, LhaID pdgCode) const
Reads the current scalar value of a parameter.
void setBlockValue(const BlockName &name, LhaID pdgCode, scalar_t value)
Sets or creates a scalar value inside a block.
void detach_block(const BlockName &blockName)
Detaches one dependent block from its upstream dependency graph.
void changeParameterMode(const ParamId &param_id, ParameterMode new_mode)
Changes the mode of one parameter.
std::shared_ptr< Parameter > get_parameter(const BlockName &block, LhaID pdgCode)
Returns the full Parameter object for one entry.
static std::shared_ptr< Parameters > GetInstance(ParameterType id=ParameterType::SM)
Returns the singleton-like repository for a given parameter type.
std::vector< std::string > get_source_blocks(const BlockName &blockName) const
Returns the direct source blocks of one block.
double get_block_scale(BlockName blockName) const
Returns the scale attached to a block.
void unfreeze_param(const BlockName &blockName, const LhaID &id)
Unfreezes one parameter inside a block.
std::map< LhaID, scalar_t > get_block_infos(BlockName blockName)
Returns all scalar values stored in one block.
void freeze_param(const BlockName &blockName, const LhaID &id)
Freezes one parameter inside a block.
void freeze_block(const BlockName &blockName)
Freezes one whole block.
friend std::ostream & operator<<(std::ostream &, std::shared_ptr< Parameters >)
Stream output operator for the whole repository.
void print_block(const std::string blockname)
Prints one block to stdout.
std::vector< std::string > get_all_source_blocks(const BlockName &blockName) const
Returns all transitive source blocks of one block.
bool is_dependent_block(const BlockName &blockName) const
Checks whether one block is a dependent block.
Strategy responsible for passthrough / output-preserved blocks.
Definition Parameters.h:317
std::unordered_set< BlockName > initializeParameters(class Parameters &params) override
Initializes the block set for the target parameter repository.
void postInitialization(Parameters &) override
Performs additional initialization after raw blocks are loaded.
Definition Parameters.h:329
Strategy responsible for Standard Model parameters.
Definition Parameters.h:149
void postInitialization(Parameters &params) override
Performs additional initialization after raw blocks are loaded.
std::unordered_set< BlockName > initializeParameters(class Parameters &params) override
Initializes the block set for the target parameter repository.
Strategy responsible for Wilson-coefficient input blocks.
Definition Parameters.h:249
void postInitialization(Parameters &params) override
Performs additional initialization after raw blocks are loaded.
std::unordered_set< BlockName > initializeParameters(class Parameters &params) override
Initializes the block set for the target parameter repository.
Represents an identifier of a LHA element, possibly containing several sub-ids.
Definition LhaID.h:56
Composite identifier for a single parameter.
Definition ParamID.h:57