+ // 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
+ //
+ // Oct 30,2006 - SHISH_TRD1_CURRENT_1X1, SHISH_TRD1_CURRENT_2X2 or SHISH_TRD1_CURRENT_3X3;
+ //
+
+ 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)
+ fAdditionalOpts[4] = "allILOSS="; // = 0,1,2,3,4 (4 - energy loss without fluctuation)
+ fAdditionalOpts[5] = "allIHADR="; // = 0,1,2 (0 - no hadronic interaction)
+
+ fNAdditionalOpts = sizeof(fAdditionalOpts) / sizeof(char*);
+
+ fgInit = kFALSE; // Assume failed until proven otherwise.
+ fGeoName = GetName();
+ fGeoName.ToUpper();
+ fKey110DEG = 0;
+ if(fGeoName.Contains("110DEG") || fGeoName.Contains("CURRENT")) 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 = 80.0; // degrees, Starting EMCAL Phi position
+ fArm1PhiMax = 190.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") || fGeoName.Contains("CURRENT")){
+ 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") || fGeoName.Contains("CURRENT")) { // 9-sep-05
+ fNumberOfSuperModules = 10;
+ if(GetKey110DEG()) {
+ 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
+ }
+ if(fGeoName.Contains("FINAL")) {
+ fPhiModuleSize = 12.26 - fPhiGapForSM / Float_t(fNPhi); // first assumption
+ } else if(fGeoName.Contains("CURRENT")) {
+ fECScintThick = 0.176; // 10% of weight reduction
+ fECPbRadThickness = 0.144; //
+ fLateralSteelStrip = 0.015; // 0.015cm = 0.15mm (Oct 30, from Fred)
+ fPhiModuleSize = 12.00;
+ fPhiGapForSM = (12.26 - fPhiModuleSize)*fNPhi; // have to check
+ }
+ 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;
+ } else if(fGeoName.Contains("1X1")) {
+ fNPHIdiv = fNETAdiv = 1;
+ }
+ }
+ 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();
+ DefineSamplingFraction();
+
+ fPhiTileSize = fPhiModuleSize/double(fNPHIdiv) - fLateralSteelStrip; // 13-may-05
+ fEtaTileSize = fEtaModuleSize/double(fNETAdiv) - fLateralSteelStrip; // 13-may-05
+
+ // constant for transition absid <--> indexes
+ fNCellsInModule = fNPHIdiv*fNETAdiv;
+ fNCellsInSupMod = fNCellsInModule*fNPhi*fNZ;
+ fNCells = fNCellsInSupMod*fNumberOfSuperModules;
+ if(GetKey110DEG()) 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;
+
+ 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.;
+ }
+ }
+
+ 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.
+
+ fNumberOfSuperModules = 12;
+
+ // SM phi boundaries - (0,1),(2,3) .. (10,11) - has the same boundaries; Nov 7, 2006
+ fPhiBoundariesOfSM.Set(fNumberOfSuperModules);
+ fPhiCentersOfSM.Set(fNumberOfSuperModules/2);
+ fPhiBoundariesOfSM[0] = TMath::PiOver2() - TMath::ATan2(fParSM[1] , fIPDistance); // 1th and 2th modules)
+ fPhiBoundariesOfSM[1] = TMath::PiOver2() + TMath::ATan2(fParSM[1] , fIPDistance);
+ fPhiCentersOfSM[0] = TMath::PiOver2();
+ for(int i=1; i<=4; i++) { // from 2th ro 9th
+ fPhiBoundariesOfSM[2*i] = fPhiBoundariesOfSM[0] + 20.*TMath::DegToRad()*i;
+ fPhiBoundariesOfSM[2*i+1] = fPhiBoundariesOfSM[1] + 20.*TMath::DegToRad()*i;
+ fPhiCentersOfSM[i] = fPhiCentersOfSM[0] + 20.*TMath::DegToRad()*i;
+ }
+ fPhiBoundariesOfSM[11] = 190.*TMath::DegToRad();
+ fPhiBoundariesOfSM[10] = fPhiBoundariesOfSM[11] - TMath::ATan2((fParSM[1]) , fIPDistance);
+ fPhiCentersOfSM[5] = (fPhiBoundariesOfSM[10]+fPhiBoundariesOfSM[11])/2.;
+
+ //TRU parameters. These parameters values are not the final ones.
+ fNTRUEta = 3 ;
+ fNTRUPhi = 1 ;
+ fNCellsInTRUEta = 16 ;
+ fNCellsInTRUPhi = 24 ;
+
+ // Define TGeoMatrix of SM - Jan 19, 2007 (just fro TRD1)
+ if(fGeoName.Contains("TRD1")) { // copy code from AliEMCALv0::CreateSmod()
+ int nphism = GetNumberOfSuperModules()/2;
+ double dphi = (GetArm1PhiMax() - GetArm1PhiMin())/nphism;
+ double rpos = (GetEnvelop(0) + GetEnvelop(1))/2.;
+ double phi, phiRad, xpos, ypos, zpos;
+ for(int i=0; i<nphism; i++){
+ phi = GetArm1PhiMin() + dphi*(2*i+1)/2.; // phi= 90, 110, 130, 150, 170, 190
+ phiRad = phi*TMath::Pi()/180.;
+ xpos = rpos * TMath::Cos(phiRad);
+ ypos = rpos * TMath::Sin(phiRad);
+ zpos = fParSM[2];
+ if(i==5) {
+ xpos += (fParSM[1]/2. * TMath::Sin(phiRad));
+ ypos -= (fParSM[1]/2. * TMath::Cos(phiRad));
+ }
+ // pozitive z
+ int ind = 2*i;
+ TGeoRotation *geoRot0 = new TGeoRotation("geoRot0", 90.0, phi, 90.0, 90.0+phi, 0.0, 0.0);
+ fMatrixOfSM[ind] = new TGeoCombiTrans(Form("EmcalSM%2.2i",ind),
+ xpos,ypos, zpos, geoRot0);
+ // negaive z
+ ind++;
+ double phiy = 90. + phi + 180.;
+ if(phiy>=360.) phiy -= 360.;
+ TGeoRotation *geoRot1 = new TGeoRotation("geoRot1", 90.0, phi, 90.0, phiy, 180.0, 0.0);
+ fMatrixOfSM[ind] = new TGeoCombiTrans(Form("EmcalSM%2.2i",ind),
+ xpos,ypos,-zpos, geoRot1);
+ } // for
+ }
+
+ if(fGeoName.Contains("WSUC")) fNumberOfSuperModules = 1; // Jul 12, 2007
+
+ fgInit = kTRUE;
+ AliInfo(" is ended");
+}
+
+void AliEMCALGeometry::PrintGeometry()
+{
+ // Separate routine is callable from broswer; Nov 7,2006
+ printf("\nInit: geometry of EMCAL named %s :\n", fGeoName.Data());
+ if(fArrayOpts) {
+ for(Int_t i=0; i<fArrayOpts->GetEntries(); i++){
+ TObjString *o = (TObjString*)fArrayOpts->At(i);
+ printf(" %i : %s \n", i, o->String().Data());
+ }
+ }
+ printf("Granularity: %d in eta and %d in phi\n", GetNZ(), GetNPhi()) ;
+ printf("Layout: phi = (%7.1f, %7.1f), eta = (%5.2f, %5.2f), IP = %7.2f -> for EMCAL envelope only\n",
+ GetArm1PhiMin(), GetArm1PhiMax(),GetArm1EtaMin(), GetArm1EtaMax(), GetIPDistance() );
+
+ printf( " ECAL : %d x (%f cm Pb, %f cm Sc) \n",
+ GetNECLayers(), GetECPbRadThick(), GetECScintThick() ) ;
+ printf(" fSampling %5.2f \n", fSampling );
+ if(fGeoName.Contains("SHISH")){
+ printf(" fIPDistance %6.3f cm \n", fIPDistance);
+ if(fSteelFrontThick>0.)
+ printf(" fSteelFrontThick %6.3f cm \n", fSteelFrontThick);
+ printf(" fNPhi %i | fNZ %i \n", fNPhi, fNZ);
+ printf(" fNCellsInModule %i : fNCellsInSupMod %i : fNCells %i\n",fNCellsInModule, fNCellsInSupMod, fNCells);
+ if(fGeoName.Contains("MAY05")){
+ printf(" fFrontSteelStrip %6.4f cm (thickness of front steel strip)\n",
+ fFrontSteelStrip);
+ printf(" fLateralSteelStrip %6.4f cm (thickness of lateral steel strip)\n",
+ fLateralSteelStrip);
+ printf(" fPassiveScintThick %6.4f cm (thickness of front passive Sc tile)\n",
+ fPassiveScintThick);
+ }
+ printf(" X:Y module size %6.3f , %6.3f cm \n", fPhiModuleSize, fEtaModuleSize);
+ printf(" X:Y tile size %6.3f , %6.3f cm \n", fPhiTileSize, fEtaTileSize);
+ printf(" #of sampling layers %i(fNECLayers) \n", fNECLayers);
+ printf(" fLongModuleSize %6.3f cm \n", fLongModuleSize);
+ printf(" #supermodule in phi direction %i \n", fNPhiSuperModule );
+ }
+ printf(" fILOSS %i : fIHADR %i \n", fILOSS, fIHADR);
+ if(fGeoName.Contains("TRD")) {
+ printf(" fTrd1Angle %7.4f\n", fTrd1Angle);
+ printf(" f2Trd1Dx2 %7.4f\n", f2Trd1Dx2);
+ if(fGeoName.Contains("TRD2")) {
+ printf(" fTrd2AngleY %7.4f\n", fTrd2AngleY);
+ printf(" f2Trd2Dy2 %7.4f\n", f2Trd2Dy2);
+ printf(" fTubsR %7.2f cm\n", fTubsR);
+ printf(" fTubsTurnAngle %7.4f\n", fTubsTurnAngle);
+ printf(" fEmptySpace %7.4f cm\n", fEmptySpace);
+ } else if(fGeoName.Contains("TRD1")){
+ printf("SM dimensions(TRD1) : dx %7.2f dy %7.2f dz %7.2f (SMOD, BOX)\n",
+ fParSM[0],fParSM[1],fParSM[2]);
+ printf(" fPhiGapForSM %7.4f cm (%7.4f <- phi size in degree)\n",
+ fPhiGapForSM, TMath::ATan2(fPhiGapForSM,fIPDistance)*TMath::RadToDeg());
+ if(GetKey110DEG()) printf(" Last two modules have size 10 degree in phi (180<phi<190)\n");
+ printf(" phi SM boundaries \n");
+ for(int i=0; i<fPhiBoundariesOfSM.GetSize()/2.; i++) {
+ printf(" %i : %7.5f(%7.2f) -> %7.5f(%7.2f) : center %7.5f(%7.2f) \n", i,
+ fPhiBoundariesOfSM[2*i], fPhiBoundariesOfSM[2*i]*TMath::RadToDeg(),
+ fPhiBoundariesOfSM[2*i+1], fPhiBoundariesOfSM[2*i+1]*TMath::RadToDeg(),
+ fPhiCentersOfSM[i], fPhiCentersOfSM[i]*TMath::RadToDeg());
+ }
+ printf(" fShishKebabTrd1Modules has %i modules : max eta %5.4f \n",
+ fShishKebabTrd1Modules->GetSize(),fEtaMaxOfTRD1);
+
+ printf("\n Cells grid in eta directions : size %i\n", fCentersOfCellsEtaDir.GetSize());
+ for(Int_t i=0; i<fCentersOfCellsEtaDir.GetSize(); i++) {
+ printf(" ind %2.2i : z %8.3f : x %8.3f \n", i,
+ fCentersOfCellsEtaDir.At(i),fCentersOfCellsXDir.At(i));
+ int ind=0; // Nov 21,2006
+ for(Int_t iphi=0; iphi<fCentersOfCellsPhiDir.GetSize(); iphi++) {
+ ind = iphi*fCentersOfCellsEtaDir.GetSize() + i;
+ printf("%6.4f ", fEtaCentersOfCells[ind]);
+ if((iphi+1)%12 == 0) printf("\n");
+ }
+ printf("\n");
+
+ }
+ printf(" Matrix transformation\n");
+ for(Int_t i=0; i<12; i++) {
+ TGeoMatrix *m = fMatrixOfSM[i];
+ if(m==0) continue;
+ const double *xyz = m->GetTranslation();
+ printf(" %2.2i %s %s x %7.2f y %7.2f z %7.2f\n",
+ i, m->GetName(), m->ClassName(), xyz[0],xyz[1],xyz[2]);
+ }
+
+ printf("\n Cells grid in phi directions : size %i\n", fCentersOfCellsPhiDir.GetSize());
+ for(Int_t i=0; i<fCentersOfCellsPhiDir.GetSize(); i++) {
+ double phi=fPhiCentersOfCells.At(i);
+ printf(" ind %2.2i : y %8.3f : phi %7.5f(%6.2f) \n", i, fCentersOfCellsPhiDir.At(i),
+ phi, phi*TMath::RadToDeg());
+ }
+ }
+ }
+ cout<<endl;
+}
+
+void AliEMCALGeometry::PrintCellIndexes(Int_t absId, int pri, char *tit)
+{
+ // Service methods
+ Int_t nSupMod, nModule, nIphi, nIeta;
+ Int_t iphi, ieta;
+ TVector3 vg;
+
+ GetCellIndex(absId, nSupMod, nModule, nIphi, nIeta);
+ printf(" %s | absId : %i -> nSupMod %i nModule %i nIphi %i nIeta %i \n", tit, absId, nSupMod, nModule, nIphi, nIeta);
+ if(pri>0) {
+ GetCellPhiEtaIndexInSModule(nSupMod,nModule,nIphi,nIeta, iphi,ieta);
+ printf(" local SM index : iphi %i : ieta %i \n", iphi,ieta);
+ GetGlobal(absId, vg);
+ printf(" vglob : mag %7.2f : perp %7.2f : z %7.2f : eta %6.4f : phi %6.4f(%6.2f) \n",
+ vg.Mag(), vg.Perp(), vg.Z(), vg.Eta(), vg.Phi(), vg.Phi()*TMath::RadToDeg());
+ }
+}
+
+//______________________________________________________________________
+void AliEMCALGeometry::CheckAdditionalOptions()
+{
+ // Feb 06,2006
+ // Additional options that
+ // can be used to select
+ // the specific geometry of
+ // EMCAL to run
+ // Dec 27,2006
+ // adeed allILOSS= and allIHADR= for MIP investigation
+ fArrayOpts = new TObjArray;
+ Int_t nopt = AliEMCALHistoUtilities::ParseString(fGeoName, *fArrayOpts);
+ if(nopt==1) { // no aditional option(s)
+ fArrayOpts->Delete();
+ delete fArrayOpts;
+ fArrayOpts = 0;
+ return;
+ }
+ for(Int_t i=1; i<nopt; i++){
+ TObjString *o = (TObjString*)fArrayOpts->At(i);
+
+ TString addOpt = o->String();
+ Int_t indj=-1;
+ for(Int_t j=0; j<fNAdditionalOpts; j++) {
+ TString opt = fAdditionalOpts[j];
+ if(addOpt.Contains(opt,TString::kIgnoreCase)) {
+ indj = j;
+ break;
+ }
+ }
+ if(indj<0) {
+ AliDebug(2,Form("<E> option |%s| unavailable : ** look to the file AliEMCALGeometry.h **\n",
+ addOpt.Data()));
+ assert(0);
+ } else {
+ AliDebug(2,Form("<I> option |%s| is valid : number %i : |%s|\n",
+ addOpt.Data(), indj, fAdditionalOpts[indj]));
+ if (addOpt.Contains("NL=",TString::kIgnoreCase)) {// number of sampling layers
+ sscanf(addOpt.Data(),"NL=%i", &fNECLayers);
+ AliDebug(2,Form(" fNECLayers %i (new) \n", fNECLayers));
+ } else if(addOpt.Contains("PBTH=",TString::kIgnoreCase)) {//Thickness of the Pb(fECPbRadThicknes)
+ sscanf(addOpt.Data(),"PBTH=%f", &fECPbRadThickness);
+ } else if(addOpt.Contains("SCTH=",TString::kIgnoreCase)) {//Thickness of the Sc(fECScintThick)
+ sscanf(addOpt.Data(),"SCTH=%f", &fECScintThick);
+ } else if(addOpt.Contains("LATSS=",TString::kIgnoreCase)) {// Thickness of lateral steel strip (fLateralSteelStrip)
+ sscanf(addOpt.Data(),"LATSS=%f", &fLateralSteelStrip);
+ AliDebug(2,Form(" fLateralSteelStrip %f (new) \n", fLateralSteelStrip));
+ } else if(addOpt.Contains("ILOSS=",TString::kIgnoreCase)) {// As in Geant
+ sscanf(addOpt.Data(),"ALLILOSS=%i", &fILOSS);
+ AliDebug(2,Form(" fILOSS %i \n", fILOSS));
+ } else if(addOpt.Contains("IHADR=",TString::kIgnoreCase)) {// As in Geant
+ sscanf(addOpt.Data(),"ALLIHADR=%i", &fIHADR);
+ AliDebug(2,Form(" fIHADR %i \n", fIHADR));
+ }
+ }
+ }
+}
+
+void AliEMCALGeometry::DefineSamplingFraction()
+{
+ // Jun 05,2006
+ // Look http://rhic.physics.wayne.edu/~pavlinov/ALICE/SHISHKEBAB/RES/linearityAndResolutionForTRD1.html
+ // Keep for compatibilty
+ //
+ if(fNECLayers == 69) { // 10% layer reduction
+ fSampling = 12.55;
+ } else if(fNECLayers == 61) { // 20% layer reduction
+ fSampling = 12.80;
+ } else if(fNECLayers == 77) {
+ if (fECScintThick>0.175 && fECScintThick<0.177) { // 10% Pb thicknes reduction
+ fSampling = 10.5; // fECScintThick = 0.176, fECPbRadThickness=0.144;
+ } else if(fECScintThick>0.191 && fECScintThick<0.193) { // 20% Pb thicknes reduction
+ fSampling = 8.93; // fECScintThick = 0.192, fECPbRadThickness=0.128;
+ }
+ }