CMS 3D CMS Logo

IRPCDigitizer.cc
Go to the documentation of this file.
9 
10 // default constructor allocates default wire and strip digitizers
11 
13  : theRPCSim{RPCSimFactory::get()->create(config.getParameter<std::string>("digiIRPCModel"),
14  config.getParameter<edm::ParameterSet>("digiIRPCModelConfig"))} {
15  theNoise = config.getParameter<bool>("doBkgNoise");
16 }
17 
19 
21  RPCDigiCollection& rpcDigis,
22  RPCDigiSimLinks& rpcDigiSimLink,
23  CLHEP::HepRandomEngine* engine) {
24  theRPCSim->setRPCSimSetUp(theSimSetUp);
25 
26  // arrange the hits by roll
27  std::map<int, edm::PSimHitContainer> hitMap;
28  for (MixCollection<PSimHit>::MixItr hitItr = simHits.begin(); hitItr != simHits.end(); ++hitItr) {
29  hitMap[hitItr->detUnitId()].push_back(*hitItr);
30  }
31 
32  if (!theGeometry) {
33  throw cms::Exception("Configuration")
34  << "IRPCDigitizer requires the RPCGeometry \n which is not present in the configuration file. You must add "
35  "the service\n in the configuration file or remove the modules that require it.";
36  }
37 
38  const std::vector<const RPCRoll*>& rpcRolls = theGeometry->rolls();
39  for (auto r = rpcRolls.begin(); r != rpcRolls.end(); r++) {
40  RPCDetId id = (*r)->id();
41  const edm::PSimHitContainer& rollSimHits = hitMap[id];
42 
43  if ((*r)->isIRPC()) {
44  theRPCSim->simulate(*r, rollSimHits, engine);
45 
46  if (theNoise) {
47  theRPCSim->simulateNoise(*r, engine);
48  }
49  }
50 
51  theRPCSim->fillDigis((*r)->id(), rpcDigis);
52  rpcDigiSimLink.insert(theRPCSim->rpcDigiSimLinks());
53  }
54 }
55 
57  assert(theGeometry != nullptr);
58  const GeomDetUnit* detUnit = theGeometry->idToDetUnit(RPCDetId(detId));
59  return dynamic_cast<const RPCRoll*>(detUnit);
60 }
const GeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
Definition: RPCGeometry.cc:30
Definition: config.py:1
assert(be >=bs)
void doAction(MixCollection< PSimHit > &simHits, RPCDigiCollection &rpcDigis, RPCDigiSimLinks &rpcDigiSimLink, CLHEP::HepRandomEngine *)
const RPCGeometry * theGeometry
Definition: IRPCDigitizer.h:56
const RPCRoll * findDet(int detId) const
finds the rpc det unit in the geometry associated with this det ID
IRPCDigitizer(const edm::ParameterSet &config)
void insert(detset const &s)
Insert the given DetSet.
Definition: DetSetVector.h:220
RPCSimSetUp * theSimSetUp
Definition: IRPCDigitizer.h:58
const std::vector< const RPCRoll * > & rolls() const
Return a vector of all RPC rolls.
Definition: RPCGeometry.cc:44
std::vector< PSimHit > PSimHitContainer
#define get
std::unique_ptr< RPCSim > theRPCSim
Definition: IRPCDigitizer.h:57