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

FivePointGainTest.h

00001 #ifndef FIVEPOINTGAIN_H
00002 #define FIVEPOINTGAIN_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 
00014 #include <CommonWithDsp/ABCD/ABCDscans.h>
00015 #include <iostream>
00016 #include <vector>
00017 
00018 using namespace Sct;
00019 using namespace std;
00020 using namespace SctCalibrationController::Ipc;
00021 using namespace SctCalibrationController;
00022 
00023 namespace SctCalibrationController {
00024 namespace Scripts {
00025     
00026 class FivePointGainTest : public TestRequestImpl {
00027 private:
00028    static const bool registeredInTestLibrary;
00029 
00030 public: 
00031     static Sct_CalibrationController::TestRequest_ptr instance() {
00032     static FivePointGainTest rc;
00033     return rc._this();
00034     }
00035     
00036     virtual void startTestRealImpl(Sct_SctApi::SctApiIPC_ptr api,
00037                            string& name,
00038                            unsigned short& testVariable,
00039                            unsigned long& nScans,
00040                            vector<double>& testPoints) {    
00041     this->api = Sct_SctApi::SctApiIPC::_duplicate(api);
00042 
00043         // Compression mode X1X
00044         APICALL(api, modifyABCDVar(ST_COMPRESSION, 1), "FivePointGainTest::startTest")
00045 
00046         // Edge detect off
00047         APICALL(api, modifyABCDVar(ST_EDGE_DETECT, 0), "FivePointGainTest::startTest")
00048 
00049         // No masked channels
00050         APICALL(api, modifyABCDVar(ST_SEND_MASK, 0), "FivePointGainTest::startTest")
00051 
00052     name = "NPtGainTest";
00053     testVariable = ST_QCAL;
00054 
00055     charges.push_back(0.75);
00056     charges.push_back(1.0);
00057     charges.push_back(1.5);
00058     charges.push_back(2.0);
00059     charges.push_back(4.0);
00060     testPoints = charges;
00061     nScans = testPoints.size();
00062     }
00063 
00064     virtual Sct_CalibrationController::ScanRequest_ptr getNextScanRealImpl(unsigned long index) {
00065     Sct_CalibrationController::ScanLibrary_var sl = CalibrationControllerImpl::instance()->getScanLibrary();
00066 
00067     APICALL(api, modifyABCDVar(ST_QCAL, charges[index]), "FivePointGainTest::getNextScan")
00068 
00069     return sl->thresholdScanfC(500, charges[index]);
00070     }
00071 
00072     virtual bool canFeedbackRealImpl() {
00073     return true;
00074     }
00075 
00076     virtual void endTestRealImpl() {
00077     api = Sct_SctApi::SctApiIPC::_nil();
00078     charges.clear();
00079     }
00080 
00081 
00082 private:
00083     FivePointGainTest() {}
00084     Sct_SctApi::SctApiIPC_var api;
00085     vector<double> charges;
00086 };
00087 }
00088 }
00089 #endif //FIVEPOINTGAIN_H

Generated on Fri Sep 16 18:01:51 2005 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5