13 #include "CLHEP/Random/RandGaussQ.h" 20 bxTime_(
pset.getParameter<double>(
"bxTime")),
21 LightYield_(
pset.getParameter<double>(
"LightYield")),
22 LightCollEff_(
pset.getParameter<double>(
"LightCollectionEff")),
23 LightCollSlope_(
pset.getParameter<double>(
"LightCollectionSlope")),
24 PDE_(
pset.getParameter<double>(
"PhotonDetectionEff")),
25 LCEpositionSlope_(
pset.getParameter<double>(
"LCEpositionSlope")) {}
35 CLHEP::HepRandomEngine* hre) {
39 for (
auto const& hitRef : hitRefs) {
40 const int hitidx = std::get<0>(hitRef);
41 const uint32_t
id = std::get<1>(hitRef);
56 if (thedet ==
nullptr) {
57 throw cms::Exception(
"BTLDeviceSim") <<
"GeographicalID: " << std::hex <<
geoId.rawId() <<
" (" << detId.rawId()
58 <<
") is invalid!" <<
std::dec << std::endl;
67 const auto& thepixel = topo.
pixel(simscaled);
68 uint8_t row(thepixel.first),
col(thepixel.second);
72 << btlid.
column(topo.
nrows()) <<
") is not equal to " 73 <<
"topology (row,column): (" << uint32_t(row) <<
',' << uint32_t(
col)
74 <<
"), overriding to detid";
103 if ((simHitIt->second).hit_info[1][iBXR] == 0 || tR < (simHitIt->second).hit_info[1][iBXR])
113 if ((simHitIt->second).hit_info[3][iBXL] == 0 || tL < (simHitIt->second).hit_info[3][iBXL])
uint8_t geoId(const VFATFrame &frame)
retrieve the GEO information for this channel
int getMTDTopologyMode() const
int row(unsigned nrows=kCrystalsPerModuleV2) const
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
virtual const Topology & topology() const
const MTDTopology * topo_
virtual const PixelTopology & specificTopology() const
const MTDGeometry * geom_
const edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > geomToken_
void getHitsResponse(const std::vector< std::tuple< int, uint32_t, float > > &hitRefs, const edm::Handle< edm::PSimHitContainer > &hits, mtd_digitizer::MTDSimHitDataAccumulator *simHitAccumulator, CLHEP::HepRandomEngine *hre)
const float LightCollSlope_
std::unordered_map< MTDCellId, MTDCellInfo > MTDSimHitDataAccumulator
LocalPoint pixelToModuleLocalPoint(const LocalPoint &plp, int row, int col) const
Detector identifier base class for the MIP Timing Layer.
std::pair< float, float > pixel(const LocalPoint &p) const override
constexpr NumType convertGeVToMeV(NumType gev)
const MTDGeomDet * idToDet(DetId) const override
const edm::ESGetToken< MTDTopology, MTDTopologyRcd > topoToken_
int nrows() const override
int column(unsigned nrows=kCrystalsPerModuleV2) const
const float LCEpositionSlope_
constexpr NumType convertMmToCm(NumType millimeters)
std::pair< float, float > pitch() const override
static int position[264][3]
Detector identifier class for the Barrel Timing Layer. The crystal count must start from 0...
void getEventSetup(const edm::EventSetup &evt)
BTLDetId::CrysLayout crysLayoutFromTopoMode(const int &topoMode)
const float LightCollEff_
Log< level::Warning, false > LogWarning
constexpr int kNumberOfBX
BTLDeviceSim(const edm::ParameterSet &pset, edm::ConsumesCollector iC)
BTLDetId geographicalId(CrysLayout lay) const