CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
L1TCaloSummary Class Reference

#include <L1Trigger/L1TCaloSummary/plugins/L1TCaloSummary.cc>

Inheritance diagram for L1TCaloSummary:
edm::stream::EDProducer<>

Public Member Functions

 L1TCaloSummary (const edm::ParameterSet &)
 
 ~L1TCaloSummary () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Member Functions

void beginRun (edm::Run const &, edm::EventSetup const &) override
 
void print ()
 
void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

double boostedJetPtFactor
 
double caloScaleFactor
 
double eGammaIsolationFactor
 
uint32_t eGammaSeed
 
int fwVersion
 
uint32_t jetSeed
 
UCTLayer1 * layer1
 
uint32_t nPumBins
 
std::vector< std::vector
< std::vector< uint32_t > > > 
pumLUT
 
edm::EDGetTokenT
< L1CaloRegionCollection
regionToken
 
UCTSummaryCard * summaryCard
 
float tauIsolationFactor
 
uint32_t tauSeed
 
bool verbose
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T...>
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T...>
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Description: The package L1Trigger/L1TCaloSummary is prepared for monitoring the CMS Layer-1 Calorimeter Trigger.

Implementation: It prepares region objects and puts them in the event

Definition at line 68 of file L1TCaloSummary.cc.

Constructor & Destructor Documentation

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

Definition at line 119 of file L1TCaloSummary.cc.

References caloScaleFactor, eGammaIsolationFactor, eGammaSeed, edm::ParameterSet::getParameter(), jetSeed, SiStripPI::max, nPumBins, pumLUT, summaryCard, tauIsolationFactor, and tauSeed.

120  : nPumBins(iConfig.getParameter<unsigned int>("nPumBins")),
121  pumLUT(nPumBins, std::vector<std::vector<uint32_t>>(2, std::vector<uint32_t>(13))),
122  caloScaleFactor(iConfig.getParameter<double>("caloScaleFactor")),
123  jetSeed(iConfig.getParameter<unsigned int>("jetSeed")),
124  tauSeed(iConfig.getParameter<unsigned int>("tauSeed")),
125  tauIsolationFactor(iConfig.getParameter<double>("tauIsolationFactor")),
126  eGammaSeed(iConfig.getParameter<unsigned int>("eGammaSeed")),
127  eGammaIsolationFactor(iConfig.getParameter<double>("eGammaIsolationFactor")),
128  boostedJetPtFactor(iConfig.getParameter<double>("boostedJetPtFactor")),
129  verbose(iConfig.getParameter<bool>("verbose")),
130  fwVersion(iConfig.getParameter<int>("firmwareVersion")),
131  regionToken(consumes<L1CaloRegionCollection>(edm::InputTag("simCaloStage2Layer1Digis"))) {
132  std::vector<double> pumLUTData;
133  char pumLUTString[10];
134  for (uint32_t pumBin = 0; pumBin < nPumBins; pumBin++) {
135  for (uint32_t side = 0; side < 2; side++) {
136  if (side == 0)
137  sprintf(pumLUTString, "pumLUT%2.2dp", pumBin);
138  else
139  sprintf(pumLUTString, "pumLUT%2.2dn", pumBin);
140  pumLUTData = iConfig.getParameter<std::vector<double>>(pumLUTString);
141  for (uint32_t iEta = 0; iEta < std::max((uint32_t)pumLUTData.size(), MaxUCTRegionsEta); iEta++) {
142  pumLUT[pumBin][side][iEta] = (uint32_t)round(pumLUTData[iEta] / caloScaleFactor);
143  }
144  if (pumLUTData.size() != (MaxUCTRegionsEta))
145  edm::LogError("L1TCaloSummary") << "PUM LUT Data size integrity check failed; Expected size = "
146  << MaxUCTRegionsEta << "; Provided size = " << pumLUTData.size()
147  << "; Will use what is provided :(" << std::endl;
148  }
149  }
150  produces<L1JetParticleCollection>("Boosted");
152 }
double caloScaleFactor
uint32_t eGammaSeed
Log< level::Error, false > LogError
UCTSummaryCard * summaryCard
double eGammaIsolationFactor
float tauIsolationFactor
std::vector< std::vector< std::vector< uint32_t > > > pumLUT
double boostedJetPtFactor
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDGetTokenT< L1CaloRegionCollection > regionToken
L1TCaloSummary::~L1TCaloSummary ( )
override

