00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "psana_examples/DumpEpix.h"
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "MsgLogger/MsgLogger.h"
00026 #include "psddl_psana/epix.ddl.h"
00027
00028
00029
00030
00031
00032
00033 using namespace psana_examples;
00034 PSANA_MODULE_FACTORY(DumpEpix)
00035
00036
00037
00038
00039
00040 namespace psana_examples {
00041
00042
00043
00044
00045 DumpEpix::DumpEpix (const std::string& name)
00046 : Module(name)
00047 , m_src()
00048 {
00049 m_src = configSrc("source", "DetInfo(:Epix100a)");
00050
00051
00052
00053
00054
00055
00056 }
00057
00058
00059
00060
00061 DumpEpix::~DumpEpix ()
00062 {
00063 }
00064
00065
00066 void
00067 DumpEpix::beginRun(Event& evt, Env& env)
00068 {
00069 shared_ptr<Psana::Epix::ConfigV1> config1 = env.configStore().get(m_src);
00070 if (config1) {
00071 WithMsgLog(name(), info, str) {
00072 str << "Psana::Epix::ConfigV1:";
00073 str << "\n version = " << config1->version();
00074 str << "\n runTrigDelay = " << config1->runTrigDelay();
00075 str << "\n daqTrigDelay = " << config1->daqTrigDelay();
00076 str << "\n dacSetting = " << config1->dacSetting();
00077 str << "\n asicGR = " << int(config1->asicGR());
00078 str << "\n asicAcq = " << int(config1->asicAcq());
00079 str << "\n asicR0 = " << int(config1->asicR0());
00080 str << "\n asicPpmat = " << int(config1->asicPpmat());
00081 str << "\n asicPpbe = " << int(config1->asicPpbe());
00082 str << "\n asicRoClk = " << int(config1->asicRoClk());
00083 str << "\n asicGRControl = " << int(config1->asicGRControl());
00084 str << "\n asicAcqControl = " << int(config1->asicAcqControl());
00085 str << "\n asicR0Control = " << int(config1->asicR0Control());
00086 str << "\n asicPpmatControl = " << int(config1->asicPpmatControl());
00087 str << "\n asicPpbeControl = " << int(config1->asicPpbeControl());
00088 str << "\n asicR0ClkControl = " << int(config1->asicR0ClkControl());
00089 str << "\n prepulseR0En = " << int(config1->prepulseR0En());
00090 str << "\n adcStreamMode = " << config1->adcStreamMode();
00091 str << "\n testPatternEnable = " << int(config1->testPatternEnable());
00092 str << "\n acqToAsicR0Delay = " << config1->acqToAsicR0Delay();
00093 str << "\n asicR0ToAsicAcq = " << config1->asicR0ToAsicAcq();
00094 str << "\n asicAcqWidth = " << config1->asicAcqWidth();
00095 str << "\n asicAcqLToPPmatL = " << config1->asicAcqLToPPmatL();
00096 str << "\n asicRoClkHalfT = " << config1->asicRoClkHalfT();
00097 str << "\n adcReadsPerPixel = " << config1->adcReadsPerPixel();
00098 str << "\n adcClkHalfT = " << config1->adcClkHalfT();
00099 str << "\n asicR0Width = " << config1->asicR0Width();
00100 str << "\n adcPipelineDelay = " << config1->adcPipelineDelay();
00101 str << "\n prepulseR0Width = " << config1->prepulseR0Width();
00102 str << "\n prepulseR0Delay = " << config1->prepulseR0Delay();
00103 str << "\n digitalCardId0 = " << config1->digitalCardId0();
00104 str << "\n digitalCardId1 = " << config1->digitalCardId1();
00105 str << "\n analogCardId0 = " << config1->analogCardId0();
00106 str << "\n analogCardId1 = " << config1->analogCardId1();
00107 str << "\n lastRowExclusions = " << config1->lastRowExclusions();
00108 str << "\n numberOfAsicsPerRow = " << config1->numberOfAsicsPerRow();
00109 str << "\n numberOfAsicsPerColumn = " << config1->numberOfAsicsPerColumn();
00110 str << "\n numberOfRowsPerAsic = " << config1->numberOfRowsPerAsic();
00111 str << "\n numberOfPixelsPerAsicRow = " << config1->numberOfPixelsPerAsicRow();
00112 str << "\n baseClockFrequency = " << config1->baseClockFrequency();
00113 str << "\n asicMask = " << config1->asicMask();
00114 str << "\n numberOfRows = " << config1->numberOfRows();
00115 str << "\n numberOfColumns = " << config1->numberOfColumns();
00116 str << "\n numberOfAsics = " << config1->numberOfAsics();
00117 str << "\n asicPixelTestArray = " << config1->asicPixelTestArray();
00118 str << "\n asicPixelMaskArray = " << config1->asicPixelMaskArray();
00119
00120 const int nasics = config1->numberOfAsics();
00121 for (int i = 0; i != nasics; ++ i) {
00122 const Psana::Epix::AsicConfigV1& aconfig = config1->asics(i);
00123 str << "\n Psana::Epix::AsicConfigV1 #" << i << ":";
00124 str << "\n monostPulser = " << int(aconfig.monostPulser());
00125 str << "\n dummyTest = " << int(aconfig.dummyTest());
00126 str << "\n dummyMask = " << int(aconfig.dummyMask());
00127 str << "\n pulser = " << int(aconfig.pulser());
00128 str << "\n pbit = " << int(aconfig.pbit());
00129 str << "\n atest = " << int(aconfig.atest());
00130 str << "\n test = " << int(aconfig.test());
00131 str << "\n sabTest = " << int(aconfig.sabTest());
00132 str << "\n hrTest = " << int(aconfig.hrTest());
00133 str << "\n digMon1 = " << int(aconfig.digMon1());
00134 str << "\n digMon2 = " << int(aconfig.digMon2());
00135 str << "\n pulserDac = " << int(aconfig.pulserDac());
00136 str << "\n Dm1En = " << int(aconfig.Dm1En());
00137 str << "\n Dm2En = " << int(aconfig.Dm2En());
00138 str << "\n slvdSBit = " << int(aconfig.slvdSBit());
00139 str << "\n VRefDac = " << int(aconfig.VRefDac());
00140 str << "\n TpsTComp = " << int(aconfig.TpsTComp());
00141 str << "\n TpsMux = " << int(aconfig.TpsMux());
00142 str << "\n RoMonost = " << int(aconfig.RoMonost());
00143 str << "\n TpsGr = " << int(aconfig.TpsGr());
00144 str << "\n S2dGr = " << int(aconfig.S2dGr());
00145 str << "\n PpOcbS2d = " << int(aconfig.PpOcbS2d());
00146 str << "\n Ocb = " << int(aconfig.Ocb());
00147 str << "\n Monost = " << int(aconfig.Monost());
00148 str << "\n FastppEnable = " << int(aconfig.FastppEnable());
00149 str << "\n Preamp = " << int(aconfig.Preamp());
00150 str << "\n PixelCb = " << int(aconfig.PixelCb());
00151 str << "\n S2dTComp = " << int(aconfig.S2dTComp());
00152 str << "\n FilterDac = " << int(aconfig.FilterDac());
00153 str << "\n TC = " << int(aconfig.TC());
00154 str << "\n S2d = " << int(aconfig.S2d());
00155 str << "\n S2dDacBias = " << int(aconfig.S2dDacBias());
00156 str << "\n TpsTcDac = " << int(aconfig.TpsTcDac());
00157 str << "\n TpsDac = " << int(aconfig.TpsDac());
00158 str << "\n S2dTcDac = " << int(aconfig.S2dTcDac());
00159 str << "\n S2dDac = " << int(aconfig.S2dDac());
00160 str << "\n TestBe = " << int(aconfig.TestBe());
00161 str << "\n IsEn = " << int(aconfig.IsEn());
00162 str << "\n DelExec = " << int(aconfig.DelExec());
00163 str << "\n DelCckReg = " << int(aconfig.DelCckReg());
00164 str << "\n RowStartAddr = " << int(aconfig.RowStartAddr());
00165 str << "\n RowStopAddr = " << int(aconfig.RowStopAddr());
00166 str << "\n ColStartAddr = " << int(aconfig.ColStartAddr());
00167 str << "\n ColStopAddr = " << int(aconfig.ColStopAddr());
00168 str << "\n chipID = " << int(aconfig.chipID());
00169 }
00170 }
00171 }
00172
00173
00174 shared_ptr<Psana::Epix::Config10KV1> config10k1 = env.configStore().get(m_src);
00175 if (config10k1) {
00176 WithMsgLog(name(), info, str) {
00177 str << "Psana::Epix::Config10KV1:";
00178 str << "\n version = " << config10k1->version();
00179 str << "\n runTrigDelay = " << config10k1->runTrigDelay();
00180 str << "\n daqTrigDelay = " << config10k1->daqTrigDelay();
00181 str << "\n dacSetting = " << config10k1->dacSetting();
00182 str << "\n asicGR = " << int(config10k1->asicGR());
00183 str << "\n asicAcq = " << int(config10k1->asicAcq());
00184 str << "\n asicR0 = " << int(config10k1->asicR0());
00185 str << "\n asicPpmat = " << int(config10k1->asicPpmat());
00186 str << "\n asicPpbe = " << int(config10k1->asicPpbe());
00187 str << "\n asicRoClk = " << int(config10k1->asicRoClk());
00188 str << "\n asicGRControl = " << int(config10k1->asicGRControl());
00189 str << "\n asicAcqControl = " << int(config10k1->asicAcqControl());
00190 str << "\n asicR0Control = " << int(config10k1->asicR0Control());
00191 str << "\n asicPpmatControl = " << int(config10k1->asicPpmatControl());
00192 str << "\n asicPpbeControl = " << int(config10k1->asicPpbeControl());
00193 str << "\n asicR0ClkControl = " << int(config10k1->asicR0ClkControl());
00194 str << "\n prepulseR0En = " << int(config10k1->prepulseR0En());
00195 str << "\n adcStreamMode = " << config10k1->adcStreamMode();
00196 str << "\n testPatternEnable = " << int(config10k1->testPatternEnable());
00197 str << "\n SyncMode = " << int(config10k1->SyncMode());
00198 str << "\n R0Mode = " << int(config10k1->R0Mode());
00199 str << "\n DoutPipelineDelay = " << int(config10k1->DoutPipelineDelay());
00200 str << "\n acqToAsicR0Delay = " << int(config10k1->acqToAsicR0Delay());
00201 str << "\n asicR0ToAsicAcq = " << int(config10k1->asicR0ToAsicAcq());
00202 str << "\n asicAcqWidth = " << int(config10k1->asicAcqWidth());
00203 str << "\n asicAcqLToPPmatL = " << int(config10k1->asicAcqLToPPmatL());
00204 str << "\n asicRoClkHalfT = " << int(config10k1->asicRoClkHalfT());
00205 str << "\n adcReadsPerPixel = " << int(config10k1->adcReadsPerPixel());
00206 str << "\n adcClkHalfT = " << int(config10k1->adcClkHalfT());
00207 str << "\n asicR0Width = " << int(config10k1->asicR0Width());
00208 str << "\n adcPipelineDelay = " << int(config10k1->adcPipelineDelay());
00209 str << "\n SyncWidth() = " << int(config10k1->SyncWidth());
00210 str << "\n SyncDelay() = " << int(config10k1->SyncDelay());
00211 str << "\n prepulseR0Width = " << config10k1->prepulseR0Width();
00212 str << "\n prepulseR0Delay = " << config10k1->prepulseR0Delay();
00213 str << "\n digitalCardId0 = " << config10k1->digitalCardId0();
00214 str << "\n digitalCardId1 = " << config10k1->digitalCardId1();
00215 str << "\n analogCardId0 = " << config10k1->analogCardId0();
00216 str << "\n analogCardId1 = " << config10k1->analogCardId1();
00217 str << "\n lastRowExclusions = " << config10k1->lastRowExclusions();
00218 str << "\n numberOfAsicsPerRow = " << config10k1->numberOfAsicsPerRow();
00219 str << "\n numberOfAsicsPerColumn = " << config10k1->numberOfAsicsPerColumn();
00220 str << "\n numberOfRowsPerAsic = " << config10k1->numberOfRowsPerAsic();
00221 str << "\n numberOfPixelsPerAsicRow = " << config10k1->numberOfPixelsPerAsicRow();
00222 str << "\n baseClockFrequency = " << config10k1->baseClockFrequency();
00223 str << "\n asicMask = " << config10k1->asicMask();
00224 str << "\n scopeEnable = " << int(config10k1->scopeEnable());
00225 str << "\n scopeTrigEdge = " << int(config10k1->scopeTrigEdge());
00226 str << "\n scopeTrigChan = " << int(config10k1->scopeTrigChan());
00227 str << "\n scopeArmMode = " << int(config10k1->scopeArmMode());
00228 str << "\n scopeADCThreshold = " << int(config10k1->scopeADCThreshold());
00229 str << "\n scopeTrigHoldoff = " << int(config10k1->scopeTrigHoldoff());
00230 str << "\n scopeTrigOffset = " << int(config10k1->scopeTrigOffset());
00231 str << "\n scopeTraceLength = " << int(config10k1->scopeTraceLength());
00232 str << "\n scopeADCsameplesToSkip = " << int(config10k1->scopeADCsameplesToSkip());
00233 str << "\n scopeChanAwaveformSelect = " << int(config10k1->scopeChanAwaveformSelect());
00234 str << "\n scopeChanBwaveformSelect = " << int(config10k1->scopeChanBwaveformSelect());
00235 str << "\n asicPixelConfigArray = " << config10k1->asicPixelConfigArray();
00236 str << "\n numberOfRows = " << config10k1->numberOfRows();
00237 str << "\n numberOfColumns = " << config10k1->numberOfColumns();
00238 str << "\n numberOfAsics = " << config10k1->numberOfAsics();
00239
00240
00241 str << "\n asics_shape() =";
00242 std::vector<int> v = config10k1->asics_shape();
00243 for(std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) { str << " " << *it; }
00244
00245 const int nasics = config10k1->numberOfAsics();
00246 for (int i = 0; i != nasics; ++ i) {
00247 const Psana::Epix::Asic10kConfigV1& aconfig = config10k1->asics(i);
00248 str << "\n Psana::Epix::Asic10kConfigV1 #" << i << ":";
00249
00250 str << "\n CompTH_DAC = " << int(aconfig.CompTH_DAC());
00251 str << "\n CompEn_0 = " << int(aconfig.CompEn_0());
00252 str << "\n PulserSync = " << int(aconfig.PulserSync());
00253 str << "\n dummyTest = " << int(aconfig.dummyTest());
00254 str << "\n dummyMask = " << int(aconfig.dummyMask());
00255 str << "\n dummyG = " << int(aconfig.dummyG());
00256 str << "\n dummyGA = " << int(aconfig.dummyGA());
00257 str << "\n dummyUpper12bits = " << int(aconfig.dummyUpper12bits());
00258 str << "\n pulser = " << int(aconfig.pulser());
00259 str << "\n pbit = " << int(aconfig.pbit());
00260 str << "\n atest = " << int(aconfig.atest());
00261 str << "\n test = " << int(aconfig.test());
00262 str << "\n sabTest = " << int(aconfig.sabTest());
00263 str << "\n hrTest = " << int(aconfig.hrTest());
00264 str << "\n pulserR = " << int(aconfig.pulserR());
00265 str << "\n digMon1 = " << int(aconfig.digMon1());
00266 str << "\n digMon2 = " << int(aconfig.digMon2());
00267 str << "\n pulserDac = " << int(aconfig.pulserDac());
00268 str << "\n monostPulser = " << int(aconfig.monostPulser());
00269 str << "\n CompEn_1 = " << int(aconfig.CompEn_1());
00270 str << "\n CompEn_2 = " << int(aconfig.CompEn_2());
00271 str << "\n Dm1En = " << int(aconfig.Dm1En());
00272 str << "\n Dm2En = " << int(aconfig.Dm2En());
00273 str << "\n emph_bd = " << int(aconfig.emph_bd());
00274 str << "\n emph_bc = " << int(aconfig.emph_bc());
00275 str << "\n VRefDac = " << int(aconfig.VRefDac());
00276 str << "\n vrefLow = " << int(aconfig.vrefLow());
00277 str << "\n TpsTComp = " << int(aconfig.TpsTComp());
00278 str << "\n TpsMux = " << int(aconfig.TpsMux());
00279 str << "\n RoMonost = " << int(aconfig.RoMonost());
00280 str << "\n TpsGr = " << int(aconfig.TpsGr());
00281 str << "\n S2dGr = " << int(aconfig.S2dGr());
00282 str << "\n PpOcbS2d = " << int(aconfig.PpOcbS2d());
00283 str << "\n Ocb = " << int(aconfig.Ocb());
00284 str << "\n Monost = " << int(aconfig.Monost());
00285 str << "\n FastppEnable = " << int(aconfig.FastppEnable());
00286 str << "\n Preamp = " << int(aconfig.Preamp());
00287 str << "\n PixelCb = " << int(aconfig.PixelCb());
00288 str << "\n Vld1_b = " << int(aconfig.Vld1_b());
00289 str << "\n S2dTComp = " << int(aconfig.S2dTComp());
00290 str << "\n FilterDac = " << int(aconfig.FilterDac());
00291 str << "\n testVDTransmitter= " << int(aconfig.testVDTransmitter());
00292 str << "\n TC = " << int(aconfig.TC());
00293 str << "\n S2d = " << int(aconfig.S2d());
00294 str << "\n S2dDacBias = " << int(aconfig.S2dDacBias());
00295 str << "\n TpsTcDac = " << int(aconfig.TpsTcDac());
00296 str << "\n TpsDac = " << int(aconfig.TpsDac());
00297 str << "\n S2dTcDac = " << int(aconfig.S2dTcDac());
00298 str << "\n S2dDac = " << int(aconfig.S2dDac());
00299 str << "\n TestBe = " << int(aconfig.TestBe());
00300 str << "\n IsEn = " << int(aconfig.IsEn());
00301 str << "\n DelExec = " << int(aconfig.DelExec());
00302 str << "\n DelCckReg = " << int(aconfig.DelCckReg());
00303 str << "\n RO_rst_en = " << int(aconfig.RO_rst_en());
00304 str << "\n slvdSBit = " << int(aconfig.slvdSBit());
00305 str << "\n FELmode = " << int(aconfig.FELmode());
00306 str << "\n CompEnOn = " << int(aconfig.CompEnOn());
00307 str << "\n RowStartAddr = " << int(aconfig.RowStartAddr());
00308 str << "\n RowStopAddr = " << int(aconfig.RowStopAddr());
00309 str << "\n ColStartAddr = " << int(aconfig.ColStartAddr());
00310 str << "\n ColStopAddr = " << int(aconfig.ColStopAddr());
00311 str << "\n chipID = " << int(aconfig.chipID());
00312 }
00313 }
00314 }
00315
00316
00317 shared_ptr<Psana::Epix::Config100aV1> config100a = env.configStore().get(m_src);
00318 if (config100a) {
00319 WithMsgLog(name(), info, str) {
00320 str << "Psana::Epix::Config100aV1:";
00321 str << "\n version = " << config100a->version();
00322 str << "\n runTrigDelay = " << config100a->runTrigDelay();
00323 str << "\n daqTrigDelay = " << config100a->daqTrigDelay();
00324 str << "\n dacSetting = " << config100a->dacSetting();
00325 str << "\n asicGR = " << int(config100a->asicGR());
00326 str << "\n asicAcq = " << int(config100a->asicAcq());
00327 str << "\n asicR0 = " << int(config100a->asicR0());
00328 str << "\n asicPpmat = " << int(config100a->asicPpmat());
00329 str << "\n asicPpbe = " << int(config100a->asicPpbe());
00330 str << "\n asicRoClk = " << int(config100a->asicRoClk());
00331 str << "\n asicGRControl = " << int(config100a->asicGRControl());
00332 str << "\n asicAcqControl = " << int(config100a->asicAcqControl());
00333 str << "\n asicR0Control = " << int(config100a->asicR0Control());
00334 str << "\n asicPpmatControl = " << int(config100a->asicPpmatControl());
00335 str << "\n asicPpbeControl = " << int(config100a->asicPpbeControl());
00336 str << "\n asicR0ClkControl = " << int(config100a->asicR0ClkControl());
00337 str << "\n prepulseR0En = " << int(config100a->prepulseR0En());
00338 str << "\n adcStreamMode = " << int(config100a->adcStreamMode());
00339 str << "\n testPatternEnable = " << int(config100a->testPatternEnable());
00340 str << "\n SyncMode = " << int(config100a->SyncMode());
00341 str << "\n R0Mode = " << int(config100a->R0Mode());
00342 str << "\n acqToAsicR0Delay = " << int(config100a->acqToAsicR0Delay());
00343 str << "\n asicR0ToAsicAcq = " << int(config100a->asicR0ToAsicAcq());
00344 str << "\n asicAcqWidth = " << int(config100a->asicAcqWidth());
00345 str << "\n asicAcqLToPPmatL = " << int(config100a->asicAcqLToPPmatL());
00346 str << "\n asicPPmatToReadout = " << int(config100a->asicPPmatToReadout());
00347 str << "\n asicRoClkHalfT = " << int(config100a->asicRoClkHalfT());
00348 str << "\n adcReadsPerPixel = " << int(config100a->adcReadsPerPixel());
00349 str << "\n adcClkHalfT = " << int(config100a->adcClkHalfT());
00350 str << "\n asicR0Width = " << int(config100a->asicR0Width());
00351 str << "\n adcPipelineDelay = " << int(config100a->adcPipelineDelay());
00352 str << "\n SyncWidth = " << int(config100a->SyncWidth());
00353 str << "\n SyncDelay = " << int(config100a->SyncDelay());
00354 str << "\n prepulseR0Width = " << int(config100a->prepulseR0Width());
00355 str << "\n prepulseR0Delay = " << int(config100a->prepulseR0Delay());
00356 str << "\n digitalCardId0 = " << int(config100a->digitalCardId0());
00357 str << "\n digitalCardId1 = " << int(config100a->digitalCardId1());
00358 str << "\n analogCardId0 = " << int(config100a->analogCardId0());
00359 str << "\n analogCardId1 = " << int(config100a->analogCardId1());
00360 str << "\n numberOfAsicsPerRow = " << int(config100a->numberOfAsicsPerRow());
00361 str << "\n numberOfAsicsPerColumn = " << int(config100a->numberOfAsicsPerColumn());
00362 str << "\n numberOfRowsPerAsic = " << int(config100a->numberOfRowsPerAsic());
00363 str << "\n numberOfReadableRowsPerAsic = " << int(config100a->numberOfReadableRowsPerAsic());
00364 str << "\n numberOfPixelsPerAsicRow = " << int(config100a->numberOfPixelsPerAsicRow());
00365 str << "\n calibrationRowCountPerASIC = " << int(config100a->calibrationRowCountPerASIC());
00366 str << "\n environmentalRowCountPerASIC= " << int(config100a->environmentalRowCountPerASIC());
00367 str << "\n baseClockFrequency = " << int(config100a->baseClockFrequency());
00368 str << "\n asicMask = " << int(config100a->asicMask());
00369 str << "\n scopeEnable = " << int(config100a->scopeEnable());
00370 str << "\n scopeTrigEdge = " << int(config100a->scopeTrigEdge());
00371 str << "\n scopeTrigChan = " << int(config100a->scopeTrigChan());
00372 str << "\n scopeArmMode = " << int(config100a->scopeArmMode());
00373 str << "\n scopeADCThreshold = " << int(config100a->scopeADCThreshold());
00374 str << "\n scopeTrigHoldoff = " << int(config100a->scopeTrigHoldoff());
00375 str << "\n scopeTrigOffset = " << int(config100a->scopeTrigOffset());
00376 str << "\n scopeTraceLength = " << int(config100a->scopeTraceLength());
00377 str << "\n scopeADCsameplesToSkip = " << int(config100a->scopeADCsameplesToSkip());
00378 str << "\n scopeChanAwaveformSelect = " << int(config100a->scopeChanAwaveformSelect());
00379 str << "\n scopeChanBwaveformSelect = " << int(config100a->scopeChanBwaveformSelect());
00380 str << "\n numberOfRows = " << int(config100a->numberOfRows());
00381 str << "\n numberOfReadableRows = " << int(config100a->numberOfReadableRows());
00382 str << "\n numberOfColumns = " << int(config100a->numberOfColumns());
00383 str << "\n numberOfCalibrationRows = " << int(config100a->numberOfCalibrationRows());
00384 str << "\n numberOfEnvironmentalRows = " << int(config100a->numberOfEnvironmentalRows());
00385 str << "\n numberOfAsics = " << int(config100a->numberOfAsics());
00386
00387
00388 str << "\n asicPixelConfigArray() = " << config100a->asicPixelConfigArray();
00389
00390
00391 str << "\n calibPixelConfigArray() =" << config100a->calibPixelConfigArray();
00392
00393
00394
00395
00396
00397
00398
00399
00400 str << "\n asics_shape() =";
00401 std::vector<int> v = config100a->asics_shape();
00402 for(std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) { str << " " << *it; }
00403
00404
00405 const int nasics = config100a->numberOfAsics();
00406 for (int i = 0; i != nasics; ++ i) {
00407 const Psana::Epix::Asic100aConfigV1& aconfig = config100a->asics(i);
00408 str << "\n Psana::Epix::Asic100aConfigV1 #" << i << ":";
00409 str << "\n pulserVsPixelOnDelay = " << int(aconfig.pulserVsPixelOnDelay());
00410 str << "\n pulserSync = " << int(aconfig.pulserSync());
00411 str << "\n dummyTest = " << int(aconfig.dummyTest());
00412 str << "\n dummyMask = " << int(aconfig.dummyMask());
00413 str << "\n testPulserLevel = " << int(aconfig.testPulserLevel());
00414 str << "\n pulserCounterDirection = " << int(aconfig.pulserCounterDirection());
00415 str << "\n automaticTestModeEnable = " << int(aconfig.automaticTestModeEnable());
00416 str << "\n testMode = " << int(aconfig.testMode());
00417 str << "\n testModeWithDarkFrame = " << int(aconfig.testModeWithDarkFrame());
00418 str << "\n highResolutionModeTest = " << int(aconfig.highResolutionModeTest());
00419 str << "\n pulserReset = " << int(aconfig.pulserReset());
00420 str << "\n digitalMonitorMux1 = " << int(aconfig.digitalMonitorMux1());
00421 str << "\n digitalMonitorMux2 = " << int(aconfig.digitalMonitorMux2());
00422 str << "\n testPulserCurrent = " << int(aconfig.testPulserCurrent());
00423 str << "\n testPointSystemOutputDynamicRange = " << int(aconfig.testPointSystemOutputDynamicRange());
00424 str << "\n digitalMonitor1Enable = " << int(aconfig.digitalMonitor1Enable());
00425 str << "\n digitalMonitor2Enable = " << int(aconfig.digitalMonitor2Enable());
00426 str << "\n LVDS_ImpedenceMatchingEnable = " << int(aconfig.LVDS_ImpedenceMatchingEnable());
00427 str << "\n VRefBaselineDac = " << int(aconfig.VRefBaselineDac());
00428 str << "\n extraRowsLowReferenceValue = " << int(aconfig.extraRowsLowReferenceValue());
00429 str << "\n testPointSystemTemperatureCompensationEnable = " << int(aconfig.testPointSystemTemperatureCompensationEnable() );
00430 str << "\n testPointSytemInputSelect = " << int(aconfig.testPointSytemInputSelect());
00431 str << "\n programmableReadoutDelay = " << int(aconfig.programmableReadoutDelay());
00432 str << "\n outputDriverOutputDynamicRange0 = " << int(aconfig.outputDriverOutputDynamicRange0());
00433 str << "\n outputDriverOutputDynamicRange1 = " << int(aconfig.outputDriverOutputDynamicRange1());
00434 str << "\n balconyEnable = " << int(aconfig.balconyEnable());
00435 str << "\n balconyDriverCurrent = " << int(aconfig.balconyDriverCurrent());
00436 str << "\n fastPowerPulsingSpeed = " << int(aconfig.fastPowerPulsingSpeed());
00437 str << "\n fastPowerPulsingEnable = " << int(aconfig.fastPowerPulsingEnable());
00438 str << "\n preamplifierCurrent = " << int(aconfig.preamplifierCurrent());
00439 str << "\n pixelOutputBufferCurrent = " << int(aconfig.pixelOutputBufferCurrent());
00440 str << "\n pixelBufferAndPreamplifierDrivingCapabilities = " << int(aconfig.pixelBufferAndPreamplifierDrivingCapabilities());
00441 str << "\n outputDriverTemperatureCompensationEnable = " << int(aconfig.outputDriverTemperatureCompensationEnable());
00442 str << "\n pixelFilterLevel = " << int(aconfig.pixelFilterLevel());
00443 str << "\n bandGapReferenceTemperatureCompensationBits = " << int(aconfig.bandGapReferenceTemperatureCompensationBits());
00444 str << "\n outputDriverDrivingCapabilitiesAndStability = " << int(aconfig.outputDriverDrivingCapabilitiesAndStability());
00445 str << "\n outputDriverDacReferenceBias = " << int(aconfig.outputDriverDacReferenceBias());
00446 str << "\n testPointSystemTemperatureCompensationGain = " << int(aconfig.testPointSystemTemperatureCompensationGain());
00447 str << "\n testPointSystemInputCommonMode = " << int(aconfig.testPointSystemInputCommonMode());
00448 str << "\n outputDriverTemperatureCompensationGain0 = " << int(aconfig.outputDriverTemperatureCompensationGain0());
00449 str << "\n outputDriverInputCommonMode0 = " << int(aconfig.outputDriverInputCommonMode0());
00450 str << "\n testBackEnd = " << int(aconfig.testBackEnd());
00451 str << "\n interleavedReadOutEnable = " << int(aconfig.interleavedReadOutEnable());
00452 str << "\n EXEC_DelayEnable = " << int(aconfig.EXEC_DelayEnable());
00453 str << "\n CCK_RegDelayEnable = " << int(aconfig.CCK_RegDelayEnable());
00454 str << "\n syncPinEnable = " << int(aconfig.syncPinEnable());
00455 str << "\n RowStartAddr = " << int(aconfig.RowStartAddr());
00456 str << "\n RowStopAddr = " << int(aconfig.RowStopAddr());
00457 str << "\n ColumnStartAddr = " << int(aconfig.ColumnStartAddr());
00458 }
00459 }
00460 }
00461
00462
00463
00464 shared_ptr<Psana::Epix::Config100aV2> config100av2 = env.configStore().get(m_src);
00465 if (config100av2) {
00466 WithMsgLog(name(), info, str) {
00467 str << "Psana::Epix::Config100aV2:";
00468 str << "\n version = " << config100av2->version();
00469
00470
00471
00472 str << "\n usePgpEvr = " << config100av2->usePgpEvr();
00473 str << "\n evrRunCode; = " << config100av2->evrRunCode();
00474 str << "\n evrDaqCode = " << config100av2->evrDaqCode();
00475 str << "\n evrRunTrigDelay = " << config100av2->evrRunTrigDelay();
00476 str << "\n epixRunTrigDelay = " << config100av2->epixRunTrigDelay();
00477 str << "\n dacSetting = " << config100av2->dacSetting();
00478 str << "\n asicGR = " << int(config100av2->asicGR());
00479 str << "\n asicAcq = " << int(config100av2->asicAcq());
00480 str << "\n asicR0 = " << int(config100av2->asicR0());
00481 str << "\n asicPpmat = " << int(config100av2->asicPpmat());
00482 str << "\n asicPpbe = " << int(config100av2->asicPpbe());
00483 str << "\n asicRoClk = " << int(config100av2->asicRoClk());
00484 str << "\n asicGRControl = " << int(config100av2->asicGRControl());
00485 str << "\n asicAcqControl = " << int(config100av2->asicAcqControl());
00486 str << "\n asicR0Control = " << int(config100av2->asicR0Control());
00487 str << "\n asicPpmatControl = " << int(config100av2->asicPpmatControl());
00488 str << "\n asicPpbeControl = " << int(config100av2->asicPpbeControl());
00489 str << "\n asicR0ClkControl = " << int(config100av2->asicR0ClkControl());
00490 str << "\n prepulseR0En = " << int(config100av2->prepulseR0En());
00491 str << "\n adcStreamMode = " << int(config100av2->adcStreamMode());
00492 str << "\n testPatternEnable = " << int(config100av2->testPatternEnable());
00493 str << "\n SyncMode = " << int(config100av2->SyncMode());
00494 str << "\n R0Mode = " << int(config100av2->R0Mode());
00495 str << "\n acqToAsicR0Delay = " << int(config100av2->acqToAsicR0Delay());
00496 str << "\n asicR0ToAsicAcq = " << int(config100av2->asicR0ToAsicAcq());
00497 str << "\n asicAcqWidth = " << int(config100av2->asicAcqWidth());
00498 str << "\n asicAcqLToPPmatL = " << int(config100av2->asicAcqLToPPmatL());
00499 str << "\n asicPPmatToReadout = " << int(config100av2->asicPPmatToReadout());
00500 str << "\n asicRoClkHalfT = " << int(config100av2->asicRoClkHalfT());
00501 str << "\n adcReadsPerPixel = " << int(config100av2->adcReadsPerPixel());
00502 str << "\n adcClkHalfT = " << int(config100av2->adcClkHalfT());
00503 str << "\n asicR0Width = " << int(config100av2->asicR0Width());
00504 str << "\n adcPipelineDelay = " << int(config100av2->adcPipelineDelay());
00505
00506 str << "\n adcPipelineDelay0 = " << config100av2->adcPipelineDelay0();
00507 str << "\n adcPipelineDelay1 = " << config100av2->adcPipelineDelay1();
00508 str << "\n adcPipelineDelay2 = " << config100av2->adcPipelineDelay2();
00509 str << "\n adcPipelineDelay3 = " << config100av2->adcPipelineDelay3();
00510
00511 str << "\n SyncWidth = " << int(config100av2->SyncWidth());
00512 str << "\n SyncDelay = " << int(config100av2->SyncDelay());
00513 str << "\n prepulseR0Width = " << int(config100av2->prepulseR0Width());
00514 str << "\n prepulseR0Delay = " << int(config100av2->prepulseR0Delay());
00515 str << "\n digitalCardId0 = " << int(config100av2->digitalCardId0());
00516 str << "\n digitalCardId1 = " << int(config100av2->digitalCardId1());
00517 str << "\n analogCardId0 = " << int(config100av2->analogCardId0());
00518 str << "\n analogCardId1 = " << int(config100av2->analogCardId1());
00519 str << "\n numberOfAsicsPerRow = " << int(config100av2->numberOfAsicsPerRow());
00520 str << "\n numberOfAsicsPerColumn = " << int(config100av2->numberOfAsicsPerColumn());
00521 str << "\n numberOfRowsPerAsic = " << int(config100av2->numberOfRowsPerAsic());
00522 str << "\n numberOfReadableRowsPerAsic = " << int(config100av2->numberOfReadableRowsPerAsic());
00523 str << "\n numberOfPixelsPerAsicRow = " << int(config100av2->numberOfPixelsPerAsicRow());
00524 str << "\n calibrationRowCountPerASIC = " << int(config100av2->calibrationRowCountPerASIC());
00525 str << "\n environmentalRowCountPerASIC= " << int(config100av2->environmentalRowCountPerASIC());
00526 str << "\n baseClockFrequency = " << int(config100av2->baseClockFrequency());
00527 str << "\n asicMask = " << int(config100av2->asicMask());
00528
00529 str << "\n enableAutomaticRunTrigger = " << config100av2->enableAutomaticRunTrigger();
00530 str << "\n numberOf125MhzTicksPerRunTrigger = " << config100av2->numberOf125MhzTicksPerRunTrigger();
00531
00532 str << "\n scopeEnable = " << int(config100av2->scopeEnable());
00533 str << "\n scopeTrigEdge = " << int(config100av2->scopeTrigEdge());
00534 str << "\n scopeTrigChan = " << int(config100av2->scopeTrigChan());
00535 str << "\n scopeArmMode = " << int(config100av2->scopeArmMode());
00536 str << "\n scopeADCThreshold = " << int(config100av2->scopeADCThreshold());
00537 str << "\n scopeTrigHoldoff = " << int(config100av2->scopeTrigHoldoff());
00538 str << "\n scopeTrigOffset = " << int(config100av2->scopeTrigOffset());
00539 str << "\n scopeTraceLength = " << int(config100av2->scopeTraceLength());
00540 str << "\n scopeADCsameplesToSkip = " << int(config100av2->scopeADCsameplesToSkip());
00541 str << "\n scopeChanAwaveformSelect = " << int(config100av2->scopeChanAwaveformSelect());
00542 str << "\n scopeChanBwaveformSelect = " << int(config100av2->scopeChanBwaveformSelect());
00543 str << "\n numberOfRows = " << int(config100av2->numberOfRows());
00544 str << "\n numberOfReadableRows = " << int(config100av2->numberOfReadableRows());
00545 str << "\n numberOfColumns = " << int(config100av2->numberOfColumns());
00546 str << "\n numberOfCalibrationRows = " << int(config100av2->numberOfCalibrationRows());
00547 str << "\n numberOfEnvironmentalRows = " << int(config100av2->numberOfEnvironmentalRows());
00548 str << "\n numberOfAsics = " << int(config100av2->numberOfAsics());
00549
00550
00551 str << "\n asicPixelConfigArray() = " << config100av2->asicPixelConfigArray();
00552
00553
00554 str << "\n calibPixelConfigArray() =" << config100av2->calibPixelConfigArray();
00555
00556
00557
00558
00559
00560
00561
00562
00563 str << "\n asics_shape() =";
00564 std::vector<int> v = config100av2->asics_shape();
00565 for(std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) { str << " " << *it; }
00566
00567
00568 const int nasics = config100av2->numberOfAsics();
00569 for (int i = 0; i != nasics; ++ i) {
00570 const Psana::Epix::Asic100aConfigV1& aconfig = config100av2->asics(i);
00571 str << "\n Psana::Epix::Asic100aConfigV1 #" << i << ":";
00572 str << "\n pulserVsPixelOnDelay = " << int(aconfig.pulserVsPixelOnDelay());
00573 str << "\n pulserSync = " << int(aconfig.pulserSync());
00574 str << "\n dummyTest = " << int(aconfig.dummyTest());
00575 str << "\n dummyMask = " << int(aconfig.dummyMask());
00576 str << "\n testPulserLevel = " << int(aconfig.testPulserLevel());
00577 str << "\n pulserCounterDirection = " << int(aconfig.pulserCounterDirection());
00578 str << "\n automaticTestModeEnable = " << int(aconfig.automaticTestModeEnable());
00579 str << "\n testMode = " << int(aconfig.testMode());
00580 str << "\n testModeWithDarkFrame = " << int(aconfig.testModeWithDarkFrame());
00581 str << "\n highResolutionModeTest = " << int(aconfig.highResolutionModeTest());
00582 str << "\n pulserReset = " << int(aconfig.pulserReset());
00583 str << "\n digitalMonitorMux1 = " << int(aconfig.digitalMonitorMux1());
00584 str << "\n digitalMonitorMux2 = " << int(aconfig.digitalMonitorMux2());
00585 str << "\n testPulserCurrent = " << int(aconfig.testPulserCurrent());
00586 str << "\n testPointSystemOutputDynamicRange = " << int(aconfig.testPointSystemOutputDynamicRange());
00587 str << "\n digitalMonitor1Enable = " << int(aconfig.digitalMonitor1Enable());
00588 str << "\n digitalMonitor2Enable = " << int(aconfig.digitalMonitor2Enable());
00589 str << "\n LVDS_ImpedenceMatchingEnable = " << int(aconfig.LVDS_ImpedenceMatchingEnable());
00590 str << "\n VRefBaselineDac = " << int(aconfig.VRefBaselineDac());
00591 str << "\n extraRowsLowReferenceValue = " << int(aconfig.extraRowsLowReferenceValue());
00592 str << "\n testPointSystemTemperatureCompensationEnable = " << int(aconfig.testPointSystemTemperatureCompensationEnable() );
00593 str << "\n testPointSytemInputSelect = " << int(aconfig.testPointSytemInputSelect());
00594 str << "\n programmableReadoutDelay = " << int(aconfig.programmableReadoutDelay());
00595 str << "\n outputDriverOutputDynamicRange0 = " << int(aconfig.outputDriverOutputDynamicRange0());
00596 str << "\n outputDriverOutputDynamicRange1 = " << int(aconfig.outputDriverOutputDynamicRange1());
00597 str << "\n balconyEnable = " << int(aconfig.balconyEnable());
00598 str << "\n balconyDriverCurrent = " << int(aconfig.balconyDriverCurrent());
00599 str << "\n fastPowerPulsingSpeed = " << int(aconfig.fastPowerPulsingSpeed());
00600 str << "\n fastPowerPulsingEnable = " << int(aconfig.fastPowerPulsingEnable());
00601 str << "\n preamplifierCurrent = " << int(aconfig.preamplifierCurrent());
00602 str << "\n pixelOutputBufferCurrent = " << int(aconfig.pixelOutputBufferCurrent());
00603 str << "\n pixelBufferAndPreamplifierDrivingCapabilities = " << int(aconfig.pixelBufferAndPreamplifierDrivingCapabilities());
00604 str << "\n outputDriverTemperatureCompensationEnable = " << int(aconfig.outputDriverTemperatureCompensationEnable());
00605 str << "\n pixelFilterLevel = " << int(aconfig.pixelFilterLevel());
00606 str << "\n bandGapReferenceTemperatureCompensationBits = " << int(aconfig.bandGapReferenceTemperatureCompensationBits());
00607 str << "\n outputDriverDrivingCapabilitiesAndStability = " << int(aconfig.outputDriverDrivingCapabilitiesAndStability());
00608 str << "\n outputDriverDacReferenceBias = " << int(aconfig.outputDriverDacReferenceBias());
00609 str << "\n testPointSystemTemperatureCompensationGain = " << int(aconfig.testPointSystemTemperatureCompensationGain());
00610 str << "\n testPointSystemInputCommonMode = " << int(aconfig.testPointSystemInputCommonMode());
00611 str << "\n outputDriverTemperatureCompensationGain0 = " << int(aconfig.outputDriverTemperatureCompensationGain0());
00612 str << "\n outputDriverInputCommonMode0 = " << int(aconfig.outputDriverInputCommonMode0());
00613 str << "\n testBackEnd = " << int(aconfig.testBackEnd());
00614 str << "\n interleavedReadOutEnable = " << int(aconfig.interleavedReadOutEnable());
00615 str << "\n EXEC_DelayEnable = " << int(aconfig.EXEC_DelayEnable());
00616 str << "\n CCK_RegDelayEnable = " << int(aconfig.CCK_RegDelayEnable());
00617 str << "\n syncPinEnable = " << int(aconfig.syncPinEnable());
00618 str << "\n RowStartAddr = " << int(aconfig.RowStartAddr());
00619 str << "\n RowStopAddr = " << int(aconfig.RowStopAddr());
00620 str << "\n ColumnStartAddr = " << int(aconfig.ColumnStartAddr());
00621 }
00622 }
00623 }
00624 }
00625
00626
00627
00628 void
00629 DumpEpix::event(Event& evt, Env& env)
00630 {
00631 Pds::Src actualSrc;
00632 shared_ptr<Psana::Epix::ElementV1> data1 = evt.get(m_src, "", &actualSrc);
00633 if (data1) {
00634 WithMsgLog(name(), info, str) {
00635 str << "Epix::ElementV1 at source " << actualSrc;
00636 str << "\n vc = " << int(data1->vc());
00637 str << "\n lane = " << int(data1->lane());
00638 str << "\n acqCount = " << data1->acqCount();
00639 str << "\n frameNumber = " << data1->frameNumber();
00640 str << "\n ticks = " << data1->ticks();
00641 str << "\n fiducials = " << data1->fiducials();
00642 str << "\n frame = " << data1->frame();
00643 str << "\n excludedRows = " << data1->excludedRows();
00644 str << "\n temperatures = " << data1->temperatures();
00645 str << "\n lastWord = " << data1->lastWord();
00646 }
00647 }
00648
00649 shared_ptr<Psana::Epix::ElementV2> data2 = evt.get(m_src, "", &actualSrc);
00650 if (data2) {
00651 WithMsgLog(name(), info, str) {
00652 str << "Epix::ElementV2 at source " << actualSrc;
00653 str << "\n vc = " << int(data2->vc());
00654 str << "\n lane = " << int(data2->lane());
00655 str << "\n acqCount = " << data2->acqCount();
00656 str << "\n frameNumber = " << data2->frameNumber();
00657 str << "\n ticks = " << data2->ticks();
00658 str << "\n fiducials = " << data2->fiducials();
00659 str << "\n frame = " << data2->frame();
00660 str << "\n calibrationRows = " << data2->calibrationRows();
00661 str << "\n environmentalRows = " << data2->environmentalRows();
00662 str << "\n temperatures = " << data2->temperatures();
00663 str << "\n lastWord = " << data2->lastWord();
00664 }
00665 }
00666
00667 shared_ptr<Psana::Epix::ElementV3> data3 = evt.get(m_src, "", &actualSrc);
00668 if (data3) {
00669 WithMsgLog(name(), info, str) {
00670 str << "Epix::ElementV3 at source " << actualSrc;
00671 str << "\n vc = " << int(data3->vc());
00672 str << "\n lane = " << int(data3->lane());
00673 str << "\n acqCount = " << data3->acqCount();
00674 str << "\n frameNumber = " << data3->frameNumber();
00675 str << "\n ticks = " << data3->ticks();
00676 str << "\n fiducials = " << data3->fiducials();
00677 str << "\n frame = " << data3->frame();
00678 str << "\n calibrationRows = " << data3->calibrationRows();
00679 str << "\n environmentalRows = " << data3->environmentalRows();
00680 str << "\n temperatures = " << data3->temperatures();
00681 str << "\n lastWord = " << data3->lastWord();
00682 }
00683 }
00684
00685 }
00686
00687 }