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:
11  : token_(DeDxTools::esConsumes(iConfig.getParameter<std::string>("Reccord"), iCollector)) {
13  iConfig.getParameter<double>("MeVperADCStrip"); //currently needed until the map on the database are redone
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 {
19  auto const& histD3D = DeDxTools::getHistogramD3D(iSetup, token_);
21  }
22 
23  std::pair<float, float> dedx(const reco::DeDxHitCollection& Hits) override {
24  std::vector<float> vect_probs;
25  for (size_t i = 0; i < Hits.size(); i++) {
26  float path = Hits[i].pathLength() * 10.0; //x10 in order to be compatible with the map content
27  float charge =
28  Hits[i].charge() /
29  (10.0 *
30  meVperADCStrip); // 10/meVperADCStrip in order to be compatible with the map content in ADC/mm instead of MeV/cm
31 
32  int BinX = Prob_ChargePath->GetXaxis()->FindBin(Hits[i].momentum());
33  int BinY = Prob_ChargePath->GetYaxis()->FindBin(path);
34  int BinZ = Prob_ChargePath->GetZaxis()->FindBin(charge);
35  float prob = Prob_ChargePath->GetBinContent(BinX, BinY, BinZ);
36  if (prob >= 0)
37  vect_probs.push_back(prob);
38  }
39 
40  size_t size = vect_probs.size();
41  if (size <= 0)
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 += pow(vect_probs[i - 1] - ((2.0 * i - 1.0) / (2.0 * size)), 2);
47  }
48  TotalProb *= (3.0 / size);
49  return std::make_pair(TotalProb, -1);
50  }
51 
52 private:
57 };
58 
59 #endif
VtxSmearedBeamProfile_cfi.BinX
BinX
Definition: VtxSmearedBeamProfile_cfi.py:28
mps_fire.i
i
Definition: mps_fire.py:428
SmirnovDeDxDiscriminator::token_
DeDxTools::ESGetTokenH3DDVariant token_
Definition: SmirnovDeDxDiscriminator.h:54
edm::Run
Definition: Run.h:45
SmirnovDeDxDiscriminator::meVperADCStrip
float meVperADCStrip
Definition: SmirnovDeDxDiscriminator.h:53
reco::DeDxHitCollection
std::vector< DeDxHit > DeDxHitCollection
Definition: DeDxHit.h:41
DeDxTools::buildDiscrimMap
void buildDiscrimMap(PhysicsTools::Calibration::HistogramD3D const &, std::string const &ProbabilityMode, TH3F *&Prob_ChargePath)
Definition: DeDxTools.cc:319
SmirnovDeDxDiscriminator::Prob_ChargePath
TH3F * Prob_ChargePath
Definition: SmirnovDeDxDiscriminator.h:56
DeDxHit.h
DeDxTools.h
SmirnovDeDxDiscriminator::beginRun
void beginRun(edm::Run const &run, const edm::EventSetup &iSetup) override
Definition: SmirnovDeDxDiscriminator.h:18
DeDxTools
Definition: DeDxTools.h:41
SmirnovDeDxDiscriminator::dedx
std::pair< float, float > dedx(const reco::DeDxHitCollection &Hits) override
Definition: SmirnovDeDxDiscriminator.h:23
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
BaseDeDxEstimator.h
edm::ParameterSet
Definition: ParameterSet.h:47
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
VtxSmearedBeamProfile_cfi.BinY
BinY
Definition: VtxSmearedBeamProfile_cfi.py:29
SmirnovDeDxDiscriminator::ProbabilityMode
std::string ProbabilityMode
Definition: SmirnovDeDxDiscriminator.h:55
edm::EventSetup
Definition: EventSetup.h:58
SmirnovDeDxDiscriminator::SmirnovDeDxDiscriminator
SmirnovDeDxDiscriminator(const edm::ParameterSet &iConfig, edm::ConsumesCollector &iCollector)
Definition: SmirnovDeDxDiscriminator.h:10
std
Definition: JetResolutionObject.h:76
writedatasetfile.run
run
Definition: writedatasetfile.py:27
DeDxTools::ESGetTokenH3DDVariant
std::variant< edm::ESGetToken< H3DD, SiStripDeDxMip_3D_Rcd >, edm::ESGetToken< H3DD, SiStripDeDxPion_3D_Rcd >, edm::ESGetToken< H3DD, SiStripDeDxKaon_3D_Rcd >, edm::ESGetToken< H3DD, SiStripDeDxProton_3D_Rcd >, edm::ESGetToken< H3DD, SiStripDeDxElectron_3D_Rcd > > ESGetTokenH3DDVariant
Definition: DeDxTools.h:58
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
BaseDeDxEstimator
Definition: BaseDeDxEstimator.h:7
castor_dqm_sourceclient_file_cfg.path
path
Definition: castor_dqm_sourceclient_file_cfg.py:37
DeDxTools::getHistogramD3D
PhysicsTools::Calibration::HistogramD3D const & getHistogramD3D(edm::EventSetup const &, ESGetTokenH3DDVariant const &)
Definition: DeDxTools.cc:302
DeDxTools::esConsumes
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
SmirnovDeDxDiscriminator
Definition: SmirnovDeDxDiscriminator.h:8
TtFullHadEvtBuilder_cfi.prob
prob
Definition: TtFullHadEvtBuilder_cfi.py:33
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443