CMS 3D CMS Logo

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

#include <CSCTFPacker.h>

Inheritance diagram for CSCTFPacker:
edm::one::EDProducer<> edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 CSCTFPacker (const edm::ParameterSet &conf)
 
void produce (edm::Event &e, const edm::EventSetup &c) override
 
 ~CSCTFPacker (void) override
 
- Public Member Functions inherited from edm::one::EDProducer<>
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () 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 &&)=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 Attributes

unsigned short activeSectors
 
int central_lct_bx
 
int central_sp_bx
 
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollectionCSCCDC_Tok
 
edm::EDGetTokenT< CSCTriggerContainer< csctf::TrackStub > > CSCTC_Tok
 
FILE * file
 
edm::EDGetTokenT< L1CSCTrackCollectionL1CSCTr_Tok
 
edm::InputTag lctProducer
 
int m_maxBX
 
int m_minBX
 
edm::InputTag mbProducer
 
unsigned short nTBINs
 
bool putBufferToEvent
 
bool swapME1strips
 
edm::InputTag trackProducer
 
bool zeroSuppression
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase 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::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<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

Definition at line 18 of file CSCTFPacker.h.

Constructor & Destructor Documentation

◆ CSCTFPacker()

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

Definition at line 22 of file CSCTFPacker.cc.

23  // "Readout" configuration
24  zeroSuppression = conf.getParameter<bool>("zeroSuppression");
25  nTBINs = conf.getParameter<int>("nTBINs");
26  activeSectors = conf.getParameter<int>("activeSectors");
27 
28  // Configuration that controls CMSSW specific stuff
29  putBufferToEvent = conf.getParameter<bool>("putBufferToEvent");
30  std::string outputFile = conf.getParameter<std::string>("outputFile");
31  lctProducer = conf.getParameter<edm::InputTag>("lctProducer");
32  mbProducer = conf.getParameter<edm::InputTag>("mbProducer");
33  trackProducer = conf.getParameter<edm::InputTag>("trackProducer");
34 
35  // Swap: if(swapME1strips && me1b && !zplus) strip = 65 - strip; // 1-64 -> 64-1 :
36  swapME1strips = conf.getParameter<bool>("swapME1strips");
37 
38  file = nullptr;
39  if (outputFile.length() && (file = fopen(outputFile.c_str(), "wt")) == nullptr)
40  throw cms::Exception("OutputFile ") << "CSCTFPacker: cannot open output file (errno=" << errno
41  << "). Try outputFile=\"\"";
42 
43  // BX window bounds in CMSSW:
44  m_minBX = conf.getParameter<int>("MinBX"); //3
45  m_maxBX = conf.getParameter<int>("MaxBX"); //9
46 
47  // Finds central LCT BX
48  // assumes window is odd number of bins
49  central_lct_bx = (m_maxBX + m_minBX) / 2;
50  // Find central SP BX
51  // assumes window is odd number of bins
52  central_sp_bx = int(nTBINs / 2);
53 
54  produces<FEDRawDataCollection>("CSCTFRawData");
55 
56  CSCTC_Tok =
57  consumes<CSCTriggerContainer<csctf::TrackStub> >(edm::InputTag(mbProducer.label(), mbProducer.instance()));
58  CSCCDC_Tok = consumes<CSCCorrelatedLCTDigiCollection>(edm::InputTag(lctProducer.label(), lctProducer.instance()));
59  L1CSCTr_Tok = consumes<L1CSCTrackCollection>(edm::InputTag(trackProducer.label(), trackProducer.instance()));
60 }

References activeSectors, central_lct_bx, central_sp_bx, CSCCDC_Tok, CSCTC_Tok, file, edm::ParameterSet::getParameter(), HLT_2018_cff::InputTag, edm::InputTag::instance(), createfilelist::int, L1CSCTr_Tok, edm::InputTag::label(), lctProducer, m_maxBX, m_minBX, mbProducer, nTBINs, download_sqlite_cfg::outputFile, putBufferToEvent, AlCaHLTBitMon_QueryRunRegistry::string, swapME1strips, trackProducer, and zeroSuppression.

◆ ~CSCTFPacker()

CSCTFPacker::~CSCTFPacker ( void  )
override

Definition at line 62 of file CSCTFPacker.cc.

62  {
63  if (file)
64  fclose(file);
65 }

References file.

Member Function Documentation

◆ produce()

void CSCTFPacker::produce ( edm::Event e,
const edm::EventSetup c 
)
overridevirtual

std::cout<<"Front data station: "<<station<<" sector: "<<sector<<" subSector: "<<subSector<<" tbin: "<<tbin<<" cscId: "<<cscId<<" fpga: "<<fpga<<" LCT_qual="<<lct->getQuality()<<" LCT_strip="<<lct->getStrip()<<" LCT_wire="<<lct->getKeyWG()<<std::endl;

Implements edm::one::EDProducerBase.

Definition at line 67 of file CSCTFPacker.cc.

