]>
Commit | Line | Data |
---|---|---|
ed08a153 | 1 | void 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 | //______________________________________________________________________________ | |
68 | void 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 |