Definition at line 154 of file L1TCaloSummary.cc.

References summaryCard.

154  {
155  if (summaryCard != nullptr)
156  delete summaryCard;
157 }
UCTSummaryCard * summaryCard

Member Function Documentation

void L1TCaloSummary::beginRun ( edm::Run const &  iRun,
edm::EventSetup const &  iSetup 
)
overrideprivate

Definition at line 257 of file L1TCaloSummary.cc.

257 {}
void L1TCaloSummary::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 284 of file L1TCaloSummary.cc.

References edm::ConfigurationDescriptions::addDefault(), submitPVResolutionJobs::desc, and edm::ParameterSetDescription::setUnknown().

284  {
285  //The following says we do not know what parameters are allowed so do no validation
286  // Please change this to state exactly what you do use, even if it is no parameters
288  desc.setUnknown();
289  descriptions.addDefault(desc);
290 }
void addDefault(ParameterSetDescription const &psetDescription)
void L1TCaloSummary::print ( void  )
private

Definition at line 247 of file L1TCaloSummary.cc.

247 {}
void L1TCaloSummary::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 164 of file L1TCaloSummary.cc.

References funct::abs(), boostedJetPtFactor, caloScaleFactor, PVValHelper::eta, beamvalidation::exit(), fwVersion, g, edm::Event::getByToken(), mps_fire::i, ResonanceBuilder::mass, eostools::move(), phi, DiDispStaMuonMonitor_cfi::pt, edm::Event::put(), alignCSCRings::r, HLT_FULL_cff::region, regionToken, summaryCard, submitPVValidationJobs::t, and ctpps_dqm_sourceclient-live_cfg::test.

164  {
165  using namespace edm;
166 
167  std::unique_ptr<L1JetParticleCollection> bJetCands(new L1JetParticleCollection);
168 
169  UCTGeometry g;
170 
171  // Here we read region data from the region collection created by L1TCaloLayer1 instead of
172  // independently creating regions from TPGs for processing by the summary card. This results
173  // in a single region vector of size 252 whereas from independent creation we had 3*6 vectors
174  // of size 7*2. Indices are mapped in UCTSummaryCard accordingly.
175  summaryCard->clearRegions();
176  std::vector<UCTRegion*> inputRegions;
177  inputRegions.clear();
178  edm::Handle<std::vector<L1CaloRegion>> regionCollection;
179  if (!iEvent.getByToken(regionToken, regionCollection))
180  edm::LogError("L1TCaloSummary") << "UCT: Failed to get regions from region collection!";
181  iEvent.getByToken(regionToken, regionCollection);
182  for (const L1CaloRegion& i : *regionCollection) {
183  UCTRegionIndex r = g.getUCTRegionIndexFromL1CaloRegion(i.gctEta(), i.gctPhi());
184  UCTTowerIndex t = g.getUCTTowerIndexFromL1CaloRegion(r, i.raw());
185  uint32_t absCaloEta = std::abs(t.first);
186  uint32_t absCaloPhi = std::abs(t.second);
187  bool negativeEta = false;
188  if (t.first < 0)
189  negativeEta = true;
190  uint32_t crate = g.getCrate(t.first, t.second);
191  uint32_t card = g.getCard(t.first, t.second);
192  uint32_t region = g.getRegion(absCaloEta, absCaloPhi);
193  UCTRegion* test = new UCTRegion(crate, card, negativeEta, region, fwVersion);
194  test->setRegionSummary(i.raw());
195  inputRegions.push_back(test);
196  }
197  summaryCard->setRegionData(inputRegions);
198 
199  if (!summaryCard->process()) {
200  edm::LogError("L1TCaloSummary") << "UCT: Failed to process summary card" << std::endl;
201  exit(1);
202  }
203 
204  double pt = 0;
205  double eta = -999.;
206  double phi = -999.;
207  double mass = 0;
208 
209  std::list<UCTObject*> boostedJetObjs = summaryCard->getBoostedJetObjs();
210  for (std::list<UCTObject*>::const_iterator i = boostedJetObjs.begin(); i != boostedJetObjs.end(); i++) {
211  const UCTObject* object = *i;
212  pt = ((double)object->et()) * caloScaleFactor * boostedJetPtFactor;
213  eta = g.getUCTTowerEta(object->iEta());
214  phi = g.getUCTTowerPhi(object->iPhi());
215  bitset<3> activeRegionEtaPattern = 0;
216  for (uint32_t iEta = 0; iEta < 3; iEta++) {
217  bool activeStrip = false;
218  for (uint32_t iPhi = 0; iPhi < 3; iPhi++) {
219  if (object->boostedJetRegionET()[3 * iEta + iPhi] > 30 &&
220  object->boostedJetRegionET()[3 * iEta + iPhi] > object->et() * 0.0625)
221  activeStrip = true;
222  }
223  if (activeStrip)
224  activeRegionEtaPattern |= (0x1 << iEta);
225  }
226  bitset<3> activeRegionPhiPattern = 0;
227  for (uint32_t iPhi = 0; iPhi < 3; iPhi++) {
228  bool activeStrip = false;
229  for (uint32_t iEta = 0; iEta < 3; iEta++) {
230  if (object->boostedJetRegionET()[3 * iEta + iPhi] > 30 &&
231  object->boostedJetRegionET()[3 * iEta + iPhi] > object->et() * 0.0625)
232  activeStrip = true;
233  }
234  if (activeStrip)
235  activeRegionPhiPattern |= (0x1 << iPhi);
236  }
237  string regionEta = activeRegionEtaPattern.to_string<char, std::string::traits_type, std::string::allocator_type>();
238  string regionPhi = activeRegionPhiPattern.to_string<char, std::string::traits_type, std::string::allocator_type>();
239  if (std::abs(eta) < 2.5 && (regionEta == "010" || regionPhi == "010" || regionEta == "110" || regionPhi == "110" ||
240  regionEta == "011" || regionPhi == "011"))
241  bJetCands->push_back(L1JetParticle(math::PtEtaPhiMLorentzVector(pt, eta, phi, mass), L1JetParticle::kCentral));
242  }
243 
244  iEvent.put(std::move(bJetCands), "Boosted");
245 }
double caloScaleFactor
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
Log< level::Error, false > LogError
UCTSummaryCard * summaryCard
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 g
Definition: Activities.doc:4
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
Definition: LorentzVector.h:25
def move
Definition: eostools.py:511
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double boostedJetPtFactor
A calorimeter trigger region (sum of 4x4 trigger towers)
Definition: L1CaloRegion.h:21
edm::EDGetTokenT< L1CaloRegionCollection > regionToken

