- //Begin_Html
- /*
- <img src="picts/AliZDCv1.gif">
- */
- //End_Html
- //Begin_Html
- /*
- <img src="picts/AliZDCv1Tree.gif">
- */
- //End_Html
-
- // The following variables were illegaly initialized in zdc_init.
- // These variables should become data members of this class
- // once zdc_init has been converted
- //* Initialize COMMON block ZDC_CGEOM
- //*
-
- const Int_t NZPTX=4;
- const Int_t NZPTY=1;
- const Int_t NZNTX=2;
- const Int_t NZNTY=2;
-
- Float_t HDZN[3] = {4.0,4.0,50.0};
- Float_t HDZP[3] = {10.0,6.0,75.0};
- // Coordinates of the center of the ZDC front face in the MRS
- Float_t ZNPOS[3] = {-0.5,0.,11613.};
- Float_t ZPPOS[3] = {-21.0,0.,11563.};
- Float_t FIZN[3] = {0.,0.01825,50.0};
- Float_t FIZP[3] = {0.,0.01825,75.0};
- Float_t GRZN[3] = {0.025,0.025,50.0};
- Float_t GRZP[3] = {0.040,0.040,75.0};
- Int_t NCEN[3] = {11,11,0};
- Int_t NCEP[3] = {10,10,0};
-
- Float_t angle;
- Float_t zq, conpar[9], tubpar[3];
- Int_t im1, im2;
- Float_t zd1, zd2;
-
-
- Int_t *idtmed = fIdtmed->GetArray()-799;
-
- // -- Mother of the ZDC
- conpar[0] = 0.;
- conpar[1] = 360.;
- conpar[2] = 2.;
- conpar[3] = 1920.;
- conpar[4] = 0.;
- conpar[5] = 55.;
- conpar[6] = 13060.;
- conpar[7] = 0.;
- conpar[8] = 55.;
- gMC->Gsvolu("ZDC ", "PCON", idtmed[891], conpar, 9);
- gMC->Gspos("ZDC ", 1, "ALIC", 0., 0., 0., 0, "ONLY");
- // -- FIRST SECTION OF THE BEAM PIPE (from compensator dipole to
- // beginning of D1)
-
- zd1 = 1920.;
-
- tubpar[0] = 2.3;
- tubpar[1] = 2.5;
- tubpar[2] = 1961.75;
- gMC->Gsvolu("P001", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P001", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- //-- SECOND SECTION OF THE BEAM PIPE (FROM THE END OF D1 TO THE BEGINNING OF
- // D2)
-
- zd1 = 6316.+472.5;
-
- tubpar[0] = 7.3/2.;
- tubpar[1] = 7.7/2.;
- tubpar[2] = 90.*0.5;
- gMC->Gsvolu("P002", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P002", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- zd1 += tubpar[2] * 2.;
-
- tubpar[0] = 7.3/2.;
- tubpar[1] = 7.7/2.;
- tubpar[2] = 10.*0.5;
- gMC->Gsvolu("P003", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P003", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- zd1 += tubpar[2] * 2.;
-
- conpar[0] = 3.16/2.;
- conpar[1] = 7.3/2.;
- conpar[2] = 7.7/2.;
- conpar[3] = 9.8/2.;
- conpar[4] = 10.0/2.;
- gMC->Gsvolu("P004", "CONE", idtmed[851], conpar, 5);
- gMC->Gspos("P004", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
-
- zd1 += conpar[0] * 2.;
-
- tubpar[0] = 9.8/2.;
- tubpar[1] = 10.0/2;
- tubpar[2] = 490./2.;
- gMC->Gsvolu("P005", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P005", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- zd1 += tubpar[2] * 2.;
-
- conpar[0] = 30./2.;
- conpar[1] = 9.8/2.;
- conpar[2] = 10.0/2.;
- conpar[3] = 20.4/2.;
- conpar[4] = 20.6/2.;
- gMC->Gsvolu("P006", "CONE", idtmed[851], conpar, 5);
- gMC->Gspos("P006", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
-
- zd1 += conpar[0] * 2.;
-
- tubpar[0] = 20.4/2.;
- tubpar[1] = 20.6/2.;
- tubpar[2] = 150./2.;
- gMC->Gsvolu("P007", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P007", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- zd1 += tubpar[2] * 2.;
-
- conpar[0] = 13.6/2.;
- conpar[1] = 20.4/2.;
- conpar[2] = 20.6/2.;
- conpar[3] = 25.2/2.;
- conpar[4] = 25.4/2.;
- gMC->Gsvolu("P008", "CONE", idtmed[851], conpar, 5);
- gMC->Gspos("P008", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
-
- zd1 += conpar[0] * 2.;
-
- tubpar[0] = 25.2/2.;
- tubpar[1] = 25.4/2.;
- tubpar[2] = 205.8/2.;
- gMC->Gsvolu("P009", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P009", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- zd1 += tubpar[2] * 2.;
-
- tubpar[0] = 43.8/2.;
- tubpar[1] = 44.0/2.;
- tubpar[2] = 500./2.;
- gMC->Gsvolu("P010", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P010", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- zd1 += tubpar[2] * 2.;
-
- tubpar[0] = 31.8/2.;
- tubpar[1] = 32.0/2.;
- tubpar[2] = 757.5/2.;
- gMC->Gsvolu("P011", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P011", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- zd1 += tubpar[2] * 2.;
-
- conpar[0] = 22.7/2.;
- conpar[1] = 31.8/2.;
- conpar[2] = 32.0/2.;
- conpar[3] = 39.8/2.;
- conpar[4] = 40.0/2.;
- gMC->Gsvolu("P012", "CONE", idtmed[851], conpar, 5);
- gMC->Gspos("P012", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
-
- zd1 += conpar[0] * 2.;
-
- tubpar[0] = 39.8/2.;
- tubpar[1] = 40.0/2.;
- tubpar[2] = 100./2.;
- gMC->Gsvolu("P013", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P013", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- zd1 += tubpar[2] * 2.;
-
- tubpar[0] = 39.8/2.;
- tubpar[1] = 40.0/2.;
- tubpar[2] = 600./2.;
- gMC->Gsvolu("P014", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P014", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- zd1 += tubpar[2] * 2.;
-
- conpar[0] = 28.4/2.;
- conpar[1] = 39.8/2.;
- conpar[2] = 40.0/2.;
- conpar[3] = 49.8/2.;
- conpar[4] = 50.0/2.;
- gMC->Gsvolu("P015", "CONE", idtmed[851], conpar, 5);
- gMC->Gspos("P015", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
-
- zd1 += conpar[0] * 2.;
-
- tubpar[0] = 49.8/2.;
- tubpar[1] = 50.0/2.;
- tubpar[2] = 100./2.;
- gMC->Gsvolu("P016", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P016", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- zd1 += tubpar[2] * 2.;
-
- tubpar[0] = 49.8/2.;
- tubpar[1] = 50.0/2.;
- tubpar[2] = 600./2.;
- gMC->Gsvolu("P017", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P017", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- zd1 += tubpar[2] * 2.;
-
- conpar[0] = 28.4/2.;
- conpar[1] = 49.8/2.;
- conpar[2] = 50.0/2.;
- conpar[3] = 59.8/2.;
- conpar[4] = 60.0/2.;
- gMC->Gsvolu("P018", "CONE", idtmed[851], conpar, 5);
- gMC->Gspos("P018", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
-
- zd1 += conpar[0] * 2.;
-
- tubpar[0] = 59.8/2.;
- tubpar[1] = 60.0/2.;
- tubpar[2] = 50./2.;
- gMC->Gsvolu("P019", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P019", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- zd1 += tubpar[2] * 2.;
-
- tubpar[0] = 59.8/2.;
- tubpar[1] = 60.0/2.;
- tubpar[2] = 800./2.;
- gMC->Gsvolu("P020", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P020", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- zd1 += tubpar[2] * 2.;
-
- tubpar[0] = 0.;
- tubpar[1] = 60.0/2.;
- tubpar[2] = 0.2/2.;
- gMC->Gsvolu("P021", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("P021", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-
- zd1 += tubpar[2] * 2.;
-
- tubpar[0] = 0.;
- tubpar[1] = 4.4/2.;
- tubpar[2] = 0.2/2.;
- gMC->Gsvolu("Q021", "TUBE", idtmed[889], tubpar, 3);
- tubpar[0] = 0.;
- tubpar[1] = 7.0/2.;
- tubpar[2] = 0.2/2.;
- gMC->Gsvolu("R021", "TUBE", idtmed[889], tubpar, 3);
- // -- POSITION Q021 INSIDE P021
- gMC->Gspos("Q021", 1, "P021", -7.7, 0., 0., 0, "ONLY");
- // -- POSITION R020 INSIDE P020
- gMC->Gspos("R021", 1, "P021", 7.7, 0., 0., 0, "ONLY");
-
- // -- BEAM PIPES BETWEEN END OF CONICAL PIPE AND BEGINNING OF D2
- tubpar[0] = 4.0/2.;
- tubpar[1] = 4.4/2.;
- tubpar[2] = 645.*0.5;
- gMC->Gsvolu("P022", "TUBE", idtmed[851], tubpar, 3);
- tubpar[0] = 7.0/2.;
- tubpar[1] = 7.4/2.;
- tubpar[2] = 645.*0.5;
- gMC->Gsvolu("P023", "TUBE", idtmed[851], tubpar, 3);
-
- // -- ROTATE PIPES
- AliMatrix(im1, 90.-0.071, 0., 90., 90., .071, 180.);
- angle = .071*kDegrad;
- gMC->Gspos("P022", 1, "ZDC ", TMath::Sin(angle) * 322.5 - 9.7 +
- TMath::Sin(angle) * 472.5, 0., tubpar[2] + zd1, im1, "ONLY");
- AliMatrix(im2, 90.+0.071, 0., 90., 90., .071, 0.);
- gMC->Gspos("P023", 1, "ZDC ", 9.7 - TMath::Sin(angle) * 322.5, 0.,
- tubpar[2] + zd1, im2, "ONLY");
-
- // -- END OF BEAM PIPE VOLUME DEFINITION. MAGNET DEFINITION FOLLOWS
- // (LHC OPTICS 6)
-
- // -- COMPENSATOR DIPOLE (MCBWA)
- // GAP (VACUUM WITH MAGNETIC FIELD)
-
- tubpar[0] = 0.;
- tubpar[1] = 4.5;
- tubpar[2] = 190./2.;
- gMC->Gsvolu("MCBW", "TUBE", idtmed[890], tubpar, 3);
- gMC->Gspos("MCBW", 1, "ZDC ", 0., 0., tubpar[2] + 1920., 0, "ONLY");
-
- // -- YOKE (IRON WITHOUT MAGNETIC FIELD)
-
- tubpar[0] = 4.5;
- tubpar[1] = 55.;
- tubpar[2] = 190./2.;
- gMC->Gsvolu("YMCB", "TUBE", idtmed[851], tubpar, 3);
- gMC->Gspos("YMCB", 1, "ZDC ", 0., 0., tubpar[2] + 1920., 0, "ONLY");
-
- // -- INNER TRIPLET
-
- zq = 2300.;
-
- // -- DEFINE MQXL AND MQX QUADRUPOLE ELEMENT
-
- // MQXL
- // -- GAP (VACUUM WITH MAGNETIC FIELD)
-
- tubpar[0] = 0.;
- tubpar[1] = 3.5;
- tubpar[2] = 630./2.;
- gMC->Gsvolu("MQXL", "TUBE", idtmed[890], tubpar, 3);
-
- // -- YOKE
-
- tubpar[0] = 3.5;
- tubpar[1] = 22.;
- tubpar[2] = 630./2.;
- gMC->Gsvolu("YMQL", "TUBE", idtmed[851], tubpar, 3);
-
- gMC->Gspos("MQXL", 1, "ZDC ", 0., 0., tubpar[2] + zq, 0, "ONLY");
- gMC->Gspos("YMQL", 1, "ZDC ", 0., 0., tubpar[2] + zq, 0, "ONLY");
-
- gMC->Gspos("MQXL", 2, "ZDC ", 0., 0., tubpar[2] + zq + 2430., 0, "ONLY");
- gMC->Gspos("YMQL", 2, "ZDC ", 0., 0., tubpar[2] + zq + 2430., 0, "ONLY");
-
- // -- MQX
- // -- GAP (VACUUM WITH MAGNETIC FIELD)
-
- tubpar[0] = 0.;
- tubpar[1] = 3.5;
- tubpar[2] = 550./2.;
- gMC->Gsvolu("MQX ", "TUBE", idtmed[890], tubpar, 3);
-
- // -- YOKE
-
- tubpar[0] = 3.5;
- tubpar[1] = 22.;
- tubpar[2] = 550./2.;
- gMC->Gsvolu("YMQ ", "TUBE", idtmed[851], tubpar, 3);
-
- gMC->Gspos("MQX ", 1, "ZDC ", 0., 0., tubpar[2] + zq + 880., 0, "ONLY");
- gMC->Gspos("YMQ ", 1, "ZDC ", 0., 0., tubpar[2] + zq + 880., 0, "ONLY");
-
- gMC->Gspos("MQX ", 2, "ZDC ", 0., 0., tubpar[2] + zq + 1530., 0, "ONLY");
- gMC->Gspos("YMQ ", 2, "ZDC ", 0., 0., tubpar[2] + zq + 1530., 0, "ONLY");
-
- // -- SEPARATOR DIPOLE D1
-
- zd1 = 5843.5;
-
- // -- GAP (VACUUM WITH MAGNETIC FIELD)
-
- tubpar[0] = 0.;
- tubpar[1] = 4.5;
- tubpar[2] = 945/2.;
- gMC->Gsvolu("D1 ", "TUBE", idtmed[890], tubpar, 3);
-
- // -- YOKE
-
- tubpar[0] = 0.;
- tubpar[1] = 55.;
- tubpar[2] = 945/2.;
- gMC->Gsvolu("YD1 ", "TUBE", idtmed[851], tubpar, 3);
-
- gMC->Gspos("YD1 ", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
- gMC->Gspos("D1 ", 1, "YD1 ", 0., 0., 0., 0, "ONLY");
-
- // -- DIPOLE D2
-
- zd2 = 12113.2;
-
- // -- GAP (VACUUM WITH MAGNETIC FIELD)
-
- tubpar[0] = 0.;
- tubpar[1] = 4.5;
- tubpar[2] = 945./2.;
- gMC->Gsvolu("D2 ", "TUBE", idtmed[890], tubpar, 3);
-
- // -- YOKE
-
- tubpar[0] = 0.;
- tubpar[1] = 55.;
- tubpar[2] = 945./2.;
- gMC->Gsvolu("YD2 ", "TUBE", idtmed[851], tubpar, 3);
-
- gMC->Gspos("YD2 ", 1, "ZDC ", 0., 0., tubpar[2] + zd2, 0, "ONLY");
-
- gMC->Gspos("D2 ", 1, "YD2 ", -9.7, 0., 0., 0, "ONLY");
- gMC->Gspos("D2 ", 2, "YD2 ", 9.7, 0., 0., 0, "ONLY");
-
- // -- END OF MAGNET DEFINITION
-
- // ----------------- Hadronic calorimeters -------------------- *
-
- // Neutron calorimeter
-
- gMC->Gsvolu("ZNEU", "BOX ", idtmed[800], HDZN, 3); // Passive material
- gMC->Gsvolu("ZNFI", "TUBE", idtmed[802], FIZN, 3); // Active material
- gMC->Gsvolu("ZNGR", "BOX ", idtmed[889], GRZN, 3); // Empty grooves
-
- // Divide ZNEU in towers
- // (for hits purposes)
-
- gMC->Gsdvn("ZNTX", "ZNEU", NZNTX, 1); // x-tower
- gMC->Gsdvn("ZN1 ", "ZNTX", NZNTY, 2); // y-tower
-
- // Divide ZNEU in minitowers
- // (NCEN(1)= NUMBER OF FIBERS PER TOWER ALONG X-AXIS,
- // NCEN(2)= NUMBER OF FIBERS PER TOWER ALONG Y-AXIS)
- // (one fiber per minitower)
-
- gMC->Gsdvn("ZNSL", "ZN1 ", NCEN[1], 2); // Slices
- gMC->Gsdvn("ZNST", "ZNSL", NCEN[0], 1); // Sticks
-
- // --- Position the empty grooves in the sticks
- gMC->Gspos("ZNGR", 1, "ZNST", 0., 0., 0., 0, "ONLY");
- // --- Position the fibers in the grooves
- gMC->Gspos("ZNFI", 1, "ZNGR", 0., 0., 0., 0, "ONLY");
- // --- Position the neutron calorimeter in ZDC
- gMC->Gspos("ZNEU", 1, "ZDC ", ZNPOS[0], ZNPOS[1], ZNPOS[2] + HDZN[2], 0, "ONLY");
-
- // Proton calorimeter
-
- gMC->Gsvolu("ZPRO", "BOX ", idtmed[801], HDZP, 3); // Passive material
- gMC->Gsvolu("ZPFI", "TUBE", idtmed[802], FIZP, 3); // Active material
- gMC->Gsvolu("ZPGR", "BOX ", idtmed[889], GRZP, 3); // Empty grooves
-
- // Divide ZPRO in towers
- // (for hits purposes)
-
- gMC->Gsdvn("ZPTX", "ZPRO", NZPTX, 1); // x-tower
- gMC->Gsdvn("ZP1 ", "ZPTX", NZPTY, 2); // y-tower
-
-
- // Divide ZPRO in minitowers
- // (NCEP[0]= NUMBER OF FIBERS ALONG X-AXIS PER MINITOWER,
- // NCEP[1]= NUMBER OF FIBERS ALONG Y-AXIS PER MINITOWER)
- // (one fiber per minitower)
-
- gMC->Gsdvn("ZPSL", "ZP1 ", NCEP[1], 2); // Slices
- gMC->Gsdvn("ZPST", "ZPSL", NCEP[0], 1); // Sticks