1 #ifndef FastTimingSimProducers_FastTimingCommon_MTDDigitizer_h 2 #define FastTimingSimProducers_FastTimingCommon_MTDDigitizer_h 27 #include <unordered_map> 28 #include <unordered_set> 35 namespace MTDHelpers {
41 unsigned int detId_a(std::get<1>(a)), detId_b(std::get<1>(b));
43 if(detId_a<detId_b)
return true;
44 if(detId_a>detId_b)
return false;
46 double time_a(std::get<2>(a)), time_b(std::get<2>(b));
47 if(time_a<time_b)
return true;
53 template<
class Traits>
69 maxSimHitsAccTime_( config.getParameter< uint32_t >(
"maxSimHitsAccTime") ) { }
110 template<
class Traits>
113 CLHEP::HepRandomEngine* hre) {
116 accumulate(simHits,0,hre);
119 template<
class Traits>
122 CLHEP::HepRandomEngine* hre){
128 template<
class Traits>
131 CLHEP::HepRandomEngine* hre) {
132 using namespace MTDHelpers;
135 int nchits=(
int)hits->size();
136 std::vector< MTDCaloHitTuple_t > hitRefs;
137 hitRefs.reserve(nchits);
138 for(
int i=0;
i<nchits; ++
i) {
139 const auto& the_hit = hits->at(
i);
141 DetId id = the_hit.detUnitId();
145 <<
" o/p " <<
id.rawId() << std::endl;
148 if( 0 !=
id.rawId() ) {
149 hitRefs.emplace_back(
i,
id.rawId(), the_hit.tof() );
154 deviceSim_.getHitsResponse(hitRefs, hits, &simHitAccumulator_, hre);
160 template<
class Traits>
162 deviceSim_.getEvent(e);
163 electronicsSim_.getEvent(e);
166 template<
class Traits>
168 CLHEP::HepRandomEngine* hre) {
175 resetSimHitDataAccumulator();
179 template<
class Traits>
186 deviceSim_.getEventSetup(es);
187 electronicsSim_.getEventSetup(es);
int bunchCrossing() const
void accumulate(edm::Event const &e, edm::EventSetup const &c, CLHEP::HepRandomEngine *hre) override
handle SimHit accumulation
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
ParameterSet const & getParameterSet(ParameterSetID const &id)
MTDSimHitDataAccumulator simHitAccumulator_
std::unordered_map< MTDCellId, MTDCellInfo > MTDSimHitDataAccumulator
void finalizeEvent(edm::Event &e, edm::EventSetup const &c, CLHEP::HepRandomEngine *hre) override
const int maxSimHitsAccTime_
void beginRun(const edm::EventSetup &es) override
actions at the start/end of run
Traits::ElectronicsSim ElectronicsSim
Traits::DigiCollection DigiCollection
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
void initializeEvent(edm::Event const &e, edm::EventSetup const &c) override
actions at the start/end of event
bool orderByDetIdThenTime(const MTDCaloHitTuple_t &a, const MTDCaloHitTuple_t &b)
std::tuple< int, uint32_t, float > MTDCaloHitTuple_t
const MTDGeometry * geom_
bool getByLabel(edm::InputTag const &tag, edm::Handle< T > &result) const
MTDDigitizer(const edm::ParameterSet &config, edm::ConsumesCollector &iC, edm::ProducerBase &parent)
ElectronicsSim electronicsSim_
void resetSimHitDataAccumulator()
Traits::DeviceSim DeviceSim
T const * product() const