64 const std::map<unsigned int, SimTrack>& selectedSimTrackMap);
80 trackerHitAssociatorConfig_(iConfig, consumesCollector()),
81 simtrackminpt_(iConfig.getParameter<double>(
"SimTrackMinPt")),
84 edm::LogInfo(
"Phase2OTValidateTrackingRecHit") <<
">>> Construct Phase2OTValidateTrackingRecHit ";
86 simHitTokens_.push_back(consumes<edm::PSimHitContainer>(itag));
95 edm::LogInfo(
"Phase2OTValidateTrackingRecHit") <<
">>> Destroy Phase2OTValidateTrackingRecHit ";
102 std::vector<edm::Handle<edm::PSimHitContainer>>
simHits;
104 const auto& simHitHandle =
iEvent.getHandle(itoken);
105 if (!simHitHandle.isValid())
107 simHits.emplace_back(simHitHandle);
111 std::map<unsigned int, SimTrack> selectedSimTrackMap;
112 for (edm::SimTrackContainer::const_iterator simTrackIt(
simTracks->begin()); simTrackIt !=
simTracks->end();
115 selectedSimTrackMap.insert(std::make_pair(simTrackIt->trackId(), *simTrackIt));
125 const std::map<unsigned int, SimTrack>& selectedSimTrackMap) {
129 std::map<std::string, unsigned int> nrechitLayerMapP_primary;
130 std::map<std::string, unsigned int> nrechitLayerMapS_primary;
133 for (
const auto&
hit :
track.recHits()) {
137 auto detId =
hit->geographicalId();
139 auto subdetid = (detId.subdetId());
147 if (nrechitLayerMapP_primary.find(
key) == nrechitLayerMapP_primary.end()) {
148 nrechitLayerMapP_primary.emplace(
key, 1);
150 nrechitLayerMapP_primary[
key] += 1;
153 if (nrechitLayerMapS_primary.find(
key) == nrechitLayerMapS_primary.end()) {
154 nrechitLayerMapS_primary.emplace(
key, 1);
156 nrechitLayerMapS_primary[
key] += 1;
163 <<
"Cannot cast tracking rechit to Phase2TrackerRecHit1D!" << std::endl;
166 const std::vector<SimHitIdpr>& matchedId = associateRecHit.
associateHitId(*rechit);
167 const PSimHit* simhitClosest =
nullptr;
170 for (
const auto& simHitCol :
simHits) {
171 for (
const auto& simhitIt : *simHitCol) {
172 if (detId.rawId() != simhitIt.detUnitId())
174 for (
auto& mId : matchedId) {
175 if (simhitIt.trackId() == mId.first) {
176 float dx = simhitIt.localPosition().x() - lp.
x();
177 float dy = simhitIt.localPosition().y() - lp.
y();
179 if (!simhitClosest || dist < mind) {
181 simhitClosest = &simhitIt;
190 simhitClosest, rechit, selectedSimTrackMap, nrechitLayerMapP_primary, nrechitLayerMapS_primary);
197 for (
auto& lme : nrechitLayerMapP_primary) {
198 layerMEs_[lme.first].numberRecHitsprimary_P->Fill(nrechitLayerMapP_primary[lme.first]);
200 for (
auto& lme : nrechitLayerMapS_primary) {
201 layerMEs_[lme.first].numberRecHitsprimary_S->Fill(nrechitLayerMapS_primary[lme.first]);
213 desc.add<
bool>(
"associatePixel",
false);
214 desc.add<
bool>(
"associateHitbySimTrack",
true);
215 desc.add<
bool>(
"Verbosity",
false);
216 desc.add<
bool>(
"associateStrip",
true);
218 desc.add<
bool>(
"associateRecoTracks",
false);
220 desc.add<
bool>(
"usePhase2Tracker",
true);
223 desc.add<
double>(
"SimTrackMinPt", 2.0);
224 desc.add<std::vector<edm::InputTag>>(
"PSimHitSource",
240 desc.add<std::vector<std::string>>(
"ROUList",
241 {
"TrackerHitsPixelBarrelLowTof",
242 "TrackerHitsPixelBarrelHighTof",
243 "TrackerHitsTIBLowTof",
244 "TrackerHitsTIBHighTof",
245 "TrackerHitsTIDLowTof",
246 "TrackerHitsTIDHighTof",
247 "TrackerHitsTOBLowTof",
248 "TrackerHitsTOBHighTof",
249 "TrackerHitsPixelEndcapLowTof",
250 "TrackerHitsPixelEndcapHighTof",
251 "TrackerHitsTECLowTof",
252 "TrackerHitsTECHighTof"});
254 desc.add<
std::string>(
"TopFolderName",
"TrackerPhase2OTTrackingRecHitV");
255 descriptions.
add(
"Phase2OTValidateTrackingRecHit",
desc);