37 init(
nullptr,
nullptr);
62 init(pini, theCovMatrix);
66 TLorentzVector* pini,
const TMatrixD* theCovMatrix)
69 init(pini, theCovMatrix);
76 if ( newname.Length() > 0 ) myclone->SetName(newname);
111 if (pini ==
nullptr) {
113 _u1.SetXYZ(0., 0., 0.);
114 _u3.SetXYZ(0., 0., 0.);
115 _u2.SetXYZ(0., 0., 0.);
116 _pini.SetXYZT(0., 0., 0., 0.);
127 TVector3 uz(0., 0., 1.);
145 if (params ==
nullptr) {
149 if ( params->GetNcols() != 1 || params->GetNrows() !=
_nPar ) {
151 << GetName() <<
"::calc4Vec - Parameter matrix has wrong size.";
155 Double_t
X =
_pini.P() * (*params)(0,0) *
_u1.X() +
156 (*params)(1,0) *
_u2.X()+
157 (*params)(2,0) *
_u3.X();
158 Double_t
Y =
_pini.P() * (*params)(0,0) *
_u1.Y() +
159 (*params)(1,0) *
_u2.Y()+
160 (*params)(2,0) *
_u3.Y();
161 Double_t
Z =
_pini.P() * (*params)(0,0) *
_u1.Z() +
162 (*params)(1,0) *
_u2.Z()+
163 (*params)(2,0) *
_u3.Z();
164 Double_t E = TMath::Sqrt( X*X + Y*Y + Z*Z + (*params)(3,0)*(*params)(3,0)*
_pini.M2() );
166 TLorentzVector* vec =
new TLorentzVector( X, Y, Z, E );
176 TMatrixD* DerivativeMatrix =
new TMatrixD(4,4);
177 (*DerivativeMatrix) *= 0.;
180 (*DerivativeMatrix)(0,0)=
_pini.P()*
_u1.X();
181 (*DerivativeMatrix)(1,0)=
_pini.P()*
_u1.Y();
182 (*DerivativeMatrix)(2,0)=
_pini.P()*
_u1.Z();
183 (*DerivativeMatrix)(3,0)=0.;
186 (*DerivativeMatrix)(0,1)=
_u2.X();
187 (*DerivativeMatrix)(1,1)=
_u2.Y();
188 (*DerivativeMatrix)(2,1)=
_u2.Z();
189 (*DerivativeMatrix)(3,1)=0.;
192 (*DerivativeMatrix)(0,2)=
_u3.X();
193 (*DerivativeMatrix)(1,2)=
_u3.Y();
194 (*DerivativeMatrix)(2,2)=
_u3.Z();
195 (*DerivativeMatrix)(3,2)=0.;
198 (*DerivativeMatrix)(0,3)=0.;
199 (*DerivativeMatrix)(1,3)=0.;
200 (*DerivativeMatrix)(2,3)=0.;
203 return DerivativeMatrix;
216 TVector3
vec3( vec.Vect() );
217 vec3.Transform( rot );
220 TMatrixD* tparams =
new TMatrixD(
_nPar, 1 );
222 (*tparams)(1,0) =
vec3(1);
223 (*tparams)(2,0) =
vec3(2);
224 (*tparams)(3,0) = vec.M()/
_pini.M();
void setIni4Vec(const TLorentzVector *pini) override
TAbsFitParticle * clone(const TString &newname=TString("")) const override
virtual void setCovMatrix(const TMatrixD *theCovMatrix)
TLorentzVector * calc4Vec(const TMatrixD *params) override
~TFitParticleMomDev() override
void init(TLorentzVector *pini, const TMatrixD *theCovMatrix)
TMatrixD * getDerivative() override
TMatrixD * transform(const TLorentzVector &vec) override