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;
126 for (isim=trackerHits.begin() ; isim!= trackerHits.end();isim++) {
128 SimHitMap[((*isim).first)->detUnitId()].push_back(*isim);
166 for(TrackingGeometry::DetUnitContainer::const_iterator iu = pDD->detUnits().begin(); iu != pDD->detUnits().end(); iu ++){
172 GlobalVector bfield=pSetup->inTesla((*iu)->surface().position());
178 float langle = (lorentzAngleHandle.
isValid()) ? lorentzAngleHandle->getLorentzAngle((*iu)->geographicalId().rawId()) : 0.;
180 gainHandle,thresholdHandle,noiseHandle,pedestalHandle, deadChannelHandle, tTopo, engine);
182 if(collectorZS.data.size()>0){
184 if(
SimHitMap[(*iu)->geographicalId().rawId()].size()>0){
186 if(linkcollector.data.size()>0)
191 if(collectorRaw.data.size()>0){
193 if(
SimHitMap[(*iu)->geographicalId().rawId()].size()>0){
195 if(linkcollector.data.size()>0)
206 iEvent.
put(outputlink);
T getParameter(std::string const &) const
std::vector< edm::DetSet< StripDigiSimLink > > theDigiLinkVector
virtual void produce(edm::Event &e, const edm::EventSetup &c)
std::vector< StripDigiSimLink > make_link()
void setParticleDataTable(const ParticleDataTable *pardt)
void getData(T &iHolder) const
std::vector< std::pair< const PSimHit *, int > > getSimHit(std::auto_ptr< MixCollection< PSimHit > > &, std::map< uint32_t, std::vector< int > > &)
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 *)
virtual ~DigiSimLinkProducer()
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
std::map< uint32_t, std::vector< int > > theDetIdList
DigiSimLinkAlgorithm * theDigiAlgo
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
DigiSimLinkProducer(const edm::ParameterSet &conf)
T const * product() const
T const * product() const
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &) const =0
Use this engine in event methods.
SimHitSelectorFromDB SimHitSelectorFromDB_
std::vector< edm::DetSet< SiStripDigi > > theDigiVector
StreamID streamID() const
std::vector< edm::DetSet< SiStripRawDigi > > theRawDigiVector
vstring trackerContainers