00001 #include "FitScanResult.h" 00002 #include "RawScanResult.h" 00003 #include "ModuleConfiguration.h" 00004 #include "ScanPoints.h" 00005 #include "Defect.h" 00006 #include "FitObject.h" 00007 00008 #include "Sct/SctParameters.h" 00009 #include <TH1.h> 00010 #include <iostream> 00011 00012 using namespace Sct; 00013 00014 namespace SctData { 00015 00016 FitScanResult::FitScanResult() throw() : m_channelFits("ChannelFits"), m_chipFits("ChipFits"), m_linkFits("LinkFits"), 00017 m_summaryHist("summaryHist") {} 00018 00019 FitScanResult::FitScanResult(const ResultHeader& header, const ModuleConfiguration& config, const ScanPoints& points) throw() 00020 : ScanResult(header, config, points), m_channelFits("ChannelFits"), m_chipFits("ChipFits"), m_linkFits("LinkFits"), 00021 m_summaryHist("summaryHist") {} 00022 00023 FitScanResult::FitScanResult(const RawScanResult& raw) throw () : ScanResult(raw), m_channelFits("ChannelFits"), m_chipFits("ChipFits"), 00024 m_linkFits("LinkFits"), m_summaryHist("summaryHist") {} 00025 00026 FitScanResult::~FitScanResult() throw() { 00027 for (vector<TH1D*>::iterator ih = m_summaryHist.begin(); ih != m_summaryHist.end(); ++ih ) { 00028 delete *ih; 00029 } 00030 } 00031 00032 string FitScanResult::getClassName() const throw() { 00033 return "SctData::FitScanResult"; 00034 } 00035 00036 string FitScanResult::getUniqueID() const throw() { 00037 return getHeader().getUniqueID(); 00038 } 00039 00040 string FitScanResult::getUniqueID(const ResultHeader& header) throw() { 00041 return header.getUniqueID(); 00042 } 00043 00044 void FitScanResult::initializeChannelFits(const FitObject& prototype) throw() { 00045 resizeAndFill(m_channelFits, Sct::nChannelModule, prototype); 00046 } 00047 00048 void FitScanResult::initializeChipFits(const FitObject& prototype) throw() { 00049 resizeAndFill(m_chipFits, Sct::nChipModule, prototype); 00050 } 00051 void FitScanResult::initializeLinkFits(const FitObject& prototype) throw() { 00052 resizeAndFill(m_linkFits, Sct::nLinkModule, prototype); 00053 } 00054 00055 FitObject& FitScanResult::getLinkFit( const unsigned ilink ) const throw(LogicError) { 00056 return *m_linkFits[ilink] ; 00057 } 00058 00059 FitObject& FitScanResult::getChipFit( const unsigned ilink, const unsigned ichip ) const throw (LogicError) { 00060 return this->getChipFit( ilink*6+ichip ); 00061 } 00062 00063 FitObject& FitScanResult::getChipFit( const unsigned ichip ) const throw (LogicError) { 00064 return *m_chipFits[ichip] ; 00065 } 00066 00067 FitObject& FitScanResult::getChannelFit( const unsigned ilink, const unsigned ichannel ) const throw (LogicError ) { 00068 return this->getChannelFit(ilink*nChannelLink+ichannel); 00069 } 00070 00071 FitObject& FitScanResult::getChannelFit( const unsigned ichannel ) const throw(LogicError) { 00072 return *m_channelFits[ichannel] ; 00073 } 00074 00075 void FitScanResult::setChannelFit(unsigned int channel, shared_ptr<FitObject> fit) throw(LogicError) { 00076 m_channelFits[channel] = fit; 00077 } 00078 00079 void FitScanResult::setChipFit(unsigned int chip, shared_ptr<FitObject> fit) throw(LogicError) { 00080 m_chipFits[chip] = fit; 00081 } 00082 00083 void FitScanResult::setLinkFit(unsigned int link, shared_ptr<FitObject> fit) throw(LogicError) { 00084 m_linkFits[link] = fit; 00085 } 00086 00087 unsigned FitScanResult::getNLinkFits() const throw() { 00088 return m_linkFits.size(); 00089 } 00090 00091 unsigned FitScanResult::getNChipFits() const throw() { 00092 return m_chipFits.size(); 00093 } 00094 00095 unsigned FitScanResult::getNChannelFits() const throw() { 00096 return m_channelFits.size(); 00097 } 00098 00099 void FitScanResult::setNChannelFits(unsigned int n) throw() { 00100 m_channelFits.resize(n); 00101 } 00102 00103 void FitScanResult::setNChipFits(unsigned int n) throw() { 00104 m_chipFits.resize(n); 00105 } 00106 00107 void FitScanResult::setNLinkFits(unsigned int n) throw() { 00108 m_linkFits.resize(n); 00109 } 00110 00111 00112 const TH1D& FitScanResult::getHist(unsigned i) const throw(LogicError) { 00113 return *(m_summaryHist[i]); 00114 } 00115 00116 } 00117 00118 ostream& operator<<(ostream& os, const SctData::FitScanResult& r) throw() { 00119 os << r.getClassName() << " " << r.getUniqueID(); 00120 return os; 00121 }