CMS 3D CMS Logo

BTagLikeDeDxDiscriminator.h
Go to the documentation of this file.
1 #ifndef RecoTrackerDeDx_BTagLikeDeDxDiscriminator_h
2 #define RecoTrackerDeDx_BTagLikeDeDxDiscriminator_h
3 
7 
9 {
10 public:
12  meVperADCStrip = 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 = Hits[i].charge() / (10.0*meVperADCStrip); // 10/meVperADCStrip in order to be compatible with the map content in ADC/mm instead of MeV/cm
27 
28  int BinX = Prob_ChargePath->GetXaxis()->FindBin(Hits[i].momentum());
29  int BinY = Prob_ChargePath->GetYaxis()->FindBin(path);
30  int BinZ = Prob_ChargePath->GetZaxis()->FindBin(charge);
31  float prob = Prob_ChargePath->GetBinContent(BinX,BinY,BinZ);
32  if(prob>=0)vect_probs.push_back(prob);
33  }
34 
35  size_t size = vect_probs.size();
36  if(size<=0) return std::make_pair( -1 , -1);
37  std::sort(vect_probs.begin(), vect_probs.end(), std::less<float>() );
38  float SumJet = 0.;
39  for(size_t i=0;i<size;i++){if(vect_probs[i]<=0.0001)vect_probs[i] = 0.0001; SumJet+= log(vect_probs[i]); }
40 
41  float Loginvlog=log(-SumJet);
42  float Prob =1;
43  float lfact=1;
44 
45  for(size_t l=1; l!=size; l++){
46  lfact*=l;
47  Prob+=exp(l*Loginvlog-log(lfact));
48  }
49 
50  float LogProb=log(Prob);
51  float ProbJet=std::min((float)exp(std::max(LogProb+SumJet,-30.0f)),1.0f);
52  float TotalProb = -log10(ProbJet)/4;
53  TotalProb = 1-TotalProb;
54 
55  return std::make_pair( TotalProb , -1);
56  }
57 
58 private:
63 };
64 
65 #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:221
std::pair< float, float > dedx(const reco::DeDxHitCollection &Hits) override
BTagLikeDeDxDiscriminator(const edm::ParameterSet &iConfig)
std::vector< DeDxHit > DeDxHitCollection
Definition: DeDxHit.h:58
double f[11][100]
T min(T a, T b)
Definition: MathUtil.h:58
void beginRun(edm::Run const &run, const edm::EventSetup &iSetup) override
Definition: Run.h:45