CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
CSCTriggerPrimitivesProducer Class Reference
Inheritance diagram for CSCTriggerPrimitivesProducer:
edm::one::EDProducer<> edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 CSCTriggerPrimitivesProducer (const edm::ParameterSet &)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
 ~CSCTriggerPrimitivesProducer () override
 
- Public Member Functions inherited from edm::one::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
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
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) 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
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (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::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, 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
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Attributes

std::unique_ptr< CSCTriggerPrimitivesBuilderbuilder_
 
bool checkBadChambers_
 
edm::EDGetTokenT< CSCComparatorDigiCollectioncomp_token_
 
edm::InputTag compDigiProducer_
 
edm::ParameterSet config_
 
edm::ESGetToken< CSCDBL1TPParameters, CSCDBL1TPParametersRcdconfToken_
 
edm::ESGetToken< CSCGeometry, MuonGeometryRecordcscToken_
 
bool debugParameters_
 
edm::EDGetTokenT< GEMPadDigiClusterCollectiongem_pad_cluster_token_
 
edm::InputTag gemPadDigiClusterProducer_
 
edm::ESGetToken< GEMGeometry, MuonGeometryRecordgemToken_
 
bool keepALCTPreTriggers_
 
bool keepCLCTPreTriggers_
 
bool keepShowers_
 
edm::ESGetToken< CSCBadChambers, CSCBadChambersRcdpBadChambersToken_
 
edm::ESGetToken< CSCL1TPLookupTableCCLUT, CSCL1TPLookupTableCCLUTRcdpLookupTableCCLUTToken_
 
edm::ESGetToken< CSCL1TPLookupTableME11ILT, CSCL1TPLookupTableME11ILTRcdpLookupTableME11ILTToken_
 
edm::ESGetToken< CSCL1TPLookupTableME21ILT, CSCL1TPLookupTableME21ILTRcdpLookupTableME21ILTToken_
 
bool runCCLUT_
 
bool runCCLUT_OTMB_
 
bool runCCLUT_TMB_
 
bool runILT_
 
bool runME11ILT_
 
bool runME21ILT_
 
edm::EDGetTokenT< CSCWireDigiCollectionwire_token_
 
edm::InputTag wireDigiProducer_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
template<typename T >
using BranchAliasSetterT = ProductRegistryHelper::BranchAliasSetterT< T >
 
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::ProducerBase
template<Transition Tr = Transition::Event>
auto produces (std::string instanceName) noexcept
 declare what type of product will make and with which optional label More...
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
template<Transition Tr = Transition::Event>
auto produces () noexcept
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
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<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Implementation of the local Level-1 Cathode Strip Chamber trigger. Simulates functionalities of the anode and cathode Local Charged Tracks (LCT) processors, of the Trigger Mother Board (TMB), and of the Muon Port Card (MPC).

Input to the simulation are collections of the CSC wire and comparator digis.

Produces four collections of the Level-1 CSC Trigger Primitives (track stubs, or LCTs): anode LCTs (ALCTs), cathode LCTs (CLCTs), correlated LCTs at TMB, and correlated LCTs at MPC.

Author
Slava Valuev, UCLA.

The trigger primitive emulator has been expanded with options to use both ALCTs, CLCTs and GEM clusters. The GEM-CSC integrated local trigger combines ALCT, CLCT and GEM information to produce integrated stubs. The available stub types can be found in the class definition of CSCCorrelatedLCTDigi (DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigi.h)

authors: Sven Dildick (TAMU), Tao Huang (TAMU)

Definition at line 59 of file CSCTriggerPrimitivesProducer.cc.

Constructor & Destructor Documentation

◆ CSCTriggerPrimitivesProducer()

CSCTriggerPrimitivesProducer::CSCTriggerPrimitivesProducer ( const edm::ParameterSet conf)
explicit

Definition at line 114 of file CSCTriggerPrimitivesProducer.cc.

References builder_, checkBadChambers_, L1TStage2Emulator_cff::commonParam, comp_token_, compDigiProducer_, config_, confToken_, cscToken_, debugParameters_, gem_pad_cluster_token_, gemPadDigiClusterProducer_, gemToken_, edm::ParameterSet::getParameter(), keepALCTPreTriggers_, keepCLCTPreTriggers_, keepShowers_, or, pBadChambersToken_, pLookupTableCCLUTToken_, pLookupTableME11ILTToken_, pLookupTableME21ILTToken_, runCCLUT_, runCCLUT_OTMB_, runCCLUT_TMB_, runILT_, runME11ILT_, runME21ILT_, wire_token_, and wireDigiProducer_.

114  {
115  config_ = conf;
116 
117  // if false, parameters will be read in from DB using EventSetup mechanism
118  // else will use all parameters from the config file
119  debugParameters_ = conf.getParameter<bool>("debugParameters");
120 
121  wireDigiProducer_ = conf.getParameter<edm::InputTag>("CSCWireDigiProducer");
122  compDigiProducer_ = conf.getParameter<edm::InputTag>("CSCComparatorDigiProducer");
123  gemPadDigiClusterProducer_ = conf.getParameter<edm::InputTag>("GEMPadDigiClusterProducer");
124 
125  checkBadChambers_ = conf.getParameter<bool>("checkBadChambers");
126 
127  keepCLCTPreTriggers_ = conf.getParameter<bool>("keepCLCTPreTriggers");
128  keepALCTPreTriggers_ = conf.getParameter<bool>("keepALCTPreTriggers");
129  keepShowers_ = conf.getParameter<bool>("keepShowers");
130 
131  // check whether you need to run the integrated local triggers
132  const edm::ParameterSet commonParam(conf.getParameter<edm::ParameterSet>("commonParam"));
133  runCCLUT_TMB_ = commonParam.getParameter<bool>("runCCLUT_TMB");
134  runCCLUT_OTMB_ = commonParam.getParameter<bool>("runCCLUT_OTMB");
136 
137  runME11ILT_ = commonParam.getParameter<bool>("runME11ILT");
138  runME21ILT_ = commonParam.getParameter<bool>("runME21ILT");
140 
141  wire_token_ = consumes<CSCWireDigiCollection>(wireDigiProducer_);
142  comp_token_ = consumes<CSCComparatorDigiCollection>(compDigiProducer_);
143  if (runILT_)
144  gem_pad_cluster_token_ = consumes<GEMPadDigiClusterCollection>(gemPadDigiClusterProducer_);
145 
146  cscToken_ = esConsumes<CSCGeometry, MuonGeometryRecord>();
147  gemToken_ = esConsumes<GEMGeometry, MuonGeometryRecord>();
148  pBadChambersToken_ = esConsumes<CSCBadChambers, CSCBadChambersRcd>();
149  // consume lookup tables only when flags are set
150  if (runCCLUT_)
151  pLookupTableCCLUTToken_ = esConsumes<CSCL1TPLookupTableCCLUT, CSCL1TPLookupTableCCLUTRcd>();
152  if (runME11ILT_)
153  pLookupTableME11ILTToken_ = esConsumes<CSCL1TPLookupTableME11ILT, CSCL1TPLookupTableME11ILTRcd>();
154  if (runME21ILT_)
155  pLookupTableME21ILTToken_ = esConsumes<CSCL1TPLookupTableME21ILT, CSCL1TPLookupTableME21ILTRcd>();
156  confToken_ = esConsumes<CSCDBL1TPParameters, CSCDBL1TPParametersRcd>();
157 
158  // register what this produces
159  produces<CSCALCTDigiCollection>();
160  produces<CSCCLCTDigiCollection>();
161  produces<CSCCLCTPreTriggerCollection>();
162  if (keepCLCTPreTriggers_) {
163  produces<CSCCLCTPreTriggerDigiCollection>();
164  }
165  if (keepALCTPreTriggers_) {
166  produces<CSCALCTPreTriggerDigiCollection>();
167  }
168  produces<CSCCorrelatedLCTDigiCollection>();
169  produces<CSCCorrelatedLCTDigiCollection>("MPCSORTED");
170  if (keepShowers_) {
171  produces<CSCShowerDigiCollection>();
172  produces<CSCShowerDigiCollection>("Anode");
173  produces<CSCShowerDigiCollection>("Cathode");
174  }
175  if (runILT_) {
176  produces<GEMCoPadDigiCollection>();
177  }
178  // temporarily switch to a "one" module with a CSCTriggerPrimitivesBuilder data member
179  builder_ = std::make_unique<CSCTriggerPrimitivesBuilder>(config_);
180 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::ESGetToken< CSCGeometry, MuonGeometryRecord > cscToken_
edm::EDGetTokenT< GEMPadDigiClusterCollection > gem_pad_cluster_token_
edm::ESGetToken< CSCL1TPLookupTableME21ILT, CSCL1TPLookupTableME21ILTRcd > pLookupTableME21ILTToken_
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::ESGetToken< CSCDBL1TPParameters, CSCDBL1TPParametersRcd > confToken_
edm::EDGetTokenT< CSCComparatorDigiCollection > comp_token_
edm::ESGetToken< CSCL1TPLookupTableME11ILT, CSCL1TPLookupTableME11ILTRcd > pLookupTableME11ILTToken_
std::unique_ptr< CSCTriggerPrimitivesBuilder > builder_
edm::EDGetTokenT< CSCWireDigiCollection > wire_token_
edm::ESGetToken< CSCL1TPLookupTableCCLUT, CSCL1TPLookupTableCCLUTRcd > pLookupTableCCLUTToken_
edm::ESGetToken< CSCBadChambers, CSCBadChambersRcd > pBadChambersToken_
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > gemToken_

◆ ~CSCTriggerPrimitivesProducer()

CSCTriggerPrimitivesProducer::~CSCTriggerPrimitivesProducer ( )
override

Definition at line 182 of file CSCTriggerPrimitivesProducer.cc.

182 {}

Member Function Documentation

◆ produce()

void CSCTriggerPrimitivesProducer::produce ( edm::Event ev,
const edm::EventSetup setup 
)
overridevirtual

Implements edm::one::EDProducerBase.

Definition at line 184 of file CSCTriggerPrimitivesProducer.cc.

References builder_, checkBadChambers_, comp_token_, compDigiProducer_, confToken_, cscToken_, debugParameters_, makeMEIFBenchmarkPlots::ev, gem_pad_cluster_token_, gemPadDigiClusterProducer_, gemToken_, edm::ESHandleBase::isValid(), edm::HandleBase::isValid(), keepALCTPreTriggers_, keepCLCTPreTriggers_, keepShowers_, edm::InputTag::label(), eostools::move(), pBadChambersToken_, pLookupTableCCLUTToken_, pLookupTableME11ILTToken_, pLookupTableME21ILTToken_, edm::Handle< T >::product(), edm::ESHandle< T >::product(), runCCLUT_, runILT_, runME11ILT_, runME21ILT_, singleTopDQM_cfi::setup, groupFilesInBlocks::temp, wire_token_, and wireDigiProducer_.

184  {
185  // get the csc geometry
186  builder_->setCSCGeometry(&setup.getData(cscToken_));
187 
188  // get the gem geometry if it's there
189  edm::ESHandle<GEMGeometry> h_gem = setup.getHandle(gemToken_);
190  if (runILT_) {
191  if (h_gem.isValid()) {
192  builder_->setGEMGeometry(&*h_gem);
193  } else {
194  edm::LogWarning("CSCTriggerPrimitivesProducer|NoGEMGeometry")
195  << "GEM geometry is unavailable. Running CSC-only trigger algorithm. +++\n";
196  }
197  }
198 
199  // Find conditions data for bad chambers.
200  edm::ESHandle<CSCBadChambers> pBadChambers = setup.getHandle(pBadChambersToken_);
201 
202  if (runCCLUT_) {
204  if (conf.product() == nullptr) {
205  edm::LogError("CSCTriggerPrimitivesProducer")
206  << "Failed to find a CSCL1TPLookupTableCCLUTRcd in EventSetup with runCCLUT_ on";
207  return;
208  }
209  builder_->setESLookupTables(conf.product());
210  }
211 
212  if (runME11ILT_) {
214  if (conf.product() == nullptr) {
215  edm::LogError("CSCTriggerPrimitivesProducer")
216  << "Failed to find a CSCL1TPLookupTableME11ILTRcd in EventSetup with runME11ILT_ on";
217  return;
218  }
219  builder_->setESLookupTables(conf.product());
220  }
221 
222  if (runME21ILT_) {
224  if (conf.product() == nullptr) {
225  edm::LogError("CSCTriggerPrimitivesProducer")
226  << "Failed to find a CSCL1TPLookupTableME21ILTRcd in EventSetup with runME21ILT_ on";
227  return;
228  }
229  builder_->setESLookupTables(conf.product());
230  }
231 
232  // If !debugParameters then get config parameters using EventSetup mechanism.
233  // This must be done in produce() for every event and not in beginJob()
234  // (see mail from Jim Brooke sent to hn-cms-L1TrigEmulator on July 30, 2007).
235  if (!debugParameters_) {
237  if (conf.product() == nullptr) {
238  edm::LogError("CSCTriggerPrimitivesProducer|ConfigError")
239  << "+++ Failed to find a CSCDBL1TPParametersRcd in EventSetup! +++\n"
240  << "+++ Cannot continue emulation without these parameters +++\n";
241  return;
242  }
243  builder_->setConfigParameters(conf.product());
244  }
245 
246  // Get the collections of comparator & wire digis from event.
249  ev.getByToken(comp_token_, compDigis);
250  ev.getByToken(wire_token_, wireDigis);
251 
252  // input GEM pad cluster collection for upgrade scenarios
253  edm::Handle<GEMPadDigiClusterCollection> gemPadDigiClusters;
254  const GEMPadDigiClusterCollection* gemPadClusters = nullptr;
255 
256  // Create empty collections of ALCTs, CLCTs, and correlated LCTs upstream
257  // and downstream of MPC.
258  std::unique_ptr<CSCALCTDigiCollection> oc_alct(new CSCALCTDigiCollection);
259  std::unique_ptr<CSCCLCTDigiCollection> oc_clct(new CSCCLCTDigiCollection);
260  std::unique_ptr<CSCCLCTPreTriggerDigiCollection> oc_clctpretrigger(new CSCCLCTPreTriggerDigiCollection);
261  std::unique_ptr<CSCALCTPreTriggerDigiCollection> oc_alctpretrigger(new CSCALCTPreTriggerDigiCollection);
262  std::unique_ptr<CSCCLCTPreTriggerCollection> oc_pretrig(new CSCCLCTPreTriggerCollection);
263  std::unique_ptr<CSCCorrelatedLCTDigiCollection> oc_lct(new CSCCorrelatedLCTDigiCollection);
264  std::unique_ptr<CSCCorrelatedLCTDigiCollection> oc_sorted_lct(new CSCCorrelatedLCTDigiCollection);
265  std::unique_ptr<CSCShowerDigiCollection> oc_shower(new CSCShowerDigiCollection);
266  std::unique_ptr<CSCShowerDigiCollection> oc_shower_anode(new CSCShowerDigiCollection);
267  std::unique_ptr<CSCShowerDigiCollection> oc_shower_cathode(new CSCShowerDigiCollection);
268  std::unique_ptr<GEMCoPadDigiCollection> oc_gemcopad(new GEMCoPadDigiCollection);
269 
270  if (!wireDigis.isValid()) {
271  edm::LogWarning("CSCTriggerPrimitivesProducer|NoInputCollection")
272  << "+++ Warning: Collection of wire digis with label " << wireDigiProducer_.label()
273  << " requested in configuration, but not found in the event..."
274  << " Skipping production of CSC TP digis +++\n";
275  }
276  if (!compDigis.isValid()) {
277  edm::LogWarning("CSCTriggerPrimitivesProducer|NoInputCollection")
278  << "+++ Warning: Collection of comparator digis with label " << compDigiProducer_.label()
279  << " requested in configuration, but not found in the event..."
280  << " Skipping production of CSC TP digis +++\n";
281  }
282  // the GEM-CSC trigger flag is set, so GEM clusters are expected in the event data
283  if (runILT_) {
284  // no valid label, let the user know that GEM clusters are missing
285  // the algorithm should not crash. instead it should just produce the regular CSC LCTs
286  // in ME1/1 and/or ME2/1
287  ev.getByToken(gem_pad_cluster_token_, gemPadDigiClusters);
288  if (!gemPadDigiClusters.isValid()) {
289  edm::LogWarning("CSCTriggerPrimitivesProducer|NoInputCollection")
290  << "+++ Warning: Collection of GEM clusters with label " << gemPadDigiClusterProducer_.label()
291  << " requested in configuration, but not found in the event..."
292  << " Running CSC-only trigger algorithm +++\n";
293  } else {
294  // when the GEM-CSC trigger should be run and the label is not empty, set a valid pointer
295  gemPadClusters = gemPadDigiClusters.product();
296  }
297  }
298 
299  // Fill output collections if valid input collections are available.
300  if (wireDigis.isValid() && compDigis.isValid()) {
301  const CSCBadChambers* temp = checkBadChambers_ ? pBadChambers.product() : new CSCBadChambers;
302  builder_->build(temp,
303  wireDigis.product(),
304  compDigis.product(),
305  gemPadClusters,
306  *oc_alct,
307  *oc_clct,
308  *oc_alctpretrigger,
309  *oc_clctpretrigger,
310  *oc_pretrig,
311  *oc_lct,
312  *oc_sorted_lct,
313  *oc_shower_anode,
314  *oc_shower_cathode,
315  *oc_shower,
316  *oc_gemcopad);
317  if (!checkBadChambers_)
318  delete temp;
319  }
320 
321  // Put collections in event.
322  ev.put(std::move(oc_alct));
323  ev.put(std::move(oc_clct));
324  if (keepALCTPreTriggers_) {
325  ev.put(std::move(oc_alctpretrigger));
326  }
327  if (keepCLCTPreTriggers_) {
328  ev.put(std::move(oc_clctpretrigger));
329  }
330  ev.put(std::move(oc_pretrig));
331  ev.put(std::move(oc_lct));
332  ev.put(std::move(oc_sorted_lct), "MPCSORTED");
333  if (keepShowers_) {
334  ev.put(std::move(oc_shower));
335  ev.put(std::move(oc_shower_anode), "Anode");
336  ev.put(std::move(oc_shower_cathode), "Cathode");
337  }
338  // only put GEM copad collections in the event when the
339  // integrated local triggers are running
340  if (runILT_)
341  ev.put(std::move(oc_gemcopad));
342 }
T const * product() const
Definition: Handle.h:70
std::string const & label() const
Definition: InputTag.h:36
Log< level::Error, false > LogError
edm::ESGetToken< CSCGeometry, MuonGeometryRecord > cscToken_
edm::EDGetTokenT< GEMPadDigiClusterCollection > gem_pad_cluster_token_
T const * product() const
Definition: ESHandle.h:86
edm::ESGetToken< CSCL1TPLookupTableME21ILT, CSCL1TPLookupTableME21ILTRcd > pLookupTableME21ILTToken_
edm::ESGetToken< CSCDBL1TPParameters, CSCDBL1TPParametersRcd > confToken_
edm::EDGetTokenT< CSCComparatorDigiCollection > comp_token_
bool isValid() const
Definition: ESHandle.h:44
edm::ESGetToken< CSCL1TPLookupTableME11ILT, CSCL1TPLookupTableME11ILTRcd > pLookupTableME11ILTToken_
bool isValid() const
Definition: HandleBase.h:70
std::unique_ptr< CSCTriggerPrimitivesBuilder > builder_
edm::EDGetTokenT< CSCWireDigiCollection > wire_token_
edm::ESGetToken< CSCL1TPLookupTableCCLUT, CSCL1TPLookupTableCCLUTRcd > pLookupTableCCLUTToken_
Log< level::Warning, false > LogWarning
edm::ESGetToken< CSCBadChambers, CSCBadChambersRcd > pBadChambersToken_
def move(src, dest)
Definition: eostools.py:511
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > gemToken_
A container for a generic type of digis indexed by some index, implemented with a map<IndexType...

Member Data Documentation

◆ builder_

std::unique_ptr<CSCTriggerPrimitivesBuilder> CSCTriggerPrimitivesProducer::builder_
private

Definition at line 71 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ checkBadChambers_

bool CSCTriggerPrimitivesProducer::checkBadChambers_
private

Definition at line 93 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ comp_token_

edm::EDGetTokenT<CSCComparatorDigiCollection> CSCTriggerPrimitivesProducer::comp_token_
private

Definition at line 79 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ compDigiProducer_

edm::InputTag CSCTriggerPrimitivesProducer::compDigiProducer_
private

Definition at line 74 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ config_

edm::ParameterSet CSCTriggerPrimitivesProducer::config_
private

Definition at line 68 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer().

◆ confToken_

edm::ESGetToken<CSCDBL1TPParameters, CSCDBL1TPParametersRcd> CSCTriggerPrimitivesProducer::confToken_
private

Definition at line 88 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ cscToken_

edm::ESGetToken<CSCGeometry, MuonGeometryRecord> CSCTriggerPrimitivesProducer::cscToken_
private

Definition at line 82 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ debugParameters_

bool CSCTriggerPrimitivesProducer::debugParameters_
private

Definition at line 90 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ gem_pad_cluster_token_

edm::EDGetTokenT<GEMPadDigiClusterCollection> CSCTriggerPrimitivesProducer::gem_pad_cluster_token_
private

Definition at line 81 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ gemPadDigiClusterProducer_

edm::InputTag CSCTriggerPrimitivesProducer::gemPadDigiClusterProducer_
private

Definition at line 76 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ gemToken_

edm::ESGetToken<GEMGeometry, MuonGeometryRecord> CSCTriggerPrimitivesProducer::gemToken_
private

Definition at line 83 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ keepALCTPreTriggers_

bool CSCTriggerPrimitivesProducer::keepALCTPreTriggers_
private

Definition at line 97 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ keepCLCTPreTriggers_

bool CSCTriggerPrimitivesProducer::keepCLCTPreTriggers_
private

Definition at line 96 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ keepShowers_

bool CSCTriggerPrimitivesProducer::keepShowers_
private

Definition at line 100 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ pBadChambersToken_

edm::ESGetToken<CSCBadChambers, CSCBadChambersRcd> CSCTriggerPrimitivesProducer::pBadChambersToken_
private

Definition at line 84 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ pLookupTableCCLUTToken_

edm::ESGetToken<CSCL1TPLookupTableCCLUT, CSCL1TPLookupTableCCLUTRcd> CSCTriggerPrimitivesProducer::pLookupTableCCLUTToken_
private

Definition at line 85 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ pLookupTableME11ILTToken_

edm::ESGetToken<CSCL1TPLookupTableME11ILT, CSCL1TPLookupTableME11ILTRcd> CSCTriggerPrimitivesProducer::pLookupTableME11ILTToken_
private

Definition at line 86 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ pLookupTableME21ILTToken_

edm::ESGetToken<CSCL1TPLookupTableME21ILT, CSCL1TPLookupTableME21ILTRcd> CSCTriggerPrimitivesProducer::pLookupTableME21ILTToken_
private

Definition at line 87 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ runCCLUT_

bool CSCTriggerPrimitivesProducer::runCCLUT_
private

Definition at line 103 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ runCCLUT_OTMB_

bool CSCTriggerPrimitivesProducer::runCCLUT_OTMB_
private

Definition at line 105 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer().

◆ runCCLUT_TMB_

bool CSCTriggerPrimitivesProducer::runCCLUT_TMB_
private

Definition at line 104 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer().

◆ runILT_

bool CSCTriggerPrimitivesProducer::runILT_
private

Definition at line 107 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ runME11ILT_

bool CSCTriggerPrimitivesProducer::runME11ILT_
private

Definition at line 108 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ runME21ILT_

bool CSCTriggerPrimitivesProducer::runME21ILT_
private

Definition at line 109 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ wire_token_

edm::EDGetTokenT<CSCWireDigiCollection> CSCTriggerPrimitivesProducer::wire_token_
private

Definition at line 80 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().

◆ wireDigiProducer_

edm::InputTag CSCTriggerPrimitivesProducer::wireDigiProducer_
private

Definition at line 75 of file CSCTriggerPrimitivesProducer.cc.

Referenced by CSCTriggerPrimitivesProducer(), and produce().