59 gainLabel(conf.getParameter<
std::
string>(
"Gain")),
61 trackerContainers(conf.getParameter<
std::vector<
std::
string> >(
"ROUList")),
66 geometryType(conf.getParameter<
std::
string>(
"GeometryType")),
67 useConfFromDB(conf.getParameter<
bool>(
"TrackerConfigurationFromDB")),
68 zeroSuppression(conf.getParameter<
bool>(
"ZeroSuppression")),
69 makeDigiSimLinks_(conf.getUntrackedParameter<
bool>(
"makeDigiSimLinks",
false))
78 mixMod.produces<std::vector<std::pair<int,std::bitset<6>>>>(
"AffectedAPVList").setBranchAlias(alias +
"AffectedAPV");
84 if ( ! rng.isAvailable()) {
86 <<
"SiStripDigitizer requires the RandomNumberGeneratorService\n" 87 "which is not present in the configuration file. You must add the service\n" 88 "in the configuration file or remove the modules that require it.";
98 const TrackerTopology *tTopo,
size_t globalSimHitIndex,
const unsigned int tofBin, CLHEP::HepRandomEngine* engine ) {
103 if(hSimHits.isValid()) {
104 std::set<unsigned int> detIds;
105 std::vector<PSimHit>
const&
simHits = *hSimHits.product();
106 for(std::vector<PSimHit>::const_iterator it = simHits.begin(), itEnd = simHits.end(); it != itEnd; ++it, ++globalSimHitIndex ) {
107 unsigned int detId = (*it).detUnitId();
108 if(detIds.insert(detId).second) {
115 LogDebug (
"Digitizer ") <<
"B-field(T) at " << stripdet->surface().position() <<
"(cm): " 117 theDigiAlgo->accumulateSimHits(it, itEnd, globalSimHitIndex, tofBin, stripdet, bfield, tTopo, engine);
204 unsigned int detId = iu->geographicalId().rawId();
205 if(iu->type().isTrackerStrip()) {
207 assert(stripdet !=
nullptr);
226 std::vector<edm::DetSet<SiStripDigi> > theDigiVector;
227 std::vector<edm::DetSet<SiStripRawDigi> > theRawDigiVector;
232 theDigiVector.reserve(10000);
233 theDigiVector.clear();
246 theDigiAlgo->digitize(collectorZS,collectorRaw,collectorLink,sgd,
249 if(!collectorZS.data.empty()){
250 theDigiVector.push_back(collectorZS);
251 if( !collectorLink.data.empty() ) pOutputDigiSimLink->insert(collectorLink);
254 if(!collectorRaw.data.empty()){
255 theRawDigiVector.push_back(collectorRaw);
256 if( !collectorLink.data.empty() ) pOutputDigiSimLink->insert(collectorLink);
267 std::unique_ptr<std::vector<std::pair<int,std::bitset<6>>> > AffectedAPVList(
new std::vector<std::pair<
int,std::bitset<6>>>(
theAffectedAPVvector));
273 iEvent.
put(
std::move(AffectedAPVList),
"AffectedAPVList");
const vstring trackerContainers
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
void accumulateStripHits(edm::Handle< std::vector< PSimHit > >, const TrackerTopology *tTopo, size_t globalSimHitIndex, const unsigned int tofBin, CLHEP::HepRandomEngine *)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
edm::ESHandle< TrackerGeometry > pDD
const DetContainer & detUnits() const override
Returm a vector of all GeomDet.
const bool zeroSuppression
std::vector< std::pair< int, std::bitset< 6 > > > theAffectedAPVvector
void initializeEvent(edm::Event const &e, edm::EventSetup const &c) override
const std::string hitsProducer
void finalizeEvent(edm::Event &e, edm::EventSetup const &c) override
void accumulate(edm::Event const &e, edm::EventSetup const &c) override
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &)=0
Use this engine in event methods.
std::map< uint32_t, std::vector< int > > theDetIdList
std::map< std::string, size_t > crossingSimHitIndexOffset_
Offset to add to the index of each sim hit to account for which crossing it's in. ...
CLHEP::HepRandomEngine * randomEngine(edm::StreamID const &streamID)
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.
bool isTrackerStrip(GeomDetEnumerators::SubDetector m)
PileupMixingContent * PileupInfo_
~SiStripDigitizer() override
unsigned int value() const
std::unique_ptr< SiStripDigitizerAlgorithm > theDigiAlgo
edm::ESHandle< MagneticField > pSetup
const std::string geometryType
SiStripDigitizer(const edm::ParameterSet &conf, edm::stream::EDProducerBase &mixMod, edm::ConsumesCollector &iC)
bool getByLabel(edm::InputTag const &tag, edm::Handle< T > &result) const
StreamID streamID() const
const bool makeDigiSimLinks_
Whether or not to create the association to sim truth collection. Set in configuration.
T const * product() const
const std::string gainLabel
void addConnected(std::map< uint32_t, std::vector< int > > &) const
PileupMixingContent * getEventPileupInfo() override
std::map< unsigned int, StripGeomDetUnit const * > detectorUnits
std::vector< CLHEP::HepRandomEngine * > randomEngines_