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 {