#include <TVirtualMC.h>
#include <TGeoManager.h>
#include <TGeoVolume.h>
#include <TGeoMedium.h>
#include <TGeoMatrix.h>
#include <TGeoVolume.h>
#include <TGeoTube.h>
#include <TGeoCone.h>
#include <TGeoPcon.h>
#include <TGeoCompositeShape.h>
#include "AliConst.h"
#include "AliEMCALSpaceFrame.h"
#include "AliMagF.h"
#include "AliRun.h"
#include "AliLog.h"
ClassImp(AliEMCALSpaceFrame)
AliEMCALSpaceFrame::AliEMCALSpaceFrame()
: TNamed("EMCALSpaceFrame","Steel Space Frame that supports EMCAL"),
fNumCross(0),
fNumSubSets(0),
fTotalHalfWidth(0.),
fBeginPhi(0.),
fEndPhi(0.),
fTotalPhi(0.),
fBeginRadius(0.),
fHalfFrameTrans(0.),
fFlangeHeight(0.),
fFlangeWidth(0.),
fRibHeight(0.),
fRibWidth(0.),
fCrossBottomWidth(0.),
fCrossTopWidth(0.),
fCrossBottomHeight(0.),
fCrossBottomRadThick(0.),
fCrossBeamArcLength(0.),
fCrossBottomStartRadius(0.),
fCrossTopHeight(0.),
fCrossTopRadThick(0.),
fCrossTopStart(0.),
fEndRadius(0.),
fEndBeamRadThick(0),
fEndBeamBeginRadius(0)
{
fNumCross = 12;
fNumSubSets = 3;
fTotalHalfWidth = 152.3;
fBeginPhi = 76.8;
fEndPhi = 193.03;
fBeginRadius = 490.;
fHalfFrameTrans = fTotalHalfWidth+57.2/2.;
fFlangeWidth = 15.2;
fRibWidth = 1.5;
fCrossBottomHeight = 15.2;
fCrossBottomRadThick = 1.5;
fCrossTopHeight = 1.5;
fCrossTopRadThick = 35./2.;
fTotalPhi = fEndPhi - fBeginPhi;
fFlangeHeight = fBeginRadius + 3.;
fRibHeight = fFlangeHeight + 35;
fCrossBottomWidth = 0.5/(Double_t)fNumSubSets * (2.*fTotalHalfWidth - 8. * fFlangeWidth);
fCrossTopWidth = fCrossBottomWidth;
fCrossBeamArcLength = (112.62597)/(fNumCross-1)-.001;
fCrossBottomStartRadius = fBeginRadius + fCrossBottomRadThick;
fCrossTopStart = fBeginRadius + 2.*fCrossBottomRadThick + fCrossTopRadThick+0.015;
fEndRadius = fRibHeight+1.15;
fEndBeamRadThick = fCrossBottomRadThick+fCrossTopRadThick;
fEndBeamBeginRadius = fBeginRadius + fEndBeamRadThick;
}
AliEMCALSpaceFrame::AliEMCALSpaceFrame(const AliEMCALSpaceFrame &frame)
: TNamed(frame.GetName(),frame.GetTitle()),
fNumCross(frame.fNumCross),
fNumSubSets(frame.fNumSubSets),
fTotalHalfWidth(frame.fTotalHalfWidth),
fBeginPhi(frame.fBeginPhi),
fEndPhi(frame.fEndPhi),
fTotalPhi(frame.fTotalPhi),
fBeginRadius(frame.fBeginRadius),
fHalfFrameTrans(frame.fHalfFrameTrans),
fFlangeHeight(frame.fFlangeHeight),
fFlangeWidth(frame.fFlangeWidth),
fRibHeight(frame.fRibHeight),
fRibWidth(frame.fRibWidth),
fCrossBottomWidth(frame.fCrossBottomWidth),
fCrossTopWidth(frame.fCrossTopWidth),
fCrossBottomHeight(frame.fCrossBottomHeight),
fCrossBottomRadThick(frame.fCrossBottomRadThick),
fCrossBeamArcLength(frame.fCrossBeamArcLength),
fCrossBottomStartRadius(frame.fCrossBottomStartRadius),
fCrossTopHeight(frame.fCrossTopHeight),
fCrossTopRadThick(frame.fCrossTopRadThick),
fCrossTopStart(frame.fCrossTopStart),
fEndRadius(frame.fEndRadius),
fEndBeamRadThick(frame.fEndBeamRadThick),
fEndBeamBeginRadius(frame.fEndBeamBeginRadius)
{
}
void AliEMCALSpaceFrame::CreateGeometry()
{
AliDebug(1,"Create CalFrame Geometry");
TGeoVolume* top = gGeoManager->GetVolume("ALIC");
TGeoMedium *steel = gGeoManager->GetMedium("EMCAL_S steel$");
TGeoMedium *air = gGeoManager->GetMedium("EMCAL_Air$");
TGeoVolume *calFrameMO =
gGeoManager->MakeTubs("CalFrame", air, fBeginRadius-2.1,fEndRadius,
fTotalHalfWidth*3,fBeginPhi-3,fEndPhi+3);
calFrameMO->SetVisibility(kFALSE);
TGeoVolume *calHalfFrameMO =
gGeoManager->MakeTubs("HalfFrame", air, fBeginRadius-2,fEndRadius,
fTotalHalfWidth,fBeginPhi-2.9,fEndPhi+2.9);
calHalfFrameMO->SetVisibility(kFALSE);
TGeoVolume *endBeams =
gGeoManager->MakeBox("End Beams", steel, fEndBeamRadThick, fCrossTopHeight, fTotalHalfWidth);
TGeoVolume *skin =
gGeoManager->MakeTubs("skin", steel, fRibHeight+0.15, fEndRadius,
fTotalHalfWidth, fBeginPhi, fEndPhi);
TGeoVolume *flangeVolume =
gGeoManager->MakeTubs("supportBottom", steel, fBeginRadius, fFlangeHeight,
fFlangeWidth, fBeginPhi, fEndPhi);
TGeoVolume *ribVolume =
gGeoManager->MakeTubs("RibVolume", steel, fFlangeHeight, fRibHeight, fRibWidth, fBeginPhi, fEndPhi);
TGeoVolume *subSetCross =
gGeoManager->MakeTubs("subSetCross", air, fBeginRadius-1, fBeginRadius+2*fCrossBottomRadThick+
2*fCrossTopRadThick+0.15, fCrossBottomWidth, fBeginPhi, fEndPhi);
subSetCross->SetVisibility(kFALSE);
TGeoVolume *crossBottomBeams =
gGeoManager->MakeBox("crossBottom", steel, fCrossBottomRadThick, fCrossBottomHeight, fCrossBottomWidth);
TGeoVolume *crossTopBeams =
gGeoManager->MakeBox("crossTop", steel, fCrossTopRadThick, fCrossTopHeight, fCrossTopWidth);
TGeoTranslation *trTEST = new TGeoTranslation();
TGeoRotation *rotTEST = new TGeoRotation();
Double_t conv = TMath::Pi()/180.;
Double_t radAngle = 0;
Double_t endBeamParam=.4;
for(Int_t i = 0; i < fNumCross; i++){
Double_t loopPhi = fBeginPhi + 1.8;
radAngle = (loopPhi + i*fCrossBeamArcLength)*conv;
rotTEST->SetAngles(fBeginPhi + i*fCrossBeamArcLength, 0, 0);
trTEST->SetTranslation(cos(radAngle)*fCrossBottomStartRadius, sin(radAngle)*fCrossBottomStartRadius,0);
TGeoCombiTrans *combo = new TGeoCombiTrans(*trTEST, *rotTEST);
combo->RegisterYourself();
crossBottomBeams->SetVisibility(1);
subSetCross->AddNode(crossBottomBeams, i+1, combo);
if (i != 0 && i!=fNumCross-1){
rotTEST->SetAngles(fBeginPhi + i*fCrossBeamArcLength, 0, 0);
trTEST->SetTranslation(cos(radAngle)*fCrossTopStart, sin(radAngle)*fCrossTopStart,0);
crossTopBeams->SetVisibility(1);
subSetCross->AddNode(crossTopBeams, i+1, new TGeoCombiTrans(*trTEST, *rotTEST));
}
else if(i ==0){
rotTEST->SetAngles(fBeginPhi + i*fCrossBeamArcLength, 0, 0);
trTEST->SetTranslation(cos((77-endBeamParam)*conv)*(fEndBeamBeginRadius), sin((77-endBeamParam)*conv)*(fEndBeamBeginRadius),0);
endBeams->SetVisibility(1);
calHalfFrameMO->AddNode(endBeams, 1, new TGeoCombiTrans(*trTEST, *rotTEST));
}
else{
rotTEST->SetAngles(193.03, 0, 0);
trTEST->SetTranslation(cos((193.03+endBeamParam)*conv)*(fEndBeamBeginRadius), sin((193.03+endBeamParam)*conv)*(fEndBeamBeginRadius),0);
endBeams->SetVisibility(1);
calHalfFrameMO->AddNode(endBeams, 2, new TGeoCombiTrans(*trTEST, *rotTEST));
}
}
TGeoTranslation *origin1 = new TGeoTranslation(0,0,0);
TGeoTranslation *origin2 = new TGeoTranslation(0,0,2*(fCrossBottomWidth+fFlangeWidth));
TGeoTranslation *origin3 = new TGeoTranslation(0,0,-2*(fCrossBottomWidth+fFlangeWidth));
TGeoTranslation *str1 = new TGeoTranslation(0,0,-3*(fCrossBottomWidth+fFlangeWidth));
TGeoTranslation *str2 = new TGeoTranslation(0,0,-(fCrossBottomWidth+fFlangeWidth));
TGeoTranslation *str3 = new TGeoTranslation(0,0,(fCrossBottomWidth+fFlangeWidth));
TGeoTranslation *str4 = new TGeoTranslation(0,0,3*(fCrossBottomWidth+fFlangeWidth));
TGeoTranslation *halfTrans1 = new TGeoTranslation(0,0,fHalfFrameTrans);
TGeoTranslation *halfTrans2 = new TGeoTranslation(0,0,-fHalfFrameTrans);
calHalfFrameMO->AddNode(flangeVolume, 1, str1);
calHalfFrameMO->AddNode(flangeVolume, 2, str2);
calHalfFrameMO->AddNode(flangeVolume, 3, str3);
calHalfFrameMO->AddNode(flangeVolume, 4, str4);
calHalfFrameMO->AddNode(ribVolume, 1, str1);
calHalfFrameMO->AddNode(ribVolume, 2, str2);
calHalfFrameMO->AddNode(ribVolume, 3, str3);
calHalfFrameMO->AddNode(ribVolume, 4, str4);
calHalfFrameMO->AddNode(subSetCross, 1, origin1);
calHalfFrameMO->AddNode(subSetCross, 2, origin2);
calHalfFrameMO->AddNode(subSetCross, 3, origin3);
calHalfFrameMO->AddNode(skin, 1, gGeoIdentity);
calFrameMO->AddNode(calHalfFrameMO, 1, halfTrans1);
calFrameMO->AddNode(calHalfFrameMO, 2, halfTrans2);
top->AddNode(calFrameMO,1,gGeoIdentity);
}
AliEMCALSpaceFrame.cxx:10 AliEMCALSpaceFrame.cxx:11 AliEMCALSpaceFrame.cxx:12 AliEMCALSpaceFrame.cxx:13 AliEMCALSpaceFrame.cxx:14 AliEMCALSpaceFrame.cxx:15 AliEMCALSpaceFrame.cxx:16 AliEMCALSpaceFrame.cxx:17 AliEMCALSpaceFrame.cxx:18 AliEMCALSpaceFrame.cxx:19 AliEMCALSpaceFrame.cxx:20 AliEMCALSpaceFrame.cxx:21 AliEMCALSpaceFrame.cxx:22 AliEMCALSpaceFrame.cxx:23 AliEMCALSpaceFrame.cxx:24 AliEMCALSpaceFrame.cxx:25 AliEMCALSpaceFrame.cxx:26 AliEMCALSpaceFrame.cxx:27 AliEMCALSpaceFrame.cxx:28 AliEMCALSpaceFrame.cxx:29 AliEMCALSpaceFrame.cxx:30 AliEMCALSpaceFrame.cxx:31 AliEMCALSpaceFrame.cxx:32 AliEMCALSpaceFrame.cxx:33 AliEMCALSpaceFrame.cxx:34 AliEMCALSpaceFrame.cxx:35 AliEMCALSpaceFrame.cxx:36 AliEMCALSpaceFrame.cxx:37 AliEMCALSpaceFrame.cxx:38 AliEMCALSpaceFrame.cxx:39 AliEMCALSpaceFrame.cxx:40 AliEMCALSpaceFrame.cxx:41 AliEMCALSpaceFrame.cxx:42 AliEMCALSpaceFrame.cxx:43 AliEMCALSpaceFrame.cxx:44 AliEMCALSpaceFrame.cxx:45 AliEMCALSpaceFrame.cxx:46 AliEMCALSpaceFrame.cxx:47 AliEMCALSpaceFrame.cxx:48 AliEMCALSpaceFrame.cxx:49 AliEMCALSpaceFrame.cxx:50 AliEMCALSpaceFrame.cxx:51 AliEMCALSpaceFrame.cxx:52 AliEMCALSpaceFrame.cxx:53 AliEMCALSpaceFrame.cxx:54 AliEMCALSpaceFrame.cxx:55 AliEMCALSpaceFrame.cxx:56 AliEMCALSpaceFrame.cxx:57 AliEMCALSpaceFrame.cxx:58 AliEMCALSpaceFrame.cxx:59 AliEMCALSpaceFrame.cxx:60 AliEMCALSpaceFrame.cxx:61 AliEMCALSpaceFrame.cxx:62 AliEMCALSpaceFrame.cxx:63 AliEMCALSpaceFrame.cxx:64 AliEMCALSpaceFrame.cxx:65 AliEMCALSpaceFrame.cxx:66 AliEMCALSpaceFrame.cxx:67 AliEMCALSpaceFrame.cxx:68 AliEMCALSpaceFrame.cxx:69 AliEMCALSpaceFrame.cxx:70 AliEMCALSpaceFrame.cxx:71 AliEMCALSpaceFrame.cxx:72 AliEMCALSpaceFrame.cxx:73 AliEMCALSpaceFrame.cxx:74 AliEMCALSpaceFrame.cxx:75 AliEMCALSpaceFrame.cxx:76 AliEMCALSpaceFrame.cxx:77 AliEMCALSpaceFrame.cxx:78 AliEMCALSpaceFrame.cxx:79 AliEMCALSpaceFrame.cxx:80 AliEMCALSpaceFrame.cxx:81 AliEMCALSpaceFrame.cxx:82 AliEMCALSpaceFrame.cxx:83 AliEMCALSpaceFrame.cxx:84 AliEMCALSpaceFrame.cxx:85 AliEMCALSpaceFrame.cxx:86 AliEMCALSpaceFrame.cxx:87 AliEMCALSpaceFrame.cxx:88 AliEMCALSpaceFrame.cxx:89 AliEMCALSpaceFrame.cxx:90 AliEMCALSpaceFrame.cxx:91 AliEMCALSpaceFrame.cxx:92 AliEMCALSpaceFrame.cxx:93 AliEMCALSpaceFrame.cxx:94 AliEMCALSpaceFrame.cxx:95 AliEMCALSpaceFrame.cxx:96 AliEMCALSpaceFrame.cxx:97 AliEMCALSpaceFrame.cxx:98 AliEMCALSpaceFrame.cxx:99 AliEMCALSpaceFrame.cxx:100 AliEMCALSpaceFrame.cxx:101 AliEMCALSpaceFrame.cxx:102 AliEMCALSpaceFrame.cxx:103 AliEMCALSpaceFrame.cxx:104 AliEMCALSpaceFrame.cxx:105 AliEMCALSpaceFrame.cxx:106 AliEMCALSpaceFrame.cxx:107 AliEMCALSpaceFrame.cxx:108 AliEMCALSpaceFrame.cxx:109 AliEMCALSpaceFrame.cxx:110 AliEMCALSpaceFrame.cxx:111 AliEMCALSpaceFrame.cxx:112 AliEMCALSpaceFrame.cxx:113 AliEMCALSpaceFrame.cxx:114 AliEMCALSpaceFrame.cxx:115 AliEMCALSpaceFrame.cxx:116 AliEMCALSpaceFrame.cxx:117 AliEMCALSpaceFrame.cxx:118 AliEMCALSpaceFrame.cxx:119 AliEMCALSpaceFrame.cxx:120 AliEMCALSpaceFrame.cxx:121 AliEMCALSpaceFrame.cxx:122 AliEMCALSpaceFrame.cxx:123 AliEMCALSpaceFrame.cxx:124 AliEMCALSpaceFrame.cxx:125 AliEMCALSpaceFrame.cxx:126 AliEMCALSpaceFrame.cxx:127 AliEMCALSpaceFrame.cxx:128 AliEMCALSpaceFrame.cxx:129 AliEMCALSpaceFrame.cxx:130 AliEMCALSpaceFrame.cxx:131 AliEMCALSpaceFrame.cxx:132 AliEMCALSpaceFrame.cxx:133 AliEMCALSpaceFrame.cxx:134 AliEMCALSpaceFrame.cxx:135 AliEMCALSpaceFrame.cxx:136 AliEMCALSpaceFrame.cxx:137 AliEMCALSpaceFrame.cxx:138 AliEMCALSpaceFrame.cxx:139 AliEMCALSpaceFrame.cxx:140 AliEMCALSpaceFrame.cxx:141 AliEMCALSpaceFrame.cxx:142 AliEMCALSpaceFrame.cxx:143 AliEMCALSpaceFrame.cxx:144 AliEMCALSpaceFrame.cxx:145 AliEMCALSpaceFrame.cxx:146 AliEMCALSpaceFrame.cxx:147 AliEMCALSpaceFrame.cxx:148 AliEMCALSpaceFrame.cxx:149 AliEMCALSpaceFrame.cxx:150 AliEMCALSpaceFrame.cxx:151 AliEMCALSpaceFrame.cxx:152 AliEMCALSpaceFrame.cxx:153 AliEMCALSpaceFrame.cxx:154 AliEMCALSpaceFrame.cxx:155 AliEMCALSpaceFrame.cxx:156 AliEMCALSpaceFrame.cxx:157 AliEMCALSpaceFrame.cxx:158 AliEMCALSpaceFrame.cxx:159 AliEMCALSpaceFrame.cxx:160 AliEMCALSpaceFrame.cxx:161 AliEMCALSpaceFrame.cxx:162 AliEMCALSpaceFrame.cxx:163 AliEMCALSpaceFrame.cxx:164 AliEMCALSpaceFrame.cxx:165 AliEMCALSpaceFrame.cxx:166 AliEMCALSpaceFrame.cxx:167 AliEMCALSpaceFrame.cxx:168 AliEMCALSpaceFrame.cxx:169 AliEMCALSpaceFrame.cxx:170 AliEMCALSpaceFrame.cxx:171 AliEMCALSpaceFrame.cxx:172 AliEMCALSpaceFrame.cxx:173 AliEMCALSpaceFrame.cxx:174 AliEMCALSpaceFrame.cxx:175 AliEMCALSpaceFrame.cxx:176 AliEMCALSpaceFrame.cxx:177 AliEMCALSpaceFrame.cxx:178 AliEMCALSpaceFrame.cxx:179 AliEMCALSpaceFrame.cxx:180 AliEMCALSpaceFrame.cxx:181 AliEMCALSpaceFrame.cxx:182 AliEMCALSpaceFrame.cxx:183 AliEMCALSpaceFrame.cxx:184 AliEMCALSpaceFrame.cxx:185 AliEMCALSpaceFrame.cxx:186 AliEMCALSpaceFrame.cxx:187 AliEMCALSpaceFrame.cxx:188 AliEMCALSpaceFrame.cxx:189 AliEMCALSpaceFrame.cxx:190 AliEMCALSpaceFrame.cxx:191 AliEMCALSpaceFrame.cxx:192 AliEMCALSpaceFrame.cxx:193 AliEMCALSpaceFrame.cxx:194 AliEMCALSpaceFrame.cxx:195 AliEMCALSpaceFrame.cxx:196 AliEMCALSpaceFrame.cxx:197 AliEMCALSpaceFrame.cxx:198 AliEMCALSpaceFrame.cxx:199 AliEMCALSpaceFrame.cxx:200 AliEMCALSpaceFrame.cxx:201 AliEMCALSpaceFrame.cxx:202 AliEMCALSpaceFrame.cxx:203 AliEMCALSpaceFrame.cxx:204 AliEMCALSpaceFrame.cxx:205 AliEMCALSpaceFrame.cxx:206 AliEMCALSpaceFrame.cxx:207 AliEMCALSpaceFrame.cxx:208 AliEMCALSpaceFrame.cxx:209 AliEMCALSpaceFrame.cxx:210 AliEMCALSpaceFrame.cxx:211 AliEMCALSpaceFrame.cxx:212 AliEMCALSpaceFrame.cxx:213 AliEMCALSpaceFrame.cxx:214 AliEMCALSpaceFrame.cxx:215 AliEMCALSpaceFrame.cxx:216 AliEMCALSpaceFrame.cxx:217 AliEMCALSpaceFrame.cxx:218 AliEMCALSpaceFrame.cxx:219 AliEMCALSpaceFrame.cxx:220 AliEMCALSpaceFrame.cxx:221 AliEMCALSpaceFrame.cxx:222 AliEMCALSpaceFrame.cxx:223 AliEMCALSpaceFrame.cxx:224 AliEMCALSpaceFrame.cxx:225 AliEMCALSpaceFrame.cxx:226 AliEMCALSpaceFrame.cxx:227 AliEMCALSpaceFrame.cxx:228 AliEMCALSpaceFrame.cxx:229 AliEMCALSpaceFrame.cxx:230 AliEMCALSpaceFrame.cxx:231 AliEMCALSpaceFrame.cxx:232 AliEMCALSpaceFrame.cxx:233 AliEMCALSpaceFrame.cxx:234 AliEMCALSpaceFrame.cxx:235 AliEMCALSpaceFrame.cxx:236 AliEMCALSpaceFrame.cxx:237 AliEMCALSpaceFrame.cxx:238 AliEMCALSpaceFrame.cxx:239 AliEMCALSpaceFrame.cxx:240 AliEMCALSpaceFrame.cxx:241 AliEMCALSpaceFrame.cxx:242 AliEMCALSpaceFrame.cxx:243 AliEMCALSpaceFrame.cxx:244 AliEMCALSpaceFrame.cxx:245 AliEMCALSpaceFrame.cxx:246 AliEMCALSpaceFrame.cxx:247 AliEMCALSpaceFrame.cxx:248 AliEMCALSpaceFrame.cxx:249 AliEMCALSpaceFrame.cxx:250 AliEMCALSpaceFrame.cxx:251 AliEMCALSpaceFrame.cxx:252 AliEMCALSpaceFrame.cxx:253 AliEMCALSpaceFrame.cxx:254 AliEMCALSpaceFrame.cxx:255 AliEMCALSpaceFrame.cxx:256 AliEMCALSpaceFrame.cxx:257 AliEMCALSpaceFrame.cxx:258 AliEMCALSpaceFrame.cxx:259 AliEMCALSpaceFrame.cxx:260 AliEMCALSpaceFrame.cxx:261 AliEMCALSpaceFrame.cxx:262 AliEMCALSpaceFrame.cxx:263 AliEMCALSpaceFrame.cxx:264 AliEMCALSpaceFrame.cxx:265 AliEMCALSpaceFrame.cxx:266 AliEMCALSpaceFrame.cxx:267 AliEMCALSpaceFrame.cxx:268 AliEMCALSpaceFrame.cxx:269 AliEMCALSpaceFrame.cxx:270 AliEMCALSpaceFrame.cxx:271 AliEMCALSpaceFrame.cxx:272 AliEMCALSpaceFrame.cxx:273 AliEMCALSpaceFrame.cxx:274 AliEMCALSpaceFrame.cxx:275 AliEMCALSpaceFrame.cxx:276 AliEMCALSpaceFrame.cxx:277 AliEMCALSpaceFrame.cxx:278 AliEMCALSpaceFrame.cxx:279 AliEMCALSpaceFrame.cxx:280 AliEMCALSpaceFrame.cxx:281 AliEMCALSpaceFrame.cxx:282 AliEMCALSpaceFrame.cxx:283 AliEMCALSpaceFrame.cxx:284 AliEMCALSpaceFrame.cxx:285