16 auto ttClusterDSVForOutput = std::make_unique<edmNew::DetSetVector<TTCluster<Ref_Phase2TrackerDigi_>>>();
17 std::map<DetId, std::vector<Ref_Phase2TrackerDigi_>> rawHits;
18 this->RetrieveRawHits(rawHits, iEvent);
23 auto const& theClusterFindingAlgo = iSetup.
getData(theClusterFindingAlgoToken);
26 for (
auto gd = theTrackerGeom->
dets().begin(); gd != theTrackerGeom->
dets().end(); gd++) {
27 DetId detid = (*gd)->geographicalId();
32 DetId lowerDetid = detid;
37 std::vector<std::vector<Ref_Phase2TrackerDigi_>> lowerHits, upperHits;
40 typename std::map<DetId, std::vector<Ref_Phase2TrackerDigi_>>::const_iterator lowerHitFind =
41 rawHits.find(lowerDetid);
42 typename std::map<DetId, std::vector<Ref_Phase2TrackerDigi_>>::const_iterator upperHitFind =
43 rawHits.find(upperDetid);
49 if (lowerHitFind != rawHits.end())
50 theClusterFindingAlgo.Cluster(lowerHits, lowerHitFind->second, isPSP);
51 if (upperHitFind != rawHits.end())
52 theClusterFindingAlgo.Cluster(upperHits, upperHitFind->second,
false);
59 for (
unsigned int i = 0;
i < lowerHits.size();
i++) {
63 if (lowerOutputFiller.
empty())
64 lowerOutputFiller.abort();
69 for (
unsigned int i = 0;
i < upperHits.size();
i++) {
73 if (upperOutputFiller.
empty())
74 upperOutputFiller.abort();
79 iEvent.
put(
std::move(ttClusterDSVForOutput),
"ClusterInclusive");
88 std::vector<edm::EDGetTokenT<edm::DetSetVector<Phase2TrackerDigi>>>::iterator it;
89 for (it = rawHitTokens.begin(); it != rawHitTokens.end(); ++it) {
97 for (detsIter = HitHandle->begin(); detsIter != HitHandle->end(); detsIter++) {
98 DetId id = detsIter->id;
99 for (hitsIter = detsIter->data.
begin(); hitsIter != detsIter->data.
end(); hitsIter++) {
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
uint16_t *__restrict__ id
Item & push_back(id_type iid)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
const DetContainer & dets() const override
Returm a vector of all GeomDet (including all GeomDetUnits)
void RetrieveRawHits(std::map< DetId, std::vector< T > > &mRawHits, const edm::Event &iEvent)
Get hits.
DetId partnerDetId(const DetId &id) const
bool isLower(const DetId &id) const
bool getData(T &iHolder) const
Ref< typename HandleT::element_type, typename HandleT::element_type::value_type::value_type > makeRefTo(const HandleT &iHandle, det_id_type iDetID, typename HandleT::element_type::value_type::const_iterator itIter)
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
Mandatory methods.
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
ModuleType getDetectorType(DetId) const
iterator end()
Return the off-the-end iterator.
NOTE: this is needed even if it seems not.
iterator begin()
Return an iterator to the first DetSet.
collection_type::const_iterator const_iterator
collection_type::const_iterator const_iterator