diff --git a/LArCalorimeter/LArRecUtils/src/LArFCalTowerBuilderTool.cxx b/LArCalorimeter/LArRecUtils/src/LArFCalTowerBuilderTool.cxx index 16111c893386e9562f964dece89e42ca435acaa0..60a29da2467c82125fb97944a3d382fe3ada9469 100644 --- a/LArCalorimeter/LArRecUtils/src/LArFCalTowerBuilderTool.cxx +++ b/LArCalorimeter/LArRecUtils/src/LArFCalTowerBuilderTool.cxx @@ -60,7 +60,7 @@ StatusCode LArFCalTowerBuilderTool::initializeTool(){ inline void LArFCalTowerBuilderTool::addTower (const tower_iterator& t, - const CaloCellContainer* cells, + const ElementLink<CaloCellContainer>& cellsEL, CaloTower* tower) const { LArFCalTowerStore::cell_iterator firstC = m_cellStore.firstCellofTower(t); @@ -68,6 +68,7 @@ LArFCalTowerBuilderTool::addTower (const tower_iterator& t, // here get needed size of this vector and use it to reserve tower size. int ts= m_cellStore.towerSize(t); double wsumE = tower->getBasicEnergy(); // this is not 0 since some towers already have cells from other calos. + const CaloCellContainer* cells = cellsEL.getDataPtr(); for (; firstC != lastC; ++firstC) { unsigned int ci = firstC->first; @@ -79,7 +80,7 @@ LArFCalTowerBuilderTool::addTower (const tower_iterator& t, // get weights if (cellPtr) { wsumE += weightC * cellPtr->e(); // Summ up weighted energies . - tower->addUniqueCellNoKine(cells, cndx, weightC, ts); // add cells to tower. + tower->addUniqueCellNoKine(cellsEL, cndx, weightC, ts); // add cells to tower. } } tower->setE(wsumE); // update tower kinematics. @@ -89,7 +90,7 @@ LArFCalTowerBuilderTool::addTower (const tower_iterator& t, inline void LArFCalTowerBuilderTool::iterateFull (CaloTowerContainer* towers, - const CaloCellContainer* cells) const + const ElementLink<CaloCellContainer>& cellsEL) const { size_t sz = towers->size(); assert(m_cellStore.size() == sz); @@ -97,7 +98,7 @@ LArFCalTowerBuilderTool::iterateFull (CaloTowerContainer* towers, for (unsigned int t = 0; t < sz; ++t, ++tower_it) { CaloTower* aTower = towers->getTower(t); - addTower (tower_it, cells, aTower); + addTower (tower_it, cellsEL, aTower); } } @@ -105,7 +106,7 @@ LArFCalTowerBuilderTool::iterateFull (CaloTowerContainer* towers, inline void LArFCalTowerBuilderTool::iterateSubSeg (CaloTowerContainer* towers, - const CaloCellContainer* cells, + const ElementLink<CaloCellContainer>& cellsEL, const CaloTowerSeg::SubSeg* subseg) const { size_t sz = towers->size(); @@ -114,7 +115,7 @@ LArFCalTowerBuilderTool::iterateSubSeg (CaloTowerContainer* towers, for (unsigned int t = 0; t < sz; ++t, ++tower_it) { CaloTower* aTower = towers->getTower(tower_it.itower()); - addTower (tower_it, cells, aTower); + addTower (tower_it, cellsEL, aTower); } } @@ -154,11 +155,11 @@ LArFCalTowerBuilderTool::execute(CaloTowerContainer* theTowers, // register this calorimeter theTowers->setCalo(m_caloIndex); - + const ElementLink<CaloCellContainer> cellsEL (*theCells, 0); if (subseg) - iterateSubSeg (theTowers, theCells, subseg); + iterateSubSeg (theTowers, cellsEL, subseg); else - iterateFull (theTowers, theCells); + iterateFull (theTowers, cellsEL); return StatusCode::SUCCESS; } diff --git a/LArCalorimeter/LArRecUtils/src/LArFCalTowerBuilderTool.h b/LArCalorimeter/LArRecUtils/src/LArFCalTowerBuilderTool.h index b15765434b1fb5a7f58312a712875c8ea3264baf..306a3f0bd7307ce7ceb1cdfef0e0de8d89c63265 100644 --- a/LArCalorimeter/LArRecUtils/src/LArFCalTowerBuilderTool.h +++ b/LArCalorimeter/LArRecUtils/src/LArFCalTowerBuilderTool.h @@ -72,12 +72,12 @@ private: typedef LArFCalTowerStore::tower_iterator tower_iterator; void addTower (const tower_iterator& t, - const CaloCellContainer* cells, + const ElementLink<CaloCellContainer>& cellsEL, CaloTower* tower) const; void iterateFull (CaloTowerContainer* towers, - const CaloCellContainer* cells) const; + const ElementLink<CaloCellContainer>& cellsEL) const; void iterateSubSeg (CaloTowerContainer* towers, - const CaloCellContainer* cells, + const ElementLink<CaloCellContainer>& cellsEL, const CaloTowerSeg::SubSeg* subseg) const;