1 #ifndef RecoTracker_DeDx_LikelihoodFitDeDxEstimator_h 2 #define RecoTracker_DeDx_LikelihoodFitDeDxEstimator_h 15 std::array<double, 2>
value;
18 const auto&
n =
Hits.size();
21 hs.erase(std::min_element(hs.begin(), hs.end()));
23 std::array<double, 2>
v;
41 std::array<double, 3>&
value) {
42 const auto&
ls =
h.pathLength();
43 const auto& sn =
h.error();
44 const auto y =
h.charge() *
ls;
45 const auto sD = 2.E-3 + 0.095 *
y;
46 const auto ss = sD * sD + sn * sn;
53 std::array<double, 3>
val{{0.}};
54 if (
h.rawDetId() == 0) {
56 val[0] = -2. * nu *
dy /
s - nu * nu;
57 val[1] = -2. * nu /
s;
81 for (
size_t k = 0;
k <
value.size();
k++)
88 std::array<double, 3>&
val) {
90 for (
const auto&
h :
Hits)
96 std::array<double, 2>&
value) {
100 std::array<double, 3>
val{{0}};
106 }
while (
val[0] > 1
e-3 &&
val[1] != 0 && nStep < 10);
108 value[0] = par * 1.1;
109 value[1] = par * par * 0.01;
116 std::array<double, 2>&
value) {
121 std::array<double, 3>
val{{0}};
133 }
while (
std::abs(dpar) > 1
e-3 && nStep < 50);
144 for (
const auto&
h :
Hits)
145 if (
h.rawDetId() == 0)
std::vector< DeDxHit > DeDxHitCollection
std::pair< float, float > dedx(const reco::DeDxHitCollection &Hits) override
void functionEpsilon(const reco::DeDxHitCollection &, const double &, std::array< double, 3 > &)
double estimate(const reco::DeDxHitCollection &, std::array< double, 2 > &)
void calculate_wrt_epsilon(const reco::DeDxHit &, const double &, std::array< double, 3 > &)
Abs< T >::type abs(const T &t)
LikelihoodFitDeDxEstimator(const edm::ParameterSet &iConfig)
double minimizeAllSaturated(const reco::DeDxHitCollection &, std::array< double, 2 > &)
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
double newtonMethodEpsilon(const reco::DeDxHitCollection &, std::array< double, 2 > &)