63 class HepRandomEngine;
72 produces<edm::DetSetVector<StripDigiSimLink> >().setBranchAlias (
alias +
"siStripDigiSimLink");
78 if ( ! rng.isAvailable()) {
80 <<
"DigiSimLinkProducer requires the RandomNumberGeneratorService\n" 81 "which is not present in the configuration file. You must add the service\n" 82 "in the configuration file or remove the modules that require it.";
112 std::vector<const CrossingFrame<PSimHit> *> cf_simhitvec;
115 cf_simhitvec.push_back(cf_simhit.
product());
125 std::vector<std::pair<const PSimHit*,int> >::iterator isim;
128 SimHitMap[((*isim).first)->detUnitId()].push_back(*isim);
166 for(
const auto& iu : pDD->
detUnits()) {
178 float langle = (lorentzAngleHandle.
isValid()) ? lorentzAngleHandle->
getLorentzAngle(iu->geographicalId().rawId()) : 0.;
180 gainHandle,thresholdHandle,noiseHandle,pedestalHandle, deadChannelHandle, tTopo, engine);
182 if(!collectorZS.data.empty()){
184 if(!
SimHitMap[iu->geographicalId().rawId()].empty()){
186 if(!linkcollector.data.empty())
191 if(!collectorRaw.data.empty()){
193 if(!
SimHitMap[iu->geographicalId().rawId()].empty()){
195 if(!linkcollector.data.empty())
T getParameter(std::string const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
std::vector< std::pair< const PSimHit *, int > > getSimHit(std::unique_ptr< MixCollection< PSimHit > > &, std::map< uint32_t, std::vector< int > > &)
std::vector< edm::DetSet< StripDigiSimLink > > theDigiLinkVector
const DetContainer & detUnits() const override
Returm a vector of all GeomDet.
std::vector< StripDigiSimLink > make_link()
void produce(edm::Event &e, const edm::EventSetup &c) override
void setParticleDataTable(const ParticleDataTable *pardt)
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &)=0
Use this engine in event methods.
void getData(T &iHolder) const
float getLorentzAngle(const uint32_t &) const
void run(edm::DetSet< SiStripDigi > &, edm::DetSet< SiStripRawDigi > &, const std::vector< std::pair< const PSimHit *, int > > &, StripGeomDetUnit const *, GlobalVector, float, edm::ESHandle< SiStripGain > &, edm::ESHandle< SiStripThreshold > &, edm::ESHandle< SiStripNoises > &, edm::ESHandle< SiStripPedestals > &, edm::ESHandle< SiStripBadStrip > &, const TrackerTopology *tTopo, CLHEP::HepRandomEngine *)
std::map< uint32_t, std::vector< int > > theDetIdList
DigiSimLinkAlgorithm * theDigiAlgo
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
DigiSimLinkProducer(const edm::ParameterSet &conf)
T const * product() const
SimHitSelectorFromDB SimHitSelectorFromDB_
~DigiSimLinkProducer() override
std::vector< edm::DetSet< SiStripDigi > > theDigiVector
StreamID streamID() const
std::vector< edm::DetSet< SiStripRawDigi > > theRawDigiVector
T const * product() const
void addConnected(std::map< uint32_t, std::vector< int > > &) const
vstring trackerContainers