-void AliEMCALGeometry::Init(void){
- // Initializes the EMCAL parameters
- // naming convention : GUV_WX_N_ gives the composition of a tower
- // WX inform about the composition of the EM calorimeter section:
- // thickness in mm of Pb radiator (W) and of scintillator (X), and number of scintillator layers (N)
- // New geometry: EMCAL_55_25
- // 24-aug-04 for shish-kebab
- // SHISH_25 or SHISH_62
- // 11-oct-05 - correction for pre final design
- // Feb 06,2006 - decrease the weight of EMCAL
-
- fAdditionalOpts[0] = "nl="; // number of sampling layers (fNECLayers)
- fAdditionalOpts[1] = "pbTh="; // cm, Thickness of the Pb (fECPbRadThick)
- fAdditionalOpts[2] = "scTh="; // cm, Thickness of the Sc (fECScintThick)
- fAdditionalOpts[3] = "latSS="; // cm, Thickness of lateral steel strip (fLateralSteelStrip)
-
- fNAdditionalOpts = sizeof(fAdditionalOpts) / sizeof(char*);
-
- fgInit = kFALSE; // Assume failed until proven otherwise.
- fGeoName = GetName();
- fGeoName.ToUpper();
- fKey110DEG = 0;
- if(fGeoName.Contains("110DEG")) fKey110DEG = 1; // for GetAbsCellId
- fShishKebabTrd1Modules = 0;
- fTrd2AngleY = f2Trd2Dy2 = fEmptySpace = fTubsR = fTubsTurnAngle = 0;
-
- fNZ = 114; // granularity along Z (eta)
- fNPhi = 168; // granularity in phi (azimuth)
- fArm1PhiMin = 60.0; // degrees, Starting EMCAL Phi position
- fArm1PhiMax = 180.0; // degrees, Ending EMCAL Phi position
- fArm1EtaMin = -0.7; // pseudorapidity, Starting EMCAL Eta position
- fArm1EtaMax = +0.7; // pseudorapidity, Ending EMCAL Eta position
- fIPDistance = 454.0; // cm, Radial distance to inner surface of EMCAL
- fPhiGapForSM = 0.; // cm, only for final TRD1 geometry
- for(int i=0; i<12; i++) fMatrixOfSM[i] = 0;
-
- // geometry
- if(fGeoName.Contains("SHISH")){ // Only shahslyk now
- // 7-sep-05; integration issue
- fArm1PhiMin = 80.0; // 60 -> 80
- fArm1PhiMax = 180.0; // 180 -> 190
-
- fNumberOfSuperModules = 10; // 12 = 6 * 2 (6 in phi, 2 in Z);
- fSteelFrontThick = 2.54; // 9-sep-04
- fIPDistance = 460.0;
- fFrontSteelStrip = fPassiveScintThick = 0.0; // 13-may-05
- fLateralSteelStrip = 0.025; // before MAY 2005
- fPhiModuleSize = fEtaModuleSize = 11.4;
- fPhiTileSize = fEtaTileSize = 5.52; // (11.4-5.52*2)/2. = 0.18 cm (wall thickness)
- fNPhi = 14;
- fNZ = 30;
- fAlFrontThick = fGap2Active = 0;
- fNPHIdiv = fNETAdiv = 2;
-
- fNECLayers = 62;
- fECScintThick = fECPbRadThickness = 0.2;
- fSampling = 1.; // 30-aug-04 - should be calculated
- if(fGeoName.Contains("TWIST")) { // all about EMCAL module
- fNZ = 27; // 16-sep-04
- } else if(fGeoName.Contains("TRD")) {
- fIPDistance = 428.0; // 11-may-05
- fSteelFrontThick = 0.0; // 3.17 -> 0.0; 28-mar-05 : no stell plate
- fNPhi = 12;
- fSampling = 12.327;
- fPhiModuleSize = fEtaModuleSize = 12.26;
- fNZ = 26; // 11-oct-04
- fTrd1Angle = 1.3; // in degree
-// 18-nov-04; 1./0.08112=12.327
-// http://pdsfweb01.nersc.gov/~pavlinov/ALICE/SHISHKEBAB/RES/linearityAndResolutionForTRD1.html
- if(fGeoName.Contains("TRD1")) { // 30-jan-05
- // for final design
- fPhiGapForSM = 2.; // cm, only for final TRD1 geometry
- if(fGeoName.Contains("MAY05") || fGeoName.Contains("WSUC") || fGeoName.Contains("FINAL")){
- fNumberOfSuperModules = 12; // 20-may-05
- if(fGeoName.Contains("WSUC")) fNumberOfSuperModules = 1; // 27-may-05
- fNECLayers = 77; // (13-may-05 from V.Petrov)
- fPhiModuleSize = 12.5; // 20-may-05 - rectangular shape
- fEtaModuleSize = 11.9;
- fECScintThick = fECPbRadThickness = 0.16;// (13-may-05 from V.Petrov)
- fFrontSteelStrip = 0.025;// 0.025cm = 0.25mm (13-may-05 from V.Petrov)
- fLateralSteelStrip = 0.01; // 0.01cm = 0.1mm (13-may-05 from V.Petrov) - was 0.025
- fPassiveScintThick = 0.8; // 0.8cm = 8mm (13-may-05 from V.Petrov)
- fNZ = 24;
- fTrd1Angle = 1.5; // 1.3 or 1.5
-
- if(fGeoName.Contains("FINAL")) { // 9-sep-05
- fNumberOfSuperModules = 10;
- if(fGeoName.Contains("110DEG")) {
- fNumberOfSuperModules = 12;// last two modules have size 10 degree in phi (180<phi<190)
- fArm1PhiMax = 200.0; // for XEN1 and turn angle of super modules
- }
- fPhiModuleSize = 12.26 - fPhiGapForSM / Float_t(fNPhi); // first assumption
- fEtaModuleSize = fPhiModuleSize;
- if(fGeoName.Contains("HUGE")) fNECLayers *= 3; // 28-oct-05 for analysing leakage
- }
- }
- } else if(fGeoName.Contains("TRD2")) { // 30-jan-05
- fSteelFrontThick = 0.0; // 11-mar-05
- fIPDistance+= fSteelFrontThick; // 1-feb-05 - compensate absence of steel plate
- fTrd1Angle = 1.64; // 1.3->1.64
- fTrd2AngleY = fTrd1Angle; // symmetric case now
- fEmptySpace = 0.2; // 2 mm
- fTubsR = fIPDistance; // 31-jan-05 - as for Fred case
-
- fPhiModuleSize = fTubsR*2.*TMath::Tan(fTrd2AngleY*TMath::DegToRad()/2.);
- fPhiModuleSize -= fEmptySpace/2.; // 11-mar-05
- fEtaModuleSize = fPhiModuleSize; // 20-may-05
- fTubsTurnAngle = 3.;
- }
- fNPHIdiv = fNETAdiv = 2; // 13-oct-04 - division again
- if(fGeoName.Contains("3X3")) { // 23-nov-04
- fNPHIdiv = fNETAdiv = 3;
- } else if(fGeoName.Contains("4X4")) {
- fNPHIdiv = fNETAdiv = 4;
- }
- }
- fPhiTileSize = fPhiModuleSize/2. - fLateralSteelStrip; // 13-may-05
- fEtaTileSize = fEtaModuleSize/2. - fLateralSteelStrip; // 13-may-05
-
- if(fGeoName.Contains("25")){
- fNECLayers = 25;
- fECScintThick = fECPbRadThickness = 0.5;
- }
- if(fGeoName.Contains("WSUC")){ // 18-may-05 - about common structure
- fShellThickness = 30.; // should be change
- fNPhi = fNZ = 4;
- }
-
- CheckAdditionalOptions();
-
- // constant for transition absid <--> indexes
- fNCellsInTower = fNPHIdiv*fNETAdiv;
- fNCellsInSupMod = fNCellsInTower*fNPhi*fNZ;
- fNCells = fNCellsInSupMod*fNumberOfSuperModules;
- if(fGeoName.Contains("110DEG")) fNCells -= fNCellsInSupMod;
-
- fLongModuleSize = fNECLayers*(fECScintThick + fECPbRadThickness);
- if(fGeoName.Contains("MAY05")) fLongModuleSize += (fFrontSteelStrip + fPassiveScintThick);
-
- // 30-sep-04
- if(fGeoName.Contains("TRD")) {
- f2Trd1Dx2 = fEtaModuleSize + 2.*fLongModuleSize*TMath::Tan(fTrd1Angle*TMath::DegToRad()/2.);
- if(fGeoName.Contains("TRD2")) { // 27-jan-05
- f2Trd2Dy2 = fPhiModuleSize + 2.*fLongModuleSize*TMath::Tan(fTrd2AngleY*TMath::DegToRad()/2.);
- }
- }
- } else Fatal("Init", "%s is an undefined geometry!", fGeoName.Data()) ;
-
- fNPhiSuperModule = fNumberOfSuperModules/2;
- if(fNPhiSuperModule<1) fNPhiSuperModule = 1;
- //There is always one more scintillator than radiator layer because of the first block of aluminium
- fShellThickness = fAlFrontThick + fGap2Active + fNECLayers*GetECScintThick()+(fNECLayers-1)*GetECPbRadThick();
- if(fGeoName.Contains("SHISH")) {
- fShellThickness = fSteelFrontThick + fLongModuleSize;
- if(fGeoName.Contains("TWIST")) { // 13-sep-04
- fShellThickness = TMath::Sqrt(fLongModuleSize*fLongModuleSize + fPhiModuleSize*fEtaModuleSize);
- fShellThickness += fSteelFrontThick;
- } else if(fGeoName.Contains("TRD")) { // 1-oct-04
- fShellThickness = TMath::Sqrt(fLongModuleSize*fLongModuleSize + f2Trd1Dx2*f2Trd1Dx2);
- fShellThickness += fSteelFrontThick;
- // Local coordinates
- fParSM[0] = GetShellThickness()/2.;
- fParSM[1] = GetPhiModuleSize() * GetNPhi()/2.;
- fParSM[2] = 350./2.;
- }
- }