LOGO

RestFrames  v1.0.1
RestFrames HEP Event Analysis Software Library
InvisibleJigsaw.hh
Go to the documentation of this file.
1 // RestFrames: particle physics event analysis library
3 // --------------------------------------------------------------------
4 // Copyright (c) 2014-2016, Christopher Rogan
14 // This file is part of RestFrames.
15 //
16 // RestFrames is free software; you can redistribute it and/or modify
17 // it under the terms of the GNU General Public License as published by
18 // the Free Software Foundation; either version 2 of the License, or
19 // (at your option) any later version.
20 //
21 // RestFrames is distributed in the hope that it will be useful,
22 // but WITHOUT ANY WARRANTY; without even the implied warranty of
23 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 // GNU General Public License for more details.
25 //
26 // You should have received a copy of the GNU General Public License
27 // along with RestFrames. If not, see <http://www.gnu.org/licenses/>.
29 
30 #ifndef InvisibleJigsaw_HH
31 #define InvisibleJigsaw_HH
32 
33 #include "RestFrames/Jigsaw.hh"
36 
37 namespace RestFrames {
38 
39  class InvisibleJigsaw : public Jigsaw {
40  public:
41 
48  InvisibleJigsaw(const std::string& sname,
49  const std::string& stitle,
50  int Ninvisible, int Nvisible);
51 
54  virtual ~InvisibleJigsaw();
55 
57  virtual void Clear();
58 
66  void SetGroup(Group& group = Group::Empty());
67 
71  InvisibleGroup& GetGroup() const;
72 
81  void AddVisibleFrame(const RestFrame& frame, int i = 0);
82 
91  void AddVisibleFrames(const ConstRestFrameList& frames, int i = 0);
92 
101  void AddInvisibleFrame(const RestFrame& frame, int i = 0);
102 
112  void AddInvisibleFrames(const ConstRestFrameList& frames, int i = 0);
113 
125  void AddMassFrame(const RestFrame& frame, int i = 0);
126 
139  void AddMassFrames(const ConstRestFrameList& frames, int i = 0);
140 
147  virtual double GetMinimumMass() const;
148 
152  static InvisibleJigsaw& Empty();
153 
154  protected:
155  bool m_InvMassDependancy;
156 
157  virtual bool IsSoundBody() const;
158  InvisibleState& GetNewChildState();
159 
160  void SetParentState(State& state = State::Empty());
161  InvisibleState const& GetParentState() const;
162 
163  InvisibleState& GetChildState(int i) const;
164 
165  virtual bool InitializeAnalysis();
166  bool InitializeDependancyJigsaws();
167  bool InitializeJigsawExecutionList(JigsawList& exec_jigsaws, JigsawList& todo_jigsaws);
168 
169  virtual void FillInvisibleMassJigsawDependancies(JigsawList& jigsaws) const;
170 
171  private:
172  const int m_Nvis;
173  const int m_Ninv;
174 
175  };
176 
177 }
178 
179 #endif
RestFrames::InvisibleJigsaw::AddInvisibleFrame
void AddInvisibleFrame(const RestFrame &frame, int i=0)
Adds an InvisibleFrame to current jigsaw.
Definition: InvisibleJigsaw.cc:131
RestFrames::InvisibleJigsaw::Empty
static InvisibleJigsaw & Empty()
Returns empty InvisibleJigsaw.
Definition: InvisibleJigsaw.cc:62
RestFrames::InvisibleJigsaw::SetGroup
void SetGroup(Group &group=Group::Empty())
Sets group (Group) to current jigsaw.
Definition: InvisibleJigsaw.cc:66
RestFrames::Group::Empty
static Group & Empty()
Returns empty Group.
Definition: Group.cc:58
RestFrames::InvisibleJigsaw::AddMassFrame
void AddMassFrame(const RestFrame &frame, int i=0)
Adds a visible frame to current jigsaw.
Definition: InvisibleJigsaw.cc:115
RestFrames::InvisibleJigsaw::GetGroup
InvisibleGroup & GetGroup() const
Returns group (Group) associated with this jigsaw.
Definition: InvisibleJigsaw.cc:72
InvisibleState.hh
RestFrames::RestFrame
abstract base class for all Frame objects
Definition: RestFrame.hh:45
RestFrames::Group
abstract base class for all Group objects
Definition: Group.hh:46
RestFrames::RFList< const RestFrame >
Jigsaw.hh
RestFrames::InvisibleJigsaw::AddVisibleFrame
void AddVisibleFrame(const RestFrame &frame, int i=0)
Adds a VisibleFrame to current jigsaw.
Definition: InvisibleJigsaw.cc:99
RestFrames::InvisibleJigsaw::AddVisibleFrames
void AddVisibleFrames(const ConstRestFrameList &frames, int i=0)
Adds a list of visible frames to current jigsaw.
Definition: InvisibleJigsaw.cc:109
RestFrames::State::Empty
static State & Empty()
Returns empty state.
Definition: State.cc:68
RestFrames::InvisibleJigsaw::AddInvisibleFrames
void AddInvisibleFrames(const ConstRestFrameList &frames, int i=0)
Adds a list of invisible frames to current jigsaw.
Definition: InvisibleJigsaw.cc:141
RestFrames::InvisibleJigsaw::Clear
virtual void Clear()
Clears InvisibleJigsaw of all connections to other objects
Definition: InvisibleJigsaw.cc:58
RestFrames::InvisibleJigsaw::AddMassFrames
void AddMassFrames(const ConstRestFrameList &frames, int i=0)
Adds a list visible frames to current jigsaw.
Definition: InvisibleJigsaw.cc:125
RestFrames::Jigsaw
abstract base class for all Jigsaw objects
Definition: Jigsaw.hh:44
RestFrames::InvisibleJigsaw::GetMinimumMass
virtual double GetMinimumMass() const
Returns minimum Lorentz invariant mass.
Definition: InvisibleJigsaw.cc:156
RestFrames::InvisibleJigsaw
Definition: InvisibleJigsaw.hh:39
RestFrames::State
Abstract base class for all State objects.
Definition: State.hh:47
InvisibleGroup.hh
RestFrames::InvisibleState
Definition: InvisibleState.hh:40
RestFrames::InvisibleJigsaw::InvisibleJigsaw
InvisibleJigsaw()
Empty constructor.
Definition: InvisibleJigsaw.cc:53
RestFrames::InvisibleGroup
Definition: InvisibleGroup.hh:40