diff --git a/reco/L1/L1Algo/L1Fit.h b/reco/L1/L1Algo/L1Fit.h index cd10e2e12ad05802c0ab111aa05b2f41c58d14e1..459865627820879a324706ec9e3c64f8f15e8745 100644 --- a/reco/L1/L1Algo/L1Fit.h +++ b/reco/L1/L1Algo/L1Fit.h @@ -24,7 +24,14 @@ public: ~L1Fit() {}; /// set particle mass for the fit - void SetParticleMass(fvec mass) { fMass2 = mass * mass; } + void SetParticleMass(fvec mass) + { + fMass = mass; + fMass2 = mass * mass; + } + + /// get the particle mass + fvec GetParticleMass() const { return fMass; } /// get the particle mass squared fvec GetParticleMass2() const { return fMass2; } @@ -42,9 +49,6 @@ public: static fvec ApproximateBetheBloch(const fvec& bg2, const fvec& kp0, const fvec& kp1, const fvec& kp2, const fvec& kp3, const fvec& kp4); - - float CalcQpAfterEloss(float qp, float eloss, float mass2); - void EnergyLossCorrection(L1TrackPar& T, const fvec& radThick, fvec& qp0, fvec direction, fvec w); void EnergyLossCorrectionAl(L1TrackPar& T, const fvec& radThick, fvec& qp0, fvec direction, fvec w); @@ -72,7 +76,8 @@ public: const fvec TargetRadThick = 3.73e-2f * 2; // 250 mum Gold private: - fvec fMass2 = 0.10565800 * 0.10565800; // muon mass by default (pion 0.13957000f ) + fvec fMass = 0.10565800; // muon mass by default (pion 0.13957000f ) + fvec fMass2 = fMass * fMass; //ClassDefNV(L1Fit, 0) }; diff --git a/reco/L1/L1Algo/L1FitMaterial.h b/reco/L1/L1Algo/L1FitMaterial.h index 6c58d8d80fea75b066df88cf2af3bfd3463837f9..e18867507e51af1e5244e6a88de09efb8f95ea8b 100644 --- a/reco/L1/L1Algo/L1FitMaterial.h +++ b/reco/L1/L1Algo/L1FitMaterial.h @@ -208,20 +208,6 @@ inline fvec L1Fit::ApproximateBetheBloch(const fvec& bg2, const fvec& kp0, const } -inline float L1Fit::CalcQpAfterEloss(float qp, float eloss, float mass2) -{ - - float p = fabs(1. / qp); - float E = sqrt(p * p + mass2); - float q = (qp > 0) ? 1. : -1.; - float Enew = E + eloss; - // float pnew = (Enew > sqrt(fMass2)) ? std::sqrt(Enew * Enew - fMass2) : 0.; - float pnew = std::sqrt(Enew * Enew - mass2); - // if (pnew!=0) - return q / pnew; - // else { return 1e5; } -} - inline void L1Fit::EnergyLossCorrection(L1TrackPar& T, const fvec& radThick, fvec& qp0, fvec direction, fvec w) { const fvec p2 = 1.f / (T.qp * T.qp); @@ -317,7 +303,7 @@ inline void L1Fit::EnergyLossCorrectionAl(L1TrackPar& T, const fvec& radThick, f fvec EMASS = 0.511 * 1e-3; // GeV fvec BETA = P / sqrt(E2); - fvec GAMMA = sqrt(E2) / sqrt(fMass2); + fvec GAMMA = sqrt(E2) / fMass; // Calculate xi factor (KeV). fvec XI = (153.5 * Z * STEP * RHO) / (A * BETA * BETA); @@ -325,7 +311,7 @@ inline void L1Fit::EnergyLossCorrectionAl(L1TrackPar& T, const fvec& radThick, f // Maximum energy transfer to atomic electron (KeV). fvec ETA = BETA * GAMMA; fvec ETASQ = ETA * ETA; - fvec RATIO = EMASS / sqrt(fMass2); + fvec RATIO = EMASS / fMass; fvec F1 = 2. * EMASS * ETASQ; fvec F2 = 1. + 2. * RATIO * GAMMA + RATIO * RATIO; fvec EMAX = 1e6 * F1 / F2; @@ -402,7 +388,7 @@ inline void L1Fit::EnergyLossCorrectionCarbon(L1TrackPar& T, const fvec& radThic fvec EMASS = 0.511 * 1e-3; // GeV fvec BETA = P / sqrt(E2Corrected); - fvec GAMMA = sqrt(E2) / sqrt(fMass2); + fvec GAMMA = sqrt(E2) / fMass; // Calculate xi factor (KeV). fvec XI = (153.5 * Z * STEP * RHO) / (A * BETA * BETA); @@ -410,7 +396,7 @@ inline void L1Fit::EnergyLossCorrectionCarbon(L1TrackPar& T, const fvec& radThic // Maximum energy transfer to atomic electron (KeV). fvec ETA = BETA * GAMMA; fvec ETASQ = ETA * ETA; - fvec RATIO = EMASS / sqrt(fMass2); + fvec RATIO = EMASS / fMass; fvec F1 = 2. * EMASS * ETASQ; fvec F2 = 1. + 2. * RATIO * GAMMA + RATIO * RATIO; fvec EMAX = 1e6 * F1 / F2; @@ -486,7 +472,7 @@ inline void L1Fit::EnergyLossCorrectionIron(L1TrackPar& T, const fvec& radThick, fvec EMASS = 0.511 * 1e-3; // GeV fvec BETA = P / sqrt(E2Corrected); - fvec GAMMA = sqrt(E2) / sqrt(fMass2); + fvec GAMMA = sqrt(E2) / fMass; // Calculate xi factor (KeV). fvec XI = (153.5 * Z * STEP * RHO) / (A * BETA * BETA); @@ -494,7 +480,7 @@ inline void L1Fit::EnergyLossCorrectionIron(L1TrackPar& T, const fvec& radThick, // Maximum energy transfer to atomic electron (KeV). fvec ETA = BETA * GAMMA; fvec ETASQ = ETA * ETA; - fvec RATIO = EMASS / sqrt(fMass2); + fvec RATIO = EMASS / fMass; fvec F1 = 2. * EMASS * ETASQ; fvec F2 = 1. + 2. * RATIO * GAMMA + RATIO * RATIO; fvec EMAX = 1e6 * F1 / F2; diff --git a/reco/L1/L1Algo/L1TrackParFit.cxx b/reco/L1/L1Algo/L1TrackParFit.cxx index 38bb5f6cc4a762fd4e64b6b3d9cc4a4cc88560b4..5e571408ecc2a801f6129cdd6615be7294b7b742 100644 --- a/reco/L1/L1Algo/L1TrackParFit.cxx +++ b/reco/L1/L1Algo/L1TrackParFit.cxx @@ -966,7 +966,7 @@ void L1TrackParFit::EnergyLossCorrectionIron(const fvec& radThick, fvec& qp0, fv fvec EMASS = 0.511 * 1e-3; // GeV fvec BETA = P / sqrt(E2Corrected); - fvec GAMMA = sqrt(E2Corrected) / sqrt(fMass2); + fvec GAMMA = sqrt(E2Corrected) / fMass; // Calculate xi factor (KeV). fvec XI = (153.5 * Z * STEP * RHO) / (A * BETA * BETA); @@ -974,7 +974,7 @@ void L1TrackParFit::EnergyLossCorrectionIron(const fvec& radThick, fvec& qp0, fv // Maximum energy transfer to atomic electron (KeV). fvec ETA = BETA * GAMMA; fvec ETASQ = ETA * ETA; - fvec RATIO = EMASS / sqrt(fMass2); + fvec RATIO = EMASS / fMass; fvec F1 = 2. * EMASS * ETASQ; fvec F2 = 1. + 2. * RATIO * GAMMA + RATIO * RATIO; fvec EMAX = 1e6 * F1 / F2; @@ -1033,7 +1033,7 @@ void L1TrackParFit::EnergyLossCorrectionCarbon(const fvec& radThick, fvec& qp0, fvec EMASS = 0.511 * 1e-3; // GeV fvec BETA = P / sqrt(E2Corrected); - fvec GAMMA = sqrt(E2Corrected) / sqrt(fMass2); + fvec GAMMA = sqrt(E2Corrected) / fMass; // Calculate xi factor (KeV). fvec XI = (153.5 * Z * STEP * RHO) / (A * BETA * BETA); @@ -1041,7 +1041,7 @@ void L1TrackParFit::EnergyLossCorrectionCarbon(const fvec& radThick, fvec& qp0, // Maximum energy transfer to atomic electron (KeV). fvec ETA = BETA * GAMMA; fvec ETASQ = ETA * ETA; - fvec RATIO = EMASS / sqrt(fMass2); + fvec RATIO = EMASS / fMass; fvec F1 = 2. * EMASS * ETASQ; fvec F2 = 1. + 2. * RATIO * GAMMA + RATIO * RATIO; fvec EMAX = 1e6 * F1 / F2; @@ -1100,7 +1100,7 @@ void L1TrackParFit::EnergyLossCorrectionAl(const fvec& radThick, fvec& qp0, fvec fvec EMASS = 0.511 * 1e-3; // GeV fvec BETA = P / sqrt(E2Corrected); - fvec GAMMA = sqrt(E2Corrected) / sqrt(fMass2); + fvec GAMMA = sqrt(E2Corrected) / fMass; // Calculate xi factor (KeV). fvec XI = (153.5 * Z * STEP * RHO) / (A * BETA * BETA); @@ -1108,7 +1108,7 @@ void L1TrackParFit::EnergyLossCorrectionAl(const fvec& radThick, fvec& qp0, fvec // Maximum energy transfer to atomic electron (KeV). fvec ETA = BETA * GAMMA; fvec ETASQ = ETA * ETA; - fvec RATIO = EMASS / sqrt(fMass2); + fvec RATIO = EMASS / fMass; fvec F1 = 2. * EMASS * ETASQ; fvec F2 = 1. + 2. * RATIO * GAMMA + RATIO * RATIO; fvec EMAX = 1e6 * F1 / F2; diff --git a/reco/L1/L1Algo/L1TrackParFit.h b/reco/L1/L1Algo/L1TrackParFit.h index ee50616d00a94e2edefd082ca94715833149f036..04e03f442f4cea23a3e41221a3bb11d964d4429d 100644 --- a/reco/L1/L1Algo/L1TrackParFit.h +++ b/reco/L1/L1Algo/L1TrackParFit.h @@ -14,7 +14,8 @@ public: C32, C33, C40, C41, C42, C43, C44, C50, C51, C52, C53, C54, C55, chi2, NDF; // fvec n; - fvec fMass2 = 0.000511f * 0.000511f; // muon mass + fvec fMass = 0.10565800; // muon mass + fvec fMass2 = fMass * fMass; // mass squared L1TrackParFit() : fx(0) @@ -88,7 +89,14 @@ public: //Fit functionality /// set particle mass for the fit - void SetParticleMass(float mass) { fMass2 = mass * mass; } + void SetParticleMass(float mass) + { + fMass = mass; + fMass2 = mass * mass; + } + + /// get the particle mass + fvec GetParticleMass() const { return fMass; } /// get the particle mass squared fvec GetParticleMass2() const { return fMass2; }