- for (Int_t i = 1; i <= 3; i++) {
- AliFMDDetector* det = fmd->GetDetector(i);
- if (!det) {
- Warning("BuildGeometry", "FMD%d seems to be disabled", i);
- continue;
- }
- Double_t w = 0;
- Double_t rh = det->GetRing('I')->GetHighR();
- Char_t id = 'I';
- if (det->GetRing('O')) {
- w = TMath::Abs(det->GetRingZ('O') - det->GetRingZ('I'));
- id = (TMath::Abs(det->GetRingZ('O'))
- > TMath::Abs(det->GetRingZ('I')) ? 'O' : 'I');
- rh = det->GetRing('O')->GetHighR();
- }
- w += (det->GetRing(id)->GetModuleSpacing() +
- det->GetRing(id)->GetSiThickness());
- TShape* shape = new TTUBE(det->GetName(), det->GetTitle(), "void",
- det->GetRing('I')->GetLowR(), rh, w / 2);
- Double_t z = (det->GetRingZ('I') - w / 2);
- if (z > 0) z += det->GetRing(id)->GetModuleSpacing();
- top->cd();
- TNode* node = new TNode(det->GetName(), det->GetTitle(), shape,
- 0, 0, z, 0);
- fNodes->Add(node);
-
- for (Int_t j = 0; j < 2; j++) {
- AliFMDRing* r = 0;
- TShape* rshape = 0;
- TObjArray* rots = 0;
- switch (j) {
- case 0:
- r = det->GetRing('I'); rshape = innerShape; rots = innerRot; break;
- case 1:
- r = det->GetRing('O'); rshape = outerShape; rots = outerRot; break;
- }
- if (!r) continue;
-
- Double_t siThick = r->GetSiThickness();
- Int_t nmod = r->GetNModules();
- Double_t modspace = r->GetModuleSpacing();
- Double_t rz = - (z - det->GetRingZ(r->GetId()));
-
- for (Int_t k = 0; k < nmod; k++) {
- node->cd();
- Double_t offz = (k % 2 == 1 ? modspace : 0);
- TRotMatrix* rot = static_cast<TRotMatrix*>(rots->At(k));
- TString name(Form("%s%c_module_%02d", det->GetName(), r->GetId(),k));
- TString title(Form("%s%c Module %d", det->GetName(), r->GetId(),k));
- TNode* mnod = new TNode(name.Data(), title.Data(), rshape,
- 0, 0, rz - siThick / 2
- + TMath::Sign(offz,z), rot);
- mnod->SetLineColor(GetLineColor());
- fNodes->Add(mnod);
- } // for (Int_t k = 0 ; ...)
- } // for (Int_t j = 0 ; ...)
- } // for (Int_t i = 1 ; ...)
+ // Stainless steel
+ {
+ Float_t as[] = { 55.847, 51.9961, 58.6934, 28.0855 };
+ Float_t zs[] = { 26., 24., 28., 14. };
+ Float_t ws[] = { .715, .18, .1, .005 };
+ density = 7.88;
+ id = kSteelId;
+ AliMixture(id, "Steel$", as, zs, density, 4, ws);
+ AliMedium(kSteelId, "Steel$", id, 0, fieldType, maxField, maxBending,
+ maxStepSize, maxEnergyLoss, precision, minStepSize);
+ }
+ // Plastic
+ {
+ Float_t as[] = { 1.01, 12.01 };
+ Float_t zs[] = { 1., 6. };
+ Float_t ws[] = { 1., 1. };
+ density = 1.03;
+ maxBending = 10;
+ maxStepSize = .01;
+ precision = .003;
+ minStepSize = .003;
+ id = kPlasticId;
+ AliMixture(id, "Plastic$", as, zs, density, -2, ws);
+ AliMedium(kPlasticId, "Plastic$", id,0,fieldType,maxField,maxBending,
+ maxStepSize,maxEnergyLoss,precision,minStepSize);
+ }
+