CSPadPixCoords/src/CSPad2x2ConfigPars.cpp

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 // File and Version Information:
00003 //      $Id$
00004 //
00005 // Description:
00006 //      Class CSPad2x2ConfigPars...
00007 //
00008 // Author List:
00009 //      Mikhail S. Dubrovin
00010 //
00011 //------------------------------------------------------------------------
00012 
00013 //-----------------------
00014 // This Class's Header --
00015 //-----------------------
00016 
00017 #include "CSPadPixCoords/CSPad2x2ConfigPars.h"
00018 
00019 //-----------------
00020 // C/C++ Headers --
00021 //-----------------
00022 //#include <time.h>
00023 
00024 //-----------------------------------------------------------------------
00025 // Local Macros, Typedefs, Structures, Unions and Forward Declarations --
00026 //-----------------------------------------------------------------------
00027 
00028 using namespace CSPadPixCoords;
00029 
00030 using namespace std;
00031 
00032 namespace CSPadPixCoords {
00033 
00034 //----------------
00035 // Constructors --
00036 //----------------
00037 
00038 CSPad2x2ConfigPars::CSPad2x2ConfigPars ()
00039 {
00040   m_source = PSEvt::Source("DetInfo(:Cspad2x2)");
00041   setCSPad2x2ConfigParsDefault();
00042 }
00043 
00044 CSPad2x2ConfigPars::CSPad2x2ConfigPars (PSEvt::Source source)
00045     : m_source(source)
00046 {
00047   setCSPad2x2ConfigParsDefault();
00048 }
00049 
00050 CSPad2x2ConfigPars::CSPad2x2ConfigPars ( uint32_t roiMask )
00051 {
00052     setCSPad2x2ConfigParsDefault();
00053     m_roiMask        = roiMask;
00054     m_num2x1Stored   = getNum2x1InMask(m_roiMask);
00055     m_numAsicsStored = N2x1 * m_num2x1Stored;
00056 }
00057 
00058 //--------------
00059 // Destructor --
00060 //--------------
00061 
00062 CSPad2x2ConfigPars::~CSPad2x2ConfigPars ()
00063 {
00064 }
00065 
00066 //--------------------
00067 
00068 uint32_t 
00069 CSPad2x2ConfigPars::getNum2x1InMask(uint32_t mask)
00070 {
00071   uint32_t num2x1InMask=0;
00072   for(uint32_t sect=0; sect < 8; sect++) {
00073     if( mask & (1<<sect) ) num2x1InMask++; 
00074   }
00075   return num2x1InMask;
00076 }
00077 
00078 //--------------------
00079 
00080 void 
00081 CSPad2x2ConfigPars::setCSPad2x2ConfigParsDefault()
00082 {
00083     m_roiMask        = 03; // or 3;
00084     m_num2x1Stored   = getNum2x1InMask(m_roiMask);
00085     m_numAsicsStored = 2 * N2x1;      
00086     m_config_vers    = "N/A yet";
00087     m_data_vers      = "N/A yet";
00088     std::fill_n(&m_common_mode[0], int(N2x1), float(0));
00089     m_is_set_for_evt = false;
00090     m_is_set_for_env = false;
00091     m_is_set         = false;
00092 }
00093 
00094 //--------------------
00095 
00096 /// Print configuration parameters
00097 void 
00098 CSPad2x2ConfigPars::printCSPad2x2ConfigPars()
00099 {
00100   WithMsgLog(name(), info, log) {
00101     log << "Config pars from "  << m_config_vers
00102         << " and "              << m_data_vers
00103         << "\nN configs found:" << m_count_cfg
00104         << "  roiMask="         << m_roiMask
00105         << "  num2x1Stored="    << m_num2x1Stored
00106         << "  numAsicsStored="  << m_numAsicsStored
00107         << "  common_mode="     << m_common_mode[0] << ", " << m_common_mode[1]
00108         << "  is_set_for_evt:"  << m_is_set_for_evt    
00109         << "  is_set_for_env:"  << m_is_set_for_env    
00110         << "  is_set:"          << m_is_set    
00111         << "\n";
00112   }  
00113 }
00114 
00115 //--------------------
00116 
00117 bool
00118 CSPad2x2ConfigPars::setCSPad2x2ConfigPars(PSEvt::Event& evt, PSEnv::Env& env)
00119 {
00120   if ( ! m_is_set_for_env ) { m_is_set_for_env = setCSPad2x2ConfigParsFromEnv(env); }
00121   if ( ! m_is_set_for_evt ) { m_is_set_for_evt = setCSPad2x2ConfigParsFromEvent(evt); }
00122   m_is_set = m_is_set_for_env && m_is_set_for_evt;
00123   return m_is_set;
00124 }
00125 
00126 //--------------------
00127 
00128 bool 
00129 CSPad2x2ConfigPars::setCSPad2x2ConfigParsFromEnv(PSEnv::Env& env)
00130 {
00131   m_count_cfg = 0; 
00132   if ( getConfigParsForType <Psana::CsPad2x2::ConfigV1> (env) ) { m_config_vers = "CsPad2x2::ConfigV1"; return true; }
00133   if ( getConfigParsForType <Psana::CsPad2x2::ConfigV2> (env) ) { m_config_vers = "CsPad2x2::ConfigV2"; return true; }
00134 
00135   MsgLog(name(), warning, "CsPad2x2::ConfigV1 - V2 is not available in this event...");
00136   //terminate();
00137   return false;
00138 }
00139 
00140 //--------------------
00141 
00142 bool 
00143 CSPad2x2ConfigPars::setCSPad2x2ConfigParsFromEvent(PSEvt::Event& evt)
00144 {
00145   if ( getCSPadConfigFromDataForType <Psana::CsPad2x2::ElementV1> (evt) ) { m_data_vers = "CsPad2x2::ElementV1"; return true; }
00146 
00147   MsgLog(name(), warning, "setCSPad2x2ConfigParsFromEvent(...): Psana::CsPad2x2::ElementV1 is not available in this event...");
00148   return false;
00149 }
00150 
00151 //--------------------
00152 
00153 } // namespace CSPadPixCoords

Generated on 19 Dec 2016 for PSANAmodules by  doxygen 1.4.7