00001 #include "SummaryManager.h"
00002 #include "TrimRangeSummaryWriter.h"
00003
00004 #include "SctData/TrimRangeTestResult.h"
00005 #include "SctData/ResponseCurve.h"
00006 #include "SctData/Stat.h"
00007
00008 #include <iomanip>
00009 #include <TF1.h>
00010
00011 namespace SctData {
00012 namespace TestSummary{
00013 using namespace std;
00014
00015 void TrimRangeSummaryWriter::write(const TestResult& t, ostream& out) const throw(Sct::IoError, Sct::LogicError)
00016 {
00017 const TrimRangeTestResult& result = dynamic_cast<const TrimRangeTestResult&>(t);
00018
00019 out << "#\n%Trim\n#\n"
00020 << "TRIM CHARGE TYPE ALGORITHM" << endl;
00021 out << " " << setw(6) << result.charge
00022 << " " << setw(6) << result.type
00023 << " " << setw(6) << result.algorithm << endl;
00024 out << "#\n#\n"
00025 << " range target ntrim vt50 vt50rms tr_off off_rms tr_step step_rms"<<endl;
00026 for (unsigned ichip=0; ichip<nChipModule; ++ichip){
00027 out << "#"<<getChipName(ichip) << endl;
00028 out << setw(6) << " " << result.chipTrim[ichip]->range
00029 << setw(6) << " " << result.chipTrim[ichip]->target
00030 << setw(6) << " " << result.chipTrim[ichip]->channelTrim.n()
00031 << setw(6) << " " << result.chipTrim[ichip]->channelTrim.mean().vthr
00032 << setw(6) << " " << sqrt ( result.chipTrim[ichip]->channelTrim.var().vthr )
00033 << setw(6) << " " << result.chipTrimData[ichip]->getOffsets().mean()
00034 << setw(6) << " " << sqrt ( result.chipTrimData[ichip]->getOffsets().var() )
00035 << setw(6) << " " << result.chipTrimData[ichip]->getSteps().mean()
00036 << setw(6) << " " << sqrt ( result.chipTrimData[ichip]->getSteps().var() )
00037 << endl;
00038 }
00039
00040 SummaryWriter::write(t.getDefects(), out);
00041 }
00042
00043
00044
00045 bool TrimRangeSummaryWriter::inMap = SummaryManager::instance().addWriter("SctData::TrimRangeTestResult", shared_ptr<SummaryWriter>(new TrimRangeSummaryWriter()));
00046 }
00047 }