From 680e610fd01a75ae22a703a6898f1ffba9347f5e Mon Sep 17 00:00:00 2001 From: laphecet Date: Wed, 3 Feb 2010 10:31:58 +0000 Subject: [PATCH] Adding protection against taking Sqrt of negative values... --- MUON/AliMUONTrackerQADataMakerRec.cxx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/MUON/AliMUONTrackerQADataMakerRec.cxx b/MUON/AliMUONTrackerQADataMakerRec.cxx index 32a66a1ca6b..efe29e972b9 100644 --- a/MUON/AliMUONTrackerQADataMakerRec.cxx +++ b/MUON/AliMUONTrackerQADataMakerRec.cxx @@ -76,6 +76,13 @@ Double_t AliMUONTrackerQADataMakerRec::fgkRawNofTokenLostErrors(1.0); Double_t AliMUONTrackerQADataMakerRec::fgkRawNofParityErrors(2.0); Double_t AliMUONTrackerQADataMakerRec::fgkRawNofPaddingErrors(3.0); +namespace +{ + Double_t ProtectedSqrt(Double_t x) + { + return ( x > 0.0 ? TMath::Sqrt(x) : 0.0 ); + } +} //____________________________________________________________________________ AliMUONTrackerQADataMakerRec::AliMUONTrackerQADataMakerRec(AliQADataMakerRec* master) : AliMUONVQADataMakerRec(master), @@ -253,13 +260,13 @@ void AliMUONTrackerQADataMakerRec::EndOfDetectorCycleESDs(Int_t, TObjArray**) Double_t meanResX = hESDSumResidualXPerDE->GetBinContent(iDE+1)/nClusters; hESDResidualXPerDEMean->SetBinContent(iDE+1, meanResX); hESDResidualXPerDEMean->SetBinError(iDE+1, sigmaResidualX/TMath::Sqrt(nClusters)); - hESDResidualXPerDESigma->SetBinContent(iDE+1, TMath::Sqrt(hESDSumResidualX2PerDE->GetBinContent(iDE+1)/nClusters - meanResX*meanResX)); + hESDResidualXPerDESigma->SetBinContent(iDE+1, ProtectedSqrt(hESDSumResidualX2PerDE->GetBinContent(iDE+1)/nClusters - meanResX*meanResX)); hESDResidualXPerDESigma->SetBinError(iDE+1, sigmaResidualX/TMath::Sqrt(2.*nClusters)); Double_t meanResY = hESDSumResidualYPerDE->GetBinContent(iDE+1)/nClusters; hESDResidualYPerDEMean->SetBinContent(iDE+1, meanResY); hESDResidualYPerDEMean->SetBinError(iDE+1, sigmaResidualY/TMath::Sqrt(nClusters)); - hESDResidualYPerDESigma->SetBinContent(iDE+1, TMath::Sqrt(hESDSumResidualY2PerDE->GetBinContent(iDE+1)/nClusters - meanResY*meanResY)); + hESDResidualYPerDESigma->SetBinContent(iDE+1, ProtectedSqrt(hESDSumResidualY2PerDE->GetBinContent(iDE+1)/nClusters - meanResY*meanResY)); hESDResidualYPerDESigma->SetBinError(iDE+1, sigmaResidualY/TMath::Sqrt(2.*nClusters)); hESDLocalChi2XPerDEMean->SetBinContent(iDE+1, hESDSumLocalChi2XPerDE->GetBinContent(iDE+1)/nClusters); -- 2.43.0