Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | 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 <Sct/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     rc.setFitAlgorithm("Threshold");
00034     rc.setAnalysisAlgorithm("NPtGainTest");
00035     return rc._this();
00036     }
00037     
00038     virtual void startTestRealImpl(Sct_SctApi::SctApiIPC_ptr api,
00039                            string& name,
00040                            unsigned short& testVariable,
00041                            unsigned long& nScans,
00042                            vector<double>& testPoints) {    
00043     this->api = Sct_SctApi::SctApiIPC::_duplicate(api);
00044 
00045         // Compression mode X1X
00046         APICALL(api, modifyABCDVar(ST_COMPRESSION, 1), "FivePointGainTest::startTest")
00047 
00048         // Edge detect off
00049         APICALL(api, modifyABCDVar(ST_EDGE_DETECT, 0), "FivePointGainTest::startTest")
00050 
00051         // No masked channels
00052         APICALL(api, modifyABCDVar(ST_SEND_MASK, 0), "FivePointGainTest::startTest")
00053 
00054     name = "NPtGainTest";
00055     testVariable = ST_QCAL;
00056 
00057     charges.push_back(0.75);
00058     charges.push_back(1.0);
00059     charges.push_back(1.5);
00060     charges.push_back(2.0);
00061     charges.push_back(4.0);
00062     testPoints = charges;
00063     nScans = testPoints.size();
00064     }
00065 
00066     virtual Sct_CalibrationController::ScanRequest_ptr getNextScanRealImpl(unsigned long index) {
00067     Sct_CalibrationController::ScanLibrary_var sl = CalibrationControllerImpl::instance()->getScanLibrary();
00068 
00069     APICALL(api, modifyABCDVar(ST_QCAL, charges[index]), "FivePointGainTest::getNextScan")
00070 
00071     return sl->thresholdScanfC(500, charges[index]);
00072     }
00073 
00074     virtual bool canFeedbackRealImpl() {
00075     return true;
00076     }
00077 
00078     virtual void endTestRealImpl() {
00079     api = Sct_SctApi::SctApiIPC::_nil();
00080     charges.clear();
00081     }
00082 
00083 
00084 private:
00085     FivePointGainTest() {}
00086     Sct_SctApi::SctApiIPC_var api;
00087     vector<double> charges;
00088 };
00089 }
00090 }
00091 #endif //FIVEPOINTGAIN_H

Generated on Fri Dec 16 19:38:10 2005 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5