]> git.uio.no Git - u/mrichter/AliRoot.git/blob - RICH/Geom.C
Implementation of reconstructors (T.Kuhr)
[u/mrichter/AliRoot.git] / RICH / Geom.C
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   
12   TGeoMedium *pVacuum  =new TGeoMedium("Vacuum",  1,new TGeoMaterial("Vacuum",  a=0,z=0,den=0));
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
17   TGeoVolume *pMother=gGeoManager->MakeBox("MOTHER",pVacuum,dx=1000,dy=1000,dz=3000);
18   
19   
20   TGeoVolume *pRadiator =gGeoManager->MakeBox("Radiator" ,pC6F14,   dx=413*mm/2,dy=1330*mm/2,dz=24*mm/2);  
21   TGeoVolume *pRadBack  =gGeoManager->MakeBox("RadBack"  ,pNeoceram,dx=413*mm/2,dy=1330*mm/2,dz= 4*mm/2);pRadBack->SetLineColor(kRed);
22   TGeoVolume *pRadLong  =gGeoManager->MakeBox("RadLong"  ,pNeoceram,dx=  5*mm/2,dy=1330*mm/2,dz=15*mm/2);pRadLong->SetLineColor(kGreen);
23   TGeoVolume *pRadShort =gGeoManager->MakeBox("RadShort" ,pNeoceram,dx=403*mm/2,dy=   5*mm/2,dz=15*mm/2);pRadShort->SetLineColor(kGreen);
24   TGeoVolume *pRadWin   =gGeoManager->MakeBox("RadWin"   ,pSiO2,    dx=413*mm/2,dy=1330*mm/2,dz= 5*mm/2);pRadWin ->SetLineColor(kBlue);
25   TGeoVolume *pRadSpacer=gGeoManager->MakeTube("RadSpacer",pSiO2,   rmin=0,rmax=10*mm/2,dz= 15*mm/2);pRadSpacer ->SetLineColor(kYellow);
26   pRadiator->AddNode(pRadBack,copy=1,new TGeoTranslation(0,0,-10.0*mm));
27   pRadiator->AddNode(pRadWin ,copy=1,new TGeoTranslation(0,0,  9.5*mm));
28   pRadiator->AddNode(pRadLong,copy=1,new TGeoTranslation(-403*mm/2-2.5*mm,0,0));
29   pRadiator->AddNode(pRadLong,copy=2,new TGeoTranslation( 403*mm/2+2.5*mm,0,0));
30   pRadiator->AddNode(pRadShort,copy=1,new TGeoTranslation(0,-1330*mm/2+5*mm/2     ,0));
31   pRadiator->AddNode(pRadShort,copy=2,new TGeoTranslation(0,-1330*mm/2+5*mm+5*mm/2,0));
32   pRadiator->AddNode(pRadShort,copy=3,new TGeoTranslation(0, 1330*mm/2-5*mm-5*mm/2,0));
33   pRadiator->AddNode(pRadShort,copy=4,new TGeoTranslation(0, 1330*mm/2-5*mm/2     ,0));
34   
35   for(int i=-1;i<=1;i++)
36     for(int j=0;j<10;j++)
37       pRadiator->AddNode(pRadSpacer,copy=j+1,new TGeoTranslation(i*105*mm,-1330*mm/2+116*mm+j*122*mm,0));
38   
39   
40   pMother->AddNode(pRadiator,copy=1,new TGeoTranslation(-60*cm,0,-12*mm));//out sourface of quartz window at z=0
41   pMother->AddNode(pRadiator,copy=2,new TGeoTranslation(  0   ,0,-12*mm));
42   pMother->AddNode(pRadiator,copy=3,new TGeoTranslation( 60*cm,0,-12*mm));
43   gGeoManager->SetTopVolume(pMother);  
44   gGeoManager->CloseGeometry();   
45   pMother->Draw();
46   new TBrowser;
47 }//Geom()
48
49
50
51 //______________________________________________________________________________
52 void Dist()
53 {
54   if(gClassTable->GetID("TGeoManager")<0) gSystem->Load("libGeom");
55   new TGeoManager("GM", "kir test"); // you must have a manager
56   TGeoShape *shape = new TGeoSphere(10, 20); // Rmin, Rmax
57   Double_t point[3]={30,0,0};
58   Double_t dir[3]={1,0,0};
59   Bool_t isInside=shape->Contains(point);
60   Double_t dist;
61   if(isInside)
62     dist = shape->DistToOut(point,dir,3);
63   else
64     dist = shape->DistToIn(point,dir,3);
65   cout<< "dist="<<dist<<endl;
66   delete gGeoManager;
67 }
68