28 std::unique_ptr<EgammaTowerIsolationNew<1>> newAlgo =
nullptr;
39 : depth_(depth), extRadius(extRadiusI), intRadius(intRadiusI) {
43 if (tls.newAlgo.get() ==
nullptr || towers != tls.oldTowers || towers->
size() != tls.newAlgo->nt ||
44 (towers->
size() > 15 && (*towers)[15].id() != tls.id15)) {
47 tls.id15 = towers->
size() > 15 ? (*towers)[15].id() : 0;
53 const std::vector<CaloTowerDetId>* detIdToExclude)
const {
54 if (
nullptr != detIdToExclude)
61 if (detIdToExclude ==
nullptr) {
63 et, sum, sc, static_cast<CaloTowerDetId const*>(
nullptr), static_cast<CaloTowerDetId const*>(
nullptr));
65 tls.newAlgo->compute(et, sum, sc, detIdToExclude->cbegin(), detIdToExclude->cend());
70 return detIdToExclude ==
nullptr ? sum.
he[0] : sum.
heBC[0];
72 return detIdToExclude ==
nullptr ? sum.
he[0] - sum.
h2[0] : sum.
heBC[0] - sum.
h2BC[0];
74 return detIdToExclude ==
nullptr ? sum.
h2[0] : sum.
h2BC[0];
double getSum(bool et, reco::SuperCluster const &sc, const std::vector< CaloTowerDetId > *detIdToExclude) const
EgammaTowerIsolation(float extRadiusI, float intRadiusI, float etLow, signed int depth, const CaloTowerCollection *towers)