67  {
69  e.getByToken(CSCCDC_Tok, corrlcts);
70 
71  CSCSP_MEblock meDataRecord[12][7][5][9][2]; // LCT in sector X, tbin Y, station Z, csc W, and lct I
72  bzero(&meDataRecord, sizeof(meDataRecord));
73  CSCSPRecord meDataHeader[12][7]; // Data Block Header for sector X and tbin Y
74  bzero(&meDataHeader, sizeof(meDataHeader));
75 
77  csc != corrlcts.product()->end();
78  csc++) {
79  CSCCorrelatedLCTDigiCollection::Range range1 = corrlcts.product()->get((*csc).first);
80  int lctId = 0;
81  for (CSCCorrelatedLCTDigiCollection::const_iterator lct = range1.first; lct != range1.second; lct++, lctId++) {
82  int station = (*csc).first.station() - 1;
83  int cscId = (*csc).first.triggerCscId() - 1;
84  int sector = (*csc).first.triggerSector() - 1 + ((*csc).first.endcap() == 1 ? 0 : 6);
85  int subSector = CSCTriggerNumbering::triggerSubSectorFromLabels((*csc).first);
86  int tbin = lct->getBX() - (central_lct_bx - central_sp_bx); // Shift back to hardware BX window definition
87  if (tbin > 6 || tbin < 0) {
88  edm::LogError("CSCTFPacker|produce") << " LCT's BX=" << tbin << " is out of 0-6 window";
89  continue;
90  }
91  int fpga = (subSector ? subSector - 1 : station + 1);
93 
94  // If Det Id is within range
95  if (sector < 0 || sector > 11 || station < 0 || station > 3 || cscId < 0 || cscId > 8 || lctId < 0 || lctId > 1) {
96  edm::LogInfo("CSCTFPacker: CSC digi are out of range: ")
97  << "sector=" << sector << ", station=" << station << ", cscId=" << cscId << ", lctId=" << lctId;
98  continue;
99  }
100 
101  meDataRecord[sector][tbin][fpga][cscId][lctId].clct_pattern_number = lct->getPattern();
102  meDataRecord[sector][tbin][fpga][cscId][lctId].quality_ = lct->getQuality();
103  meDataRecord[sector][tbin][fpga][cscId][lctId].wire_group_id = lct->getKeyWG();
104 
105  meDataRecord[sector][tbin][fpga][cscId][lctId].clct_pattern_id =
106  (swapME1strips && cscId < 3 && station == 0 && (*csc).first.endcap() == 2 && lct->getStrip() < 65
107  ? 65 - lct->getStrip()
108  : lct->getStrip());
109  meDataRecord[sector][tbin][fpga][cscId][lctId].csc_id = (*csc).first.triggerCscId();
110  meDataRecord[sector][tbin][fpga][cscId][lctId].left_right = lct->getBend();
111  meDataRecord[sector][tbin][fpga][cscId][lctId].bx0_ = 0; //?;
112  meDataRecord[sector][tbin][fpga][cscId][lctId].bc0_ = 0; //?;
113 
114  meDataRecord[sector][tbin][fpga][cscId][lctId].me_bxn = 0; //?
115  meDataRecord[sector][tbin][fpga][cscId][lctId].receiver_status_er1 = 0; // dummy
116  meDataRecord[sector][tbin][fpga][cscId][lctId].receiver_status_dv1 = 0; // dummy
117  meDataRecord[sector][tbin][fpga][cscId][lctId].aligment_fifo_full = 0; // dummy
118 
119  meDataRecord[sector][tbin][fpga][cscId][lctId].link_id = lct->getMPCLink();
120  meDataRecord[sector][tbin][fpga][cscId][lctId].mpc_id = 0; // Join with above?
121  meDataRecord[sector][tbin][fpga][cscId][lctId].err_prop_cnt = 0; // dummy
122  meDataRecord[sector][tbin][fpga][cscId][lctId].receiver_status_er2 = 0; // dummy
123  meDataRecord[sector][tbin][fpga][cscId][lctId].receiver_status_dv2 = 0; // dummy
124  meDataRecord[sector][tbin][fpga][cscId][lctId].aligment_fifo_empty = 0; // dummy
125 
126  if (lct->isValid()) {
127  switch ((meDataHeader[sector][tbin].vp_bits >> (fpga * 3)) & 0x7) {
128  case 0x0:
129  meDataHeader[sector][tbin].vp_bits |= (0x1 << (fpga * 3));
130  break;
131  case 0x1:
132  meDataHeader[sector][tbin].vp_bits |= (0x3 << (fpga * 3));
133  break;
134  case 0x3:
135  meDataHeader[sector][tbin].vp_bits |= (0x7 << (fpga * 3));
136  break;
137  default:
138  edm::LogInfo("CSCTFPacker: more than 3 LCTs from a single MPC in one BX!!!");
139  continue;
140  break;
141  }
142  meDataRecord[sector][tbin][fpga][cscId][lctId].valid_pattern = 1; // for later use
143  }
144  meDataHeader[sector][tbin].vq_a = 0; // no digi yet?
145  meDataHeader[sector][tbin].vq_b = 0; // no digi yet?
146  meDataHeader[sector][tbin].se_bits = 0; // dummy
147  meDataHeader[sector][tbin].sm_bits = 0; // dummy
148  meDataHeader[sector][tbin].af_bits = 0; // dummy
149  meDataHeader[sector][tbin].bx_bits = 0; //(lct->getBX()&??<< (fpga*3));
150 
151  meDataHeader[sector][tbin].spare_1 = 0; // for later use
152  }
153  }
154 
155  CSCSP_MBblock mbDataRecord[12][2][7]; // LCT in sector X, subsector Z, tbin Y
156  bzero(&mbDataRecord, sizeof(mbDataRecord));
158  if (mbProducer.label() != "null") {
159  e.getByToken(CSCTC_Tok, barrelStubs);
160  if (barrelStubs.isValid()) {
161  std::vector<csctf::TrackStub> stubs = barrelStubs.product()->get();
162  for (std::vector<csctf::TrackStub>::const_iterator dt = stubs.begin(); dt != stubs.end(); dt++) {
163  int sector = dt->sector() - 1 + (dt->endcap() == 1 ? 0 : 6);
164  int subSector = dt->subsector() - 1;
165  int tbin = dt->getBX() - (central_lct_bx - central_sp_bx); // Shift back to hardware BX window definition
166  if (tbin < 0 || tbin > 6 || sector < 0 || sector > 11 || subSector < 0 || subSector > 11) {
167  edm::LogInfo("CSCTFPacker: CSC DT digi are out of range: ")
168  << " sector=" << sector << " subSector=" << subSector << " tbin=" << tbin;
169  continue;
170  }
171  mbDataRecord[sector][subSector][tbin].quality_ = dt->getQuality();
172  mbDataRecord[sector][subSector][tbin].phi_bend_ = dt->getBend();
173  mbDataRecord[sector][subSector][tbin].flag_ = dt->getStrip();
174  mbDataRecord[sector][subSector][tbin].cal_ = dt->getKeyWG();
175  mbDataRecord[sector][subSector][tbin].phi_ = dt->phiPacked();
176  mbDataRecord[sector][subSector][tbin].bxn1_ = (dt->getBX0() >> 1) & 0x1;
177  mbDataRecord[sector][subSector][tbin].bxn0_ = dt->getBX0() & 0x1;
178  mbDataRecord[sector][subSector][tbin].bc0_ = dt->getPattern();
179  mbDataRecord[sector][subSector][tbin].mb_bxn_ = dt->getCSCID();
180  switch (subSector) {
181  case 0:
182  meDataHeader[sector][tbin].vq_a = 1;
183  break;
184  case 1:
185  meDataHeader[sector][tbin].vq_b = 1;
186  break;
187  default:
188  edm::LogInfo("CSCTFPacker: subSector=") << subSector;
189  break;
190  }
191  mbDataRecord[sector][subSector][tbin].id_ = dt->getMPCLink(); // for later use
192  }
193  }
194  }
195 
196  CSCSP_SPblock spDataRecord[12][7][3]; // Up to 3 tracks in sector X and tbin Y
197  bzero(&spDataRecord, sizeof(spDataRecord));
198  int nTrk[12][7];
199  bzero(&nTrk, sizeof(nTrk));
200 
202  if (trackProducer.label() != "null") {
203  e.getByToken(L1CSCTr_Tok, tracks);
204 
205  for (L1CSCTrackCollection::const_iterator trk = tracks->begin(); trk != tracks->end(); trk++) {
206  int sector = 6 * (trk->first.endcap() - 1) + trk->first.sector() - 1;
207  int tbin = trk->first.BX() + central_sp_bx; // Shift back to hardware BX window definition
208  //std::cout<<"Track["<<nTrk[sector][tbin]<<"] sector: "<<sector<<" tbin: "<<tbin<<std::endl;
209  if (tbin > 6 || tbin < 0) {
210  edm::LogError("CSCTFPacker|analyze") << " Track's BX=" << tbin << " is out of 0-6 window";
211  continue;
212  }
213  if (sector < 0 || sector > 11) {
214  edm::LogError("CSCTFPacker|analyze") << " Track's sector=" << sector << " is out of range";
215  continue;
216  }
217  spDataRecord[sector][tbin][nTrk[sector][tbin]].phi_ = trk->first.localPhi();
218  spDataRecord[sector][tbin][nTrk[sector][tbin]].sign_ = (trk->first.ptLUTAddress() >> 20) & 0x1;
219  spDataRecord[sector][tbin][nTrk[sector][tbin]].front_rear = trk->first.front_rear();
220  spDataRecord[sector][tbin][nTrk[sector][tbin]].charge_ = trk->first.charge_packed(); //
221  spDataRecord[sector][tbin][nTrk[sector][tbin]].eta_ = trk->first.eta_packed();
222 
223  spDataRecord[sector][tbin][nTrk[sector][tbin]].halo_ = trk->first.finehalo_packed();
224  spDataRecord[sector][tbin][nTrk[sector][tbin]].se = 0; // dummy
225  spDataRecord[sector][tbin][nTrk[sector][tbin]].deltaPhi12_ = trk->first.ptLUTAddress() & 0xFF;
226  spDataRecord[sector][tbin][nTrk[sector][tbin]].deltaPhi23_ = (trk->first.ptLUTAddress() >> 8) & 0xF;
227  spDataRecord[sector][tbin][nTrk[sector][tbin]].bxn0_ = 0; //dummy
228  spDataRecord[sector][tbin][nTrk[sector][tbin]].bc0_ = 0; //dummy
229 
230  spDataRecord[sector][tbin][nTrk[sector][tbin]].me1_id = trk->first.me1ID();
231  spDataRecord[sector][tbin][nTrk[sector][tbin]].me2_id = trk->first.me2ID();
232  spDataRecord[sector][tbin][nTrk[sector][tbin]].me3_id = trk->first.me3ID();
233  spDataRecord[sector][tbin][nTrk[sector][tbin]].me4_id = trk->first.me4ID();
234  spDataRecord[sector][tbin][nTrk[sector][tbin]].mb_id = trk->first.mb1ID();
235  spDataRecord[sector][tbin][nTrk[sector][tbin]].ms_id = 0; // don't care winner()
236 
237  // Warning, digi copying was broken for <= CMSSW_3_8_x! The 5 lines of code below will give problems there:
238  spDataRecord[sector][tbin][nTrk[sector][tbin]].me1_tbin = trk->first.me1Tbin();
239  spDataRecord[sector][tbin][nTrk[sector][tbin]].me2_tbin = trk->first.me2Tbin();
240  spDataRecord[sector][tbin][nTrk[sector][tbin]].me3_tbin = trk->first.me3Tbin();
241  spDataRecord[sector][tbin][nTrk[sector][tbin]].me4_tbin = trk->first.me4Tbin();
242  spDataRecord[sector][tbin][nTrk[sector][tbin]].mb_tbin = trk->first.mb1Tbin();
243  // As the MB stubs are not saved in simulation, we want to introduce an artificial ids
244  if (trk->first.mb1ID()) {
245  int subSector = (trk->first.mb1ID() - 1) % 2;
246  int MBtbin = tbin - spDataRecord[sector][tbin][nTrk[sector][tbin]].mb_tbin;
247  if (subSector < 0 || subSector > 1 || MBtbin < 0 || MBtbin > 7 || !mbDataRecord[sector][subSector][MBtbin].id_)
248  spDataRecord[sector][tbin][nTrk[sector][tbin]].mb_id = (subSector ? 6 : 5);
249  }
250  spDataRecord[sector][tbin][nTrk[sector][tbin]].id_ = nTrk[sector][tbin] + 1; // for later use
251 
252  nTrk[sector][tbin]++;
253  switch (nTrk[sector][tbin]) {
254  case 1:
255  meDataHeader[sector][tbin].mode1 = (trk->first.ptLUTAddress() >> 16) & 0xF;
256  break;
257  case 2:
258  meDataHeader[sector][tbin].mode2 = (trk->first.ptLUTAddress() >> 16) & 0xF;
259  break;
260  case 3:
261  meDataHeader[sector][tbin].mode3 = (trk->first.ptLUTAddress() >> 16) & 0xF;
262  break;
263  default:
264  edm::LogInfo("More than 3 tracks from one SP in the BX");
265  continue;
266  break;
267  }
268  }
269  }
270 
272  bzero(&header, sizeof(header));
273 
274  header.header_mark_1 = 0x9;
275  header.header_mark_2 = 0x9;
276  header.header_mark_3 = 0x9;
277  header.header_mark_4 = 0x9;
278 
279  header.header_mark_5 = 0xA;
280  header.header_mark_6 = 0xA;
281  header.header_mark_7 = 0xA;
282  header.header_mark_8 = 0xA;
283 
284  header.csr_dfc = nTBINs;
285  header.csr_dfc |= (zeroSuppression ? 0x8 : 0x0);
286  header.csr_dfc |= 0x7F0; // All FPGAs are active
287  header.skip = 0;
288  header.sp_ersv = 2; // Format version with block of counters
289 
290  CSCSPCounters counters;
291  bzero(&counters, sizeof(counters));
292 
293  CSCSPTrailer trailer;
294  bzero(&trailer, sizeof(trailer));
295 
296  trailer.trailer_mark_1 = 0xF;
297  trailer.trailer_mark_2 = 0xF;
298  trailer.trailer_mark_3 = 0x7;
299  trailer.trailer_mark_4 = 0xF;
300  trailer.trailer_mark_5 = 0xF;
301  trailer.trailer_mark_6 = 0xF;
302  trailer.trailer_mark_7 = 0xE;
303  trailer.trailer_mark_8 = 0xE;
304  trailer.trailer_mark_9 = 0xE;
305  trailer.trailer_mark_10 = 0xE;
306 
307  unsigned short spDDUrecord[700 * 12], *pos = spDDUrecord; // max length
308  bzero(&spDDUrecord, sizeof(spDDUrecord));
309  int eventNumber = e.id().event();
310  *pos++ = 0x0000;
311  *pos++ = 0x0000;
312  *pos++ = 0xFFFF & eventNumber;
313  *pos++ = 0x5000 | (eventNumber >> 16);
314  *pos++ = 0x0000;
315  *pos++ = 0x8000;
316  *pos++ = 0x0001;
317  *pos++ = 0x8000;
318  *pos++ = 0x0000;
319  *pos++ = 0x0000;
320  *pos++ = 0x0000;
321  *pos++ = 0x0000;
322 
323  for (int sector = 0; sector < 12; sector++) {
324  if (!(activeSectors & (1 << sector)))
325  continue;
326  header.sp_trigger_sector = sector + 1;
327  memcpy(pos, &header, 16);
328  pos += 8;
329  memcpy(pos, &counters, 8);
330  pos += 4;
331 
332  for (int tbin = 0; tbin < nTBINs; tbin++) {
333  memcpy(pos, &meDataHeader[sector][tbin], 16);
334  pos += 8;
335  for (int fpga = 0; fpga < 5; fpga++) {
336  int nLCTs = 0;
337  for (int link = 0; link < 3; link++) {
338  for (int cscId = 0; cscId < 9; cscId++)
339  for (int lctId = 0; lctId < 2; lctId++)
340  // Only 3 LCT per BX from the same fpga are allowed (to be valid):
341  if (meDataRecord[sector][tbin][fpga][cscId][lctId].valid_pattern &&
342  meDataRecord[sector][tbin][fpga][cscId][lctId].link_id == link + 1) {
343  memcpy(pos, &meDataRecord[sector][tbin][fpga][cscId][lctId], 8);
344  pos += 4;
345  nLCTs++;
346  }
347  }
348  if (!zeroSuppression)
349  pos += 4 * (3 - nLCTs);
350  }
351  for (int subSector = 0; subSector < 2; subSector++)
352  if (!zeroSuppression || (subSector == 0 && meDataHeader[sector][tbin].vq_a) ||
353  (subSector == 1 && meDataHeader[sector][tbin].vq_b)) {
354  memcpy(pos, &mbDataRecord[sector][subSector][tbin], 8);
355  pos += 4;
356  }
357  for (int trk = 0; trk < 3; trk++) {
358  if (!zeroSuppression || spDataRecord[sector][tbin][trk].id_) {
359  memcpy(pos, &spDataRecord[sector][tbin][trk], 8);
360  pos += 4;
361  }
362  }
363  }
364  memcpy(pos, &trailer, 16);
365  pos += 8;
366  }
367 
368  *pos++ = 0x8000;
369  *pos++ = 0x8000;
370  *pos++ = 0xFFFF;
371  *pos++ = 0x8000;
372  *pos++ = 0x0000;
373  *pos++ = 0x0000;
374  *pos++ = 0x0000;
375  *pos++ = 0x0000;
376  *pos++ = 0x0000;
377  *pos++ = 0x0000;
378  *pos++ = 0x0000;
379  *pos++ = 0x0000;
380 
381  if (putBufferToEvent) {
382  auto data = std::make_unique<FEDRawDataCollection>();
383  FEDRawData& fedRawData = data->FEDData((unsigned int)FEDNumbering::MINCSCTFFEDID);
384  fedRawData.resize((pos - spDDUrecord) * sizeof(unsigned short));
385  std::copy((unsigned char*)spDDUrecord, (unsigned char*)pos, fedRawData.data());
386  FEDHeader csctfFEDHeader(fedRawData.data());
387  csctfFEDHeader.set(fedRawData.data(), 0, e.id().event(), 0, FEDNumbering::MINCSCTFFEDID);
388  FEDTrailer csctfFEDTrailer(fedRawData.data() + (fedRawData.size() - 8));
389  csctfFEDTrailer.set(fedRawData.data() + (fedRawData.size() - 8),
390  fedRawData.size() / 8,
391  evf::compute_crc(fedRawData.data(), fedRawData.size()),
392  0,
393  0);
394  e.put(std::move(data), "CSCTFRawData");
395  }
396 
397  if (file)
398  fwrite(spDDUrecord, 2, pos - spDDUrecord, file);
399 }

