CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Phase2OTValidateTrackingRecHit.cc
Go to the documentation of this file.
1 // Package: Phase2OTValidateTrackingRecHit
2 // Class: Phase2OTValidateTrackingRecHit
3 //
7 //
8 // Author: Suvankar Roy Chowdhury
9 // Date: March 2021
10 //
11 // system include files
20 
30 
40 
48 
51 
53 public:
56  void analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) override;
57 
58  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
59 
60 private:
61  void fillOTHistos(const edm::Event& iEvent,
62  const TrackerHitAssociator& associateRecHit,
64  const std::map<unsigned int, SimTrack>& selectedSimTrackMap);
65 
68  const double simtrackminpt_;
71  std::vector<edm::EDGetTokenT<edm::PSimHitContainer>> simHitTokens_;
72 };
73 
74 //
75 // constructors
76 //
78  : Phase2OTValidateRecHitBase(iConfig),
79  config_(iConfig),
80  trackerHitAssociatorConfig_(iConfig, consumesCollector()),
81  simtrackminpt_(iConfig.getParameter<double>("SimTrackMinPt")),
82  tokenTracks_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("tracksSrc"))),
83  simTracksToken_(consumes<edm::SimTrackContainer>(iConfig.getParameter<edm::InputTag>("simTracksSrc"))) {
84  edm::LogInfo("Phase2OTValidateTrackingRecHit") << ">>> Construct Phase2OTValidateTrackingRecHit ";
85  for (const auto& itag : config_.getParameter<std::vector<edm::InputTag>>("PSimHitSource"))
86  simHitTokens_.push_back(consumes<edm::PSimHitContainer>(itag));
87 }
88 
89 //
90 // destructor
91 //
93  // do anything here that needs to be done at desctruction time
94  // (e.g. close files, deallocate resources etc.)
95  edm::LogInfo("Phase2OTValidateTrackingRecHit") << ">>> Destroy Phase2OTValidateTrackingRecHit ";
96 }
97 
98 //
99 // -- Analyze
100 //
102  std::vector<edm::Handle<edm::PSimHitContainer>> simHits;
103  for (const auto& itoken : simHitTokens_) {
104  const auto& simHitHandle = iEvent.getHandle(itoken);
105  if (!simHitHandle.isValid())
106  continue;
107  simHits.emplace_back(simHitHandle);
108  }
109  // Get the SimTracks and push them in a map of id, SimTrack
110  const auto& simTracks = iEvent.getHandle(simTracksToken_);
111  std::map<unsigned int, SimTrack> selectedSimTrackMap;
112  for (edm::SimTrackContainer::const_iterator simTrackIt(simTracks->begin()); simTrackIt != simTracks->end();
113  ++simTrackIt) {
114  if (simTrackIt->momentum().pt() > simtrackminpt_) {
115  selectedSimTrackMap.insert(std::make_pair(simTrackIt->trackId(), *simTrackIt));
116  }
117  }
119  fillOTHistos(iEvent, associateRecHit, simHits, selectedSimTrackMap);
120 }
121 
123  const TrackerHitAssociator& associateRecHit,
125  const std::map<unsigned int, SimTrack>& selectedSimTrackMap) {
126  const auto& tracks = iEvent.getHandle(tokenTracks_);
127  if (!tracks.isValid())
128  return;
129  std::map<std::string, unsigned int> nrechitLayerMapP_primary;
130  std::map<std::string, unsigned int> nrechitLayerMapS_primary;
131  // Loop over tracks
132  for (const auto& track : *tracks) {
133  for (const auto& hit : track.recHits()) {
134  // Get the detector unit's id
135  if (!hit->isValid())
136  continue;
137  auto detId = hit->geographicalId();
138  // check that we are in the pixel
139  auto subdetid = (detId.subdetId());
140  if (subdetid == PixelSubdetector::PixelBarrel || subdetid == PixelSubdetector::PixelEndcap)
141  continue;
142 
143  // determine the detector we are in
147  if (nrechitLayerMapP_primary.find(key) == nrechitLayerMapP_primary.end()) {
148  nrechitLayerMapP_primary.emplace(key, 1);
149  } else {
150  nrechitLayerMapP_primary[key] += 1;
151  }
153  if (nrechitLayerMapS_primary.find(key) == nrechitLayerMapS_primary.end()) {
154  nrechitLayerMapS_primary.emplace(key, 1);
155  } else {
156  nrechitLayerMapS_primary[key] += 1;
157  }
158  }
159  //GetSimHits
160  const Phase2TrackerRecHit1D* rechit = dynamic_cast<const Phase2TrackerRecHit1D*>(hit);
161  if (!rechit) {
162  edm::LogError("Phase2OTValidateTrackingRecHit")
163  << "Cannot cast tracking rechit to Phase2TrackerRecHit1D!" << std::endl;
164  continue;
165  }
166  const std::vector<SimHitIdpr>& matchedId = associateRecHit.associateHitId(*rechit);
167  const PSimHit* simhitClosest = nullptr;
168  LocalPoint lp = rechit->localPosition();
169  float mind = 1e4;
170  for (const auto& simHitCol : simHits) {
171  for (const auto& simhitIt : *simHitCol) {
172  if (detId.rawId() != simhitIt.detUnitId())
173  continue;
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();
178  float dist = dx * dx + dy * dy;
179  if (!simhitClosest || dist < mind) {
180  mind = dist;
181  simhitClosest = &simhitIt;
182  }
183  }
184  }
185  } //end loop over PSimhitcontainers
186  } //end loop over simHits
187  if (!simhitClosest)
188  continue;
190  simhitClosest, rechit, selectedSimTrackMap, nrechitLayerMapP_primary, nrechitLayerMapS_primary);
191 
192  } //end loop over rechits of a track
193  } //End loop over tracks
194 
195  //fill nRecHits per event
196  //fill nRecHit counter per layer
197  for (auto& lme : nrechitLayerMapP_primary) {
198  layerMEs_[lme.first].numberRecHitsprimary_P->Fill(nrechitLayerMapP_primary[lme.first]);
199  }
200  for (auto& lme : nrechitLayerMapS_primary) {
201  layerMEs_[lme.first].numberRecHitsprimary_S->Fill(nrechitLayerMapS_primary[lme.first]);
202  }
203 }
204 
207  // call the base fillPsetDescription for the plots bookings
209 
210  //for macro-pixel sensors
212  desc.add<edm::InputTag>("SimVertexSource", edm::InputTag("g4SimHits"));
213  desc.add<bool>("associatePixel", false);
214  desc.add<bool>("associateHitbySimTrack", true);
215  desc.add<bool>("Verbosity", false);
216  desc.add<bool>("associateStrip", true);
217  desc.add<edm::InputTag>("phase2TrackerSimLinkSrc", edm::InputTag("simSiPixelDigis", "Tracker"));
218  desc.add<bool>("associateRecoTracks", false);
219  desc.add<edm::InputTag>("pixelSimLinkSrc", edm::InputTag("simSiPixelDigis", "Pixel"));
220  desc.add<bool>("usePhase2Tracker", true);
221  desc.add<edm::InputTag>("rechitsSrc", edm::InputTag("siPhase2RecHits"));
222  desc.add<edm::InputTag>("simTracksSrc", edm::InputTag("g4SimHits"));
223  desc.add<double>("SimTrackMinPt", 2.0);
224  desc.add<std::vector<edm::InputTag>>("PSimHitSource",
225  {
226  edm::InputTag("g4SimHits:TrackerHitsTIBLowTof"),
227  edm::InputTag("g4SimHits:TrackerHitsTIBHighTof"),
228  edm::InputTag("g4SimHits:TrackerHitsTIDLowTof"),
229  edm::InputTag("g4SimHits:TrackerHitsTIDHighTof"),
230  edm::InputTag("g4SimHits:TrackerHitsTOBLowTof"),
231  edm::InputTag("g4SimHits:TrackerHitsTOBHighTof"),
232  edm::InputTag("g4SimHits:TrackerHitsTECLowTof"),
233  edm::InputTag("g4SimHits:TrackerHitsTECHighTof"),
234  edm::InputTag("g4SimHits:TrackerHitsPixelBarrelLowTof"),
235  edm::InputTag("g4SimHits:TrackerHitsPixelBarrelHighTof"),
236  edm::InputTag("g4SimHits:TrackerHitsPixelEndcapLowTof"),
237  edm::InputTag("g4SimHits:TrackerHitsPixelEndcapHighTof"),
238  });
239 
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"});
253  desc.add<edm::InputTag>("tracksSrc", edm::InputTag("generalTracks"));
254  desc.add<std::string>("TopFolderName", "TrackerPhase2OTTrackingRecHitV");
255  descriptions.add("Phase2OTValidateTrackingRecHit", desc);
256 }
257 
258 //define this as a plug-in
Handle.h
PixelSubdetector.h
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11724
MessageLogger.h
PixelSubdetector::PixelEndcap
Definition: PixelSubdetector.h:11
TrackerGeometry.h
PixelSubdetector::PixelBarrel
Definition: PixelSubdetector.h:11
Phase2OTValidateRecHitBase::layerMEs_
std::map< std::string, RecHitME > layerMEs_
Definition: Phase2OTValidateRecHitBase.h:102
ESHandle.h
Phase2OTValidateTrackingRecHit
Definition: Phase2OTValidateTrackingRecHit.cc:52
Phase2OTValidateTrackingRecHit::fillOTHistos
void fillOTHistos(const edm::Event &iEvent, const TrackerHitAssociator &associateRecHit, const std::vector< edm::Handle< edm::PSimHitContainer >> &simHits, const std::map< unsigned int, SimTrack > &selectedSimTrackMap)
Definition: Phase2OTValidateTrackingRecHit.cc:122
TrackerGeometry::ModuleType::Ph2SS
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
edm::EDGetTokenT< reco::TrackCollection >
Phase2OTValidateRecHitBase::tTopo_
const TrackerTopology * tTopo_
Definition: Phase2OTValidateRecHitBase.h:65
edm
HLT enums.
Definition: AlignableModifier.h:19
PSimHitContainer.h
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89301
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
Phase2OTValidateRecHitBase::fillPSetDescription
static void fillPSetDescription(edm::ParameterSetDescription &desc)
Definition: Phase2OTValidateRecHitBase.cc:254
FastTrackerRecHitCombiner_cfi.simHits
simHits
Definition: FastTrackerRecHitCombiner_cfi.py:5
TrackCandidateProducer_cfi.simTracks
simTracks
Definition: TrackCandidateProducer_cfi.py:15
Phase2OTValidateRecHitBase::fillOTRecHitHistos
void fillOTRecHitHistos(const PSimHit *simhitClosest, const Phase2TrackerRecHit1D *rechit, const std::map< unsigned int, SimTrack > &selectedSimTrackMap, std::map< std::string, unsigned int > &nrechitLayerMapP_primary, std::map< std::string, unsigned int > &nrechitLayerMapS_primary)
Definition: Phase2OTValidateRecHitBase.cc:52
TrackerHitAssociator.h
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:46
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
TrackerHitAssociator::Config
Definition: TrackerHitAssociator.h:57
TrackerGeometry::getDetectorType
ModuleType getDetectorType(DetId) const
Definition: TrackerGeometry.cc:247
edm::Handle< edm::PSimHitContainer >
Phase2OTValidateTrackingRecHit::tokenTracks_
const edm::EDGetTokenT< reco::TrackCollection > tokenTracks_
Definition: Phase2OTValidateTrackingRecHit.cc:69
MakerMacros.h
TrackerTopology.h
PSimHit.h
Phase2OTValidateRecHitBase
Definition: Phase2OTValidateRecHitBase.h:44
Track.h
TrackFwd.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
Service.h
TrackerGeometry::ModuleType
ModuleType
Definition: TrackerGeometry.h:29
Phase2OTValidateRecHitBase.h
TrackerPhase2DQMUtil.h
Phase2OTValidateTrackingRecHit::simHitTokens_
std::vector< edm::EDGetTokenT< edm::PSimHitContainer > > simHitTokens_
Definition: Phase2OTValidateTrackingRecHit.cc:71
Point3DBase< float, LocalTag >
PixelGeomDetType.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
Phase2OTValidateTrackingRecHit::Phase2OTValidateTrackingRecHit
Phase2OTValidateTrackingRecHit(const edm::ParameterSet &)
Definition: Phase2OTValidateTrackingRecHit.cc:77
TrackerDigiGeometryRecord.h
Phase2TrackerRecHit1D.h
Phase2OTValidateRecHitBase::tkGeom_
const TrackerGeometry * tkGeom_
Definition: Phase2OTValidateRecHitBase.h:64
edm::ParameterSet
Definition: ParameterSet.h:47
Event.h
tracks
const uint32_t *__restrict__ const HitContainer *__restrict__ TkSoA *__restrict__ tracks
Definition: CAHitNtupletGeneratorKernelsImpl.h:176
TrackerGeomDet.h
Phase2OTValidateTrackingRecHit::simtrackminpt_
const double simtrackminpt_
Definition: Phase2OTValidateTrackingRecHit.cc:68
Phase2OTValidateTrackingRecHit::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: Phase2OTValidateTrackingRecHit.cc:205
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
iEvent
int iEvent
Definition: GenABIO.cc:224
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
PVValHelper::dy
Definition: PVValidationHelpers.h:50
edm::EventSetup
Definition: EventSetup.h:58
Phase2OTValidateTrackingRecHit::analyze
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) override
Definition: Phase2OTValidateTrackingRecHit.cc:101
DetSetVector.h
Phase2OTValidateTrackingRecHit::trackerHitAssociatorConfig_
TrackerHitAssociator::Config trackerHitAssociatorConfig_
Definition: Phase2OTValidateTrackingRecHit.cc:67
TrackerGeometry::ModuleType::Ph2PSS
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
InputTag.h
TrackerHitAssociator
Definition: TrackerHitAssociator.h:55
GeomDet.h
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
BaseTrackerRecHit::localPosition
LocalPoint localPosition() const override
Definition: BaseTrackerRecHit.h:56
edm::SimTrackContainer
std::vector< SimTrack > SimTrackContainer
Definition: SimTrackContainer.h:12
DetId.h
ESWatcher.h
PixelGeomDetUnit.h
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
Phase2OTValidateTrackingRecHit::~Phase2OTValidateTrackingRecHit
~Phase2OTValidateTrackingRecHit() override
Definition: Phase2OTValidateTrackingRecHit.cc:92
Phase2TrackerDigitizerFwd.h
ParameterSet.h
PSimHit
Definition: PSimHit.h:15
Phase2OTValidateTrackingRecHit::config_
edm::ParameterSet config_
Definition: Phase2OTValidateTrackingRecHit.cc:66
edm::Event
Definition: Event.h:73
crabWrapper.key
key
Definition: crabWrapper.py:19
TrackerHitAssociator::associateHitId
std::vector< SimHitIdpr > associateHitId(const TrackingRecHit &thit) const
Definition: TrackerHitAssociator.cc:332
SimTrackContainer.h
DetSetVectorNew.h
edm::InputTag
Definition: InputTag.h:15
PVValHelper::dx
Definition: PVValidationHelpers.h:49
reco::TrackCollection
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
hit
Definition: SiStripHitEffFromCalibTree.cc:88
vertexPlots.e4
e4
Definition: vertexPlots.py:64
Phase2TrackerRecHit1D
Definition: Phase2TrackerRecHit1D.h:10
phase2tkutil::getOTHistoId
std::string getOTHistoId(uint32_t det_id, const TrackerTopology *tTopo)
Definition: TrackerPhase2DQMUtil.cc:25
TrackerGeometry::ModuleType::Ph2PSP
Phase2OTValidateTrackingRecHit::simTracksToken_
const edm::EDGetTokenT< edm::SimTrackContainer > simTracksToken_
Definition: Phase2OTValidateTrackingRecHit.cc:70