ant
A2 ant: class-based analysis framework
ant::analysis::utils::TreeFitter Class Reference

#include <TreeFitter.h>

+ Inheritance diagram for ant::analysis::utils::TreeFitter:
+ Collaboration diagram for ant::analysis::utils::TreeFitter:

Classes

struct  iteration_t
 
struct  node_t
 The node_t struct represents. More...
 
struct  nodesetup_t
 

Public Types

using iteration_filter_t = std::function< double()>
 
using tree_t = Tree< node_t >::node_t
 

Public Member Functions

 TreeFitter (ParticleTypeTree ptree, UncertaintyModelPtr uncertainty_model=nullptr, bool fit_Z_vertex=false, nodesetup_t::getter nodeSetup={}, const APLCON::Fit_Settings_t &settings=DefaultSettings)
 TreeFitter creates fitter for the given ParticleTypeTree. Applies IM constraint to each node, can be customized by optional nodeSetup. Supports only photon leaf permutations at the moment (but single extra final state particles are ok). More...
 
 TreeFitter (const TreeFitter &)=delete
 
TreeFitteroperator= (const TreeFitter &)=delete
 
 TreeFitter (TreeFitter &&)=default
 
TreeFitteroperator= (TreeFitter &&)=default
 
void PrepareFits (double ebeam, const TParticlePtr &proton, const TParticleList &photons)
 
void SetIterationFilter (iteration_filter_t filter, unsigned max=0)
 SetIterationFilter. More...
 
tree_t GetTreeNode (const ParticleTypeDatabase::Type &type) const
 GetTreeNode returns the first pointer to a tree node. More...
 
std::vector< tree_tGetTreeNodes (const ParticleTypeDatabase::Type &type) const
 
bool NextFit (APLCON::Result_t &fit_result)
 NextFit runs the next fit iteration. More...
 
- Public Member Functions inherited from ant::analysis::utils::KinFitter
 KinFitter (UncertaintyModelPtr uncertainty_model=nullptr, bool fit_Z_vertex=false, const APLCON::Fit_Settings_t &settings=DefaultSettings)
 KinFitter applies energy-momentum constraint to proton/photons using incoming beam. More...
 
void SetZVertexSigma (double sigma)
 
bool IsZVertexFitEnabled () const noexcept
 
bool IsZVertexUnmeasured () const
 
void SetTarget (double length, double center=0.)
 
TParticlePtr GetFittedProton () const
 
TParticleList GetFittedPhotons () const
 
double GetFittedBeamE () const
 
TParticlePtr GetFittedBeamParticle () const
 
double GetFittedZVertex () const
 
double GetBeamEPull () const
 
double GetZVertexPull () const
 
std::vector< FitParticleGetFitParticles () const
 
APLCON::Result_t DoFit (double ebeam, const TParticlePtr &proton, const TParticleList &photons)
 
void SetUncertaintyModel (const UncertaintyModelPtr &uncertainty_model)
 

Protected Types

using permutation_t = std::vector< int >
 
using sum_daughters_t = std::vector< std::function< void()> >
 
using node_constraint_t = std::function< double()>
 
- Protected Types inherited from ant::analysis::utils::KinFitter
using Proton_t = FitParticle
 
using Photons_t = std::vector< FitParticle >
 

Protected Member Functions

void PrepareFit (const iteration_t &it)
 
void do_sum_daughters () const
 
std::vector< double > constraintIMatNodes () const
 
- Protected Member Functions inherited from ant::analysis::utils::KinFitter
void PrepareFit (double ebeam, const TParticlePtr &proton, const TParticleList &photons)
 
double CalcZVertexStartingPoint () const
 
- Protected Member Functions inherited from ant::analysis::utils::Fitter
 Fitter ()=default
 

Static Protected Member Functions

static tree_t MakeTree (ParticleTypeTree ptree)
 
static unsigned CountGammas (ParticleTypeTree ptree)
 
- Static Protected Member Functions inherited from ant::analysis::utils::KinFitter
static std::array< double, 4 > constraintEnergyMomentum (const BeamE_t &beam, const Proton_t &proton, const Photons_t &photons, const Z_Vertex_t &)
 

Protected Attributes

const tree_t tree
 
std::vector< tree_ttree_leaves
 
std::vector< permutation_tpermutations
 
int i_leaf_offset
 
sum_daughters_t sum_daughters
 
std::vector< node_constraint_tnode_constraints
 
std::list< iteration_titerations
 
unsigned max_iterations = 0
 
iteration_filter_t iteration_filter
 
- Protected Attributes inherited from ant::analysis::utils::KinFitter
BeamE_t BeamE
 
Proton_t Proton
 
Photons_t Photons
 
Z_Vertex_t Z_Vertex
 
Target_t Target
 
APLCON::Fitter< BeamE_t, Proton_t, Photons_t, Z_Vertex_t > aplcon
 

Additional Inherited Members