References activeSectors, CSCSPRecord::af_bits, CSCSP_MEblock::aligment_fifo_empty, CSCSP_MEblock::aligment_fifo_full, CSCSP_MEblock::bc0_, CSCSP_MBblock::bc0_, CSCSP_SPblock::bc0_, CSCSP_MEblock::bx0_, CSCSPRecord::bx_bits, CSCSP_MBblock::bxn0_, CSCSP_SPblock::bxn0_, CSCSP_MBblock::bxn1_, CSCSP_MBblock::cal_, central_lct_bx, central_sp_bx, CSCSP_SPblock::charge_, CSCSP_MEblock::clct_pattern_id, CSCSP_MEblock::clct_pattern_number, evf::compute_crc(), filterCSVwithJSON::copy, CSCSP_MEblock::csc_id, CSCCDC_Tok, CSCTC_Tok, data, CSCSP_SPblock::deltaPhi12_, CSCSP_SPblock::deltaPhi23_, dt, MillePedeFileConverter_cfg::e, CSCSP_MEblock::err_prop_cnt, CSCSP_SPblock::eta_, l1t_dqm_sourceclient-live_cfg::fedRawData, file, CSCSP_MBblock::flag_, CSCSP_SPblock::front_rear, CSCSP_SPblock::halo_, RecoTauValidation_cfi::header, CSCSP_MBblock::id_, CSCSP_SPblock::id_, edm::HandleBase::isValid(), L1CSCTr_Tok, edm::InputTag::label(), CSCSP_MEblock::left_right, MainPageGenerator::link, CSCSP_MEblock::link_id, CSCSP_MBblock::mb_bxn_, CSCSP_SPblock::mb_id, CSCSP_SPblock::mb_tbin, mbProducer, CSCSP_SPblock::me1_id, CSCSP_SPblock::me1_tbin, CSCSP_SPblock::me2_id, CSCSP_SPblock::me2_tbin, CSCSP_SPblock::me3_id, CSCSP_SPblock::me3_tbin, CSCSP_SPblock::me4_id, CSCSP_SPblock::me4_tbin, CSCSP_MEblock::me_bxn, FEDNumbering::MINCSCTFFEDID, CSCSPRecord::mode1, CSCSPRecord::mode2, CSCSPRecord::mode3, eostools::move(), CSCSP_MEblock::mpc_id, CSCSP_SPblock::ms_id, nTBINs, CSCSP_SPblock::phi_, CSCSP_MBblock::phi_, CSCSP_MBblock::phi_bend_, edm::Handle< T >::product(), putBufferToEvent, CSCSP_MBblock::quality_, CSCSP_MEblock::quality_, CSCSP_MEblock::receiver_status_dv1, CSCSP_MEblock::receiver_status_dv2, CSCSP_MEblock::receiver_status_er1, CSCSP_MEblock::receiver_status_er2, CSCSP_SPblock::se, CSCSPRecord::se_bits, FEDHeader::set(), FEDTrailer::set(), CSCSP_SPblock::sign_, CSCSPRecord::sm_bits, CSCSPRecord::spare_1, relativeConstraints::station, swapME1strips, trackProducer, PDWG_EXOHSCP_cff::tracks, CSCSPTrailer::trailer_mark_1, CSCSPTrailer::trailer_mark_10, CSCSPTrailer::trailer_mark_2, CSCSPTrailer::trailer_mark_3, CSCSPTrailer::trailer_mark_4, CSCSPTrailer::trailer_mark_5, CSCSPTrailer::trailer_mark_6, CSCSPTrailer::trailer_mark_7, CSCSPTrailer::trailer_mark_8, CSCSPTrailer::trailer_mark_9, CSCTriggerNumbering::triggerSubSectorFromLabels(), CSCSP_MEblock::valid_pattern, CSCSPRecord::vp_bits, CSCSPRecord::vq_a, CSCSPRecord::vq_b, CSCSP_MEblock::wire_group_id, testProducerWithPsetDescEmpty_cfi::x1, and zeroSuppression.

