62 std::unique_ptr<LArShapeComplete> shape_cont;
76 const int nPhases=ofc.OFC_aSize();
77 const float timeOffset=ofc.timeOffset();
78 const float timeBinWidth=ofc.timeBinWidth();
85 std::vector<std::vector<float> > OFC_a;
86 std::vector<std::vector<float> > OFC_b;
87 for(
int phase=0; phase<nPhases; ++phase) {
91 if ( vOFC_a.size() == 0 || vOFC_b.size() == 0 ) {
93 }
else if ( vOFC_a.size() != vOFC_b.size() ) {
94 ATH_MSG_WARNING(
"OFC a (" << vOFC_a.size() <<
") and b (" << vOFC_b.size() <<
") are not the same size for channel " << onlID->
channel_name(
id) );
98 std::vector<float> newOFCa=vOFC_a.
asVector();
99 std::vector<float> newOFCb=vOFC_b.
asVector();
101 for(
unsigned i=0; i<
m_numAdd; ++i) {
102 newOFCa.insert(newOFCa.begin(),0.);
103 newOFCb.insert(newOFCb.begin(),0.);
106 newOFCa.resize(newOFCa.size()+
m_numAdd, 0.);
107 newOFCb.resize(newOFCb.size()+
m_numAdd, 0.);
110 OFC_a.push_back(std::move(newOFCa));
111 OFC_b.push_back(std::move(newOFCb));
120 if(
m_numAdd > 0) ofc_cont->set(
id,(
int)gain,OFC_a,OFC_b,timeOffset,timeBinWidth);
121 else if(!OFC_a.empty()) ofc_cont->set(
id,
CaloGain::LARLOWGAIN,OFC_a,OFC_b,timeOffset,timeBinWidth);
127 for(; its!=its_e;++its){
138 std::vector<std::vector<float> > Shape;
139 std::vector<std::vector<float> > ShapeDer;
140 for(
int phase=0; phase<nPhases; ++phase) {
144 if ( vShape.size() == 0 || vShapeDer.size() == 0 ) {
146 }
else if ( vShape.size() != vShapeDer.size() ) {
147 ATH_MSG_WARNING(
"Shape (" << vShape.size() <<
") and ShapeDer (" << vShapeDer.size() <<
") are not the same size for channel " << onlID->
channel_name(
id) );
151 std::vector<float> newShape=vShape.
asVector();
152 std::vector<float> newShapeDer=vShapeDer.
asVector();
154 for(
unsigned i=0; i<
m_numAdd; ++i) {
155 newShape.insert(newShape.begin(),0.);
156 newShapeDer.insert(newShapeDer.begin(),0.);
159 newShape.resize(newShape.size()+
m_numAdd, 0.);
160 newShapeDer.resize(newShapeDer.size()+
m_numAdd, 0.);
163 Shape.push_back(std::move(newShape));
164 ShapeDer.push_back(std::move(newShapeDer));
168 ShapeDer.push_back(vShapeDer.
asVector());
173 shape_cont->set(
id,(
int)gain,Shape,ShapeDer,timeOffset,timeBinWidth);
175 if(!Shape.empty()) shape_cont->set(
id,
CaloGain::LARLOWGAIN,Shape,ShapeDer,timeOffset,timeBinWidth);
192 return StatusCode::SUCCESS;