#include "THaSubDetector.h"
#include "THaDetector.h"
#include "TString.h"
#include "TError.h"
ClassImp(THaSubDetector)
THaSubDetector::THaSubDetector( const char* name, const char* description,
THaDetectorBase* parent )
: THaDetectorBase(name,description), fParent(parent)
{
static const char* const here = "THaSubDetector";
if( !name || !*name ) {
Error( Here(here), "Must construct subdetector with valid name! "
"Object construction failed." );
MakeZombie();
return;
}
}
THaSubDetector::~THaSubDetector()
{
}
THaApparatus* THaSubDetector::GetApparatus() const
{
THaDetector* det = GetMainDetector();
return det ? det->GetApparatus() : 0;
}
const char* THaSubDetector::GetDBFileName() const
{
THaDetectorBase* det = GetParent();
return det ? det->GetDBFileName() : GetPrefix();
}
THaDetector* THaSubDetector::GetMainDetector() const
{
THaDetectorBase* parent = GetParent();
while( parent && dynamic_cast<THaSubDetector*>(parent) )
parent = static_cast<THaSubDetector*>(parent)->GetParent();
return dynamic_cast<THaDetector*>(parent);
}
void THaSubDetector::MakePrefix()
{
TString basename;
THaDetectorBase *det = GetParent();
if( det ) {
basename = det->GetPrefix();
basename.Chop();
} else
Warning( Here("MakePrefix()"), "No detector defined for this subdetector! "
"Fix your code!" );
THaDetectorBase::MakePrefix( basename.Data() );
}
void THaSubDetector::SetParent( THaDetectorBase* detector )
{
static const char* const here = "SetParent()";
if( IsInit() ) {
Error( Here(here), "Cannot set detector. Object already initialized.");
return;
}
if( !detector ) {
Error( Here(here), "Cannot set detector to NULL. Detector not changed.");
return;
}
if( detector == this ) {
Error( Here(here), "Cannot set detector to self. Detector not changed.");
return;
}
fParent = detector;
}
Last change: Sat Nov 7 21:26:52 2009
Last generated: 2009-11-07 21:26
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.