Member Data Documentation

◆ activeSectors

unsigned short CSCTFPacker::activeSectors
private

Definition at line 24 of file CSCTFPacker.h.

Referenced by CSCTFPacker(), and produce().

◆ central_lct_bx

int CSCTFPacker::central_lct_bx
private

Definition at line 31 of file CSCTFPacker.h.

Referenced by CSCTFPacker(), and produce().

◆ central_sp_bx

int CSCTFPacker::central_sp_bx
private

Definition at line 31 of file CSCTFPacker.h.

Referenced by CSCTFPacker(), and produce().

◆ CSCCDC_Tok

edm::EDGetTokenT<CSCCorrelatedLCTDigiCollection> CSCTFPacker::CSCCDC_Tok
private

Definition at line 33 of file CSCTFPacker.h.

Referenced by CSCTFPacker(), and produce().

◆ CSCTC_Tok

edm::EDGetTokenT<CSCTriggerContainer<csctf::TrackStub> > CSCTFPacker::CSCTC_Tok
private

Definition at line 34 of file CSCTFPacker.h.

Referenced by CSCTFPacker(), and produce().

◆ file

FILE* CSCTFPacker::file
private

◆ L1CSCTr_Tok

edm::EDGetTokenT<L1CSCTrackCollection> CSCTFPacker::L1CSCTr_Tok
private

