CMS 3D CMS Logo

List of all members | Public Member Functions | Public Attributes | Private Member Functions | Private Attributes
L1CaloTowerTreeProducer Class Reference

#include <L1TriggerDPG/L1Ntuples/src/L1CaloTowerTreeProducer.cc>

Inheritance diagram for L1CaloTowerTreeProducer:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 L1CaloTowerTreeProducer (const edm::ParameterSet &)
 
 ~L1CaloTowerTreeProducer () override
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Public Attributes

L1Analysis::L1AnalysisCaloTPDataFormatcaloTPData_
 
L1Analysis::L1AnalysisL1CaloClusterDataFormatl1CaloClusterData_
 
L1Analysis::L1AnalysisL1CaloTowerDataFormatl1CaloTowerData_
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginJob (void) override
 
void endJob () override
 

Private Attributes

double ecalLSB_
 
edm::EDGetTokenT< EcalTrigPrimDigiCollectionecalToken_
 
edm::Service< TFileServicefs_
 
edm::EDGetTokenT< HcalTrigPrimDigiCollectionhcalToken_
 
edm::EDGetTokenT< l1t::CaloClusterBxCollectionl1ClusterToken_
 
edm::EDGetTokenT< l1t::CaloTowerBxCollectionl1TowerToken_
 
unsigned maxCaloTP_
 
unsigned maxL1Cluster_
 
unsigned maxL1Tower_
 
bool storeCaloClusters_
 
TTree * tree_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: Produce L1 Extra tree

Implementation:

Definition at line 62 of file L1CaloTowerTreeProducer.cc.

Constructor & Destructor Documentation

L1CaloTowerTreeProducer::L1CaloTowerTreeProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 98 of file L1CaloTowerTreeProducer.cc.

References caloTPData_, StandaloneTrackMonitor_cfi::clusterTag, ecalLSB_, ecalToken_, fs_, edm::ParameterSet::getUntrackedParameter(), hcalToken_, edm::InputTag::instance(), l1CaloClusterData_, l1CaloTowerData_, l1ClusterToken_, l1TowerToken_, edm::InputTag::label(), TFileService::make(), maxCaloTP_, maxL1Cluster_, maxL1Tower_, or, storeCaloClusters_, AlCaHLTBitMon_QueryRunRegistry::string, and tree_.

98  {
99  ecalToken_ = consumes<EcalTrigPrimDigiCollection>(iConfig.getUntrackedParameter<edm::InputTag>("ecalToken"));
100  hcalToken_ = consumes<HcalTrigPrimDigiCollection>(iConfig.getUntrackedParameter<edm::InputTag>("hcalToken"));
101  l1TowerToken_ = consumes<l1t::CaloTowerBxCollection>(iConfig.getUntrackedParameter<edm::InputTag>("l1TowerToken"));
102 
103  edm::InputTag clusterTag = iConfig.getUntrackedParameter<edm::InputTag>("l1ClusterToken");
104  storeCaloClusters_ = true;
105  if (clusterTag.label() == std::string("") or clusterTag.label() == std::string("none"))
106  storeCaloClusters_ = false;
107 
108  if (clusterTag.instance() != std::string(""))
110 
111  ecalLSB_ = iConfig.getUntrackedParameter<double>("ecalLSB", 0.5);
112  maxCaloTP_ = iConfig.getUntrackedParameter<unsigned int>("maxCaloTP", 5760);
113  maxL1Tower_ = iConfig.getUntrackedParameter<unsigned int>("maxL1Tower", 5760);
114  maxL1Cluster_ = iConfig.getUntrackedParameter<unsigned int>("maxL1Cluster", 5760);
115 
116  // set up output
117  tree_ = fs_->make<TTree>("L1CaloTowerTree", "L1CaloTowerTree");
118  tree_->Branch("CaloTP", "L1Analysis::L1AnalysisCaloTPDataFormat", &caloTPData_, 32000, 3);
119  tree_->Branch("L1CaloTower", "L1Analysis::L1AnalysisL1CaloTowerDataFormat", &l1CaloTowerData_, 32000, 3);
120 
121  if (storeCaloClusters_)
122  tree_->Branch("L1CaloCluster", "L1Analysis::L1AnalysisL1CaloClusterDataFormat", &l1CaloClusterData_, 32000, 3);
123 
124  caloTPData_ = new L1Analysis::L1AnalysisCaloTPDataFormat();
125  l1CaloTowerData_ = new L1Analysis::L1AnalysisL1CaloTowerDataFormat();
126  l1CaloClusterData_ = new L1Analysis::L1AnalysisL1CaloClusterDataFormat();
127 }
T getUntrackedParameter(std::string const &, T const &) const
BXVector< CaloCluster > CaloClusterBxCollection
Definition: CaloCluster.h:78
static PFTauRenderPlugin instance
S make(const edm::ParameterSet &cfg)
delete x;
Definition: CaloConfig.h:22
L1Analysis::L1AnalysisCaloTPDataFormat * caloTPData_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
edm::Service< TFileService > fs_
edm::EDGetTokenT< HcalTrigPrimDigiCollection > hcalToken_
edm::EDGetTokenT< l1t::CaloClusterBxCollection > l1ClusterToken_
L1Analysis::L1AnalysisL1CaloClusterDataFormat * l1CaloClusterData_
edm::EDGetTokenT< EcalTrigPrimDigiCollection > ecalToken_
std::string const & label() const
Definition: InputTag.h:36
edm::EDGetTokenT< l1t::CaloTowerBxCollection > l1TowerToken_
L1Analysis::L1AnalysisL1CaloTowerDataFormat * l1CaloTowerData_
L1CaloTowerTreeProducer::~L1CaloTowerTreeProducer ( )
override

