H5DataTypes/src/TimepixConfigV3.cpp

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 // File and Version Information:
00003 //      $Id: TimepixConfigV3.cpp 6826 2013-09-24 21:08:01Z salnikov@SLAC.STANFORD.EDU $
00004 //
00005 // Description:
00006 //      Class TimepixConfigV3...
00007 //
00008 // Author List:
00009 //      Andrei Salnikov
00010 //
00011 //------------------------------------------------------------------------
00012 
00013 //-----------------------
00014 // This Class's Header --
00015 //-----------------------
00016 #include "H5DataTypes/TimepixConfigV3.h"
00017 
00018 //-----------------
00019 // C/C++ Headers --
00020 //-----------------
00021 #include <algorithm>
00022 #include <string.h>
00023 
00024 //-------------------------------
00025 // Collaborating Class Headers --
00026 //-------------------------------
00027 #include "H5DataTypes/H5DataUtils.h"
00028 #include "hdf5pp/CompoundType.h"
00029 #include "hdf5pp/EnumType.h"
00030 
00031 //-----------------------------------------------------------------------
00032 // Local Macros, Typedefs, Structures, Unions and Forward Declarations --
00033 //-----------------------------------------------------------------------
00034 
00035 //              ----------------------------------------
00036 //              -- Public Function Member Definitions --
00037 //              ----------------------------------------
00038 
00039 namespace H5DataTypes {
00040 
00041 //----------------
00042 // Constructors --
00043 //----------------
00044 TimepixConfigV3::TimepixConfigV3 ( const Pds::Timepix::ConfigV3& data )
00045   : readoutSpeed(data.readoutSpeed())
00046   , timepixMode(data.timepixMode())
00047   , timepixSpeed(data.timepixSpeed())
00048   , dac0Ikrum(data.dac0Ikrum())
00049   , dac0Disc(data.dac0Disc())
00050   , dac0Preamp(data.dac0Preamp())
00051   , dac0BufAnalogA(data.dac0BufAnalogA())
00052   , dac0BufAnalogB(data.dac0BufAnalogB())
00053   , dac0Hist(data.dac0Hist())
00054   , dac0ThlFine(data.dac0ThlFine())
00055   , dac0ThlCourse(data.dac0ThlCourse())
00056   , dac0Vcas(data.dac0Vcas())
00057   , dac0Fbk(data.dac0Fbk())
00058   , dac0Gnd(data.dac0Gnd())
00059   , dac0Ths(data.dac0Ths())
00060   , dac0BiasLvds(data.dac0BiasLvds())
00061   , dac0RefLvds(data.dac0RefLvds())
00062   , dac1Ikrum(data.dac1Ikrum())
00063   , dac1Disc(data.dac1Disc())
00064   , dac1Preamp(data.dac1Preamp())
00065   , dac1BufAnalogA(data.dac1BufAnalogA())
00066   , dac1BufAnalogB(data.dac1BufAnalogB())
00067   , dac1Hist(data.dac1Hist())
00068   , dac1ThlFine(data.dac1ThlFine())
00069   , dac1ThlCourse(data.dac1ThlCourse())
00070   , dac1Vcas(data.dac1Vcas())
00071   , dac1Fbk(data.dac1Fbk())
00072   , dac1Gnd(data.dac1Gnd())
00073   , dac1Ths(data.dac1Ths())
00074   , dac1BiasLvds(data.dac1BiasLvds())
00075   , dac1RefLvds(data.dac1RefLvds())
00076   , dac2Ikrum(data.dac2Ikrum())
00077   , dac2Disc(data.dac2Disc())
00078   , dac2Preamp(data.dac2Preamp())
00079   , dac2BufAnalogA(data.dac2BufAnalogA())
00080   , dac2BufAnalogB(data.dac2BufAnalogB())
00081   , dac2Hist(data.dac2Hist())
00082   , dac2ThlFine(data.dac2ThlFine())
00083   , dac2ThlCourse(data.dac2ThlCourse())
00084   , dac2Vcas(data.dac2Vcas())
00085   , dac2Fbk(data.dac2Fbk())
00086   , dac2Gnd(data.dac2Gnd())
00087   , dac2Ths(data.dac2Ths())
00088   , dac2BiasLvds(data.dac2BiasLvds())
00089   , dac2RefLvds(data.dac2RefLvds())
00090   , dac3Ikrum(data.dac3Ikrum())
00091   , dac3Disc(data.dac3Disc())
00092   , dac3Preamp(data.dac3Preamp())
00093   , dac3BufAnalogA(data.dac3BufAnalogA())
00094   , dac3BufAnalogB(data.dac3BufAnalogB())
00095   , dac3Hist(data.dac3Hist())
00096   , dac3ThlFine(data.dac3ThlFine())
00097   , dac3ThlCourse(data.dac3ThlCourse())
00098   , dac3Vcas(data.dac3Vcas())
00099   , dac3Fbk(data.dac3Fbk())
00100   , dac3Gnd(data.dac3Gnd())
00101   , dac3Ths(data.dac3Ths())
00102   , dac3BiasLvds(data.dac3BiasLvds())
00103   , dac3RefLvds(data.dac3RefLvds())
00104   , dacBias(data.dacBias())
00105   , flags(data.flags())
00106   , chipCount(data.chipCount())
00107   , driverVersion(data.driverVersion())
00108   , firmwareVersion(data.firmwareVersion())
00109   , pixelThreshSize(data.pixelThreshSize())
00110   , chip0ID(data.chip0ID())
00111   , chip1ID(data.chip1ID())
00112   , chip2ID(data.chip2ID())
00113   , chip3ID(data.chip3ID())
00114 {
00115   const ndarray<const uint8_t, 1>& pixelThresh = data.pixelThresh();
00116   std::copy(pixelThresh.begin(), pixelThresh.end(), this->pixelThresh);
00117 
00118   const char* name = data.chip0Name();
00119   int len = strlen(name)+1;
00120   this->chip0Name = new char[len];
00121   std::copy(name, name+len, this->chip0Name);
00122 
00123   name = data.chip1Name();
00124   len = strlen(name)+1;
00125   this->chip1Name = new char[len];
00126   std::copy(name, name+len, this->chip1Name);
00127 
00128   name = data.chip2Name();
00129   len = strlen(name)+1;
00130   this->chip2Name = new char[len];
00131   std::copy(name, name+len, this->chip2Name);
00132 
00133   name = data.chip3Name();
00134   len = strlen(name)+1;
00135   this->chip3Name = new char[len];
00136   std::copy(name, name+len, this->chip3Name);
00137 }
00138 
00139 TimepixConfigV3::~TimepixConfigV3()
00140 {
00141   delete [] chip0Name;
00142   delete [] chip1Name;
00143   delete [] chip2Name;
00144   delete [] chip3Name;
00145 }
00146 
00147 
00148 hdf5pp::Type
00149 TimepixConfigV3::stored_type()
00150 {
00151   return native_type() ;
00152 }
00153 
00154 hdf5pp::Type
00155 TimepixConfigV3::native_type()
00156 {
00157   hdf5pp::EnumType<uint8_t> speedEnum = hdf5pp::EnumType<uint8_t>::enumType() ;
00158   speedEnum.insert ( "ReadoutSpeed_Slow", Pds::Timepix::ConfigV3::ReadoutSpeed_Slow ) ;
00159   speedEnum.insert ( "ReadoutSpeed_Fast", Pds::Timepix::ConfigV3::ReadoutSpeed_Fast ) ;
00160 
00161   hdf5pp::EnumType<uint8_t> timepixModeEnum = hdf5pp::EnumType<uint8_t>::enumType() ;
00162   timepixModeEnum.insert ( "TimepixMode_Counting", Pds::Timepix::ConfigV3::TimepixMode_Counting ) ;
00163   timepixModeEnum.insert ( "TimepixMode_TOT", Pds::Timepix::ConfigV3::TimepixMode_TOT ) ;
00164 
00165   hdf5pp::CompoundType confType = hdf5pp::CompoundType::compoundType<TimepixConfigV3>() ;
00166   confType.insert("readoutSpeed", offsetof(TimepixConfigV3, readoutSpeed), speedEnum);
00167   confType.insert("timepixMode", offsetof(TimepixConfigV3, timepixMode), timepixModeEnum);
00168   confType.insert_native<int32_t>("timepixSpeed", offsetof(TimepixConfigV3, timepixSpeed));
00169   confType.insert_native<int32_t>("dac0Ikrum", offsetof(TimepixConfigV3, dac0Ikrum));
00170   confType.insert_native<int32_t>("dac0Disc", offsetof(TimepixConfigV3, dac0Disc));
00171   confType.insert_native<int32_t>("dac0Preamp", offsetof(TimepixConfigV3, dac0Preamp));
00172   confType.insert_native<int32_t>("dac0BufAnalogA", offsetof(TimepixConfigV3, dac0BufAnalogA));
00173   confType.insert_native<int32_t>("dac0BufAnalogB", offsetof(TimepixConfigV3, dac0BufAnalogB));
00174   confType.insert_native<int32_t>("dac0Hist", offsetof(TimepixConfigV3, dac0Hist));
00175   confType.insert_native<int32_t>("dac0ThlFine", offsetof(TimepixConfigV3, dac0ThlFine));
00176   confType.insert_native<int32_t>("dac0ThlCourse", offsetof(TimepixConfigV3, dac0ThlCourse));
00177   confType.insert_native<int32_t>("dac0Vcas", offsetof(TimepixConfigV3, dac0Vcas));
00178   confType.insert_native<int32_t>("dac0Fbk", offsetof(TimepixConfigV3, dac0Fbk));
00179   confType.insert_native<int32_t>("dac0Gnd", offsetof(TimepixConfigV3, dac0Gnd));
00180   confType.insert_native<int32_t>("dac0Ths", offsetof(TimepixConfigV3, dac0Ths));
00181   confType.insert_native<int32_t>("dac0BiasLvds", offsetof(TimepixConfigV3, dac0BiasLvds));
00182   confType.insert_native<int32_t>("dac0RefLvds", offsetof(TimepixConfigV3, dac0RefLvds));
00183   confType.insert_native<int32_t>("dac1Ikrum", offsetof(TimepixConfigV3, dac1Ikrum));
00184   confType.insert_native<int32_t>("dac1Disc", offsetof(TimepixConfigV3, dac1Disc));
00185   confType.insert_native<int32_t>("dac1Preamp", offsetof(TimepixConfigV3, dac1Preamp));
00186   confType.insert_native<int32_t>("dac1BufAnalogA", offsetof(TimepixConfigV3, dac1BufAnalogA));
00187   confType.insert_native<int32_t>("dac1BufAnalogB", offsetof(TimepixConfigV3, dac1BufAnalogB));
00188   confType.insert_native<int32_t>("dac1Hist", offsetof(TimepixConfigV3, dac1Hist));
00189   confType.insert_native<int32_t>("dac1ThlFine", offsetof(TimepixConfigV3, dac1ThlFine));
00190   confType.insert_native<int32_t>("dac1ThlCourse", offsetof(TimepixConfigV3, dac1ThlCourse));
00191   confType.insert_native<int32_t>("dac1Vcas", offsetof(TimepixConfigV3, dac1Vcas));
00192   confType.insert_native<int32_t>("dac1Fbk", offsetof(TimepixConfigV3, dac1Fbk));
00193   confType.insert_native<int32_t>("dac1Gnd", offsetof(TimepixConfigV3, dac1Gnd));
00194   confType.insert_native<int32_t>("dac1Ths", offsetof(TimepixConfigV3, dac1Ths));
00195   confType.insert_native<int32_t>("dac1BiasLvds", offsetof(TimepixConfigV3, dac1BiasLvds));
00196   confType.insert_native<int32_t>("dac1RefLvds", offsetof(TimepixConfigV3, dac1RefLvds));
00197   confType.insert_native<int32_t>("dac2Ikrum", offsetof(TimepixConfigV3, dac2Ikrum));
00198   confType.insert_native<int32_t>("dac2Disc", offsetof(TimepixConfigV3, dac2Disc));
00199   confType.insert_native<int32_t>("dac2Preamp", offsetof(TimepixConfigV3, dac2Preamp));
00200   confType.insert_native<int32_t>("dac2BufAnalogA", offsetof(TimepixConfigV3, dac2BufAnalogA));
00201   confType.insert_native<int32_t>("dac2BufAnalogB", offsetof(TimepixConfigV3, dac2BufAnalogB));
00202   confType.insert_native<int32_t>("dac2Hist", offsetof(TimepixConfigV3, dac2Hist));
00203   confType.insert_native<int32_t>("dac2ThlFine", offsetof(TimepixConfigV3, dac2ThlFine));
00204   confType.insert_native<int32_t>("dac2ThlCourse", offsetof(TimepixConfigV3, dac2ThlCourse));
00205   confType.insert_native<int32_t>("dac2Vcas", offsetof(TimepixConfigV3, dac2Vcas));
00206   confType.insert_native<int32_t>("dac2Fbk", offsetof(TimepixConfigV3, dac2Fbk));
00207   confType.insert_native<int32_t>("dac2Gnd", offsetof(TimepixConfigV3, dac2Gnd));
00208   confType.insert_native<int32_t>("dac2Ths", offsetof(TimepixConfigV3, dac2Ths));
00209   confType.insert_native<int32_t>("dac2BiasLvds", offsetof(TimepixConfigV3, dac2BiasLvds));
00210   confType.insert_native<int32_t>("dac2RefLvds", offsetof(TimepixConfigV3, dac2RefLvds));
00211   confType.insert_native<int32_t>("dac3Ikrum", offsetof(TimepixConfigV3, dac3Ikrum));
00212   confType.insert_native<int32_t>("dac3Disc", offsetof(TimepixConfigV3, dac3Disc));
00213   confType.insert_native<int32_t>("dac3Preamp", offsetof(TimepixConfigV3, dac3Preamp));
00214   confType.insert_native<int32_t>("dac3BufAnalogA", offsetof(TimepixConfigV3, dac3BufAnalogA));
00215   confType.insert_native<int32_t>("dac3BufAnalogB", offsetof(TimepixConfigV3, dac3BufAnalogB));
00216   confType.insert_native<int32_t>("dac3Hist", offsetof(TimepixConfigV3, dac3Hist));
00217   confType.insert_native<int32_t>("dac3ThlFine", offsetof(TimepixConfigV3, dac3ThlFine));
00218   confType.insert_native<int32_t>("dac3ThlCourse", offsetof(TimepixConfigV3, dac3ThlCourse));
00219   confType.insert_native<int32_t>("dac3Vcas", offsetof(TimepixConfigV3, dac3Vcas));
00220   confType.insert_native<int32_t>("dac3Fbk", offsetof(TimepixConfigV3, dac3Fbk));
00221   confType.insert_native<int32_t>("dac3Gnd", offsetof(TimepixConfigV3, dac3Gnd));
00222   confType.insert_native<int32_t>("dac3Ths", offsetof(TimepixConfigV3, dac3Ths));
00223   confType.insert_native<int32_t>("dac3BiasLvds", offsetof(TimepixConfigV3, dac3BiasLvds));
00224   confType.insert_native<int32_t>("dac3RefLvds", offsetof(TimepixConfigV3, dac3RefLvds));
00225   confType.insert_native<uint8_t>("dacBias", offsetof(TimepixConfigV3, dacBias));
00226   confType.insert_native<uint8_t>("flags", offsetof(TimepixConfigV3, flags));
00227   confType.insert_native<int32_t>("chipCount", offsetof(TimepixConfigV3, chipCount));
00228   confType.insert_native<int32_t>("driverVersion", offsetof(TimepixConfigV3, driverVersion));
00229   confType.insert_native<uint32_t>("firmwareVersion", offsetof(TimepixConfigV3, firmwareVersion));
00230   confType.insert_native<uint32_t>("pixelThreshSize", offsetof(TimepixConfigV3, pixelThreshSize));
00231   confType.insert_native<uint8_t>("pixelThresh", offsetof(TimepixConfigV3, pixelThresh), XtcType::PixelThreshMax);
00232   confType.insert_native<const char*>("chip0Name", offsetof(TimepixConfigV3, chip0Name));
00233   confType.insert_native<const char*>("chip1Name", offsetof(TimepixConfigV3, chip1Name));
00234   confType.insert_native<const char*>("chip2Name", offsetof(TimepixConfigV3, chip2Name));
00235   confType.insert_native<const char*>("chip3Name", offsetof(TimepixConfigV3, chip3Name));
00236   confType.insert_native<int32_t>("chip0ID", offsetof(TimepixConfigV3, chip0ID));
00237   confType.insert_native<int32_t>("chip1ID", offsetof(TimepixConfigV3, chip1ID));
00238   confType.insert_native<int32_t>("chip2ID", offsetof(TimepixConfigV3, chip2ID));
00239   confType.insert_native<int32_t>("chip3ID", offsetof(TimepixConfigV3, chip3ID));
00240 
00241   return confType ;
00242 }
00243 
00244 void
00245 TimepixConfigV3::store( const Pds::Timepix::ConfigV3& config, hdf5pp::Group grp )
00246 {
00247   // make scalar data set for main object
00248   TimepixConfigV3 data ( config ) ;
00249   storeDataObject ( data, "config", grp ) ;
00250 }
00251 
00252 
00253 } // namespace H5DataTypes

Generated on 19 Dec 2016 for PSDMSoftware by  doxygen 1.4.7