CMS 3D CMS Logo

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

#include <SourceCardTextToRctDigi.h>

Inheritance diagram for SourceCardTextToRctDigi:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 SourceCardTextToRctDigi (const edm::ParameterSet &)
 
 ~SourceCardTextToRctDigi () override
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducer () 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 &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
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
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
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)
 

Private Member Functions

void produce (edm::Event &, const edm::EventSetup &) override
 
void putEmptyDigi (edm::Event &)
 Create empty digi collection. More...
 

Private Attributes

std::ifstream m_file
 file handle More...
 
int m_fileEventOffset
 Number of events to skip at the start of the file. More...
 
int m_nevt
 Event counter. More...
 
SourceCardRouting m_scRouting
 source card router More...
 
std::string m_textFileName
 Name out input file. More...
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
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::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::ProducerBase
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
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)
 
template<Transition B>
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 (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (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)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Detailed Description

L1Trigger/TextToDigi/src/SourceCardTextToRctDigi.cc

Description: Input text file to be loaded into the source cards and output RCT digis for pattern tests.

L1Trigger/TextToDigi/src/SourceCardTextToRctDigi.h

Description: Input text file to be loaded into the source cards and output RCT digis for pattern tests.

Implementation: <Notes on="" implementation>="">

Definition at line 44 of file SourceCardTextToRctDigi.h.

Constructor & Destructor Documentation

◆ SourceCardTextToRctDigi()

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

Definition at line 30 of file SourceCardTextToRctDigi.cc.

31  : m_textFileName(iConfig.getParameter<std::string>("TextFileName")),
32  m_fileEventOffset(iConfig.getParameter<int>("fileEventOffset")),
33  m_nevt(0) {
34  // Produces collections
35  produces<L1CaloEmCollection>();
36  produces<L1CaloRegionCollection>();
37 
38  // Open the input file
39  m_file.open(m_textFileName.c_str(), std::ios::in);
40 
41  if (!m_file.good()) {
42  throw cms::Exception("SourceCardTextToRctDigiTextFileOpenError")
43  << "SourceCardTextToRctDigi::SourceCardTextToRctDigi : "
44  << " couldn't open the file " << m_textFileName << " for reading" << std::endl;
45  }
46 
47  // Make a SC routing object
49 }

References Exception, recoMuon::in, m_file, m_scRouting, and m_textFileName.

◆ ~SourceCardTextToRctDigi()

SourceCardTextToRctDigi::~SourceCardTextToRctDigi ( )
override

Definition at line 51 of file SourceCardTextToRctDigi.cc.

51  {
52  // Close the input file
53  m_file.close();
54 }

References m_file.

Member Function Documentation

◆ produce()

void SourceCardTextToRctDigi::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements edm::EDProducer.

Definition at line 75 of file SourceCardTextToRctDigi.cc.

75  {
76  // Skip event if required
77  if (m_nevt < m_fileEventOffset) {
78  // std::string tmp;
79  // for (unsigned i=0;i<NUM_LINES_PER_EVENT;i++){
80  // getline(m_file,tmp);
81  //}
83  m_nevt++;
84  return;
85  } else if (m_nevt == 0 && m_fileEventOffset < 0) {
86  // skip first fileEventOffset input events
88  for (int i = 0; i < abs(m_fileEventOffset); i++)
89  for (unsigned line = 0; line < NUM_LINES_PER_EVENT; line++)
90  if (!getline(m_file, tmp)) {
91  throw cms::Exception("SourceCardTextToRctDigiTextFileReadError")
92  << "SourceCardTextToRctDigi::produce() : "
93  << " couldn't read from the file " << m_textFileName << std::endl;
94  }
95  }
96 
97  // New collections
98  std::unique_ptr<L1CaloEmCollection> em(new L1CaloEmCollection);
99  std::unique_ptr<L1CaloRegionCollection> rgn(new L1CaloRegionCollection);
100 
101  // General variables
102  unsigned long VHDCI[2][2];
103  int routingMode;
104  int crate;
105  std::string dataString;
106  unsigned short eventNumber;
107  unsigned short logicalCardID;
108 
109  // Arrays to hold electron variables
110  unsigned short eIsoRank[18][4];
111  unsigned short eIsoCardId[18][4];
112  unsigned short eIsoRegionId[18][4];
113  unsigned short eNonIsoRank[18][4];
114  unsigned short eNonIsoCardId[18][4];
115  unsigned short eNonIsoRegionId[18][4];
116 
117  // Arrays to hold region variables
118  unsigned short RC[18][7][2];
119  unsigned short RCof[18][7][2];
120  unsigned short RCtau[18][7][2];
121  unsigned short MIPbits[18][7][2];
122  unsigned short Qbits[18][7][2];
123  unsigned short HF[18][4][2];
124  unsigned short HFQ[18][4][2];
125 
126  // Check we're not at the end of the file
127  if (m_file.eof()) {
128  throw cms::Exception("SourceCardTextToRctDigiTextFileReadError")
129  << "SourceCardTextToRctDigi::produce : "
130  << " unexpected end of file " << m_textFileName << std::endl;
131  }
132 
133  int thisEventNumber = -1;
134  // Read in file one line at a time
135  for (unsigned line = 0; line < NUM_LINES_PER_EVENT; line++) {
136  if (!getline(m_file, dataString)) {
137  throw cms::Exception("SourceCardTextToRctDigiTextFileReadError")
138  << "SourceCardTextToRctDigi::SourceCardTextToRctDigi : "
139  << " couldn't read from the file " << m_textFileName << std::endl;
140  }
141 
142  // Convert the string to useful info
143  m_scRouting.STRINGtoVHDCI(logicalCardID, eventNumber, dataString, VHDCI);
144 
145  // Check crossing number
146  if (line != 0)
147  assert(eventNumber == thisEventNumber);
148  thisEventNumber = eventNumber;
149 
150  // Are we looking at electrons or regions
151  m_scRouting.LogicalCardIDtoRoutingMode(logicalCardID, routingMode, crate);
152 
153  if (routingMode == 0) {
154  // Electrons
155  m_scRouting.VHDCItoEMU(eIsoRank[crate],
156  eIsoCardId[crate],
157  eIsoRegionId[crate],
158  eNonIsoRank[crate],
159  eNonIsoCardId[crate],
160  eNonIsoRegionId[crate],
161  MIPbits[crate],
162  Qbits[crate],
163  VHDCI);
164 
165  } else if (routingMode == 1) {
166  // Regions
167  m_scRouting.VHDCItoRC56HF(RC[crate], RCof[crate], RCtau[crate], HF[crate], HFQ[crate], VHDCI);
168 
169  } else if (routingMode == 2) {
170  // Regions
171  m_scRouting.VHDCItoRC012(RC[crate], RCof[crate], RCtau[crate], VHDCI);
172 
173  } else if (routingMode == 3) {
174  // Regions
176  RC[crate], RCof[crate], RCtau[crate], RC[crate + 9], RCof[crate + 9], RCtau[crate + 9], VHDCI);
177 
178  } else {
179  // Something went wrong
180  throw cms::Exception("SourceCardtextToRctDigiError") << "SourceCardTextToRctDigi::produce : "
181  << " unknown routing mode=" << routingMode << std::endl;
182  }
183  }
184 
185  // Make RCT digis
186  for (crate = 0; crate < NUM_RCT_CRATES; crate++) {
187  // Make EM collections
188  for (int i = 0; i < 4; i++) {
189  em->push_back(L1CaloEmCand(eIsoRank[crate][i], eIsoRegionId[crate][i], eIsoCardId[crate][i], crate, true, i, 0));
190  em->push_back(
191  L1CaloEmCand(eNonIsoRank[crate][i], eNonIsoRegionId[crate][i], eNonIsoCardId[crate][i], crate, false, i, 0));
192  }
193 
194  // Make region collections
195  for (int i = 0; i < 7; i++) { // Receiver card
196  for (int j = 0; j < 2; j++) { // Region
197  rgn->push_back(L1CaloRegion::makeHBHERegion(RC[crate][i][j],
198  RCof[crate][i][j],
199  RCtau[crate][i][j],
200  MIPbits[crate][i][j],
201  Qbits[crate][i][j],
202  crate,
203  i,
204  j));
205  }
206  }
207 
208  // Make HF region collections
209  for (int i = 0; i < 4; i++) { // Eta bin
210  for (int j = 0; j < 2; j++) { // HF0, HF1
211  rgn->push_back(L1CaloRegion::makeHFRegion(HF[crate][i][j],
212  HFQ[crate][i][j],
213  crate,
214  i + (4 * j))); // region=eta+4*phi for eta 0-3
215  }
216  }
217  }
218 
219  // Debug info
220  for (L1CaloEmCollection::const_iterator iem = em->begin(); iem != em->end(); iem++) {
221  LogDebug("Electrons") << (*iem);
222  }
223 
224  for (L1CaloRegionCollection::const_iterator irgn = rgn->begin(); irgn != rgn->end(); irgn++) {
225  LogDebug("HFRegions") << (*irgn);
226  }
227 
228  iEvent.put(std::move(em));
229  iEvent.put(std::move(rgn));
230 
231  m_nevt++;
232 }