Definition at line 129 of file L1CaloTowerTreeProducer.cc.

129  {
130  // do anything here that needs to be done at desctruction time
131  // (e.g. close files, deallocate resources etc.)
132 }

Member Function Documentation

void L1CaloTowerTreeProducer::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 139 of file L1CaloTowerTreeProducer.cc.

References funct::abs(), BXVector< T >::begin(), caloTPData_, ecalLSB_, ecalToken_, L1Analysis::L1AnalysisCaloTPDataFormat::ecalTPCaliphi, L1Analysis::L1AnalysisCaloTPDataFormat::ecalTPcompEt, L1Analysis::L1AnalysisCaloTPDataFormat::ecalTPet, L1Analysis::L1AnalysisCaloTPDataFormat::ecalTPfineGrain, L1Analysis::L1AnalysisCaloTPDataFormat::ecalTPieta, L1Analysis::L1AnalysisCaloTPDataFormat::ecalTPiphi, BXVector< T >::end(), EgHLTOffHistBins_cfi::et, L1Analysis::L1AnalysisL1CaloClusterDataFormat::et, L1Analysis::L1AnalysisL1CaloTowerDataFormat::et, L1Analysis::L1AnalysisL1CaloClusterDataFormat::eta, L1Analysis::L1AnalysisL1CaloTowerDataFormat::eta, edm::EventSetup::get(), edm::Event::getByToken(), BXVector< T >::getFirstBX(), BXVector< T >::getLastBX(), CaloTPGTranscoder::hcaletValue(), hcalToken_, L1Analysis::L1AnalysisCaloTPDataFormat::hcalTPCaliphi, L1Analysis::L1AnalysisCaloTPDataFormat::hcalTPcompEt, L1Analysis::L1AnalysisCaloTPDataFormat::hcalTPet, L1Analysis::L1AnalysisCaloTPDataFormat::hcalTPfineGrain, L1Analysis::L1AnalysisCaloTPDataFormat::hcalTPieta, L1Analysis::L1AnalysisCaloTPDataFormat::hcalTPiphi, L1Analysis::L1AnalysisL1CaloTowerDataFormat::iem, L1Analysis::L1AnalysisL1CaloClusterDataFormat::iet, L1Analysis::L1AnalysisL1CaloTowerDataFormat::iet, L1Analysis::L1AnalysisL1CaloClusterDataFormat::ieta, L1Analysis::L1AnalysisL1CaloTowerDataFormat::ieta, LEDCalibrationChannels::ieta, L1Analysis::L1AnalysisL1CaloTowerDataFormat::ihad, L1Analysis::L1AnalysisL1CaloClusterDataFormat::iphi, L1Analysis::L1AnalysisL1CaloTowerDataFormat::iphi, LEDCalibrationChannels::iphi, L1Analysis::L1AnalysisL1CaloClusterDataFormat::iqual, L1Analysis::L1AnalysisL1CaloTowerDataFormat::iqual, L1Analysis::L1AnalysisL1CaloTowerDataFormat::iratio, edm::EDGetTokenT< T >::isUninitialized(), edm::HandleBase::isValid(), l1CaloClusterData_, l1CaloTowerData_, l1ClusterToken_, l1TowerToken_, L1Analysis::L1AnalysisL1CaloClusterDataFormat::nCluster, L1Analysis::L1AnalysisCaloTPDataFormat::nECALTP, L1Analysis::L1AnalysisCaloTPDataFormat::nHCALTP, L1Analysis::L1AnalysisL1CaloTowerDataFormat::nTower, L1Analysis::L1AnalysisL1CaloClusterDataFormat::phi, L1Analysis::L1AnalysisL1CaloTowerDataFormat::phi, edm::Handle< T >::product(), L1Analysis::L1AnalysisL1CaloClusterDataFormat::Reset(), L1Analysis::L1AnalysisL1CaloTowerDataFormat::Reset(), L1Analysis::L1AnalysisCaloTPDataFormat::Reset(), storeCaloClusters_, and tree_.

