Go to the documentation of this file.00001 #ifndef RecoTrackerDeDx_UnbinnedFitDeDxEstimator_h
00002 #define RecoTrackerDeDx_UnbinnedFitDeDxEstimator_h
00003
00004 #include "DataFormats/TrackReco/interface/DeDxHit.h"
00005 #include "RecoTracker/DeDx/interface/DeDxTools.h"
00006 #include "RecoTracker/DeDx/interface/UnbinnedLikelihoodFit.h"
00007
00008 #include <TF1.h>
00009
00010 #include <iostream>
00011 #include <vector>
00012
00013 class UnbinnedFitDeDxEstimator: public BaseDeDxEstimator
00014 {
00015 public:
00016
00017 UnbinnedFitDeDxEstimator() {
00018 fitter.setFunction((f1 = new TF1("myLandau","TMath::Landau(x,[0],[1],1)",0,255)));
00019 }
00020
00021 virtual ~UnbinnedFitDeDxEstimator() {
00022
00023 delete f1;
00024 }
00025
00026 virtual std::pair<float,float> dedx(const reco::DeDxHitCollection & Hits){
00027
00028 if(Hits.size()==0) return std::make_pair(-1,-1);
00029
00030 f1->SetParameters(3.0 , 0.3);
00031
00032 uint32_t i=0;
00033 for (reco::DeDxHitCollection::const_iterator hit = Hits.begin(); hit!=Hits.end(); ++hit,++i) {
00034 data[i] = hit->charge();
00035 }
00036
00037 fitter.fit(Hits.size(),data);
00038
00039 return std::make_pair(f1->GetParameter(0),f1->GetParError(0));
00040 }
00041
00042
00043 double data[50];
00044 TF1* f1;
00045 UnbinnedLikelihoodFit fitter;
00046
00047 };
00048
00049 #endif