30 #ifndef CombinatoricJigsaw_HH
31 #define CombinatoricJigsaw_HH
44 const std::string& stitle,
45 int Ncomb,
int Nobject);
53 virtual void SetGroup(
Group& group = Group::Empty());
56 virtual void AddCombFrame(
const RestFrame& frame,
int i = 0);
59 virtual void AddObjectFrame(
const RestFrame& frame,
int i = 0);
62 void SetCombCharge(
const RFCharge& charge,
int i);
63 void SetCombCharge(
int charge,
int i);
64 void SetCombCharge(
int charge_num,
int charge_den,
int i);
65 void UnsetCombCharge(
int i);
67 void SetObjectCharge(
const RFCharge& charge,
int i);
68 void SetObjectCharge(
int charge,
int i);
69 void SetObjectCharge(
int charge_num,
int charge_den,
int i);
70 void UnsetObjectCharge(
int i);
73 virtual bool IsSoundBody()
const;
76 virtual bool InitializeAnalysis();
78 virtual bool InitializeCombinatoric();
79 virtual bool LoopCombinatoric();
81 virtual bool EvaluateMetric(
double& metric)
const = 0;
83 virtual bool AnalyzeEvent();
85 int GetNInputStates()
const;
88 int GetNinputForChild(
int i = 0)
const;
89 bool IsNinputExclForChild(
int i = 0)
const;
91 bool IsChargeSetForChild(
int i = 0)
const;
92 RFCharge GetChargeForChild(
int i = 0)
const;
93 bool IsChargeSetForObject(
int i = 0)
const;
94 RFCharge GetChargeForObject(
int i = 0)
const;
96 void SetParentState(
State& state = State::Empty());
101 bool InitializeJigsawExecutionList(
JigsawList& exec_jigsaws);
104 bool ExecuteDependancyJigsaws();
113 bool m_NExclusiveTOT;
114 std::vector<int> m_NForChild;
115 std::vector<int> m_NExclusive;
116 mutable std::map<int, RFCharge> m_ChargeForChild;
117 mutable std::map<int, RFCharge> m_ChargeForObject;
abstract base class for all Jigsaw objects
virtual void Clear()
Clears Jigsaw of all connections to other objects.
abstract base class for all Group objects
abstract base class for all Frame objects
abstract base class for all State objects