00001 //----------------------------------------------------------------------------- 00002 // $Id: TMDCLayer.cxx,v 1.5 2010/03/31 09:58:59 liucy Exp $ 00003 //----------------------------------------------------------------------------- 00004 // Filename : TMDCLayer.cc 00005 // Section : Tracking MDC 00006 // Owner : Yoshi Iwasaki 00007 // Email : yoshihito.iwasaki@kek.jp 00008 //----------------------------------------------------------------------------- 00009 // Description : A class to represent a wire layer. 00010 // See http://bsunsrv1.kek.jp/~yiwasaki/tracking/ 00011 //----------------------------------------------------------------------------- 00012 00013 #define TMDCLayer_INLINE_DEFINE_HERE 00014 //#include "panther/panther.h" 00015 //#include MDC_H 00016 //#include "MdcRecGeo/MdcGeoLayer.h" 00017 #include "MdcGeomSvc/MdcGeoLayer.h" 00018 #include "TrkReco/TMDC.h" 00019 #include "TrkReco/TMDCLayer.h" 00020 #include "TrkReco/TMDCUtil.h" 00021 00022 TMDCLayer::TMDCLayer(const MdcGeoLayer * l) { 00023 _geo = l; 00024 _id = l->Id(); 00025 _superLayerId = TMDC::superLayerId(l); 00026 _localLayerId = TMDC::localLayerId(l); 00027 //liucy&jialk origin uses slant to judge type now directly uses superLayerId to judge 00028 if(_id>=36||(_id>=8&&_id<=19)) _type=0; 00029 else _type=1; 00030 // _offset = l->Offset(); 00031 // _cellSize = l->PCSiz(); 00032 // Unit from rad to cell for _offset; and from mm to cm for cellSize 00033 // _offset = l->Offset()/(2. * M_PI/l->NCell()); 00034 // unit of offset is rad, which is diff from belle 00035 _offset = l->Offset(); 00036 _cellSize = l->PCSiz()/10; 00037 00038 _nWires = (unsigned) l->NCell(); 00039 _axialStereoLayerId = TMDC::axialStereoLayerId(l); 00040 } 00041 00042 TMDCLayer::~TMDCLayer() { 00043 } 00044 00045 void 00046 TMDCLayer::dump(const std::string & msg, const std::string & pre) const { 00047 std::cout << pre; 00048 std::cout << "layer " << _id; 00049 std::cout << ", super layer " << _superLayerId; 00050 std::cout << ", local layer " << _localLayerId; 00051 if (axial()) std::cout << ", axial "; 00052 else std::cout << ", stereo "; 00053 std::cout << _axialStereoLayerId; 00054 std::cout << ", " << _nWires << " wires"; 00055 std::cout << std::endl; 00056 } 00057 00058 const TMDCWire * const 00059 TMDCLayer::wire(int id) const { 00060 if (_nWires == 0) return 0; 00061 00062 if (id < 0) 00063 while (id < 0) 00064 id += _nWires; 00065 00066 if (id >= _nWires) 00067 id %= _nWires; 00068 00069 return (* this)[id]; 00070 } 00071