00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "psana_examples/DumpTimepix.h"
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "MsgLogger/MsgLogger.h"
00026
00027
00028 #include "psddl_psana/timepix.ddl.h"
00029
00030
00031
00032
00033
00034
00035 using namespace psana_examples;
00036 PSANA_MODULE_FACTORY(DumpTimepix)
00037
00038
00039
00040
00041
00042 namespace psana_examples {
00043
00044
00045
00046
00047 DumpTimepix::DumpTimepix (const std::string& name)
00048 : Module(name)
00049 , m_src()
00050 {
00051
00052 m_src = configSrc("source", "DetInfo(:Timepix)");
00053 }
00054
00055
00056
00057
00058 DumpTimepix::~DumpTimepix ()
00059 {
00060 }
00061
00062
00063 void
00064 DumpTimepix::beginCalibCycle(Event& evt, Env& env)
00065 {
00066 MsgLog(name(), trace, "in beginCalibCycle()");
00067
00068 shared_ptr<Psana::Timepix::ConfigV1> config1 = env.configStore().get(m_src);
00069 if (config1) {
00070
00071 WithMsgLog(name(), info, str) {
00072 str << "Timepix::ConfigV1:";
00073
00074 str << "\n readoutSpeed = " << int(config1->readoutSpeed());
00075 str << "\n triggerMode = " << int(config1->triggerMode());
00076 str << "\n shutterTimeout = " << config1->shutterTimeout();
00077 str << "\n dac0Ikrum = " << config1->dac0Ikrum();
00078 str << "\n dac0Disc = " << config1->dac0Disc();
00079 str << "\n dac0Preamp = " << config1->dac0Preamp();
00080 str << "\n dac0BufAnalogA = " << config1->dac0BufAnalogA();
00081 str << "\n dac0BufAnalogB = " << config1->dac0BufAnalogB();
00082 str << "\n dac0Hist = " << config1->dac0Hist();
00083 str << "\n dac0ThlFine = " << config1->dac0ThlFine();
00084 str << "\n dac0ThlCourse = " << config1->dac0ThlCourse();
00085 str << "\n dac0Vcas = " << config1->dac0Vcas();
00086 str << "\n dac0Fbk = " << config1->dac0Fbk();
00087 str << "\n dac0Gnd = " << config1->dac0Gnd();
00088 str << "\n dac0Ths = " << config1->dac0Ths();
00089 str << "\n dac0BiasLvds = " << config1->dac0BiasLvds();
00090 str << "\n dac0RefLvds = " << config1->dac0RefLvds();
00091 str << "\n dac1Ikrum = " << config1->dac1Ikrum();
00092 str << "\n dac1Disc = " << config1->dac1Disc();
00093 str << "\n dac1Preamp = " << config1->dac1Preamp();
00094 str << "\n dac1BufAnalogA = " << config1->dac1BufAnalogA();
00095 str << "\n dac1BufAnalogB = " << config1->dac1BufAnalogB();
00096 str << "\n dac1Hist = " << config1->dac1Hist();
00097 str << "\n dac1ThlFine = " << config1->dac1ThlFine();
00098 str << "\n dac1ThlCourse = " << config1->dac1ThlCourse();
00099 str << "\n dac1Vcas = " << config1->dac1Vcas();
00100 str << "\n dac1Fbk = " << config1->dac1Fbk();
00101 str << "\n dac1Gnd = " << config1->dac1Gnd();
00102 str << "\n dac1Ths = " << config1->dac1Ths();
00103 str << "\n dac1BiasLvds = " << config1->dac1BiasLvds();
00104 str << "\n dac1RefLvds = " << config1->dac1RefLvds();
00105 str << "\n dac2Ikrum = " << config1->dac2Ikrum();
00106 str << "\n dac2Disc = " << config1->dac2Disc();
00107 str << "\n dac2Preamp = " << config1->dac2Preamp();
00108 str << "\n dac2BufAnalogA = " << config1->dac2BufAnalogA();
00109 str << "\n dac2BufAnalogB = " << config1->dac2BufAnalogB();
00110 str << "\n dac2Hist = " << config1->dac2Hist();
00111 str << "\n dac2ThlFine = " << config1->dac2ThlFine();
00112 str << "\n dac2ThlCourse = " << config1->dac2ThlCourse();
00113 str << "\n dac2Vcas = " << config1->dac2Vcas();
00114 str << "\n dac2Fbk = " << config1->dac2Fbk();
00115 str << "\n dac2Gnd = " << config1->dac2Gnd();
00116 str << "\n dac2Ths = " << config1->dac2Ths();
00117 str << "\n dac2BiasLvds = " << config1->dac2BiasLvds();
00118 str << "\n dac2RefLvds = " << config1->dac2RefLvds();
00119 str << "\n dac3Ikrum = " << config1->dac3Ikrum();
00120 str << "\n dac3Disc = " << config1->dac3Disc();
00121 str << "\n dac3Preamp = " << config1->dac3Preamp();
00122 str << "\n dac3BufAnalogA = " << config1->dac3BufAnalogA();
00123 str << "\n dac3BufAnalogB = " << config1->dac3BufAnalogB();
00124 str << "\n dac3Hist = " << config1->dac3Hist();
00125 str << "\n dac3ThlFine = " << config1->dac3ThlFine();
00126 str << "\n dac3ThlCourse = " << config1->dac3ThlCourse();
00127 str << "\n dac3Vcas = " << config1->dac3Vcas();
00128 str << "\n dac3Fbk = " << config1->dac3Fbk();
00129 str << "\n dac3Gnd = " << config1->dac3Gnd();
00130 str << "\n dac3Ths = " << config1->dac3Ths();
00131 str << "\n dac3BiasLvds = " << config1->dac3BiasLvds();
00132 str << "\n dac3RefLvds = " << config1->dac3RefLvds();
00133 }
00134
00135 }
00136
00137 shared_ptr<Psana::Timepix::ConfigV2> config2 = env.configStore().get(m_src);
00138 if (config2) {
00139
00140 WithMsgLog(name(), info, str) {
00141 str << "Timepix::ConfigV2:";
00142
00143 str << "\n readoutSpeed = " << int(config2->readoutSpeed());
00144 str << "\n triggerMode = " << int(config2->triggerMode());
00145 str << "\n timepixSpeed = " << config2->timepixSpeed();
00146 str << "\n dac0Ikrum = " << config2->dac0Ikrum();
00147 str << "\n dac0Disc = " << config2->dac0Disc();
00148 str << "\n dac0Preamp = " << config2->dac0Preamp();
00149 str << "\n dac0BufAnalogA = " << config2->dac0BufAnalogA();
00150 str << "\n dac0BufAnalogB = " << config2->dac0BufAnalogB();
00151 str << "\n dac0Hist = " << config2->dac0Hist();
00152 str << "\n dac0ThlFine = " << config2->dac0ThlFine();
00153 str << "\n dac0ThlCourse = " << config2->dac0ThlCourse();
00154 str << "\n dac0Vcas = " << config2->dac0Vcas();
00155 str << "\n dac0Fbk = " << config2->dac0Fbk();
00156 str << "\n dac0Gnd = " << config2->dac0Gnd();
00157 str << "\n dac0Ths = " << config2->dac0Ths();
00158 str << "\n dac0BiasLvds = " << config2->dac0BiasLvds();
00159 str << "\n dac0RefLvds = " << config2->dac0RefLvds();
00160 str << "\n dac1Ikrum = " << config2->dac1Ikrum();
00161 str << "\n dac1Disc = " << config2->dac1Disc();
00162 str << "\n dac1Preamp = " << config2->dac1Preamp();
00163 str << "\n dac1BufAnalogA = " << config2->dac1BufAnalogA();
00164 str << "\n dac1BufAnalogB = " << config2->dac1BufAnalogB();
00165 str << "\n dac1Hist = " << config2->dac1Hist();
00166 str << "\n dac1ThlFine = " << config2->dac1ThlFine();
00167 str << "\n dac1ThlCourse = " << config2->dac1ThlCourse();
00168 str << "\n dac1Vcas = " << config2->dac1Vcas();
00169 str << "\n dac1Fbk = " << config2->dac1Fbk();
00170 str << "\n dac1Gnd = " << config2->dac1Gnd();
00171 str << "\n dac1Ths = " << config2->dac1Ths();
00172 str << "\n dac1BiasLvds = " << config2->dac1BiasLvds();
00173 str << "\n dac1RefLvds = " << config2->dac1RefLvds();
00174 str << "\n dac2Ikrum = " << config2->dac2Ikrum();
00175 str << "\n dac2Disc = " << config2->dac2Disc();
00176 str << "\n dac2Preamp = " << config2->dac2Preamp();
00177 str << "\n dac2BufAnalogA = " << config2->dac2BufAnalogA();
00178 str << "\n dac2BufAnalogB = " << config2->dac2BufAnalogB();
00179 str << "\n dac2Hist = " << config2->dac2Hist();
00180 str << "\n dac2ThlFine = " << config2->dac2ThlFine();
00181 str << "\n dac2ThlCourse = " << config2->dac2ThlCourse();
00182 str << "\n dac2Vcas = " << config2->dac2Vcas();
00183 str << "\n dac2Fbk = " << config2->dac2Fbk();
00184 str << "\n dac2Gnd = " << config2->dac2Gnd();
00185 str << "\n dac2Ths = " << config2->dac2Ths();
00186 str << "\n dac2BiasLvds = " << config2->dac2BiasLvds();
00187 str << "\n dac2RefLvds = " << config2->dac2RefLvds();
00188 str << "\n dac3Ikrum = " << config2->dac3Ikrum();
00189 str << "\n dac3Disc = " << config2->dac3Disc();
00190 str << "\n dac3Preamp = " << config2->dac3Preamp();
00191 str << "\n dac3BufAnalogA = " << config2->dac3BufAnalogA();
00192 str << "\n dac3BufAnalogB = " << config2->dac3BufAnalogB();
00193 str << "\n dac3Hist = " << config2->dac3Hist();
00194 str << "\n dac3ThlFine = " << config2->dac3ThlFine();
00195 str << "\n dac3ThlCourse = " << config2->dac3ThlCourse();
00196 str << "\n dac3Vcas = " << config2->dac3Vcas();
00197 str << "\n dac3Fbk = " << config2->dac3Fbk();
00198 str << "\n dac3Gnd = " << config2->dac3Gnd();
00199 str << "\n dac3Ths = " << config2->dac3Ths();
00200 str << "\n dac3BiasLvds = " << config2->dac3BiasLvds();
00201 str << "\n dac3RefLvds = " << config2->dac3RefLvds();
00202 str << "\n chipCount = " << config2->chipCount();
00203 str << "\n driverVersion = " << config2->driverVersion();
00204 str << "\n firmwareVersion = " << config2->firmwareVersion();
00205 str << "\n pixelThreshSize = " << config2->pixelThreshSize();
00206 str << "\n pixelThresh = " << config2->pixelThresh();
00207 str << "\n chip names = " << config2->chip0Name() << " " << config2->chip1Name() << " " << config2->chip2Name() << " " << config2->chip3Name();
00208 str << "\n chip IDs = " << config2->chip0ID() << " " << config2->chip1ID() << " " << config2->chip2ID() << " " << config2->chip3ID();
00209
00210 }
00211
00212 }
00213
00214 shared_ptr<Psana::Timepix::ConfigV3> config3 = env.configStore().get(m_src);
00215 if (config3) {
00216
00217 WithMsgLog(name(), info, str) {
00218 str << "Timepix::ConfigV3:";
00219
00220 str << "\n readoutSpeed = " << int(config3->readoutSpeed());
00221 str << "\n timepixMode = " << int(config3->timepixMode());
00222 str << "\n timepixSpeed = " << config3->timepixSpeed();
00223 str << "\n dac0Ikrum = " << config3->dac0Ikrum();
00224 str << "\n dac0Disc = " << config3->dac0Disc();
00225 str << "\n dac0Preamp = " << config3->dac0Preamp();
00226 str << "\n dac0BufAnalogA = " << config3->dac0BufAnalogA();
00227 str << "\n dac0BufAnalogB = " << config3->dac0BufAnalogB();
00228 str << "\n dac0Hist = " << config3->dac0Hist();
00229 str << "\n dac0ThlFine = " << config3->dac0ThlFine();
00230 str << "\n dac0ThlCourse = " << config3->dac0ThlCourse();
00231 str << "\n dac0Vcas = " << config3->dac0Vcas();
00232 str << "\n dac0Fbk = " << config3->dac0Fbk();
00233 str << "\n dac0Gnd = " << config3->dac0Gnd();
00234 str << "\n dac0Ths = " << config3->dac0Ths();
00235 str << "\n dac0BiasLvds = " << config3->dac0BiasLvds();
00236 str << "\n dac0RefLvds = " << config3->dac0RefLvds();
00237 str << "\n dac1Ikrum = " << config3->dac1Ikrum();
00238 str << "\n dac1Disc = " << config3->dac1Disc();
00239 str << "\n dac1Preamp = " << config3->dac1Preamp();
00240 str << "\n dac1BufAnalogA = " << config3->dac1BufAnalogA();
00241 str << "\n dac1BufAnalogB = " << config3->dac1BufAnalogB();
00242 str << "\n dac1Hist = " << config3->dac1Hist();
00243 str << "\n dac1ThlFine = " << config3->dac1ThlFine();
00244 str << "\n dac1ThlCourse = " << config3->dac1ThlCourse();
00245 str << "\n dac1Vcas = " << config3->dac1Vcas();
00246 str << "\n dac1Fbk = " << config3->dac1Fbk();
00247 str << "\n dac1Gnd = " << config3->dac1Gnd();
00248 str << "\n dac1Ths = " << config3->dac1Ths();
00249 str << "\n dac1BiasLvds = " << config3->dac1BiasLvds();
00250 str << "\n dac1RefLvds = " << config3->dac1RefLvds();
00251 str << "\n dac2Ikrum = " << config3->dac2Ikrum();
00252 str << "\n dac2Disc = " << config3->dac2Disc();
00253 str << "\n dac2Preamp = " << config3->dac2Preamp();
00254 str << "\n dac2BufAnalogA = " << config3->dac2BufAnalogA();
00255 str << "\n dac2BufAnalogB = " << config3->dac2BufAnalogB();
00256 str << "\n dac2Hist = " << config3->dac2Hist();
00257 str << "\n dac2ThlFine = " << config3->dac2ThlFine();
00258 str << "\n dac2ThlCourse = " << config3->dac2ThlCourse();
00259 str << "\n dac2Vcas = " << config3->dac2Vcas();
00260 str << "\n dac2Fbk = " << config3->dac2Fbk();
00261 str << "\n dac2Gnd = " << config3->dac2Gnd();
00262 str << "\n dac2Ths = " << config3->dac2Ths();
00263 str << "\n dac2BiasLvds = " << config3->dac2BiasLvds();
00264 str << "\n dac2RefLvds = " << config3->dac2RefLvds();
00265 str << "\n dac3Ikrum = " << config3->dac3Ikrum();
00266 str << "\n dac3Disc = " << config3->dac3Disc();
00267 str << "\n dac3Preamp = " << config3->dac3Preamp();
00268 str << "\n dac3BufAnalogA = " << config3->dac3BufAnalogA();
00269 str << "\n dac3BufAnalogB = " << config3->dac3BufAnalogB();
00270 str << "\n dac3Hist = " << config3->dac3Hist();
00271 str << "\n dac3ThlFine = " << config3->dac3ThlFine();
00272 str << "\n dac3ThlCourse = " << config3->dac3ThlCourse();
00273 str << "\n dac3Vcas = " << config3->dac3Vcas();
00274 str << "\n dac3Fbk = " << config3->dac3Fbk();
00275 str << "\n dac3Gnd = " << config3->dac3Gnd();
00276 str << "\n dac3Ths = " << config3->dac3Ths();
00277 str << "\n dac3BiasLvds = " << config3->dac3BiasLvds();
00278 str << "\n dac3RefLvds = " << config3->dac3RefLvds();
00279 str << "\n dacBias = " << int(config3->dacBias());
00280 str << "\n flags = " << int(config3->flags());
00281 str << "\n chipCount = " << config3->chipCount();
00282 str << "\n driverVersion = " << config3->driverVersion();
00283 str << "\n firmwareVersion = " << config3->firmwareVersion();
00284 str << "\n pixelThreshSize = " << config3->pixelThreshSize();
00285 str << "\n pixelThresh = " << config3->pixelThresh();
00286 str << "\n chip names = " << config3->chip0Name() << " " << config3->chip1Name() << " " << config3->chip2Name() << " " << config3->chip3Name();
00287 str << "\n chip IDs = " << config3->chip0ID() << " " << config3->chip1ID() << " " << config3->chip2ID() << " " << config3->chip3ID();
00288
00289 }
00290
00291 }
00292 }
00293
00294
00295
00296 void
00297 DumpTimepix::event(Event& evt, Env& env)
00298 {
00299
00300
00301
00302
00303
00304
00305 shared_ptr<Psana::Timepix::DataV1> data1 = evt.get(m_src);
00306 if (data1) {
00307 WithMsgLog(name(), info, str) {
00308 str << "Timepix::DataV1:";
00309
00310 str << "\n timestamp = " << data1->timestamp();
00311 str << "\n frameCounter = " << data1->frameCounter();
00312 str << "\n lostRows = " << data1->lostRows();
00313 str << "\n data = " << data1->data();
00314 }
00315 }
00316
00317 shared_ptr<Psana::Timepix::DataV2> data2 = evt.get(m_src);
00318 if (data2) {
00319 WithMsgLog(name(), info, str) {
00320 str << "Timepix::DataV2:";
00321
00322 str << "\n timestamp = " << data2->timestamp();
00323 str << "\n frameCounter = " << data2->frameCounter();
00324 str << "\n lostRows = " << data2->lostRows();
00325 str << "\n data = " << data2->data();
00326 }
00327 }
00328 }
00329
00330
00331 }