diff --git a/Validation/MuonHits/BuildFile.xml b/Validation/MuonHits/BuildFile.xml index d27bfdba5b88a..bf0af0c9516a7 100644 --- a/Validation/MuonHits/BuildFile.xml +++ b/Validation/MuonHits/BuildFile.xml @@ -12,6 +12,7 @@ + diff --git a/Validation/MuonHits/src/CSCSimHitMatcher.cc b/Validation/MuonHits/src/CSCSimHitMatcher.cc index 4734f8e2637d7..e05554563d8f5 100644 --- a/Validation/MuonHits/src/CSCSimHitMatcher.cc +++ b/Validation/MuonHits/src/CSCSimHitMatcher.cc @@ -1,6 +1,7 @@ #include "Validation/MuonHits/interface/CSCSimHitMatcher.h" #include "TGraphErrors.h" #include "TF1.h" +#include "TMinuitMinimizer.h" using namespace std; @@ -13,6 +14,10 @@ CSCSimHitMatcher::CSCSimHitMatcher(const edm::ParameterSet& ps, edm::ConsumesCol simHitInput_ = iC.consumes(simHitPSet_.getParameter("inputTag")); geomToken_ = iC.esConsumes(); + + //In order to make fitting ROOT histograms thread safe + // one must call this undocumented function + TMinuitMinimizer::UseStaticMinuit(false); } /// initialize the event @@ -236,11 +241,11 @@ void CSCSimHitMatcher::fitHitsInChamber(unsigned int detid, float& intercept, fl return; std::unique_ptr gr(new TGraphErrors(x.size(), &x[0], &y[0], &xe[0], &ye[0])); - std::unique_ptr fit(new TF1("fit", "pol1", -3, 4)); - gr->Fit("fit", "EMQ"); + TF1 fit("fit", "pol1", -3, 4); + gr->Fit(&fit, "EMQN"); - intercept = fit->GetParameter(0); - slope = fit->GetParameter(1); + intercept = fit.GetParameter(0); + slope = fit.GetParameter(1); } float CSCSimHitMatcher::simHitsMeanStrip(const edm::PSimHitContainer& sim_hits) const {