UgliScintMdlHandle Class Reference

#include <UgliScintMdlHandle.h>

Inheritance diagram for UgliScintMdlHandle:
UgliScintMdlABC

List of all members.

Public Member Functions

 UgliScintMdlHandle (UgliScintMdlNode *mdlNode)
 UgliScintMdlHandle (GeoScintMdlNode *mdlNode)
 UgliScintMdlHandle (const UgliScintMdlHandle &that)
UgliScintMdlHandleoperator= (const UgliScintMdlHandle &that)
 UgliScintMdlHandle ()
virtual ~UgliScintMdlHandle ()
virtual Bool_t IsGeo () const
virtual Bool_t IsValid () const
virtual Bool_t IsFrozen () const
virtual PlexScintMdlId GetPlexScintMdlId () const
virtual PlexPlaneId GetPlexPlaneId () const
virtual Int_t GetModuleNum () const
virtual Int_t NumberOfStrips () const
virtual Float_t GetClearFiber (const StripEnd::StripEnd_t end) const
virtual Float_t GetExtraWlsFiber (const StripEnd::StripEnd_t end) const
UgliScintPlnHandle GetScintPlnHandle () const
virtual TVector3 GlobalToLocal (const TVector3 &global, const Bool_t globalInXYZ=true) const
virtual TVector3 LocalToGlobal (const TVector3 &local, const Bool_t globalInXYZ=true) const
Float_t GetZRotRelPlnRad () const
Float_t GetLPosRelPln () const
Float_t GetTPosRelPln () const
Bool_t AttemptSet (const char *what="?") const
void SetZRotRelPlnRad (Float_t radians)
void SetLTPosRelPln (Float_t lpos, Float_t tpos)
void RotateRelPlnBy (Float_t deltaRadians)
void ShiftLTPosRelPlnBy (Float_t dlpos, Float_t dtpos)

Protected Attributes

UgliScintMdlNodefUgliScintMdlNode
GeoScintMdlNodefGeoScintMdlNode

Detailed Description

Definition at line 23 of file UgliScintMdlHandle.h.


Constructor & Destructor Documentation

UgliScintMdlHandle::UgliScintMdlHandle ( UgliScintMdlNode mdlNode  ) 

Definition at line 44 of file UgliScintMdlHandle.cxx.

References fUgliScintMdlNode, and UgliScintMdlNode::IncrementRef().

00045   : fUgliScintMdlNode(node),fGeoScintMdlNode(0)
00046 {
00047    // ctor keeps reference count up-to-date
00048  
00049    if (fUgliScintMdlNode) fUgliScintMdlNode->IncrementRef();
00050 }

UgliScintMdlHandle::UgliScintMdlHandle ( GeoScintMdlNode mdlNode  ) 

Definition at line 53 of file UgliScintMdlHandle.cxx.

References fGeoScintMdlNode, and GeoNode::IncrementRef().

00054   : fUgliScintMdlNode(0),fGeoScintMdlNode(node)
00055 {
00056    // ctor keeps reference count up-to-date
00057 
00058    if (fGeoScintMdlNode) fGeoScintMdlNode->IncrementRef();
00059 }

UgliScintMdlHandle::UgliScintMdlHandle ( const UgliScintMdlHandle that  ) 

Definition at line 63 of file UgliScintMdlHandle.cxx.

References fGeoScintMdlNode, fUgliScintMdlNode, GeoNode::IncrementRef(), and UgliScintMdlNode::IncrementRef().

00064    : UgliScintMdlABC(), 
00065      fUgliScintMdlNode(that.fUgliScintMdlNode),
00066      fGeoScintMdlNode(that.fGeoScintMdlNode)
00067 {
00068    // copy constructor keeps reference counts up-to-date
00069 
00070    if (fUgliScintMdlNode) fUgliScintMdlNode->IncrementRef();
00071    if (fGeoScintMdlNode) fGeoScintMdlNode->IncrementRef();
00072 }

UgliScintMdlHandle::UgliScintMdlHandle (  ) 

Definition at line 25 of file UgliScintMdlHandle.cxx.

References Msg::kFatal, and MSG.

00026   : fUgliScintMdlNode(0),fGeoScintMdlNode(0)
00027 {
00028    // Default constructor
00029 
00030    MSG("Ugli",Msg::kFatal) <<
00031       "UgliScintMdlHandle created by default ctor" << endl;
00032 //   assert(0);
00033 }

UgliScintMdlHandle::~UgliScintMdlHandle (  )  [virtual]

Definition at line 36 of file UgliScintMdlHandle.cxx.

