46 init(pini, theCovMatrix);
52 const TMatrixD* theCovMatrix)
54 init(pini, theCovMatrix);
61 if (newname.Length() > 0)
62 myclone->SetName(newname);
84 if (params ==
nullptr) {
88 if (params->GetNcols() != 1 || params->GetNrows() !=
_nPar) {
89 edm::LogError(
"WrongMatrixSize") << GetName() <<
"::calc4Vec - Parameter matrix has wrong size.";
93 Double_t et = (*params)(0, 0);
94 Double_t
eta = (*params)(1, 0);
95 Double_t
phi = (*params)(2, 0);
97 Double_t
X = et * TMath::Cos(phi);
98 Double_t
Y = et * TMath::Sin(phi);
99 Double_t
Z = et * TMath::SinH(eta);
100 Double_t E = et * TMath::CosH(eta);
102 TLorentzVector* vec =
new TLorentzVector(X, Y, Z, E);
110 if (pini ==
nullptr) {
111 _u1.SetXYZ(0., 0., 0.);
112 _u3.SetXYZ(0., 0., 0.);
113 _u2.SetXYZ(0., 0., 0.);
114 _pini.SetXYZT(0., 0., 0., 0.);
128 Double_t et = pini->E() * std::fabs(
sin(pini->Theta()));
129 Double_t
eta = pini->Eta();
130 Double_t
phi = pini->Phi();
143 _u1.SetXYZ(TMath::Cos(phi), TMath::Sin(phi), 0.);
144 _u2.SetXYZ(-1. * TMath::Cos(phi) * TMath::TanH(eta),
145 -1. * TMath::Sin(phi) * TMath::TanH(eta),
146 1. / TMath::CosH(eta));
147 _u3.SetXYZ(-1. * TMath::Sin(phi), TMath::Cos(phi), 0.);
156 TMatrixD* DerivativeMatrix =
new TMatrixD(4, 3);
157 (*DerivativeMatrix) *= 0.;
164 (*DerivativeMatrix)(0, 0) = TMath::Cos(phi);
165 (*DerivativeMatrix)(1, 0) = TMath::Sin(phi);
166 (*DerivativeMatrix)(2, 0) = TMath::SinH(eta);
167 (*DerivativeMatrix)(3, 0) = TMath::CosH(eta);
170 (*DerivativeMatrix)(0, 1) = 0.;
171 (*DerivativeMatrix)(1, 1) = 0.;
172 (*DerivativeMatrix)(2, 1) = et * TMath::CosH(eta);
173 (*DerivativeMatrix)(3, 1) = et * TMath::SinH(eta);
176 (*DerivativeMatrix)(0, 2) = -1. * et * TMath::Sin(phi);
177 (*DerivativeMatrix)(1, 2) = et * TMath::Cos(phi);
178 (*DerivativeMatrix)(2, 2) = 0.;
179 (*DerivativeMatrix)(3, 2) = 0.;
181 return DerivativeMatrix;
189 TMatrixD* tparams =
new TMatrixD(
_nPar, 1);
190 (*tparams)(0, 0) = vec.E() * std::fabs(
sin(vec.Theta()));
191 (*tparams)(1, 0) = vec.Eta();
192 (*tparams)(2, 0) = vec.Phi();
void init(TLorentzVector *pini, const TMatrixD *theCovMatrix)
TAbsFitParticle * clone(const TString &newname="") const override
TMatrixD * transform(const TLorentzVector &vec) override
Sin< T >::type sin(const T &t)
Log< level::Error, false > LogError
TMatrixD * getDerivative() override
virtual void setCovMatrix(const TMatrixD *theCovMatrix)
void setIni4Vec(const TLorentzVector *pini) override
~TFitParticleEtEtaPhi() override
TLorentzVector * calc4Vec(const TMatrixD *params) override