00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef ALIKFVERTEX_H
00019 #define ALIKFVERTEX_H
00020
00021 #include "KFParticle.h"
00022 #include "VVertex.h"
00023
00024 class KFVertex : public KFParticle
00025 {
00026
00027 public:
00028
00029
00030
00031
00032
00033
00034
00035 KFVertex():KFParticle(),fIsConstrained(0){ }
00036
00037
00038
00039 ~KFVertex(){}
00040
00041
00042
00043 KFVertex( const VVertex &vertex );
00044
00045
00046
00047
00048
00049
00050
00051
00052 Int_t GetNContributors() const { return fIsConstrained ?fNDF/2:(fNDF+3)/2; }
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062 void operator +=( const KFParticle &Daughter );
00063
00064
00065
00066 KFVertex operator -( const KFParticle &Daughter ) const;
00067
00068 void operator -=( const KFParticle &Daughter );
00069
00070
00071
00072 void SetBeamConstraint( Double_t X, Double_t Y, Double_t Z,
00073 Double_t ErrX, Double_t ErrY, Double_t ErrZ );
00074
00075
00076
00077 void SetBeamConstraintOff();
00078
00079
00080
00081 void ConstructPrimaryVertex( const KFParticle *vDaughters[], int NDaughters,
00082 Bool_t vtxFlag[], Double_t ChiCut=3.5 );
00083
00084 protected:
00085
00086 Bool_t fIsConstrained;
00087
00088 ClassDef( KFVertex, 1 );
00089
00090 };
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100 inline void KFVertex::operator +=( const KFParticle &Daughter )
00101 {
00102 KFParticle::operator +=( Daughter );
00103 }
00104
00105
00106 inline void KFVertex::operator -=( const KFParticle &Daughter )
00107 {
00108 Daughter.SubtractFromVertex( *this );
00109 }
00110
00111 inline KFVertex KFVertex::operator -( const KFParticle &Daughter ) const
00112 {
00113 KFVertex tmp = *this;
00114 Daughter.SubtractFromVertex( tmp );
00115 return tmp;
00116 }
00117
00118
00119 #endif