Definition at line 35 of file CSCTFPacker.h.

Referenced by CSCTFPacker(), and produce().

◆ lctProducer

edm::InputTag CSCTFPacker::lctProducer
private

Definition at line 20 of file CSCTFPacker.h.

Referenced by CSCTFPacker().

◆ m_maxBX

int CSCTFPacker::m_maxBX
private

Definition at line 31 of file CSCTFPacker.h.

Referenced by CSCTFPacker().

◆ m_minBX

int CSCTFPacker::m_minBX
private

Definition at line 31 of file CSCTFPacker.h.

Referenced by CSCTFPacker().

◆ mbProducer

edm::InputTag CSCTFPacker::mbProducer
private

Definition at line 20 of file CSCTFPacker.h.

Referenced by CSCTFPacker(), and produce().

◆ nTBINs

unsigned short CSCTFPacker::nTBINs
private

Definition at line 23 of file CSCTFPacker.h.

Referenced by CSCTFPacker(), and produce().

◆ putBufferToEvent

bool CSCTFPacker::putBufferToEvent
private

Definition at line 25 of file CSCTFPacker.h.

Referenced by CSCTFPacker(), and produce().

◆ swapME1strips

bool CSCTFPacker::swapME1strips
private

Definition at line 27 of file CSCTFPacker.h.

