File indexing completed on 2024-09-10 02:59:10
0001
0002 #include <vector>
0003
0004
0005 #include "FWCore/Framework/interface/Frameworkfwd.h"
0006 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0007 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0008 #include "FWCore/Utilities/interface/EDGetToken.h"
0009 #include "FWCore/Utilities/interface/InputTag.h"
0010 #include "DataFormats/Common/interface/Handle.h"
0011 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0012
0013 #include "FWCore/Framework/interface/Event.h"
0014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0015
0016 #include "DataFormats/Common/interface/DetSetVector.h"
0017
0018 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"
0019
0020 #include "DataFormats/HcalDigi/interface/HcalDigiCollections.h"
0021
0022 #include "DataFormats/SiStripDigi/interface/SiStripDigi.h"
0023
0024 #include "DataFormats/SiPixelDigi/interface/PixelDigi.h"
0025
0026 #include "DataFormats/DTDigi/interface/DTDigiCollection.h"
0027
0028 #include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h"
0029
0030 #include "DataFormats/CSCDigi/interface/CSCWireDigiCollection.h"
0031
0032 #include "DataFormats/RPCDigi/interface/RPCDigiCollection.h"
0033
0034 #include "DataFormats/FTLDigi/interface/FTLDigiCollections.h"
0035
0036 #include "FWCore/Framework/interface/MakerMacros.h"
0037
0038 class SimDigiDumper : public edm::one::EDAnalyzer<> {
0039 public:
0040 explicit SimDigiDumper(const edm::ParameterSet&);
0041 virtual ~SimDigiDumper() {}
0042
0043 virtual void analyze(const edm::Event&, const edm::EventSetup&);
0044 virtual void beginJob() {}
0045 virtual void endJob() {}
0046
0047 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0048
0049 private:
0050 edm::EDGetTokenT<EBDigiCollection> ECalEBSrc_;
0051 edm::EDGetTokenT<EEDigiCollection> ECalEESrc_;
0052 edm::EDGetTokenT<ESDigiCollection> ECalESSrc_;
0053
0054 edm::EDGetTokenT<HBHEDigiCollection> HCalSrc_;
0055 edm::EDGetTokenT<HODigiCollection> HCalHOSrc_;
0056 edm::EDGetTokenT<HFDigiCollection> HCalHFSrc_;
0057
0058 edm::EDGetTokenT<ZDCDigiCollection> ZdcSrc_;
0059
0060 edm::EDGetTokenT<edm::DetSetVector<SiStripDigi> > SiStripSrc_;
0061
0062 edm::EDGetTokenT<edm::DetSetVector<PixelDigi> > SiPxlSrc_;
0063
0064 edm::EDGetTokenT<DTDigiCollection> MuDTSrc_;
0065
0066 edm::EDGetTokenT<CSCStripDigiCollection> MuCSCStripSrc_;
0067
0068 edm::EDGetTokenT<CSCWireDigiCollection> MuCSCWireSrc_;
0069
0070 edm::EDGetTokenT<RPCDigiCollection> MuRPCSrc_;
0071
0072 edm::EDGetTokenT<BTLDigiCollection> BTLSrc_;
0073 edm::EDGetTokenT<ETLDigiCollection> ETLSrc_;
0074
0075 static const int sdSiTIB = 3;
0076 static const int sdSiTID = 4;
0077 static const int sdSiTOB = 5;
0078 static const int sdSiTEC = 6;
0079 static const int sdPxlBrl = 1;
0080 static const int sdPxlFwd = 2;
0081 };
0082
0083 SimDigiDumper::SimDigiDumper(const edm::ParameterSet& iPSet) {
0084
0085 ECalEBSrc_ = consumes<EBDigiCollection>(iPSet.getParameter<edm::InputTag>("ECalEBSrc"));
0086 ECalEESrc_ = consumes<EEDigiCollection>(iPSet.getParameter<edm::InputTag>("ECalEESrc"));
0087 ECalESSrc_ = consumes<ESDigiCollection>(iPSet.getParameter<edm::InputTag>("ECalESSrc"));
0088 HCalSrc_ = consumes<HBHEDigiCollection>(iPSet.getParameter<edm::InputTag>("HCalSrc"));
0089 HCalHOSrc_ = consumes<HODigiCollection>(iPSet.getParameter<edm::InputTag>("HCalSrc"));
0090 HCalHFSrc_ = consumes<HFDigiCollection>(iPSet.getParameter<edm::InputTag>("HCalSrc"));
0091 ZdcSrc_ = consumes<ZDCDigiCollection>(iPSet.getParameter<edm::InputTag>("ZdcSrc"));
0092 SiStripSrc_ = consumes<edm::DetSetVector<SiStripDigi> >(iPSet.getParameter<edm::InputTag>("SiStripSrc"));
0093 SiPxlSrc_ = consumes<edm::DetSetVector<PixelDigi> >(iPSet.getParameter<edm::InputTag>("SiPxlSrc"));
0094 MuDTSrc_ = consumes<DTDigiCollection>(iPSet.getParameter<edm::InputTag>("MuDTSrc"));
0095 MuCSCStripSrc_ = consumes<CSCStripDigiCollection>(iPSet.getParameter<edm::InputTag>("MuCSCStripSrc"));
0096 MuCSCWireSrc_ = consumes<CSCWireDigiCollection>(iPSet.getParameter<edm::InputTag>("MuCSCWireSrc"));
0097 MuRPCSrc_ = consumes<RPCDigiCollection>(iPSet.getParameter<edm::InputTag>("MuRPCSrc"));
0098 BTLSrc_ = consumes<BTLDigiCollection>(iPSet.getParameter<edm::InputTag>("BTLSrc"));
0099 ETLSrc_ = consumes<ETLDigiCollection>(iPSet.getParameter<edm::InputTag>("ETLSrc"));
0100 }
0101
0102
0103
0104
0105
0106
0107 void SimDigiDumper::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0108 using namespace edm;
0109
0110
0111
0112 bool isBarrel = true;
0113 const EBDigiCollection* EBdigis = 0;
0114 auto EcalDigiEB = iEvent.getHandle(ECalEBSrc_);
0115 if (!EcalDigiEB.isValid()) {
0116 edm::LogPrint("SimDigiDumper") << "Unable to find EcalDigiEB in event!";
0117 } else {
0118 EBdigis = EcalDigiEB.product();
0119 if (EcalDigiEB->size() == 0)
0120 isBarrel = false;
0121 edm::LogPrint("SimDigiDumper") << "Ecal Barrel, digi multiplicity = " << EcalDigiEB->size();
0122
0123 if (isBarrel) {
0124
0125 for (unsigned int digis = 0; digis < EcalDigiEB->size(); ++digis) {
0126 EBDataFrame ebdf = (*EBdigis)[digis];
0127 edm::LogPrint("SimDigiDumper") << ebdf;
0128 }
0129 }
0130 }
0131
0132
0133 bool isEndcap = true;
0134 const EEDigiCollection* EEdigis = 0;
0135 auto EcalDigiEE = iEvent.getHandle(ECalEESrc_);
0136 if (!EcalDigiEE.isValid()) {
0137 edm::LogPrint("SimDigiDumper") << "Unable to find EcalDigiEE in event!";
0138 } else {
0139 EEdigis = EcalDigiEE.product();
0140 if (EcalDigiEE->size() == 0)
0141 isEndcap = false;
0142 edm::LogPrint("SimDigiDumper") << "Ecal Endcap, digi multiplicity = " << EcalDigiEE->size();
0143
0144 if (isEndcap) {
0145
0146 for (unsigned int digis = 0; digis < EcalDigiEE->size(); ++digis) {
0147 EEDataFrame eedf = (*EEdigis)[digis];
0148 edm::LogPrint("SimDigiDumper") << eedf;
0149 }
0150 }
0151 }
0152
0153
0154 bool isPreshower = true;
0155 const ESDigiCollection* ESdigis = 0;
0156 auto EcalDigiES = iEvent.getHandle(ECalESSrc_);
0157 if (!EcalDigiES.isValid()) {
0158 edm::LogPrint("SimDigiDumper") << "Unable to find EcalDigiES in event!";
0159 } else {
0160 ESdigis = EcalDigiES.product();
0161 if (EcalDigiES->size() == 0)
0162 isPreshower = false;
0163 edm::LogPrint("SimDigiDumper") << "Ecal Preshower, digi multiplicity = " << EcalDigiES->size();
0164
0165 if (isPreshower) {
0166
0167 for (unsigned int digis = 0; digis < EcalDigiES->size(); ++digis) {
0168 ESDataFrame esdf = (*ESdigis)[digis];
0169 edm::LogPrint("SimDigiDumper") << esdf;
0170 }
0171 }
0172 }
0173
0174
0175 bool isHBHE = true;
0176 const HBHEDigiCollection* HBHEdigis = 0;
0177 auto hbhe = iEvent.getHandle(HCalSrc_);
0178 if (!hbhe.isValid()) {
0179 edm::LogPrint("SimDigiDumper") << "Unable to find HBHEDataFrame in event!";
0180 } else {
0181 HBHEdigis = hbhe.product();
0182 if (hbhe->size() == 0)
0183 isHBHE = false;
0184 edm::LogPrint("SimDigiDumper") << "HBHE, digi multiplicity = " << hbhe->size();
0185
0186 if (isHBHE) {
0187
0188 for (unsigned int digis = 0; digis < hbhe->size(); ++digis) {
0189 HBHEDataFrame hehbdf = (*HBHEdigis)[digis];
0190 edm::LogPrint("SimDigiDumper") << hehbdf;
0191
0192
0193
0194
0195 }
0196 }
0197 }
0198
0199
0200 bool isHO = true;
0201 const HODigiCollection* HOdigis = 0;
0202 auto ho = iEvent.getHandle(HCalHOSrc_);
0203 if (!ho.isValid()) {
0204 edm::LogPrint("SimDigiDumper") << "Unable to find HODataFrame in event!";
0205 } else {
0206 HOdigis = ho.product();
0207 if (ho->size() == 0)
0208 isHO = false;
0209 edm::LogPrint("SimDigiDumper") << "HO, digi multiplicity = " << ho->size();
0210
0211 if (isHO) {
0212
0213 for (unsigned int digis = 0; digis < ho->size(); ++digis) {
0214 HODataFrame hodf = (*HOdigis)[digis];
0215 edm::LogPrint("SimDigiDumper") << hodf;
0216 }
0217 }
0218 }
0219
0220
0221 bool isHF = true;
0222 const HFDigiCollection* HFdigis = 0;
0223 auto hf = iEvent.getHandle(HCalHFSrc_);
0224 if (!hf.isValid()) {
0225 edm::LogPrint("SimDigiDumper") << "Unable to find HFDataFrame in event!";
0226 } else {
0227 HFdigis = hf.product();
0228 if (hf->size() == 0)
0229 isHF = false;
0230 edm::LogPrint("SimDigiDumper") << "HF, digi multiplicity = " << hf->size();
0231
0232 if (isHF) {
0233
0234 for (unsigned int digis = 0; digis < hf->size(); ++digis) {
0235 HFDataFrame hodf = (*HFdigis)[digis];
0236 edm::LogPrint("SimDigiDumper") << hodf;
0237 }
0238 }
0239 }
0240
0241
0242 bool isZDC = true;
0243 const ZDCDigiCollection* ZDCdigis = 0;
0244 auto zdc = iEvent.getHandle(ZdcSrc_);
0245 if (!zdc.isValid()) {
0246 edm::LogPrint("SimDigiDumper") << "Unable to find ZDCDataFrame in event!";
0247 } else {
0248 ZDCdigis = zdc.product();
0249 if (zdc->size() == 0)
0250 isZDC = false;
0251 edm::LogPrint("SimDigiDumper") << "ZDC, digi multiplicity = " << zdc->size();
0252
0253 if (isZDC) {
0254
0255 for (unsigned int digis = 0; digis < zdc->size(); ++digis) {
0256 ZDCDataFrame hodf = (*ZDCdigis)[digis];
0257 edm::LogPrint("SimDigiDumper") << hodf;
0258 }
0259 }
0260 }
0261
0262
0263 bool isStrip = true;
0264 auto stripDigis = iEvent.getHandle(SiStripSrc_);
0265 if (!stripDigis.isValid()) {
0266 edm::LogPrint("SimDigiDumper") << "Unable to find stripDigis in event!";
0267 } else {
0268 if (stripDigis->size() == 0)
0269 isStrip = false;
0270 edm::LogPrint("SimDigiDumper") << "Strip Tracker, digi multiplicity = " << stripDigis->size();
0271 if (isStrip) {
0272 edm::DetSetVector<SiStripDigi>::const_iterator DSViter;
0273 for (DSViter = stripDigis->begin(); DSViter != stripDigis->end(); ++DSViter) {
0274 edm::DetSet<SiStripDigi>::const_iterator begin = DSViter->data.begin();
0275 edm::DetSet<SiStripDigi>::const_iterator end = DSViter->data.end();
0276 edm::DetSet<SiStripDigi>::const_iterator iter;
0277 unsigned int id = DSViter->id;
0278 DetId detId(id);
0279
0280 if (detId.subdetId() == sdSiTIB) {
0281 edm::LogPrint("SimDigiDumper") << "TIB " << DSViter->data.size();
0282 } else if (detId.subdetId() == sdSiTOB) {
0283 edm::LogPrint("SimDigiDumper") << "TOB " << DSViter->data.size();
0284 } else if (detId.subdetId() == sdSiTID) {
0285 edm::LogPrint("SimDigiDumper") << "TID " << DSViter->data.size();
0286 }
0287 if (detId.subdetId() == sdSiTEC) {
0288 edm::LogPrint("SimDigiDumper") << "TEC " << DSViter->data.size();
0289 }
0290 for (iter = begin; iter != end; ++iter) {
0291 edm::LogPrint("SimDigiDumper") << (*iter);
0292 }
0293 }
0294 }
0295 }
0296
0297
0298 bool isPixel = true;
0299 auto pixelDigis = iEvent.getHandle(SiPxlSrc_);
0300 if (!pixelDigis.isValid()) {
0301 edm::LogPrint("SimDigiDumper") << "Unable to find pixelDigis in event!";
0302 } else {
0303 if (pixelDigis->size() == 0)
0304 isPixel = false;
0305 edm::LogPrint("SimDigiDumper") << "Pixel Tracker, digi multiplicity = " << pixelDigis->size();
0306
0307 if (isPixel) {
0308 edm::DetSetVector<PixelDigi>::const_iterator DSViter;
0309 for (DSViter = pixelDigis->begin(); DSViter != pixelDigis->end(); ++DSViter) {
0310 edm::DetSet<PixelDigi>::const_iterator begin = DSViter->data.begin();
0311 edm::DetSet<PixelDigi>::const_iterator end = DSViter->data.end();
0312 edm::DetSet<PixelDigi>::const_iterator iter;
0313 unsigned int id = DSViter->id;
0314 DetId detId(id);
0315
0316 if (detId.subdetId() == sdPxlBrl) {
0317 edm::LogPrint("SimDigiDumper") << "Pixel barrel " << DSViter->data.size();
0318 } else if (detId.subdetId() == sdPxlFwd) {
0319 edm::LogPrint("SimDigiDumper") << "Pixel forward " << DSViter->data.size();
0320 }
0321 for (iter = begin; iter != end; ++iter) {
0322 edm::LogPrint("SimDigiDumper") << (*iter);
0323 }
0324 }
0325 }
0326 }
0327
0328
0329 bool isDT = true;
0330 auto dtDigis = iEvent.getHandle(MuDTSrc_);
0331 if (!dtDigis.isValid()) {
0332 edm::LogPrint("SimDigiDumper") << "Unable to find dtDigis in event!";
0333 }
0334 unsigned int nDT = 0;
0335 if (dtDigis->begin() == dtDigis->end()) {
0336 isDT = false;
0337 edm::LogPrint("SimDigiDumper") << "dtDigis seem empty!";
0338 }
0339 if (isDT) {
0340 DTDigiCollection::DigiRangeIterator dtLayerIt;
0341 for (dtLayerIt = dtDigis->begin(); dtLayerIt != dtDigis->end(); ++dtLayerIt) {
0342 const DTDigiCollection::Range& range = (*dtLayerIt).second;
0343 edm::LogPrint("SimDigiDumper") << "DT layer = " << (*dtLayerIt).first << " digi ";
0344 for (DTDigiCollection::const_iterator digiIt = range.first; digiIt != range.second; ++digiIt) {
0345 edm::LogPrint("SimDigiDumper") << (*digiIt);
0346 nDT++;
0347 }
0348 }
0349 }
0350 edm::LogPrint("SimDigiDumper") << "DT, digi multiplicity = " << nDT;
0351
0352
0353 bool isCSCStrip = true;
0354 auto cscStripDigis = iEvent.getHandle(MuCSCStripSrc_);
0355 if (!cscStripDigis.isValid()) {
0356 edm::LogPrint("SimDigiDumper") << "Unable to find cscStripDigis in event!";
0357 }
0358 if (cscStripDigis->begin() == cscStripDigis->end())
0359 isCSCStrip = false;
0360 unsigned int nCSCStrip = 0;
0361
0362 if (isCSCStrip) {
0363 CSCStripDigiCollection::DigiRangeIterator detUnitIt;
0364 for (detUnitIt = cscStripDigis->begin(); detUnitIt != cscStripDigis->end(); ++detUnitIt) {
0365 const CSCStripDigiCollection::Range& range = (*detUnitIt).second;
0366 edm::LogPrint("SimDigiDumper") << "CSC detid = " << (*detUnitIt).first << " digi ";
0367 for (CSCStripDigiCollection::const_iterator digiIt = range.first; digiIt != range.second; ++digiIt) {
0368 edm::LogPrint("SimDigiDumper") << (*digiIt);
0369 nCSCStrip++;
0370 }
0371 }
0372 }
0373 edm::LogPrint("SimDigiDumper") << "CSC strip, digi multiplicity = " << nCSCStrip;
0374
0375
0376 bool isCSCWire = true;
0377 auto cscWireDigis = iEvent.getHandle(MuCSCWireSrc_);
0378 if (!cscWireDigis.isValid()) {
0379 edm::LogPrint("SimDigiDumper") << "Unable to find cscWireDigis in event!";
0380 }
0381 if (cscWireDigis->begin() == cscWireDigis->end())
0382 isCSCWire = false;
0383 unsigned int nCSCWire = 0;
0384
0385 if (isCSCWire) {
0386 CSCWireDigiCollection::DigiRangeIterator detUnitIt;
0387 for (detUnitIt = cscWireDigis->begin(); detUnitIt != cscWireDigis->end(); ++detUnitIt) {
0388 const CSCWireDigiCollection::Range& range = (*detUnitIt).second;
0389 edm::LogPrint("SimDigiDumper") << "CSC detid = " << (*detUnitIt).first << " digi ";
0390 for (CSCWireDigiCollection::const_iterator digiIt = range.first; digiIt != range.second; ++digiIt) {
0391 edm::LogPrint("SimDigiDumper") << (*digiIt);
0392 nCSCWire++;
0393 }
0394 }
0395 }
0396 edm::LogPrint("SimDigiDumper") << "CSC wire, digi multiplicity = " << nCSCWire;
0397
0398
0399 bool isRPC = true;
0400 auto rpcDigis = iEvent.getHandle(MuRPCSrc_);
0401 if (!rpcDigis.isValid()) {
0402 edm::LogPrint("SimDigiDumper") << "Unable to find rpcDigis in event!";
0403 }
0404 if (rpcDigis->begin() == rpcDigis->end())
0405 isRPC = false;
0406 unsigned int nRPC = 0;
0407
0408 if (isRPC) {
0409 RPCDigiCollection::DigiRangeIterator detUnitIt;
0410 for (detUnitIt = rpcDigis->begin(); detUnitIt != rpcDigis->end(); ++detUnitIt) {
0411 const RPCDigiCollection::Range& range = (*detUnitIt).second;
0412 edm::LogPrint("SimDigiDumper") << "RPC detid = " << (*detUnitIt).first << " digi ";
0413 for (RPCDigiCollection::const_iterator digiIt = range.first; digiIt != range.second; ++digiIt) {
0414 edm::LogPrint("SimDigiDumper") << (*digiIt);
0415 nRPC++;
0416 }
0417 }
0418 }
0419 edm::LogPrint("SimDigiDumper") << "RPC, digi multiplicity = " << nRPC;
0420
0421
0422 bool isBTL = true;
0423 const BTLDigiCollection* BTLdigis = 0;
0424 auto BTLDigi = iEvent.getHandle(BTLSrc_);
0425 if (!BTLDigi.isValid()) {
0426 edm::LogPrint("SimDigiDumper") << "Unable to find BTLDigi in event!";
0427 } else {
0428 BTLdigis = BTLDigi.product();
0429 if (BTLDigi->size() == 0)
0430 isBTL = false;
0431 edm::LogPrint("SimDigiDumper") << "Barrel Timing Layer, digi multiplicity = " << BTLDigi->size();
0432
0433 if (isBTL) {
0434
0435 for (unsigned int digis = 0; digis < BTLDigi->size(); ++digis) {
0436 BTLDataFrame btldf = (*BTLdigis)[digis];
0437 edm::LogPrint("SimDigiDumper") << btldf.id().rawId();
0438 btldf.print();
0439 }
0440 }
0441 }
0442
0443
0444 bool isETL = true;
0445 const ETLDigiCollection* ETLdigis = 0;
0446 auto ETLDigi = iEvent.getHandle(ETLSrc_);
0447 if (!ETLDigi.isValid()) {
0448 edm::LogPrint("SimDigiDumper") << "Unable to find ETLDigi in event!";
0449 } else {
0450 ETLdigis = ETLDigi.product();
0451 if (ETLDigi->size() == 0)
0452 isETL = false;
0453 edm::LogPrint("SimDigiDumper") << "Endcap Timing Layer, digi multiplicity = " << ETLDigi->size();
0454
0455 if (isETL) {
0456
0457 for (unsigned int digis = 0; digis < ETLDigi->size(); ++digis) {
0458 ETLDataFrame etldf = (*ETLdigis)[digis];
0459 edm::LogPrint("SimDigiDumper") << etldf.id().rawId();
0460 etldf.print();
0461 }
0462 }
0463 }
0464
0465 return;
0466 }
0467
0468 void SimDigiDumper::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0469 edm::ParameterSetDescription desc;
0470 desc.add<edm::InputTag>("ECalEBSrc", edm::InputTag("simEcalDigis", "ebDigis"))->setComment("ECAL barrel digis");
0471 desc.add<edm::InputTag>("ECalEESrc", edm::InputTag("simEcalDigis", "eeDigis"))->setComment("ECAL endcap digis");
0472 desc.add<edm::InputTag>("ECalESSrc", edm::InputTag("simEcalPreshowerDigis"))->setComment("ECAL preshower digis");
0473 desc.add<edm::InputTag>("HCalSrc", edm::InputTag("simHcalDigis"))->setComment("HCAL digis");
0474 desc.add<edm::InputTag>("ZdcSrc", edm::InputTag("simHcalUnsuppressedDigis"))->setComment("ZDC digis");
0475 desc.add<edm::InputTag>("SiStripSrc", edm::InputTag("simSiStripDigis", "ZeroSuppressed"))
0476 ->setComment("Si strip digis");
0477 desc.add<edm::InputTag>("SiPxlSrc", edm::InputTag("simSiPixelDigis"))->setComment("Si pixel digis");
0478 desc.add<edm::InputTag>("MuDTSrc", edm::InputTag("simMuonDTDigis"))->setComment("DT digis");
0479 desc.add<edm::InputTag>("MuCSCStripSrc", edm::InputTag("simMuonCSCDigis", "MuonCSCStripDigi"))
0480 ->setComment("CSC strip digis");
0481 desc.add<edm::InputTag>("MuCSCWireSrc", edm::InputTag("simMuonCSCDigis", "MuonCSCWireDigi"))
0482 ->setComment("CSC wire digis");
0483 desc.add<edm::InputTag>("MuRPCSrc", edm::InputTag("simMuonRPCDigis"))->setComment("RPC digis");
0484 desc.add<edm::InputTag>("BTLSrc", edm::InputTag("mix", "FTLBarrel"))->setComment("BTL digis");
0485 desc.add<edm::InputTag>("ETLSrc", edm::InputTag("mix", "FTLEndcap"))->setComment("ETL digis");
0486 descriptions.add("simDigiDumper", desc);
0487 }
0488
0489
0490 DEFINE_FWK_MODULE(SimDigiDumper);