CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Types | Private Member Functions | Private Attributes
TkDetMap Class Reference

#include <TkDetMap.h>

Public Member Functions

int16_t FindLayer (uint32_t &detid, uint32_t &cached_detid, int16_t &cached_layer, TkLayerMap::XYbin &cached_XYbin) const
 
void getComponents (int layer, int &nchX, double &lowX, double &highX, int &nchY, double &lowY, double &highY) const
 
uint32_t getDetFromBin (int layer, int ix, int iy) const
 
uint32_t getDetFromBin (const std::string &layerName, int ix, int iy) const
 
void getDetsForLayer (int layer, std::vector< uint32_t > &output) const
 
std::string getLayerName (int &in) const
 
int getLayerNum (const std::string &in) const
 
void getSubDetLayerSide (int &in, SiStripDetId::SubDetector &, uint32_t &layer, uint32_t &side) const
 
const TkLayerMap::XYbingetXY (uint32_t &, uint32_t &cached_detid, int16_t &cached_layer, TkLayerMap::XYbin &cached_XYbin) const
 
 TkDetMap ()
 
 TkDetMap (const edm::ParameterSet &, const edm::ActivityRegistry &)
 
 ~TkDetMap ()
 

Private Types

typedef std::vector< const
TkLayerMap * > 
detmapType
 

Private Member Functions

void doMe ()
 

Private Attributes

detmapType TkMap
 

Detailed Description

Definition at line 110 of file TkDetMap.h.

Member Typedef Documentation

typedef std::vector<const TkLayerMap*> TkDetMap::detmapType
private

Definition at line 138 of file TkDetMap.h.

Constructor & Destructor Documentation

TkDetMap::TkDetMap ( )

Definition at line 630 of file TkDetMap.cc.

References doMe().

630  {
631  doMe();
632 }
void doMe()
Definition: TkDetMap.cc:634
TkDetMap::TkDetMap ( const edm::ParameterSet p,
const edm::ActivityRegistry a 
)

Definition at line 626 of file TkDetMap.cc.

References doMe().

626  {
627  doMe();
628 }
void doMe()
Definition: TkDetMap.cc:634
TkDetMap::~TkDetMap ( )

Definition at line 644 of file TkDetMap.cc.

References TkMap.

644  {
645  detmapType::iterator iter=TkMap.begin();
646  detmapType::iterator iterE=TkMap.end();
647 
648  for(;iter!=iterE;++iter)
649  delete (*iter);
650 }
detmapType TkMap
Definition: TkDetMap.h:139

Member Function Documentation

void TkDetMap::doMe ( )
private

Definition at line 634 of file TkDetMap.cc.

References LogTrace, and TkMap.

Referenced by TkDetMap().

634  {
635  LogTrace("TkDetMap") <<"TkDetMap::constructor ";
636 
637  TkMap.resize(35);
638  //Create TkLayerMap for each layer declared in the TkLayerEnum
639  for(int layer=1;layer<35;++layer){
640  TkMap[layer]=new TkLayerMap(layer);
641  }
642 }
detmapType TkMap
Definition: TkDetMap.h:139
#define LogTrace(id)
int16_t TkDetMap::FindLayer ( uint32_t &  detid,
uint32_t &  cached_detid,
int16_t &  cached_layer,
TkLayerMap::XYbin cached_XYbin 
) const

Definition at line 664 of file TkDetMap.cc.

References cond::rpcobgas::detid, TkLayerMap::XYbin::ix, TkLayerMap::XYbin::iy, TkLayerMap::layerSearch(), LogTrace, and TkMap.

Referenced by TkHistoMap::add(), SiStripMonitorMuonHLT::analyze(), SiStripMonitorMuonHLT::analyzeOnTrackClusters(), TkHistoMap::fill(), SiStripMonitorMuonHLT::GeometryFromTrackGeom(), TkHistoMap::getEntries(), TkHistoMap::getValue(), getXY(), SiStripMonitorMuonHLT::Normalizer(), and TkHistoMap::setBinContent().

