CMS 3D CMS Logo

EcalSensitiveDetectorBuilder.cc
Go to the documentation of this file.
1 
2 // system include files
3 #include <string>
4 #include <vector>
5 
6 // user include files
10 
14 
21 
23 public:
25  edm::ParameterSet m_EC = p.getParameter<edm::ParameterSet>("ECalSD");
26  num_ = m_EC.getUntrackedParameter<int>("Detectors");
27  for (int k = 0; k < num_; ++k)
28  ecToken_.emplace_back(cc.esConsumes<edm::Transition::BeginRun>(edm::ESInputTag{"", name_[k]}));
29  }
30 
31  void beginRun(const edm::EventSetup& es) final {
32  for (const auto& token : ecToken_)
33  ecpar_.emplace_back(es.getHandle(token));
34  }
35 
36  std::unique_ptr<SensitiveDetector> make(const std::string& iname,
37  const SensitiveDetectorCatalog& clg,
38  const edm::ParameterSet& p,
39  const SimTrackManager* man,
40  SimActivityRegistry& reg) const final {
41  int k = static_cast<int>(std::find(name_, name_ + num_, iname) - name_);
42  auto const& par = ((k < num_) && ecpar_[k].isValid()) ? ecpar_[k].product() : nullptr;
43  auto sd = std::make_unique<ECalSD>(iname, par, clg, p, man);
45  return sd;
46  }
47 
48 private:
49  static constexpr unsigned int nameSize_ = 3;
50  const std::string name_[nameSize_] = {"EcalHitsEB", "EcalHitsEE", "EcalHitsES"};
51  int num_;
52  std::vector<edm::ESGetToken<EcalSimulationParameters, IdealGeometryRecord>> ecToken_;
53  std::vector<edm::ESHandle<EcalSimulationParameters>> ecpar_;
54 };
55 
SimTrackManager
Definition: SimTrackManager.h:35
EcalSensitiveDetector
ECalSD EcalSensitiveDetector
Definition: EcalSensitiveDetectorBuilder.cc:56
edm::ESInputTag
Definition: ESInputTag.h:87
MessageLogger.h
ESHandle.h
EcalSensitiveDetectorBuilder
Definition: EcalSensitiveDetectorBuilder.cc:22
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
ESGetToken.h
EcalSensitiveDetectorBuilder::num_
int num_
Definition: EcalSensitiveDetectorBuilder.cc:51
EcalSensitiveDetectorBuilder::nameSize_
static constexpr unsigned int nameSize_
Definition: EcalSensitiveDetectorBuilder.cc:49
SensitiveDetectorCatalog
Definition: SensitiveDetectorCatalog.h:10
EcalSensitiveDetectorBuilder::ecToken_
std::vector< edm::ESGetToken< EcalSimulationParameters, IdealGeometryRecord > > ecToken_
Definition: EcalSensitiveDetectorBuilder.cc:52
dqmdumpme.k
k
Definition: dqmdumpme.py:60
sistrip::SpyUtilities::isValid
const bool isValid(const Frame &aFrame, const FrameQuality &aQuality, const uint16_t aExpectedPos)
Definition: SiStripSpyUtilities.cc:124
ECalSD
Definition: ECalSD.h:31
EcalSensitiveDetectorBuilder::EcalSensitiveDetectorBuilder
EcalSensitiveDetectorBuilder(edm::ParameterSet const &p, edm::ConsumesCollector cc)
Definition: EcalSensitiveDetectorBuilder.cc:24
EcalSensitiveDetectorBuilder::ecpar_
std::vector< edm::ESHandle< EcalSimulationParameters > > ecpar_
Definition: EcalSensitiveDetectorBuilder.cc:53
edm::ParameterSet
Definition: ParameterSet.h:47
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
EcalSensitiveDetectorBuilder::name_
const std::string name_[nameSize_]
Definition: EcalSensitiveDetectorBuilder.cc:50
SensitiveDetectorMakerBase
Definition: SensitiveDetectorMakerBase.h:28
EcalSimulationParameters.h
ModuleDef.h
SimActivityRegistryEnroller::enroll
static void enroll(SimActivityRegistry &iReg, T *iObj)
Definition: SimActivityRegistryEnroller.h:50
IdealGeometryRecord.h
edm::EventSetup
Definition: EventSetup.h:58
cc
ECalSD.h
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SimActivityRegistryEnroller.h
SimActivityRegistry
Definition: SimActivityRegistry.h:39
EcalSensitiveDetectorBuilder::make
std::unique_ptr< SensitiveDetector > make(const std::string &iname, const SensitiveDetectorCatalog &clg, const edm::ParameterSet &p, const SimTrackManager *man, SimActivityRegistry &reg) const final
Definition: EcalSensitiveDetectorBuilder.cc:36
DEFINE_SENSITIVEDETECTORBUILDER
#define DEFINE_SENSITIVEDETECTORBUILDER(type, name)
Definition: SensitiveDetectorPluginFactory.h:21
edm::Transition::BeginRun
sd
double sd
Definition: CascadeWrapper.h:113
ConsumesCollector.h
SensitiveDetectorPluginFactory.h
EcalSensitiveDetectorBuilder::beginRun
void beginRun(const edm::EventSetup &es) final
Definition: EcalSensitiveDetectorBuilder.cc:31
ParameterSet.h
SensitiveDetectorMakerBase.h
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:316