psddl_psana/include/bld.ddl.h

Go to the documentation of this file.
00001 #ifndef PSANA_BLD_DDL_H
00002 #define PSANA_BLD_DDL_H 1
00003 
00004 // *** Do not edit this file, it is auto-generated ***
00005 
00006 #include <vector>
00007 #include <iosfwd>
00008 #include <cstring>
00009 #include "ndarray/ndarray.h"
00010 #include "pdsdata/xtc/TypeId.hh"
00011 #include "psddl_psana/acqiris.ddl.h"
00012 #include "psddl_psana/camera.ddl.h"
00013 #include "psddl_psana/ipimb.ddl.h"
00014 #include "psddl_psana/lusi.ddl.h"
00015 #include "psddl_psana/pulnix.ddl.h"
00016 #include "psddl_psana/usdusb.ddl.h"
00017 namespace Psana {
00018 namespace Bld {
00019 
00020 /** @class BldDataFEEGasDetEnergy
00021 
00022   Four energy measurements from Front End Enclosure Gas Detector.
00023                PV names: GDET:FEE1:11:ENRC, GDET:FEE1:12:ENRC, GDET:FEE1:21:ENRC, GDET:FEE1:22:ENRC.
00024 */
00025 
00026 
00027 class BldDataFEEGasDetEnergy {
00028 public:
00029   enum { TypeId = Pds::TypeId::Id_FEEGasDetEnergy /**< XTC type ID value (from Pds::TypeId class) */ };
00030   enum { Version = 0 /**< XTC type version number */ };
00031   BldDataFEEGasDetEnergy(double arg__f_11_ENRC, double arg__f_12_ENRC, double arg__f_21_ENRC, double arg__f_22_ENRC)
00032     : _f_11_ENRC(arg__f_11_ENRC), _f_12_ENRC(arg__f_12_ENRC), _f_21_ENRC(arg__f_21_ENRC), _f_22_ENRC(arg__f_22_ENRC)
00033   {
00034   }
00035   BldDataFEEGasDetEnergy() {}
00036   /** Value of GDET:FEE1:11:ENRC, in mJ. */
00037   double f_11_ENRC() const { return _f_11_ENRC; }
00038   /** Value of GDET:FEE1:12:ENRC, in mJ. */
00039   double f_12_ENRC() const { return _f_12_ENRC; }
00040   /** Value of GDET:FEE1:21:ENRC, in mJ. */
00041   double f_21_ENRC() const { return _f_21_ENRC; }
00042   /** Value of GDET:FEE1:22:ENRC, in mJ. */
00043   double f_22_ENRC() const { return _f_22_ENRC; }
00044   static uint32_t _sizeof() { return 32; }
00045 private:
00046   double        _f_11_ENRC;     /**< Value of GDET:FEE1:11:ENRC, in mJ. */
00047   double        _f_12_ENRC;     /**< Value of GDET:FEE1:12:ENRC, in mJ. */
00048   double        _f_21_ENRC;     /**< Value of GDET:FEE1:21:ENRC, in mJ. */
00049   double        _f_22_ENRC;     /**< Value of GDET:FEE1:22:ENRC, in mJ. */
00050 };
00051 
00052 /** @class BldDataFEEGasDetEnergyV1
00053 
00054   Six energy measurements from Front End Enclosure Gas Detector.
00055    PV names: GDET:FEE1:241:ENRC, GDET:FEE1:242:ENRC, 
00056     GDET:FEE1:361:ENRC, GDET:FEE1:362:ENRC, 
00057     GDET:FEE1:363:ENRC, and GDET:FEE1:364:ENRC 
00058    Each pair of methods (e.g. f_11_ENRC(), f_12_ENRC() contains
00059    identical measurements using two different phototubes.  "11" and "12"
00060    are before the gas attenuation.  "21" and "22" are after gas
00061    attenuation.
00062    "63" and "64" are duplicate measurements of "21" and "22" respectively. 
00063     The difference is that they cover a smaller (10%) dynamic range. 
00064     When the beam is weak, 361 and 362 don't have good S/N, these 2 extra PVs should be used instead.  Dehong Zhang suggests that the threshold
00065     for "weak" is around 0.5 mJ.
00066 */
00067 
00068 
00069 class BldDataFEEGasDetEnergyV1 {
00070 public:
00071   enum { TypeId = Pds::TypeId::Id_FEEGasDetEnergy /**< XTC type ID value (from Pds::TypeId class) */ };
00072   enum { Version = 1 /**< XTC type version number */ };
00073   BldDataFEEGasDetEnergyV1(double arg__f_11_ENRC, double arg__f_12_ENRC, double arg__f_21_ENRC, double arg__f_22_ENRC, double arg__f_63_ENRC, double arg__f_64_ENRC)
00074     : _f_11_ENRC(arg__f_11_ENRC), _f_12_ENRC(arg__f_12_ENRC), _f_21_ENRC(arg__f_21_ENRC), _f_22_ENRC(arg__f_22_ENRC), _f_63_ENRC(arg__f_63_ENRC), _f_64_ENRC(arg__f_64_ENRC)
00075   {
00076   }
00077   BldDataFEEGasDetEnergyV1() {}
00078   /** First energy measurement (mJ) before attenuation. (pv name GDET:FEE1:241:ENRC) */
00079   double f_11_ENRC() const { return _f_11_ENRC; }
00080   /** Second (duplicate!) energy measurement (mJ) after attenuation. (pv name GDET:FEE1:242:ENRC) */
00081   double f_12_ENRC() const { return _f_12_ENRC; }
00082   /** First energy measurement (mJ) after attenuation. (pv name  GDET:FEE1:361:ENRC) */
00083   double f_21_ENRC() const { return _f_21_ENRC; }
00084   /** Second (duplicate!) energy measurement (mJ) after attenuation. (pv name GDET:FEE1:362:ENRC) */
00085   double f_22_ENRC() const { return _f_22_ENRC; }
00086   /** First energy measurement (mJ) for small signals (<0.5 mJ), after attenuation. (pv name GDET:FEE1:363:ENRC) */
00087   double f_63_ENRC() const { return _f_63_ENRC; }
00088   /** Second (duplicate!) energy measurement (mJ) for small signals (<0.5mJ), after attenutation. (pv name GDET:FEE1:364:ENRC) */
00089   double f_64_ENRC() const { return _f_64_ENRC; }
00090   static uint32_t _sizeof() { return 48; }
00091 private:
00092   double        _f_11_ENRC;     /**< First energy measurement (mJ) before attenuation. (pv name GDET:FEE1:241:ENRC) */
00093   double        _f_12_ENRC;     /**< Second (duplicate!) energy measurement (mJ) after attenuation. (pv name GDET:FEE1:242:ENRC) */
00094   double        _f_21_ENRC;     /**< First energy measurement (mJ) after attenuation. (pv name  GDET:FEE1:361:ENRC) */
00095   double        _f_22_ENRC;     /**< Second (duplicate!) energy measurement (mJ) after attenuation. (pv name GDET:FEE1:362:ENRC) */
00096   double        _f_63_ENRC;     /**< First energy measurement (mJ) for small signals (<0.5 mJ), after attenuation. (pv name GDET:FEE1:363:ENRC) */
00097   double        _f_64_ENRC;     /**< Second (duplicate!) energy measurement (mJ) for small signals (<0.5mJ), after attenutation. (pv name GDET:FEE1:364:ENRC) */
00098 };
00099 
00100 /** @class BldDataEBeamV0
00101 
00102   Beam parameters.
00103 */
00104 
00105 
00106 class BldDataEBeamV0 {
00107 public:
00108   enum { TypeId = Pds::TypeId::Id_EBeam /**< XTC type ID value (from Pds::TypeId class) */ };
00109   enum { Version = 0 /**< XTC type version number */ };
00110 
00111   /** Constants defining bit mask for individual damage bits in value returned from damageMask() */
00112   enum DamageMask {
00113     EbeamChargeDamage = 0x001,
00114     EbeamL3EnergyDamage = 0x002,
00115     EbeamLTUPosXDamage = 0x004,
00116     EbeamLTUPosYDamage = 0x008,
00117     EbeamLTUAngXDamage = 0x010,
00118     EbeamLTUAngYDamage = 0x020,
00119   };
00120   BldDataEBeamV0(uint32_t arg__uDamageMask, double arg__fEbeamCharge, double arg__fEbeamL3Energy, double arg__fEbeamLTUPosX, double arg__fEbeamLTUPosY, double arg__fEbeamLTUAngX, double arg__fEbeamLTUAngY)
00121     : _uDamageMask(arg__uDamageMask), _fEbeamCharge(arg__fEbeamCharge), _fEbeamL3Energy(arg__fEbeamL3Energy), _fEbeamLTUPosX(arg__fEbeamLTUPosX), _fEbeamLTUPosY(arg__fEbeamLTUPosY), _fEbeamLTUAngX(arg__fEbeamLTUAngX), _fEbeamLTUAngY(arg__fEbeamLTUAngY)
00122   {
00123   }
00124   BldDataEBeamV0() {}
00125   /** Damage mask. */
00126   uint32_t damageMask() const { return _uDamageMask; }
00127   /** Beam charge in nC. */
00128   double ebeamCharge() const { return _fEbeamCharge; }
00129   /** Beam energy in MeV. */
00130   double ebeamL3Energy() const { return _fEbeamL3Energy; }
00131   /** LTU beam position in mm. */
00132   double ebeamLTUPosX() const { return _fEbeamLTUPosX; }
00133   /** LTU beam position in mm. */
00134   double ebeamLTUPosY() const { return _fEbeamLTUPosY; }
00135   /** LTU beam angle in mrad. */
00136   double ebeamLTUAngX() const { return _fEbeamLTUAngX; }
00137   /** LTU beam angle in mrad. */
00138   double ebeamLTUAngY() const { return _fEbeamLTUAngY; }
00139   static uint32_t _sizeof() { return 52; }
00140 private:
00141   uint32_t      _uDamageMask;   /**< Damage mask. */
00142   double        _fEbeamCharge;  /**< Beam charge in nC. */
00143   double        _fEbeamL3Energy;        /**< Beam energy in MeV. */
00144   double        _fEbeamLTUPosX; /**< LTU beam position in mm. */
00145   double        _fEbeamLTUPosY; /**< LTU beam position in mm. */
00146   double        _fEbeamLTUAngX; /**< LTU beam angle in mrad. */
00147   double        _fEbeamLTUAngY; /**< LTU beam angle in mrad. */
00148 };
00149 std::ostream& operator<<(std::ostream& str, Bld::BldDataEBeamV0::DamageMask enval);
00150 
00151 /** @class BldDataEBeamV1
00152 
00153   
00154 */
00155 
00156 
00157 class BldDataEBeamV1 {
00158 public:
00159   enum { TypeId = Pds::TypeId::Id_EBeam /**< XTC type ID value (from Pds::TypeId class) */ };
00160   enum { Version = 1 /**< XTC type version number */ };
00161 
00162   /** Constants defining bit mask for individual damage bits in value returned from damageMask() */
00163   enum DamageMask {
00164     EbeamChargeDamage = 0x001,
00165     EbeamL3EnergyDamage = 0x002,
00166     EbeamLTUPosXDamage = 0x004,
00167     EbeamLTUPosYDamage = 0x008,
00168     EbeamLTUAngXDamage = 0x010,
00169     EbeamLTUAngYDamage = 0x020,
00170     EbeamPkCurrBC2Damage = 0x040,
00171   };
00172   BldDataEBeamV1(uint32_t arg__uDamageMask, double arg__fEbeamCharge, double arg__fEbeamL3Energy, double arg__fEbeamLTUPosX, double arg__fEbeamLTUPosY, double arg__fEbeamLTUAngX, double arg__fEbeamLTUAngY, double arg__fEbeamPkCurrBC2)
00173     : _uDamageMask(arg__uDamageMask), _fEbeamCharge(arg__fEbeamCharge), _fEbeamL3Energy(arg__fEbeamL3Energy), _fEbeamLTUPosX(arg__fEbeamLTUPosX), _fEbeamLTUPosY(arg__fEbeamLTUPosY), _fEbeamLTUAngX(arg__fEbeamLTUAngX), _fEbeamLTUAngY(arg__fEbeamLTUAngY), _fEbeamPkCurrBC2(arg__fEbeamPkCurrBC2)
00174   {
00175   }
00176   BldDataEBeamV1() {}
00177   /** Damage mask. */
00178   uint32_t damageMask() const { return _uDamageMask; }
00179   /** Beam charge in nC. */
00180   double ebeamCharge() const { return _fEbeamCharge; }
00181   /** Beam energy in MeV. */
00182   double ebeamL3Energy() const { return _fEbeamL3Energy; }
00183   /** LTU beam position in mm. */
00184   double ebeamLTUPosX() const { return _fEbeamLTUPosX; }
00185   /** LTU beam position in mm. */
00186   double ebeamLTUPosY() const { return _fEbeamLTUPosY; }
00187   /** LTU beam angle in mrad. */
00188   double ebeamLTUAngX() const { return _fEbeamLTUAngX; }
00189   /** LTU beam angle in mrad. */
00190   double ebeamLTUAngY() const { return _fEbeamLTUAngY; }
00191   /** Beam current in Amps. */
00192   double ebeamPkCurrBC2() const { return _fEbeamPkCurrBC2; }
00193   static uint32_t _sizeof() { return 60; }
00194 private:
00195   uint32_t      _uDamageMask;   /**< Damage mask. */
00196   double        _fEbeamCharge;  /**< Beam charge in nC. */
00197   double        _fEbeamL3Energy;        /**< Beam energy in MeV. */
00198   double        _fEbeamLTUPosX; /**< LTU beam position in mm. */
00199   double        _fEbeamLTUPosY; /**< LTU beam position in mm. */
00200   double        _fEbeamLTUAngX; /**< LTU beam angle in mrad. */
00201   double        _fEbeamLTUAngY; /**< LTU beam angle in mrad. */
00202   double        _fEbeamPkCurrBC2;       /**< Beam current in Amps. */
00203 };
00204 std::ostream& operator<<(std::ostream& str, Bld::BldDataEBeamV1::DamageMask enval);
00205 
00206 /** @class BldDataEBeamV2
00207 
00208   
00209 */
00210 
00211 
00212 class BldDataEBeamV2 {
00213 public:
00214   enum { TypeId = Pds::TypeId::Id_EBeam /**< XTC type ID value (from Pds::TypeId class) */ };
00215   enum { Version = 2 /**< XTC type version number */ };
00216 
00217   /** Constants defining bit mask for individual damage bits in value returned from damageMask() */
00218   enum DamageMask {
00219     EbeamChargeDamage = 0x001,
00220     EbeamL3EnergyDamage = 0x002,
00221     EbeamLTUPosXDamage = 0x004,
00222     EbeamLTUPosYDamage = 0x008,
00223     EbeamLTUAngXDamage = 0x010,
00224     EbeamLTUAngYDamage = 0x020,
00225     EbeamPkCurrBC2Damage = 0x040,
00226     EbeamEnergyBC2Damage = 0x080,
00227   };
00228   BldDataEBeamV2(uint32_t arg__uDamageMask, double arg__fEbeamCharge, double arg__fEbeamL3Energy, double arg__fEbeamLTUPosX, double arg__fEbeamLTUPosY, double arg__fEbeamLTUAngX, double arg__fEbeamLTUAngY, double arg__fEbeamPkCurrBC2, double arg__fEbeamEnergyBC2)
00229     : _uDamageMask(arg__uDamageMask), _fEbeamCharge(arg__fEbeamCharge), _fEbeamL3Energy(arg__fEbeamL3Energy), _fEbeamLTUPosX(arg__fEbeamLTUPosX), _fEbeamLTUPosY(arg__fEbeamLTUPosY), _fEbeamLTUAngX(arg__fEbeamLTUAngX), _fEbeamLTUAngY(arg__fEbeamLTUAngY), _fEbeamPkCurrBC2(arg__fEbeamPkCurrBC2), _fEbeamEnergyBC2(arg__fEbeamEnergyBC2)
00230   {
00231   }
00232   BldDataEBeamV2() {}
00233   /** Damage mask. */
00234   uint32_t damageMask() const { return _uDamageMask; }
00235   /** Beam charge in nC. */
00236   double ebeamCharge() const { return _fEbeamCharge; }
00237   /** Beam energy in MeV. */
00238   double ebeamL3Energy() const { return _fEbeamL3Energy; }
00239   /** LTU beam position in mm. */
00240   double ebeamLTUPosX() const { return _fEbeamLTUPosX; }
00241   /** LTU beam position in mm. */
00242   double ebeamLTUPosY() const { return _fEbeamLTUPosY; }
00243   /** LTU beam angle in mrad. */
00244   double ebeamLTUAngX() const { return _fEbeamLTUAngX; }
00245   /** LTU beam angle in mrad. */
00246   double ebeamLTUAngY() const { return _fEbeamLTUAngY; }
00247   /** Beam current in Amps. */
00248   double ebeamPkCurrBC2() const { return _fEbeamPkCurrBC2; }
00249   /** Beam energy in MeV. */
00250   double ebeamEnergyBC2() const { return _fEbeamEnergyBC2; }
00251   static uint32_t _sizeof() { return 68; }
00252 private:
00253   uint32_t      _uDamageMask;   /**< Damage mask. */
00254   double        _fEbeamCharge;  /**< Beam charge in nC. */
00255   double        _fEbeamL3Energy;        /**< Beam energy in MeV. */
00256   double        _fEbeamLTUPosX; /**< LTU beam position in mm. */
00257   double        _fEbeamLTUPosY; /**< LTU beam position in mm. */
00258   double        _fEbeamLTUAngX; /**< LTU beam angle in mrad. */
00259   double        _fEbeamLTUAngY; /**< LTU beam angle in mrad. */
00260   double        _fEbeamPkCurrBC2;       /**< Beam current in Amps. */
00261   double        _fEbeamEnergyBC2;       /**< Beam energy in MeV. */
00262 };
00263 std::ostream& operator<<(std::ostream& str, Bld::BldDataEBeamV2::DamageMask enval);
00264 
00265 /** @class BldDataEBeamV3
00266 
00267   
00268 */
00269 
00270 
00271 class BldDataEBeamV3 {
00272 public:
00273   enum { TypeId = Pds::TypeId::Id_EBeam /**< XTC type ID value (from Pds::TypeId class) */ };
00274   enum { Version = 3 /**< XTC type version number */ };
00275 
00276   /** Constants defining bit mask for individual damage bits in value returned from damageMask() */
00277   enum DamageMask {
00278     EbeamChargeDamage = 0x001,
00279     EbeamL3EnergyDamage = 0x002,
00280     EbeamLTUPosXDamage = 0x004,
00281     EbeamLTUPosYDamage = 0x008,
00282     EbeamLTUAngXDamage = 0x010,
00283     EbeamLTUAngYDamage = 0x020,
00284     EbeamPkCurrBC2Damage = 0x040,
00285     EbeamEnergyBC2Damage = 0x080,
00286     EbeamPkCurrBC1Damage = 0x100,
00287     EbeamEnergyBC1Damage = 0x200,
00288   };
00289   BldDataEBeamV3(uint32_t arg__uDamageMask, double arg__fEbeamCharge, double arg__fEbeamL3Energy, double arg__fEbeamLTUPosX, double arg__fEbeamLTUPosY, double arg__fEbeamLTUAngX, double arg__fEbeamLTUAngY, double arg__fEbeamPkCurrBC2, double arg__fEbeamEnergyBC2, double arg__fEbeamPkCurrBC1, double arg__fEbeamEnergyBC1)
00290     : _uDamageMask(arg__uDamageMask), _fEbeamCharge(arg__fEbeamCharge), _fEbeamL3Energy(arg__fEbeamL3Energy), _fEbeamLTUPosX(arg__fEbeamLTUPosX), _fEbeamLTUPosY(arg__fEbeamLTUPosY), _fEbeamLTUAngX(arg__fEbeamLTUAngX), _fEbeamLTUAngY(arg__fEbeamLTUAngY), _fEbeamPkCurrBC2(arg__fEbeamPkCurrBC2), _fEbeamEnergyBC2(arg__fEbeamEnergyBC2), _fEbeamPkCurrBC1(arg__fEbeamPkCurrBC1), _fEbeamEnergyBC1(arg__fEbeamEnergyBC1)
00291   {
00292   }
00293   BldDataEBeamV3() {}
00294   /** Damage mask. */
00295   uint32_t damageMask() const { return _uDamageMask; }
00296   /** Beam charge in nC. */
00297   double ebeamCharge() const { return _fEbeamCharge; }
00298   /** Beam energy in MeV. */
00299   double ebeamL3Energy() const { return _fEbeamL3Energy; }
00300   /** LTU beam position in mm. */
00301   double ebeamLTUPosX() const { return _fEbeamLTUPosX; }
00302   /** LTU beam position in mm. */
00303   double ebeamLTUPosY() const { return _fEbeamLTUPosY; }
00304   /** LTU beam angle in mrad. */
00305   double ebeamLTUAngX() const { return _fEbeamLTUAngX; }
00306   /** LTU beam angle in mrad. */
00307   double ebeamLTUAngY() const { return _fEbeamLTUAngY; }
00308   /** Beam current in Amps. */
00309   double ebeamPkCurrBC2() const { return _fEbeamPkCurrBC2; }
00310   /** Beam position in mm (related to beam energy). */
00311   double ebeamEnergyBC2() const { return _fEbeamEnergyBC2; }
00312   /** Beam current in Amps. */
00313   double ebeamPkCurrBC1() const { return _fEbeamPkCurrBC1; }
00314   /** Beam position in mm (related to beam energy). */
00315   double ebeamEnergyBC1() const { return _fEbeamEnergyBC1; }
00316   static uint32_t _sizeof() { return 84; }
00317 private:
00318   uint32_t      _uDamageMask;   /**< Damage mask. */
00319   double        _fEbeamCharge;  /**< Beam charge in nC. */
00320   double        _fEbeamL3Energy;        /**< Beam energy in MeV. */
00321   double        _fEbeamLTUPosX; /**< LTU beam position in mm. */
00322   double        _fEbeamLTUPosY; /**< LTU beam position in mm. */
00323   double        _fEbeamLTUAngX; /**< LTU beam angle in mrad. */
00324   double        _fEbeamLTUAngY; /**< LTU beam angle in mrad. */
00325   double        _fEbeamPkCurrBC2;       /**< Beam current in Amps. */
00326   double        _fEbeamEnergyBC2;       /**< Beam position in mm (related to beam energy). */
00327   double        _fEbeamPkCurrBC1;       /**< Beam current in Amps. */
00328   double        _fEbeamEnergyBC1;       /**< Beam position in mm (related to beam energy). */
00329 };
00330 std::ostream& operator<<(std::ostream& str, Bld::BldDataEBeamV3::DamageMask enval);
00331 
00332 /** @class BldDataEBeamV4
00333 
00334   
00335 */
00336 
00337 
00338 class BldDataEBeamV4 {
00339 public:
00340   enum { TypeId = Pds::TypeId::Id_EBeam /**< XTC type ID value (from Pds::TypeId class) */ };
00341   enum { Version = 4 /**< XTC type version number */ };
00342 
00343   /** Constants defining bit mask for individual damage bits in value returned from damageMask() */
00344   enum DamageMask {
00345     EbeamChargeDamage = 0x001,
00346     EbeamL3EnergyDamage = 0x002,
00347     EbeamLTUPosXDamage = 0x004,
00348     EbeamLTUPosYDamage = 0x008,
00349     EbeamLTUAngXDamage = 0x010,
00350     EbeamLTUAngYDamage = 0x020,
00351     EbeamPkCurrBC2Damage = 0x040,
00352     EbeamEnergyBC2Damage = 0x080,
00353     EbeamPkCurrBC1Damage = 0x100,
00354     EbeamEnergyBC1Damage = 0x200,
00355     EbeamUndPosXDamage = 0x400,
00356     EbeamUndPosYDamage = 0x800,
00357     EbeamUndAngXDamage = 0x1000,
00358     EbeamUndAngYDamage = 0x2000,
00359   };
00360   BldDataEBeamV4(uint32_t arg__uDamageMask, double arg__fEbeamCharge, double arg__fEbeamL3Energy, double arg__fEbeamLTUPosX, double arg__fEbeamLTUPosY, double arg__fEbeamLTUAngX, double arg__fEbeamLTUAngY, double arg__fEbeamPkCurrBC2, double arg__fEbeamEnergyBC2, double arg__fEbeamPkCurrBC1, double arg__fEbeamEnergyBC1, double arg__fEbeamUndPosX, double arg__fEbeamUndPosY, double arg__fEbeamUndAngX, double arg__fEbeamUndAngY)
00361     : _uDamageMask(arg__uDamageMask), _fEbeamCharge(arg__fEbeamCharge), _fEbeamL3Energy(arg__fEbeamL3Energy), _fEbeamLTUPosX(arg__fEbeamLTUPosX), _fEbeamLTUPosY(arg__fEbeamLTUPosY), _fEbeamLTUAngX(arg__fEbeamLTUAngX), _fEbeamLTUAngY(arg__fEbeamLTUAngY), _fEbeamPkCurrBC2(arg__fEbeamPkCurrBC2), _fEbeamEnergyBC2(arg__fEbeamEnergyBC2), _fEbeamPkCurrBC1(arg__fEbeamPkCurrBC1), _fEbeamEnergyBC1(arg__fEbeamEnergyBC1), _fEbeamUndPosX(arg__fEbeamUndPosX), _fEbeamUndPosY(arg__fEbeamUndPosY), _fEbeamUndAngX(arg__fEbeamUndAngX), _fEbeamUndAngY(arg__fEbeamUndAngY)
00362   {
00363   }
00364   BldDataEBeamV4() {}
00365   /** Damage mask. */
00366   uint32_t damageMask() const { return _uDamageMask; }
00367   /** Beam charge in nC. */
00368   double ebeamCharge() const { return _fEbeamCharge; }
00369   /** Beam energy in MeV. */
00370   double ebeamL3Energy() const { return _fEbeamL3Energy; }
00371   /** LTU beam position (BPMS:LTU1:720 through 750) in mm. */
00372   double ebeamLTUPosX() const { return _fEbeamLTUPosX; }
00373   /** LTU beam position in mm. */
00374   double ebeamLTUPosY() const { return _fEbeamLTUPosY; }
00375   /** LTU beam angle in mrad. */
00376   double ebeamLTUAngX() const { return _fEbeamLTUAngX; }
00377   /** LTU beam angle in mrad. */
00378   double ebeamLTUAngY() const { return _fEbeamLTUAngY; }
00379   /** Beam current in Amps. */
00380   double ebeamPkCurrBC2() const { return _fEbeamPkCurrBC2; }
00381   /** Beam position in mm (related to beam energy). */
00382   double ebeamEnergyBC2() const { return _fEbeamEnergyBC2; }
00383   /** Beam current in Amps. */
00384   double ebeamPkCurrBC1() const { return _fEbeamPkCurrBC1; }
00385   /** Beam position in mm (related to beam energy). */
00386   double ebeamEnergyBC1() const { return _fEbeamEnergyBC1; }
00387   /** Undulator launch feedback (BPMs U4 through U10) beam x-position in mm. */
00388   double ebeamUndPosX() const { return _fEbeamUndPosX; }
00389   /** Undulator launch feedback beam y-position in mm. */
00390   double ebeamUndPosY() const { return _fEbeamUndPosY; }
00391   /** Undulator launch feedback beam x-angle in mrad. */
00392   double ebeamUndAngX() const { return _fEbeamUndAngX; }
00393   /** Undulator launch feedback beam y-angle in mrad. */
00394   double ebeamUndAngY() const { return _fEbeamUndAngY; }
00395   static uint32_t _sizeof() { return 116; }
00396 private:
00397   uint32_t      _uDamageMask;   /**< Damage mask. */
00398   double        _fEbeamCharge;  /**< Beam charge in nC. */
00399   double        _fEbeamL3Energy;        /**< Beam energy in MeV. */
00400   double        _fEbeamLTUPosX; /**< LTU beam position (BPMS:LTU1:720 through 750) in mm. */
00401   double        _fEbeamLTUPosY; /**< LTU beam position in mm. */
00402   double        _fEbeamLTUAngX; /**< LTU beam angle in mrad. */
00403   double        _fEbeamLTUAngY; /**< LTU beam angle in mrad. */
00404   double        _fEbeamPkCurrBC2;       /**< Beam current in Amps. */
00405   double        _fEbeamEnergyBC2;       /**< Beam position in mm (related to beam energy). */
00406   double        _fEbeamPkCurrBC1;       /**< Beam current in Amps. */
00407   double        _fEbeamEnergyBC1;       /**< Beam position in mm (related to beam energy). */
00408   double        _fEbeamUndPosX; /**< Undulator launch feedback (BPMs U4 through U10) beam x-position in mm. */
00409   double        _fEbeamUndPosY; /**< Undulator launch feedback beam y-position in mm. */
00410   double        _fEbeamUndAngX; /**< Undulator launch feedback beam x-angle in mrad. */
00411   double        _fEbeamUndAngY; /**< Undulator launch feedback beam y-angle in mrad. */
00412 };
00413 std::ostream& operator<<(std::ostream& str, Bld::BldDataEBeamV4::DamageMask enval);
00414 
00415 /** @class BldDataEBeamV5
00416 
00417   
00418 */
00419 
00420 
00421 class BldDataEBeamV5 {
00422 public:
00423   enum { TypeId = Pds::TypeId::Id_EBeam /**< XTC type ID value (from Pds::TypeId class) */ };
00424   enum { Version = 5 /**< XTC type version number */ };
00425 
00426   /** Constants defining bit mask for individual damage bits in value returned from damageMask() */
00427   enum DamageMask {
00428     EbeamChargeDamage = 0x001,
00429     EbeamL3EnergyDamage = 0x002,
00430     EbeamLTUPosXDamage = 0x004,
00431     EbeamLTUPosYDamage = 0x008,
00432     EbeamLTUAngXDamage = 0x010,
00433     EbeamLTUAngYDamage = 0x020,
00434     EbeamPkCurrBC2Damage = 0x040,
00435     EbeamEnergyBC2Damage = 0x080,
00436     EbeamPkCurrBC1Damage = 0x100,
00437     EbeamEnergyBC1Damage = 0x200,
00438     EbeamUndPosXDamage = 0x400,
00439     EbeamUndPosYDamage = 0x800,
00440     EbeamUndAngXDamage = 0x1000,
00441     EbeamUndAngYDamage = 0x2000,
00442     EbeamXTCAVAmplDamage = 0x4000,
00443     EbeamXTCAVPhaseDamage = 0x8000,
00444     EbeamDumpChargeDamage = 0x10000,
00445   };
00446   BldDataEBeamV5(uint32_t arg__uDamageMask, double arg__fEbeamCharge, double arg__fEbeamL3Energy, double arg__fEbeamLTUPosX, double arg__fEbeamLTUPosY, double arg__fEbeamLTUAngX, double arg__fEbeamLTUAngY, double arg__fEbeamPkCurrBC2, double arg__fEbeamEnergyBC2, double arg__fEbeamPkCurrBC1, double arg__fEbeamEnergyBC1, double arg__fEbeamUndPosX, double arg__fEbeamUndPosY, double arg__fEbeamUndAngX, double arg__fEbeamUndAngY, double arg__fEbeamXTCAVAmpl, double arg__fEbeamXTCAVPhase, double arg__fEbeamDumpCharge)
00447     : _uDamageMask(arg__uDamageMask), _fEbeamCharge(arg__fEbeamCharge), _fEbeamL3Energy(arg__fEbeamL3Energy), _fEbeamLTUPosX(arg__fEbeamLTUPosX), _fEbeamLTUPosY(arg__fEbeamLTUPosY), _fEbeamLTUAngX(arg__fEbeamLTUAngX), _fEbeamLTUAngY(arg__fEbeamLTUAngY), _fEbeamPkCurrBC2(arg__fEbeamPkCurrBC2), _fEbeamEnergyBC2(arg__fEbeamEnergyBC2), _fEbeamPkCurrBC1(arg__fEbeamPkCurrBC1), _fEbeamEnergyBC1(arg__fEbeamEnergyBC1), _fEbeamUndPosX(arg__fEbeamUndPosX), _fEbeamUndPosY(arg__fEbeamUndPosY), _fEbeamUndAngX(arg__fEbeamUndAngX), _fEbeamUndAngY(arg__fEbeamUndAngY), _fEbeamXTCAVAmpl(arg__fEbeamXTCAVAmpl), _fEbeamXTCAVPhase(arg__fEbeamXTCAVPhase), _fEbeamDumpCharge(arg__fEbeamDumpCharge)
00448   {
00449   }
00450   BldDataEBeamV5() {}
00451   /** Damage mask. */
00452   uint32_t damageMask() const { return _uDamageMask; }
00453   /** Beam charge in nC. */
00454   double ebeamCharge() const { return _fEbeamCharge; }
00455   /** Beam energy in MeV. */
00456   double ebeamL3Energy() const { return _fEbeamL3Energy; }
00457   /** LTU beam position (BPMS:LTU1:720 through 750) in mm. */
00458   double ebeamLTUPosX() const { return _fEbeamLTUPosX; }
00459   /** LTU beam position in mm. */
00460   double ebeamLTUPosY() const { return _fEbeamLTUPosY; }
00461   /** LTU beam angle in mrad. */
00462   double ebeamLTUAngX() const { return _fEbeamLTUAngX; }
00463   /** LTU beam angle in mrad. */
00464   double ebeamLTUAngY() const { return _fEbeamLTUAngY; }
00465   /** Beam current in Amps. */
00466   double ebeamPkCurrBC2() const { return _fEbeamPkCurrBC2; }
00467   /** Beam position in mm (related to beam energy). */
00468   double ebeamEnergyBC2() const { return _fEbeamEnergyBC2; }
00469   /** Beam current in Amps. */
00470   double ebeamPkCurrBC1() const { return _fEbeamPkCurrBC1; }
00471   /** Beam position in mm (related to beam energy). */
00472   double ebeamEnergyBC1() const { return _fEbeamEnergyBC1; }
00473   /** Undulator launch feedback (BPMs U4 through U10) beam x-position in mm. */
00474   double ebeamUndPosX() const { return _fEbeamUndPosX; }
00475   /** Undulator launch feedback beam y-position in mm. */
00476   double ebeamUndPosY() const { return _fEbeamUndPosY; }
00477   /** Undulator launch feedback beam x-angle in mrad. */
00478   double ebeamUndAngX() const { return _fEbeamUndAngX; }
00479   /** Undulator launch feedback beam y-angle in mrad. */
00480   double ebeamUndAngY() const { return _fEbeamUndAngY; }
00481   /** XTCAV Amplitude in MVolt. */
00482   double ebeamXTCAVAmpl() const { return _fEbeamXTCAVAmpl; }
00483   /** XTCAV Phase in degrees. */
00484   double ebeamXTCAVPhase() const { return _fEbeamXTCAVPhase; }
00485   /** Bunch charge at Dump in num. electrons */
00486   double ebeamDumpCharge() const { return _fEbeamDumpCharge; }
00487   static uint32_t _sizeof() { return 140; }
00488 private:
00489   uint32_t      _uDamageMask;   /**< Damage mask. */
00490   double        _fEbeamCharge;  /**< Beam charge in nC. */
00491   double        _fEbeamL3Energy;        /**< Beam energy in MeV. */
00492   double        _fEbeamLTUPosX; /**< LTU beam position (BPMS:LTU1:720 through 750) in mm. */
00493   double        _fEbeamLTUPosY; /**< LTU beam position in mm. */
00494   double        _fEbeamLTUAngX; /**< LTU beam angle in mrad. */
00495   double        _fEbeamLTUAngY; /**< LTU beam angle in mrad. */
00496   double        _fEbeamPkCurrBC2;       /**< Beam current in Amps. */
00497   double        _fEbeamEnergyBC2;       /**< Beam position in mm (related to beam energy). */
00498   double        _fEbeamPkCurrBC1;       /**< Beam current in Amps. */
00499   double        _fEbeamEnergyBC1;       /**< Beam position in mm (related to beam energy). */
00500   double        _fEbeamUndPosX; /**< Undulator launch feedback (BPMs U4 through U10) beam x-position in mm. */
00501   double        _fEbeamUndPosY; /**< Undulator launch feedback beam y-position in mm. */
00502   double        _fEbeamUndAngX; /**< Undulator launch feedback beam x-angle in mrad. */
00503   double        _fEbeamUndAngY; /**< Undulator launch feedback beam y-angle in mrad. */
00504   double        _fEbeamXTCAVAmpl;       /**< XTCAV Amplitude in MVolt. */
00505   double        _fEbeamXTCAVPhase;      /**< XTCAV Phase in degrees. */
00506   double        _fEbeamDumpCharge;      /**< Bunch charge at Dump in num. electrons */
00507 };
00508 std::ostream& operator<<(std::ostream& str, Bld::BldDataEBeamV5::DamageMask enval);
00509 
00510 /** @class BldDataEBeamV6
00511 
00512   
00513 */
00514 
00515 
00516 class BldDataEBeamV6 {
00517 public:
00518   enum { TypeId = Pds::TypeId::Id_EBeam /**< XTC type ID value (from Pds::TypeId class) */ };
00519   enum { Version = 6 /**< XTC type version number */ };
00520 
00521   /** Constants defining bit mask for individual damage bits in value returned from damageMask() */
00522   enum DamageMask {
00523     EbeamChargeDamage = 0x001,
00524     EbeamL3EnergyDamage = 0x002,
00525     EbeamLTUPosXDamage = 0x004,
00526     EbeamLTUPosYDamage = 0x008,
00527     EbeamLTUAngXDamage = 0x010,
00528     EbeamLTUAngYDamage = 0x020,
00529     EbeamPkCurrBC2Damage = 0x040,
00530     EbeamEnergyBC2Damage = 0x080,
00531     EbeamPkCurrBC1Damage = 0x100,
00532     EbeamEnergyBC1Damage = 0x200,
00533     EbeamUndPosXDamage = 0x400,
00534     EbeamUndPosYDamage = 0x800,
00535     EbeamUndAngXDamage = 0x1000,
00536     EbeamUndAngYDamage = 0x2000,
00537     EbeamXTCAVAmplDamage = 0x4000,
00538     EbeamXTCAVPhaseDamage = 0x8000,
00539     EbeamDumpChargeDamage = 0x10000,
00540     EbeamPhotonEnergyDamage = 0x20000,
00541   };
00542   BldDataEBeamV6(uint32_t arg__uDamageMask, double arg__fEbeamCharge, double arg__fEbeamL3Energy, double arg__fEbeamLTUPosX, double arg__fEbeamLTUPosY, double arg__fEbeamLTUAngX, double arg__fEbeamLTUAngY, double arg__fEbeamPkCurrBC2, double arg__fEbeamEnergyBC2, double arg__fEbeamPkCurrBC1, double arg__fEbeamEnergyBC1, double arg__fEbeamUndPosX, double arg__fEbeamUndPosY, double arg__fEbeamUndAngX, double arg__fEbeamUndAngY, double arg__fEbeamXTCAVAmpl, double arg__fEbeamXTCAVPhase, double arg__fEbeamDumpCharge, double arg__fEbeamPhotonEnergy, double arg__fEbeamLTU250, double arg__fEbeamLTU450)
00543     : _uDamageMask(arg__uDamageMask), _fEbeamCharge(arg__fEbeamCharge), _fEbeamL3Energy(arg__fEbeamL3Energy), _fEbeamLTUPosX(arg__fEbeamLTUPosX), _fEbeamLTUPosY(arg__fEbeamLTUPosY), _fEbeamLTUAngX(arg__fEbeamLTUAngX), _fEbeamLTUAngY(arg__fEbeamLTUAngY), _fEbeamPkCurrBC2(arg__fEbeamPkCurrBC2), _fEbeamEnergyBC2(arg__fEbeamEnergyBC2), _fEbeamPkCurrBC1(arg__fEbeamPkCurrBC1), _fEbeamEnergyBC1(arg__fEbeamEnergyBC1), _fEbeamUndPosX(arg__fEbeamUndPosX), _fEbeamUndPosY(arg__fEbeamUndPosY), _fEbeamUndAngX(arg__fEbeamUndAngX), _fEbeamUndAngY(arg__fEbeamUndAngY), _fEbeamXTCAVAmpl(arg__fEbeamXTCAVAmpl), _fEbeamXTCAVPhase(arg__fEbeamXTCAVPhase), _fEbeamDumpCharge(arg__fEbeamDumpCharge), _fEbeamPhotonEnergy(arg__fEbeamPhotonEnergy), _fEbeamLTU250(arg__fEbeamLTU250), _fEbeamLTU450(arg__fEbeamLTU450)
00544   {
00545   }
00546   BldDataEBeamV6() {}
00547   /** Damage mask. */
00548   uint32_t damageMask() const { return _uDamageMask; }
00549   /** Beam charge in nC. */
00550   double ebeamCharge() const { return _fEbeamCharge; }
00551   /** Beam energy in MeV. */
00552   double ebeamL3Energy() const { return _fEbeamL3Energy; }
00553   /** LTU beam position (BPMS:LTU1:720 through 750) in mm. */
00554   double ebeamLTUPosX() const { return _fEbeamLTUPosX; }
00555   /** LTU beam position in mm. */
00556   double ebeamLTUPosY() const { return _fEbeamLTUPosY; }
00557   /** LTU beam angle in mrad. */
00558   double ebeamLTUAngX() const { return _fEbeamLTUAngX; }
00559   /** LTU beam angle in mrad. */
00560   double ebeamLTUAngY() const { return _fEbeamLTUAngY; }
00561   /** Beam current in Amps. */
00562   double ebeamPkCurrBC2() const { return _fEbeamPkCurrBC2; }
00563   /** Beam position in mm (related to beam energy). */
00564   double ebeamEnergyBC2() const { return _fEbeamEnergyBC2; }
00565   /** Beam current in Amps. */
00566   double ebeamPkCurrBC1() const { return _fEbeamPkCurrBC1; }
00567   /** Beam position in mm (related to beam energy). */
00568   double ebeamEnergyBC1() const { return _fEbeamEnergyBC1; }
00569   /** Undulator launch feedback (BPMs U4 through U10) beam x-position in mm. */
00570   double ebeamUndPosX() const { return _fEbeamUndPosX; }
00571   /** Undulator launch feedback beam y-position in mm. */
00572   double ebeamUndPosY() const { return _fEbeamUndPosY; }
00573   /** Undulator launch feedback beam x-angle in mrad. */
00574   double ebeamUndAngX() const { return _fEbeamUndAngX; }
00575   /** Undulator launch feedback beam y-angle in mrad. */
00576   double ebeamUndAngY() const { return _fEbeamUndAngY; }
00577   /** XTCAV Amplitude in MVolt. */
00578   double ebeamXTCAVAmpl() const { return _fEbeamXTCAVAmpl; }
00579   /** XTCAV Phase in degrees. */
00580   double ebeamXTCAVPhase() const { return _fEbeamXTCAVPhase; }
00581   /** Bunch charge at Dump in num. electrons */
00582   double ebeamDumpCharge() const { return _fEbeamDumpCharge; }
00583   /** computed photon energy, in eV */
00584   double ebeamPhotonEnergy() const { return _fEbeamPhotonEnergy; }
00585   /** LTU250 BPM value in mm, used to compute photon energy. from BPMS:LTU1:250:X */
00586   double ebeamLTU250() const { return _fEbeamLTU250; }
00587   /** LTU450 BPM value in mm, used to compute photon energy. from BPMS:LTU1:450:X */
00588   double ebeamLTU450() const { return _fEbeamLTU450; }
00589   static uint32_t _sizeof() { return 164; }
00590 private:
00591   uint32_t      _uDamageMask;   /**< Damage mask. */
00592   double        _fEbeamCharge;  /**< Beam charge in nC. */
00593   double        _fEbeamL3Energy;        /**< Beam energy in MeV. */
00594   double        _fEbeamLTUPosX; /**< LTU beam position (BPMS:LTU1:720 through 750) in mm. */
00595   double        _fEbeamLTUPosY; /**< LTU beam position in mm. */
00596   double        _fEbeamLTUAngX; /**< LTU beam angle in mrad. */
00597   double        _fEbeamLTUAngY; /**< LTU beam angle in mrad. */
00598   double        _fEbeamPkCurrBC2;       /**< Beam current in Amps. */
00599   double        _fEbeamEnergyBC2;       /**< Beam position in mm (related to beam energy). */
00600   double        _fEbeamPkCurrBC1;       /**< Beam current in Amps. */
00601   double        _fEbeamEnergyBC1;       /**< Beam position in mm (related to beam energy). */
00602   double        _fEbeamUndPosX; /**< Undulator launch feedback (BPMs U4 through U10) beam x-position in mm. */
00603   double        _fEbeamUndPosY; /**< Undulator launch feedback beam y-position in mm. */
00604   double        _fEbeamUndAngX; /**< Undulator launch feedback beam x-angle in mrad. */
00605   double        _fEbeamUndAngY; /**< Undulator launch feedback beam y-angle in mrad. */
00606   double        _fEbeamXTCAVAmpl;       /**< XTCAV Amplitude in MVolt. */
00607   double        _fEbeamXTCAVPhase;      /**< XTCAV Phase in degrees. */
00608   double        _fEbeamDumpCharge;      /**< Bunch charge at Dump in num. electrons */
00609   double        _fEbeamPhotonEnergy;    /**< computed photon energy, in eV */
00610   double        _fEbeamLTU250;  /**< LTU250 BPM value in mm, used to compute photon energy. from BPMS:LTU1:250:X */
00611   double        _fEbeamLTU450;  /**< LTU450 BPM value in mm, used to compute photon energy. from BPMS:LTU1:450:X */
00612 };
00613 std::ostream& operator<<(std::ostream& str, Bld::BldDataEBeamV6::DamageMask enval);
00614 
00615 /** @class BldDataEBeamV7
00616 
00617   BldDataEBeamV7 is the same as BldDataEBeamV6.
00618 A sign-error error was discovered in the calculation of the photon energy that goes into the ebeam bld.
00619 This is fixed on the accelerator side, but we will increment the ebeam bld version number to V7 so the
00620 data is clearly marked as changed.
00621 */
00622 
00623 
00624 class BldDataEBeamV7 {
00625 public:
00626   enum { TypeId = Pds::TypeId::Id_EBeam /**< XTC type ID value (from Pds::TypeId class) */ };
00627   enum { Version = 7 /**< XTC type version number */ };
00628 
00629   /** Constants defining bit mask for individual damage bits in value returned from damageMask() */
00630   enum DamageMask {
00631     EbeamChargeDamage = 0x001,
00632     EbeamL3EnergyDamage = 0x002,
00633     EbeamLTUPosXDamage = 0x004,
00634     EbeamLTUPosYDamage = 0x008,
00635     EbeamLTUAngXDamage = 0x010,
00636     EbeamLTUAngYDamage = 0x020,
00637     EbeamPkCurrBC2Damage = 0x040,
00638     EbeamEnergyBC2Damage = 0x080,
00639     EbeamPkCurrBC1Damage = 0x100,
00640     EbeamEnergyBC1Damage = 0x200,
00641     EbeamUndPosXDamage = 0x400,
00642     EbeamUndPosYDamage = 0x800,
00643     EbeamUndAngXDamage = 0x1000,
00644     EbeamUndAngYDamage = 0x2000,
00645     EbeamXTCAVAmplDamage = 0x4000,
00646     EbeamXTCAVPhaseDamage = 0x8000,
00647     EbeamDumpChargeDamage = 0x10000,
00648     EbeamPhotonEnergyDamage = 0x20000,
00649   };
00650   BldDataEBeamV7(uint32_t arg__uDamageMask, double arg__fEbeamCharge, double arg__fEbeamL3Energy, double arg__fEbeamLTUPosX, double arg__fEbeamLTUPosY, double arg__fEbeamLTUAngX, double arg__fEbeamLTUAngY, double arg__fEbeamPkCurrBC2, double arg__fEbeamEnergyBC2, double arg__fEbeamPkCurrBC1, double arg__fEbeamEnergyBC1, double arg__fEbeamUndPosX, double arg__fEbeamUndPosY, double arg__fEbeamUndAngX, double arg__fEbeamUndAngY, double arg__fEbeamXTCAVAmpl, double arg__fEbeamXTCAVPhase, double arg__fEbeamDumpCharge, double arg__fEbeamPhotonEnergy, double arg__fEbeamLTU250, double arg__fEbeamLTU450)
00651     : _uDamageMask(arg__uDamageMask), _fEbeamCharge(arg__fEbeamCharge), _fEbeamL3Energy(arg__fEbeamL3Energy), _fEbeamLTUPosX(arg__fEbeamLTUPosX), _fEbeamLTUPosY(arg__fEbeamLTUPosY), _fEbeamLTUAngX(arg__fEbeamLTUAngX), _fEbeamLTUAngY(arg__fEbeamLTUAngY), _fEbeamPkCurrBC2(arg__fEbeamPkCurrBC2), _fEbeamEnergyBC2(arg__fEbeamEnergyBC2), _fEbeamPkCurrBC1(arg__fEbeamPkCurrBC1), _fEbeamEnergyBC1(arg__fEbeamEnergyBC1), _fEbeamUndPosX(arg__fEbeamUndPosX), _fEbeamUndPosY(arg__fEbeamUndPosY), _fEbeamUndAngX(arg__fEbeamUndAngX), _fEbeamUndAngY(arg__fEbeamUndAngY), _fEbeamXTCAVAmpl(arg__fEbeamXTCAVAmpl), _fEbeamXTCAVPhase(arg__fEbeamXTCAVPhase), _fEbeamDumpCharge(arg__fEbeamDumpCharge), _fEbeamPhotonEnergy(arg__fEbeamPhotonEnergy), _fEbeamLTU250(arg__fEbeamLTU250), _fEbeamLTU450(arg__fEbeamLTU450)
00652   {
00653   }
00654   BldDataEBeamV7() {}
00655   /** Damage mask. */
00656   uint32_t damageMask() const { return _uDamageMask; }
00657   /** Beam charge in nC. */
00658   double ebeamCharge() const { return _fEbeamCharge; }
00659   /** Beam energy in MeV. */
00660   double ebeamL3Energy() const { return _fEbeamL3Energy; }
00661   /** LTU beam position (BPMS:LTU1:720 through 750) in mm. */
00662   double ebeamLTUPosX() const { return _fEbeamLTUPosX; }
00663   /** LTU beam position in mm. */
00664   double ebeamLTUPosY() const { return _fEbeamLTUPosY; }
00665   /** LTU beam angle in mrad. */
00666   double ebeamLTUAngX() const { return _fEbeamLTUAngX; }
00667   /** LTU beam angle in mrad. */
00668   double ebeamLTUAngY() const { return _fEbeamLTUAngY; }
00669   /** Beam current in Amps. */
00670   double ebeamPkCurrBC2() const { return _fEbeamPkCurrBC2; }
00671   /** Beam position in mm (related to beam energy). */
00672   double ebeamEnergyBC2() const { return _fEbeamEnergyBC2; }
00673   /** Beam current in Amps. */
00674   double ebeamPkCurrBC1() const { return _fEbeamPkCurrBC1; }
00675   /** Beam position in mm (related to beam energy). */
00676   double ebeamEnergyBC1() const { return _fEbeamEnergyBC1; }
00677   /** Undulator launch feedback (BPMs U4 through U10) beam x-position in mm. */
00678   double ebeamUndPosX() const { return _fEbeamUndPosX; }
00679   /** Undulator launch feedback beam y-position in mm. */
00680   double ebeamUndPosY() const { return _fEbeamUndPosY; }
00681   /** Undulator launch feedback beam x-angle in mrad. */
00682   double ebeamUndAngX() const { return _fEbeamUndAngX; }
00683   /** Undulator launch feedback beam y-angle in mrad. */
00684   double ebeamUndAngY() const { return _fEbeamUndAngY; }
00685   /** XTCAV Amplitude in MVolt. */
00686   double ebeamXTCAVAmpl() const { return _fEbeamXTCAVAmpl; }
00687   /** XTCAV Phase in degrees. */
00688   double ebeamXTCAVPhase() const { return _fEbeamXTCAVPhase; }
00689   /** Bunch charge at Dump in num. electrons */
00690   double ebeamDumpCharge() const { return _fEbeamDumpCharge; }
00691   /** computed photon energy, in eV */
00692   double ebeamPhotonEnergy() const { return _fEbeamPhotonEnergy; }
00693   /** LTU250 BPM value in mm, used to compute photon energy. from BPMS:LTU1:250:X */
00694   double ebeamLTU250() const { return _fEbeamLTU250; }
00695   /** LTU450 BPM value in mm, used to compute photon energy. from BPMS:LTU1:450:X */
00696   double ebeamLTU450() const { return _fEbeamLTU450; }
00697   static uint32_t _sizeof() { return 164; }
00698 private:
00699   uint32_t      _uDamageMask;   /**< Damage mask. */
00700   double        _fEbeamCharge;  /**< Beam charge in nC. */
00701   double        _fEbeamL3Energy;        /**< Beam energy in MeV. */
00702   double        _fEbeamLTUPosX; /**< LTU beam position (BPMS:LTU1:720 through 750) in mm. */
00703   double        _fEbeamLTUPosY; /**< LTU beam position in mm. */
00704   double        _fEbeamLTUAngX; /**< LTU beam angle in mrad. */
00705   double        _fEbeamLTUAngY; /**< LTU beam angle in mrad. */
00706   double        _fEbeamPkCurrBC2;       /**< Beam current in Amps. */
00707   double        _fEbeamEnergyBC2;       /**< Beam position in mm (related to beam energy). */
00708   double        _fEbeamPkCurrBC1;       /**< Beam current in Amps. */
00709   double        _fEbeamEnergyBC1;       /**< Beam position in mm (related to beam energy). */
00710   double        _fEbeamUndPosX; /**< Undulator launch feedback (BPMs U4 through U10) beam x-position in mm. */
00711   double        _fEbeamUndPosY; /**< Undulator launch feedback beam y-position in mm. */
00712   double        _fEbeamUndAngX; /**< Undulator launch feedback beam x-angle in mrad. */
00713   double        _fEbeamUndAngY; /**< Undulator launch feedback beam y-angle in mrad. */
00714   double        _fEbeamXTCAVAmpl;       /**< XTCAV Amplitude in MVolt. */
00715   double        _fEbeamXTCAVPhase;      /**< XTCAV Phase in degrees. */
00716   double        _fEbeamDumpCharge;      /**< Bunch charge at Dump in num. electrons */
00717   double        _fEbeamPhotonEnergy;    /**< computed photon energy, in eV */
00718   double        _fEbeamLTU250;  /**< LTU250 BPM value in mm, used to compute photon energy. from BPMS:LTU1:250:X */
00719   double        _fEbeamLTU450;  /**< LTU450 BPM value in mm, used to compute photon energy. from BPMS:LTU1:450:X */
00720 };
00721 std::ostream& operator<<(std::ostream& str, Bld::BldDataEBeamV7::DamageMask enval);
00722 
00723 /** @class BldDataEOrbitsV0
00724 
00725   Orbit parameters.
00726 */
00727 
00728 
00729 class BldDataEOrbitsV0 {
00730 public:
00731   enum { TypeId = Pds::TypeId::Id_EOrbits /**< XTC type ID value (from Pds::TypeId class) */ };
00732   enum { Version = 0 /**< XTC type version number */ };
00733   virtual ~BldDataEOrbitsV0();
00734   /** Number of BPM in each array */
00735   virtual uint32_t nBPMS() const = 0;
00736   /** Array of BPM X values (mm) */
00737   virtual ndarray<const double, 1> fBPM_X() const = 0;
00738   /** Array of BPM Y values (mm) */
00739   virtual ndarray<const double, 1> fBPM_Y() const = 0;
00740   /** Array of BPM TMIT values (Nel) */
00741   virtual ndarray<const double, 1> fBPM_TMIT() const = 0;
00742 };
00743 
00744 /** @class BldDataPhaseCavity
00745 
00746   PV names: UND:R02:IOC:16:BAT:FitTime1, UND:R02:IOC:16:BAT:FitTime2,
00747                 UND:R02:IOC:16:BAT:Charge1,  UND:R02:IOC:16:BAT:Charge2
00748 */
00749 
00750 
00751 class BldDataPhaseCavity {
00752 public:
00753   enum { TypeId = Pds::TypeId::Id_PhaseCavity /**< XTC type ID value (from Pds::TypeId class) */ };
00754   enum { Version = 0 /**< XTC type version number */ };
00755   BldDataPhaseCavity(double arg__fFitTime1, double arg__fFitTime2, double arg__fCharge1, double arg__fCharge2)
00756     : _fFitTime1(arg__fFitTime1), _fFitTime2(arg__fFitTime2), _fCharge1(arg__fCharge1), _fCharge2(arg__fCharge2)
00757   {
00758   }
00759   BldDataPhaseCavity() {}
00760   /** UND:R02:IOC:16:BAT:FitTime1 value in pico-seconds. */
00761   double fitTime1() const { return _fFitTime1; }
00762   /** UND:R02:IOC:16:BAT:FitTime2 value in pico-seconds. */
00763   double fitTime2() const { return _fFitTime2; }
00764   /** UND:R02:IOC:16:BAT:Charge1 value in pico-columbs. */
00765   double charge1() const { return _fCharge1; }
00766   /** UND:R02:IOC:16:BAT:Charge2 value in pico-columbs. */
00767   double charge2() const { return _fCharge2; }
00768   static uint32_t _sizeof() { return 32; }
00769 private:
00770   double        _fFitTime1;     /**< UND:R02:IOC:16:BAT:FitTime1 value in pico-seconds. */
00771   double        _fFitTime2;     /**< UND:R02:IOC:16:BAT:FitTime2 value in pico-seconds. */
00772   double        _fCharge1;      /**< UND:R02:IOC:16:BAT:Charge1 value in pico-columbs. */
00773   double        _fCharge2;      /**< UND:R02:IOC:16:BAT:Charge2 value in pico-columbs. */
00774 };
00775 
00776 /** @class BldDataIpimbV0
00777 
00778   Combined structure which includes Ipimb.DataV1, Ipimb.ConfigV1, and
00779             Lusi.IpmFexV1 objects.
00780 */
00781 
00782 
00783 class BldDataIpimbV0 {
00784 public:
00785   enum { TypeId = Pds::TypeId::Id_SharedIpimb /**< XTC type ID value (from Pds::TypeId class) */ };
00786   enum { Version = 0 /**< XTC type version number */ };
00787   virtual ~BldDataIpimbV0();
00788   virtual const Ipimb::DataV1& ipimbData() const = 0;
00789   virtual const Ipimb::ConfigV1& ipimbConfig() const = 0;
00790   virtual const Lusi::IpmFexV1& ipmFexData() const = 0;
00791 };
00792 
00793 /** @class BldDataIpimbV1
00794 
00795   Combined structure which includes Ipimb.DataV2, Ipimb.ConfigV2, and
00796             Lusi.IpmFexV1 objects.
00797 */
00798 
00799 
00800 class BldDataIpimbV1 {
00801 public:
00802   enum { TypeId = Pds::TypeId::Id_SharedIpimb /**< XTC type ID value (from Pds::TypeId class) */ };
00803   enum { Version = 1 /**< XTC type version number */ };
00804   virtual ~BldDataIpimbV1();
00805   virtual const Ipimb::DataV2& ipimbData() const = 0;
00806   virtual const Ipimb::ConfigV2& ipimbConfig() const = 0;
00807   virtual const Lusi::IpmFexV1& ipmFexData() const = 0;
00808 };
00809 
00810 /** @class BldDataPimV1
00811 
00812   Combined structure which includes Pulnix.TM6740ConfigV2, Lusi.PimImageConfigV1, and
00813             Camera.FrameV1 objects.
00814 */
00815 
00816 
00817 class BldDataPimV1 {
00818 public:
00819   enum { TypeId = Pds::TypeId::Id_SharedPim /**< XTC type ID value (from Pds::TypeId class) */ };
00820   enum { Version = 1 /**< XTC type version number */ };
00821   virtual ~BldDataPimV1();
00822   virtual const Pulnix::TM6740ConfigV2& camConfig() const = 0;
00823   virtual const Lusi::PimImageConfigV1& pimConfig() const = 0;
00824   virtual const Camera::FrameV1& frame() const = 0;
00825 };
00826 
00827 /** @class BldDataUsdUsbV1
00828 
00829   Combined structure which includes UsdUsb.ConfigV1, UsdUsb.FexConfigV1, UsdUsb.DataV1, and
00830             UsdUsb.FexDataV1 objects.
00831 */
00832 
00833 
00834 class BldDataUsdUsbV1 {
00835 public:
00836   enum { TypeId = Pds::TypeId::Id_SharedUsdUsb /**< XTC type ID value (from Pds::TypeId class) */ };
00837   enum { Version = 1 /**< XTC type version number */ };
00838   virtual ~BldDataUsdUsbV1();
00839   virtual const UsdUsb::ConfigV1& config() const = 0;
00840   virtual const UsdUsb::FexConfigV1& fexConfig() const = 0;
00841   virtual const UsdUsb::DataV1& data() const = 0;
00842   virtual const UsdUsb::FexDataV1& fexData() const = 0;
00843 };
00844 
00845 /** @class BldDataGMDV0
00846 
00847   Gas Monitor Detector data.
00848 */
00849 
00850 
00851 class BldDataGMDV0 {
00852 public:
00853   enum { TypeId = Pds::TypeId::Id_GMD /**< XTC type ID value (from Pds::TypeId class) */ };
00854   enum { Version = 0 /**< XTC type version number */ };
00855   virtual ~BldDataGMDV0();
00856   /** String describing gas type */
00857   virtual const char* gasType() const = 0;
00858   /** Pressure from Spinning Rotor Gauge */
00859   virtual double pressure() const = 0;
00860   /** Temp from PT100 */
00861   virtual double temperature() const = 0;
00862   /** Current from Keithley Electrometer */
00863   virtual double current() const = 0;
00864   /** HV Mesh Electron */
00865   virtual double hvMeshElectron() const = 0;
00866   /** HV Mesh Ion */
00867   virtual double hvMeshIon() const = 0;
00868   /** HV Mult Ion */
00869   virtual double hvMultIon() const = 0;
00870   /** Charge Q */
00871   virtual double chargeQ() const = 0;
00872   /** Photon Energy */
00873   virtual double photonEnergy() const = 0;
00874   /** Pulse Intensity derived from Electron Multiplier */
00875   virtual double multPulseIntensity() const = 0;
00876   /** Pulse Intensity derived from ION cup current */
00877   virtual double keithleyPulseIntensity() const = 0;
00878   /** Pulse Energy derived from Electron Multiplier */
00879   virtual double pulseEnergy() const = 0;
00880   /** Pulse Energy from FEE Gas Detector */
00881   virtual double pulseEnergyFEE() const = 0;
00882   /** Transmission derived from Electron Multiplier */
00883   virtual double transmission() const = 0;
00884   /** Transmission from FEE Gas Detector */
00885   virtual double transmissionFEE() const = 0;
00886 };
00887 
00888 /** @class BldDataGMDV1
00889 
00890   Gas Monitor Detector data.
00891 */
00892 
00893 
00894 class BldDataGMDV1 {
00895 public:
00896   enum { TypeId = Pds::TypeId::Id_GMD /**< XTC type ID value (from Pds::TypeId class) */ };
00897   enum { Version = 1 /**< XTC type version number */ };
00898   virtual ~BldDataGMDV1();
00899   /** Shot to shot pulse energy (mJ) */
00900   virtual double milliJoulesPerPulse() const = 0;
00901   /** Average pulse energy from ION cup current (mJ) */
00902   virtual double milliJoulesAverage() const = 0;
00903   /** Bg corrected waveform integrated within limits in raw A/D counts */
00904   virtual double correctedSumPerPulse() const = 0;
00905   /** Avg background value per sample in raw A/D counts */
00906   virtual double bgValuePerSample() const = 0;
00907   /** Shot by shot pulse energy in arbitrary units */
00908   virtual double relativeEnergyPerPulse() const = 0;
00909 };
00910 
00911 /** @class BldDataGMDV2
00912 
00913   Gas Monitor Detector data.
00914 */
00915 
00916 
00917 class BldDataGMDV2 {
00918 public:
00919   enum { TypeId = Pds::TypeId::Id_GMD /**< XTC type ID value (from Pds::TypeId class) */ };
00920   enum { Version = 2 /**< XTC type version number */ };
00921   virtual ~BldDataGMDV2();
00922   /** Shot to shot pulse energy (mJ).  Not as robust as relativeEnergyPerPulse() method. */
00923   virtual double milliJoulesPerPulse() const = 0;
00924   /** Average pulse energy from ION cup current (mJ).  Not as robust as relativeEnergyPerPulse() method. */
00925   virtual double milliJoulesAverage() const = 0;
00926   /** Sum of all peaks, normalized w/ filt bkgd level.  Not typically used by the user. */
00927   virtual double sumAllPeaksFiltBkgd() const = 0;
00928   /** Avg background value per waveform in raw A/D counts.  Not typically used by the user. */
00929   virtual double rawAvgBkgd() const = 0;
00930   /** Shot by shot pulse energy in arbitrary units.  The most stable measurement.  Most users should use this. */
00931   virtual double relativeEnergyPerPulse() const = 0;
00932   /** Sum of all peaks, normalized w/ raw avg bkgd level.  Not typically used by the user. */
00933   virtual double sumAllPeaksRawBkgd() const = 0;
00934 };
00935 
00936 /** @class BldDataAcqADCV1
00937 
00938   Combined structure which includes Acqiris.ConfigV1 and
00939             Acqiris.DataDescV1 objects.
00940 */
00941 
00942 
00943 class BldDataAcqADCV1 {
00944 public:
00945   enum { TypeId = Pds::TypeId::Id_SharedAcqADC /**< XTC type ID value (from Pds::TypeId class) */ };
00946   enum { Version = 1 /**< XTC type version number */ };
00947   virtual ~BldDataAcqADCV1();
00948   virtual const Acqiris::ConfigV1& config() const = 0;
00949   virtual const Acqiris::DataDescV1& data() const = 0;
00950 };
00951 
00952 /** @class BldDataSpectrometerV0
00953 
00954   Structure which contains image projections for spectrometers.
00955 */
00956 
00957 
00958 class BldDataSpectrometerV0 {
00959 public:
00960   enum { TypeId = Pds::TypeId::Id_Spectrometer /**< XTC type ID value (from Pds::TypeId class) */ };
00961   enum { Version = 0 /**< XTC type version number */ };
00962   virtual ~BldDataSpectrometerV0();
00963   virtual ndarray<const uint32_t, 1> hproj() const = 0;
00964   virtual ndarray<const uint32_t, 1> vproj() const = 0;
00965 };
00966 
00967 /** @class BldDataSpectrometerV1
00968 
00969   Structure which contains image projections and fit parameters for spectrometers. 
00970     Changes from V0 include extending size of hproj, removal of vproj,
00971      and addition of fit parameters.
00972 */
00973 
00974 
00975 class BldDataSpectrometerV1 {
00976 public:
00977   enum { TypeId = Pds::TypeId::Id_Spectrometer /**< XTC type ID value (from Pds::TypeId class) */ };
00978   enum { Version = 1 /**< XTC type version number */ };
00979   virtual ~BldDataSpectrometerV1();
00980   /** Width of camera frame and thus size of hproj array 
00981      PV TBD */
00982   virtual uint32_t width() const = 0;
00983   /** First row of pixels used in projection ROI  
00984      PV TBD */
00985   virtual uint32_t hproj_y1() const = 0;
00986   /** Last row of pixels used in projection ROI
00987     PV: TBD */
00988   virtual uint32_t hproj_y2() const = 0;
00989   /** Raw center of mass, no baseline subtraction 
00990      PV: TBD */
00991   virtual double comRaw() const = 0;
00992   /** Baseline level for calculated values 
00993      PV: TBD */
00994   virtual double baseline() const = 0;
00995   /** Baseline-subtracted center of mass 
00996      PV: TBD */
00997   virtual double com() const = 0;
00998   /** Integrated area under spectrum (no baseline subtraction) 
00999      PV: TBD */
01000   virtual double integral() const = 0;
01001   /** Number of peak fits performed
01002     PV: TBD */
01003   virtual uint32_t nPeaks() const = 0;
01004   /** Projection of spectrum onto energy axis 
01005      PV TBD */
01006   virtual ndarray<const int32_t, 1> hproj() const = 0;
01007   /** Peak position array, length given by nPeaks
01008      PV: TBD */
01009   virtual ndarray<const double, 1> peakPos() const = 0;
01010   /** Peak height array, length given by nPeaks
01011      PV: TBD */
01012   virtual ndarray<const double, 1> peakHeight() const = 0;
01013   /** Peak FWHM array, length given by nPeaks
01014      PV: TBD */
01015   virtual ndarray<const double, 1> FWHM() const = 0;
01016 };
01017 
01018 /** @class BldDataAnalogInputV1
01019 
01020   Structure which contains voltage data from an analog input device.
01021 */
01022 
01023 
01024 class BldDataAnalogInputV1 {
01025 public:
01026   enum { TypeId = Pds::TypeId::Id_AnalogInput /**< XTC type ID value (from Pds::TypeId class) */ };
01027   enum { Version = 1 /**< XTC type version number */ };
01028   virtual ~BldDataAnalogInputV1();
01029   /** The number of active channels on the analog input device. */
01030   virtual uint32_t numChannels() const = 0;
01031   /** Array of voltage values were each entry represents a channel of the analog input device. */
01032   virtual ndarray<const double, 1> channelVoltages() const = 0;
01033 };
01034 
01035 /** @class BldDataBeamMonitorV1
01036 
01037   Intensity and Position Measurements
01038 */
01039 
01040 
01041 class BldDataBeamMonitorV1 {
01042 public:
01043   enum { TypeId = Pds::TypeId::Id_BeamMonitorBldData /**< XTC type ID value (from Pds::TypeId class) */ };
01044   enum { Version = 1 /**< XTC type version number */ };
01045   enum { NCHANNELS = 16 };
01046   virtual ~BldDataBeamMonitorV1();
01047   /** Value of Total Intensity, in J. */
01048   virtual double TotalIntensity() const = 0;
01049   /** Value of X Position, in m. */
01050   virtual double X_Position() const = 0;
01051   /** Value of Y Position, in m. */
01052   virtual double Y_Position() const = 0;
01053   /** Peak Amplitude of Channel */
01054   virtual ndarray<const double, 1> peakA() const = 0;
01055   /** Location of Peak Amplitude of Channel */
01056   virtual ndarray<const uint16_t, 1> peakT() const = 0;
01057 };
01058 } // namespace Bld
01059 } // namespace Psana
01060 #endif // PSANA_BLD_DDL_H

Generated on 19 Dec 2016 for PSANAclasses by  doxygen 1.4.7