CMS 3D CMS Logo

SmirnovDeDxDiscriminator.h
Go to the documentation of this file.
1 #ifndef RecoTrackerDeDx_SmirnovDeDxDiscriminator_h
2 #define RecoTrackerDeDx_SmirnovDeDxDiscriminator_h
3 
7 
9 public:
12  iConfig.getParameter<double>("MeVperADCStrip"); //currently needed until the map on the database are redone
13  Reccord = iConfig.getParameter<std::string>("Reccord");
14  ProbabilityMode = iConfig.getParameter<std::string>("ProbabilityMode");
15  Prob_ChargePath = nullptr;
16  }
17 
18  void beginRun(edm::Run const& run, const edm::EventSetup& iSetup) override {
20  }
21 
22  std::pair<float, float> dedx(const reco::DeDxHitCollection& Hits) override {
23  std::vector<float> vect_probs;
24  for (size_t i = 0; i < Hits.size(); i++) {
25  float path = Hits[i].pathLength() * 10.0; //x10 in order to be compatible with the map content
26  float charge =
27  Hits[i].charge() /
28  (10.0 *
29  meVperADCStrip); // 10/meVperADCStrip in order to be compatible with the map content in ADC/mm instead of MeV/cm
30 
31  int BinX = Prob_ChargePath->GetXaxis()->FindBin(Hits[i].momentum());
32  int BinY = Prob_ChargePath->GetYaxis()->FindBin(path);
33  int BinZ = Prob_ChargePath->GetZaxis()->FindBin(charge);
34  float prob = Prob_ChargePath->GetBinContent(BinX, BinY, BinZ);
35  if (prob >= 0)
36  vect_probs.push_back(prob);
37  }
38 
39  size_t size = vect_probs.size();
40  if (size <= 0)
41  return std::make_pair(-1, -1);
42  std::sort(vect_probs.begin(), vect_probs.end(), std::less<float>());
43  float TotalProb = 1.0 / (12 * size);
44  for (size_t i = 1; i <= size; i++) {
45  TotalProb += pow(vect_probs[i - 1] - ((2.0 * i - 1.0) / (2.0 * size)), 2);
46  }
47  TotalProb *= (3.0 / size);
48  return std::make_pair(TotalProb, -1);
49  }
50 
51 private:
56 };
57 
58 #endif
size
Write out results.
T getParameter(std::string const &) const
void buildDiscrimMap(edm::Run const &run, const edm::EventSetup &iSetup, std::string Reccord, std::string ProbabilityMode, TH3F *&Prob_ChargePath)
Definition: DeDxTools.cc:280
std::pair< float, float > dedx(const reco::DeDxHitCollection &Hits) override
std::vector< DeDxHit > DeDxHitCollection
Definition: DeDxHit.h:41
void beginRun(edm::Run const &run, const edm::EventSetup &iSetup) override
SmirnovDeDxDiscriminator(const edm::ParameterSet &iConfig)
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:30
Definition: Run.h:45