139  {
140  // do calo towers
141  caloTPData_->Reset();
142 
144  iSetup.get<CaloTPGRecord>().get(decoder);
145 
148 
149  iEvent.getByToken(ecalToken_, ecalTPs);
150  iEvent.getByToken(hcalToken_, hcalTPs);
151 
152  if (ecalTPs.isValid()) {
153  for (auto itr : *(ecalTPs.product())) {
154  short ieta = (short)itr.id().ieta();
155  // unsigned short absIeta = (unsigned short) abs(ieta);
156  // short sign = ieta/absIeta;
157 
158  unsigned short cal_iphi = (unsigned short)itr.id().iphi();
159  unsigned short iphi = (72 + 18 - cal_iphi) % 72;
160  unsigned short compEt = itr.compressedEt();
161  double et = ecalLSB_ * compEt;
162  unsigned short fineGrain = (unsigned short)itr.fineGrain();
163 
164  if (compEt > 0) {
165  caloTPData_->ecalTPieta.push_back(ieta);
166  caloTPData_->ecalTPCaliphi.push_back(cal_iphi);
167  caloTPData_->ecalTPiphi.push_back(iphi);
168  caloTPData_->ecalTPet.push_back(et);
169  caloTPData_->ecalTPcompEt.push_back(compEt);
170  caloTPData_->ecalTPfineGrain.push_back(fineGrain);
171  caloTPData_->nECALTP++;
172  }
173  }
174 
175  } else {
176  edm::LogWarning("L1TNtuple") << "ECAL TPs not found, branch will not be filled";
177  }
178 
179  if (hcalTPs.isValid()) {
180  for (auto itr : (*hcalTPs.product())) {
181  int ver = itr.id().version();
182  short ieta = (short)itr.id().ieta();
183  unsigned short absIeta = (unsigned short)abs(ieta);
184  // short sign = ieta/absIeta;
185 
186  unsigned short cal_iphi = (unsigned short)itr.id().iphi();
187  unsigned short iphi = (72 + 18 - cal_iphi) % 72;
188 
189  unsigned short compEt = itr.SOI_compressedEt();
190  double et = decoder->hcaletValue(itr.id(), itr.t0());
191 
192  unsigned short fineGrain = (unsigned short)itr.SOI_fineGrain();
193 
194  if (compEt > 0 && (absIeta < 29 || ver == 1)) {
195  caloTPData_->hcalTPieta.push_back(ieta);
196  caloTPData_->hcalTPCaliphi.push_back(cal_iphi);
197  caloTPData_->hcalTPiphi.push_back(iphi);
198  caloTPData_->hcalTPet.push_back(et);
199  caloTPData_->hcalTPcompEt.push_back(compEt);
200  caloTPData_->hcalTPfineGrain.push_back(fineGrain);
201  caloTPData_->nHCALTP++;
202  }
203  }
204 
205  } else {
206  edm::LogWarning("L1TNtuple") << "HCAL TPs not found, branch will not be filled";
207  }
208 
209  // do L1 towers
211 
213 
214  iEvent.getByToken(l1TowerToken_, l1Towers);
215 
216  if (l1Towers.isValid()) {
217  for (int ibx = l1Towers->getFirstBX(); ibx <= l1Towers->getLastBX(); ++ibx) {
218  for (auto itr = l1Towers->begin(ibx); itr != l1Towers->end(ibx); ++itr) {
219  if (itr->hwPt() <= 0)
220  continue;
221 
222  // l1CaloTowerData_->bx.push_back( ibx );
223  l1CaloTowerData_->et.push_back(itr->pt());
224  l1CaloTowerData_->eta.push_back(itr->eta());
225  l1CaloTowerData_->phi.push_back(itr->phi());
226  l1CaloTowerData_->iet.push_back(itr->hwPt());
227  l1CaloTowerData_->ieta.push_back(itr->hwEta());
228  l1CaloTowerData_->iphi.push_back(itr->hwPhi());
229  l1CaloTowerData_->iem.push_back(itr->hwEtEm());
230  l1CaloTowerData_->ihad.push_back(itr->hwEtHad());
231  l1CaloTowerData_->iratio.push_back(itr->hwEtRatio());
232  l1CaloTowerData_->iqual.push_back(itr->hwQual());
233 
235  }
236  }
237 
238  } else {
239  edm::LogWarning("L1TNtuple") << "L1 Calo Towerss not found, branch will not be filled";
240  }
241 
242  // do L1 clusters
243  if (storeCaloClusters_) {
245 
247 
249  iEvent.getByToken(l1ClusterToken_, l1Clusters);
250 
251  if (l1Clusters.isValid()) {
252  for (int ibx = l1Clusters->getFirstBX(); ibx <= l1Clusters->getLastBX(); ++ibx) {
253  for (auto itr = l1Clusters->begin(ibx); itr != l1Clusters->end(ibx); ++itr) {
254  if (itr->hwPt() <= 0)
255  continue;
256 
257  // l1CaloClusterData_->bx.push_back( ibx );
258  l1CaloClusterData_->et.push_back(itr->pt());
259  l1CaloClusterData_->eta.push_back(itr->eta());
260  l1CaloClusterData_->phi.push_back(itr->phi());
261  l1CaloClusterData_->iet.push_back(itr->hwPt());
262  l1CaloClusterData_->ieta.push_back(itr->hwEta());
263  l1CaloClusterData_->iphi.push_back(itr->hwPhi());
264  l1CaloClusterData_->iqual.push_back(itr->hwQual());
265 
267  }
268  }
269 
270  } else {
271  edm::LogWarning("L1TNtuple") << "L1 Calo Clusters not found, branch will not be filled";
272  }
273  }
274 
275  tree_->Fill();
276 }
const_iterator end(int bx) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
L1Analysis::L1AnalysisCaloTPDataFormat * caloTPData_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
edm::EDGetTokenT< HcalTrigPrimDigiCollection > hcalToken_
bool isValid() const
Definition: HandleBase.h:70
int getFirstBX() const
T const * product() const
Definition: Handle.h:69
edm::EDGetTokenT< l1t::CaloClusterBxCollection > l1ClusterToken_
L1Analysis::L1AnalysisL1CaloClusterDataFormat * l1CaloClusterData_
edm::EDGetTokenT< EcalTrigPrimDigiCollection > ecalToken_
edm::EDGetTokenT< l1t::CaloTowerBxCollection > l1TowerToken_
T get() const
Definition: EventSetup.h:73
int getLastBX() const
bool isUninitialized() const
Definition: EDGetToken.h:70
virtual double hcaletValue(const int &ieta, const int &iphi, const int &version, const int &compressedValue) const =0
L1Analysis::L1AnalysisL1CaloTowerDataFormat * l1CaloTowerData_
const_iterator begin(int bx) const
void L1CaloTowerTreeProducer::beginJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 279 of file L1CaloTowerTreeProducer.cc.

