/****************************************************************************** * $Id: CbmRichRingFitter.cxx,v 1.2 2006/09/13 14:57:15 hoehne Exp $ * * Class : CbmRichRingFitter * Description: Empty file, just there to please CINT, DoFit is implemented * in the actual algorithm. * * Author : Supriya Das * E-mail : S.Das@gsi.de * ******************************************************************************* * $Log: CbmRichRingFitter.cxx,v $ * Revision 1.2 2006/09/13 14:57:15 hoehne * task for calculating Chi2 of ring fit added * * Revision 1.1 2006/01/19 11:33:12 hoehne * initial version: base class for RingFitters * * *******************************************************************************/ #include "CbmRichRingFitter.h" #include "CbmRichRing.h" #include "CbmRootManager.h" #include "CbmRichHit.h" // ----- Protected method CalcChi2 ---------------------------------------- void CbmRichRingFitter::CalcChi2(CbmRichRing* pRing) { Int_t fNhits=pRing->GetNoOfHits(); if (fNhits < 4) { pRing->SetChi2(-1.); return; } Double_t Xd2, Yd2; Double_t ChiSquare = 0.; Double_t Xcenter, Ycenter, Radius; Radius = pRing->GetRadius(); Xcenter = pRing->GetCenterX(); Ycenter = pRing->GetCenterY(); for (int i = 0; i < fNhits; i++) { CbmRichHit *hit = (CbmRichHit*)pRing->GetHit(i); Xd2 = Xcenter - hit->X(); Yd2 = Ycenter - hit->Y(); Xd2 *= Xd2; Yd2 *= Yd2; ChiSquare += TMath::Sqrt( Xd2 + Yd2 ) - Radius; } ChiSquare *= ChiSquare; if (fNhits == 3) cout << " -W- CbmRichRingFitter: division by 0 " << endl; fChi2 = ChiSquare / (fNhits - 3); pRing->SetChi2(fChi2); } ClassImp(CbmRichRingFitter)