References funct::abs(), cms::cuda::assert(), Exception, CaloTPGTranscoder_cfi::HF, mps_fire::i, iEvent, dqmiolumiharvest::j, mps_splice::line, LogDebug, SourceCardRouting::LogicalCardIDtoRoutingMode(), m_file, m_fileEventOffset, m_nevt, m_scRouting, m_textFileName, L1CaloRegion::makeHBHERegion(), L1CaloRegion::makeHFRegion(), eostools::move(), NUM_LINES_PER_EVENT, NUM_RCT_CRATES, putEmptyDigi(), AlCaHLTBitMon_QueryRunRegistry::string, SourceCardRouting::STRINGtoVHDCI(), createJobs::tmp, SourceCardRouting::VHDCItoEMU(), SourceCardRouting::VHDCItoRC012(), SourceCardRouting::VHDCItoRC234(), and SourceCardRouting::VHDCItoRC56HF().

◆ putEmptyDigi()

void SourceCardTextToRctDigi::putEmptyDigi ( edm::Event iEvent)
private

Create empty digi collection.

Append empty digi collection.

Definition at line 57 of file SourceCardTextToRctDigi.cc.

57  {
58  std::unique_ptr<L1CaloEmCollection> em(new L1CaloEmCollection);
59  std::unique_ptr<L1CaloRegionCollection> rgn(new L1CaloRegionCollection);
60  for (int i = 0; i < NUM_RCT_CRATES; i++) {
61  for (int j = 0; j < 4; j++) {
62  em->push_back(L1CaloEmCand(0, i, true));
63  em->push_back(L1CaloEmCand(0, i, false));
64  }
65  for (int j = 0; j < 14; j++)
66  rgn->push_back(L1CaloRegion(0, false, false, false, false, i, j / 2, j % 2));
67  for (unsigned j = 0; j < 8; j++)
68  rgn->push_back(L1CaloRegion(0, true, i, j));
69  }
70  iEvent.put(std::move(em));
71  iEvent.put(std::move(rgn));
72 }