Referenced by CSCTFPacker(), and produce().

◆ trackProducer

edm::InputTag CSCTFPacker::trackProducer
private

Definition at line 20 of file CSCTFPacker.h.

Referenced by CSCTFPacker(), and produce().

◆ zeroSuppression

bool CSCTFPacker::zeroSuppression
private

Definition at line 22 of file CSCTFPacker.h.

Referenced by CSCTFPacker(), and produce().

CSCSP_MBblock::mb_bxn_
unsigned mb_bxn_
Definition: CSCSP_MBblock.h:23
CSCSP_MBblock::bc0_
unsigned bc0_
Definition: CSCSP_MBblock.h:20
CSCSP_MBblock::cal_
unsigned cal_
Definition: CSCSP_MBblock.h:14
CSCSPRecord::sm_bits
unsigned sm_bits
Definition: CSCSPRecord.h:28
CSCSP_MEblock::aligment_fifo_empty
unsigned aligment_fifo_empty
Definition: CSCSP_MEblock.h:36
CSCSPTrailer::trailer_mark_6
unsigned trailer_mark_6
Definition: CSCSPTrailer.h:28
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
CSCSP_SPblock::ms_id
unsigned ms_id
Definition: CSCSP_SPblock.h:33
CSCTFPacker::nTBINs
unsigned short nTBINs
Definition: CSCTFPacker.h:23
edm::Handle::product
T const * product() const
Definition: Handle.h:70
CSCSP_MBblock
Definition: CSCSP_MBblock.h:6
MainPageGenerator.link
link
Definition: MainPageGenerator.py:271
edm::InputTag::instance
std::string const & instance() const
Definition: InputTag.h:37
filterCSVwithJSON.copy
copy
Definition: filterCSVwithJSON.py:36
CSCSPTrailer::trailer_mark_9
unsigned trailer_mark_9
Definition: CSCSPTrailer.h:39
CSCSP_SPblock::sign_
unsigned sign_
Definition: CSCSP_SPblock.h:12
CSCSPTrailer
Definition: CSCSPTrailer.h:6
CSCSPRecord::af_bits
unsigned af_bits
Definition: CSCSPRecord.h:31
CSCSP_SPblock::mb_id
unsigned mb_id
Definition: CSCSP_SPblock.h:32
CSCTFPacker::L1CSCTr_Tok
edm::EDGetTokenT< L1CSCTrackCollection > L1CSCTr_Tok
Definition: CSCTFPacker.h:35
relativeConstraints.station
station
Definition: relativeConstraints.py:67
CSCTFPacker::m_minBX
int m_minBX
Definition: CSCTFPacker.h:31
pos
Definition: PixelAliasList.h:18
edm::LogInfo
Definition: MessageLogger.h:254
CSCTriggerNumbering::triggerSubSectorFromLabels
static int triggerSubSectorFromLabels(int station, int chamber)
Definition: CSCTriggerNumbering.cc:105
CSCSP_SPblock::eta_
unsigned eta_
Definition: CSCSP_SPblock.h:15
CSCSP_MEblock::clct_pattern_id
unsigned clct_pattern_id
Definition: CSCSP_MEblock.h:16
edm::one::EDProducer<>
CSCSPTrailer::trailer_mark_1
unsigned trailer_mark_1
Definition: CSCSPTrailer.h:11
edm::Handle< CSCCorrelatedLCTDigiCollection >
CSCSP_MEblock::receiver_status_er1
unsigned receiver_status_er1
Definition: CSCSP_MEblock.h:24
MuonDigiCollection::const_iterator
std::vector< DigiType >::const_iterator const_iterator
Definition: MuonDigiCollection.h:94
FEDRawData
Definition: FEDRawData.h:19
dt
float dt
Definition: AMPTWrapper.h:136
CSCSP_SPblock::halo_
unsigned halo_
Definition: CSCSP_SPblock.h:16
edm::InputTag::label
std::string const & label() const
Definition: InputTag.h:36
CSCSP_MEblock::receiver_status_er2
unsigned receiver_status_er2
Definition: CSCSP_MEblock.h:33
csc
Definition: L1Track.h:19
CSCSP_SPblock::deltaPhi23_
unsigned deltaPhi23_
Definition: CSCSP_SPblock.h:22
testProducerWithPsetDescEmpty_cfi.x1
x1
Definition: testProducerWithPsetDescEmpty_cfi.py:33
download_sqlite_cfg.outputFile
outputFile
Definition: download_sqlite_cfg.py:5
l1t_dqm_sourceclient-live_cfg.fedRawData
fedRawData
Definition: l1t_dqm_sourceclient-live_cfg.py:188
CSCSPRecord::mode2
unsigned mode2
Definition: CSCSPRecord.h:17
CSCSP_SPblock::deltaPhi12_
unsigned deltaPhi12_
Definition: CSCSP_SPblock.h:21
CSCTFPacker::trackProducer
edm::InputTag trackProducer
Definition: CSCTFPacker.h:20
CSCSP_SPblock::front_rear
unsigned front_rear
Definition: CSCSP_SPblock.h:13
CSCSP_SPblock::me3_tbin
unsigned me3_tbin
Definition: CSCSP_SPblock.h:38
CSCSP_MEblock::mpc_id
unsigned mpc_id
Definition: CSCSP_MEblock.h:31
CSCSPTrailer::trailer_mark_8
unsigned trailer_mark_8
Definition: CSCSPTrailer.h:35
CSCSPRecord
Definition: CSCSPRecord.h:9
CSCSPTrailer::trailer_mark_3
unsigned trailer_mark_3
Definition: CSCSPTrailer.h:14
CSCSPTrailer::trailer_mark_7
unsigned trailer_mark_7
Definition: CSCSPTrailer.h:32
CSCSP_MBblock::phi_
unsigned phi_
Definition: CSCSP_MBblock.h:17
CSCSP_MEblock::me_bxn
unsigned me_bxn
Definition: CSCSP_MEblock.h:23
CSCSP_MEblock::bx0_
unsigned bx0_
Definition: CSCSP_MEblock.h:19
CSCSP_MEblock
Definition: CSCSP_MEblock.h:6
CSCSP_SPblock::se
unsigned se
Definition: CSCSP_SPblock.h:18
CSCSP_SPblock::charge_
unsigned charge_
Definition: CSCSP_SPblock.h:14
CSCSPHeader
Definition: CSCSPHeader.h:6
CSCSP_MBblock::phi_bend_
unsigned phi_bend_
Definition: CSCSP_MBblock.h:11
CSCTFPacker::CSCTC_Tok
edm::EDGetTokenT< CSCTriggerContainer< csctf::TrackStub > > CSCTC_Tok
Definition: CSCTFPacker.h:34
CSCSP_MBblock::bxn1_
unsigned bxn1_
Definition: CSCSP_MBblock.h:18
evf::compute_crc
unsigned short compute_crc(unsigned char *buffer, unsigned int bufSize)
Definition: CRC16.h:46
CSCSPTrailer::trailer_mark_5
unsigned trailer_mark_5
Definition: CSCSPTrailer.h:25
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
CSCSP_MEblock::clct_pattern_number
unsigned clct_pattern_number
Definition: CSCSP_MEblock.h:10
CSCSP_MBblock::bxn0_
unsigned bxn0_
Definition: CSCSP_MBblock.h:19
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
edm::LogError
Definition: MessageLogger.h:183
FEDTrailer
Definition: FEDTrailer.h:14
CSCSP_MEblock::aligment_fifo_full
unsigned aligment_fifo_full
Definition: CSCSP_MEblock.h:27
CSCSP_SPblock
Definition: CSCSP_SPblock.h:8
CSCSP_MEblock::quality_
unsigned quality_
Definition: CSCSP_MEblock.h:11
CSCSP_SPblock::me2_id
unsigned me2_id
Definition: CSCSP_SPblock.h:29
CSCSP_SPblock::me2_tbin
unsigned me2_tbin
Definition: CSCSP_SPblock.h:37
CSCTFPacker::putBufferToEvent
bool putBufferToEvent
Definition: CSCTFPacker.h:25
createfilelist.int
int
Definition: createfilelist.py:10
CSCSP_SPblock::bxn0_
unsigned bxn0_
Definition: CSCSP_SPblock.h:24
CSCSP_SPblock::phi_
unsigned phi_
Definition: CSCSP_SPblock.h:11
CSCSP_MEblock::wire_group_id
unsigned wire_group_id
Definition: CSCSP_MEblock.h:12
CSCSP_SPblock::me4_tbin
unsigned me4_tbin
Definition: CSCSP_SPblock.h:39
CSCSP_SPblock::id_
unsigned int id_
Definition: CSCSP_SPblock.h:57
CSCSPCounters
Definition: CSCSPCounters.h:6
CSCTFPacker::activeSectors
unsigned short activeSectors
Definition: CSCTFPacker.h:24
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
CSCSP_SPblock::bc0_
unsigned bc0_
Definition: CSCSP_SPblock.h:25
CSCSPRecord::mode3
unsigned mode3
Definition: CSCSPRecord.h:18
CSCSP_MEblock::valid_pattern
unsigned int valid_pattern
Definition: CSCSP_MEblock.h:52
eostools.move
def move(src, dest)
Definition: eostools.py:511
CSCTFPacker::lctProducer
edm::InputTag lctProducer
Definition: CSCTFPacker.h:20
CSCTFPacker::swapME1strips
bool swapME1strips
Definition: CSCTFPacker.h:27
CSCSP_SPblock::me4_id
unsigned me4_id
Definition: CSCSP_SPblock.h:31
CSCSP_SPblock::me3_id
unsigned me3_id
Definition: CSCSP_SPblock.h:30
CSCSP_MEblock::left_right
unsigned left_right
Definition: CSCSP_MEblock.h:18
CSCTFPacker::m_maxBX
int m_maxBX
Definition: CSCTFPacker.h:31
CSCSP_MBblock::quality_
unsigned quality_
Definition: CSCSP_MBblock.h:9
CSCSP_MEblock::csc_id
unsigned csc_id
Definition: CSCSP_MEblock.h:17
FEDHeader::set
static void set(unsigned char *header, uint8_t triggerType, uint32_t lvl1ID, uint16_t bxID, uint16_t sourceID, uint8_t version=0, bool moreHeaders=false)
Set all fields in the header.
Definition: FEDHeader.cc:25
CSCTFPacker::zeroSuppression
bool zeroSuppression
Definition: CSCTFPacker.h:22
CSCTFPacker::mbProducer
edm::InputTag mbProducer
Definition: CSCTFPacker.h:20
CSCTFPacker::central_sp_bx
int central_sp_bx
Definition: CSCTFPacker.h:31
CSCSPRecord::vp_bits
unsigned vp_bits
Definition: CSCSPRecord.h:13
MuonDigiCollection::Range
std::pair< const_iterator, const_iterator > Range
Definition: MuonDigiCollection.h:95
CSCSPRecord::se_bits
unsigned se_bits
Definition: CSCSPRecord.h:24
CSCSPRecord::mode1
unsigned mode1
Definition: CSCSPRecord.h:16
CSCTFPacker::file
FILE * file
Definition: CSCTFPacker.h:29
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
RecoTauValidation_cfi.header
header
Definition: RecoTauValidation_cfi.py:292
CSCSPRecord::bx_bits
unsigned bx_bits
Definition: CSCSPRecord.h:34
FEDNumbering::MINCSCTFFEDID
Definition: FEDNumbering.h:53
CSCSPTrailer::trailer_mark_2
unsigned trailer_mark_2
Definition: CSCSPTrailer.h:13
cms::Exception
Definition: Exception.h:70
CSCTFPacker::central_lct_bx
int central_lct_bx
Definition: CSCTFPacker.h:31
CSCTFPacker::CSCCDC_Tok
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollection > CSCCDC_Tok
Definition: CSCTFPacker.h:33
CSCSP_MBblock::flag_
unsigned flag_
Definition: CSCSP_MBblock.h:13
CSCSPTrailer::trailer_mark_10
unsigned trailer_mark_10
Definition: CSCSPTrailer.h:43
CSCSP_SPblock::me1_tbin
unsigned me1_tbin
Definition: CSCSP_SPblock.h:36
CSCSPTrailer::trailer_mark_4
unsigned trailer_mark_4
Definition: CSCSPTrailer.h:17
CSCSPRecord::vq_a
unsigned vq_a
Definition: CSCSPRecord.h:19
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
DigiContainerIterator
Definition: MuonDigiCollection.h:30
FEDHeader
Definition: FEDHeader.h:14
CSCSP_SPblock::me1_id
unsigned me1_id
Definition: CSCSP_SPblock.h:28
CSCSP_MEblock::receiver_status_dv2
unsigned receiver_status_dv2
Definition: CSCSP_MEblock.h:34
CSCSP_MEblock::link_id
unsigned link_id
Definition: CSCSP_MEblock.h:30
CSCSPRecord::vq_b
unsigned vq_b
Definition: CSCSPRecord.h:20
edm::InputTag
Definition: InputTag.h:15
CSCSP_MEblock::err_prop_cnt
unsigned err_prop_cnt
Definition: CSCSP_MEblock.h:32
CSCSPRecord::spare_1
unsigned spare_1
Definition: CSCSPRecord.h:21
CSCSP_MEblock::receiver_status_dv1
unsigned receiver_status_dv1
Definition: CSCSP_MEblock.h:25
CSCSP_MBblock::id_
unsigned int id_
Definition: CSCSP_MBblock.h:39
CSCSP_SPblock::mb_tbin
unsigned mb_tbin
Definition: CSCSP_SPblock.h:40
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
CSCSP_MEblock::bc0_
unsigned bc0_
Definition: CSCSP_MEblock.h:20