]> git.uio.no Git - u/mrichter/AliRoot.git/blame - RICH/Geom.C
Bug Correction
[u/mrichter/AliRoot.git] / RICH / Geom.C
CommitLineData
ed08a153 1void Geom()
2{
3 if(gClassTable->GetID("TGeoManager")<0) gSystem->Load("libGeom");
4
5 Int_t copy;
6 Double_t cm=1,m=100,mm=0.1;
7 Double_t dx,dy,dz,rmin,rmin1,rmin2,rmax,rmax1,rmax2;
8 Double_t a,z,den;
9
10 new TGeoManager("ALICE-RICH-GM", "ALICE-RICH geometry");
11
2d90a312 12 TGeoMedium *pAir =new TGeoMedium("Air" , 1,gGeoManager->GetMaterial("Air"));
13 TGeoMedium *pNeoceram =new TGeoMedium("Neoceram",1,new TGeoMaterial("Neoceram",a=0,z=0,den=0));
14 TGeoMedium *pSiO2 =new TGeoMedium("SiO2", 1,new TGeoMaterial("SiO2", a=0,z=0,den=0));
15 TGeoMedium *pC6F14 =new TGeoMedium("C6F14", 1,new TGeoMaterial("C6F14", a=0,z=0,den=0));
16 TGeoMedium *pCH4 =new TGeoMedium("CH4", 1,new TGeoMaterial("CH4", a=0,z=0,den=0));
ed08a153 17
2d90a312 18 TGeoVolume *pMother=gGeoManager->MakeBox("ALICE",pAir,dx=10*m/2,dy=10*m/2,dz=30*m/2);
ed08a153 19
2d90a312 20 TGeoVolume *pRICH =gGeoManager->MakeBox( "RICH" ,pCH4, dx=2*m/2,dy=2*m/2,dz=10*cm/2);
21 TGeoVolume *pRad =gGeoManager->MakeBox( "RICH radiator" ,pC6F14, dx=413*mm/2,dy=1330*mm/2,dz=24*mm/2);
22 TGeoVolume *pRadBack =gGeoManager->MakeBox( "RadBack" ,pNeoceram,dx=413*mm/2,dy=1330*mm/2,dz= 4*mm/2);pRadBack ->SetLineColor(kRed);
23 TGeoVolume *pRadLong =gGeoManager->MakeBox( "RadLong" ,pNeoceram,dx= 5*mm/2,dy=1330*mm/2,dz=15*mm/2);pRadLong ->SetLineColor(kGreen);
24 TGeoVolume *pRadShort =gGeoManager->MakeBox( "RadShort" ,pNeoceram,dx=403*mm/2,dy= 5*mm/2,dz=15*mm/2);pRadShort ->SetLineColor(kGreen);
25 TGeoVolume *pRadWin =gGeoManager->MakeBox( "RadWin" ,pSiO2, dx=413*mm/2,dy=1330*mm/2,dz= 5*mm/2);pRadWin ->SetLineColor(kBlue);
26 TGeoVolume *pRadSpacer=gGeoManager->MakeTube("RadSpacer",pSiO2, rmin=0,rmax=10*mm/2,dz= 15*mm/2); pRadSpacer ->SetLineColor(kYellow);
27//Nodes
28 pRad->AddNode(pRadBack,copy=1,new TGeoTranslation(0,0,-10.0*mm));
29 pRad->AddNode(pRadWin ,copy=1,new TGeoTranslation(0,0, 9.5*mm));
30 pRad->AddNode(pRadLong,copy=1,new TGeoTranslation(-403*mm/2-2.5*mm,0,0));
31 pRad->AddNode(pRadLong,copy=2,new TGeoTranslation( 403*mm/2+2.5*mm,0,0));
32 pRad->AddNode(pRadShort,copy=1,new TGeoTranslation(0,-1330*mm/2+5*mm/2 ,0));
33 pRad->AddNode(pRadShort,copy=2,new TGeoTranslation(0,-1330*mm/2+5*mm+5*mm/2,0));
34 pRad->AddNode(pRadShort,copy=3,new TGeoTranslation(0, 1330*mm/2-5*mm-5*mm/2,0));
35 pRad->AddNode(pRadShort,copy=4,new TGeoTranslation(0, 1330*mm/2-5*mm/2 ,0));
ed08a153 36
37 for(int i=-1;i<=1;i++)
38 for(int j=0;j<10;j++)
2d90a312 39 pRad->AddNode(pRadSpacer,copy=i+j+1,new TGeoTranslation(i*105*mm,-1330*mm/2+116*mm+j*122*mm,0));
40
41 AliRICHParam *pPar=new AliRICHParam;
42
43 for(copy=1;copy<=7;copy++)
44 pMother->AddNode(pRICH,copy,new TGeoTranslation(pPar->C(copy)->X(),pPar->C(copy)->Y(),pPar->C(copy)->Z()));
45
46 pRICH->AddNode(pRad,copy=1,new TGeoTranslation(-(413*mm+25*mm),0,-12*mm));//out sourface of quartz window at z=0
47 pRICH->AddNode(pRad,copy=2,new TGeoTranslation( 0 ,0,-12*mm));
48 pRICH->AddNode(pRad,copy=3,new TGeoTranslation( 413*mm+25*mm ,0,-12*mm));
ed08a153 49
2d90a312 50//Closing and drawing
51 gGeoManager->SetTopVolume(pMother);
52 gGeoManager->CloseGeometry();
53 gGeoManager->SetVisOption(0);
54 gGeoManager->GetMasterVolume()->Draw();
55//axises
56 Double_t X[6]={0,0,0,300,0,0}; Double_t Y[6]={0,0,0,0,300,0}; Double_t Z[6]={0,0,0,0,0,300};
57 TPolyLine3D *pXaxis=new TPolyLine3D(2,X);pXaxis->SetLineColor(kRed); pXaxis->Draw();
58 TPolyLine3D *pYaxis=new TPolyLine3D(2,Y);pYaxis->SetLineColor(kGreen); pYaxis->Draw();
59 TPolyLine3D *pZaxis=new TPolyLine3D(2,Z);pZaxis->SetLineColor(kBlue); pZaxis->Draw();
ed08a153 60
2d90a312 61 gPad->GetView()->RotateView(270,30);
ed08a153 62 new TBrowser;
63}//Geom()
64
65
66
67//______________________________________________________________________________
68void Dist()
69{
70 if(gClassTable->GetID("TGeoManager")<0) gSystem->Load("libGeom");
71 new TGeoManager("GM", "kir test"); // you must have a manager
72 TGeoShape *shape = new TGeoSphere(10, 20); // Rmin, Rmax
73 Double_t point[3]={30,0,0};
74 Double_t dir[3]={1,0,0};
75 Bool_t isInside=shape->Contains(point);
76 Double_t dist;
77 if(isInside)
78 dist = shape->DistToOut(point,dir,3);
79 else
80 dist = shape->DistToIn(point,dir,3);
81 cout<< "dist="<<dist<<endl;
82 delete gGeoManager;
83}
84