00001 /******************************************************************* 00002 * 00003 * $Id: StEEmcSmdGeom.h,v 1.10 2010/08/26 22:48:55 ogrebeny Exp $ 00004 * 00005 * Author: Wei-Ming Zhang 00006 * 00007 * Revisions: 00008 * 00009 * 01/28/04 Jason Webb -- StRoot independent code moved to a 00010 * separate EEmcSmdGeom class. StEEmcSmdGeom now derives from 00011 * that class, implementing functions useful for integrating 00012 * with Star. See EEmcSmdGeom.{h,cxx} for further documentation. 00013 * 00014 ***************************************************************** 00015 * 00016 * Description: Interface to EEMC-SMD database 00017 * 00018 ***************************************************************** 00019 * 00020 * The following demensions are defined for SMD in EEmcGeomDefs.h 00021 * EEmcNumSectors = 12 (The order follows numbering scheme of TPC sectors) 00022 * kEEmcNumSmdPlanes = 3 (1: the innermost and 3: the outermost) 00023 * kEEmcNumStrips =288 (1: the shortes inner and 288: the shortest outer) 00024 * kEEmcNumEdgeStrips =283 (1: the shortes inner and 283: the shortest outer) 00025 * kEEmcNumSmdLayers = 2 (1: U and 2: V) 00026 * 00027 *****************************************************************/ 00028 #ifndef STEEMCSMDGEOM_H 00029 #define STEEMCSMDGEOM_H 00030 00031 #include "EEmcSmdGeom.h" 00032 00033 // StRoot classes 00034 #include "StThreeVectorD.hh" 00035 #include "StPhysicalHelixD.hh" 00036 00037 class StEEmcSmdGeom : public EEmcSmdGeom { 00038 public: 00039 StEEmcSmdGeom(); 00040 virtual ~StEEmcSmdGeom(); 00041 00042 protected: 00043 // The single allowed instance of the class 00044 static StEEmcSmdGeom *sInstance; 00045 00046 public: 00047 // Method(s) to return the single allowed instance of this class 00048 static StEEmcSmdGeom *instance(); 00049 static StEEmcSmdGeom *instance(intVec sectorIdVec); 00050 00051 00052 Int_t getEEmcISec(const Int_t iPlane, const StThreeVectorD& point) const; 00053 00054 const StructEEmcStrip* getDcaStripPtr(const Int_t iPlane, StThreeVectorD& point, Float_t* dca) const; 00055 const StructEEmcStrip* getDcaStripPtr(const Int_t iPlane, const Int_t iSec, const StThreeVectorD& point, Float_t* dca) const; 00056 00057 StThreeVectorD getIntersection ( Int_t iSec, Int_t iUStrip, Int_t iVStrip ) const; 00058 StThreeVectorD getIntersection ( const StructEEmcStrip *u, const StructEEmcStrip *v ) const; 00059 00060 StThreeVectorD getstripEnd(const StructEEmcStrip &strip, const Int_t endId) const; 00061 00062 // 00063 // three methods for ITTF 00064 // 00065 00066 // return phiMin and phiMax of a sector including empty sector 00067 pairD getEEmcSmdPhiMinMax(const Int_t iPlane, const Int_t iSec) const; 00068 00069 // return delta_phi of a sector including empty sector 00070 float getEEmcSmdDelPhi(const Int_t iPlane, const Int_t iSec) const; 00071 00072 // return center phi of a sector including empty sector 00073 float getEEmcSmdCenterPhi(const Int_t iPlane, const Int_t iSec) const; 00074 00075 // 00076 // Additional ITTF print function 00077 // 00078 void printSectorPhis(const Int_t iPlane, const Int_t iSec,ostream& os = cout) const; 00079 00080 ClassDef(StEEmcSmdGeom,1); 00081 }; 00082 00083 #endif 00084 00085 /******************************************************************** 00086 * $Log: StEEmcSmdGeom.h,v $ 00087 * Revision 1.10 2010/08/26 22:48:55 ogrebeny 00088 * Improved constness 00089 * 00090 * Revision 1.9 2007/01/25 22:33:22 balewski 00091 * add: 00092 * - better writeup 00093 * - new simpler to use method calculating dca fo track to strip, it is just a wrapper, some approximations were used, may fail at the sector boundary 00094 * 00095 * Revision 1.8 2004/02/03 22:57:55 jwebb 00096 * Added StEEmcSmdGeom::instance(), which is sort of needed... 00097 * 00098 * Revision 1.7 2004/01/29 15:26:10 jwebb 00099 * The StEEmcSmdGeom class was split into two classes. All StRoot-independent 00100 * code has been moved to EEmcSmdGeom. TVector3 replaces StThreeVectorD in 00101 * all function calls in EEmcSmdGeom. StThreeVectorD wrappers are provided 00102 * in StEEmcSmdGeom, for integration into Star framework. 00103 * 00104 * Revision 1.6 2003/12/05 00:06:11 jwebb 00105 * Member function added to return a vector pointing to the intersection of 00106 * two strips. 00107 * 00108 * Revision 1.5 2003/10/15 15:26:03 wzhang 00109 * improved and reorganized 00110 * 00111 * Revision 1.4 2003/08/22 15:14:03 wzhang 00112 * Added ClassDef and method stripEnd 00113 * 00114 * Revision 1.3 2003/06/11 18:58:15 wzhang 00115 * added geometry methods for StiEEmc 00116 * 00117 * Revision 1.2 2003/04/04 15:33:31 wzhang 00118 * included EEmcGeomDefs.h & improved codes 00119 * 00120 * Revision 1.1 2003/03/28 15:50:00 balewski 00121 * first 00122 * 00123 * 00124 *******************************************************************/
1.5.9