|
|
Go to the documentation of this file.
39 const auto& gem_ch_ids =
detIds();
40 for (
const auto&
id : gem_ch_ids) {
43 edm::LogInfo(
"GEMSimHitMatcher") <<
"gemchid " <<
GEMDetId(
id) <<
": nHits " << gem_simhits.size() <<
" phi "
53 for (
const auto&
id : gem_sch_ids) {
57 << gem_simhits.size() <<
" " << gem_simhits_gp.phi() <<
" "
66 if (
h.trackId() != track_id)
71 int pdgid =
h.particleType();
89 const auto& detids =
detIds();
91 for (
const auto&
d : detids) {
94 const auto& roll = dynamic_cast<const GEMGeometry*>(
geometry_)->etaPartition(
id);
97 for (
const auto&
h :
hits) {
99 pads.insert(static_cast<int>(roll->padTopology().channel(lp)));
105 for (
const auto&
d : detids) {
107 if (
id1.layer() != 1)
112 const auto& roll1 = dynamic_cast<const GEMGeometry*>(
geometry_)->etaPartition(
id1);
117 for (
const auto&
h : hits1) {
119 pads1.insert(static_cast<int>(roll1->padTopology().channel(lp)));
121 edm::LogInfo(
"GEMSimHitMatcher") <<
"GEMHits detid1 " <<
id1 <<
" pad1 "
122 << static_cast<int>(roll1->padTopology().channel(lp)) << std::endl;
126 for (
const auto& d2 : detids) {
134 const auto& roll2 = dynamic_cast<const GEMGeometry*>(
geometry_)->etaPartition(
id2);
135 for (
const auto&
h : hits2) {
137 pads2.insert(static_cast<int>(roll2->padTopology().channel(lp)));
139 edm::LogInfo(
"GEMSimHitMatcher") <<
"GEMHits detid2 " <<
id2 <<
" pad2 "
140 << static_cast<int>(roll2->padTopology().channel(lp)) << std::endl;
144 for (
const auto& pad1 : pads1) {
145 for (
const auto& pad2 : pads2) {
146 if (
abs(pad1 - pad2) <= 2) {
147 if (copads.find(pad1) == copads.end())
149 if (copads.find(pad2) == copads.end())
164 std::set<unsigned int>
result;
166 const auto&
id =
p.first;
178 std::set<unsigned int>
result;
185 std::set<unsigned int>
result;
187 const auto&
id =
p.first;
199 std::set<unsigned int>
result;
206 std::set<unsigned int>
result;
226 set<int> layers_with_hits;
228 for (
const auto&
h :
hits) {
230 layers_with_hits.insert(idd.layer());
232 return layers_with_hits.size();
253 if (sim_hits.empty())
258 for (
const auto&
h : sim_hits) {
266 edm::LogWarning(
"GEMSimHitMatcher") <<
"warning! find more than one simhits in GEM chamber " << std::endl;
274 if (sim_hits.empty())
279 for (
const auto&
h : sim_hits) {
281 const auto&
d =
h.detUnitId();
282 sums += dynamic_cast<const GEMGeometry*>(
geometry_)->etaPartition(
d)->strip(lp);
294 int max_nstrips = dynamic_cast<const GEMGeometry*>(
geometry_)->etaPartition(
id)->nstrips();
298 static_cast<int>(dynamic_cast<const GEMGeometry*>(
geometry_)->etaPartition(
id)->
topology().channel(lp));
299 int smin = central_strip - margin_n_strips;
300 smin = (smin > 0) ? smin : 0;
301 int smax = central_strip + margin_n_strips;
302 smax = (smax <= max_nstrips) ? smax : max_nstrips;
303 for (
int ss = smin;
ss <= smax; ++
ss)
326 const auto& detids =
detIds();
327 for (
const auto&
id : detids) {
336 const auto& pad_ids =
detIds();
337 for (
const auto&
id : pad_ids) {
346 for (
const auto&
id : copad_ids) {
constexpr int ring() const
static int toGEMType(int st, int ri)
const TrackingGeometry * geometry_
int nLayersWithHitsInSuperChamber(unsigned int) const
std::set< unsigned int > superChamberIdsCoincidences() const
std::set< unsigned int > detIdsCoincidences() const
std::map< unsigned int, edm::PSimHitContainer > detid_to_hits_
GlobalPoint simHitsMeanPosition(const edm::PSimHitContainer &sim_hits) const
static bool isGEM(unsigned int detId)
constexpr GEMDetId superChamberId() const
void init(const edm::Event &e, const edm::EventSetup &eventSetup)
initialize the event
Log< level::Info, false > LogInfo
int nCoincidencePadsWithHits() const
Log< level::Warning, false > LogWarning
std::set< int > hitStripsInDetId(unsigned int, int margin_n_strips=1) const
edm::PSimHitContainer simHits_
bool hitStation(int, int) const
std::set< unsigned int > superChamberIds() const
virtual const GeomDet * idToDet(DetId) const =0
std::set< int > hitCoPadsInDetId(unsigned int) const
const CaloTopology * topology(nullptr)
std::set< int > hitPartitions() const
GEMSimHitMatcher(const edm::ParameterSet &iPS, edm::ConsumesCollector &&iC)
edm::ParameterSet simHitPSet_
int nStations(int nl=2) const
std::vector< unsigned > track_ids_
edm::PSimHitContainer no_hits_
std::set< unsigned int > detIds(int gem_type=MuonHitHelper::GEM_ALL) const
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
float simHitsMeanStrip(const edm::PSimHitContainer &sim_hits) const
void match(const SimTrack &t, const SimVertex &v)
do the matching
constexpr int roll() const
std::map< unsigned int, edm::PSimHitContainer > chamber_to_hits_
std::map< unsigned int, edm::PSimHitContainer > superchamber_to_hits_
edm::EDGetTokenT< edm::PSimHitContainer > simHitInput_
bool getData(T &iHolder) const
const edm::PSimHitContainer & hitsInDetId(unsigned int) const
constexpr uint32_t rawId() const
get the raw id
std::map< unsigned int, std::set< int > > detids_to_copads_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
T getParameter(std::string const &) const
void matchSimHitsToSimTrack()
float simHitsGEMCentralPosition(const edm::PSimHitContainer &sim_hits) const
std::set< int > hitPadsInDetId(unsigned int) const
constexpr int station() const
Abs< T >::type abs(const T &t)
std::vector< PSimHit > PSimHitContainer
std::set< unsigned int > chamberIds(int gem_type=MuonHitHelper::GEM_ALL) const
const edm::PSimHitContainer & hitsInSuperChamber(unsigned int) const
edm::PSimHitContainer hits_
void init(const edm::Event &e, const edm::EventSetup &eventSetup)
initialize the event
int nPadsWithHits() const
strips
#turn off noise in all subdetectors simHcalUnsuppressedDigis.doNoise = False mix.digitizers....
ParameterSet const & getParameterSet(std::string const &) const
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > geomToken_
std::map< unsigned int, std::set< int > > detids_to_pads_
void match(const SimTrack &t, const SimVertex &v)
do the matching