664  {
665 
666  if(detid==cached_detid)
667  return cached_layer;
668 
669  cached_detid=detid;
670 
671  int16_t layer=TkLayerMap::layerSearch(detid);
672  LogTrace("TkDetMap") <<"[FindLayer] detid "<< detid << " layer " << layer;
673  if(layer!=cached_layer){
674  cached_layer=layer;
675  }
676  cached_XYbin=TkMap[cached_layer]->getXY(detid,layer);
677  LogTrace("TkDetMap") <<"[FindLayer] detid "<< detid << " cached_XYbin " << cached_XYbin.ix << " "<< cached_XYbin.iy;
678 
679  return cached_layer;
680 }
static const int16_t layerSearch(uint32_t detid)
Definition: TkDetMap.cc:89
detmapType TkMap
Definition: TkDetMap.h:139
#define LogTrace(id)
void TkDetMap::getComponents ( int  layer,
int &  nchX,
double &  lowX,
double &  highX,
int &  nchY,
double &  lowY,
double &  highY 
) const

Definition at line 684 of file TkDetMap.cc.

References TkMap.

Referenced by TkHistoMap::createTkHistoMap().

686  {
687  nchX=TkMap[layer]->get_nchX();
688  lowX=TkMap[layer]->get_lowX();
689  highX=TkMap[layer]->get_highX();
690  nchY=TkMap[layer]->get_nchY();
691  lowY=TkMap[layer]->get_lowY();
692  highY=TkMap[layer]->get_highY();
693 }
detmapType TkMap
Definition: TkDetMap.h:139
uint32_t TkDetMap::getDetFromBin ( int  layer,
int  ix,
int  iy 
) const
inline

Definition at line 128 of file TkDetMap.h.

References TkMap.

Referenced by TkHistoMap::createTkHistoMap(), TkHistoMap::getDetId(), and SiStripQualityChecker::getModuleStatus().

128 { return TkMap[layer]->getDetFromBin(ix,iy); }
detmapType TkMap
Definition: TkDetMap.h:139
uint32_t TkDetMap::getDetFromBin ( const std::string &  layerName,
int  ix,
int  iy 
) const
inline

Definition at line 129 of file TkDetMap.h.

References getDetFromBin(), and getLayerNum().

Referenced by getDetFromBin().

129 {return getDetFromBin(getLayerNum(layerName),ix,iy);}
int getLayerNum(const std::string &in) const
Definition: TkDetMap.cc:777
uint32_t getDetFromBin(int layer, int ix, int iy) const
Definition: TkDetMap.h:128
void TkDetMap::getDetsForLayer ( int  layer,
std::vector< uint32_t > &  output 
) const

Definition at line 695 of file TkDetMap.cc.

References edm::size_(), and TkMap.

Referenced by TkHistoMap::dumpInTkMap(), and SiStripTrackerMapCreator::paintTkMapFromHistogram().

695  {
696  output.clear();
697  size_t size_=TkMap[layer]->get_nchX()*TkMap[layer]->get_nchY();
698  output.resize(size_);
699  memcpy((void*)&output[0],(void*)TkMap[layer]->getBinToDet(),size_*sizeof(uint32_t));
700 }
detmapType TkMap
Definition: TkDetMap.h:139
size_(0)
Definition: OwnArray.h:181
std::string TkDetMap::getLayerName ( int &  in) const

Definition at line 702 of file TkDetMap.cc.

References TkLayerMap::TECM_W1, TkLayerMap::TECM_W2, TkLayerMap::TECM_W3, TkLayerMap::TECM_W4, TkLayerMap::TECM_W5, TkLayerMap::TECM_W6, TkLayerMap::TECM_W7, TkLayerMap::TECM_W8, TkLayerMap::TECM_W9, TkLayerMap::TECP_W1, TkLayerMap::TECP_W2, TkLayerMap::TECP_W3, TkLayerMap::TECP_W4, TkLayerMap::TECP_W5, TkLayerMap::TECP_W6, TkLayerMap::TECP_W7, TkLayerMap::TECP_W8, TkLayerMap::TECP_W9, TkLayerMap::TIB_L1, TkLayerMap::TIB_L2, TkLayerMap::TIB_L3, TkLayerMap::TIB_L4, TkLayerMap::TIDM_D1, TkLayerMap::TIDM_D2, TkLayerMap::TIDM_D3, TkLayerMap::TIDP_D1, TkLayerMap::TIDP_D2, TkLayerMap::TIDP_D3, TkLayerMap::TOB_L1, TkLayerMap::TOB_L2, TkLayerMap::TOB_L3, TkLayerMap::TOB_L4, TkLayerMap::TOB_L5, and TkLayerMap::TOB_L6.

