Public Member Functions | |
virtual | ~QLCSlowConfigHandler () |
dtor | |
const QLCSlowConfig * | GetConfig (const unsigned short lg, const unsigned short id) const |
get configuration associated to the given id and for the given logical channel | |
bool | GetCurrentBranch () const |
get current bias polarity branch (fale = neg, true = pos) | |
float | GetExternalBias () const |
get external bias voltage in Volts | |
bool | SetExternalBias (const float bias) |
set external bias voltage in Volts and remove scheduled measurements that do not match new value of external bias | |
bool | AddConfig (const unsigned short lg, QLCSlowConfig *config) |
add a new configuration | |
bool | Schedule (const unsigned short lg, QLCSlowConfig *config) |
schedule a measurement to be performed with the given electronics configuration | |
const QLCSlowConfig * | GetNextScheduled (const unsigned short lg) const |
get a read-only pointer to next scheduled measurement for a given channel | |
void | EraseNextScheduled (const unsigned short lg) |
delete next scheduled measurement for the given logical channel | |
const QLCSlowConfig * | GetLastConfig (const unsigned short lg) const |
get last registered configuration | |
bool | AddNextScheduled (const unsigned short lg) |
set next scheduled config as the next one to be applied | |
void | SetConfDone (const unsigned short lg, const unsigned short id) |
notfy that measurement with a certain configuration has been performed | |
bool | IsConfDone () const |
check whether there are configurations for which a measurement is still to be performed | |
bool | SetCurveDone (const unsigned short lg) |
notify that the curve for the given channel is complete | |
bool | IsCurvesDone () const |
check wheter all curves are done | |
bool | SetBranchDone (const unsigned short lg) |
notify that the curve branch for the given channel is complete | |
bool | IsBranchDone () const |
check whether current curve branch is done for all channels | |
bool | SetActiveChannels (const std::list< unsigned short > &channels) |
set the list of channels that will be handled | |
bool | GoToPositiveBranch () |
switch from negative to positive branch | |
const std::list< unsigned short > & | GetActiveChannels () const |
get the list of channels that are being processed by the load curves procedure | |
void | Clear () |
clear all maps, reset current curve branch to negative and set external bias voltage to 0 (also in the hw) | |
void | ClearMemory () |
clear all maps | |
bool | Consolidate () |
when this function is called all the new configurations added by mean of AddConfig() are applied to hardware | |
void | Dump () const |
bool | SetSleepTime (const unsigned short sleepTime) |
unsigned short | GetSleepTime () const |
Static Public Member Functions | |
static QLCSlowConfigHandler & | GetInstance () |
singleton getter | |
Private Member Functions | |
QLCSlowConfigHandler () | |
ctor | |
void | InitSlowClient () |
bool | ApplyConfig (const unsigned short lg, QLCSlowConfig *conf, const QLCSlowConfig *oldConf) |
apply slow config to hardware | |
void | GetCratesToKill () |
determine the daq crates the active channels belong to | |
void | UpdateExternalBias () |
set external bias to hardware | |
bool | CheckSlowStatus () |
set slow serer to a status suitable for load curves (enable write mode and check that the correct settings basket is loaded) | |
Private Attributes | |
float | fExternalBias |
bias voltage from exernal alimentation in Volts | |
std::map< unsigned short, std::vector< QLCSlowConfig * > > | fConfigMap |
std::map< unsigned short, std::list< QLCSlowConfig * > > | fScheduled |
std::map< unsigned short, unsigned short > | fCurrentConfig |
std::list< unsigned short > | fChannels |
list of channels for which loa curves are being drawn | |
std::list< unsigned short > | fBranchDone |
list of logical channels that are at the end of a curve branch | |
bool | fCurrentBranch |
current curve branch (false = neg bias, true = pos bias) | |
std::list< int > | fCrates |
list of daq crates the active logical channels belong to | |
std::map< unsigned short, QLCSlowConfig * > | fNextConfig |
map of logical channel and corresponding 'next' configuration | |
unsigned short | fSleepTime |
time in second to wait after applying new settings | |
QDaqClient | fDaqClient |
QSlowControlClient | fSlowClient |
const QLCSlowConfig * QLCSlowConfigHandler::GetConfig | ( | const unsigned short | lg, | |
const unsigned short | id | |||
) | const |
get configuration associated to the given id and for the given logical channel
lg | logical channel | |
id | config id |
bool QLCSlowConfigHandler::SetExternalBias | ( | const float | bias | ) |
set external bias voltage in Volts and remove scheduled measurements that do not match new value of external bias
bool QLCSlowConfigHandler::AddConfig | ( | const unsigned short | lg, | |
QLCSlowConfig * | config | |||
) |
add a new configuration
lg | logical channel the configuration is associated to | |
config | pointer to the QLCSlowConfig to be added |
bool QLCSlowConfigHandler::Schedule | ( | const unsigned short | lg, | |
QLCSlowConfig * | config | |||
) |
schedule a measurement to be performed with the given electronics configuration
lg | logical channel | |
config | requested electronics configuration |
const QLCSlowConfig * QLCSlowConfigHandler::GetNextScheduled | ( | const unsigned short | lg | ) | const |
get a read-only pointer to next scheduled measurement for a given channel
lg | logical channel |
void QLCSlowConfigHandler::EraseNextScheduled | ( | const unsigned short | lg | ) |
delete next scheduled measurement for the given logical channel
lg | logical channel |
const QLCSlowConfig * QLCSlowConfigHandler::GetLastConfig | ( | const unsigned short | lg | ) | const |
get last registered configuration
lg | logical channel for whic last configuration is to be returned |
bool QLCSlowConfigHandler::AddNextScheduled | ( | const unsigned short | lg | ) |
set next scheduled config as the next one to be applied
lg | logical channel |
void QLCSlowConfigHandler::SetConfDone | ( | const unsigned short | lg, | |
const unsigned short | id | |||
) |
notfy that measurement with a certain configuration has been performed
lg | logical channel of performed measurement | |
id | configuration id of performed measurement |
bool QLCSlowConfigHandler::SetCurveDone | ( | const unsigned short | lg | ) |
notify that the curve for the given channel is complete
lg | logical channel |
bool QLCSlowConfigHandler::IsCurvesDone | ( | ) | const [inline] |
check wheter all curves are done
bool QLCSlowConfigHandler::SetBranchDone | ( | const unsigned short | lg | ) |
notify that the curve branch for the given channel is complete
lg | logical channel |
bool QLCSlowConfigHandler::IsBranchDone | ( | ) | const |
check whether current curve branch is done for all channels
bool QLCSlowConfigHandler::SetActiveChannels | ( | const std::list< unsigned short > & | channels | ) |
set the list of channels that will be handled
channels | list of channels to be handled |
bool QLCSlowConfigHandler::GoToPositiveBranch | ( | ) |
switch from negative to positive branch
bool QLCSlowConfigHandler::Consolidate | ( | ) |
when this function is called all the new configurations added by mean of AddConfig() are applied to hardware
bool QLCSlowConfigHandler::ApplyConfig | ( | const unsigned short | lg, | |
QLCSlowConfig * | conf, | |||
const QLCSlowConfig * | oldConf | |||
) | [private] |
apply slow config to hardware
lg | logical channel the configuration will be applied to | |
conf | set of configurations to be applied | |
oldConf | set of electronics configuraions that are present before the settings that are going to be applied |
bool QLCSlowConfigHandler::CheckSlowStatus | ( | ) | [private] |
set slow serer to a status suitable for load curves (enable write mode and check that the correct settings basket is loaded)
std::map<unsigned short,std::vector<QLCSlowConfig*> > QLCSlowConfigHandler::fConfigMap [private] |
Map of logical channels (key) and corresponding configurations (value). The value of this map is a vector of pointers to QLCSlowConfig objects Here I use a std::vector because I need random access and I do not need to remove front elements.
std::map<unsigned short, std::list<QLCSlowConfig*> > QLCSlowConfigHandler::fScheduled [private] |
map of logical channels (key) and list of scheduled configurations (value) Here I use a std::list because I do not need random access and I have to remove front elements.
std::map<unsigned short,unsigned short> QLCSlowConfigHandler::fCurrentConfig [private] |
map of logical channel (key) and config id that is currently active (value). This map is needed in order to know what channels are still performing measurement with current active configuration
bool QLCSlowConfigHandler::fCurrentBranch [private] |
current curve branch (false = neg bias, true = pos bias)
This variable is used as a cross consistency check: when applying settings to hardware the polarity in QLCSlowConfig objects must be the same as that of current branch, and also SetBranchDone() can be called only on the first (negative) branch, since calling it on the second branch means that the curve is done.
std::list<int> QLCSlowConfigHandler::fCrates [private] |
list of daq crates the active logical channels belong to
This list is needed to know which daq crates must be killed every time the electronics configuration are being modified. It is updated every time the list of active channels is modified
std::map<unsigned short, QLCSlowConfig*> QLCSlowConfigHandler::fNextConfig [private] |
map of logical channel and corresponding 'next' configuration
Next configuration is the one that is set by mean of AddConfig() and which is then applied to hardware when Consolidate() is called.