References UgliScintMdlNode::DecrementRef(), GeoNode::DecrementRef(), fGeoScintMdlNode, and fUgliScintMdlNode.

00037 {
00038    // handle deletion updates reference count
00039    if (fUgliScintMdlNode) fUgliScintMdlNode->DecrementRef();
00040    if (fGeoScintMdlNode) fGeoScintMdlNode->DecrementRef();
00041 }


Member Function Documentation

Bool_t UgliScintMdlHandle::AttemptSet ( const char *  what = "?"  )  const

Definition at line 103 of file UgliScintMdlHandle.cxx.

References GetPlexScintMdlId(), IsFrozen(), Msg::kError, and MSG.

Referenced by SetLTPosRelPln(), and SetZRotRelPlnRad().

00104 {
00105   if (!IsFrozen()) return true;
00106 
00107   MSG("Ugli",Msg::kError) 
00108     << "AttemptSet " << what << " on Frozen " 
00109     << GetPlexScintMdlId() << " twarted!" << endl;
00110   return false;
00111 }

Float_t UgliScintMdlHandle::GetClearFiber ( const StripEnd::StripEnd_t  end  )  const [inline, virtual]
Float_t UgliScintMdlHandle::GetExtraWlsFiber ( const StripEnd::StripEnd_t  end  )  const [inline, virtual]
Float_t UgliScintMdlHandle::GetLPosRelPln (  )  const [inline]
Int_t UgliScintMdlHandle::GetModuleNum (  )  const [inline, virtual]
PlexPlaneId UgliScintMdlHandle::GetPlexPlaneId (  )  const [inline, virtual]
PlexScintMdlId UgliScintMdlHandle::GetPlexScintMdlId (  )  const [inline, virtual]
UgliScintPlnHandle UgliScintMdlHandle::GetScintPlnHandle ( void   )  const
Float_t UgliScintMdlHandle::GetTPosRelPln (  )  const [inline]
Float_t UgliScintMdlHandle::GetZRotRelPlnRad (  )  const [inline]
TVector3 UgliScintMdlHandle::GlobalToLocal ( const TVector3 &  global,
const Bool_t  globalInXYZ = true 
) const [virtual]

Definition at line 134 of file UgliScintMdlHandle.cxx.

References Munits::cm, fGeoScintMdlNode, fUgliScintMdlNode, PlexPlaneId::GetDetector(), GetPlexScintMdlId(), UgliScintMdlNode::GlobalToLocal(), GeoNode::GlobalToLocal(), IsGeo(), and Ugli::uvz2xyz().

Referenced by GeoValidate::TestScintMdl_GlobalToLocal().

00136 {
00137   // convert a global position into a local (volume) one
00138   // globalInXYZ determines whether result is in XYZ or UVZ
00139   TVector3 globalXYZ = (globalInXYZ) ? 
00140       global : Ugli::uvz2xyz(GetPlexScintMdlId().GetDetector(),global);
00141 
00142   if ( !IsGeo() ) 
00143       return fUgliScintMdlNode->GlobalToLocal(globalXYZ);
00144   else { 
00145       TVector3 scaledglobal(globalXYZ); scaledglobal *= 1./Munits::cm;
00146       return (fGeoScintMdlNode->GlobalToLocal(scaledglobal) *= Munits::cm); 
00147   } 
00148 }

Bool_t UgliScintMdlHandle::IsFrozen (  )  const [inline, virtual]
virtual Bool_t UgliScintMdlHandle::IsGeo (  )  const [inline, virtual]
Bool_t UgliScintMdlHandle::IsValid (  )  const [inline, virtual]

Definition at line 89 of file UgliScintMdlHandle.h.

References fGeoScintMdlNode, fUgliScintMdlNode, and IsGeo().

00090 { if ( !IsGeo() ) return (fUgliScintMdlNode) ? kTRUE : kFALSE; 
00091   else            return (fGeoScintMdlNode)  ? kTRUE : kFALSE; }

TVector3 UgliScintMdlHandle::LocalToGlobal ( const TVector3 &  local,
const Bool_t  globalInXYZ = true 
) const [virtual]

Definition at line 151 of file UgliScintMdlHandle.cxx.

References Munits::cm, fGeoScintMdlNode, fUgliScintMdlNode, DataUtil::GetDetector(), GetPlexScintMdlId(), IsGeo(), GeoNode::LocalToGlobal(), UgliScintMdlNode::LocalToGlobal(), and Ugli::xyz2uvz().

Referenced by GeoValidate::TestScintMdl_GlobalToLocal(), and GeoValidate::TestScintMdl_LocalToGlobal().

