CMS 3D CMS Logo

GraphUtil.h
Go to the documentation of this file.
1 #ifndef DATA_FORMATS_MATH_GRAPH_UTIL_H
2 #define DATA_FORMATS_MATH_GRAPH_UTIL_H
3 
6 #include <iostream>
7 #include <string>
8 
9 template <class N, class E>
10 void output(const math::Graph<N, E>& g, const N& root) {
12  bool go = true;
13  while (go) {
14  std::cout << w.current().first << ' ';
15  go = w.next();
16  }
17  std::cout << std::endl;
18 }
19 
20 template <class N, class E>
22  const math::Graph<N, E>& g2,
23  const N& n1,
24  const N& n2,
25  const N& root,
27  result = g1;
28  result.replace(n1, n2);
29  math::GraphWalker<N, E> walker(g2, n2);
30  while (walker.next()) {
31  const N& parent = g2.nodeData((++walker.stack().rbegin())->first->first);
32  result.addEdge(parent, walker.current().first, walker.current().second);
33  }
34  result.replace(n2, root);
35 }
36 
37 template <class N, class E>
38 void graph_tree_output(const math::Graph<N, E>& g, const N& root, std::ostream& os) {
40  bool go = true;
41  unsigned int depth = 0;
42  while (go) {
43  std::string s(2 * depth, ' ');
44  os << ' ' << s << w.current().first << '(' << w.current().second << ')' << std::endl;
45  go = w.firstChild();
46  if (go) {
47  ++depth;
48  } else if (w.stack().size() > 1 && w.nextSibling()) {
49  go = true;
50  } else {
51  go = false;
52  while (w.parent()) {
53  --depth;
54  if (w.stack().size() > 1 && w.nextSibling()) {
55  go = true;
56  break;
57  }
58  }
59  }
60  }
61 }
62 
63 #endif
math::GraphWalker
Definition: GraphWalker.h:12
gather_cfg.cout
cout
Definition: gather_cfg.py:144
diffTwoXMLs.g1
g1
Definition: diffTwoXMLs.py:52
math::GraphWalker::stack
const stack_type & stack() const
Definition: GraphWalker.h:54
graph_combine
void graph_combine(const math::Graph< N, E > &g1, const math::Graph< N, E > &g2, const N &n1, const N &n2, const N &root, math::Graph< N, E > &result)
Definition: GraphUtil.h:21
alignCSCRings.s
s
Definition: alignCSCRings.py:92
output
void output(const math::Graph< N, E > &g, const N &root)
Definition: GraphUtil.h:10
w
const double w
Definition: UKUtility.cc:23
N
#define N
Definition: blowfish.cc:9
LEDCalibrationChannels.depth
depth
Definition: LEDCalibrationChannels.py:65
first
auto first
Definition: CAHitNtupletGeneratorKernelsImpl.h:112
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
GraphWalker.h
math::GraphWalker::current
value_type current() const
Definition: GraphWalker.h:88
root
Definition: RooFitFunction.h:10
diffTwoXMLs.g2
g2
Definition: diffTwoXMLs.py:71
graph_tree_output
void graph_tree_output(const math::Graph< N, E > &g, const N &root, std::ostream &os)
Definition: GraphUtil.h:38
Graph.h
math::GraphWalker::next
result_type next()
Definition: GraphWalker.h:142
math::Graph
Definition: Graph.h:13
mps_fire.result
result
Definition: mps_fire.py:311
class-composition.parent
parent
Definition: class-composition.py:88
g
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4