+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * *
+ * Author: The ALICE Off-line Project. *
+ * Contributors are mentioned in the code where appropriate. *
+ * *
+ * Permission to use, copy, modify and distribute this software and its *
+ * documentation strictly for non-commercial purposes is hereby granted *
+ * without fee, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission notice *
+ * appear in the supporting documentation. The authors make no claims *
+ * about the suitability of this software for any purpose. It is *
+ * provided "as is" without express or implied warranty. *
+ **************************************************************************/
+
+/* $Id$ */
+
///////////////////////////////////////////////////////////////////////////////
// //
// Experimental Hall //
// //
///////////////////////////////////////////////////////////////////////////////
+#include <TVirtualMC.h>
+
+#include "AliConst.h"
#include "AliHALL.h"
+#include "AliMagF.h"
#include "AliRun.h"
-#include "AliConst.h"
ClassImp(AliHALL)
Float_t r2;
- Float_t phid, phim, tpar[3], pbox[3], zfil_out, h, r, tspar[5];
+ Float_t phid, phim, pbox[3], h, r, tspar[5];
Float_t w1, dh, am, bm, dl,cm, hm, dr, dx, xl;
Int_t idrotm[1999];
Float_t trdpar[4], trapar[11], hullen;
- Float_t dz, phi, par[3], zfil_in;
+ Float_t phi;
Int_t *idtmed = fIdtmed->GetArray()-1899;
- //abs_d = 90.; // DEFINES DRIFT LENGTH
- //z_nose = 102.;
- //z_cone = 285.;
- //theta1 = 24.; // 1. angle defining the front absorber
- //theta2 = 5.; // 2. angle defining the front absorbe
- //acc_max = 9.; // ANGLE POLAIRE MAXIMUM
- //acc_min = 2.; // ANGLE POLAIRE MINIMUM DE DETECTION
- //abs_l = 503.;
- //d_steel = 1.; // THICKNESS OF STEEL SUPPORT
- //d_poly = 7.5;
- //d_pb = 2.5;
- //abs_cc = 315.; // DEFINES LENGTH OF CARBON
- //abs_c = 358.;
- //abs_s = 150.; // DEFINES W-SHIELD LENGTH
- //abs_n = 80.; // START OF NOSE
- //r_abs = 4.;
- //r_pb = .1;
- //epsilon = .01;
- //theta_r = 3.;
- //d_rear = 35.;
- //theta_open = .75;
-
- //z_l3 = 700.;
- //zmag_in = 725.;
- //zmag_out = 1225.;
- zfil_in = 1471.;
- zfil_out = 1591.;
- //zcon_in = 1900.;
- //zcon_out = 2e3;
- //zcone_e = 859.0875;
- //spec_l = 1800.;
- //zplug_in = 1780.;
- //zplug_out= 1900.;
-
- // Chamber position
- // CZ1=515.5
- //cz1 = 511.;
- //cz2 = 686.;
- //cz3 = 971.;
- //cz4 = 1245.;
- //cz5 = 1445.;
- //cz6 = 1610.;
- //cz7 = 1710.;
-
-
// RB24/26 TUNNEL FLOOR
r = 220.;
gMC->Gsvolu("HUWA", "TUBS", idtmed[1956], tspar, 5);
gMC->Gspos("HUWA", 1, "ALIC", 70., 40.,2020+hullen , 0, "ONLY");
- // tunnelplug
-
- tpar[0] = 0.;
- tpar[1] = 50.;
- tpar[2] = 60.;
- gMC->Gsvolu("HUP2", "TUBE", idtmed[1954], tpar, 3);
-
// END WALL
-
- pbox[0] = 1200.;
- pbox[1] = 1300.;
+ gMC->Gsvolu("HEW1", "BOX ", idtmed[1956], pbox, 0);
+ pbox[0] = 600.;
+ pbox[1] = 418.;
pbox[2] = 60.;
- gMC->Gsvolu("HEW1", "BOX ", idtmed[1956], pbox, 3);
- gMC->Gspos("HUP2", 1, "HEW1", 0.,-404., 0., 0, "ONLY");
- gMC->Gspos("HEW1", 1, "ALIC", 0., 404., 1960, 0, "ONLY");
-
+ gMC->Gsposp("HEW1", 1, "ALIC", 0., -pbox[1]-60., 1960, 0, "ONLY", pbox, 3);
+ pbox[1] = 822.;
+ gMC->Gsposp("HEW1", 2, "ALIC", 0., pbox[1]+60., 1960, 0, "ONLY", pbox, 3);
+ pbox[0] = 270.;
+ pbox[1] = 60.;
+ gMC->Gsposp("HEW1", 3, "ALIC", pbox[0]+60., 0. , 1960, 0, "ONLY", pbox, 3);
+ gMC->Gsposp("HEW1", 4, "ALIC", -pbox[0]-60., 0. , 1960, 0, "ONLY", pbox, 3);
+
// hall floor
phid = 16.197;
// pillars for working platform
pbox[0] = 40.;
- pbox[1] = 120.;
+ pbox[1] = 96.;
pbox[2] = 550.;
gMC->Gsvolu("HPIL", "BOX ", idtmed[1956], pbox, 3);
gMC->Gspos("HPIL", 1, "ALIC", 165.,-706+pbox[1] , 1350., 0, "ONLY");
gMC->Gspos("HPIL", 2, "ALIC",-165.,-706+pbox[1] , 1350., 0, "ONLY");
- // concrete beam shield
-
- pbox[0] = 402.5;
- pbox[1] = 260.;
- pbox[2] = 120.;
- gMC->Gsvolu("HMBS", "BOX ", idtmed[1956], pbox, 3);
- pbox[0] = 85.;
- pbox[1] = 100.;
- gMC->Gsvolu("HBBS", "BOX ", idtmed[1956], pbox, 3);
- gMC->Gspos("HBBS", 1, "HMBS", -157.5, 0., 0., 0, "ONLY");
- pbox[0] = 40.;
- pbox[1] = 130.;
- gMC->Gsvolu("HPBS", "BOX ", idtmed[1956], pbox, 3);
- gMC->Gspos("HPBS", 1, "HMBS", 202.5, 30., 0., 0, "ONLY");
- gMC->Gspos("HMBS", 1, "ALIC", 157.5, -50., -820., 0, "ONLY");
-
- // MUON FILTER
- par[0] = 30.;
- par[1] = 310.;
- par[2] = (zfil_out - zfil_in) / 2.;
- gMC->Gsvolu("HXFI", "TUBE", idtmed[1949], par, 3);
- dz = (zfil_in + zfil_out) / 2.;
- par[2] -= 10.;
- gMC->Gsvolu("HXII", "TUBE", idtmed[1909], par, 3);
- gMC->Gspos("HXII", 1, "HXFI", 0., 0., 0., 0, "ONLY");
- gMC->Gspos("HXFI", 1, "ALIC", 0., 0., dz, 0, "ONLY");
+ // simple concrete beam shield
+
+ Float_t ppgon[10];
+ ppgon[0] = 45.;
+ ppgon[1] = 360.;
+ ppgon[2] = 4.;
+ ppgon[3] = 2.;
+ ppgon[4] = -1800.;
+ ppgon[5] = 150.;
+ ppgon[6] = 250.;
+ ppgon[7] = -720.;
+ ppgon[8] = 150.;
+ ppgon[9] = 250.;
+
+ gMC->Gsvolu("HMBS", "PGON", idtmed[1956], ppgon, 10);
+ gMC->Gspos("HMBS", 1, "ALIC", 0., 70., 0., 0, "ONLY");
}
//_____________________________________________________________________________
//
- Int_t ISXFLD = gAlice->Field()->Integ();
- Float_t SXMGMX = gAlice->Field()->Max();
+ Int_t isxfld = gAlice->Field()->Integ();
+ Float_t sxmgmx = gAlice->Field()->Max();
Float_t aconc[10] = { 1.,12.01,15.994,22.99,24.305,26.98,28.086,39.1,40.08,55.85 };
Float_t zconc[10] = { 1.,6.,8.,11.,12.,13.,14.,19.,20.,26. };
// IRON
- AliMedium(10, "FE_C0 ", 10, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
- AliMedium(30, "FE_C1 ", 30, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
- AliMedium(50, "FE_C2 ", 50, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(10, "FE_C0 ", 10, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(30, "FE_C1 ", 30, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(50, "FE_C2 ", 50, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
// Air
- AliMedium(15, "AIR_C0 ", 15, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
- AliMedium(35, "AIR_C1 ", 35, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
- AliMedium(55, "AIR_C2 ", 55, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(15, "AIR_C0 ", 15, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(35, "AIR_C1 ", 35, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(55, "AIR_C2 ", 55, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
// Concrete
- AliMedium(17, "CC_C0 ", 17, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
- AliMedium(37, "CC_C1 ", 37, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
- AliMedium(57, "CC_C2 ", 57, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(17, "CC_C0 ", 17, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(37, "CC_C1 ", 37, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(57, "CC_C2 ", 57, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
}
//_____________________________________________________________________________
//
Int_t i;
//
- printf("\n");
- for(i=0;i<35;i++) printf("*");
- printf(" HALL_INIT ");
- for(i=0;i<35;i++) printf("*");
- printf("\n");
- //
- // Here the HALL initialisation code (if any!)
- for(i=0;i<80;i++) printf("*");
- printf("\n");
+ if(fDebug) {
+ printf("\n%s: ",ClassName());
+ for(i=0;i<35;i++) printf("*");
+ printf(" HALL_INIT ");
+ for(i=0;i<35;i++) printf("*");
+ printf("\n%s: ",ClassName());
+ //
+ // Here the HALL initialisation code (if any!)
+ for(i=0;i<80;i++) printf("*");
+ printf("\n");
+ }
}
//_____________________________________________________________________________
-void AliHALL::DrawModule()
+void AliHALL::DrawModule() const
{
//
// Draw a shaded view of Experimental Hall