//_____________________________________________________________________________ void StarMCHits::MakeDetectorDescriptors() { if (! gGeoManager) { cout << "No gGeoManager" << endl; return; } TDataSet *Detectors = StMaker::GetChain()->GetDataBase("VmcGeometry/Index"); if (! Detectors) { cout << "No Detectors found in VmcGeometry/Index" << endl; } // Make List of sensitive volumes TObjArray *vols = gGeoManager->GetListOfVolumes(); Int_t nvol = vols->GetEntriesFast(); Int_t nSensVol = 0; Int_t nsize = 100; TArrayI Indx(nsize); Int_t *indx = Indx.GetArray(); for (Int_t i = 0; i < nvol; i++) { TGeoVolume *vol = (TGeoVolume *) vols->At(i); if (! vol) continue; TGeoMedium *med = vol->GetMedium(); if (! med) continue; Int_t isvol = (Int_t) med->GetParam(0); if (! isvol) continue; indx[nSensVol] = i; nSensVol++; if (nSensVol >= nsize) { nsize *= 2; Indx.Set(nsize); indx = Indx.GetArray(); } TString Path(MakeDetectorDescriptor(vol->GetName())); if (Detectors) { // Check consistency StarVMCDetector *det = (StarVMCDetector *) Detectors->Find(vol->GetName()); if (! det) { cout << "Detector description for " << vol->GetName() << "\t" << vol->GetTitle() << " is missing" << endl; } else { TString FMT = det->GetFMT(); cout << "Found path:\t" << Path.Data() << endl; cout << "Set path:\t" << FMT.Data(); if (Path == FMT) cout << " are the same" << endl; else cout << " are the different" << endl; } } } }
void AliITSMaterialsTGeo(TString gfile="geometry.root"){ // Macro to print out the ITS material definitions as found // in the TGeo geometry file. // retrives geometry if(!gGeoManager) gGeoManager = new TGeoManager(); TGeoManager::Import(gfile.Data()); if (!gGeoManager) { cout<<"geometry not found\n"; return; } // end if TList *medlist=gGeoManager->GetListOfMedia(); TGeoMedium *med; TGeoMaterial *mat; Int_t imed,nmed,i; printf("imed Id Med_Name Mat_Name "); for(i=0;i<20;i++) printf(" par[%2d] ",i); printf("\n"); imed=0; do{ med = (TGeoMedium*)(medlist->At(imed)); if(!med) continue; /*if((((med->GetName())[0]=='I')&& // Only ITS. ((med->GetName())[1]=='T')&& ((med->GetName())[2]=='S')&& ((med->GetName())[3]=='_')))*/{ mat = med->GetMaterial(); if(mat) printf("%4d %4d %30s %30s",imed,med->GetId(),med->GetName(),mat->GetName()); else printf("%4d %4d %30s %30s",imed,med->GetId(),med->GetName(),"No Material"); for(i=0;i<20;i++) printf(" %12g",med->GetParam(i)); printf("\n"); imed++; } }while(med!=medlist->Last()); }