if( name != "EMCALArch1a" &&
name != "EMCALArch1b" &&
name != "EMCALArch2a" &&
- name != "EMCALArch2b" ){
- Fatal("Init", "%s is not a known geometry (choose among EMCALArch1a, EMCALArch1b, EMCALArch2a and EMCALArch2b)", name.Data()) ;
+ name != "EMCALArch2b" &&
+ name != "EMCALArch1aN" ){
+ Fatal("Init", "%s is not a known geometry (choose among EMCALArch1a, EMCALArch1b, EMCALArch2a and EMCALArch2b, EMCALArch1aN)", name.Data()) ;
} // end if
//
if ( name == "EMCALArch1a" ||
- name == "EMCALArch1b" ) {
- fNZ = 96;
- fNPhi = 144;
+ name == "EMCALArch1b" ||
+ name == "EMCALArch1aN") {
+ fNZ = 96;
+ fNPhi = 144;
} // end if
if ( name == "EMCALArch2a" ||
- name, "EMCALArch2b" ) {
+ name == "EMCALArch2b" ) {
fNZ = 112;
fNPhi = 168;
} // end if
if ( name == "EMCALArch1a" ||
name == "EMCALArch2a" ) {
- fNLayers = 21;
+ fNPRLayers = 2;
+ fNECLayers = 19;
+ fNHCLayers = 0;
} // end if
if ( name == "EMCALArch1b" ||
name == "EMCALArch2b" ) {
- fNLayers = 25;
+ fNPRLayers = 2;
+ fNECLayers = 23;
+ fNHCLayers = 0;
} // end if
+ if ( name == "EMCALArch1aN") {
+ fNPRLayers = 2;
+ fNECLayers = 19;
+ fNHCLayers = 14;
+ }
// geometry
- fAirGap = 5.0; // cm, air gap between EMCAL mother volume and
- // active material.
- fAlFrontThick = 3.18; // cm, Thickness of front Al layer
- fPbRadThickness = 0.5; // cm, Thickness of theh Pb radiators.
- fPreShowerSintThick = 0.6; // cm, Thickness of the sintilator for the
- // preshower part of the calorimeter
- fFullShowerSintThick = 0.5; // cm, Thickness of the sintilator for the
- // full shower part of the calorimeter
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
+
+ fAlFrontThick = 3.18; // cm, Thickness of front Al layer
+ fGap2Active = 1.0; // cm, Gap between Al and 1st Scintillator
+ fPbRadThickness = 0.5; // cm, Thickness of the Pb radiators.
+ fPreShowerSintThick = 0.6; // cm, Thickness of the sintilator for the preshower part of the calorimeter
+ fFullShowerSintThick = 0.5; // cm, Thickness of the sintilator for the dull shower part of the calorimeter
+ fCuRadThickness = 0.0; // cm, Thickness of the Cu radiators.
+
+ if (name == "EMCALArch1aN") {
+ fAlFrontThick = 3.0; // cm, Thickness of front Al layer
+ fGap2Active = 1.0; // cm, Gap between Al and 1st Scintillator
+ fPbRadThickness = 0.6; // cm, Thickness of the Pb radiators.
+ fPreShowerSintThick = 0.5; // cm, Thickness of the sintilator for the preshower part of the calorimeter
+ fFullShowerSintThick = 0.4; // cm, Thickness of the sintilator for the full shower part of the calorimeter
+ fCuRadThickness = 1.0; // cm, Thickness of the Cu radiators.
+ }
+
fIPDistance = 454.0; // cm, Radial distance to inner surface of EMCAL
- fShellThickness = GetAlFrontThickness() + 2.*GetPreSintThick() +
- (fNLayers-2)*GetFullSintThick()+(fNLayers-1)*GetPbRadThick();
- //below; cm, Z lenght of the EMCAL.
- fZLength = 2.*ZFromEtaR(fIPDistance+fShellThickness,fArm1EtaMax);
+ fShellThickness = fAlFrontThick + fGap2Active + 2.*(GetPreSintThick() + GetPbRadThick()) + // pre shower
+ (fNECLayers-1)*(GetFullSintThick()+ GetPbRadThick()) + // E cal -1 because the last element is a scintillator
+ fNHCLayers*(GetFullSintThick()+ GetCuRadThick()) + // H cal
+ GetFullSintThick() ; // last scintillator
+ fZLength = 2.*ZFromEtaR(fIPDistance+fShellThickness,fArm1EtaMax); // Z coverage
fEnvelop[0] = fIPDistance; // mother volume inner radius
fEnvelop[1] = fIPDistance + fShellThickness; // mother volume outer r.
fEnvelop[2] = 1.00001*fZLength; // add some padding for mother volume.
- fGap2Active = 1.0; // cm, Gap between
fgInit = kTRUE;
}
Int_t AliEMCALGeometry::TowerIndex(Int_t ieta,Int_t iphi,Int_t ipre) const {
// Returns the tower index number from the based on the Z and Phi
// index numbers. There are 2 times the number of towers to separate
- // out the full towsers from the pre-towsers.
+ // out the full towers from the pre-showers.
// Inputs:
// Int_t ieta // index allong z axis [1-fNZ]
// Int_t iphi // index allong phi axis [1-fNPhi]
theta = 180.*(2.0*TMath::ATan(TMath::Exp(-eta)))/TMath::Pi();
kDeg2Rad = TMath::Pi() / static_cast<Double_t>(180) ;
- cyl_radius = GetIPDistance()+ GetAirGap() ;
+ if ( ipre == -1 )
+ cyl_radius = GetIP2PreShower() ;
+ else
+ cyl_radius = GetIP2Tower() ;
+
x = cyl_radius * TMath::Cos(phi * kDeg2Rad ) ;
- y = cyl_radius * TMath::Cos(phi * kDeg2Rad ) ;
+ y = cyl_radius * TMath::Sin(phi * kDeg2Rad ) ;
z = cyl_radius / TMath::Tan(theta * kDeg2Rad ) ;
return;