279 {}
void L1CaloTowerTreeProducer::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 282 of file L1CaloTowerTreeProducer.cc.

References DEFINE_FWK_MODULE.

282 {}

Member Data Documentation

L1Analysis::L1AnalysisCaloTPDataFormat* L1CaloTowerTreeProducer::caloTPData_

Definition at line 73 of file L1CaloTowerTreeProducer.cc.

Referenced by analyze(), and L1CaloTowerTreeProducer().

double L1CaloTowerTreeProducer::ecalLSB_
private

Definition at line 78 of file L1CaloTowerTreeProducer.cc.

Referenced by analyze(), and L1CaloTowerTreeProducer().

edm::EDGetTokenT<EcalTrigPrimDigiCollection> L1CaloTowerTreeProducer::ecalToken_
private

Definition at line 90 of file L1CaloTowerTreeProducer.cc.

Referenced by analyze(), and L1CaloTowerTreeProducer().

edm::Service<TFileService> L1CaloTowerTreeProducer::fs_
private

Definition at line 84 of file L1CaloTowerTreeProducer.cc.

Referenced by L1CaloTowerTreeProducer().

edm::EDGetTokenT<HcalTrigPrimDigiCollection> L1CaloTowerTreeProducer::hcalToken_
private

Definition at line 91 of file L1CaloTowerTreeProducer.cc.

