CMS 3D CMS Logo

CSCDigiProducer.cc
Go to the documentation of this file.
2 
4 
7 
17 
18 #include <string>
19 
20 CSCDigiProducer::CSCDigiProducer(const edm::ParameterSet &ps) : theDigitizer(ps), theStripConditions(nullptr) {
21  geom_Token =
22  esConsumes<CSCGeometry, MuonGeometryRecord>(edm::ESInputTag("", ps.getParameter<std::string>("GeometryType")));
23  magfield_Token = esConsumes<MagneticField, IdealMagneticFieldRecord>();
24  pdt_Token = esConsumes<ParticleDataTable, edm::DefaultRecord>();
25  produces<CSCWireDigiCollection>("MuonCSCWireDigi");
26  produces<CSCStripDigiCollection>("MuonCSCStripDigi");
27  produces<CSCComparatorDigiCollection>("MuonCSCComparatorDigi");
28  produces<DigiSimLinks>("MuonCSCWireDigiSimLinks");
29  produces<DigiSimLinks>("MuonCSCStripDigiSimLinks");
30  std::string stripConditions(ps.getParameter<std::string>("stripConditions"));
31 
32  edm::ParameterSet stripPSet = ps.getParameter<edm::ParameterSet>("strips");
33  if (stripConditions == "Configurable") {
35  } else if (stripConditions == "Database") {
36  theStripConditions = new CSCDbStripConditions(stripPSet, consumesCollector());
37  } else {
38  throw cms::Exception("CSCDigiProducer") << "Bad option for strip conditions: " << stripConditions;
39  }
41 
43  if (!rng.isAvailable()) {
44  throw cms::Exception("Configuration") << "CSCDigitizer requires the RandomNumberGeneratorService\n"
45  "which is not present in the configuration file. You must add the "
46  "service\n"
47  "in the configuration file or remove the modules that require it.";
48  }
49 
50  std::string mix_ = ps.getParameter<std::string>("mixLabel");
51  std::string collection_ = ps.getParameter<std::string>("InputCollection");
52  cf_token = consumes<CrossingFrame<PSimHit>>(edm::InputTag(mix_, collection_));
53 }
54 
56 
58  edm::LogVerbatim("CSCDigitizer") << "[CSCDigiProducer::produce] starting event " << ev.id().event() << " of run "
59  << ev.id().run();
61  CLHEP::HepRandomEngine *engine = &rng->getEngine(ev.streamID());
62 
64  ev.getByToken(cf_token, cf);
65 
66  std::unique_ptr<MixCollection<PSimHit>> hits(new MixCollection<PSimHit>(cf.product()));
67 
68  // Create empty output
69 
70  std::unique_ptr<CSCWireDigiCollection> pWireDigis(new CSCWireDigiCollection());
71  std::unique_ptr<CSCStripDigiCollection> pStripDigis(new CSCStripDigiCollection());
72  std::unique_ptr<CSCComparatorDigiCollection> pComparatorDigis(new CSCComparatorDigiCollection());
73  std::unique_ptr<DigiSimLinks> pWireDigiSimLinks(new DigiSimLinks());
74  std::unique_ptr<DigiSimLinks> pStripDigiSimLinks(new DigiSimLinks());
75 
76  //@@ DOES NOTHING IF NO HITS. Remove this for when there's real neutrons
77  if (hits->size() > 0) {
78  // find the geometry & conditions for this event
80  const CSCGeometry *pGeom = &*hGeom;
81 
83 
84  // find the magnetic field
86 
88 
89  // set the particle table
91  eventSetup.getData(pdt);
93 
95 
96  // run the digitizer
98  *hits, *pWireDigis, *pStripDigis, *pComparatorDigis, *pWireDigiSimLinks, *pStripDigiSimLinks, engine);
99  }
100 
101  // store them in the event
102  ev.put(std::move(pWireDigis), "MuonCSCWireDigi");
103  ev.put(std::move(pStripDigis), "MuonCSCStripDigi");
104  ev.put(std::move(pComparatorDigis), "MuonCSCComparatorDigi");
105  ev.put(std::move(pWireDigiSimLinks), "MuonCSCWireDigiSimLinks");
106  ev.put(std::move(pStripDigiSimLinks), "MuonCSCStripDigiSimLinks");
107 }
CSCDigiProducer::geom_Token
edm::ESGetToken< CSCGeometry, MuonGeometryRecord > geom_Token
Definition: CSCDigiProducer.h:32
edm::RandomNumberGenerator::getEngine
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &)=0
Use this engine in event methods.
Handle.h
edm::ESInputTag
Definition: ESInputTag.h:87
MessageLogger.h
edm::Handle::product
T const * product() const
Definition: Handle.h:70
CSCDbStripConditions.h
CSCDigitizer::setMagneticField
void setMagneticField(const MagneticField *field)
sets the magnetic field
Definition: CSCDigitizer.cc:176
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
ESHandle.h
CSCDigiProducer::magfield_Token
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magfield_Token
Definition: CSCDigiProducer.h:33
RandomNumberGenerator.h
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89281
CSCDigiProducer::~CSCDigiProducer
~CSCDigiProducer() override
Definition: CSCDigiProducer.cc:55
CSCDigitizer::doAction
void doAction(MixCollection< PSimHit > &simHits, CSCWireDigiCollection &wireDigis, CSCStripDigiCollection &stripDigis, CSCComparatorDigiCollection &comparators, DigiSimLinks &wireDigiSimLinks, DigiSimLinks &stripDigiSimLinks, CLHEP::HepRandomEngine *)
Definition: CSCDigitizer.cc:39
edm::Handle
Definition: AssociativeIterator.h:50
edm::Service::isAvailable
bool isAvailable() const
Definition: Service.h:40
CSCDigitizer::setGeometry
void setGeometry(const CSCGeometry *geom)
sets geometry
Definition: CSCDigitizer.h:62
CSCGeometry
Definition: CSCGeometry.h:24
CSCStripDigiCollection
MuonDigiCollection< CSCDetId, CSCStripDigi > CSCStripDigiCollection
Definition: CSCStripDigiCollection.h:14
CSCDigitizer::setStripConditions
void setStripConditions(CSCStripConditions *cond)
Definition: CSCDigitizer.cc:178
MixCollection
Definition: MixCollection.h:10
CSCComparatorDigiCollection
MuonDigiCollection< CSCDetId, CSCComparatorDigi > CSCComparatorDigiCollection
Definition: CSCComparatorDigiCollection.h:14
Service.h
muonCSCDigis_cfi.stripConditions
stripConditions
Definition: muonCSCDigis_cfi.py:78
edm::ESHandle< CSCGeometry >
CSCDigiProducer::pdt_Token
edm::ESGetToken< ParticleDataTable, edm::DefaultRecord > pdt_Token
Definition: CSCDigiProducer.h:34
CSCConfigurableStripConditions
Definition: CSCConfigurableStripConditions.h:8
CSCDigiProducer::theStripConditions
CSCStripConditions * theStripConditions
Definition: CSCDigiProducer.h:29
CSCConfigurableStripConditions.h
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::ParameterSet
Definition: ParameterSet.h:47
Event.h
edm::Service< edm::RandomNumberGenerator >
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:155
edm::EventSetup
Definition: EventSetup.h:58
InputTag.h
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
CSCStripConditions::initializeEvent
virtual void initializeEvent(const edm::EventSetup &es)
Definition: CSCStripConditions.h:24
CSCDbStripConditions
Definition: CSCDbStripConditions.h:8
CSCWireDigiCollection
MuonDigiCollection< CSCDetId, CSCWireDigi > CSCWireDigiCollection
Definition: CSCWireDigiCollection.h:15
eostools.move
def move(src, dest)
Definition: eostools.py:511
CSCDigiProducer.h
CSCDigiProducer::produce
void produce(edm::Event &e, const edm::EventSetup &c) override
Definition: CSCDigiProducer.cc:57
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
ev
bool ev
Definition: Hydjet2Hadronizer.cc:95
Exception
Definition: hltDiff.cc:245
EventSetup.h
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
Exception.h
ParameterSet.h
CSCDigiProducer::CSCDigiProducer
CSCDigiProducer(const edm::ParameterSet &ps)
Definition: CSCDigiProducer.cc:20
CSCDigiProducer::cf_token
edm::EDGetTokenT< CrossingFrame< PSimHit > > cf_token
Definition: CSCDigiProducer.h:31
edm::Event
Definition: Event.h:73
CSCDigiProducer::DigiSimLinks
CSCDigitizer::DigiSimLinks DigiSimLinks
Definition: CSCDigiProducer.h:19
CSCDigiProducer::theDigitizer
CSCDigitizer theDigitizer
Definition: CSCDigiProducer.h:28
volumeBasedMagneticField_160812_cfi.magfield
magfield
Definition: volumeBasedMagneticField_160812_cfi.py:11
CSCDigitizer::setParticleDataTable
void setParticleDataTable(const ParticleDataTable *pdt)
Definition: CSCDigitizer.cc:183