CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ProductDeDxDiscriminator.h
Go to the documentation of this file.
1 #ifndef RecoTrackerDeDx_ProductDeDxDiscriminator_h
2 #define RecoTrackerDeDx_ProductDeDxDiscriminator_h
3 
6 
8 {
9 public:
11  meVperADCStrip = iConfig.getParameter<double>("MeVperADCStrip"); //currently needed until the map on the database are redone
12  Reccord = iConfig.getParameter<std::string> ("Reccord");
13  ProbabilityMode = iConfig.getParameter<std::string> ("ProbabilityMode");
15  }
16 
17  virtual void beginRun(edm::Run const& run, const edm::EventSetup& iSetup){
19  }
20 
21  virtual std::pair<float,float> dedx(const reco::DeDxHitCollection& Hits){
22  std::vector<float> vect_probs;
23  for(size_t i = 0; i< Hits.size(); i ++){
24  float path = Hits[i].pathLength() * 10.0; //x10 in order to be compatible with the map content
25  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
26 
27  int BinX = Prob_ChargePath->GetXaxis()->FindBin(Hits[i].momentum());
28  int BinY = Prob_ChargePath->GetYaxis()->FindBin(path);
29  int BinZ = Prob_ChargePath->GetZaxis()->FindBin(charge);
30  float prob = Prob_ChargePath->GetBinContent(BinX,BinY,BinZ);
31  if(prob>=0)vect_probs.push_back(prob);
32  }
33 
34  size_t size = vect_probs.size();
35  if(size<=0) return std::make_pair( -1 , -1);
36  float TotalProb = 1;
37  for(size_t i=0;i<size;i++){
38  if(vect_probs[i]<=0.0001){TotalProb *= pow(0.0001 , 1.0/size);}
39  else {TotalProb *= pow(vect_probs[i], 1.0/size);}
40  }
41  return std::make_pair( TotalProb , -1);
42  }
43 
44 private:
49 };
50 
51 #endif
T getParameter(std::string const &) const
virtual std::pair< float, float > dedx(const reco::DeDxHitCollection &Hits)
void buildDiscrimMap(edm::Run const &run, const edm::EventSetup &iSetup, std::string Reccord, std::string ProbabilityMode, TH3F *&Prob_ChargePath)
Definition: DeDxTools.cc:221
int i
Definition: DBlmapReader.cc:9
std::vector< DeDxHit > DeDxHitCollection
Definition: DeDxHit.h:56
#define NULL
Definition: scimark2.h:8
ProductDeDxDiscriminator(const edm::ParameterSet &iConfig)
virtual void beginRun(edm::Run const &run, const edm::EventSetup &iSetup)
tuple size
Write out results.
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
Definition: Run.h:43