Sector decomposition
polyhedra.h
Go to the documentation of this file.
1
8/*
9 * Copyright (C) 2007 Stefan Weinzierl
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 */
25
26#ifndef __SECTOR_DECOMPOSITION_POLYHEDRA_H__
27#define __SECTOR_DECOMPOSITION_POLYHEDRA_H__
28
29#include <vector>
30#include <cstddef>
31#include <iostream>
32
33#include <ginac/ginac.h>
34
35#include "integrand.h"
36
37namespace sector_decomposition {
38
47 {
48 // ctors
49 public:
50 polyhedra();
51 polyhedra(GiNaC::ex poly, const std::vector<size_t> & index, const integration_data & global_data);
52 polyhedra(const polyhedra & p1, const polyhedra & p2);
53
54 // member functions
55 public:
56 size_t number_corners() const;
57
60 polyhedra & add_point(const std::vector<GiNaC::ex> & point);
61
62 GiNaC::ex get_factorization_degree() const;
63 GiNaC::ex get_factorization_degree(const multi_index_ordered & index_set) const;
64
65 void get_omega(std::vector<GiNaC::ex> & omega) const;
66
67 void find_S(std::vector<bool> & S, GiNaC::ex f_degree) const;
68
69 polyhedra & projection(const std::vector<bool> & S, GiNaC::ex f, GiNaC::ex c);
70
71 void find_minimal_subsector(std::vector<size_t> & index_set, GiNaC::ex f) const;
72
73 // I/O operators
74 friend std::ostream & operator<< (std::ostream & os, const polyhedra & arg);
75
76 // member variables
77 public:
79 std::vector<size_t> index;
80
82 std::vector<std::vector<GiNaC::ex> > coordinates;
83 };
84
85} // namespace sector_decomposition
86
87#endif // ndef __SECTOR_DECOMPOSITION_POLYHEDRA_H__
88
Definition: integrand.h:52
Definition: multi_index.h:96
Definition: polyhedra.h:47
void find_S(std::vector< bool > &S, GiNaC::ex f_degree) const
Definition: polyhedra.cc:338
void get_omega(std::vector< GiNaC::ex > &omega) const
Definition: polyhedra.cc:312
polyhedra & projection(const std::vector< bool > &S, GiNaC::ex f, GiNaC::ex c)
Definition: polyhedra.cc:369
polyhedra & keep_corners_only()
Definition: polyhedra.cc:133
polyhedra & add_point(const std::vector< GiNaC::ex > &point)
Definition: polyhedra.cc:236
std::vector< size_t > index
a vector, serving as an index for the Feynman parameters
Definition: polyhedra.h:79
std::vector< std::vector< GiNaC::ex > > coordinates
an array with the coordinates of the points of the polyhedron
Definition: polyhedra.h:82
friend std::ostream & operator<<(std::ostream &os, const polyhedra &arg)
Definition: polyhedra.cc:452
size_t number_corners() const
Definition: polyhedra.cc:121
polyhedra & factorize_single_variables()
Definition: polyhedra.cc:201
void find_minimal_subsector(std::vector< size_t > &index_set, GiNaC::ex f) const
Definition: polyhedra.cc:422
GiNaC::ex get_factorization_degree() const
Definition: polyhedra.cc:248
polyhedra()
Definition: polyhedra.cc:38
Definition: basic_sector_decomposition.cc:36