CMS 3D CMS Logo

TrackingRecHitProduct.h
Go to the documentation of this file.
1 #ifndef FastSimulation_TrackingRecHitProducer_TrackingRecHitProduct_H
2 #define FastSimulation_TrackingRecHitProducer_TrackingRecHitProduct_H
3 
5 
8 
9 #include <memory>
10 #include <vector>
11 #include <unordered_map>
12 
14 {
15  public:
16  typedef std::pair<unsigned int,const PSimHit*> SimHitIdPair;
17  typedef std::pair<FastSingleTrackerRecHit,std::vector<SimHitIdPair>> RecHitToSimHitIdPairs;
18  protected:
19  const DetId& _detId;
20 
21  std::vector<SimHitIdPair> _simHitsIdPairList;
22 
23  std::vector<RecHitToSimHitIdPairs> _recHits;
24 
25  public:
26  TrackingRecHitProduct(const DetId& detId, std::vector<SimHitIdPair>& simHitsIdPairList):
27  _detId(detId),
28  _simHitsIdPairList(simHitsIdPairList)
29  {
30  }
31 
32  inline const DetId& getDetId() const
33  {
34  return _detId;
35  }
36 
37  virtual std::vector<SimHitIdPair>& getSimHitIdPairs()
38  {
39  return _simHitsIdPairList;
40  }
41 
42  virtual void addRecHit(const FastSingleTrackerRecHit& recHit, std::vector<SimHitIdPair> simHitIdPairs={})
43  {
44  _recHits.push_back(std::make_pair(recHit,simHitIdPairs));
45  for (unsigned int isimhit = 0; isimhit < simHitIdPairs.size(); ++isimhit)
46  {
47  _recHits.back().first.addSimTrackId(simHitIdPairs[isimhit].second->trackId());
48  }
49  }
50 
51  virtual const std::vector<RecHitToSimHitIdPairs>& getRecHitToSimHitIdPairs() const
52  {
53  return _recHits;
54  }
55 
56  virtual unsigned int numberOfRecHits() const
57  {
58  return _recHits.size();
59  }
60 
62  {
63  }
64 };
65 
66 typedef std::shared_ptr<TrackingRecHitProduct> TrackingRecHitProductPtr;
67 
68 #endif
69 
virtual void addRecHit(const FastSingleTrackerRecHit &recHit, std::vector< SimHitIdPair > simHitIdPairs={})
virtual std::vector< SimHitIdPair > & getSimHitIdPairs()
virtual const std::vector< RecHitToSimHitIdPairs > & getRecHitToSimHitIdPairs() const
std::pair< unsigned int, const PSimHit * > SimHitIdPair
std::vector< SimHitIdPair > _simHitsIdPairList
const DetId & getDetId() const
U second(std::pair< T, U > const &p)
std::pair< FastSingleTrackerRecHit, std::vector< SimHitIdPair > > RecHitToSimHitIdPairs
std::shared_ptr< TrackingRecHitProduct > TrackingRecHitProductPtr
Definition: DetId.h:18
virtual unsigned int numberOfRecHits() const
std::vector< RecHitToSimHitIdPairs > _recHits
TrackingRecHitProduct(const DetId &detId, std::vector< SimHitIdPair > &simHitsIdPairList)