Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Related Pages

NPtGainAlgorithm.h

00001 #ifndef NPTGAINALGORITHM_H
00002 #define NPTGAINALGORITHM_H
00003 
00004 #include "AnalysisAlgorithm.h"
00005 #include "Sct/Exception.h"
00006 #include "Sct/SctParameters.h"
00007 #include <boost/scoped_ptr.hpp>
00008 #include "SctData/ModuleElement.h"
00009 #include "Sct/RangedVector.h"
00010 #include <memory>
00011 
00012 class TGraph;
00013 
00014 namespace SctData {
00015 class NPtGainTestResult;
00016 class NPtGainTestResultData;
00017 class TestResult;
00018 class FitScanResult;
00019 class FitObject;
00020 class DefectList;
00021 class ResponseCurve;
00022 }
00023 
00024 using std::auto_ptr;
00025 using boost::scoped_ptr;
00026 using SctData::NPtGainTestResult;
00027 using SctData::NPtGainTestResultData;
00028 using SctData::FitScanResult;
00029 using SctData::FitObject;
00030 using SctData::ModuleElement;
00031 using SctData::DefectList;
00032 using SctData::ResponseCurve;
00033 using namespace Sct;
00034 
00035 namespace SctAnalysis {
00036     
00040 class NPtGainAlgorithm : public AnalysisAlgorithm {
00041 public:
00045     NPtGainAlgorithm(const TestData& testData, const string& moduleName, const AnalysisAlgorithm& alg) throw() : AnalysisAlgorithm(testData, moduleName, alg) {}
00049     virtual ~NPtGainAlgorithm() throw() {}
00055     static boost::shared_ptr<ResponseCurve> getResponseCurve(unsigned int nPts=4) throw(LogicError);
00061     static void setResponseCurve( auto_ptr<ResponseCurve> rc) throw();
00062 
00063     virtual void analyze();
00064     virtual void loadData();
00065     virtual bool canAnalyze() const;
00066     virtual shared_ptr<SctData::TestResult> createTestResult() const;
00067     virtual boost::shared_ptr<AnalysisAlgorithm> clone(const TestData& testData, const string& moduleName) const throw();
00068 private:
00069     NPtGainAlgorithm() {}
00070     
00072     static boost::shared_ptr<ResponseCurve> s_responseCurve;
00073     static bool inMap;      //static var to force addition to map
00074     typedef FitObject& (FitScanResult::*getFitFunction) (unsigned int) const;
00076     void setupGraph(unsigned int id, const ModuleElement& element, getFitFunction fitFunc, NPtGainTestResult& test, NPtGainTestResultData& testData, bool trimPoints = false) throw(LogicError);
00077     
00079     void doFit(unsigned int id, getFitFunction fitFunc, NPtGainTestResult& test, NPtGainTestResultData& testData) throw(LogicError) ;
00080     
00084     void mergeDefects(NPtGainTestResult& test, const ModuleElement& element, unsigned int lastPoint);
00085     
00089     void doSlopes(NPtGainTestResult& test);
00093     void doSlopes(shared_ptr<TGraph> graph, Sct::RangedVector<float>& result);
00094     
00099     static void doDefect(const ModuleElement& e, DefectList& defects, 
00100              const NPtGainTestResultData& data,
00101              const NPtGainTestResultData& comparisonData) throw(LogicError);
00102     
00103     unsigned int nOnePointTrimmed;
00104     unsigned int nTwoPointTrimmed;
00105 };
00106     
00107 }
00108 
00109 #endif //#ifndef NPTGAINALGORITHM_H

Generated on Thu Feb 10 02:40:11 2005 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5