DDCompactViewImpl

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
#ifndef DETECTOR_DESCRIPTION_CORE_DD_COMPACT_VIEW_IMPL_H
#define DETECTOR_DESCRIPTION_CORE_DD_COMPACT_VIEW_IMPL_H

#include "DetectorDescription/Core/interface/DDTranslation.h"
#include "DetectorDescription/Core/interface/DDLogicalPart.h"
#include "DetectorDescription/Core/interface/DDPosData.h"
#include "DetectorDescription/Core/interface/DDTransform.h"
#include "DataFormats/Math/interface/Graph.h"
#include "DataFormats/Math/interface/GraphWalker.h"

class DDDivision;
struct DDPosData;

class DDCompactViewImpl {
public:
  using Graph = math::Graph<DDLogicalPart, DDPosData*>;
  using GraphWalker = math::GraphWalker<DDLogicalPart, DDPosData*>;

  explicit DDCompactViewImpl();
  DDCompactViewImpl(const DDLogicalPart& rootnodedata);
  ~DDCompactViewImpl();

  //reassigns root with no check!!!
  void setRoot(const DDLogicalPart& root) { root_ = root; }

  const DDLogicalPart& root() const { return root_; }

  DDLogicalPart& current() const;

  const Graph& graph() const { return graph_; }
  GraphWalker walker() const;

  void position(const DDLogicalPart& self,
                const DDLogicalPart& parent,
                int copyno,
                const DDTranslation& trans,
                const DDRotation& rot,
                const DDDivision* div);

  void swap(DDCompactViewImpl&);

protected:
  // internal use ! (see comments in DDCompactView(bool)!)
  DDLogicalPart root_;
  Graph graph_;
};

#endif