Hammer  1.0.0
Helicity Amplitude Module for Matrix Element Reweighting
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MultiDimensional.fhh
Go to the documentation of this file.
1 ///
2 /// @file MultiDimensional.fhh
3 /// @brief Forward declarations of types used in the tensor classes
4 ///
5 
6 //**** This file is a part of the HAMMER library
7 //**** Copyright (C) 2016 - 2020 The HAMMER Collaboration
8 //**** HAMMER is licensed under version 3 of the GPL; see COPYING for details
9 //**** Please note the MCnet academic guidelines; see GUIDELINES for details
10 
11 // -*- C++ -*-
12 #ifndef HAMMER_MATH_MULTIDIMENSIONAL_FHH
13 #define HAMMER_MATH_MULTIDIMENSIONAL_FHH
14 
15 #include <map>
16 #include <set>
17 #include <vector>
18 #include <memory>
19 #include <cstddef>
20 
21 namespace Hammer {
22 
23  using IndexType = uint16_t; //Lots of space for integrator dimensions
24  using IndexPair = std::pair<IndexType, IndexType>;
25  using IndexList = std::vector<IndexType>;
26  using UniqueIndexList = std::set<IndexType>;
27  using IndexPairList = std::vector<IndexPair>;
28  // using IndexBoolPairList = std::vector<std::pair<IndexType, bool>>;
29 
30  using PositionType = size_t;
31  using PositionPair = std::pair<PositionType, PositionType>;
32  using PositionList = std::vector<PositionType>;
33  using PositionPairList = std::vector<PositionPair>;
34 
35  using PosIndexPair = std::pair<PositionType, IndexType>;
36  using PosIndexPairList = std::vector<PosIndexPair>;
37 
38  enum IndexLabel : int;
39  using LabelPair = std::pair<IndexLabel, IndexLabel>;
40  using LabelsList = std::vector<IndexLabel>;
41  using UniqueLabelsList = std::set<IndexLabel>;
42  using LabelPairsSet = std::set<LabelPair>;
43 
44  namespace MultiDimensional {
45 
46  class IContainer;
47  using TensorData = std::unique_ptr<IContainer>;
48  using SharedTensorData = std::shared_ptr<IContainer>;
49  }
50 
51 } // namespace Hammer
52 
53 #endif
std::pair< IndexType, IndexType > IndexPair
std::vector< PosIndexPair > PosIndexPairList
std::vector< IndexPair > IndexPairList
size_t PositionType
std::pair< PositionType, PositionType > PositionPair
int std::pair< IndexLabel, IndexLabel > LabelPair
uint16_t IndexType
std::unique_ptr< IContainer > TensorData
std::shared_ptr< IContainer > SharedTensorData
std::vector< IndexType > IndexList
std::pair< PositionType, IndexType > PosIndexPair
IndexLabel
label identifiers of tensor indices they are used to determine which indices can be contracted togeth...
Definition: IndexLabels.hh:27
std::set< IndexType > UniqueIndexList
std::vector< PositionPair > PositionPairList
std::vector< IndexLabel > LabelsList
std::set< IndexLabel > UniqueLabelsList
std::set< LabelPair > LabelPairsSet
std::vector< PositionType > PositionList