Referenced by SiStripMonitorMuonHLT::analyze(), SiStripMonitorMuonHLT::analyzeOnTrackClusters(), SiStripMonitorMuonHLT::createMEs(), TkHistoMap::folderDefinition(), SiStripMonitorMuonHLT::GeometryFromTrackGeom(), and SiStripMonitorMuonHLT::Normalizer().

702  {
703  switch (in)
704  {
705  case TkLayerMap::TIB_L1:
706  return "TIB_L1";
707  case TkLayerMap::TIB_L2:
708  return "TIB_L2";
709  case TkLayerMap::TIB_L3:
710  return "TIB_L3";
711  case TkLayerMap::TIB_L4:
712  return "TIB_L4";
713  case TkLayerMap::TIDP_D1:
714  return "TIDP_D1";
715  case TkLayerMap::TIDP_D2:
716  return "TIDP_D2";
717  case TkLayerMap::TIDP_D3:
718  return "TIDP_D3";
719  case TkLayerMap::TIDM_D1:
720  return "TIDM_D1";
721  case TkLayerMap::TIDM_D2:
722  return "TIDM_D2";
723  case TkLayerMap::TIDM_D3:
724  return "TIDM_D3";
725  case TkLayerMap::TOB_L1:
726  return "TOB_L1";
727  case TkLayerMap::TOB_L2:
728  return "TOB_L2";
729  case TkLayerMap::TOB_L3:
730  return "TOB_L3";
731  case TkLayerMap::TOB_L4:
732  return "TOB_L4";
733  case TkLayerMap::TOB_L5:
734  return "TOB_L5";
735  case TkLayerMap::TOB_L6:
736  return "TOB_L6";
737  case TkLayerMap::TECP_W1:
738  return "TECP_W1";
739  case TkLayerMap::TECP_W2:
740  return "TECP_W2";
741  case TkLayerMap::TECP_W3:
742  return "TECP_W3";
743  case TkLayerMap::TECP_W4:
744  return "TECP_W4";
745  case TkLayerMap::TECP_W5:
746  return "TECP_W5";
747  case TkLayerMap::TECP_W6:
748  return "TECP_W6";
749  case TkLayerMap::TECP_W7:
750  return "TECP_W7";
751  case TkLayerMap::TECP_W8:
752  return "TECP_W8";
753  case TkLayerMap::TECP_W9:
754  return "TECP_W9";
755  case TkLayerMap::TECM_W1:
756  return "TECM_W1";
757  case TkLayerMap::TECM_W2:
758  return "TECM_W2";
759  case TkLayerMap::TECM_W3:
760  return "TECM_W3";
761  case TkLayerMap::TECM_W4:
762  return "TECM_W4";
763  case TkLayerMap::TECM_W5:
764  return "TECM_W5";
765  case TkLayerMap::TECM_W6:
766  return "TECM_W6";
767  case TkLayerMap::TECM_W7:
768  return "TECM_W7";
769  case TkLayerMap::TECM_W8:
770  return "TECM_W8";
771  case TkLayerMap::TECM_W9:
772  return "TECM_W9";
773  }
774  return "Invalid";
775 }
int TkDetMap::getLayerNum ( const std::string &  in) const

Definition at line 777 of file TkDetMap.cc.

References TkLayerMap::TECM_W1, TkLayerMap::TECM_W2, TkLayerMap::TECM_W3, TkLayerMap::TECM_W4, TkLayerMap::TECM_W5, TkLayerMap::TECM_W6, TkLayerMap::TECM_W7, TkLayerMap::TECM_W8, TkLayerMap::TECM_W9, TkLayerMap::TECP_W1, TkLayerMap::TECP_W2, TkLayerMap::TECP_W3, TkLayerMap::TECP_W4, TkLayerMap::TECP_W5, TkLayerMap::TECP_W6, TkLayerMap::TECP_W7, TkLayerMap::TECP_W8, TkLayerMap::TECP_W9, TkLayerMap::TIB_L1, TkLayerMap::TIB_L2, TkLayerMap::TIB_L3, TkLayerMap::TIB_L4, TkLayerMap::TIDM_D1, TkLayerMap::TIDM_D2, TkLayerMap::TIDM_D3, TkLayerMap::TIDP_D1, TkLayerMap::TIDP_D2, TkLayerMap::TIDP_D3, TkLayerMap::TOB_L1, TkLayerMap::TOB_L2, TkLayerMap::TOB_L3, TkLayerMap::TOB_L4, TkLayerMap::TOB_L5, and TkLayerMap::TOB_L6.

