1 #ifndef RecoTrackerDeDx_ASmirnovDeDxDiscriminator_h 2 #define RecoTrackerDeDx_ASmirnovDeDxDiscriminator_h 24 std::vector<float> vect_probs;
25 for (
size_t i = 0;
i < Hits.size();
i++) {
26 float path = Hits[
i].pathLength() * 10.0;
37 vect_probs.push_back(
prob);
40 size_t size = vect_probs.size();
42 return std::make_pair(-1, -1);
43 std::sort(vect_probs.begin(), vect_probs.end(), std::less<float>());
44 float TotalProb = 1.0 / (12 *
size);
45 for (
size_t i = 1;
i <=
size;
i++) {
46 TotalProb += vect_probs[
i - 1] *
pow(vect_probs[
i - 1] - ((2.0 *
i - 1.0) / (2.0 *
size)), 2);
48 TotalProb *= (3.0 /
size);
49 return std::make_pair(TotalProb, -1);
T getParameter(std::string const &) const
std::pair< float, float > dedx(const reco::DeDxHitCollection &Hits) override
std::vector< DeDxHit > DeDxHitCollection
ASmirnovDeDxDiscriminator(const edm::ParameterSet &iConfig, edm::ConsumesCollector &iCollector)
void beginRun(edm::Run const &run, const edm::EventSetup &iSetup) override
std::string ProbabilityMode
deDxTools::ESGetTokenH3DDVariant token_
Power< A, B >::type pow(const A &a, const B &b)