Hello Jeremy, 

I loaded the calibrations (pedestal and noise) used for the test run into svt_calibrations and dropped the dummy records you had put in.  The set of calibrations are those taken on 05/11/2012 and have been assigned a set_id = 1.

I'll let you know if I run into any issues loading them into lcsim

--Omar Moreno

On Tue, Sep 17, 2013 at 7:51 PM, McCormick, Jeremy I. <[log in to unmask]> wrote:



Good news.  I basically just implemented a system for reading the conditions database records in a pretty generic fashion.


Everything is in org.lcsim.hps.conditions or its subpackages.  Dima’s classes are not used any longer and were moved to the demo sub-package.  The test case I wrote calling his sample code still works fine.


DatabaseConditionsReader is the generic implementation of the reader.  It will cache the meta data for each validity record (table, row, id), but does NOT call any converters automatically.  This must be done from user code.  (covered below)


The ConnectionParameters object encapsulates all the database information.  The default works with our test database at SLAC.  The reader is automatically setup with this.


DatabaseConditionsConverter is a generic type that actual data converters need to extend in order to create the application objects from the database rows. 


There is a “dummy” class SvtCalibrationConstants in the svt sub-package for modeling the SVT calibration data, along wth an associated converter to produce the objects of that type.  This is where you will come in and flesh out how the SvtCalibrationConstants are actually going to work, how others will access it, and what level of backward compatibility you will maintain.  (More or less, that is all up to you and the other coders of SVT stuff.)  You can even replace the sample class I wrote there with something better.  What I added is just an example.


There is a test at DatabaseConditionsReaderTest which shows how to use the system, and it passes fine.  This is actually similar to the code you would use for loading the conditions for reconstruction.  It just loads up the dummy record I put into svt_calibrations for testing.


The data_ident for SVT calibration looks like this:




That means it reads from the svt_calibrations table, uses set_id as the identifier for the data set, and looks for a value of 1 for the set_id.  Each different set of SVT calibration data should be given a unique set_id.  For now, this has to be done manually.


The data table for the conditions looks like this:


mysql> describe svt_calibrations;


| Field    | Type    | Null | Key | Default | Extra          |


| id       | int(11) | NO   | PRI | NULL    | auto_increment |

| set_id   | int(11) | NO   |     | NULL    |                |

| fpga     | int(11) | NO   |     | NULL    |                |

| hybrid   | int(11) | NO   |     | NULL    |                |

| channel  | int(11) | NO   |     | NULL    |                |

| noise    | double  | NO   |     | NULL    |                |

| pedestal | double  | NO   |     | NULL    |                |



The specific code for loading the sample calibrations, which is found in the test case, is as follows:


CachedConditions<SvtCalibrationConstants> c = manager.getCachedConditions(SvtCalibrationConstants.class, "svt_calibration");

SvtCalibrationConstants calibration = c.getCachedData();


The “svt_calibration” is the type of conditions, which is separate from the table name.  I used the calib_type field for this, though I am not sure this is the appropriate field.


Basically, you can see that the converter is obtained automatically by its mapping to the data class SvtCalibrationConstants. 


There’s a few more details to explain, but it would probably be best if you insert real calibration data into the table I made and then attempt to load it into lcsim.  Then you can ask me if any problems come up.



Use REPLY-ALL to reply to list

To unsubscribe from the HPS-SOFTWARE list, click the following link: