H5DataTypes/src/TimepixConfigV2.cpp

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 // File and Version Information:
00003 //      $Id: TimepixConfigV2.cpp 6826 2013-09-24 21:08:01Z salnikov@SLAC.STANFORD.EDU $
00004 //
00005 // Description:
00006 //      Class TimepixConfigV2...
00007 //
00008 // Author List:
00009 //      Andrei Salnikov
00010 //
00011 //------------------------------------------------------------------------
00012 
00013 //-----------------------
00014 // This Class's Header --
00015 //-----------------------
00016 #include "H5DataTypes/TimepixConfigV2.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 TimepixConfigV2::TimepixConfigV2 ( const Pds::Timepix::ConfigV2& data )
00045   : readoutSpeed(data.readoutSpeed())
00046   , triggerMode(data.triggerMode())
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   , chipCount(data.chipCount())
00105   , driverVersion(data.driverVersion())
00106   , firmwareVersion(data.firmwareVersion())
00107   , pixelThreshSize(data.pixelThreshSize())
00108   , chip0ID(data.chip0ID())
00109   , chip1ID(data.chip1ID())
00110   , chip2ID(data.chip2ID())
00111   , chip3ID(data.chip3ID())
00112 {
00113   const ndarray<const uint8_t, 1>& pixelThresh = data.pixelThresh();
00114   std::copy(pixelThresh.begin(), pixelThresh.end(), this->pixelThresh);
00115 
00116   const char* name = data.chip0Name();
00117   int len = strlen(name)+1;
00118   this->chip0Name = new char[len];
00119   std::copy(name, name+len, this->chip0Name);
00120 
00121   name = data.chip1Name();
00122   len = strlen(name)+1;
00123   this->chip1Name = new char[len];
00124   std::copy(name, name+len, this->chip1Name);
00125 
00126   name = data.chip2Name();
00127   len = strlen(name)+1;
00128   this->chip2Name = new char[len];
00129   std::copy(name, name+len, this->chip2Name);
00130 
00131   name = data.chip3Name();
00132   len = strlen(name)+1;
00133   this->chip3Name = new char[len];
00134   std::copy(name, name+len, this->chip3Name);
00135 }
00136 
00137 TimepixConfigV2::~TimepixConfigV2()
00138 {
00139   delete [] chip0Name;
00140   delete [] chip1Name;
00141   delete [] chip2Name;
00142   delete [] chip3Name;
00143 }
00144 
00145 
00146 hdf5pp::Type
00147 TimepixConfigV2::stored_type()
00148 {
00149   return native_type() ;
00150 }
00151 
00152 hdf5pp::Type
00153 TimepixConfigV2::native_type()
00154 {
00155   hdf5pp::EnumType<uint8_t> speedEnum = hdf5pp::EnumType<uint8_t>::enumType() ;
00156   speedEnum.insert ( "ReadoutSpeed_Slow", Pds::Timepix::ConfigV2::ReadoutSpeed_Slow ) ;
00157   speedEnum.insert ( "ReadoutSpeed_Fast", Pds::Timepix::ConfigV2::ReadoutSpeed_Fast ) ;
00158 
00159   hdf5pp::EnumType<uint8_t> trigEnum = hdf5pp::EnumType<uint8_t>::enumType() ;
00160   trigEnum.insert ( "TriggerMode_ExtPos", Pds::Timepix::ConfigV2::TriggerMode_ExtPos ) ;
00161   trigEnum.insert ( "TriggerMode_ExtNeg", Pds::Timepix::ConfigV2::TriggerMode_ExtNeg ) ;
00162   trigEnum.insert ( "TriggerMode_Soft", Pds::Timepix::ConfigV2::TriggerMode_Soft ) ;
00163 
00164   hdf5pp::CompoundType confType = hdf5pp::CompoundType::compoundType<TimepixConfigV2>() ;
00165   confType.insert("readoutSpeed", offsetof(TimepixConfigV2, readoutSpeed), speedEnum);
00166   confType.insert("triggerMode", offsetof(TimepixConfigV2, triggerMode), trigEnum);
00167   confType.insert_native<int32_t>("timepixSpeed", offsetof(TimepixConfigV2, timepixSpeed));
00168   confType.insert_native<int32_t>("dac0Ikrum", offsetof(TimepixConfigV2, dac0Ikrum));
00169   confType.insert_native<int32_t>("dac0Disc", offsetof(TimepixConfigV2, dac0Disc));
00170   confType.insert_native<int32_t>("dac0Preamp", offsetof(TimepixConfigV2, dac0Preamp));
00171   confType.insert_native<int32_t>("dac0BufAnalogA", offsetof(TimepixConfigV2, dac0BufAnalogA));
00172   confType.insert_native<int32_t>("dac0BufAnalogB", offsetof(TimepixConfigV2, dac0BufAnalogB));
00173   confType.insert_native<int32_t>("dac0Hist", offsetof(TimepixConfigV2, dac0Hist));
00174   confType.insert_native<int32_t>("dac0ThlFine", offsetof(TimepixConfigV2, dac0ThlFine));
00175   confType.insert_native<int32_t>("dac0ThlCourse", offsetof(TimepixConfigV2, dac0ThlCourse));
00176   confType.insert_native<int32_t>("dac0Vcas", offsetof(TimepixConfigV2, dac0Vcas));
00177   confType.insert_native<int32_t>("dac0Fbk", offsetof(TimepixConfigV2, dac0Fbk));
00178   confType.insert_native<int32_t>("dac0Gnd", offsetof(TimepixConfigV2, dac0Gnd));
00179   confType.insert_native<int32_t>("dac0Ths", offsetof(TimepixConfigV2, dac0Ths));
00180   confType.insert_native<int32_t>("dac0BiasLvds", offsetof(TimepixConfigV2, dac0BiasLvds));
00181   confType.insert_native<int32_t>("dac0RefLvds", offsetof(TimepixConfigV2, dac0RefLvds));
00182   confType.insert_native<int32_t>("dac1Ikrum", offsetof(TimepixConfigV2, dac1Ikrum));
00183   confType.insert_native<int32_t>("dac1Disc", offsetof(TimepixConfigV2, dac1Disc));
00184   confType.insert_native<int32_t>("dac1Preamp", offsetof(TimepixConfigV2, dac1Preamp));
00185   confType.insert_native<int32_t>("dac1BufAnalogA", offsetof(TimepixConfigV2, dac1BufAnalogA));
00186   confType.insert_native<int32_t>("dac1BufAnalogB", offsetof(TimepixConfigV2, dac1BufAnalogB));
00187   confType.insert_native<int32_t>("dac1Hist", offsetof(TimepixConfigV2, dac1Hist));
00188   confType.insert_native<int32_t>("dac1ThlFine", offsetof(TimepixConfigV2, dac1ThlFine));
00189   confType.insert_native<int32_t>("dac1ThlCourse", offsetof(TimepixConfigV2, dac1ThlCourse));
00190   confType.insert_native<int32_t>("dac1Vcas", offsetof(TimepixConfigV2, dac1Vcas));
00191   confType.insert_native<int32_t>("dac1Fbk", offsetof(TimepixConfigV2, dac1Fbk));
00192   confType.insert_native<int32_t>("dac1Gnd", offsetof(TimepixConfigV2, dac1Gnd));
00193   confType.insert_native<int32_t>("dac1Ths", offsetof(TimepixConfigV2, dac1Ths));
00194   confType.insert_native<int32_t>("dac1BiasLvds", offsetof(TimepixConfigV2, dac1BiasLvds));
00195   confType.insert_native<int32_t>("dac1RefLvds", offsetof(TimepixConfigV2, dac1RefLvds));
00196   confType.insert_native<int32_t>("dac2Ikrum", offsetof(TimepixConfigV2, dac2Ikrum));
00197   confType.insert_native<int32_t>("dac2Disc", offsetof(TimepixConfigV2, dac2Disc));
00198   confType.insert_native<int32_t>("dac2Preamp", offsetof(TimepixConfigV2, dac2Preamp));
00199   confType.insert_native<int32_t>("dac2BufAnalogA", offsetof(TimepixConfigV2, dac2BufAnalogA));
00200   confType.insert_native<int32_t>("dac2BufAnalogB", offsetof(TimepixConfigV2, dac2BufAnalogB));
00201   confType.insert_native<int32_t>("dac2Hist", offsetof(TimepixConfigV2, dac2Hist));
00202   confType.insert_native<int32_t>("dac2ThlFine", offsetof(TimepixConfigV2, dac2ThlFine));
00203   confType.insert_native<int32_t>("dac2ThlCourse", offsetof(TimepixConfigV2, dac2ThlCourse));
00204   confType.insert_native<int32_t>("dac2Vcas", offsetof(TimepixConfigV2, dac2Vcas));
00205   confType.insert_native<int32_t>("dac2Fbk", offsetof(TimepixConfigV2, dac2Fbk));
00206   confType.insert_native<int32_t>("dac2Gnd", offsetof(TimepixConfigV2, dac2Gnd));
00207   confType.insert_native<int32_t>("dac2Ths", offsetof(TimepixConfigV2, dac2Ths));
00208   confType.insert_native<int32_t>("dac2BiasLvds", offsetof(TimepixConfigV2, dac2BiasLvds));
00209   confType.insert_native<int32_t>("dac2RefLvds", offsetof(TimepixConfigV2, dac2RefLvds));
00210   confType.insert_native<int32_t>("dac3Ikrum", offsetof(TimepixConfigV2, dac3Ikrum));
00211   confType.insert_native<int32_t>("dac3Disc", offsetof(TimepixConfigV2, dac3Disc));
00212   confType.insert_native<int32_t>("dac3Preamp", offsetof(TimepixConfigV2, dac3Preamp));
00213   confType.insert_native<int32_t>("dac3BufAnalogA", offsetof(TimepixConfigV2, dac3BufAnalogA));
00214   confType.insert_native<int32_t>("dac3BufAnalogB", offsetof(TimepixConfigV2, dac3BufAnalogB));
00215   confType.insert_native<int32_t>("dac3Hist", offsetof(TimepixConfigV2, dac3Hist));
00216   confType.insert_native<int32_t>("dac3ThlFine", offsetof(TimepixConfigV2, dac3ThlFine));
00217   confType.insert_native<int32_t>("dac3ThlCourse", offsetof(TimepixConfigV2, dac3ThlCourse));
00218   confType.insert_native<int32_t>("dac3Vcas", offsetof(TimepixConfigV2, dac3Vcas));
00219   confType.insert_native<int32_t>("dac3Fbk", offsetof(TimepixConfigV2, dac3Fbk));
00220   confType.insert_native<int32_t>("dac3Gnd", offsetof(TimepixConfigV2, dac3Gnd));
00221   confType.insert_native<int32_t>("dac3Ths", offsetof(TimepixConfigV2, dac3Ths));
00222   confType.insert_native<int32_t>("dac3BiasLvds", offsetof(TimepixConfigV2, dac3BiasLvds));
00223   confType.insert_native<int32_t>("dac3RefLvds", offsetof(TimepixConfigV2, dac3RefLvds));
00224   confType.insert_native<int32_t>("chipCount", offsetof(TimepixConfigV2, chipCount));
00225   confType.insert_native<int32_t>("driverVersion", offsetof(TimepixConfigV2, driverVersion));
00226   confType.insert_native<uint32_t>("firmwareVersion", offsetof(TimepixConfigV2, firmwareVersion));
00227   confType.insert_native<uint32_t>("pixelThreshSize", offsetof(TimepixConfigV2, pixelThreshSize));
00228   confType.insert_native<uint8_t>("pixelThresh", offsetof(TimepixConfigV2, pixelThresh), XtcType::PixelThreshMax);
00229   confType.insert_native<const char*>("chip0Name", offsetof(TimepixConfigV2, chip0Name));
00230   confType.insert_native<const char*>("chip1Name", offsetof(TimepixConfigV2, chip1Name));
00231   confType.insert_native<const char*>("chip2Name", offsetof(TimepixConfigV2, chip2Name));
00232   confType.insert_native<const char*>("chip3Name", offsetof(TimepixConfigV2, chip3Name));
00233   confType.insert_native<int32_t>("chip0ID", offsetof(TimepixConfigV2, chip0ID));
00234   confType.insert_native<int32_t>("chip1ID", offsetof(TimepixConfigV2, chip1ID));
00235   confType.insert_native<int32_t>("chip2ID", offsetof(TimepixConfigV2, chip2ID));
00236   confType.insert_native<int32_t>("chip3ID", offsetof(TimepixConfigV2, chip3ID));
00237 
00238   return confType ;
00239 }
00240 
00241 void
00242 TimepixConfigV2::store( const Pds::Timepix::ConfigV2& config, hdf5pp::Group grp )
00243 {
00244   // make scalar data set for main object
00245   TimepixConfigV2 data ( config ) ;
00246   storeDataObject ( data, "config", grp ) ;
00247 }
00248 
00249 
00250 } // namespace H5DataTypes

Generated on 19 Dec 2016 for PSDMSoftware by  doxygen 1.4.7