Referenced by getDetFromBin(), TkHistoMap::getLayerNum(), and SiStripTrackerMapCreator::paintTkMapFromHistogram().

777  {
778  if(in.compare( "TIB_L1")==0)
779  return TkLayerMap::TIB_L1;
780  if(in.compare( "TIB_L2")==0)
781  return TkLayerMap::TIB_L2;
782  if(in.compare( "TIB_L3")==0)
783  return TkLayerMap::TIB_L3;
784  if(in.compare( "TIB_L4")==0)
785  return TkLayerMap::TIB_L4;
786  if(in.compare( "TIDP_D1")==0)
787  return TkLayerMap::TIDP_D1;
788  if(in.compare( "TIDP_D2")==0)
789  return TkLayerMap::TIDP_D2;
790  if(in.compare( "TIDP_D3")==0)
791  return TkLayerMap::TIDP_D3;
792  if(in.compare( "TIDM_D1")==0)
793  return TkLayerMap::TIDM_D1;
794  if(in.compare( "TIDM_D2")==0)
795  return TkLayerMap::TIDM_D2;
796  if(in.compare( "TIDM_D3")==0)
797  return TkLayerMap::TIDM_D3;
798  if(in.compare( "TOB_L1")==0)
799  return TkLayerMap::TOB_L1;
800  if(in.compare( "TOB_L2")==0)
801  return TkLayerMap::TOB_L2;
802  if(in.compare( "TOB_L3")==0)
803  return TkLayerMap::TOB_L3;
804  if(in.compare( "TOB_L4")==0)
805  return TkLayerMap::TOB_L4;
806  if(in.compare( "TOB_L5")==0)
807  return TkLayerMap::TOB_L5;
808  if(in.compare( "TOB_L6")==0)
809  return TkLayerMap::TOB_L6;
810  if(in.compare( "TECP_W1")==0)
811  return TkLayerMap::TECP_W1;
812  if(in.compare( "TECP_W2")==0)
813  return TkLayerMap::TECP_W2;
814  if(in.compare( "TECP_W3")==0)
815  return TkLayerMap::TECP_W3;
816  if(in.compare( "TECP_W4")==0)
817  return TkLayerMap::TECP_W4;
818  if(in.compare( "TECP_W5")==0)
819  return TkLayerMap::TECP_W5;
820  if(in.compare( "TECP_W6")==0)
821  return TkLayerMap::TECP_W6;
822  if(in.compare( "TECP_W7")==0)
823  return TkLayerMap::TECP_W7;
824  if(in.compare( "TECP_W8")==0)
825  return TkLayerMap::TECP_W8;
826  if(in.compare( "TECP_W9")==0)
827  return TkLayerMap::TECP_W9;
828  if(in.compare( "TECM_W1")==0)
829  return TkLayerMap::TECM_W1;
830  if(in.compare( "TECM_W2")==0)
831  return TkLayerMap::TECM_W2;
832  if(in.compare( "TECM_W3")==0)
833  return TkLayerMap::TECM_W3;
834  if(in.compare( "TECM_W4")==0)
835  return TkLayerMap::TECM_W4;
836  if(in.compare( "TECM_W5")==0)
837  return TkLayerMap::TECM_W5;
838  if(in.compare( "TECM_W6")==0)
839  return TkLayerMap::TECM_W6;
840  if(in.compare( "TECM_W7")==0)
841  return TkLayerMap::TECM_W7;
842  if(in.compare( "TECM_W8")==0)
843  return TkLayerMap::TECM_W8;
844  if(in.compare( "TECM_W9")==0)
845  return TkLayerMap::TECM_W9;
846  return 0;
847 }
void TkDetMap::getSubDetLayerSide ( int &  in,
SiStripDetId::SubDetector subDet,
uint32_t &  layer,
uint32_t &  side 
) const

Definition at line 849 of file TkDetMap.cc.

