21 #include <TGeometry.h> 22 #include <TGeoPhysicalNode.h> 23 #include <TGeoManager.h> 24 #include <TGeoMatrix.h> 25 #include <TVirtualMC.h> 62 fShishKebabModules(),fEnvelop1(0),fIdRotm(0),fIdTmedArr(0),
63 fSampleWidth(0),fSmodPar0(0),fSmodPar1(0),fSmodPar2(0),
64 fInnerEdge(0),fCalFrame(0)
66 for(Int_t i = 0; i < 5 ; i++)
fParEMOD[i]=0.0;
78 :
AliEMCAL(name,title,checkGeoAndRun),
83 for(Int_t i = 0; i < 5 ; i++)
fParEMOD[i]=0.0;
85 TString ntmp(GetTitle());
99 AliDebug(2,Form(
"fGeometry %p : TVirtualMC::GetMC() %p : fSampleWidth %5.4f\n",
113 TString gn(geom->GetName());
118 Error(
"CreateGeometry",
"EMCAL Geometry class has not been set up.");
130 Float_t envelopA[10];
131 if(gn.Contains(
"WSUC") )
138 TVirtualMC::GetMC()->Gsvolu(
"XEN1",
"BOX",
fIdTmedArr[
kIdSC], envelopA, 3) ;
141 for(Int_t i=0; i<3; i++)
fEnvelop1[i] = envelopA[i];
144 TVirtualMC::GetMC()->Gspos(
"XEN1", 1,
"WSUC", 0.0, 0.0, + 265.,
fIdRotm,
"ONLY") ;
157 envelopA[8] = envelopA[5] ;
158 envelopA[9] = envelopA[6] ;
160 TVirtualMC::GetMC()->Gsvolu(
"XEN1",
"PGON",
fIdTmedArr[
kIdAIR], envelopA, 10) ;
165 printf(
"CreateGeometry: XEN1 = %f, %f\n", envelopA[5], envelopA[6]);
166 printf(
"CreateGeometry: XU0 = %f, %f\n", envelopA[5], envelopA[6]);
174 AliDebug(2,Form(
"Shish-Kebab geometry : %s", GetTitle()));
177 if(gn.Contains(
"WSUC")==0)
180 AliDebug(2,
"Creating EMCAL Space Frame");
200 TString message(
"\n") ;
201 message +=
"*****************************************\n" ;
207 message +=
"AliEMCAL " ;
209 message +=
"EMCAL geometry initialized for " ;
210 message += geom->GetName() ;
214 message +=
"AliEMCAL " ;
216 message +=
"EMCAL geometry initialization failed !" ;
218 message +=
"\n*****************************************" ;
219 printf(
"%s",message.Data() ) ;
230 TString gn(g->GetName()); gn.ToUpper();
231 Double_t trd1Angle = g->
GetTrd1Angle()*TMath::DegToRad(), tanTrd1 = TMath::Tan(trd1Angle/2.);
236 Double_t par[10], xpos=0., ypos=0., zpos=0.;
244 if( SMTypeList[i] == tmpType)
continue;
245 else tmpType = SMTypeList[i];
256 Double_t parSCM0[5]={0,0,0,0}, *dummy = 0, parTRAP[11];
258 if(!gn.Contains(
"V1"))
261 for(Int_t i=0; i<3; i++) parSCM0[i] =
fParEMOD[i] - wallThickness;
263 TVirtualMC::GetMC()->Gsvolu(
"SCM0",
"TRD1",
fIdTmedArr[
kIdAIR], parSCM0, 4);
264 TVirtualMC::GetMC()->Gspos(
"SCM0", 1,
"EMOD", 0., 0., 0., 0,
"ONLY") ;
273 TVirtualMC::GetMC()->Gsvolu(
"SCM0",
"TRD1",
fIdTmedArr[
kIdAIR], parSCM0, 4);
275 TVirtualMC::GetMC()->Gspos(
"SCM0", 1,
"EMOD", 0., 0., zshift, 0,
"ONLY");
284 TVirtualMC::GetMC()->Gsdvn(
"SCMY",
"SCM0", g->
GetNETAdiv(), 2);
287 parTRAP[0] = parSCM0[3];
288 parTRAP[1] = TMath::ATan2((parSCM0[1]-parSCM0[0])/2.,2.*parSCM0[3])*180./TMath::Pi();
292 parTRAP[3] = parSCM0[2]/2.;
293 parTRAP[4] = parSCM0[0]/2.;
294 parTRAP[5] = parTRAP[4];
298 parTRAP[7] = parSCM0[2]/2.;
299 parTRAP[8] = parSCM0[1]/2.;
300 parTRAP[9] = parTRAP[8];
304 for(Int_t i=0; i<11; i++)
AliDebug(3, Form(
" par[%2.2i] %9.4f\n", i, parTRAP[i]));
306 TVirtualMC::GetMC()->Gsvolu(
"SCMX",
"TRAP",
fIdTmedArr[
kIdSC], parTRAP, 11);
307 xpos = +(parSCM0[1]+parSCM0[0])/4.;
308 TVirtualMC::GetMC()->Gspos(
"SCMX", 1,
"SCMY", xpos, 0.0, 0.0, 0,
"ONLY") ;
313 TVirtualMC::GetMC()->Gspos(
"SCMX", 2,
"SCMY", xpos, 0.0, 0.0,
fIdRotm,
"ONLY");
321 Double_t xCenterSCMX = (parTRAP[4] + parTRAP[8])/2.;
322 if(!gn.Contains(
"V1"))
324 par[1] = parSCM0[2]/2;
326 TVirtualMC::GetMC()->Gsvolu(
"PBTI",
"BOX",
fIdTmedArr[
kIdPB], dummy, 0);
334 xpos = par[0] - xCenterSCMX;
335 TVirtualMC::GetMC()->Gsposp(
"PBTI", ++nr,
"SCMX", xpos, ypos, zpos, 0,
"ONLY", par, 3) ;
336 AliDebug(3,Form(
" %i xpos %f zpos %f par[0] %f \n", iz+1, xpos, zpos, par[0]));
340 AliDebug(2,Form(
" Number of Pb tiles in SCMX %i \n", nr));
346 par[1] = parSCM0[2]/2.;
348 par[0] = parSCM0[0]/2.;
351 xpos = par[0] - xCenterSCMX;
353 TVirtualMC::GetMC()->Gspos(
"PAP1", 1,
"SCMX", xpos, ypos, zpos, 0,
"ONLY");
362 par[0] = (parSCM0[0] + tanBetta*dz)/2.;
363 TString pa(Form(
"PA%2.2i",nr));
366 xpos = par[0] - xCenterSCMX;
367 zpos = -parSCM0[3] + dz + par[2];
368 TVirtualMC::GetMC()->Gspos(pa.Data(), 1,
"SCMX", xpos, ypos, zpos, 0,
"ONLY") ;
371 TString pb(Form(
"PB%2.2i",nr));
373 TVirtualMC::GetMC()->Gsvolu(pb.Data(),
"BOX",
fIdTmedArr[
kIdPB], par, 3);
374 TVirtualMC::GetMC()->Gspos(pb.Data(), 1, pa.Data(), 0.0, 0.0, 0.0, 0,
"ONLY") ;
384 printf(
" before AliEMCALv0::Trd1Tower3X3() : parSCM0");
385 for(Int_t i=0; i<4; i++)
printf(
" %7.4f ", parSCM0[i]);
405 TString gn(g->GetName()); gn.ToUpper();
407 Double_t par[3], xpos=0., ypos=0., zpos=0., rpos=0., dphi=0., phi=0.0, phiRad=0.;
408 Double_t parC[3] = {0};
420 Int_t nphism = nSMod/2;
425 AliDebug(2,Form(
" rpos %8.2f : dphi %6.1f degree \n", rpos, dphi));
428 if(gn.Contains(
"WSUC"))
437 AliDebug(2,Form(
"SMOD in WSUC : tmed %i | dx %7.2f dy %7.2f dz %7.2f (SMOD, BOX)\n",
443 for(Int_t i=0; i<nphism; i++) {
444 xpos = ypos = zpos = 0.0;
446 TVirtualMC::GetMC()->Gspos(
"SMOD", 1, mother, xpos, ypos, zpos,
fIdRotm,
"ONLY") ;
448 printf(
" fIdRotm %3i phi %6.1f(%5.3f) xpos %7.2f ypos %7.2f zpos %7.2f \n",
449 fIdRotm, phi, phiRad, xpos, ypos, zpos);
456 AliDebug(2,Form(
" par[0] %7.2f (old) \n", par[0]));
463 for (Int_t smodnum = 0; smodnum < nSMod; ++smodnum)
465 for(Int_t i=0; i<3; i++) parC[i] = par[i];
477 phi = phiRad *180./TMath::Pi();
478 Double_t phiy = 90. + phi;
481 xpos = rpos * TMath::Cos(phiRad);
482 ypos = rpos * TMath::Sin(phiRad);
492 xpos += (par[1]/2. * TMath::Sin(phiRad));
493 ypos -= (par[1]/2. * TMath::Cos(phiRad));
499 xpos += (2.*par[1]/3. * TMath::Sin(phiRad));
500 ypos -= (2.*par[1]/3. * TMath::Cos(phiRad));
512 xpos += (2.*par[1]/3. * TMath::Sin(phiRad));
513 ypos -= (2.*par[1]/3. * TMath::Cos(phiRad));
519 TVirtualMC::GetMC()->Gsvolu(smName.Data(),
"BOX",
fIdTmedArr[
kIdAIR], parC, 3);
521 AliDebug(2,Form(
" Super module with name \"%s\" was created in \"box\" with: par[0] = %f, par[1] = %f, par[2] = %f\n", smName.Data(), parC[0], parC[1], parC[2]));
527 if(phiy>=360.) phiy -= 360.;
533 TVirtualMC::GetMC()->Gspos(smName.Data(), SMOrder, mother, xpos, ypos, zpos,
fIdRotm,
"ONLY") ;
535 AliDebug(3, Form(
" %s : %2i, fIdRotm %3i phi %6.1f(%5.3f) xpos %7.2f ypos %7.2f zpos %7.2f : i %i \n",
536 smName.Data(), SMOrder,
fIdRotm, phi, phiRad, xpos, ypos, zpos, smodnum));
540 AliDebug(2,Form(
" Number of Super Modules %i \n", nSMod));
548 printf(
"tmed %i | dx %7.2f dy %7.2f dz %7.2f (STPL) \n",
fIdTmedArr[kIdSTEEL], par[0],par[1],par[2]);
551 TVirtualMC::GetMC()->Gspos(
"STPL", 1,
"SMOD", xpos, 0.0, 0.0, 0,
"ONLY") ;
563 TString gn(g->GetName()); gn.ToUpper();
566 Double_t xpos=0., ypos=0., zpos=0.;
569 if(strcmp(mother,
"SMOD")==0)
583 for(Int_t iz=0; iz<g->
GetNZ(); iz++)
585 Double_t angle=90., phiOK=0;
589 if(!gn.Contains(
"WSUC"))
593 AliDebug(4,Form(
" %2i | angle | %6.3f - %6.3f = %6.3f(eta %5.3f)\n",
599 if(strcmp(mother,
"SM10") == 0 )
603 else if(strcmp(mother,
"SM3rd") == 0 )
607 else if(strcmp(mother,
"DCEXT") == 0 )
611 else if(strcmp(mother,
"DCSM") == 0 )
613 if(iz < 8 )
continue;
616 else if(strcmp(mother,
"SMOD") != 0 )
617 AliError(
"Unknown super module Type!!");
619 for(Int_t iy=0; iy<iyMax; iy++)
622 TVirtualMC::GetMC()->Gspos(child, ++nr, mother, xpos, ypos, zpos,
fIdRotm,
"ONLY") ;
625 AliDebug(3,Form(
"%3.3i(%2.2i,%2.2i) ", nr,iy+1,iz+1));
636 AliDebug(4,Form(
" %2i | angle -phiOK | %6.3f - %6.3f = %6.3f(eta %5.3f)\n",
644 for(Int_t ix=0; ix<g->
GetNPhi(); ix++)
647 TVirtualMC::GetMC()->Gspos(child, ++nr, mother, xpos, ypos, zpos,
fIdRotm,
"ONLY") ;
654 AliDebug(2,Form(
" Number of modules in Super Module(%s) %i \n", mother, nr));
665 TString gn(g->GetName()); gn.ToUpper();
666 Double_t trd1Angle = g->
GetTrd1Angle()*TMath::DegToRad(), tanTrd1 = TMath::Tan(trd1Angle/2.);
667 Double_t parALFP[5], zposALFP=0.;
674 TVirtualMC::GetMC()->Gsvolu(child,
"TRD1",
fIdTmedArr[
kIdAL], parALFP, 4);
677 TVirtualMC::GetMC()->Gspos (child, 1, mother, 0.0, 0.0, zposALFP, 0,
"ONLY");
688 printf(
" AliEMCALv0::Trd1Tower3X3() : parSCM0");
689 for(Int_t i=0; i<4; i++)
printf(
" %7.4f ", parSCM0[i]);
693 Double_t parTRAP[11], *dummy=0;
696 TString gn(g->GetName()), scmx;
702 TVirtualMC::GetMC()->Gsdvn(
"SCMY",
"SCM0", g->
GetNETAdiv(), 2);
703 Double_t dx1=parSCM0[0], dx2=parSCM0[1], dy=parSCM0[2], dz=parSCM0[3];
704 Double_t ndiv=3., xpos=0.0;
707 TVirtualMC::GetMC()->Gsvolu(
"PBTI",
"BOX",
fIdTmedArr[
kIdPB], dummy, 0);
709 for(Int_t ix=1; ix<=3; ix++)
714 Double_t xCentBot = 2.*dx1/3.;
715 Double_t xCentTop = 2.*(dx2/4. + dx1/12.);
716 parTRAP[1] = TMath::ATan2((xCentTop-xCentBot),2.*dz)*TMath::RadToDeg();
719 parTRAP[3] = dy/ndiv;
720 parTRAP[4] = dx1/ndiv;
721 parTRAP[5] = parTRAP[4];
724 parTRAP[7] = dy/ndiv;
725 parTRAP[8] = dx2/2 - dx1/6.;
726 parTRAP[9] = parTRAP[8];
728 xpos = (xCentBot+xCentTop)/2.;
732 parTRAP[1] = -parTRAP[1];
738 parTRAP[8] = dx1/ndiv;
739 parTRAP[9] = parTRAP[8];
743 AliDebug(2,Form(
" ** TRAP ** xpos %9.3f\n", xpos));
744 for(Int_t i=0; i<11; i++)
AliDebug(2,Form(
" par[%2.2i] %9.4f\n", i, parTRAP[i]));
747 TVirtualMC::GetMC()->Gsvolu(scmx.Data(),
"TRAP",
fIdTmedArr[
kIdSC], parTRAP, 11);
748 TVirtualMC::GetMC()->Gspos(scmx.Data(), 1,
"SCMY", xpos, 0.0, 0.0, 0,
"ONLY") ;
753 AliDebug(2,
"Trd1Tower3X3 - Ver. 1.0 : was tested.");
765 AliDebug(2,Form(
" Pb tiles : nrstart %i\n", nr));
769 Double_t xpos = 0.0, ypos = 0.0;
772 Double_t coef = (parTRAP[8] - parTRAP[4]) / (2.*parTRAP[0]);
773 Double_t xCenterSCMX = (parTRAP[4] + parTRAP[8])/2.;
782 xpos = par[0] - xCenterSCMX;
783 if(parTRAP[1] < 0.) xpos = -xpos;
785 TVirtualMC::GetMC()->Gsposp(
"PBTI", ++nr, n.Data(), xpos, ypos, zpos, 0,
"ONLY", par, 3) ;
787 AliDebug(2,Form(
" %i xpos %9.3f zpos %9.3f par[0] %9.3f |", iz+1, xpos, zpos, par[0]));
793 AliDebug(2,Form(
" Number of Pb tiles in SCMX %i coef %9.7f \n", nr, coef));
794 AliDebug(2,Form(
" par[1] %9.3f par[2] %9.3f ypos %9.3f \n", par[1], par[2], ypos));
795 AliDebug(2,Form(
" PbInTrap Ver. 1.0 : was tested."));
805 AliDebug(1,
" AliEMCALv0::Trd1Tower1X1() : parSCM0");
806 for(Int_t i=0; i<4; i++)
printf(
" %7.4f ", parSCM0[i]);
811 AliDebug(2,
"Trd1Tower1X1() : Create SCMX(SCMY) as SCM0");
813 TVirtualMC::GetMC()->Gsvolu(
"SCMY",
"TRD1",
fIdTmedArr[
kIdAIR], parSCM0, 4);
814 TVirtualMC::GetMC()->Gspos(
"SCMY", 1,
"SCM0", 0.0, 0.0, 0.0, 0,
"ONLY");
815 TVirtualMC::GetMC()->Gsvolu(
"SCMX",
"TRD1",
fIdTmedArr[
kIdSC], parSCM0, 4);
816 TVirtualMC::GetMC()->Gspos(
"SCMX", 1,
"SCMY", 0.0, 0.0, 0.0, 0,
"ONLY");
820 TVirtualMC::GetMC()->Gsvolu(
"PBTI",
"BOX",
fIdTmedArr[
kIdPB], dummy, 0);
824 AliDebug(1,
"Trd1Tower1X1() : Ver. 0.1 : was tested.");
834 static Int_t nr=0, ndeb=2;
835 AliDebug(ndeb,Form(
" Pb tiles : nrstart %i\n", nr));
839 Double_t xpos = 0.0, ypos = 0.0;
841 Double_t coef = (parTrd1[1] - parTrd1[0]) / (2.*parTrd1[3]);
849 TVirtualMC::GetMC()->Gsposp(
"PBTI", ++nr, n.Data(), xpos, ypos, zpos, 0,
"ONLY", par, 3) ;
851 AliDebug(2,Form(
" %i xpos %9.3f zpos %9.3f par[0] %9.3f |", iz+1, xpos, zpos, par[0]));
857 AliDebug(ndeb,Form(
" Number of Pb tiles in SCMX %i coef %9.7f ", nr, coef));
858 AliDebug(ndeb,Form(
" PbInTrd1 Ver. 0.1 : was tested."));
877 TString ntmp(GetTitle());
879 if(ntmp.Contains(
"WSUC"))
905 Double_t phi, phiRad, xpos, ypos, zpos;
908 Int_t modUID, modnum = 0;
909 TString volpath, symname;
918 for (Int_t smodnum = 0; smodnum < nSMod; ++smodnum)
922 { SMPathName =
"SMOD"; SMName =
"FullSupermodule";}
924 { SMPathName =
"SM10"; SMName =
"HalfSupermodule";}
926 { SMPathName =
"SM3rd"; SMName =
"OneThrdSupermodule";}
928 { SMPathName =
"DCSM"; SMName =
"DCALSupermodule";}
930 { SMPathName =
"DCEXT"; SMName =
"DCALExtensionSM";}
943 volpath.Form(
"ALIC_1/XEN1_1/%s_%d",SMPathName.Data(), SMOrder);
944 symname.Form(
"EMCAL/%s%d",SMName.Data(), SMOrder);
946 if(!
gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data(),modUID))
947 AliFatal(Form(
"AliEMCALv0::Unable to set alignable entry!!\nName: %s\t Path: %s\t ModuleID: %d\n",
948 symname.Data(),volpath.Data(), modUID));
952 TGeoPNEntry *alignableEntry =
gGeoManager->GetAlignableEntryByUID(modUID) ;
955 phi = phiRad*180./TMath::Pi();
956 xpos = rpos * TMath::Cos(phiRad);
957 ypos = rpos * TMath::Sin(phiRad);
962 xpos += (pars[1]/2. * TMath::Sin(phiRad));
963 ypos -= (pars[1]/2. * TMath::Cos(phiRad));
968 xpos += (pars[1]/3. * TMath::Sin(phiRad));
969 ypos -= (pars[1]/3. * TMath::Cos(phiRad));
976 AliDebug(3, Form(
" fIdRotm %3i phi %6.13f(%5.3f) xpos %7.2f ypos %7.2f zpos %7.2f : smodnum %i \n",
977 fIdRotm, phi, phiRad, xpos, ypos, zpos, smodnum));
979 TGeoHMatrix *matTtoL;
980 TGeoHMatrix *globMatrix = alignableEntry->GetGlobalOrig();
981 const TGeoHMatrix& globMatrixi = globMatrix->Inverse();
986 TGeoTranslation geoTran0(xpos, ypos, zpos);
987 TGeoRotation geoRot0(
"geoRot0", 90.0, phi, 90.0, 90.0+phi, 0.0, 0.0);
988 TGeoCombiTrans mat0(geoTran0, geoRot0);
989 matTtoL =
new TGeoHMatrix(mat0);
991 matTtoL->MultiplyLeft(&globMatrixi);
992 alignableEntry->SetMatrix(matTtoL);
997 Double_t phiy = 90. + phi + 180.;
998 if(phiy>=360.) phiy -= 360.;
999 TGeoTranslation geoTran1(xpos,ypos,-zpos);
1000 TGeoRotation geoRot1(
"geoRot1", 90.0, phi, 90.0, phiy, 180.0, 0.0);
1001 TGeoCombiTrans mat1(geoTran1, geoRot1);
1002 matTtoL =
new TGeoHMatrix(mat1);
1004 matTtoL->MultiplyLeft(&globMatrixi);
1005 alignableEntry->SetMatrix(matTtoL);
1020 TString vpstr1 =
"WSUC_1/XEN1_1/SMOD_";
1021 TString snstr1 =
"EMCAL/CosmicTestSupermodule";
1022 TString volpath, symname;
1025 for (Int_t smodnum=0; smodnum < 1; smodnum++)
1028 symname += (smodnum+1);
1030 volpath += (smodnum+1);
1032 if(!
gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data()))
1033 AliFatal(
"Unable to set alignable entry!!");
Float_t GetDCALInnerEdge(void) const
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
Float_t GetLongModuleSize(void) const
void AliMatrix(Int_t &nmat, Double_t theta1, Double_t phi1, Double_t theta2, Double_t phi2, Double_t theta3, Double_t phi3) const
Double_t fSmodPar1
! y size of super module
Double_t GetEtaOfCenterOfModule() const
Add comment.
Float_t GetArm1PhiMax(void) const
Float_t GetArm1PhiMin(void) const
TList * fShishKebabModules
! list of modules
Int_t GetNECLayers(void) const
Float_t GetShellThickness(void) const
Double_t fSmodPar2
! z size of super module
Int_t GetNETAdiv(void) const
Int_t GetNumberOfSuperModules(void) const
Int_t * fIdTmedArr
! fIdtmed->GetArray() - 1599;
Float_t GetEnvelop(Int_t index) const
Float_t GetPhiTileSize(void) const
Float_t GetTrd1BondPaperThick() const
Float_t GetSteelFrontThickness(void) const
void PbInTrap(const Double_t parTRAP[11], TString n)
EMCal simulation manager class v0.
Int_t GetNPhi(void) const
Float_t GetPhiModuleSize(void) const
virtual void AddAlignableVolumes() const
Add volumes which are alignable (?)
const Char_t * GetNameOfEMCALEnvelope(void) const
Double_t GetPhiCenterOfSMSec(Int_t nsupmod) const
Float_t GetTrd1Angle(void) const
static Int_t GetGlobalDebugLevel()
Double_t fParEMOD[5]
! parameters of EMCAL module (TRD1,2)
Float_t GetEtaModuleSize(void) const
Int_t fIdRotm
! number of rotation matrix (working variable)
virtual const TString Version(void) const
Bool_t checkGeoAndRun
check or not the year to configure the detector
Double_t fSmodPar0
! x size of super module
void Trd1Tower1X1(Double_t *parSCM0)
virtual void AddAlignableVolumesInALICE() const
TGeoManager * gGeoManager
Int_t GetNPHIdiv(void) const
Float_t GetECScintThick(void) const
Double_t GetPhiCenterOfSM(Int_t nsupmod) const
virtual void Init()
Init (not needed)
AliEMCALv0()
Default constructor.
void CreateEmod(const char *mother="SMOD", const char *child="EMOD")
Generate module geometry (2x2 towers)
TArrayF fEnvelop1
! parameters of EMCAL envelop for TRD1(2) case
void CreateSmod(const char *mother="XEN1")
Generate super module geometry.
virtual AliEMCALGeometry * GetGeometry() const
Int_t GetSMType(Int_t nSupMod) const
Double_t fSampleWidth
! sample width = double(g->GetECPbRadThick()+g->GetECScintThick());
Float_t GetTrd1AlFrontThick() const
AliEMCALShishKebabTrd1Module * GetShishKebabModule(Int_t neta=0)
Base Class for EMCAL description.
#define AliFatal(message)
Float_t GetLateralSteelStrip(void) const
Double_t fInnerEdge
! Inner edge of DCAL super module
virtual void AddAlignableVolumesInWSUC() const
void Trd1Tower3X3(const Double_t *parSCM0)
#define AliDebug(logLevel, message)
TArrayI * fIdtmed
cached MC instance (to avoid calls to thread_local gMC=TVirtualMC::GetMC())
Int_t GetNEta(void) const
Double_t GetTanBetta() const
AliEMCALSpaceFrame * fCalFrame
EMCAL Space frame object.
AliEMCALEMCGeometry * GetEMCGeometry() const
Double_t GetThetaInDegree() const
Add comment.
void PbInTrd1(const Double_t *parTrd1, TString n)
void CreateAlFrontPlate(const char *mother="EMOD", const char *child="ALFP")
Generate aluminium plates geometry.
void CreateShishKebabGeometry()
Generate tower geometry.
virtual void CreateGeometry()
Float_t Get2Trd1Dx2(void) const
static UShort_t LayerToVolUID(ELayerID layerId, Int_t modId)
Float_t GetECPbRadThick(void) const
Float_t GetPhiSuperModule() const
Float_t GetSuperModulesPar(Int_t ipar) const
#define AliError(message)
Int_t * GetEMCSystem() const
Double_t GetPosXfromR() const
static Bool_t IsInitialized(void)
TVector2 & GetCenterOfModule()
TList * GetShishKebabTrd1Modules() const
EMCal geometry, singleton.
Space Frame implementation.
Main class for TRD1 geometry of Shish-Kebab case.
void DefineSamplingFraction(const Text_t *mcname="", const Text_t *mctitle="")
AliEMCALGeometry * fGeometry
! EMCal geometry access