Belle II Software  release-05-02-19
InternalParticle.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2018 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributor: Wouter Hulsbergen, Francesco Tenchini, Jo-Frederik Krohn *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #pragma once
11 
12 #include <analysis/VertexFitting/TreeFitter/ParticleBase.h>
13 #include <analysis/VertexFitting/TreeFitter/RecoTrack.h>
14 
15 namespace TreeFitter {
16 
18  class InternalParticle : public ParticleBase {
19 
20  public:
21 
24  const ParticleBase* mother,
25  const ConstraintConfiguration& config,
26  bool forceFitAll
27  ) ;
28 
30  virtual ~InternalParticle() {};
31 
33  virtual ErrCode initCovariance(FitParams&) const override;
34 
37 
39  virtual void forceP4Sum(FitParams&) const override;
40 
42  virtual ErrCode initParticleWithMother(FitParams& fitparams) override;
43 
45  virtual ErrCode initMotherlessParticle(FitParams& fitparams) override;
46 
48  ErrCode projectConstraint(const Constraint::Type type, const FitParams& fitparams, Projection& p) const override;
49 
51  virtual int dim() const override;
52 
54  virtual int type() const override { return kInternalParticle ; }
55 
57  virtual int posIndex() const override;
58 
60  virtual int tauIndex() const override;
61 
63  virtual int momIndex() const override;
64 
66  virtual bool hasEnergy() const override { return true ; }
67 
69  virtual bool hasPosition() const override;
70 
72  virtual std::string parname(int index) const override ;
73 
75  virtual void addToConstraintList(constraintlist& list, int depth) const override ;
76 
78  void setMassConstraint(bool b) { m_massconstraint = b ; }
79 
81  double phidomain(const double);
82 
83  protected:
84 
86  ErrCode initMomentum(FitParams& fitparams) const ;
87 
88  private:
89 
91  bool static compTrkTransverseMomentum(const RecoTrack* lhs, const RecoTrack* rhs);
92 
95 
98 
100  bool m_geo_constraint;
101 
103  bool m_lifetimeconstraint ;
104 
106  bool m_isconversion ;
107 
111  } ;
112 
113 }
TreeFitter::InternalParticle::m_massconstraint
bool m_massconstraint
has mass cosntraint
Definition: InternalParticle.h:110
TreeFitter::InternalParticle::m_isconversion
bool m_isconversion
is conversion
Definition: InternalParticle.h:122
TreeFitter::InternalParticle::projectKineConstraint
ErrCode projectKineConstraint(const FitParams &, Projection &) const
project kinematical constraint
Definition: InternalParticle.cc:216
TreeFitter::InternalParticle::hasEnergy
virtual bool hasEnergy() const override
has energy in fitparams
Definition: InternalParticle.h:82
TreeFitter::InternalParticle::forceP4Sum
virtual void forceP4Sum(FitParams &) const override
enforce conservation of momentum sum
Definition: InternalParticle.cc:367
TreeFitter::InternalParticle::type
virtual int type() const override
type
Definition: InternalParticle.h:70
TreeFitter::ParticleBase::ParticleBase
ParticleBase(Belle2::Particle *particle, const ParticleBase *mother, const ConstraintConfiguration *config)
default constructor
Definition: ParticleBase.cc:41
TreeFitter::InternalParticle::m_lifetimeconstraint
bool m_lifetimeconstraint
has lifetime constraint
Definition: InternalParticle.h:119
TreeFitter::InternalParticle::m_automatic_vertex_constraining
bool m_automatic_vertex_constraining
automatically figure out if mother and particle vertex should be the same and also add geometric cons...
Definition: InternalParticle.h:126
TreeFitter::ErrCode
abstract errorocode be aware that the default is succes
Definition: ErrCode.h:23
TreeFitter::InternalParticle::tauIndex
virtual int tauIndex() const override
tau index in fit params only if it has a mother
Definition: InternalParticle.cc:307
TreeFitter::FitParams
Class to store and manage fitparams (statevector)
Definition: FitParams.h:29
TreeFitter::InternalParticle::m_shares_vertex_with_mother
bool m_shares_vertex_with_mother
shares vertex with mother, that means decay vertex = productionvertex
Definition: InternalParticle.h:113
TreeFitter::InternalParticle::addToConstraintList
virtual void addToConstraintList(constraintlist &list, int depth) const override
add to constraint list
Definition: InternalParticle.cc:336
TreeFitter::RecoTrack
reprasentation of all charged final states FIXME rename since this name is taken in tracking
Definition: RecoTrack.h:27
TreeFitter::Constraint::Type
Type
type of constraints the order of these constraints is important: it is the order in which they are ap...
Definition: Constraint.h:36
TreeFitter::ParticleBase::index
int index() const
get index
Definition: ParticleBase.h:112
TreeFitter::InternalParticle::initMotherlessParticle
virtual ErrCode initMotherlessParticle(FitParams &fitparams) override
init particle in case it has no mother
Definition: InternalParticle.cc:86
TreeFitter::InternalParticle::dim
virtual int dim() const override
space reserved in fit params, if has mother then it has tau
Definition: InternalParticle.cc:292
TreeFitter::InternalParticle::initParticleWithMother
virtual ErrCode initParticleWithMother(FitParams &fitparams) override
init particle in case it has a mother
Definition: InternalParticle.cc:170
TreeFitter::InternalParticle::projectConstraint
ErrCode projectConstraint(const Constraint::Type type, const FitParams &fitparams, Projection &p) const override
find out which constraint it is and project
Definition: InternalParticle.cc:264
TreeFitter::InternalParticle::parname
virtual std::string parname(int index) const override
name
Definition: InternalParticle.cc:360
TreeFitter::InternalParticle::setMassConstraint
void setMassConstraint(bool b)
set mass constraint flag
Definition: InternalParticle.h:94
TreeFitter::InternalParticle::compTrkTransverseMomentum
static bool compTrkTransverseMomentum(const RecoTrack *lhs, const RecoTrack *rhs)
compare transverse track momentum
Definition: InternalParticle.cc:80
TreeFitter::ParticleBase::constraintlist
std::vector< Constraint > constraintlist
alias
Definition: ParticleBase.h:69
Belle2::Particle
Class to store reconstructed particles.
Definition: Particle.h:77
TreeFitter::InternalParticle::momIndex
virtual int momIndex() const override
momentum index in fit params depending on whether it has a mother
Definition: InternalParticle.cc:313
TreeFitter::InternalParticle::initMomentum
ErrCode initMomentum(FitParams &fitparams) const
init momentum of *this and daughters
Definition: InternalParticle.cc:185
TreeFitter::InternalParticle::~InternalParticle
virtual ~InternalParticle()
destructor
Definition: InternalParticle.h:46
TreeFitter::ParticleBase::mother
const ParticleBase * mother() const
getMother() / hasMother()
Definition: ParticleBase.cc:295
TreeFitter::InternalParticle::m_geo_constraint
bool m_geo_constraint
use a geo metric constraint
Definition: InternalParticle.h:116
TreeFitter::InternalParticle::hasPosition
virtual bool hasPosition() const override
has position index
Definition: InternalParticle.cc:329
TreeFitter::InternalParticle::InternalParticle
InternalParticle(Belle2::Particle *particle, const ParticleBase *mother, const ConstraintConfiguration &config, bool forceFitAll)
constructor
Definition: InternalParticle.cc:41
TreeFitter::InternalParticle::phidomain
double phidomain(const double)
rotate in positive phi domain
TreeFitter::InternalParticle::initCovariance
virtual ErrCode initCovariance(FitParams &) const override
init covariance
Definition: InternalParticle.cc:205
TreeFitter::ParticleBase::particle
Belle2::Particle * particle() const
get basf2 particle
Definition: ParticleBase.h:109
TreeFitter::Projection
class to store the projected residuals and the corresponding jacobian as well as the covariance matri...
Definition: Projection.h:27
TreeFitter::InternalParticle::posIndex
virtual int posIndex() const override
position index in fit params
Definition: InternalParticle.cc:286