00001 #include "TrackingTools/DetLayers/interface/DetLayer.h" 00002 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00003 #include <algorithm> 00004 00005 using namespace std; 00006 00007 DetLayer::~DetLayer() { delete theNavigableLayer;} 00008 00009 00010 void DetLayer::setNavigableLayer( NavigableLayer* nlp) { 00012 theNavigableLayer = nlp; 00013 00014 //nlp=0 amount to cleaning the link. do nothing further 00015 if (nlp){ 00016 if (nlp->detLayer() != this) { 00017 if (nlp->detLayer() != 0) { 00018 edm::LogWarning("DetLayers") << "DetLayer Warning: my navigable layer does not point to me. " 00019 << " Correcting..." ; 00020 } 00021 theNavigableLayer->setDetLayer( this); 00022 } 00023 }//nlp!=0 00024 } 00025 00026 vector<const DetLayer*> 00027 DetLayer::nextLayers( const FreeTrajectoryState& fts, 00028 PropagationDirection timeDirection) const { 00029 return theNavigableLayer 00030 ? theNavigableLayer->nextLayers( fts, timeDirection) 00031 : vector<const DetLayer*>(); 00032 } 00033 00034 vector<const DetLayer*> 00035 DetLayer::nextLayers( NavigationDirection direction) const { 00036 return theNavigableLayer 00037 ? theNavigableLayer->nextLayers( direction) 00038 : vector<const DetLayer*>(); 00039 } 00040 00041 vector<const DetLayer*> 00042 DetLayer::compatibleLayers( const FreeTrajectoryState& fts, 00043 PropagationDirection timeDirection) const { 00044 return theNavigableLayer 00045 ? theNavigableLayer->compatibleLayers( fts, timeDirection) 00046 : vector<const DetLayer*>(); 00047 } 00048 00049 00050 vector<const DetLayer*> 00051 DetLayer::compatibleLayers( const FreeTrajectoryState& fts, 00052 PropagationDirection timeDirection, 00053 int& counter) const { 00054 return theNavigableLayer 00055 ? theNavigableLayer->compatibleLayers( fts, timeDirection,counter) 00056 : vector<const DetLayer*>(); 00057 } 00058 00059 vector<const DetLayer*> 00060 DetLayer::compatibleLayers( NavigationDirection direction) const { 00061 return theNavigableLayer 00062 ? theNavigableLayer->compatibleLayers( direction) 00063 : vector<const DetLayer*>(); 00064 } 00065 00066