// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4VPhysicalVolume.icc,v 1.3 1999/12/15 14:49:51 gunter Exp $
// GEANT4 tag $Name: geant4-02-00 $
//
//
// class G4VPhysicalVolume Inline Implementation
//

// Define equality by equal addresses only.
inline G4bool G4VPhysicalVolume::operator == (const G4VPhysicalVolume& p) const
    {
	return (this==&p) ? true : false;
    }

// Access functions
inline const G4ThreeVector& G4VPhysicalVolume::GetTranslation() const
    {
	return ftrans;
    }
inline void G4VPhysicalVolume::SetTranslation(const G4ThreeVector &v)
    {
	ftrans=v;
    }
inline const G4RotationMatrix* G4VPhysicalVolume::GetRotation() const
    {
	return frot;
    }
inline G4RotationMatrix* G4VPhysicalVolume::GetRotation()
    {
	return frot;
    }
inline void G4VPhysicalVolume::SetRotation(G4RotationMatrix *pRot)
    {
	frot=pRot;
    }

inline G4LogicalVolume* G4VPhysicalVolume::GetLogicalVolume() const
    {
	return flogical;
    }

inline void G4VPhysicalVolume::SetLogicalVolume(G4LogicalVolume *pLogical)
    {
	flogical=pLogical;
    }

inline G4VPhysicalVolume* G4VPhysicalVolume::GetMother() const
    {
	return fmother;
    }

inline void G4VPhysicalVolume::SetMother(G4VPhysicalVolume *pMother)
    {
	fmother=pMother;
    }

inline G4String G4VPhysicalVolume::GetName() const
    {
	return fname;
    }

inline void G4VPhysicalVolume::SetName(const G4String& pName)
    {
        fname=pName;
    }

inline G4RotationMatrix G4VPhysicalVolume::GetObjectRotationValue() const
    {
        G4RotationMatrix  aRotM;   // Initialised to identity

	// Insure against frot being a null pointer
	if(frot)
	{
	   aRotM= frot->inverse();
	}
	return aRotM;
    }
inline       G4ThreeVector  G4VPhysicalVolume::GetObjectTranslation() const
    {
	return  ftrans;
    }
inline const G4RotationMatrix* G4VPhysicalVolume::GetFrameRotation() const
    {
	return frot;
    }
inline       G4ThreeVector  G4VPhysicalVolume::GetFrameTranslation() const
    {
	return -ftrans;
    }
