12 log<<MSG::DEBUG<<
"LArCaliWaveSubsetCNV_p2 begin persToTrans"<<
endmsg;
19 log<<MSG::DEBUG<<
"Total febs:"<<nfebids;
21 log<<MSG::DEBUG<<
"\tCorrections:"<<ncorrs<<
endmsg;
26 unsigned int cwvIndex=0, waveIndex=0, chIndex = 0;
28 unsigned int ifebWithData = 0;
31 for (
unsigned int i = 0; i < nfebids; ++i, ++subsetIt){
32 unsigned int febid = subsetIt->first;
33 log<<MSG::DEBUG<<
"feb index: "<<i<<
"\tfebID: "<<febid;
35 bool hasSparseData =
false;
36 unsigned int chansSet = 0;
37 unsigned int chansOffset = 0;
47 log<<MSG::DEBUG<<
"\tFeb sparse? "<< hasSparseData <<
endmsg;
49 for (
unsigned int j = 0; j < nChannelsPerFeb; ++j){
50 bool copyChannel =
true;
54 if (!(chansSet & (1 << (j - chansOffset)))) {
60 if (j%32 == 31 && j < nChannelsPerFeb-2) {
71 unsigned int nDAC=persObj->
m_vDAC[cwvIndex];
73 for (
unsigned int nD=0;nD<nDAC;nD++){
74 double time =persObj->
m_dt[chIndex];
75 unsigned int f =persObj->
m_flag[chIndex];
76 int dac =(persObj->
m_DAC[chIndex])&0xFFFF;
77 int pulsed =(persObj->
m_DAC[chIndex])>>16;
80 std::vector<double> val, err;
83 for (
unsigned int k = 0; k < persObj->
m_samples; ++k){
85 err.push_back(persObj->
m_vErrors[waveIndex]);
103 log<<MSG::DEBUG <<
"Correction reading, ncorr:" << ncorrs <<
"\twaveIndex=" << waveIndex <<
"\tsize:" << persObj->
m_vAmplitudes.size()<<
endmsg;
105 corrs.resize(ncorrs);
108 for (
unsigned int i = 0; i < ncorrs; ++i){
109 if (cwvIndex >= persObj->
m_vDAC.size()) {
111 <<
"LArCaliWaveSubsetCnv_p2::persToTrans - CaliWave index too large: cwvIndex/sizeInFile "
112 << cwvIndex <<
" " << persObj->
m_vDAC.size() <<
" " <<
endmsg;
121 unsigned int nDAC=persObj->
m_vDAC[cwvIndex];
123 for (
unsigned int nD=0;nD<nDAC;nD++){
124 if (chIndex >= persObj->
m_dt.size()) {
126 <<
"LArCaliWaveSubsetCnv_p2::persToTrans - CaliWave index too large: WaveIndex/sizeInFile "
127 << chIndex <<
" " << persObj->
m_dt.size() <<
" " <<
endmsg;
131 double time = persObj->
m_dt[chIndex];
132 unsigned int f = persObj->
m_flag[chIndex];
133 int dac =(persObj->
m_DAC[chIndex])&0xFFFF;
134 int pulsed =(persObj->
m_DAC[chIndex])>>16;
136 std::vector<double> val, err;
137 std::vector<int> tri;
138 for (
unsigned int k = 0; k < persObj->
m_samples; ++k){
141 log << MSG::ERROR <<
"Persistent LArCaliWave object is inconsistent. i=" << i <<
" WaveIndes="
145 err.push_back(persObj->
m_vErrors[waveIndex]);
161 log<< MSG::DEBUG <<
"CaliWave ver p2 successfully read in."<<
endmsg;
172 log<<MSG::DEBUG<<
" LArCaliWaveSubsetCNV_p2 begin Writing"<<
endmsg;
175 log<<MSG::DEBUG<<
"total febs:"<<nfebs;
177 log<<MSG::DEBUG<<
"\tCorrections: "<<ncorrs<<
endmsg;
181 unsigned int nsubsetsNotEmpty = 0;
182 unsigned int nchans = 0;
186 std::vector<unsigned int> febsWithSparseData;
188 const auto subsetEnd = transObj->
subsetEnd();
190 subsetIt != subsetEnd;
193 unsigned int nfebChans = subsetIt->second.size();
195 if (nfebChans != 0 && nfebChans != nChannelsPerFeb) {
196 log << MSG::ERROR <<
"LArCaliWaveSubsetCnv_p2::transToPers - found incorrect number of channels per feb: " << nfebChans<<
endmsg;
200 if (nfebChans) ++nsubsetsNotEmpty;
202 bool isSparse =
false;
203 for (
unsigned int j = 0; j < nfebChans; ++j) {
207 if (!isSparse && CWV.size() == 0) {
209 febsWithSparseData.push_back(subsetIt->first);
232 if (febsWithSparseData.size())
235 persObj->
m_dt.reserve(nchans);
239 persObj->
m_flag.reserve(nchans);
243 subsetIt != subsetEnd;
246 unsigned int nfebChans = subsetIt->second.size();
248 if (nfebChans == 0)
continue;
250 unsigned int febid = subsetIt->first;
254 if (counterSparse < (
int)febsWithSparseData.size() && febid == febsWithSparseData[counterSparse]){
260 unsigned int chansSet = 0;
261 unsigned int chansOffset = 0;
262 for (
unsigned int j = 0; j < nfebChans; ++j){
264 bool saveAmplitudes=
true;
267 if (subsetIt->second[j].size() > 0) {
269 assert (j >= chansOffset && (j - chansOffset) <= 31);
271 chansSet |= (1 << (j - chansOffset));
276 saveAmplitudes =
false;
281 if (j == (chansOffset + 31) || j == nfebChans-1 ) {
289 if (saveAmplitudes) {
291 int dacValues=CWV.size();
292 persObj->
m_vDAC.push_back(dacValues);
294 for(
int dv=0;dv<dacValues;dv++){
295 persObj->
m_dt.push_back(CWV[dv].getDt());
296 persObj->
m_flag.push_back(CWV[dv].getFlag());
297 persObj->
m_DAC.push_back(CWV[dv].getDAC() | (CWV[dv].getIsPulsedInt()<<16));
298 const std::vector<double>& w=CWV[dv].getWave();
299 const std::vector<double>& e=CWV[dv].getErrors();
300 const std::vector<int>& t=CWV[dv].getTriggers();
301 for (
unsigned int k = 0; k< w.size(); ++k){
323 int dacValues=CWV.size();
324 persObj->
m_vDAC.push_back(dacValues);
325 log<<MSG::DEBUG<<
"\t CWV size: "<<dacValues;
327 for(
int dv=0;dv<dacValues;dv++){
328 persObj->
m_dt.push_back(CWV[dv].getDt());
329 persObj->
m_flag.push_back(CWV[dv].getFlag());
330 persObj->
m_DAC.push_back(CWV[dv].getDAC() | (CWV[dv].getIsPulsedInt()<<16));
331 const std::vector<double>& w=CWV[dv].getWave();
332 const std::vector<double>& e=CWV[dv].getErrors();
333 const std::vector<int>& t=CWV[dv].getTriggers();
335 for (
unsigned int k = 0; k< w.size(); ++k){
347 log<< MSG::DEBUG <<
" Cali Wave p2 successfully written down."<<
endmsg;