Member Data Documentation

double L1TCaloSummary::boostedJetPtFactor
private

Definition at line 97 of file L1TCaloSummary.cc.

Referenced by produce().

double L1TCaloSummary::caloScaleFactor
private

Definition at line 90 of file L1TCaloSummary.cc.

Referenced by L1TCaloSummary(), and produce().

double L1TCaloSummary::eGammaIsolationFactor
private

Definition at line 96 of file L1TCaloSummary.cc.

Referenced by L1TCaloSummary().

uint32_t L1TCaloSummary::eGammaSeed
private

Definition at line 95 of file L1TCaloSummary.cc.

Referenced by L1TCaloSummary().

int L1TCaloSummary::fwVersion
private

Definition at line 100 of file L1TCaloSummary.cc.

Referenced by produce().

uint32_t L1TCaloSummary::jetSeed
private

Definition at line 92 of file L1TCaloSummary.cc.

Referenced by L1TCaloSummary().

UCTLayer1* L1TCaloSummary::layer1
private

Definition at line 104 of file L1TCaloSummary.cc.

uint32_t L1TCaloSummary::nPumBins
private

Definition at line 86 of file L1TCaloSummary.cc.

Referenced by L1TCaloSummary().

std::vector<std::vector<std::vector<uint32_t> > > L1TCaloSummary::pumLUT
private

Definition at line 88 of file L1TCaloSummary.cc.

Referenced by L1TCaloSummary().

edm::EDGetTokenT<L1CaloRegionCollection> L1TCaloSummary::regionToken
private

Definition at line 102 of file L1TCaloSummary.cc.

Referenced by produce().

UCTSummaryCard* L1TCaloSummary::summaryCard
private

Definition at line 105 of file L1TCaloSummary.cc.

Referenced by L1TCaloSummary(), produce(), and ~L1TCaloSummary().

float L1TCaloSummary::tauIsolationFactor
private

Definition at line 94 of file L1TCaloSummary.cc.

Referenced by L1TCaloSummary().

uint32_t L1TCaloSummary::tauSeed
private

Definition at line 93 of file L1TCaloSummary.cc.

Referenced by L1TCaloSummary().

bool L1TCaloSummary::verbose
private