00001 #ifndef STROBEDELAYVARIABLE_H
00002 #define STROBEDELAYVARIABLE_H
00003
00004 #include "ConfigurationVariable.h"
00005 #include "ModuleConfiguration.h"
00006
00007 namespace SctData {
00008
00009 class StrobeDelayVariable : public ConfigurationVariable {
00010 public:
00011 static const StrobeDelayVariable& instance() throw();
00012
00013 virtual double getLinkActualPoint(double logicalPt, const ModuleConfiguration& config, unsigned int link) const throw();
00014 virtual double getChipActualPoint(double logicalPt, const ModuleConfiguration& config, unsigned int chip) const throw();
00015 virtual double getChannelActualPoint(double logicalPt, const ModuleConfiguration& config, unsigned int channel) const throw();
00016
00017 virtual double getLinkLogicalPoint(double actualPt, const ModuleConfiguration& config, unsigned int link) const throw();
00018 virtual double getChipLogicalPoint(double actualPt, const ModuleConfiguration& config, unsigned int chip) const throw();
00019 virtual double getChannelLogicalPoint(double actualPt, const ModuleConfiguration& config, unsigned int channel) const throw();
00020
00021 virtual double getChipActualPoint(const ModuleConfiguration& config, unsigned int chip) const throw();
00022 virtual void setChipActualPoint(double actualPt, ModuleConfiguration& config, unsigned int chip) const throw();
00023
00024 private:
00025 StrobeDelayVariable();
00026 unsigned char getActualPoint(double logicalPt) const throw();
00027 double getLogicalPoint(unsigned char actualPt) const throw();
00028
00029 };
00030
00032 inline unsigned char StrobeDelayVariable::getActualPoint(double logicalPt) const throw() {
00033 return (unsigned char)(logicalPt/2.5);
00034 }
00035
00036 inline double StrobeDelayVariable::getLogicalPoint(unsigned char actualPt) const throw() {
00037 return 2.5 * actualPt;
00038 }
00039
00040
00041 }
00042
00043 #endif //#ifndef THRESHOLDVARIABLE_H