Referenced by analyze(), and L1CaloTowerTreeProducer().

L1Analysis::L1AnalysisL1CaloClusterDataFormat* L1CaloTowerTreeProducer::l1CaloClusterData_

Definition at line 75 of file L1CaloTowerTreeProducer.cc.

Referenced by analyze(), and L1CaloTowerTreeProducer().

L1Analysis::L1AnalysisL1CaloTowerDataFormat* L1CaloTowerTreeProducer::l1CaloTowerData_

Definition at line 74 of file L1CaloTowerTreeProducer.cc.

Referenced by analyze(), and L1CaloTowerTreeProducer().

edm::EDGetTokenT<l1t::CaloClusterBxCollection> L1CaloTowerTreeProducer::l1ClusterToken_
private

Definition at line 93 of file L1CaloTowerTreeProducer.cc.

Referenced by analyze(), and L1CaloTowerTreeProducer().

edm::EDGetTokenT<l1t::CaloTowerBxCollection> L1CaloTowerTreeProducer::l1TowerToken_
private

Definition at line 92 of file L1CaloTowerTreeProducer.cc.

Referenced by analyze(), and L1CaloTowerTreeProducer().

unsigned L1CaloTowerTreeProducer::maxCaloTP_
private

Definition at line 79 of file L1CaloTowerTreeProducer.cc.

Referenced by L1CaloTowerTreeProducer().

unsigned L1CaloTowerTreeProducer::maxL1Cluster_
private

Definition at line 81 of file L1CaloTowerTreeProducer.cc.

Referenced by L1CaloTowerTreeProducer().

unsigned L1CaloTowerTreeProducer::maxL1Tower_
private

Definition at line 80 of file L1CaloTowerTreeProducer.cc.

Referenced by L1CaloTowerTreeProducer().

bool L1CaloTowerTreeProducer::storeCaloClusters_
private

Definition at line 95 of file L1CaloTowerTreeProducer.cc.

Referenced by analyze(), and L1CaloTowerTreeProducer().

TTree* L1CaloTowerTreeProducer::tree_
private

Definition at line 87 of file L1CaloTowerTreeProducer.cc.

Referenced by analyze(), and L1CaloTowerTreeProducer().