#include "THaDetectorBase.h"
#include "THaDetMap.h"
#include "VarType.h"
using std::vector;
THaDetectorBase::THaDetectorBase( const char* name,
const char* description ) :
THaAnalysisObject(name,description), fNelem(0)
{
fSize[0] = fSize[1] = fSize[2] = 0.0;
fDetMap = new THaDetMap;
}
THaDetectorBase::THaDetectorBase() : fDetMap(0) {
}
THaDetectorBase::~THaDetectorBase()
{
delete fDetMap;
}
Int_t THaDetectorBase::FillDetMap( const vector<Int_t>& values, UInt_t flags,
const char* here )
{
Int_t ret = fDetMap->Fill( values, flags );
if( ret == 0 ) {
Warning( Here(here), "No detector map entries found. Check database." );
} else if( ret == -1 ) {
Error( Here(here), "Too many detector map entries (maximum %d)",
THaDetMap::kDetMapSize );
} else if( ret < -1 ) {
Error( Here(here), "Invalid detector map data format "
"(wrong number of values). Check database." );
}
return ret;
}
void THaDetectorBase::PrintDetMap( Option_t* opt ) const
{
fDetMap->Print( opt );
}
Int_t THaDetectorBase::ReadGeometry( FILE* file, const TDatime& date,
Bool_t required )
{
vector<double> position, size;
Int_t err;
if( required ) {
DBRequest request[] = {
{ "position", &position, kDoubleV, 0, 0, 0,
"\"position\" (detector position [m])" },
{ "size", &size, kDoubleV, 0, 0, 0, "\"size\" (detector size [m])"},
{ 0 }
};
err = LoadDB( file, date, request, fPrefix );
} else {
DBRequest request[] = {
{ "position", &position, kDoubleV, 0, 1 },
{ "size", &size, kDoubleV, 0, 1 },
{ 0 }
};
err = LoadDB( file, date, request, fPrefix );
}
if( err )
return err;
if( !position.empty() ) {
if( position.size() != 3 ) {
Error( Here("ReadGeometry"), "Incorrect number of values for "
"detector position" );
return 1;
}
fOrigin.SetXYZ( position[0], position[1], position[2] );
}
if( !size.empty() ) {
if( size.size() != 3 ) {
Error( Here("ReadGeometry"), "Incorrect number of values for "
"detector size" );
return 2;
}
fSize[0] = size[0]/2.0;
fSize[1] = size[1]/2.0;
fSize[2] = size[2];
}
return 0;
}
ClassImp(THaDetectorBase)
Last change: Sat Nov 7 21:26:45 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.