10#include "TGeoManager.h"
38 TGeoPhysicalNode* node,
67 case 0: label =
"U";
break;
68 case 1: label =
"D";
break;
71 SetName(
fMother->GetName() + label );
86 SetName(
fMother->GetName() + label );
97 TString result =
"SSD";
100 result += Form(
"_U%02i", unit + 1);
103 result += Form(
"_L%02i", ladder + 1);
106 result += (hladder == 0 ?
"U" :
"D");
108 Int_t
module = BmnSsdAddress::GetElementId(address, kSsdModule);
109 result += Form(
"_M%02i", module + 1);
112 result += Form(
"_S%02i", sensor + 1);
138 if ( level <=
fLevel ) nElements = 0;
154 assert( gGeoManager );
161 LOG(error) << fName <<
": physical node is not set!";
165 TGeoNode* mNode =
fNode->GetNode();
166 TString mPath =
fNode->GetName();
168 for (Int_t iNode = 0; iNode < mNode->GetNdaughters(); iNode++) {
171 TString dName = mNode->GetDaughter(iNode)->GetName();
173 TString::kIgnoreCase ) ) {
176 TString dPath = mPath +
"/" + dName;
177 TGeoPhysicalNode* pNode =
new TGeoPhysicalNode(dPath.Data());
186 dElement =
new BmnSsdModule(address, pNode,
this);
break;
206 LOG(info) << setw(10) << right <<
fAddress <<
" "
207 << setw(12) << left << fName
208 <<
" type " << setw(22) << fTitle <<
" path "
209 <<
fNode->GetName() <<
" " <<
fNode->GetTitle();
210 if ( opt[0] ==
'R' ) {
228 default: LOG(fatal) << fName <<
": Illegal element level "
Class representing an element of the SSD setup.
virtual void InitDaughters()
TGeoPhysicalNode * fNode
Pointer to geometry.
std::vector< BmnSsdElement * > fDaughters
Array of daughters.
Int_t GetNofDaughters() const
Int_t GetNofElements(Int_t level) const
Int_t fAddress
Unique element address.
BmnSsdElement * GetDaughter(Int_t index) const
virtual void Print(Option_t *opt="") const
BmnSsdElement * fMother
Mother element.
ESsdElementLevel GetLevel() const
ESsdElementLevel fLevel
Level in hierarchy.
void SetLevel(Int_t level)
Class representing an instance of a readout unit in the BMN-SSD.
static BmnSsdSetup * Instance()
const char * GetLevelName(Int_t level)
UInt_t GetElementId(Int_t address, Int_t level)
Get the index of an element.
Int_t SetElementId(Int_t address, Int_t level, UInt_t newId)
Set the index of an element, leaving the other element levels untouched.