99#include " DataFormats/Common/interface/DetSetVectorNew.h"
1010#include " DataFormats/SiPixelCluster/interface/SiPixelCluster.h"
1111#include " DataFormats/SiStripCluster/interface/SiStripClusterfwd.h"
12+ #include " DataFormats/SiStripCluster/interface/SiStripClusterfwd.h"
13+ #include " DataFormats/Phase2TrackerCluster/interface/Phase2TrackerCluster1D.h"
1214
1315#include " RecoTracker/MkFit/interface/MkFitEventOfHits.h"
1416#include " RecoTracker/MkFit/interface/MkFitHitWrapper.h"
@@ -50,6 +52,7 @@ class MkFitProducer : public edm::global::EDProducer<edm::StreamCache<mkfit::MkB
5052 const edm::EDGetTokenT<MkFitSeedWrapper> seedToken_;
5153 edm::EDGetTokenT<edm::ContainerMask<edmNew::DetSetVector<SiPixelCluster>>> pixelMaskToken_;
5254 edm::EDGetTokenT<edm::ContainerMask<edmNew::DetSetVector<SiStripCluster>>> stripMaskToken_;
55+ edm::EDGetTokenT<edm::ContainerMask<edmNew::DetSetVector<Phase2TrackerCluster1D>>> phase2MaskToken_;
5356 const edm::ESGetToken<MkFitGeometry, TrackerRecoGeometryRecord> mkFitGeomToken_;
5457 const edm::ESGetToken<mkfit::IterationConfig, TrackerRecoGeometryRecord> mkFitIterConfigToken_;
5558 const edm::EDPutTokenT<MkFitOutputWrapper> putToken_;
@@ -81,6 +84,7 @@ MkFitProducer::MkFitProducer(edm::ParameterSet const& iConfig)
8184 if (not clustersToSkip.label ().empty ()) {
8285 pixelMaskToken_ = consumes (clustersToSkip);
8386 stripMaskToken_ = consumes (clustersToSkip);
87+ phase2MaskToken_ = consumes (clustersToSkip);
8488 }
8589
8690 const auto build = iConfig.getParameter <std::string>(" buildingRoutine" );
@@ -153,32 +157,42 @@ void MkFitProducer::produce(edm::StreamID iID, edm::Event& iEvent, const edm::Ev
153157 const auto & mkFitGeom = iSetup.getData (mkFitGeomToken_);
154158 const auto & mkFitIterConfig = iSetup.getData (mkFitIterConfigToken_);
155159
156- const std::vector<bool >* pixelMaskPtr = nullptr ;
157- std::vector<bool > pixelMask;
160+ // const std::vector<bool>* pixelMaskPtr = nullptr;
161+ std::vector<bool > pixelMask (pixelHits. hits (). size (), false ) ;
158162 std::vector<bool > stripMask (stripHits.hits ().size (), false );
159163 if (not pixelMaskToken_.isUninitialized ()) {
160164 if (not pixelHits.hits ().empty ()) {
161165 const auto & pixelContainerMask = iEvent.get (pixelMaskToken_);
162- pixelMask.resize (pixelContainerMask.size (), false );
166+ // pixelMask.resize(pixelContainerMask.size(), false);
163167 if UNLIKELY (pixelContainerMask.refProd ().id () != pixelHits.clustersID ()) {
164168 throw cms::Exception (" LogicError" ) << " MkFitHitWrapper has pixel cluster ID " << pixelHits.clustersID ()
165169 << " but pixel cluster mask has " << pixelContainerMask.refProd ().id ();
166170 }
167171 pixelContainerMask.copyMaskTo (pixelMask);
168- pixelMaskPtr = &pixelMask;
172+ // pixelMaskPtr = &pixelMask;
169173 }
170174
171175 if (not stripHits.hits ().empty ()) {
172- const auto & stripContainerMask = iEvent.get (stripMaskToken_);
173- if UNLIKELY (stripContainerMask.refProd ().id () != stripHits.clustersID ()) {
174- throw cms::Exception (" LogicError" ) << " MkFitHitWrapper has strip cluster ID " << stripHits.clustersID ()
175- << " but strip cluster mask has " << stripContainerMask.refProd ().id ();
176+ if (mkFitGeom.isPhase1 ()) {
177+ const auto & stripContainerMask = iEvent.get (stripMaskToken_);
178+ if UNLIKELY (stripContainerMask.refProd ().id () != stripHits.clustersID ()) {
179+ throw cms::Exception (" LogicError" ) << " MkFitHitWrapper has strip cluster ID " << stripHits.clustersID ()
180+ << " but strip cluster mask has " << stripContainerMask.refProd ().id ();
181+ }
182+ stripContainerMask.copyMaskTo (stripMask);
183+ } else {
184+ const auto & stripContainerMask = iEvent.get (phase2MaskToken_);
185+ if UNLIKELY (stripContainerMask.refProd ().id () != stripHits.clustersID ()) {
186+ throw cms::Exception (" LogicError" ) << " MkFitHitWrapper has phase2 cluster ID " << stripHits.clustersID ()
187+ << " but phase2 cluster mask has " << stripContainerMask.refProd ().id ();
188+ }
189+ stripContainerMask.copyMaskTo (stripMask);
176190 }
177- stripContainerMask.copyMaskTo (stripMask);
178191 }
179192 } else {
180- if (mkFitGeom.isPhase1 () && minGoodStripCharge_ > 0 )
193+ if (mkFitGeom.isPhase1 () && minGoodStripCharge_ > 0 ) {
181194 stripClusterChargeCut (iEvent.get (stripClusterChargeToken_), stripMask);
195+ }
182196 }
183197
184198 // seeds need to be mutable because of the possible cleaning
@@ -189,7 +203,8 @@ void MkFitProducer::produce(edm::StreamID iID, edm::Event& iEvent, const edm::Ev
189203 mkfit::run_OneIteration (mkFitGeom.trackerInfo (),
190204 mkFitIterConfig,
191205 eventOfHits.get (),
192- {pixelMaskPtr, &stripMask},
206+ {&pixelMask, &stripMask},
207+ // {pixelMaskPtr, &stripMask},
193208 streamCache (iID)->get (),
194209 seeds_mutable,
195210 tracks,
0 commit comments