17 auto ttClusterDSVForOutput = std::make_unique<edmNew::DetSetVector<TTCluster<Ref_Phase2TrackerDigi_>>>();
18 std::map< DetId, std::vector< Ref_Phase2TrackerDigi_ > > rawHits;
19 this->RetrieveRawHits( rawHits, iEvent );
31 for (
auto gd=theTrackerGeom->
dets().begin(); gd != theTrackerGeom->
dets().end(); gd++) {
32 DetId detid = (*gd)->geographicalId();
34 if(!tTopo->
isLower(detid) )
continue;
35 DetId lowerDetid = detid;
41 std::vector< std::vector< Ref_Phase2TrackerDigi_ > > lowerHits, upperHits;
44 typename std::map< DetId, std::vector< Ref_Phase2TrackerDigi_ > >::const_iterator lowerHitFind = rawHits.find(lowerDetid);
45 typename std::map< DetId, std::vector< Ref_Phase2TrackerDigi_ > >::const_iterator upperHitFind = rawHits.find(upperDetid);
51 if ( lowerHitFind != rawHits.end() ) theClusterFindingAlgoHandle->Cluster( lowerHits, lowerHitFind->second, isPSP );
52 if ( upperHitFind != rawHits.end() ) theClusterFindingAlgoHandle->Cluster( upperHits, upperHitFind->second,
false );
58 for (
unsigned int i = 0;
i < lowerHits.size();
i++ )
63 if ( lowerOutputFiller.
empty() )
64 lowerOutputFiller.abort();
68 for (
unsigned int i = 0;
i < upperHits.size();
i++ )
73 if ( upperOutputFiller.
empty() )
74 upperOutputFiller.abort();
79 iEvent.
put(
std::move(ttClusterDSVForOutput),
"ClusterInclusive" );
89 std::vector< edm::EDGetTokenT< edm::DetSetVector< Phase2TrackerDigi > > >::iterator it;
90 for ( it = rawHitTokens.begin(); it != rawHitTokens.end(); ++it ) {
99 for ( detsIter = HitHandle->begin(); detsIter != HitHandle->end(); detsIter++ ) {
100 DetId id = detsIter->id;
101 for ( hitsIter = detsIter->data.
begin(); hitsIter != detsIter->data.
end(); hitsIter++ ) {
102 mRawHits[id].push_back(
edm::makeRefTo( HitHandle,
id , hitsIter ) );
virtual void produce(edm::Event &iEvent, const edm::EventSetup &iSetup)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Item & push_back(id_type iid)
const DetContainer & dets() const
Returm a vector of all GeomDet (including all GeomDetUnits)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
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
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)
ModuleType getDetectorType(DetId) const
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
iterator end()
Return the off-the-end iterator.
NOTE: this is needed even if it seems not.
uint32_t stack(const DetId &id) const
T const * product() const
iterator begin()
Return an iterator to the first DetSet.
collection_type::const_iterator const_iterator
collection_type::const_iterator const_iterator