diff --git a/Geometry/CaloTopology/interface/EcalTrigTowerConstituentsMap.h b/Geometry/CaloTopology/interface/EcalTrigTowerConstituentsMap.h index 2298ab8c2efac..7d3f89cc33727 100644 --- a/Geometry/CaloTopology/interface/EcalTrigTowerConstituentsMap.h +++ b/Geometry/CaloTopology/interface/EcalTrigTowerConstituentsMap.h @@ -23,6 +23,8 @@ class EcalTrigTowerConstituentsMap { /// Get the tower id for this det id (or null if not known) EcalTrigTowerDetId towerOf(const DetId& id) const; + static EcalTrigTowerDetId barrelTowerOf(const DetId& id); + /// Get the constituent detids for this tower id std::vector constituentsOf(const EcalTrigTowerDetId& id) const; diff --git a/Geometry/CaloTopology/src/EcalTrigTowerConstituentsMap.cc b/Geometry/CaloTopology/src/EcalTrigTowerConstituentsMap.cc index a910fcd9e6be1..a972871a06985 100644 --- a/Geometry/CaloTopology/src/EcalTrigTowerConstituentsMap.cc +++ b/Geometry/CaloTopology/src/EcalTrigTowerConstituentsMap.cc @@ -5,9 +5,19 @@ #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "FWCore/Utilities/interface/Exception.h" +#include EcalTrigTowerConstituentsMap::EcalTrigTowerConstituentsMap() {} +EcalTrigTowerDetId EcalTrigTowerConstituentsMap::barrelTowerOf(const DetId& id) { + assert(id.det() == DetId::Ecal && id.subdetId() == EcalBarrel); + //-------------------- + // Ecal Barrel + //-------------------- + EBDetId myId(id); + return myId.tower(); +} + EcalTrigTowerDetId EcalTrigTowerConstituentsMap::towerOf(const DetId& id) const { if (id.det() == DetId::Ecal && id.subdetId() == EcalBarrel) { //-------------------- diff --git a/SimCalorimetry/EcalEBTrigPrimAlgos/interface/EcalEBTrigPrimTestAlgo.h b/SimCalorimetry/EcalEBTrigPrimAlgos/interface/EcalEBTrigPrimTestAlgo.h index a56af8869ff3f..3dee30fdca67f 100644 --- a/SimCalorimetry/EcalEBTrigPrimAlgos/interface/EcalEBTrigPrimTestAlgo.h +++ b/SimCalorimetry/EcalEBTrigPrimAlgos/interface/EcalEBTrigPrimTestAlgo.h @@ -185,7 +185,8 @@ void EcalEBTrigPrimTestAlgo::fillMap( ; for (unsigned int i = 0; i < col->size(); ++i) { Digi samples((*col)[i]); - EcalTrigTowerDetId coarser = (*eTTmap_).towerOf(samples.id()); + EcalTrigTowerDetId coarser = + eTTmap_ ? (*eTTmap_).towerOf(samples.id()) : EcalTrigTowerConstituentsMap::barrelTowerOf(samples.id()); int index = getIndex(col, coarser); int stripnr = findStripNr(samples.id()); diff --git a/SimCalorimetry/EcalTrigPrimAlgos/interface/EcalTrigPrimFunctionalAlgo.h b/SimCalorimetry/EcalTrigPrimAlgos/interface/EcalTrigPrimFunctionalAlgo.h index e08c13ddce0fa..e40adafeeac40 100644 --- a/SimCalorimetry/EcalTrigPrimAlgos/interface/EcalTrigPrimFunctionalAlgo.h +++ b/SimCalorimetry/EcalTrigPrimAlgos/interface/EcalTrigPrimFunctionalAlgo.h @@ -305,7 +305,8 @@ void EcalTrigPrimFunctionalAlgo::fillMap( LogDebug("EcalTPG") << "Fill mapping, Collection size = " << col->size(); for (unsigned int i = 0; i < col->size(); ++i) { Digi samples((*col)[i]); - EcalTrigTowerDetId coarser = (*eTTmap_).towerOf(samples.id()); + EcalTrigTowerDetId coarser = + eTTmap_ ? (*eTTmap_).towerOf(samples.id()) : EcalTrigTowerConstituentsMap::barrelTowerOf(samples.id()); int index = getIndex(col, coarser); int stripnr = findStripNr(samples.id());