00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012 #include "UgliGeometry/UgliSteelPlnHandle.h"
00013 #include "UgliGeometry/Ugli.h"
00014
00015 #include "MessageService/MsgService.h"
00016 CVSID("$Id: UgliSteelPlnHandle.cxx,v 1.12 2006/06/27 20:08:23 rhatcher Exp $");
00017
00018 #include <cassert>
00019
00020 ClassImp(UgliSteelPlnHandle)
00021
00022
00023 UgliSteelPlnHandle::UgliSteelPlnHandle()
00024 : UgliPlnHandle((UgliPlnNode*)0), fUgliSteelPlnNode(0), fGeoSteelPlnNode(0)
00025 {
00026
00027
00028 MSG("Ugli",Msg::kDebug)
00029 << "UgliSteelPlnHandle created by default ctor" << endl;
00030
00031 }
00032
00033
00034 UgliSteelPlnHandle::~UgliSteelPlnHandle()
00035 {
00036
00037
00038
00039
00040
00041
00042 }
00043
00044
00045 UgliSteelPlnHandle::UgliSteelPlnHandle(UgliSteelPlnNode* node)
00046 : UgliPlnHandle(node), fUgliSteelPlnNode(node), fGeoSteelPlnNode(0)
00047 {
00048
00049
00050
00051
00052
00053
00054 }
00055
00056
00057 UgliSteelPlnHandle::UgliSteelPlnHandle(GeoSteelPlnNode* node)
00058 : UgliPlnHandle(node), fUgliSteelPlnNode(0), fGeoSteelPlnNode(node)
00059 {
00060
00061
00062
00063
00064
00065
00066 }
00067
00068
00069 UgliSteelPlnHandle::UgliSteelPlnHandle(const UgliSteelPlnHandle &that)
00070 : UgliPlnHandle(that),
00071 UgliSteelPlnABC(),
00072 fUgliSteelPlnNode(that.fUgliSteelPlnNode),
00073 fGeoSteelPlnNode(that.fGeoSteelPlnNode)
00074 {
00075
00076
00077
00078
00079
00080
00081 }
00082
00083
00084 UgliSteelPlnHandle& UgliSteelPlnHandle::operator=(const UgliSteelPlnHandle& that)
00085 {
00086
00087
00088
00089
00090
00091
00092
00093
00094 if ( this != &that ) {
00095 UgliPlnHandle::operator=(that);
00096 fUgliSteelPlnNode = that.fUgliSteelPlnNode;
00097
00098 fGeoSteelPlnNode = that.fGeoSteelPlnNode;
00099 }
00100 return *this;
00101 }
00102
00103
00104 TVector3 UgliSteelPlnHandle::GlobalToLocal(const TVector3& global,
00105 const Bool_t globalInXYZ) const
00106 {
00107
00108
00109 TVector3 globalXYZ = (globalInXYZ) ?
00110 global : Ugli::uvz2xyz(GetPlexPlaneId().GetDetector(),global);
00111
00112 if (!IsGeo())
00113 return fUgliSteelPlnNode->GlobalToLocal(global);
00114 else {
00115 TVector3 scaledglobal(global); scaledglobal *= 1./Munits::cm;
00116 return (fGeoSteelPlnNode->GlobalToLocal(scaledglobal)*Munits::cm);
00117 }
00118 }
00119
00120
00121 TVector3 UgliSteelPlnHandle::LocalToGlobal(const TVector3& local,
00122 const Bool_t globalInXYZ) const
00123 {
00124
00125
00126 TVector3 globalXYZ;
00127 if (!IsGeo())
00128 globalXYZ = fUgliSteelPlnNode->LocalToGlobal(local);
00129 else {
00130 TVector3 scaledlocal(local); scaledlocal *= 1./Munits::cm;
00131 globalXYZ = (fGeoSteelPlnNode->LocalToGlobal(scaledlocal)*Munits::cm);
00132 }
00133
00134 if (globalInXYZ ) return globalXYZ;
00135 else return Ugli::xyz2uvz(GetPlexPlaneId().GetDetector(),
00136 globalXYZ);
00137 }
00138
00139
00140 TVector3 UgliSteelPlnHandle::GlobalToLocalVect(const TVector3& global,
00141 const Bool_t globalInXYZ) const
00142 {
00143
00144
00145 TVector3 globalXYZ = (globalInXYZ) ?
00146 global : Ugli::uvz2xyz(GetPlexPlaneId().GetDetector(),global);
00147
00148 if (!IsGeo())
00149 return fUgliSteelPlnNode->GlobalToLocalVect(global);
00150 else {
00151 TVector3 scaledglobal(global); scaledglobal *= 1./Munits::cm;
00152 return (fGeoSteelPlnNode->GlobalToLocalVect(scaledglobal)*Munits::cm);
00153 }
00154 }
00155
00156
00157 TVector3 UgliSteelPlnHandle::LocalToGlobalVect(const TVector3& local,
00158 const Bool_t globalInXYZ) const
00159 {
00160
00161
00162 TVector3 globalXYZ;
00163 if (!IsGeo())
00164 globalXYZ = fUgliSteelPlnNode->LocalToGlobalVect(local);
00165 else {
00166 TVector3 scaledlocal(local); scaledlocal *= 1./Munits::cm;
00167 globalXYZ = (fGeoSteelPlnNode->LocalToGlobalVect(scaledlocal)*Munits::cm);
00168 }
00169
00170 if (globalInXYZ ) return globalXYZ;
00171 else return Ugli::xyz2uvz(GetPlexPlaneId().GetDetector(),
00172 globalXYZ);
00173 }
00174
00175