#include <GeoStripNode.h>
Inheritance diagram for GeoStripNode:

Public Member Functions | |
| GeoStripNode () | |
| virtual | ~GeoStripNode () |
| virtual PlexStripEndId | GetSEId () const |
| GeoStripVolume * | GetStripVolume () const |
| virtual Float_t | GetLPosRelMdl () const |
| virtual Float_t | GetTPosRelMdl () const |
| virtual Float_t | GetZRotRelMdlRad () const |
| GeoScintMdlNode * | GetScintMdlNode (void) const |
| GeoScintPlnNode * | GetScintPlnNode (void) const |
| virtual Float_t | GetHalfLength () const |
| virtual Float_t | GetHalfThickness () const |
| virtual Float_t | GetHalfWidth () const |
| virtual Float_t | PartialLength (StripEnd::StripEnd_t end) const |
| virtual Float_t | WlsBypass () const |
| virtual Float_t | WlsPigtail (StripEnd::StripEnd_t end) const |
| virtual Bool_t | IsMirrored (StripEnd::StripEnd_t end) const |
| virtual Float_t | ClearFiber (StripEnd::StripEnd_t end) const |
| virtual TVector3 | GlobalPos (const Float_t alongLength, const Bool_t onWLS=kFALSE) const |
| virtual Float_t | GetTPos (Float_t orthCoord=999999.) const |
| virtual Float_t | DistanceAlong (const PlexStripEndId &orthogonalStrip) const |
| virtual TVector3 | Intersection (const PlexStripEndId &orthogonalStrip) const |
| virtual Float_t | TotalAttenuation (StripEnd::StripEnd_t end, const Float_t alongLength) const |
| void | SetZRotRelMdlRad (Float_t radians) |
| void | SetLTPosRelMdl (Float_t lpos, Float_t tpos) |
Protected Member Functions | |
| GeoStripNode (GeoGeometry *geom, TGeoVolume *stpvol, TGeoMatrix *stpmatrix, GeoScintMdlNode *mdlNode, std::string nodename, const PlexStripEndId &seid) | |
Private Member Functions | |
| GeoStripNode (const GeoStripNode &that) | |
| GeoStripNode & | operator= (const GeoStripNode &that) |
Private Attributes | |
| PlexStripEndId | fStripEndId |
| GeoScintMdlNode * | fScintMdlNode |
Friends | |
| class | UgliStripHandle |
| class | GeoGeometry |
Definition at line 26 of file GeoStripNode.h.
| GeoStripNode::GeoStripNode | ( | ) | [inline] |
Definition at line 34 of file GeoStripNode.h.
00034 : fScintMdlNode(0) {} // default constructor for i/o
| GeoStripNode::~GeoStripNode | ( | ) | [virtual] |
Definition at line 44 of file GeoStripNode.cxx.
References GeoRefCnt::CountRef(), GetSEId(), Msg::kWarning, MSG, and GeoNode::UpdateGlobalManager().
00044 { 00045 // Destructor should delete any owned objects 00046 00047 UpdateGlobalManager(); 00048 00049 if ( CountRef() ) { 00050 MSG("Geo",Msg::kWarning) 00051 << "GeoStripNode destructor " << GetSEId() 00052 << " still had " << CountRef() 00053 << " outstanding references " << endl; 00054 } 00055 }
| GeoStripNode::GeoStripNode | ( | GeoGeometry * | geom, | |
| TGeoVolume * | stpvol, | |||
| TGeoMatrix * | stpmatrix, | |||
| GeoScintMdlNode * | mdlNode, | |||
| std::string | nodename, | |||
| const PlexStripEndId & | seid | |||
| ) | [protected] |
Definition at line 26 of file GeoStripNode.cxx.
References GeoGeometry::UpdateGlobalManager().
00029 : GeoNode(geom,stpvol,stpmatrix, 00030 mdlNode->GetScintMdlVolume()->GetAirNode()->GetVolume(), 00031 mdlNode->GetGlobalPath()+"/" + 00032 mdlNode->GetScintMdlVolume()->GetAirNode()->GetName() + "/" + 00033 nodename,nodename),fStripEndId(stripid),fScintMdlNode(mdlNode) { 00034 // Normal constructor 00035 // Node is constructed and added to volume parentvol with position specified 00036 // by stpmatrix. 00037 // Protected 00038 00039 UpdateGlobalManager(); 00040 00041 }
| GeoStripNode::GeoStripNode | ( | const GeoStripNode & | that | ) | [private] |
| Float_t GeoStripNode::ClearFiber | ( | StripEnd::StripEnd_t | end | ) | const [virtual] |
Definition at line 311 of file GeoStripNode.cxx.
References StripEnd::AsString(), PlexStripEndId::AsString(), fStripEndId, GetScintMdlNode(), Msg::kDebug, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::ClearFiber().
00311 { 00312 // Return clear fiber length of scint module to which this strip belongs 00313 00314 UpdateGlobalManager(); 00315 00316 Float_t clearfiber = GetScintMdlNode() -> GetClearFiber(end); 00317 00318 MSG("Geo",Msg::kDebug) << "ClearFiber " << fStripEndId.AsString() << " end " 00319 << StripEnd::AsString(end) 00320 << " clearfiber " << clearfiber << endl; 00321 00322 return clearfiber; 00323 00324 }
| Float_t GeoStripNode::DistanceAlong | ( | const PlexStripEndId & | orthogonalStrip | ) | const [virtual] |
Definition at line 340 of file GeoStripNode.cxx.
References GeoNode::GetGeoGeometry(), GeoGeometry::GetStripNode(), GlobalPos(), Msg::kError, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::DistanceAlong().
00341 { 00342 // Get the distance along a strip represented by the specified orthogonal 00343 // strip. Note this is relative to the strip's local coordinate system 00344 // origin. 00345 // 00346 // This strip node is expressed as a line in parametric form: 00347 // xyz(i) = base(i) + s*dir(i) for i= 0,1,2 (x,y,z) 00348 // where base is LocalToGlobal(TVector3(0,0,0)) 00349 // and dir is (LocalToGlobal(TVector3(1,0,0)-base)), i.e. the 00350 // unit vector along the strip length. 00351 // The returned value is "s", the distance along the strip length 00352 // (measured from the strip local origin) defining the point on 00353 // this strip with the smallest distance to any point on the orthogonal 00354 // strip. 00355 // 00356 // The algorithm used here to determine the intersection or closest approach 00357 // of two skew lines is the same as that in R. Hatcher's UgliStripNode, 00358 // which was adapted from: 00359 // Graphic Gems, ed. Andrew S. Glassner, pg 304 00360 // ISBN 0-12-286165-5 T385.G697 (1990) 00361 // 00362 00363 UpdateGlobalManager(); 00364 00365 const Double_t farAway = 1.0e25; 00366 00367 GeoStripNode* otherNode = GetGeoGeometry()->GetStripNode(orthogonalStrip); 00368 00369 if ( !otherNode ) { 00370 MSG("Geo",Msg::kError) 00371 << "GeoStripNode::DistanceAlong(), other strip " 00372 << orthogonalStrip << " does not exist." << endl; 00373 return farAway; 00374 } 00375 00376 // Define base & dir for this strip 00377 TVector3 baseThis = this -> GlobalPos(0.,false); 00378 TVector3 dirThis = this -> GlobalPos(1.,false) - baseThis; 00379 00380 // Define base & dir for the other strip 00381 TVector3 baseOther = otherNode -> GlobalPos(0.,false); 00382 TVector3 dirOther = otherNode -> GlobalPos(1.,false) - baseOther; 00383 00384 TVector3 dirCross = dirThis.Cross(dirOther); 00385 Double_t dirCrossMag2 = dirCross.Mag2(); 00386 if ( dirCrossMag2 == 0.0 ) { 00387 // exactly parallel 00388 return farAway; 00389 } 00390 00391 TVector3 dp = baseOther - baseThis; 00392 TVector3 dpxv = dp.Cross(dirOther); 00393 Double_t s = dpxv.Dot(dirCross)/dirCrossMag2; 00394 00395 return s; 00396 00397 }
| Float_t GeoStripNode::GetHalfLength | ( | ) | const [virtual] |
Definition at line 58 of file GeoStripNode.cxx.
References PlexStripEndId::AsString(), fStripEndId, GetStripVolume(), Msg::kDebug, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::GetHalfLength().
00058 { 00059 // Return the strip's half length (along local x) 00060 00061 UpdateGlobalManager(); 00062 Float_t halflength = GetStripVolume() -> GetHalfLength(); 00063 00064 MSG("Geo",Msg::kDebug) << "GetHalfLength " << fStripEndId.AsString() 00065 << " halflength " << halflength << endl; 00066 00067 return halflength; 00068 00069 }
| Float_t GeoStripNode::GetHalfThickness | ( | ) | const [virtual] |
Definition at line 72 of file GeoStripNode.cxx.
References PlexStripEndId::AsString(), fStripEndId, GetStripVolume(), Msg::kDebug, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::GetHalfThickness().
00072 { 00073 // Return the strip's half thickness (along local z) 00074 00075 UpdateGlobalManager(); 00076 00077 Float_t halfthickness = GetStripVolume() -> GetHalfThickness(); 00078 MSG("Geo",Msg::kDebug) << "GetHalfThickness " << fStripEndId.AsString() 00079 << " halfthickness " << halfthickness << endl; 00080 00081 return halfthickness; 00082 00083 }
| Float_t GeoStripNode::GetHalfWidth | ( | ) | const [virtual] |
Definition at line 86 of file GeoStripNode.cxx.
References PlexStripEndId::AsString(), fStripEndId, GetStripVolume(), Msg::kDebug, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::GetHalfWidth().
00086 { 00087 // Return the strip's half width (along local y) 00088 00089 UpdateGlobalManager(); 00090 00091 Float_t halfwidth = GetStripVolume() -> GetHalfWidth(); 00092 MSG("Geo",Msg::kDebug) << "GetHalfWidth " << fStripEndId.AsString() 00093 << " halfwidth " << halfwidth << endl; 00094 00095 return halfwidth; 00096 00097 }
| Float_t GeoStripNode::GetLPosRelMdl | ( | ) | const [virtual] |
Definition at line 183 of file GeoStripNode.cxx.
References PlexStripEndId::AsString(), fStripEndId, Msg::kDebug, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::GetLPosRelMdl().
00183 { 00184 // Return the lpos relative to module (x-pos from translation matrix) 00185 00186 00187 UpdateGlobalManager(); 00188 00189 const Double_t* trans = GetMatrix() -> GetTranslation(); 00190 00191 MSG("Geo",Msg::kDebug) << "GetLPosRelMdl " << fStripEndId.AsString() 00192 << " lposrelmdl " << trans[0] << endl; 00193 00194 return trans[0]; 00195 00196 }
| GeoScintMdlNode* GeoStripNode::GetScintMdlNode | ( | void | ) | const [inline] |
Definition at line 45 of file GeoStripNode.h.
References fScintMdlNode.
Referenced by ClearFiber(), UgliStripHandle::GetScintMdlHandle(), UgliStripHandle::GetScintPlnHandle(), GetScintPlnNode(), GetTPos(), and WlsPigtail().
00045 { return fScintMdlNode; }
| GeoScintPlnNode * GeoStripNode::GetScintPlnNode | ( | void | ) | const |
Definition at line 199 of file GeoStripNode.cxx.
References PlexStripEndId::AsString(), fStripEndId, GetScintMdlNode(), Msg::kDebug, MSG, and GeoNode::UpdateGlobalManager().
Referenced by GetTPos().
00199 { 00200 // Return scint plane node from which this strip descends 00201 00202 UpdateGlobalManager(); 00203 00204 MSG("Geo",Msg::kDebug) << "GetScintPlnNode " << fStripEndId.AsString() 00205 << endl; 00206 00207 return (GetScintMdlNode()->GetScintPlnNode()); 00208 00209 }
| virtual PlexStripEndId GeoStripNode::GetSEId | ( | ) | const [inline, virtual] |
Definition at line 38 of file GeoStripNode.h.
References fStripEndId.
Referenced by UgliStripHandle::GetSEId(), and ~GeoStripNode().
00038 { return fStripEndId; }
| GeoStripVolume* GeoStripNode::GetStripVolume | ( | ) | const [inline] |
Definition at line 39 of file GeoStripNode.h.
Referenced by GetHalfLength(), GetHalfThickness(), GetHalfWidth(), IsMirrored(), PartialLength(), WlsBypass(), and WlsPigtail().
| Float_t GeoStripNode::GetTPos | ( | Float_t | orthCoord = 999999. |
) | const [virtual] |
Definition at line 242 of file GeoStripNode.cxx.
References PlexStripEndId::AsString(), fStripEndId, PlexPlaneId::GetDetector(), PlexPlaneId::GetPlaneView(), GetScintMdlNode(), GetScintPlnNode(), GetZRotRelMdlRad(), GeoScintMdlNode::GetZRotRelPlnRad(), GeoScintPlnNode::GetZRotRelSteelRad(), Detector::kCalDet, Msg::kDebug, Detector::kFar, Detector::kNear, PlaneView::kU, PlaneView::kV, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::GetTPos().
00242 { 00243 // Get the strip's tpos offset from scint plane origin 00244 // orthCoord is the t-pos in the orthogonal view in ideal scint plane 00245 // coordinates. For example, if this strip is a U-view strip, the orthcoord 00246 // is the tpos in the "ideal" V-view plane coordinates. 00247 // This allows one to include rotation corrections. 00248 // if orthCoord > 100000 (cm) (default), use the center of the strip. 00249 00250 MSG("Geo",Msg::kDebug) << fStripEndId.AsString() << " orthCoord " 00251 << orthCoord << endl; 00252 00253 UpdateGlobalManager(); 00254 00255 // First convert strip center to scint plane coordinates 00256 Double_t striplxyz[3] = {0}; // center of strip 00257 // Convert strip center in strip coordinates to module coordinates 00258 Double_t modulelxyz[3] = {0}; 00259 GetMatrix() -> LocalToMaster(striplxyz,modulelxyz); 00260 // Convert strip center in module coordinates to scint plane coordinates 00261 Double_t scplanelxyz[3] = {0}; 00262 GeoScintMdlNode* mdlNode = GetScintMdlNode(); 00263 mdlNode -> GetMatrix() -> LocalToMaster(modulelxyz,scplanelxyz); 00264 00265 // tpos of center of strip 00266 Float_t tpos = scplanelxyz[1]; 00267 if ( orthCoord > 100000. ) return tpos; 00268 00269 // Adjust tpos at orthCoord position for rotation of strip about z-axis 00270 Float_t zrotrelmdlrad = GetZRotRelMdlRad(); 00271 Float_t zrotrelplnrad = mdlNode->GetZRotRelPlnRad(); 00272 GeoScintPlnNode* scplnNode = GetScintPlnNode(); 00273 Float_t zrotrelsteelrad = scplnNode->GetZRotRelSteelRad(); 00274 00275 // Pick the ideal steel plane rotation and subtract it off 00276 Float_t zrotrelsteelideal = 0; 00277 Float_t lpos = orthCoord; 00278 if ( fStripEndId.GetDetector() == Detector::kFar || 00279 fStripEndId.GetDetector() == Detector::kNear ) { 00280 if ( fStripEndId.GetPlaneView() == PlaneView::kU ) { 00281 zrotrelsteelideal = -0.785398163; // -45 degrees 00282 lpos = -orthCoord; // lpos is in opposite direction of V-view tpos 00283 } 00284 else if ( fStripEndId.GetPlaneView() == PlaneView::kV ) { 00285 zrotrelsteelideal = +0.785398163; // +45 degrees 00286 } 00287 } 00288 else if ( fStripEndId.GetDetector() == Detector::kCalDet ) { 00289 if ( fStripEndId.GetPlaneView() == PlaneView::kU ) { 00290 zrotrelsteelideal = -1.570796327; 00291 lpos = -orthCoord; // lpos is in opposite direction of V-view tpos 00292 } 00293 else if ( fStripEndId.GetPlaneView() == PlaneView::kV ) { 00294 zrotrelsteelideal = 0; 00295 } 00296 } 00297 00298 Float_t zrottot = (zrotrelsteelrad - zrotrelsteelideal) + zrotrelplnrad 00299 + zrotrelmdlrad; 00300 00301 Float_t deltatpos = lpos * TMath::Tan(zrottot); 00302 tpos += deltatpos; 00303 00304 return tpos; 00305 00306 }
| Float_t GeoStripNode::GetTPosRelMdl | ( | ) | const [virtual] |
Definition at line 212 of file GeoStripNode.cxx.
References PlexStripEndId::AsString(), fStripEndId, Msg::kDebug, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::GetTPosRelMdl().
00212 { 00213 // Return the tpos relative to module (y-pos from translation matrix) 00214 00215 MSG("Geo",Msg::kDebug) << fStripEndId.AsString() << endl; 00216 00217 UpdateGlobalManager(); 00218 00219 const Double_t* trans = GetMatrix() -> GetTranslation(); 00220 00221 return trans[1]; 00222 00223 }
| Float_t GeoStripNode::GetZRotRelMdlRad | ( | ) | const [virtual] |
Definition at line 227 of file GeoStripNode.cxx.
References PlexStripEndId::AsString(), fStripEndId, Msg::kDebug, MSG, and GeoNode::UpdateGlobalManager().
Referenced by GetTPos(), and UgliStripHandle::GetZRotRelMdlRad().
00227 { 00228 // Return the zrot relative to module in radians 00229 00230 MSG("Geo",Msg::kDebug) << fStripEndId.AsString() << endl; 00231 00232 UpdateGlobalManager(); 00233 00234 const Double_t* rotmatrix = GetMatrix() -> GetRotationMatrix(); 00235 Float_t zrotrelmdlrad = TMath::ATan2(rotmatrix[3],rotmatrix[0]); 00236 00237 return zrotrelmdlrad; 00238 00239 }
| TVector3 GeoStripNode::GlobalPos | ( | const Float_t | alongLength, | |
| const Bool_t | onWLS = kFALSE | |||
| ) | const [virtual] |
Definition at line 473 of file GeoStripNode.cxx.
References PlexStripEndId::AsString(), fStripEndId, Msg::kDebug, Msg::kWarning, GeoNode::LocalToGlobal(), MSG, and GeoNode::UpdateGlobalManager().
Referenced by DistanceAlong(), UgliStripHandle::GlobalPos(), and Intersection().
00474 { 00475 // Return position based on distance along centerline *or* WLS fiber 00476 // Position on WLS fiber is not implemented yet, as is also true for 00477 // UgliStripNode. 00478 00479 MSG("Geo",Msg::kDebug) << fStripEndId.AsString() 00480 << " alongLength " << alongLength << endl; 00481 00482 UpdateGlobalManager(); 00483 00484 if ( onWLS ) { 00485 MSG("Geo",Msg::kWarning) 00486 << "GeoStripNode::GlobalPos not implemented yet with onWLS = kTRUE." 00487 << " Ignored." << endl; 00488 } 00489 00490 return LocalToGlobal(TVector3(alongLength,0.,0.)); 00491 00492 }
| TVector3 GeoStripNode::Intersection | ( | const PlexStripEndId & | orthogonalStrip | ) | const [virtual] |
Definition at line 400 of file GeoStripNode.cxx.
References GeoNode::GetGeoGeometry(), GeoGeometry::GetStripNode(), GlobalPos(), Msg::kError, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::Intersection().
00401 { 00402 // Return the 3-d "intersection" of two strips in global coordinates. 00403 // The intersection is determined as the mid-point of the vector joining 00404 // the strips at the distance of closest approach. 00405 // 00406 // The strip nodes are expressed as a line in parametric form: 00407 // xyz(i) = base(i) + s*dir(i) for i= 0,1,2 (x,y,z) // for this strip 00408 // xyz(i) = base(i) + t*dir(i) for i= 0,1,2 (x,y,z) // for ortho strip 00409 // where base is LocalToGlobal(TVector3(0,0,0)) 00410 // and dir is (LocalToGlobal(TVector3(1,0,0)-base)), i.e. the 00411 // unit vector along the strip length. 00412 // The position along both strips at the distance of closest approach 00413 // is solved for to determine: 00414 // xyz_s0(i) = base(i) + s0*dir(i) for i= 0,1,2 (x,y,z) //for this strip 00415 // xyz_t0(i) = base(i) + t0*dir(i) for i= 0,1,2 (x,y,z) //for ortho strip 00416 // The returned mid-point is then: 00417 // xyz_mid = 0.5*(xyz_s0+xyz_t0) 00418 // 00419 // The algorithm used here to determine the intersection or closest approach 00420 // of two skew lines is the same as that in R. Hatcher's UgliStripNode, 00421 // which was adapted from: 00422 // Graphic Gems, ed. Andrew S. Glassner, pg 304 00423 // ISBN 0-12-286165-5 T385.G697 (1990) 00424 // 00425 00426 UpdateGlobalManager(); 00427 00428 const Double_t farAway = 1.0e25; 00429 const TVector3 farAway3(farAway,farAway,farAway); 00430 00431 GeoStripNode* otherNode = GetGeoGeometry()->GetStripNode(orthogonalStrip); 00432 00433 if ( !otherNode ) { 00434 MSG("Geo",Msg::kError) 00435 << "GeoStripNode::DistanceAlong() other strip " 00436 << orthogonalStrip << " does not exist." << endl; 00437 return farAway3; 00438 } 00439 00440 // Define base & dir for this strip 00441 TVector3 baseThis = this -> GlobalPos(0.,false); 00442 TVector3 dirThis = this -> GlobalPos(1.,false) - baseThis; 00443 00444 // Define base & dir for the other strip 00445 TVector3 baseOther = otherNode -> GlobalPos(0.,false); 00446 TVector3 dirOther = otherNode -> GlobalPos(1.,false) - baseOther; 00447 00448 TVector3 dirCross = dirThis.Cross(dirOther); 00449 Double_t dirCrossMag2 = dirCross.Mag2(); 00450 if ( dirCrossMag2 == 0.0 ) { 00451 // exactly parallel 00452 return 0.5*(baseThis+baseOther) + farAway*dirThis; 00453 } 00454 00455 TVector3 dp = baseOther - baseThis; 00456 TVector3 dpxvThis = dp.Cross(dirOther); 00457 Double_t s0 = dpxvThis.Dot(dirCross)/dirCrossMag2; 00458 00459 TVector3 xyz_s0 = baseThis + s0*dirThis; 00460 00461 dirCross *= -1; 00462 dp *= -1; 00463 TVector3 dpxvOther = dp.Cross(dirThis); 00464 Double_t t0 = dpxvOther.Dot(dirCross)/dirCrossMag2; 00465 00466 TVector3 xyz_t0 = baseOther + t0*dirOther; 00467 00468 return 0.5*(xyz_s0 + xyz_t0); 00469 00470 }
| Bool_t GeoStripNode::IsMirrored | ( | StripEnd::StripEnd_t | end | ) | const [virtual] |
Definition at line 167 of file GeoStripNode.cxx.
References StripEnd::AsString(), PlexStripEndId::AsString(), fStripEndId, GetStripVolume(), Msg::kDebug, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::IsMirrored().
00167 { 00168 // Return true if specified stripend is mirrored, else false. 00169 00170 UpdateGlobalManager(); 00171 00172 Bool_t isMirrored = GetStripVolume() -> IsMirrored(stripend); 00173 00174 MSG("Geo",Msg::kDebug) << "IsMirrored " << fStripEndId.AsString() << " end " 00175 << StripEnd::AsString(stripend) << " isMirrored " 00176 << isMirrored << endl; 00177 00178 return isMirrored; 00179 00180 }
| GeoStripNode& GeoStripNode::operator= | ( | const GeoStripNode & | that | ) | [private] |
| Float_t GeoStripNode::PartialLength | ( | StripEnd::StripEnd_t | end | ) | const [virtual] |
Definition at line 100 of file GeoStripNode.cxx.
References StripEnd::AsString(), PlexStripEndId::AsString(), fStripEndId, GetStripVolume(), Msg::kDebug, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::PartialLength().
00100 { 00101 // Return the strip's partial length at the specified end 00102 // If the strip end is not specified, return the total length 00103 00104 UpdateGlobalManager(); 00105 00106 Float_t lenpart = GetStripVolume() -> GetLenPart(stripend); 00107 MSG("Geo",Msg::kDebug) << "PartialLength " << fStripEndId.AsString() 00108 << " end " << StripEnd::AsString(stripend) 00109 << " lenpart " << lenpart << endl; 00110 00111 return lenpart; 00112 00113 }
| void GeoStripNode::SetLTPosRelMdl | ( | Float_t | lpos, | |
| Float_t | tpos | |||
| ) |
Definition at line 507 of file GeoStripNode.cxx.
References Msg::kWarning, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::SetLTPosRelMdl().
00507 { 00508 // Dummy Set method 00509 00510 UpdateGlobalManager(); 00511 00512 MSG("Geo",Msg::kWarning) 00513 << "GeoStripNode::SetLTPosRelMdl not implemented yet." << endl; 00514 return; 00515 00516 }
| void GeoStripNode::SetZRotRelMdlRad | ( | Float_t | radians | ) |
Definition at line 495 of file GeoStripNode.cxx.
References Msg::kWarning, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::SetZRotRelMdlRad().
00495 { 00496 // Dummy Set method 00497 00498 UpdateGlobalManager(); 00499 00500 MSG("Geo",Msg::kWarning) 00501 << "GeoStripNode::SetZRotRelMdlRad not implemented yet." << endl; 00502 return; 00503 00504 }
| Float_t GeoStripNode::TotalAttenuation | ( | StripEnd::StripEnd_t | end, | |
| const Float_t | alongLength | |||
| ) | const [virtual] |
Definition at line 327 of file GeoStripNode.cxx.
References Msg::kWarning, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::TotalAttenuation().
00328 { 00329 // Dummy, but also dummy in UgliStripNode. 00330 00331 UpdateGlobalManager(); 00332 00333 MSG("Geo",Msg::kWarning) 00334 << "GeoStripNode::TotalAttenuation not implemented yet." << endl; 00335 return 0; 00336 00337 }
| Float_t GeoStripNode::WlsBypass | ( | ) | const [virtual] |
Definition at line 116 of file GeoStripNode.cxx.
References PlexStripEndId::AsString(), fStripEndId, GetStripVolume(), Msg::kDebug, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::WlsBypass().
00116 { 00117 // Return the length of the wls fiber along coil hole bypass 00118 00119 UpdateGlobalManager(); 00120 00121 Float_t wlsbypass = GetStripVolume() -> GetWlsLenBypass(); 00122 00123 MSG("Geo",Msg::kDebug) << "WlsBypass " << fStripEndId.AsString() 00124 << " wlsbypass " << wlsbypass << endl; 00125 00126 return wlsbypass; 00127 00128 }
| Float_t GeoStripNode::WlsPigtail | ( | StripEnd::StripEnd_t | end | ) | const [virtual] |
Definition at line 131 of file GeoStripNode.cxx.
References PlexStripEndId::AsString(), StripEnd::AsString(), fStripEndId, GeoScintMdlNode::GetExtraWlsFiber(), GetScintMdlNode(), GetStripVolume(), GeoStripVolume::GetWlsLen(), Msg::kDebug, StripEnd::kEast, Msg::kWarning, StripEnd::kWest, MSG, and GeoNode::UpdateGlobalManager().
Referenced by UgliStripHandle::WlsPigtail().
00131 { 00132 // Return the length of the wls fiber "pigtail" (the portion extending 00133 // beyond the strip end), if either StripEnd::kEast or StripEnd::kWest 00134 // is specified. Otherwise, return 0 with error message. pigtail length 00135 // includes the extra pigtail length associated with the scint module. 00136 00137 UpdateGlobalManager(); 00138 00139 Float_t wlspigtail = 0; 00140 00141 switch (stripend) { 00142 00143 case StripEnd::kEast: 00144 case StripEnd::kWest: 00145 { 00146 GeoScintMdlNode* mdlNode = GetScintMdlNode(); 00147 wlspigtail = GetStripVolume()->GetWlsLen(stripend) 00148 + mdlNode->GetExtraWlsFiber(stripend); 00149 } 00150 break; 00151 00152 default: 00153 MSG("Geo",Msg::kWarning) << "WlsPigtail called with stripend " 00154 << StripEnd::AsString(stripend) 00155 << ". Must specify kEast or kWest." << endl; 00156 } // end of switch 00157 00158 MSG("Geo",Msg::kDebug) << "WlsPigtail " << fStripEndId.AsString() << " end " 00159 << StripEnd::AsString(stripend) 00160 << " wlspigtail " << wlspigtail << endl; 00161 00162 return wlspigtail; 00163 00164 }
friend class GeoGeometry [friend] |
friend class UgliStripHandle [friend] |
Definition at line 28 of file GeoStripNode.h.
GeoScintMdlNode* GeoStripNode::fScintMdlNode [private] |
PlexStripEndId GeoStripNode::fStripEndId [private] |
Definition at line 84 of file GeoStripNode.h.
Referenced by ClearFiber(), GetHalfLength(), GetHalfThickness(), GetHalfWidth(), GetLPosRelMdl(), GetScintPlnNode(), GetSEId(), GetTPos(), GetTPosRelMdl(), GetZRotRelMdlRad(), GlobalPos(), IsMirrored(), PartialLength(), WlsBypass(), and WlsPigtail().
1.4.7