- Static Public Attributes inherited from ant::analysis::utils::Fitter
static const APLCON::Fit_Settings_t DefaultSettings
 

Member Typedef Documentation

◆ iteration_filter_t

◆ node_constraint_t

using ant::analysis::utils::TreeFitter::node_constraint_t = std::function<double()>
protected

◆ permutation_t

using ant::analysis::utils::TreeFitter::permutation_t = std::vector<int>
protected

◆ sum_daughters_t

using ant::analysis::utils::TreeFitter::sum_daughters_t = std::vector<std::function<void()> >
protected

◆ tree_t

Constructor & Destructor Documentation

◆ TreeFitter() [1/3]

TreeFitter::TreeFitter ( ParticleTypeTree  ptree,
UncertaintyModelPtr  uncertainty_model = nullptr,
bool  fit_Z_vertex = false,
nodesetup_t::getter  nodeSetup = {},
const APLCON::Fit_Settings_t &  settings = DefaultSettings 
)
explicit

TreeFitter creates fitter for the given ParticleTypeTree. Applies IM constraint to each node, can be customized by optional nodeSetup. Supports only photon leaf permutations at the moment (but single extra final state particles are ok).

Parameters
ptreetree describing the decay to be fitted
uncertainty_modelthe uncertainties, see KinFitter
fit_Z_vertexmake z vertex unfixed (not equal to zero)
nodeSetupfine-grained control over each node in the particle type tree
settingsfit settings for APLCON (iterations, epsilons, ...)

◆ TreeFitter() [2/3]

ant::analysis::utils::TreeFitter::TreeFitter ( const TreeFitter )
delete

◆ TreeFitter() [3/3]

ant::analysis::utils::TreeFitter::TreeFitter ( TreeFitter &&  )
default

Member Function Documentation

◆ constraintIMatNodes()

std::vector< double > TreeFitter::constraintIMatNodes ( ) const
protected

◆ CountGammas()

unsigned TreeFitter::CountGammas ( ParticleTypeTree  ptree)
staticprotected

◆ do_sum_daughters()

void TreeFitter::do_sum_daughters ( ) const
protected

◆ GetTreeNode()

TreeFitter::tree_t TreeFitter::GetTreeNode ( const ParticleTypeDatabase::Type type) const

GetTreeNode returns the first pointer to a tree node.

Parameters
type
Returns
nullptr if not found
See also
GetTreeNodes to get all matching nodes

◆ GetTreeNodes()

std::vector< TreeFitter::tree_t > TreeFitter::GetTreeNodes ( const ParticleTypeDatabase::Type type) const

◆ MakeTree()

TreeFitter::tree_t TreeFitter::MakeTree ( ParticleTypeTree  ptree)
staticprotected

◆ NextFit()

bool TreeFitter::NextFit ( APLCON::Result_t &  fit_result)

NextFit runs the next fit iteration.

Parameters
fit_result
Returns
true if fit successfully run, false if no fit executed and thus fit_result unchanged

◆ operator=() [1/2]

TreeFitter& ant::analysis::utils::TreeFitter::operator= ( const TreeFitter )
delete

◆ operator=() [2/2]

TreeFitter& ant::analysis::utils::TreeFitter::operator= ( TreeFitter &&  )
default

◆ PrepareFit()

void TreeFitter::PrepareFit ( const iteration_t it)
protected

◆ PrepareFits()

void TreeFitter::PrepareFits ( double  ebeam,
const TParticlePtr proton,
const TParticleList photons 
)

◆ SetIterationFilter()

void TreeFitter::SetIterationFilter ( TreeFitter::iteration_filter_t  filter,
unsigned  max = 0 
)

SetIterationFilter.

Parameters
filterfunction returning a quality factor for the iteration. factor=0 means skip iteration.
maxonly runs the best max number of iterations
Note
the info about the current state should be managed by captured pointers to tree nodes of interest

Member Data Documentation

◆ i_leaf_offset

int ant::analysis::utils::TreeFitter::i_leaf_offset
protected

◆ iteration_filter

iteration_filter_t ant::analysis::utils::TreeFitter::iteration_filter
protected

◆ iterations

std::list<iteration_t> ant::analysis::utils::TreeFitter::iterations
protected

◆ max_iterations

unsigned ant::analysis::utils::TreeFitter::max_iterations = 0
protected

◆ node_constraints

std::vector<node_constraint_t> ant::analysis::utils::TreeFitter::node_constraints
protected

◆ permutations

std::vector<permutation_t> ant::analysis::utils::TreeFitter::permutations
protected

◆ sum_daughters

sum_daughters_t ant::analysis::utils::TreeFitter::sum_daughters
protected

◆ tree

const tree_t ant::analysis::utils::TreeFitter::tree
protected

◆ tree_leaves

std::vector<tree_t> ant::analysis::utils::TreeFitter::tree_leaves
protected

The documentation for this class was generated from the following files: