- Int_t *idtmed = fIdtmed->GetArray()-1299;
-
- //////////////////////////////////////////////////////////////////////////
- // Definition of Volumes
- //////////////////////////////////////////////////////////////////////////
-
- // Definition of the mother volume for the TRD (Al)
- par_mo[0] = 0.;
- par_mo[1] = 360.;
- par_mo[2] = nsect;
- par_mo[3] = 2.;
- par_mo[4] = -zmax1;
- par_mo[5] = rmin;
- par_mo[6] = rmax;
- par_mo[7] = zmax1;
- par_mo[8] = rmin;
- par_mo[9] = rmax;
- gMC->Gsvolu("TRD ", "PGON", idtmed[1301-1], par_mo, nparmo);
- gMC->Gsdvn("UTRS", "TRD ", nsect, 2);
-
- // The minimal width of a sector in rphi-direction
- Float_t widmi = rmin * TMath::Tan(kPI/nsect);
- // The maximal width of a sector in rphi-direction
- Float_t widma = rmax * TMath::Tan(kPI/nsect);
- // The total thickness of the spaceframe (Al + Air)
- Float_t frame = widmi - (widpl1 / 2);
-
- // Definition of the inner part of the detector frame (Air)
- par_fr[0] = widmi - alframe / 2.;
- par_fr[1] = widma - alframe / 2.;
- par_fr[2] = zmax1;
- par_fr[3] = (rmax - rmin) / 2;
- gMC->Gsvolu("UTRI", "TRD1", idtmed[1302-1], par_fr, nparfr);
-
- // Some parameter for the chambers
- Float_t lendifc = (zmax1 - zmax2) / nmodul;
- Float_t heightc = (rmax - rmin ) / nmodul;
- Float_t widdifc = (widma - widmi) / nmodul;
-
- // Definition of the chambers
- Char_t ctagc[5], ctagi[5];
- for (icham = 1; icham <= ncham; ++icham) {
-
- // Carbon frame of the inner chambers (C)
- par_ch[0] = widmi + (icham-1) * widdifc - frame;
- par_ch[1] = zleni / 2.;
- par_ch[2] = heightc / 2.;
- sprintf(ctagc,"UCI%1d",icham);
- gMC->Gsvolu(ctagc, "BOX ", idtmed[1307-1], par_ch, nparch);
- // Inner part of the inner chambers (Air)
- par_ch[0] -= ccframe;
- par_ch[1] -= ccframe;
- sprintf(ctagc,"UII%1d",icham);
- gMC->Gsvolu(ctagc, "BOX ", idtmed[1302-1], par_ch, nparch);
-
- // Carbon frame of the neighbouring chambers (C)
- par_ch[0] = widmi + (icham-1) * widdifc - frame;
- par_ch[1] = zlenn / 2.;
- par_ch[2] = heightc / 2.;
- sprintf(ctagc,"UCN%1d",icham);
- gMC->Gsvolu(ctagc, "BOX ", idtmed[1307-1], par_ch, nparch);
- // Inner part of the neighbouring chambers (Air)
- par_ch[0] -= ccframe;
- par_ch[1] -= ccframe;
- sprintf(ctagc,"UIN%1d",icham);
- gMC->Gsvolu(ctagc, "BOX ", idtmed[1302-1], par_ch, nparch);
-
- // Carbon frame of the outer chambers (C)
- par_ch[0] = widmi + (icham-1) * widdifc - frame;
- par_ch[1] = (icham - 6) * lendifc / 2. + zleno / 2.;
- par_ch[2] = heightc / 2.;
- sprintf(ctagc,"UCO%1d",icham);
- gMC->Gsvolu(ctagc, "BOX ", idtmed[1307-1], par_ch, nparch);
- // Inner part of the outer chambers (Air)
- par_ch[0] -= ccframe;
- par_ch[1] -= ccframe;
- sprintf(ctagc,"UIO%1d",icham);
- gMC->Gsvolu(ctagc, "BOX ", idtmed[1302-1], par_ch, nparch);
-
- }
-
- // Definition of the layers in each inner chamber
- par_ic[0] = -1.;
- par_ic[1] = -1.;
- // G10 layer (radiator layer)
- par_ic[2] = sethick / 2;
- gMC->Gsvolu("UT0I", "BOX ", idtmed[1313-1], par_ic, nparic);
- // CO2 layer (radiator)
- par_ic[2] = rathick / 2;
- gMC->Gsvolu("UT1I", "BOX ", idtmed[1312-1], par_ic, nparic);
- // PE layer (radiator)
- par_ic[2] = pethick / 2;
- gMC->Gsvolu("UT2I", "BOX ", idtmed[1303-1], par_ic, nparic);
- // Mylar layer (entrance window + HV cathode)
- par_ic[2] = mythick / 2;
- gMC->Gsvolu("UT3I", "BOX ", idtmed[1308-1], par_ic, nparic);
- // Xe/Isobutane layer (gasvolume)
- par_ic[2] = xethick / 2.;
- for (icham = 1; icham <= 6; ++icham) {
- sprintf(ctagc,"UXI%1d",icham);
- gMC->Gsvolu(ctagc, "BOX ", idtmed[1309-1], par_ic, nparic);
- }
- // Cu layer (pad plane)
- par_ic[2] = cuthick / 2;
- gMC->Gsvolu("UT5I", "BOX ", idtmed[1305-1], par_ic, nparic);
- // G10 layer (support structure)
- par_ic[2] = suthick / 2;
- gMC->Gsvolu("UT6I", "BOX ", idtmed[1313-1], par_ic, nparic);
- // Cu layer (FEE + signal lines)
- par_ic[2] = fethick / 2;
- gMC->Gsvolu("UT7I", "BOX ", idtmed[1305-1], par_ic, nparic);
- // PE layer (cooling devices)
- par_ic[2] = cothick / 2;
- gMC->Gsvolu("UT8I", "BOX ", idtmed[1303-1], par_ic, nparic);
- // Water layer (cooling)
- par_ic[2] = wathick / 2;
- gMC->Gsvolu("UT9I", "BOX ", idtmed[1314-1], par_ic, nparic);
-
- // Definition of the layers in each neighbouring chamber
- par_nc[0] = -1.;
- par_nc[1] = -1.;
- // G10 layer (radiator layer)
- par_nc[2] = sethick / 2;
- gMC->Gsvolu("UT0N", "BOX ", idtmed[1313-1], par_nc, nparnc);
- // CO2 layer (radiator)
- par_nc[2] = rathick / 2;
- gMC->Gsvolu("UT1N", "BOX ", idtmed[1312-1], par_nc, nparnc);
- // PE layer (radiator)
- par_nc[2] = pethick / 2;
- gMC->Gsvolu("UT2N", "BOX ", idtmed[1303-1], par_nc, nparnc);
- // Mylar layer (entrance window + HV cathode)
- par_nc[2] = mythick / 2;
- gMC->Gsvolu("UT3N", "BOX ", idtmed[1308-1], par_nc, nparnc);
- // Xe/Isobutane layer (gasvolume)
- par_nc[2] = xethick / 2.;
- for (icham = 1; icham <= 6; ++icham) {
- sprintf(ctagc,"UXN%1d",icham);
- gMC->Gsvolu(ctagc, "BOX ", idtmed[1309-1], par_nc, nparnc);
- }
- // Cu layer (pad plane)
- par_nc[2] = cuthick / 2;
- gMC->Gsvolu("UT5N", "BOX ", idtmed[1305-1], par_nc, nparnc);
- // G10 layer (support structure)
- par_nc[2] = suthick / 2;
- gMC->Gsvolu("UT6N", "BOX ", idtmed[1313-1], par_nc, nparnc);
- // Cu layer (FEE + signal lines)
- par_nc[2] = fethick / 2;
- gMC->Gsvolu("UT7N", "BOX ", idtmed[1305-1], par_nc, nparnc);
- // PE layer (cooling devices)
- par_nc[2] = cothick / 2;
- gMC->Gsvolu("UT8N", "BOX ", idtmed[1303-1], par_nc, nparnc);
- // Water layer (cooling)
- par_nc[2] = wathick / 2;
- gMC->Gsvolu("UT9N", "BOX ", idtmed[1314-1], par_nc, nparnc);
-
- // Definition of the layers in each outer chamber
- par_oc[0] = -1.;
- par_oc[1] = -1.;
- // G10 layer (radiator layer)
- par_oc[2] = sethick / 2;
- gMC->Gsvolu("UT0O", "BOX ", idtmed[1313-1], par_oc, nparoc);
- // CO2 layer (radiator)
- par_oc[2] = rathick / 2;
- gMC->Gsvolu("UT1O", "BOX ", idtmed[1312-1], par_oc, nparoc);
- // PE layer (radiator)
- par_oc[2] = pethick / 2;
- gMC->Gsvolu("UT2O", "BOX ", idtmed[1303-1], par_oc, nparoc);
- // Mylar layer (entrance window + HV cathode)
- par_oc[2] = mythick / 2;
- gMC->Gsvolu("UT3O", "BOX ", idtmed[1308-1], par_oc, nparoc);
- // Xe/Isobutane layer (gasvolume)
- par_oc[2] = xethick / 2.;
- for (icham = 1; icham <= 6; ++icham) {
- sprintf(ctagc,"UXO%1d",icham);
- gMC->Gsvolu(ctagc, "BOX ", idtmed[1309-1], par_oc, nparoc);
- }
- // Cu layer (pad plane)
- par_oc[2] = cuthick / 2;
- gMC->Gsvolu("UT5O", "BOX ", idtmed[1305-1], par_oc, nparoc);
- // G10 layer (support structure)
- par_oc[2] = suthick / 2;
- gMC->Gsvolu("UT6O", "BOX ", idtmed[1313-1], par_oc, nparoc);
- // Cu layer (FEE + signal lines)
- par_oc[2] = fethick / 2;
- gMC->Gsvolu("UT7O", "BOX ", idtmed[1305-1], par_oc, nparoc);
- // PE layer (cooling devices)
- par_oc[2] = cothick / 2;
- gMC->Gsvolu("UT8O", "BOX ", idtmed[1303-1], par_oc, nparoc);
- // Water layer (cooling)
- par_oc[2] = wathick / 2;
- gMC->Gsvolu("UT9O", "BOX ", idtmed[1314-1], par_oc, nparoc);
-
- //////////////////////////////////////////////////////////////////////////
- // Positioning of Volumes
- //////////////////////////////////////////////////////////////////////////
-
- // The rotation matrices
- AliMatrix(idmat[0], 90., 90., 180., 0., 90., 0.);
- AliMatrix(idmat[1], 90., 90., 0., 0., 90., 0.);