12 log<<MSG::DEBUG<<
"LArCaliWaveSubsetCNV_p3 begin persToTrans"<<
endmsg;
19 log<<MSG::DEBUG<<
"Total febs:"<<nfebids;
21 log<<MSG::DEBUG<<
"\tCorrections:"<<ncorrs<<
endmsg;
23 unsigned int cwvIndex=0, waveIndex=0, chIndex = 0;
25 unsigned int ifebWithData = 0;
28 for (
unsigned int i = 0; i < nfebids; ++i, ++subsetIt){
29 unsigned int febid = subsetIt->first;
30 log<<MSG::DEBUG<<
"feb index: "<<i<<
"\tfebID: "<<febid;
32 bool hasSparseData =
false;
33 unsigned int chansSet = 0;
34 unsigned int chansOffset = 0;
44 log<<MSG::DEBUG<<
"\tFeb sparse? "<< hasSparseData <<
endmsg;
46 for (
unsigned int j = 0; j < nChannelsPerFeb; ++j){
47 bool copyChannel =
true;
51 if (!(chansSet & (1 << (j - chansOffset)))) {
54 if (j%32 == 31 && j < nChannelsPerFeb-2) {
64 unsigned int nDAC=persObj->
m_vDAC[cwvIndex];
66 for (
unsigned int nD=0;nD<nDAC;nD++){
67 double time =persObj->
m_dt[chIndex];
68 unsigned int f =persObj->
m_flag[chIndex];
69 int dac =persObj->
m_DAC[chIndex];
73 std::vector<double> val, err;
76 for (
unsigned int k = 0; k < persObj->
m_samples; ++k){
78 err.push_back(persObj->
m_vErrors[waveIndex]);
95 log<<MSG::DEBUG <<
"Correction reading, ncorr:" << ncorrs <<
"\twaveIndex=" << waveIndex <<
"\tsize:" << persObj->
m_vAmplitudes.size()<<
endmsg;
100 for (
unsigned int i = 0; i < ncorrs; ++i){
101 if (cwvIndex >= persObj->
m_vDAC.size()) {
103 <<
"LArCaliWaveSubsetCnv_p3::persToTrans - CaliWave index too large: cwvIndex/sizeInFile "
104 << cwvIndex <<
" " << persObj->
m_vDAC.size() <<
" " <<
endmsg;
113 unsigned int nDAC=persObj->
m_vDAC[cwvIndex];
115 for (
unsigned int nD=0;nD<nDAC;nD++){
116 if (chIndex >= persObj->
m_dt.size()) {
118 <<
"LArCaliWaveSubsetCnv_p3::persToTrans - CaliWave index too large: WaveIndex/sizeInFile "
119 << chIndex <<
" " << persObj->
m_dt.size() <<
" " <<
endmsg;
123 double time = persObj->
m_dt[chIndex];
124 unsigned int f = persObj->
m_flag[chIndex];
125 int dac = persObj->
m_DAC[chIndex];
128 std::vector<double> val, err;
129 std::vector<int> tri;
130 for (
unsigned int k = 0; k < persObj->
m_samples; ++k){
133 log << MSG::ERROR <<
"Persistent LArCaliWave object is inconsistent. i=" << i <<
" WaveIndes="
137 err.push_back(persObj->
m_vErrors[waveIndex]);
154 log<< MSG::DEBUG <<
"CaliWave ver p2 successfully read in."<<
endmsg;
165 log<<MSG::DEBUG<<
" LArCaliWaveSubsetCNV_p3 begin Writing"<<
endmsg;
168 log<<MSG::DEBUG<<
"total febs:"<<nfebs;
170 log<<MSG::DEBUG<<
"\tCorrections: "<<ncorrs<<
endmsg;
173 unsigned int nsubsetsNotEmpty = 0;
174 unsigned int nchans = 0;
178 std::vector<unsigned int> febsWithSparseData;
180 const auto subsetEnd = transObj->
subsetEnd();
182 subsetIt != subsetEnd;
185 unsigned int nfebChans = subsetIt->second.size();
187 if (nfebChans != 0 && nfebChans != nChannelsPerFeb) {
188 log << MSG::ERROR <<
"LArCaliWaveSubsetCnv_p3::transToPers - found incorrect number of channels per feb: " << nfebChans<<
endmsg;
192 if (nfebChans) ++nsubsetsNotEmpty;
194 bool isSparse =
false;
195 for (
unsigned int j = 0; j < nfebChans; ++j) {
199 if (!isSparse && CWV.size() == 0) {
201 febsWithSparseData.push_back(subsetIt->first);
218 if (febsWithSparseData.size())
221 persObj->
m_dt.reserve(nchans);
225 persObj->
m_flag.reserve(nchans);
229 subsetIt != subsetEnd;
232 unsigned int nfebChans = subsetIt->second.size();
234 if (nfebChans == 0)
continue;
236 unsigned int febid = subsetIt->first;
240 if (counterSparse < (
int)febsWithSparseData.size() && febid == febsWithSparseData[counterSparse]){
246 unsigned int chansSet = 0;
247 unsigned int chansOffset = 0;
248 for (
unsigned int j = 0; j < nfebChans; ++j){
250 bool saveAmplitudes=
true;
253 if (subsetIt->second[j].size() > 0) {
255 assert (j >= chansOffset && (j - chansOffset) <= 31);
257 chansSet |= (1 << (j - chansOffset));
261 saveAmplitudes =
false;
265 if (j == (chansOffset + 31) || j == nfebChans-1 ) {
272 if (saveAmplitudes) {
274 int dacValues=CWV.size();
275 persObj->
m_vDAC.push_back(dacValues);
277 for(
int dv=0;dv<dacValues;dv++){
278 persObj->
m_dt.push_back(CWV[dv].getDt());
279 persObj->
m_flag.push_back(CWV[dv].getFlag());
280 persObj->
m_DAC.push_back(CWV[dv].getDAC());
281 persObj->
m_isPulsed.push_back(CWV[dv].getIsPulsedInt());
282 const std::vector<double>& w=CWV[dv].getWave();
283 const std::vector<double>& e=CWV[dv].getErrors();
284 const std::vector<int>& t=CWV[dv].getTriggers();
285 for (
unsigned int k = 0; k< w.size(); ++k){
306 int dacValues=CWV.size();
307 persObj->
m_vDAC.push_back(dacValues);
308 log<<MSG::DEBUG<<
"\t CWV size: "<<dacValues;
310 for(
int dv=0;dv<dacValues;dv++){
311 persObj->
m_dt.push_back(CWV[dv].getDt());
312 persObj->
m_flag.push_back(CWV[dv].getFlag());
313 persObj->
m_DAC.push_back(CWV[dv].getDAC());
314 persObj->
m_isPulsed.push_back(CWV[dv].getIsPulsedInt());
315 const std::vector<double>& w=CWV[dv].getWave();
316 const std::vector<double>& e=CWV[dv].getErrors();
317 const std::vector<int>& t=CWV[dv].getTriggers();
319 for (
unsigned int k = 0; k< w.size(); ++k){
331 log<< MSG::DEBUG <<
" Cali Wave p2 successfully written down."<<
endmsg;