References SiStripDetId::TEC, TkLayerMap::TECM_W1, TkLayerMap::TECM_W2, TkLayerMap::TECM_W3, TkLayerMap::TECM_W4, TkLayerMap::TECM_W5, TkLayerMap::TECM_W6, TkLayerMap::TECM_W7, TkLayerMap::TECM_W8, TkLayerMap::TECM_W9, TkLayerMap::TECP_W1, TkLayerMap::TECP_W2, TkLayerMap::TECP_W3, TkLayerMap::TECP_W4, TkLayerMap::TECP_W5, TkLayerMap::TECP_W6, TkLayerMap::TECP_W7, TkLayerMap::TECP_W8, TkLayerMap::TECP_W9, SiStripDetId::TIB, TkLayerMap::TIB_L1, TkLayerMap::TIB_L2, TkLayerMap::TIB_L3, TkLayerMap::TIB_L4, SiStripDetId::TID, TkLayerMap::TIDM_D1, TkLayerMap::TIDM_D2, TkLayerMap::TIDM_D3, TkLayerMap::TIDP_D1, TkLayerMap::TIDP_D2, TkLayerMap::TIDP_D3, SiStripDetId::TOB, TkLayerMap::TOB_L1, TkLayerMap::TOB_L2, TkLayerMap::TOB_L3, TkLayerMap::TOB_L4, TkLayerMap::TOB_L5, and TkLayerMap::TOB_L6.

Referenced by SiStripMonitorMuonHLT::createMEs(), and TkHistoMap::folderDefinition().

849  {
850  switch (in)
851  {
852  case TkLayerMap::TIB_L1:
853  subDet = SiStripDetId::TIB;
854  layer = 1;
855  break;
856  case TkLayerMap::TIB_L2:
857  subDet = SiStripDetId::TIB;
858  layer = 2;
859  break;
860  case TkLayerMap::TIB_L3:
861  subDet = SiStripDetId::TIB;
862  layer = 3;
863  break;
864  case TkLayerMap::TIB_L4:
865  subDet = SiStripDetId::TIB;
866  layer = 4;
867  break;
868  case TkLayerMap::TIDP_D1:
869  subDet = SiStripDetId::TID;
870  layer = 1;
871  side=2;
872  break;
873  case TkLayerMap::TIDP_D2:
874  subDet = SiStripDetId::TID;
875  layer = 2;
876  side=2;
877  break;
878  case TkLayerMap::TIDP_D3:
879  subDet = SiStripDetId::TID;
880  layer = 3;
881  side=2;
882  break;
883  case TkLayerMap::TIDM_D1:
884  subDet = SiStripDetId::TID;
885  layer = 1;
886  side=1;
887  break;
888  case TkLayerMap::TIDM_D2:
889  subDet = SiStripDetId::TID;
890  layer = 2;
891  side=1;
892  break;
893  case TkLayerMap::TIDM_D3:
894  subDet = SiStripDetId::TID;
895  layer = 3;
896  side=1;
897  break;
898  case TkLayerMap::TOB_L1:
899  subDet = SiStripDetId::TOB;
900  layer = 1;
901  break;
902  case TkLayerMap::TOB_L2:
903  subDet = SiStripDetId::TOB;
904  layer = 2;
905  break;
906  case TkLayerMap::TOB_L3:
907  subDet = SiStripDetId::TOB;
908  layer = 3;
909  break;
910  case TkLayerMap::TOB_L4:
911  subDet = SiStripDetId::TOB;
912  layer = 4;
913  break;
914  case TkLayerMap::TOB_L5:
915  subDet = SiStripDetId::TOB;
916  layer = 5;
917  break;
918  case TkLayerMap::TOB_L6:
919  subDet = SiStripDetId::TOB;
920  layer = 6;
921  break;
922  case TkLayerMap::TECP_W1:
923  subDet = SiStripDetId::TEC;
924  layer = 1;
925  side=2;
926  break;
927  case TkLayerMap::TECP_W2:
928  subDet = SiStripDetId::TEC;
929  layer = 2;
930  side=2;
931  break;
932  case TkLayerMap::TECP_W3:
933  subDet = SiStripDetId::TEC;
934  layer = 3;
935  side=2;
936  break;
937  case TkLayerMap::TECP_W4:
938  subDet = SiStripDetId::TEC;
939  layer = 4;
940  side=2;
941  break;
942  case TkLayerMap::TECP_W5:
943  subDet = SiStripDetId::TEC;
944  layer = 5;
945  side=2;
946  break;
947  case TkLayerMap::TECP_W6:
948  subDet = SiStripDetId::TEC;
949  layer = 6;
950  side=2;
951  break;
952  case TkLayerMap::TECP_W7:
953  subDet = SiStripDetId::TEC;
954  layer = 7;
955  side=2;
956  break;
957  case TkLayerMap::TECP_W8:
958  subDet = SiStripDetId::TEC;
959  layer = 8;
960  side=2;
961  break;
962  case TkLayerMap::TECP_W9:
963  subDet = SiStripDetId::TEC;
964  layer = 9;
965  side=2;
966  break;
967  case TkLayerMap::TECM_W1:
968  subDet = SiStripDetId::TEC;
969  layer = 1;
970  side=1;
971  break;
972  case TkLayerMap::TECM_W2:
973  subDet = SiStripDetId::TEC;
974  layer = 2;
975  side=1;
976  break;
977  case TkLayerMap::TECM_W3:
978  subDet = SiStripDetId::TEC;
979  layer = 3;
980  side=1;
981  break;
982  case TkLayerMap::TECM_W4:
983  subDet = SiStripDetId::TEC;
984  layer = 4;
985  side=1;
986  break;
987  case TkLayerMap::TECM_W5:
988  subDet = SiStripDetId::TEC;
989  layer = 5;
990  side=1;
991  break;
992  case TkLayerMap::TECM_W6:
993  subDet = SiStripDetId::TEC;
994  layer = 6;
995  side=1;
996  break;
997  case TkLayerMap::TECM_W7:
998  subDet = SiStripDetId::TEC;
999  layer = 7;
1000  side=1;
1001  break;
1002  case TkLayerMap::TECM_W8:
1003  subDet = SiStripDetId::TEC;
1004  layer = 8;
1005  side=1;
1006  break;
1007  case TkLayerMap::TECM_W9:
1008  subDet = SiStripDetId::TEC;
1009  layer = 9;
1010  side=1;
1011  break;
1012  }
1013 }
const TkLayerMap::XYbin & TkDetMap::getXY ( uint32_t &  detid,
uint32_t &  cached_detid,
int16_t &  cached_layer,
TkLayerMap::XYbin cached_XYbin 
) const