References mps_fire::i, iEvent, dqmiolumiharvest::j, eostools::move(), and NUM_RCT_CRATES.

Referenced by produce().

Member Data Documentation

◆ m_file

std::ifstream SourceCardTextToRctDigi::m_file
private

file handle

Definition at line 65 of file SourceCardTextToRctDigi.h.

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

◆ m_fileEventOffset

int SourceCardTextToRctDigi::m_fileEventOffset
private

Number of events to skip at the start of the file.

Definition at line 59 of file SourceCardTextToRctDigi.h.

Referenced by produce().

◆ m_nevt

int SourceCardTextToRctDigi::m_nevt
private

Event counter.

Definition at line 62 of file SourceCardTextToRctDigi.h.

Referenced by produce().

◆ m_scRouting

SourceCardRouting SourceCardTextToRctDigi::m_scRouting
private

source card router

Definition at line 68 of file SourceCardTextToRctDigi.h.

Referenced by produce(), and SourceCardTextToRctDigi().

◆ m_textFileName

std::string SourceCardTextToRctDigi::m_textFileName
private

Name out input file.

Definition at line 56 of file SourceCardTextToRctDigi.h.

Referenced by produce(), and SourceCardTextToRctDigi().

mps_fire.i
i
Definition: mps_fire.py:355
L1CaloRegion
A calorimeter trigger region (sum of 4x4 trigger towers)
Definition: L1CaloRegion.h:21
SourceCardTextToRctDigi::m_textFileName
std::string m_textFileName
Name out input file.
Definition: SourceCardTextToRctDigi.h:56
SourceCardRouting::LogicalCardIDtoRoutingMode
void LogicalCardIDtoRoutingMode(unsigned short &logicalCardID, int &RoutingMode, int &RCTCrateNumber) const
Definition: SourceCardRouting.cc:739
SourceCardRouting::VHDCItoRC56HF
void VHDCItoRC56HF(unsigned short(&RC)[7][2], unsigned short(&RCof)[7][2], unsigned short(&RCtau)[7][2], unsigned short(&HF)[4][2], unsigned short(&HFQ)[4][2], unsigned long(&VHDCI)[2][2]) const
Definition: SourceCardRouting.cc:541
cms::cuda::assert
assert(be >=bs)
SourceCardTextToRctDigi::putEmptyDigi
void putEmptyDigi(edm::Event &)
Create empty digi collection.
Definition: SourceCardTextToRctDigi.cc:57
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
L1CaloRegion::makeHFRegion
static L1CaloRegion makeHFRegion(const unsigned et, const bool fineGrain, const unsigned crate, const unsigned rgn)
construct HF region from components
Definition: L1CaloRegion.cc:59
SourceCardRouting
Definition: SourceCardRouting.h:13
L1CaloEmCollection
std::vector< L1CaloEmCand > L1CaloEmCollection
Definition: L1CaloCollections.h:10
SourceCardRouting::VHDCItoRC012
void VHDCItoRC012(unsigned short(&RC)[7][2], unsigned short(&RCof)[7][2], unsigned short(&RCtau)[7][2], unsigned long(&VHDCI)[2][2]) const
Definition: SourceCardRouting.cc:569
NUM_RCT_CRATES
const static int NUM_RCT_CRATES
Definition: SourceCardTextToRctDigi.cc:28
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SourceCardRouting::STRINGtoVHDCI
void STRINGtoVHDCI(unsigned short &logicalCardID, unsigned short &eventNumber, std::string &dataString, unsigned long(&VHDCI)[2][2]) const
Definition: SourceCardRouting.cc:695
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
SourceCardTextToRctDigi::m_file
std::ifstream m_file
file handle
Definition: SourceCardTextToRctDigi.h:65
SourceCardTextToRctDigi::m_nevt
int m_nevt
Event counter.
Definition: SourceCardTextToRctDigi.h:62
recoMuon::in
Definition: RecoMuonEnumerators.h:6
iEvent
int iEvent
Definition: GenABIO.cc:224
SourceCardRouting::VHDCItoEMU
void VHDCItoEMU(unsigned short(&eIsoRank)[4], unsigned short(&eIsoCardId)[4], unsigned short(&eIsoRegionId)[4], unsigned short(&eNonIsoRank)[4], unsigned short(&eNonIsoCardId)[4], unsigned short(&eNonIsoRegionId)[4], unsigned short(&MIPbits)[7][2], unsigned short(&Qbits)[7][2], unsigned long(&VHDCI)[2][2]) const
Definition: SourceCardRouting.cc:506
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
SourceCardTextToRctDigi::m_scRouting
SourceCardRouting m_scRouting
source card router
Definition: SourceCardTextToRctDigi.h:68
L1CaloRegion::makeHBHERegion
static L1CaloRegion makeHBHERegion(const unsigned et, const bool overFlow, const bool tauVeto, const bool mip, const bool quiet, const unsigned crate, const unsigned card, const unsigned rgn)
constructor HB/HE region from components
Definition: L1CaloRegion.cc:49
eostools.move
def move(src, dest)
Definition: eostools.py:511
L1CaloRegionCollection
std::vector< L1CaloRegion > L1CaloRegionCollection
Definition: L1CaloCollections.h:11
Exception
Definition: hltDiff.cc:246
SourceCardTextToRctDigi::m_fileEventOffset
int m_fileEventOffset
Number of events to skip at the start of the file.
Definition: SourceCardTextToRctDigi.h:59
CaloTPGTranscoder_cfi.HF
HF
Definition: CaloTPGTranscoder_cfi.py:4
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
NUM_LINES_PER_EVENT
const static unsigned NUM_LINES_PER_EVENT
Definition: SourceCardTextToRctDigi.cc:27
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
L1CaloEmCand
Level-1 Region Calorimeter Trigger EM candidate.
Definition: L1CaloEmCand.h:17
mps_splice.line
line
Definition: mps_splice.py:76
SourceCardRouting::VHDCItoRC234
void VHDCItoRC234(unsigned short(&RC)[7][2], unsigned short(&RCof)[7][2], unsigned short(&RCtau)[7][2], unsigned short(&sisterRC)[7][2], unsigned short(&sisterRCof)[7][2], unsigned short(&sisterRCtau)[7][2], unsigned long(&VHDCI)[2][2]) const
Definition: SourceCardRouting.cc:598