29 return std::vector<const CaloCell*>();
35 const std::vector<const CaloCell*> vCells(this->
caloCells(ttId));
36 std::vector<std::vector<const CaloCell*> > ccByLayer;
37 std::vector<const CaloCell*> cc;
38 int caloSampleInUse(-10);
40 if(vCells.size()!=0) {
41 std::vector<const CaloCell*>::const_iterator itCells = vCells.begin();
42 for(;itCells!=vCells.end();++itCells) {
45 if(firstCell ==
true){caloSampleInUse =
m_caloCellHelper->calo_sample(Id);firstCell =
false;}
47 if( caloSampleInUse != currentCaloSample ){
48 ccByLayer.push_back(cc);
50 caloSampleInUse = currentCaloSample;
52 cc.push_back(*itCells);
54 ccByLayer.push_back(std::move(cc));
62 const std::vector<const CaloCell*> vCells(this->
caloCells(ttId));
63 std::vector<int> layers;
64 int caloSampleInUse(-10);
65 if(vCells.size()!=0) {
66 std::vector<const CaloCell*>::const_iterator itCells = vCells.begin();
67 for(;itCells!=vCells.end();++itCells) {
71 if( caloSampleInUse != currentCaloSample ){
72 layers.push_back(currentCaloSample);
73 caloSampleInUse = currentCaloSample;
109 if(cells.size()!=0) {
110 typedef std::vector<const CaloCell*>::const_iterator Itr;
112 for(Itr i=cells.begin();i!=cells.end();++i) {
114 float cellEnergy(0.0);
121 cellEnergy+=(*i)->energy()*0.5;
124 cellEnergy+=(*i)->energy();
129 cellEnergy+=(*i)->energy();
131 if(mode == 0){
energy += cellEnergy;}
132 if(mode == 1){
et += cellEnergy/cosh((*i)->eta());}
136 if(mode == 1){
return et /
GeV;}
144 ATH_MSG_INFO(
"Initialize LVL1::L1CaloCells2TriggerTowers");
157 return StatusCode::FAILURE;
162 sc =
detStore()->retrieve(lvl1_id,
"CaloLVL1_ID");
180 return StatusCode::SUCCESS;
189 std::vector<Identifier>::const_iterator it_towerId =
m_lvl1Helper->tower_begin();
190 std::vector<Identifier>::const_iterator it_towerEnd =
m_lvl1Helper->tower_end();
193 for(; it_towerId!=it_towerEnd;++it_towerId){
194 m_mTTCaloCells[(*it_towerId).get_identifier32().get_compact()].reserve(60);
198 for (;itCell!=cellContainer.
end();++itCell){
205 m_cellMatch->matchCell2Tower(**cabling, caloCell, ttId1, ttId2);
226 std::vector<Identifier>::const_iterator it_towerId =
m_lvl1Helper->tower_begin();
227 std::vector<Identifier>::const_iterator it_towerEnd =
m_lvl1Helper->tower_end();
230 for(; it_towerId!=it_towerEnd;++it_towerId){
231 m_mTTLArDigits[(*it_towerId).get_identifier32().get_compact()].reserve(60);
235 for (;itLArDigit!=larDigitContainer.
end();++itLArDigit){
237 const LArDigit * larDigit= *itLArDigit;
240 if(cabling->isOnlineConnected(larDigitChannelID)) {
242 Identifier larDigitID = cabling->cnvToIdentifier(larDigitChannelID);
285 std::vector<Identifier>::const_iterator it_towerId =
m_lvl1Helper->tower_begin();
286 std::vector<Identifier>::const_iterator it_towerEnd =
m_lvl1Helper->tower_end();
289 for(; it_towerId!=it_towerEnd;++it_towerId){
290 m_mTTTileDigits[(*it_towerId).get_identifier32().get_compact()].reserve(8);
296 for(; collItr!=lastColl; ++collItr) {
301 if (digitsItr!=lastDigits) {
302 for(; digitsItr!=lastDigits; ++digitsItr) {
310 int sample =
m_tileID->sample(tileDigitID);
314 if(
section==3 && (sample==1 || sample==2) ) {
332 }
else if( (
section==1 ||
section==2) && (sample==0 || sample==1) ) {
378 return std::vector<const LArDigit*>();
389 return std::vector<const TileDigits*>();
399 std::vector<const TileDigits*> vTileDigits(this->
tileDigits(ttId));
401 std::vector<double> vADCSum;
404 std::vector<const TileDigits*>::const_iterator it_digit = vTileDigits.begin();
405 for(;it_digit!=vTileDigits.end();++it_digit) {
407 std::vector<double> vADC((*it_digit)->get_digits());
409 int adcSize(vADC.size());
410 if(vADCSum.size()==0) vADCSum.resize(adcSize);
412 for(
int i=0;i<adcSize;++i) {
418 std::vector<double>::iterator it_adc = vADCSum.begin();
420 const double inv_nSum = 1. /
static_cast<double> (nSum);
421 for(;it_adc!=vADCSum.end();++it_adc){
422 (*it_adc) *= inv_nSum;
431 std::vector<const LArDigit*> vLArDigits(this->
larDigits(ttId));
433 std::vector<double> vADCSum;
436 std::vector<const LArDigit*>::const_iterator it_digit = vLArDigits.begin();
437 for(;it_digit!=vLArDigits.end();++it_digit) {
439 std::vector<short> vADC((*it_digit)->samples());
441 int adcSize(vADC.size());
442 if(vADCSum.size()==0) vADCSum.resize(adcSize);
444 for(
int i=0;i<adcSize;++i) {
450 std::vector<double>::iterator it_adc = vADCSum.begin();
452 const double inv_nSum = 1. /
static_cast<double> (nSum);
453 for(;it_adc!=vADCSum.end();++it_adc){
454 (*it_adc) *= inv_nSum;
470 std::vector<const CaloCell*> vCells = it->second;
488 std::vector<const CaloCell*> vCells = it->second;
497 std::vector<const CaloCell*>::const_iterator itCells = vCells.begin();
498 for(;itCells!=vCells.end();++itCells) {
507 ATH_MSG_INFO(
" * tile - section: "<<
section <<
", side: "<<side<<
", module: "<<module<<
", tower: "<<tower<<
", sample: "<<sample<<
" - eta: "<< (*itCells)->eta()<<
", phi: "<< (*itCells)->phi()<<
", E:" << (*itCells)->energy() );
515 ATH_MSG_INFO(
" * fcal - pos_neg_z: "<<pos_neg<<
", module: "<<module<<
", ieta: "<<
eta<<
", iphi: "<<
phi<<
" - eta: "<< (*itCells)->eta()<<
", phi: "<< (*itCells)->phi()<<
", E:" << (*itCells)->energy() );
523 ATH_MSG_INFO(
" * larg - pos_neg_z: "<<pos_neg<<
", sampling: "<<sampling<<
", region: "<<region<<
", ieta: "<<
eta<<
", iphi: "<<
phi<<
" - eta: "<< (*itCells)->eta()<<
", phi: "<< (*itCells)->phi()<<
", E:" << (*itCells)->energy() );
533 std::vector<const LArDigit*>::const_iterator itLArDigits = vLArDigits.begin();
534 for(;itLArDigits!=vLArDigits.end();++itLArDigits) {
536 const LArDigit* larDigit= *itLArDigits;
538 Identifier larDigitID = cabling->cnvToIdentifier(hwId);
541 std::vector<short> vADC= larDigit->
samples();
542 std::vector<short>::const_iterator it_sample = vADC.begin();
543 for(;it_sample!=vADC.end();++it_sample) std::cout<< *it_sample<<
" ";
544 std::cout<<std::endl;
567 std::vector<const LArDigit*> vLArDigits = it->second;
568 this->
dump(vLArDigits);
582 std::vector<const LArDigit*> vLArDigits = it->second;
583 this->
dump(vLArDigits);
591 std::vector<const TileDigits*>::const_iterator itTileDigits = vTileDigits.begin();
592 for(;itTileDigits!=vTileDigits.end();++itTileDigits) {
602 ATH_MSG_INFO(
"section: "<<
section <<
", side: "<<side<<
", module: "<<module<<
", tower: "<<tower<<
", sample: "<<sample );
603 std::vector<double> vADC = tileDigit->
get_digits();
604 std::vector<double>::const_iterator it_sample = vADC.begin();
605 for(;it_sample!=vADC.end();++it_sample){
618 std::vector<const TileDigits*> vTileDigits = it->second;
619 this->
dump(vTileDigits);
632 std::vector<const TileDigits*> vTileDigits = it->second;
633 this->
dump(vTileDigits);
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
const ServiceHandle< StoreGateSvc > & detStore() const
Container class for CaloCell.
Data object for each calorimeter readout cell.
This class initializes the Calo (LAr and Tile) offline identifiers.
const CaloCell_ID * getCaloCell_ID(void) const
Access to IdHelper.
Helper class for offline TT identifiers.
DataModel_detail::const_iterator< DataVector > const_iterator
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
value_type get_compact() const
Get the compact id.
value_type get_compact() const
Get the compact id.
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
Container class for LArDigit.
Liquid Argon digit base class.
const std::vector< short > & samples() const
const HWIdentifier & channelID() const
virtual void dumpTileDigits() const override
virtual void dumpCaloCells() const override
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
virtual void dump(const std::vector< const CaloCell * > &vCells) const override
virtual float calcEnergyOrEt(const std::vector< const CaloCell * > &cells, const unsigned int mode) const override
virtual void dumpLArDigits() const override
virtual std::vector< std::vector< const CaloCell * > > caloCellsByLayer(const Identifier &ttId) const override
virtual void resetCaloCells() override
virtual std::vector< const CaloCell * > caloCells(const Identifier &ttId) const override
virtual std::vector< const LArDigit * > larDigits(const Identifier &ttId) const override
ToolHandle< CaloTriggerTowerService > m_ttSvc
virtual bool initLArDigitsTriggerTowers(const LArDigitContainer &larDigitContainer) override
virtual void reset() override
virtual std::vector< int > layerNames(const Identifier &ttID) const override
virtual float et(const std::vector< const CaloCell * > &cells) const override
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
virtual std::vector< double > samples(const Identifier &ttId) const override
virtual bool initCaloCellsTriggerTowers(const CaloCellContainer &cellContainer) override
Declare the interface that the class provides.
std::map< unsigned int, std::vector< const TileDigits * > > m_mTTTileDigits
ToolHandle< LVL1::IL1CaloMatchCell2Tower > m_cellMatch
virtual float energy(const std::vector< const CaloCell * > &cells) const override
const CaloLVL1_ID * m_lvl1Helper
bool m_bTileDigitsInitialized
bool m_bLArDigitsInitialized
virtual void resetLArDigits() override
const TileCablingService * m_tileCablingService
virtual void resetTileDigits() override
std::map< unsigned int, std::vector< const LArDigit * > > m_mTTLArDigits
std::map< unsigned int, std::vector< const CaloCell * > > m_mTTCaloCells
L1CaloCells2TriggerTowers()=delete
delete the big 4
virtual bool initTileDigitsTriggerTowers(const TileDigitsContainer &tileDigitsContainer) override
const CaloCell_ID * m_caloCellHelper
virtual std::vector< const TileDigits * > tileDigits(const Identifier &ttId) const override
virtual StatusCode finalize() override
virtual void dumpDigits(const Identifier &ttId) const override
static const TileCablingService * getInstance()
get pointer to service instance
std::vector< double > get_digits(void) const
Identifier identify(void) const
Identifier cell_ID(void) const
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...