#include <RecoTracker/MeasurementDet/interface/MeasurementTracker.h>
Definition at line 37 of file MeasurementTracker.h.
typedef std::map<DetId,MeasurementDet*> MeasurementTracker::DetContainer |
Definition at line 65 of file MeasurementTracker.h.
Definition at line 39 of file MeasurementTracker.h.
00039 { BadModules=1, BadAPVFibers=2, BadStrips=4, MaskBad128StripBlocks=8 };
MeasurementTracker::MeasurementTracker | ( | const edm::ParameterSet & | conf, | |
const PixelClusterParameterEstimator * | pixelCPE, | |||
const StripClusterParameterEstimator * | stripCPE, | |||
const SiStripRecHitMatcher * | hitMatcher, | |||
const TrackerGeometry * | trackerGeom, | |||
const GeometricSearchTracker * | geometricSearchTracker, | |||
const SiStripQuality * | quality, | |||
int | qualityFlags, | |||
int | qualityDebugFlags, | |||
bool | isRegional = false | |||
) |
Definition at line 47 of file MeasurementTracker.cc.
References initialize(), and initializeStripStatus().
00056 : 00057 pset_(conf), 00058 name_(conf.getParameter<std::string>("ComponentName")), 00059 thePixelCPE(pixelCPE),theStripCPE(stripCPE),theHitMatcher(hitMatcher), 00060 theTrackerGeom(trackerGeom),theGeometricSearchTracker(geometricSearchTracker) 00061 ,isRegional_(isRegional) 00062 { 00063 this->initialize(); 00064 this->initializeStripStatus(stripQuality, qualityFlags, qualityDebugFlags); 00065 }
MeasurementTracker::~MeasurementTracker | ( | ) | [virtual] |
Definition at line 67 of file MeasurementTracker.cc.
References it, theGluedDets, thePixelDets, and theStripDets.
00068 { 00069 for(vector<TkPixelMeasurementDet*>::const_iterator it=thePixelDets.begin(); it!=thePixelDets.end(); ++it){ 00070 delete *it; 00071 } 00072 00073 for(vector<TkStripMeasurementDet*>::const_iterator it=theStripDets.begin(); it!=theStripDets.end(); ++it){ 00074 delete *it; 00075 } 00076 00077 for(vector<TkGluedMeasurementDet*>::const_iterator it=theGluedDets.begin(); it!=theGluedDets.end(); ++it){ 00078 delete *it; 00079 } 00080 }
void MeasurementTracker::addGluedDet | ( | const GluedGeomDet * | gd, | |
const SiStripRecHitMatcher * | matcher | |||
) | const [protected] |
Definition at line 148 of file MeasurementTracker.cc.
References addStripDet(), GeomDet::geographicalId(), GluedGeomDet::geographicalId(), idToDet(), GluedGeomDet::monoDet(), GluedGeomDet::stereoDet(), theDetMap, theGluedDets, theHitMatcher, and theStripCPE.
Referenced by addStripDets().
00150 { 00151 const MeasurementDet* monoDet = idToDet( gd->monoDet()->geographicalId()); 00152 if (monoDet == 0) { 00153 addStripDet(gd->monoDet(), theStripCPE); // in case glued det comes before components 00154 monoDet = idToDet( gd->monoDet()->geographicalId()); 00155 } 00156 00157 const MeasurementDet* stereoDet = idToDet( gd->stereoDet()->geographicalId()); 00158 if (stereoDet == 0) { 00159 addStripDet(gd->stereoDet(), theStripCPE); // in case glued det comes before components 00160 stereoDet = idToDet( gd->stereoDet()->geographicalId()); 00161 } 00162 00163 if (monoDet == 0 || stereoDet == 0) { 00164 edm::LogError("MeasurementDet") << "MeasurementTracker ERROR: GluedDet components not found as MeasurementDets "; 00165 throw MeasurementDetException("MeasurementTracker ERROR: GluedDet components not found as MeasurementDets"); 00166 } 00167 00168 TkGluedMeasurementDet* det = new TkGluedMeasurementDet( gd, theHitMatcher, 00169 monoDet, stereoDet); 00170 theGluedDets.push_back( det); 00171 theDetMap[gd->geographicalId()] = det; 00172 }
void MeasurementTracker::addPixelDet | ( | const GeomDet * | gd, | |
const PixelClusterParameterEstimator * | cpe | |||
) | const [protected] |
Definition at line 140 of file MeasurementTracker.cc.
References GeomDet::geographicalId(), theDetMap, and thePixelDets.
Referenced by addPixelDets().
00142 { 00143 TkPixelMeasurementDet* det = new TkPixelMeasurementDet( gd, cpe); 00144 thePixelDets.push_back(det); 00145 theDetMap[gd->geographicalId()] = det; 00146 }
void MeasurementTracker::addPixelDets | ( | const TrackingGeometry::DetContainer & | dets | ) | const [protected] |
Definition at line 94 of file MeasurementTracker.cc.
References addPixelDet(), and thePixelCPE.
Referenced by initialize().
00095 { 00096 for (TrackerGeometry::DetContainer::const_iterator gd=dets.begin(); 00097 gd != dets.end(); gd++) { 00098 addPixelDet(*gd, thePixelCPE); 00099 } 00100 }
void MeasurementTracker::addStripDet | ( | const GeomDet * | gd, | |
const StripClusterParameterEstimator * | cpe | |||
) | const [protected] |
Definition at line 127 of file MeasurementTracker.cc.
References err, GeomDet::geographicalId(), isRegional_, theDetMap, theStripDets, and cms::Exception::what().
Referenced by addGluedDet(), and addStripDets().
00129 { 00130 try { 00131 TkStripMeasurementDet* det = new TkStripMeasurementDet( gd, cpe,isRegional_); 00132 theStripDets.push_back(det); 00133 theDetMap[gd->geographicalId()] = det; 00134 } 00135 catch(MeasurementDetException& err){ 00136 edm::LogError("MeasurementDet") << "Oops, got a MeasurementDetException: " << err.what() ; 00137 } 00138 }
void MeasurementTracker::addStripDets | ( | const TrackingGeometry::DetContainer & | dets | ) | const [protected] |
Definition at line 102 of file MeasurementTracker.cc.
References addGluedDet(), addStripDet(), theHitMatcher, and theStripCPE.
Referenced by initialize().
00103 { 00104 for (TrackerGeometry::DetContainer::const_iterator gd=dets.begin(); 00105 gd != dets.end(); gd++) { 00106 00107 const GeomDetUnit* gdu = dynamic_cast<const GeomDetUnit*>(*gd); 00108 00109 // StripSubdetector stripId( (**gd).geographicalId()); 00110 // bool isDetUnit( gdu != 0); 00111 // cout << "StripSubdetector glued? " << stripId.glued() 00112 // << " is DetUnit? " << isDetUnit << endl; 00113 00114 if (gdu != 0) { 00115 addStripDet(*gd, theStripCPE); 00116 } 00117 else { 00118 const GluedGeomDet* gluedDet = dynamic_cast<const GluedGeomDet*>(*gd); 00119 if (gluedDet == 0) { 00120 throw MeasurementDetException("MeasurementTracker ERROR: GeomDet neither DetUnit nor GluedDet"); 00121 } 00122 addGluedDet(gluedDet, theHitMatcher); 00123 } 00124 } 00125 }
const DetContainer& MeasurementTracker::allDets | ( | ) | const [inline] |
For debug only.
Definition at line 68 of file MeasurementTracker.h.
References theDetMap.
00068 {return theDetMap;}
const GeometricSearchTracker* MeasurementTracker::geometricSearchTracker | ( | ) | const [inline] |
Definition at line 60 of file MeasurementTracker.h.
References theGeometricSearchTracker.
Referenced by CkfDebugger::analyseCompatibleMeasurements(), StartingLayerFinder::checkPixelLayers(), MuonRoadTrajectoryBuilder::cleanTrajectory(), RoadSearchTrackCandidateMakerAlgorithm::extrapolateTrajectory(), RoadSearchTrackCandidateMakerAlgorithm::FindBestHit(), RoadSearchTrackCandidateMakerAlgorithm::FindBestHits(), RoadSearchTrackCandidateMakerAlgorithm::FindBestHitsByDet(), MuonCkfTrajectoryBuilder::findCompatibleMeasurements(), BaseCkfTrajectoryBuilder::findStateAndLayers(), MuonRoadTrajectoryBuilder::makeTrajectories_0(), RoadSearchTrackCandidateMakerAlgorithm::PrepareTrackCandidates(), RoadSearchTrackCandidateMakerAlgorithm::run(), BaseCkfTrajectoryBuilder::seedMeasurements(), PixelHitMatcher::setES(), and StartingLayerFinder::startingLayers().
00060 {return theGeometricSearchTracker;}
const TrackingGeometry* MeasurementTracker::geomTracker | ( | ) | const [inline] |
Definition at line 58 of file MeasurementTracker.h.
References theTrackerGeom.
Referenced by MuonCkfTrajectoryBuilder::findCompatibleMeasurements(), BaseCkfTrajectoryBuilder::findStateAndLayers(), MuonRoadTrajectoryBuilder::makeTrajectories_0(), BaseCkfTrajectoryBuilder::seedMeasurements(), ConversionSeedFinder::setEvent(), StartingLayerFinder::startingLayers(), and OutInConversionTrackFinder::tracks().
00058 { return theTrackerGeom;}
const std::vector<TkGluedMeasurementDet*>& MeasurementTracker::gluedDets | ( | ) | const [inline] |
Definition at line 71 of file MeasurementTracker.h.
References theGluedDets.
00071 {return theGluedDets;}
const MeasurementDet * MeasurementTracker::idToDet | ( | const DetId & | id | ) | const [virtual] |
MeasurementDetSystem interface.
Implements MeasurementDetSystem.
Reimplemented in OnDemandMeasurementTracker.
Definition at line 364 of file MeasurementTracker.cc.
Referenced by addGluedDet(), CkfDebugger::analyseRecHitExistance(), MuonRoadTrajectoryBuilder::GatherHits(), SimpleDAFHitCollector::recHits(), TrajectorySegmentBuilder::redoMeasurements(), and updateStrips().
00365 { 00366 std::map<DetId,MeasurementDet*>::const_iterator it = theDetMap.find(id); 00367 if(it !=theDetMap.end()) { 00368 return it->second; 00369 }else{ 00370 //throw exception; 00371 } 00372 00373 return 0; //to avoid compile warning 00374 }
Definition at line 83 of file MeasurementTracker.cc.
References addPixelDets(), addStripDets(), TrackerGeometry::detsPXB(), TrackerGeometry::detsPXF(), TrackerGeometry::detsTEC(), TrackerGeometry::detsTIB(), TrackerGeometry::detsTID(), TrackerGeometry::detsTOB(), and theTrackerGeom.
Referenced by MeasurementTracker().
00084 { 00085 addPixelDets( theTrackerGeom->detsPXB()); 00086 addPixelDets( theTrackerGeom->detsPXF()); 00087 addStripDets( theTrackerGeom->detsTIB()); 00088 addStripDets( theTrackerGeom->detsTID()); 00089 addStripDets( theTrackerGeom->detsTOB()); 00090 addStripDets( theTrackerGeom->detsTEC()); 00091 }
void MeasurementTracker::initializeStripStatus | ( | const SiStripQuality * | stripQuality, | |
int | qualityFlags, | |||
int | qualityDebugFlags | |||
) | const [protected] |
Definition at line 376 of file MeasurementTracker.cc.
References BadAPVFibers, BadModules, BadStrips, SiStripBadStrip::decode(), SiStripQuality::getBadApvs(), SiStripQuality::getBadFibers(), SiStripBadStrip::getRange(), i, int, SiStripQuality::IsModuleUsable(), j, MaskBad128StripBlocks, range, and theStripDets.
Referenced by MeasurementTracker().
00376 { 00377 if ((quality != 0) && (qualityFlags != 0)) { 00378 edm::LogInfo("MeasurementTracker") << "qualityFlags = " << qualityFlags; 00379 unsigned int on = 0, tot = 0; 00380 unsigned int foff = 0, ftot = 0, aoff = 0, atot = 0; 00381 for (std::vector<TkStripMeasurementDet*>::const_iterator i=theStripDets.begin(); 00382 i!=theStripDets.end(); i++) { 00383 uint32_t detid = ((**i).geomDet().geographicalId()).rawId(); 00384 if (qualityFlags & BadModules) { 00385 bool isOn = quality->IsModuleUsable(detid); 00386 (*i)->setActive(isOn); 00387 tot++; on += (unsigned int) isOn; 00388 if (qualityDebugFlags & BadModules) { 00389 edm::LogInfo("MeasurementTracker")<< "MeasurementTracker::initializeStripStatus : detid " << detid << " is " << (isOn ? "on" : "off"); 00390 } 00391 } else { 00392 (*i)->setActive(true); 00393 } 00394 // first turn all APVs and fibers ON 00395 (*i)->set128StripStatus(true); 00396 if (qualityFlags & BadAPVFibers) { 00397 short badApvs = quality->getBadApvs(detid); 00398 short badFibers = quality->getBadFibers(detid); 00399 for (int j = 0; j < 6; j++) { 00400 atot++; 00401 if (badApvs & (1 << j)) { 00402 (*i)->set128StripStatus(false, j); 00403 aoff++; 00404 } 00405 } 00406 for (int j = 0; j < 3; j++) { 00407 ftot++; 00408 if (badFibers & (1 << j)) { 00409 (*i)->set128StripStatus(false, 2*j); 00410 (*i)->set128StripStatus(false, 2*j+1); 00411 foff++; 00412 } 00413 } 00414 (*i)->setMaskBad128StripBlocks(qualityFlags & MaskBad128StripBlocks != 0); 00415 } 00416 std::vector<TkStripMeasurementDet::BadStripBlock> &badStrips = (*i)->getBadStripBlocks(); 00417 badStrips.clear(); 00418 if (qualityFlags & BadStrips) { 00419 SiStripBadStrip::Range range = quality->getRange(detid); 00420 for (SiStripBadStrip::ContainerIterator bit = range.first; bit != range.second; ++bit) { 00421 badStrips.push_back(quality->decode(*bit)); 00422 } 00423 } 00424 } 00425 if (qualityDebugFlags & BadModules) { 00426 edm::LogInfo("MeasurementTracker StripModuleStatus") << 00427 " Total modules: " << tot << ", active " << on <<", inactive " << (tot - on); 00428 } 00429 if (qualityDebugFlags & BadAPVFibers) { 00430 edm::LogInfo("MeasurementTracker StripAPVStatus") << 00431 " Total APVs: " << atot << ", active " << (atot-aoff) <<", inactive " << (aoff); 00432 edm::LogInfo("MeasurementTracker StripFiberStatus") << 00433 " Total Fibers: " << ftot << ", active " << (ftot-foff) <<", inactive " << (foff); 00434 } 00435 } else { 00436 for (std::vector<TkStripMeasurementDet*>::const_iterator i=theStripDets.begin(); 00437 i!=theStripDets.end(); i++) { 00438 (*i)->setActive(true); // module ON 00439 (*i)->set128StripStatus(true); // all APVs and fibers ON 00440 } 00441 } 00442 }
const std::vector<TkPixelMeasurementDet*>& MeasurementTracker::pixelDets | ( | ) | const [inline] |
Definition at line 70 of file MeasurementTracker.h.
References thePixelDets.
00070 {return thePixelDets;}
const std::vector<TkStripMeasurementDet*>& MeasurementTracker::stripDets | ( | ) | const [inline] |
Definition at line 69 of file MeasurementTracker.h.
References theStripDets.
00069 {return theStripDets;}
void MeasurementTracker::update | ( | const edm::Event & | event | ) | const [virtual] |
Reimplemented in OnDemandMeasurementTracker.
Definition at line 174 of file MeasurementTracker.cc.
References updatePixels(), and updateStrips().
Referenced by RectangularEtaPhiTrackingRegion::hits(), ElectronPixelSeedGenerator::run(), RoadSearchTrackCandidateMakerAlgorithm::run(), MuonRoadTrajectoryBuilder::setEvent(), NuclearInteractionFinder::setEvent(), HICTrajectoryBuilder::setEvent(), ConversionTrackFinder::setEvent(), GroupedCkfTrajectoryBuilder::setEvent(), ConversionSeedFinder::setEvent(), CkfTrajectoryBuilder::setEvent(), and MultiRecHitCollector::updateEvent().
00175 { 00176 updatePixels(event); 00177 updateStrips(event); 00178 00179 /* 00180 for (std::vector<TkStripMeasurementDet*>::const_iterator i=theStripDets.begin(); 00181 i!=theStripDets.end(); i++) { 00182 if( (*i)->isEmpty()){ 00183 std::cout << "stripDet id, #hits: " 00184 << (*i)->geomDet().geographicalId().rawId() << " , " 00185 << 0 << std::endl; 00186 }else{ 00187 std::cout << "stripDet id, #hits: " 00188 << (*i)->geomDet().geographicalId().rawId() << " , " 00189 << (*i)->size() << std::endl; 00190 } 00191 } 00192 */ 00193 }
void MeasurementTracker::updatePixels | ( | const edm::Event & | event | ) | const |
Definition at line 196 of file MeasurementTracker.cc.
References edmNew::DetSetVector< T >::empty(), edmNew::DetSetVector< T >::end(), edm::ParameterSet::existsAs(), edmNew::DetSetVector< T >::find(), edm::ParameterSet::getParameter(), i, it, name_, HLT_VtxMuL3::pixelClusterProducer, edm::Handle< T >::product(), pset_, and thePixelDets.
Referenced by update(), and OnDemandMeasurementTracker::update().
00197 { 00198 // avoid to update twice from the same event 00199 if (!edm::Service<UpdaterService>()->checkOnce("MeasurementTracker::updatePixels::"+name_)) return; 00200 00201 typedef edmNew::DetSet<SiPixelCluster> PixelDetSet; 00202 00203 bool switchOffPixelsIfEmpty = (!pset_.existsAs<bool>("switchOffPixelsIfEmpty")) || 00204 (pset_.getParameter<bool>("switchOffPixelsIfEmpty") == false); 00205 // Pixel Clusters 00206 std::string pixelClusterProducer = pset_.getParameter<std::string>("pixelClusterProducer"); 00207 if( pixelClusterProducer.empty() ) { //clusters have not been produced 00208 for (std::vector<TkPixelMeasurementDet*>::const_iterator i=thePixelDets.begin(); 00209 i!=thePixelDets.end(); i++) { 00210 if (switchOffPixelsIfEmpty) { 00211 (**i).setActive(false); 00212 }else{ 00213 (**i).setEmpty(); 00214 } 00215 } 00216 }else{ 00217 edm::Handle<edmNew::DetSetVector<SiPixelCluster> > pixelClusters; 00218 event.getByLabel(pixelClusterProducer, pixelClusters); 00219 const edmNew::DetSetVector<SiPixelCluster>* pixelCollection = pixelClusters.product(); 00220 00221 if (switchOffPixelsIfEmpty && pixelCollection->empty()) { 00222 for (std::vector<TkPixelMeasurementDet*>::const_iterator i=thePixelDets.begin(); 00223 i!=thePixelDets.end(); i++) { 00224 (**i).setActive(false); 00225 } 00226 } else { 00227 for (std::vector<TkPixelMeasurementDet*>::const_iterator i=thePixelDets.begin(); 00228 i!=thePixelDets.end(); i++) { 00229 00230 (**i).setActive(true); 00231 // foreach det get cluster range 00232 unsigned int id = (**i).geomDet().geographicalId().rawId(); 00233 edmNew::DetSetVector<SiPixelCluster>::const_iterator it = pixelCollection->find( id ); 00234 if ( it != pixelCollection->end() ){ 00235 // push cluster range in det 00236 (**i).update( *it, pixelClusters, id ); 00237 }else{ 00238 (**i).setEmpty(); 00239 } 00240 } 00241 } 00242 } 00243 00244 }
void MeasurementTracker::updateStrips | ( | const edm::Event & | event | ) | const |
Reimplemented in OnDemandMeasurementTracker.
Definition at line 246 of file MeasurementTracker.cc.
References edm::RegionIndex< T >::begin(), edmNew::DetSetVector< T >::end(), edm::RegionIndex< T >::end(), edmNew::DetSetVector< T >::find(), edm::ParameterSet::getParameter(), i, idToDet(), isRegional_, it, name_, edm::Handle< T >::product(), pset_, HLT_VtxMuL3::stripClusterProducer, theStripDets, and TkStripMeasurementDet::update().
Referenced by update(), and OnDemandMeasurementTracker::update().
00247 { 00248 // avoid to update twice from the same event 00249 if (!edm::Service<UpdaterService>()->checkOnce("MeasurementTracker::updateStrips::"+name_)) return; 00250 00251 typedef edmNew::DetSet<SiStripCluster> StripDetSet; 00252 00253 // Strip Clusters 00254 std::string stripClusterProducer = pset_.getParameter<std::string>("stripClusterProducer"); 00255 if( !stripClusterProducer.compare("") ) { //clusters have not been produced 00256 for (std::vector<TkStripMeasurementDet*>::const_iterator i=theStripDets.begin(); 00257 i!=theStripDets.end(); i++) { 00258 (**i).setEmpty(); 00259 } 00260 }else{ 00261 //========= actually load cluster ============= 00262 if(!isRegional_){ 00263 edm::Handle<edmNew::DetSetVector<SiStripCluster> > clusterHandle; 00264 event.getByLabel(stripClusterProducer, clusterHandle); 00265 const edmNew::DetSetVector<SiStripCluster>* clusterCollection = clusterHandle.product(); 00266 00267 for (std::vector<TkStripMeasurementDet*>::const_iterator i=theStripDets.begin(); 00268 i!=theStripDets.end(); i++) { 00269 00270 // foreach det get cluster range 00271 unsigned int id = (**i).geomDet().geographicalId().rawId(); 00272 edmNew::DetSetVector<SiStripCluster>::const_iterator it = clusterCollection->find( id ); 00273 if ( it != clusterCollection->end() ){ 00274 StripDetSet detSet = (*clusterCollection)[ id ]; 00275 // push cluster range in det 00276 (**i).update( detSet, clusterHandle, id ); 00277 00278 }else{ 00279 (**i).setEmpty(); 00280 } 00281 } 00282 }else{ 00283 //first clear all of them 00284 for (std::vector<TkStripMeasurementDet*>::const_iterator i=theStripDets.begin(); 00285 i!=theStripDets.end(); i++) { 00286 (**i).setEmpty(); 00287 } 00288 00289 //then set the not-empty ones only 00290 edm::Handle<edm::RefGetter<SiStripCluster> > refClusterHandle; 00291 event.getByLabel(stripClusterProducer, refClusterHandle); 00292 00293 std::string lazyGetter = pset_.getParameter<std::string>("stripLazyGetterProducer"); 00294 edm::Handle<edm::LazyGetter<SiStripCluster> > lazyClusterHandle; 00295 event.getByLabel(lazyGetter,lazyClusterHandle); 00296 00297 uint32_t tmpId=0; 00298 vector<SiStripCluster>::const_iterator beginIterator; 00299 edm::RefGetter<SiStripCluster>::const_iterator iregion = refClusterHandle->begin(); 00300 for(;iregion!=refClusterHandle->end();++iregion) { 00301 const edm::RegionIndex<SiStripCluster>& region = *iregion; 00302 vector<SiStripCluster>::const_iterator icluster = region.begin(); 00303 const vector<SiStripCluster>::const_iterator endIterator = region.end(); 00304 tmpId = icluster->geographicalId(); 00305 beginIterator = icluster; 00306 00307 //std::cout << "== tmpId ad inizio loop dentro region: " << tmpId << std::endl; 00308 00309 for (;icluster!=endIterator;icluster++) { 00310 //std::cout << "===== cluster id,pos " 00311 // << icluster->geographicalId() << " , " << icluster->barycenter() 00312 // << std::endl; 00313 //std::cout << "=====making ref in recHits() " << std::endl; 00314 if( icluster->geographicalId() != tmpId){ 00315 //std::cout << "geo!=tmpId" << std::endl; 00316 //we should find a way to avoid this casting. it is slow 00317 //create also another map for TkStripMeasurementDet ?? 00318 00319 // the following castings are really ugly. To be corrected ASAP 00320 const TkStripMeasurementDet* theConcreteDet = 00321 dynamic_cast<const TkStripMeasurementDet*>(idToDet(DetId(tmpId))); 00322 00323 if(theConcreteDet == 0) 00324 throw MeasurementDetException("failed casting to TkStripMeasurementDet*"); 00325 TkStripMeasurementDet* theConcreteDetUpdatable = 00326 const_cast<TkStripMeasurementDet*>(theConcreteDet); 00327 theConcreteDetUpdatable->update(beginIterator,icluster,lazyClusterHandle,tmpId); 00328 //cannot we avoid to update the det with detId of itself?? 00329 00330 tmpId = icluster->geographicalId(); 00331 beginIterator = icluster; 00332 if( icluster == (endIterator-1)){ 00333 const TkStripMeasurementDet* theConcreteDet = 00334 dynamic_cast<const TkStripMeasurementDet*>(idToDet(DetId(tmpId))); 00335 00336 if(theConcreteDet == 0) 00337 throw MeasurementDetException("failed casting to TkStripMeasurementDet*"); 00338 TkStripMeasurementDet* theConcreteDetUpdatable = 00339 const_cast<TkStripMeasurementDet*>(theConcreteDet); 00340 theConcreteDetUpdatable->update(icluster,endIterator,lazyClusterHandle,tmpId); 00341 } 00342 }else if( icluster == (endIterator-1)){ 00343 const TkStripMeasurementDet* theConcreteDet = 00344 dynamic_cast<const TkStripMeasurementDet*>(idToDet(DetId(tmpId))); 00345 00346 if(theConcreteDet == 0) 00347 throw MeasurementDetException("failed casting to TkStripMeasurementDet*"); 00348 TkStripMeasurementDet* theConcreteDetUpdatable = 00349 const_cast<TkStripMeasurementDet*>(theConcreteDet); 00350 //std::cout << "=== option3. fill det with id,#clust: " << tmpId << " , " 00351 // << iregion->end() - beginIterator << std::endl; 00352 theConcreteDetUpdatable->update(beginIterator,endIterator,lazyClusterHandle,tmpId); 00353 } 00354 }//end loop cluster in one ragion 00355 } 00356 }//end of block for updating with regional clusters 00357 } 00358 00359 }
bool MeasurementTracker::isRegional_ [protected] |
Definition at line 90 of file MeasurementTracker.h.
Referenced by addStripDet(), and updateStrips().
const std::string MeasurementTracker::name_ [protected] |
Definition at line 76 of file MeasurementTracker.h.
Referenced by updatePixels(), OnDemandMeasurementTracker::updateStrips(), and updateStrips().
const edm::ParameterSet& MeasurementTracker::pset_ [protected] |
Definition at line 75 of file MeasurementTracker.h.
Referenced by updatePixels(), OnDemandMeasurementTracker::updateStrips(), and updateStrips().
DetContainer MeasurementTracker::theDetMap [mutable, protected] |
Definition at line 78 of file MeasurementTracker.h.
Referenced by addGluedDet(), addPixelDet(), addStripDet(), allDets(), idToDet(), and OnDemandMeasurementTracker::OnDemandMeasurementTracker().
const GeometricSearchTracker* MeasurementTracker::theGeometricSearchTracker [protected] |
std::vector<TkGluedMeasurementDet*> MeasurementTracker::theGluedDets [mutable, protected] |
Definition at line 81 of file MeasurementTracker.h.
Referenced by addGluedDet(), gluedDets(), and ~MeasurementTracker().
const SiStripRecHitMatcher* MeasurementTracker::theHitMatcher [protected] |
Definition at line 85 of file MeasurementTracker.h.
Referenced by addGluedDet(), and addStripDets().
const PixelClusterParameterEstimator* MeasurementTracker::thePixelCPE [protected] |
std::vector<TkPixelMeasurementDet*> MeasurementTracker::thePixelDets [mutable, protected] |
Definition at line 80 of file MeasurementTracker.h.
Referenced by addPixelDet(), pixelDets(), updatePixels(), and ~MeasurementTracker().
const StripClusterParameterEstimator* MeasurementTracker::theStripCPE [protected] |
Definition at line 84 of file MeasurementTracker.h.
Referenced by addGluedDet(), and addStripDets().
std::vector<TkStripMeasurementDet*> MeasurementTracker::theStripDets [mutable, protected] |
Definition at line 79 of file MeasurementTracker.h.
Referenced by addStripDet(), initializeStripStatus(), stripDets(), updateStrips(), and ~MeasurementTracker().
const SiStripQuality* MeasurementTracker::theStripQuality [protected] |
Definition at line 88 of file MeasurementTracker.h.
const TrackerGeometry* MeasurementTracker::theTrackerGeom [protected] |