StrobeDelayTest.h

00001 #ifndef STROBEDELAYTEST_H
00002 #define STROBEDELAYTEST_H
00003 
00004 #include "../ipc/TestRequest.h"
00005 #include "../ipc/CalibrationController.h"
00006 #include "../ipc/ScanLibrary.h"
00007 #include "../ipc/CalibrationController.hh"
00008 #include "../CalibrationControllerImpl.h"
00009 
00010 #include "../SctApiAccessException.h"
00011 #include "Sct/LogicErrors.h"
00012 #include "../SctApiCall.h"
00013 #include "Sct/BugReport.h"
00014 
00015 #include <Sct/AbcdScans.h>
00016 #include <iostream>
00017 #include <vector>
00018 
00019 using namespace Sct;
00020 using namespace std;
00021 using namespace SctCalibrationController::Ipc;
00022 using namespace SctCalibrationController;
00023 
00024 namespace SctCalibrationController {
00025 namespace Scripts {
00026 
00029 class StrobeDelayTest : public TestRequestImpl {
00030 private:
00031    static const bool registeredInTestLibrary;
00032 
00033 public: 
00034     static Sct_CalibrationController::TestRequest_ptr instance() {
00035     static StrobeDelayTest rc;
00036     rc.setFitAlgorithm("StrobeDelay");
00037     rc.setAnalysisAlgorithm("StrobeDelayTest");
00038     return rc._this();
00039     }
00040     
00041     virtual void startTestRealImpl(Sct_SctApi::SctApiIPC_ptr api, 
00042                string& name, 
00043                unsigned short& testVariable, 
00044                unsigned long& nScans, 
00045                vector<double>& testPoints) {    
00046       Sct::BugReport("BUG01", "StrobeDelayTest.cpp","startTest 1");
00047        this->api = Sct_SctApi::SctApiIPC::_duplicate(api);
00048 
00049         // Compression mode 2
00050         APICALL(api, modifyABCDVar(ST_COMPRESSION, 2), "StrobeDelayTest::startTest")
00051 
00052         // Edge detect on
00053         APICALL(api, modifyABCDVar(ST_EDGE_DETECT, 1), "StrobeDelayTest::startTest")
00054 
00055         // No masked channels
00056         APICALL(api, modifyABCDVar(ST_SEND_MASK, 0), "StrobeDelayTest::startTest")
00057 
00058         // Set threshold to 2fC (based on previous configuration)
00059         APICALL(api, modifyABCDVar(ST_QTHR, 2), "StrobeDelayTest::startTest")
00060 
00061         // 4.00 fC input charge
00062         APICALL(api, modifyABCDVar(ST_VCAL, 40), "StrobeDelayTest::startTest")
00063 
00064     name = "StrobeDelayTest";
00065     testVariable = ST_ELAPSED;
00066     nScans = 1;
00067 
00068     testPoints.push_back(0);
00069       Sct::BugReport("BUG01", "StrobeDelayTest.cpp","startTest 2");
00070     }
00071     
00072     virtual Sct_CalibrationController::ScanRequest_ptr getNextScanRealImpl(unsigned long index) {
00073      Sct::BugReport("BUG01", "StrobeDelayTest.cpp","getNextScan 1/3");
00074     Sct_CalibrationController::ScanLibrary_var sl = CalibrationControllerImpl::instance()->getScanLibrary();
00075      Sct::BugReport("BUG01", "StrobeDelayTest.cpp","getNextScan 2/3");
00076      Sct_CalibrationController::ScanRequest_ptr ans = sl->strobeDelayScan(100);
00077      Sct::BugReport("BUG01", "StrobeDelayTest.cpp","getNextScan 3/3");
00078      return ans;
00079     }
00080     
00081     virtual bool canFeedbackRealImpl() {
00082      Sct::BugReport("BUG01", "StrobeDelayTest.cpp","canFeedback");
00083     return true;
00084     }    
00085     
00086     virtual void endTestRealImpl() {
00087       Sct::BugReport("BUG01", "StrobeDelayTest.cpp","endTest 1");
00088     api = Sct_SctApi::SctApiIPC::_nil();
00089        Sct::BugReport("BUG01", "StrobeDelayTest.cpp","endTest 2");
00090    }
00091     
00092 private:
00093     StrobeDelayTest() {}
00094     Sct_SctApi::SctApiIPC_var api;    
00095 };
00096 }
00097 }
00098 #endif //STROBEDELAYTEST_H

Generated on Mon Feb 6 14:01:30 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6