00153 {
00154   // convert a global position into a local (volume) one
00155   // globalInXYZ determines whether result is in XYZ or UVZ
00156   TVector3 globalXYZ;
00157   if ( !IsGeo() ) 
00158       globalXYZ = fUgliScintMdlNode->LocalToGlobal(local);
00159   else { 
00160       TVector3 scaledlocal(local); scaledlocal *= 1./Munits::cm; 
00161       globalXYZ = (fGeoScintMdlNode ->LocalToGlobal(scaledlocal) *= Munits::cm);
00162   }
00163 
00164   if (globalInXYZ ) return globalXYZ;
00165   else              return Ugli::xyz2uvz(GetPlexScintMdlId().GetDetector(),
00166                                          globalXYZ);
00167 }

Int_t UgliScintMdlHandle::NumberOfStrips (  )  const [inline, virtual]
UgliScintMdlHandle & UgliScintMdlHandle::operator= ( const UgliScintMdlHandle that  ) 

Reimplemented from UgliScintMdlABC.

Definition at line 75 of file UgliScintMdlHandle.cxx.

References UgliScintMdlNode::DecrementRef(), GeoNode::DecrementRef(), fGeoScintMdlNode, fUgliScintMdlNode, GeoNode::IncrementRef(), and UgliScintMdlNode::IncrementRef().

00076 {
00077    // assignment keeps reference counts up-to-date
00078 
00079    if (fUgliScintMdlNode) fUgliScintMdlNode->DecrementRef();
00080    if (fGeoScintMdlNode) fGeoScintMdlNode->DecrementRef();
00081 
00082    fUgliScintMdlNode = that.fUgliScintMdlNode;
00083    fGeoScintMdlNode = that.fGeoScintMdlNode;
00084 
00085    if (fUgliScintMdlNode) fUgliScintMdlNode->IncrementRef();
00086    if (fGeoScintMdlNode) fGeoScintMdlNode->IncrementRef();
00087 
00088    return *this;
00089 }

void UgliScintMdlHandle::RotateRelPlnBy ( Float_t  deltaRadians  )  [inline]

Definition at line 133 of file UgliScintMdlHandle.h.

References GetZRotRelPlnRad(), and SetZRotRelPlnRad().

00134 { SetZRotRelPlnRad(GetZRotRelPlnRad()+deltaRadians); }

void UgliScintMdlHandle::SetLTPosRelPln ( Float_t  lpos,
Float_t  tpos 
)

Definition at line 121 of file UgliScintMdlHandle.cxx.

References AttemptSet(), Munits::cm, fGeoScintMdlNode, fUgliScintMdlNode, IsGeo(), GeoScintMdlNode::SetLTPosRelPln(), and UgliScintMdlNode::SetLTPosRelPln().

Referenced by ShiftLTPosRelPlnBy().

00122 {
00123   if (!AttemptSet("LTPosRelPln")) return;
00124   if (!IsGeo())fUgliScintMdlNode->SetLTPosRelPln(lpos,tpos);
00125   else {
00126     lpos *= 1./Munits::cm;
00127     tpos *= 1./Munits::cm;
00128     fGeoScintMdlNode->SetLTPosRelPln(lpos,tpos);
00129   }
00130   
00131 }

void UgliScintMdlHandle::SetZRotRelPlnRad ( Float_t  radians  ) 

Definition at line 113 of file UgliScintMdlHandle.cxx.

References AttemptSet(), fGeoScintMdlNode, fUgliScintMdlNode, IsGeo(), UgliScintMdlNode::SetZRotRelPlnRad(), and GeoScintMdlNode::SetZRotRelPlnRad().

Referenced by RotateRelPlnBy().

00114 {
00115   if (!AttemptSet("ZRotRelPlnRad")) return;
00116   if (!IsGeo())fUgliScintMdlNode->SetZRotRelPlnRad(radians);
00117   else fGeoScintMdlNode->SetZRotRelPlnRad(radians);
00118   
00119 }

void UgliScintMdlHandle::ShiftLTPosRelPlnBy ( Float_t  dlpos,
Float_t  dtpos 
) [inline]

Definition at line 136 of file UgliScintMdlHandle.h.

References GetLPosRelPln(), GetTPosRelPln(), and SetLTPosRelPln().

00137 { SetLTPosRelPln(GetLPosRelPln()+dlpos,GetTPosRelPln()+dtpos); }


Member Data Documentation


The documentation for this class was generated from the following files:

Generated on 22 Nov 2017 for loon by  doxygen 1.6.1