Definition at line 652 of file TkDetMap.cc.

References FindLayer(), TkLayerMap::XYbin::ix, TkLayerMap::XYbin::iy, LogTrace, TkLayerMap::XYbin::x, and TkLayerMap::XYbin::y.

Referenced by TkHistoMap::add(), TkHistoMap::fill(), TkHistoMap::getEntries(), TkHistoMap::getValue(), SiStripTrackerMapCreator::paintTkMapFromHistogram(), and TkHistoMap::setBinContent().

652  {
653  LogTrace("TkDetMap") <<"[getXY] detid "<< detid << " cache " << cached_detid << " layer " << cached_layer << " XY " << cached_XYbin.ix << " " << cached_XYbin.iy << " " << cached_XYbin.x << " " << cached_XYbin.y ;
654  if(detid==cached_detid)
655  return cached_XYbin;
656 
657  /*FIXME*/
658  //if (layer!=INVALID)
659  FindLayer(detid , cached_detid , cached_layer , cached_XYbin );
660  LogTrace("TkDetMap") <<"[getXY] detid "<< detid << " cache " << cached_detid << " layer " << cached_layer << " XY " << cached_XYbin.ix << " " << cached_XYbin.iy << " " << cached_XYbin.x << " " << cached_XYbin.y ;
661  return cached_XYbin;
662 }
#define LogTrace(id)
int16_t FindLayer(uint32_t &detid, uint32_t &cached_detid, int16_t &cached_layer, TkLayerMap::XYbin &cached_XYbin) const
Definition: TkDetMap.cc:664

Member Data Documentation

detmapType TkDetMap::TkMap
private

Definition at line 139 of file TkDetMap.h.

Referenced by doMe(), FindLayer(), getComponents(), getDetFromBin(), getDetsForLayer(), and ~TkDetMap().