-TGeoManager *g=0;
-AliRICHParam *p=0;
+
Int_t copy; //volume copy number
Double_t dx,dy,dz,r1,r2;//tmp vars for volume dimentions
Double_t cm=1,m=100*cm,mm=0.1*cm,mkm=0.001*cm;//length units
+TGeoManager *g=0;
-void RichGeom()
+void RichGeom(Bool_t isOnlyChambers=kFALSE)
{
- p=new AliRICHParam;
- //gSystem->Load("libGeom.so");
- g=new TGeoManager("GEL","Aerogel test configuration");
+ g=new TGeoManager("RICH","Private RICH geometry");
Materials();
- TGeoVolume *pMother=g->MakeBox("Mother",g->GetMedium("Air"),dx=30*m/2,dy=30*m/2,dz=30*m/2); //arbitrary values
- g->SetTopVolume(g->GetVolume("Mother"));
+ gGeoManager->MakeBox("ALIC",gGeoManager->GetMedium("Air"),dx=30*m/2,dy=30*m/2,dz=30*m/2); //arbitrary values
+ gGeoManager->SetTopVolume(gGeoManager->GetVolume("ALIC"));
- Rich(pMother);
+ Rich(isOnlyChambers);
+
+// RusGel();
+
+// Vhmpid();
- Colors();
- g->CloseGeometry();
+ gGeoManager->CloseGeometry();
- g->SetVisOption(0); g->SetVisLevel(5);
+ gGeoManager->SetVisOption(0); gGeoManager->SetVisLevel(5);
- g->GetMasterVolume()->Draw();
+ gGeoManager->GetMasterVolume()->Draw();
Axis();
// gPad->GetView()->SetView(3,94,-70,0);
new TBrowser;
}
//__________________________________________________________________________________________________
-void Aerogel()
-{
-
- TGeoVolume *pGel =g->MakeBox("RGEL" ,g->GetMedium("Air"),dx=10*cm/2,dy= 10*cm/2 ,dz=10*cm/2);//10x10x10 cm aerogel cubic
- for(int i=1;i<=7;i++)//put 7 cubics
- g->GetVolume("Mother")->AddNode(pGel,copy=i,new TGeoCombiTrans(p->C(i)->Center().X(), p->C(i)->Center().Y(), p->C(i)->Center().Z(),
- new TGeoRotation(Form("GelRot%i",i),p->C(i)->ThetaXd(),p->C(i)->PhiXd(),
- p->C(i)->ThetaYd(),p->C(i)->PhiYd(),
- p->C(i)->ThetaZd(),p->C(i)->PhiZd())));
-
-}
-//__________________________________________________________________________________________________
void Materials()
{
-// Defines all the materials and tracking media
+//Media for RICH
Double_t a=0,z=0,den=0,radlen=0,intlen=0;//tmp vars for material parameters
- new TGeoMaterial("Air" ,a=26.98 ,z=13,den=0.4224 ); new TGeoMedium("Air" ,1,g->GetMaterial("Air"));
- new TGeoMaterial("CH4" ,a=26.98 ,z=13,den=0.4224 ); pCH4 =new TGeoMedium("CH4" ,2,g->GetMaterial("CH4"));
- new TGeoMaterial("CsI" ,a=26.98 ,z=13,den=2.7 ,radlen=24.01*cm,intlen=70.6*cm); pCsI =new TGeoMedium("CsI" ,3,g->GetMaterial("CsI"));
- new TGeoMaterial("Al" ,a=26.98 ,z=13,den=2.7 ,radlen=24.01*cm,intlen=70.6*cm); pAl =new TGeoMedium("Al" ,4,g->GetMaterial("Al"));
- new TGeoMaterial("W" ,a=183.84,z=27,den=19.3,radlen= 9.59*cm,intlen=0.35*cm); pW =new TGeoMedium("W" ,5,g->GetMaterial("W"));
- new TGeoMaterial("Cu" ,a=55.845,z=26,den=7.87,radlen=13.84*cm,intlen=82.8*cm); pCu =new TGeoMedium("Cu" ,6,g->GetMaterial("Cu"));
- new TGeoMaterial("Rohacell" ,a=12.01 ,z=6 ,den=0.1 ,radlen=18.8,intlen=0); pRoha =new TGeoMedium("Rohacell" ,7,g->GetMaterial("Rohacell"));
- new TGeoMaterial("SiO2" ,a=0 ,z=0 ,den=0); pSiO2 =new TGeoMedium("SiO2" ,8,g->GetMaterial("SiO2"));
- new TGeoMaterial("C6F14" ,a=0 ,z=0 ,den=0); pC6F14=new TGeoMedium("C6F14" ,9,g->GetMaterial("C6F14"));
-//Medium for Sr90 source
- new TGeoMaterial("Perpex" ,a=55.845,z=26,den=7.87,radlen=13.84*cm,intlen=82.8*cm); pPerpex=new TGeoMedium("Perpex" ,10,g->GetMaterial("Perpex"));
- new TGeoMaterial("Steel" ,a=55.845,z=26,den=7.87,radlen=13.84*cm,intlen=82.8*cm); pSteel =new TGeoMedium("Steel" ,11,g->GetMaterial("Steel"));
- new TGeoMaterial("Mylar" ,a=55.845,z=26,den=7.87,radlen=13.84*cm,intlen=82.8*cm); pMylar =new TGeoMedium("Mylar" ,12,g->GetMaterial("Mylar"));
- new TGeoMaterial("Sr90" ,a=87.62 ,z=38,den=7.87,radlen=13.84*cm,intlen=82.8*cm); pSr =new TGeoMedium("Sr90" ,13,g->GetMaterial("Sr90"));
+ new TGeoMaterial("Air" ,a=26.98 ,z=13,den=0.4224 ); new TGeoMedium("Air" ,1,gGeoManager->GetMaterial("Air"));
+ new TGeoMaterial("RICH_CH4" ,a=26.98 ,z=13,den=0.4224 ); new TGeoMedium("RICH_CH4" ,2,gGeoManager->GetMaterial("RICH_CH4"));
+ new TGeoMaterial("RICH_CsI" ,a=26.98 ,z=13,den=2.7 ,radlen=24.01*cm,intlen=70.6*cm); new TGeoMedium("RICH_CsI" ,3,gGeoManager->GetMaterial("RICH_CsI"));
+ new TGeoMaterial("RICH_Al" ,a=26.98 ,z=13,den=2.7 ,radlen=24.01*cm,intlen=70.6*cm); new TGeoMedium("RICH_Al" ,4,gGeoManager->GetMaterial("RICH_Al"));
+ new TGeoMaterial("RICH_W" ,a=183.84,z=27,den=19.3,radlen= 9.59*cm,intlen=0.35*cm); new TGeoMedium("RICH_W" ,5,gGeoManager->GetMaterial("RICH_W"));
+ new TGeoMaterial("RICH_Cu" ,a=55.845,z=26,den=7.87,radlen=13.84*cm,intlen=82.8*cm); new TGeoMedium("RICH_Cu" ,6,gGeoManager->GetMaterial("RICH_Cu"));
+ new TGeoMaterial("RICH_Rohacell" ,a=12.01 ,z=6 ,den=0.1 ,radlen=18.8,intlen=0); new TGeoMedium("RICH_Rohacell",7,gGeoManager->GetMaterial("RICH_Rohacell"));
+ new TGeoMaterial("RICH_SiO2" ,a=0 ,z=0 ,den=0); new TGeoMedium("RICH_SiO2" ,8,gGeoManager->GetMaterial("RICH_SiO2"));
+ new TGeoMaterial("RICH_C6F14" ,a=0 ,z=0 ,den=0); new TGeoMedium("RICH_C6F14" ,9,gGeoManager->GetMaterial("RICH_C6F14"));
+//Media for Sr90 source
+ new TGeoMaterial("RICH_Perpex" ,a=55.845,z=26,den=7.87,radlen=13.84*cm,intlen=82.8*cm); new TGeoMedium("RICH_Perpex" ,10,gGeoManager->GetMaterial("RICH_Perpex"));
+ new TGeoMaterial("RICH_Steel" ,a=55.845,z=26,den=7.87,radlen=13.84*cm,intlen=82.8*cm); new TGeoMedium("RICH_Steel" ,11,gGeoManager->GetMaterial("RICH_Steel"));
+ new TGeoMaterial("RICH_Mylar" ,a=55.845,z=26,den=7.87,radlen=13.84*cm,intlen=82.8*cm); new TGeoMedium("RICH_Mylar" ,12,gGeoManager->GetMaterial("RICH_Mylar"));
+ new TGeoMaterial("RICH_Sr90" ,a=87.62 ,z=38,den=7.87,radlen=13.84*cm,intlen=82.8*cm); new TGeoMedium("RICH_Sr90" ,13,gGeoManager->GetMaterial("RICH_Sr90"));
+//Media for VHMPID Gas option
+ new TGeoMaterial("RICH_CF4" ,a=0 ,z=0 ,den=0); new TGeoMedium("RICH_CF4" ,14,gGeoManager->GetMaterial("RICH_CF4"));
+ new TGeoMaterial("RICH_C4F10" ,a=0 ,z=0 ,den=0); new TGeoMedium("RICH_C4F10" ,15,gGeoManager->GetMaterial("RICH_C4F10"));
+ new TGeoMaterial("RICH_Ag" ,a=0 ,z=0 ,den=0); new TGeoMedium("RICH_Ag" ,16,gGeoManager->GetMaterial("RICH_Ag"));
+//Media for VHMPID aerogel option
+ new TGeoMaterial("RICH_Gel24" ,a=0 ,z=0 ,den=0); new TGeoMedium("RICH_Gel24" ,17,gGeoManager->GetMaterial("RICH_Gel24"));
+ new TGeoMaterial("RICH_Gel26" ,a=0 ,z=0 ,den=0); new TGeoMedium("RICH_Gel26" ,18,gGeoManager->GetMaterial("RICH_Gel26"));
+ new TGeoMaterial("RICH_Gel28" ,a=0 ,z=0 ,den=0); new TGeoMedium("RICH_Gel28" ,19,gGeoManager->GetMaterial("RICH_Gel28"));
+ new TGeoMaterial("RICH_Gel30" ,a=0 ,z=0 ,den=0); new TGeoMedium("RICH_Gel30" ,20,gGeoManager->GetMaterial("RICH_Gel30"));
+ new TGeoMaterial("RICH_Si" ,a=0 ,z=0 ,den=0); new TGeoMedium("RICH_Si" ,21,gGeoManager->GetMaterial("RICH_Si"));
+ new TGeoMaterial("RICH_Apd" ,a=0 ,z=0 ,den=0); new TGeoMedium("RICH_Apd" ,22,gGeoManager->GetMaterial("RICH_Apd"));
}//Materials()
//__________________________________________________________________________________________________
-void Rich(TGeoVolume *pTop)
-{
-//Rich
- TGeoVolume *pRich=g->MakeBox( "Rich" ,g->GetMedium("CH4"),dx=(6*mm+1681*mm+6*mm)/2, //main RICH volume
- dy=(6*mm+1466*mm+6*mm)/2,
- dz=(80*mm+40*mm)*2/2); //x,y taken from 2033P1 z from p84 TDR
- for(int i=1;i<=p->Nchambers();i++)//put 7 chambers
- pTop->AddNode(pRich,copy=i,new TGeoCombiTrans(p->C(i)->Center().X(), p->C(i)->Center().Y(), p->C(i)->Center().Z(),
- new TGeoRotation(Form("RichRot%i",i),p->C(i)->ThetaXd(),p->C(i)->PhiXd(),
- p->C(i)->ThetaYd(),p->C(i)->PhiYd(),
- p->C(i)->ThetaZd(),p->C(i)->PhiZd()))); //Rich to Mother
-
- PadPanelFrame(pRich); //photocathode
- Gap(pRich); //anod wires
- Frame3(pRich); //cathode wires
- Frame4(pRich); //collection wires
- Sandbox(pRich);
-}//Rich()
-//__________________________________________________________________________________________________
-void PadPanelFrame(TGeoVolume *pTop)
+void Rich(Bool_t isOnlyChambers)
{
+//Rich chamber
+ TGeoVolume *pRich=gGeoManager->MakeBox("RICH",gGeoManager->GetMedium("Air"),dx=(6*mm+1681*mm+6*mm)/2, //main RICH volume
+ dy=(6*mm+1466*mm+6*mm)/2,
+ dz=(80*mm+40*mm)*2/2); //x,y taken from 2033P1 z from p84 TDR
+ const Double_t kAngHor=19.5; // horizontal angle between chambers 19.5 grad
+ const Double_t kAngVer=20; // vertical angle between chambers 20 grad
+ const Double_t kAngCom=30; // common RICH rotation with respect to x axis 30 grad
+ const Double_t trans[3]={490,0,0}; //center of the chamber is on window-gap surface
+ for(Int_t iCh=1;iCh<=7;iCh++){//place 7 chambers
+ TGeoHMatrix *pMatrix=new TGeoHMatrix;
+ pMatrix->RotateY(90); //rotate around y since initial position is in XY plane -> now in YZ plane
+ pMatrix->SetTranslation(trans); //now plane in YZ is shifted along x
+ switch(iCh){
+ case 1: pMatrix->RotateY(kAngHor); pMatrix->RotateZ(-kAngVer); break; //right and down
+ case 2: pMatrix->RotateZ(-kAngVer); break; //down
+ case 3: pMatrix->RotateY(kAngHor); break; //right
+ case 4: break; //no rotation
+ case 5: pMatrix->RotateY(-kAngHor); break; //left
+ case 6: pMatrix->RotateZ(kAngVer); break; //up
+ case 7: pMatrix->RotateY(-kAngHor); pMatrix->RotateZ(kAngVer); break; //left and up
+ }
+ pMatrix->RotateZ(kAngCom); //apply common rotation in XY plane
+ gGeoManager->GetVolume("ALIC")->AddNode(pRich,iCh,pMatrix);
+ }
+ if(isOnlyChambers) return; //do not construct the detailed geometry
//Pad Panel frame
- TGeoVolume *pPpf =g->MakeBox("PPF" ,g->GetMedium("Al") ,dx=648*mm/2,dy= 411*mm/2 ,dz=40 *mm/2);//PPF 2001P2 inner size of the slab by 1mm more
- TGeoVolume *pPpfLarge=g->MakeBox("PPFlarge" ,g->GetMedium("Air") ,dx=181*mm/2,dy=89.25*mm/2 ,dz=38.3*mm/2);//large whole
- TGeoVolume *pPpfSmall=g->MakeBox("PPFsmall" ,g->GetMedium("Air") ,dx=114*mm/2,dy=89.25*mm/2 ,dz=38.3*mm/2);//small whole
- TGeoVolume *pPc =g->MakeBox("PC" ,g->GetMedium("CsI") ,dx=644*mm/2,dy= 407*mm/2 ,dz= 1.7*mm/2);//by 0.2 mm more then actual size (PCB 2006P1)
-
- pTop->AddNode(pPpf,copy=1,new TGeoTranslation(-335*mm,-433*mm,8*cm+20*mm));//F1 2040P1 z p.84 TDR
- pTop->AddNode(pPpf,copy=2,new TGeoTranslation(+335*mm,-433*mm,8*cm+20*mm));
- pTop->AddNode(pPpf,copy=3,new TGeoTranslation(-335*mm, 0*mm,8*cm+20*mm));
- pTop->AddNode(pPpf,copy=4,new TGeoTranslation(+335*mm, 0*mm,8*cm+20*mm));
- pTop->AddNode(pPpf,copy=5,new TGeoTranslation(-335*mm,+433*mm,8*cm+20*mm));
- pTop->AddNode(pPpf,copy=6,new TGeoTranslation(+335*mm,+433*mm,8*cm+20*mm));
+ TGeoVolume *pPpf =gGeoManager->MakeBox("Rppf" ,gGeoManager->GetMedium("RICH_Al") ,dx=648*mm/2,dy= 411*mm/2 ,dz=40 *mm/2);//PPF 2001P2 inner size of the slab by 1mm more
+ TGeoVolume *pPpfLarge=gGeoManager->MakeBox("Rppf1" ,gGeoManager->GetMedium("Air") ,dx=181*mm/2,dy=89.25*mm/2 ,dz=38.3*mm/2); //large whole
+ TGeoVolume *pPpfSmall=gGeoManager->MakeBox("Rppf2" ,gGeoManager->GetMedium("Air") ,dx=114*mm/2,dy=89.25*mm/2 ,dz=38.3*mm/2);//small whole
+ TGeoVolume *pPc =gGeoManager->MakeBox("Rpc" ,gGeoManager->GetMedium("RICH_CsI") ,dx=644*mm/2,dy= 407*mm/2 ,dz= 1.7*mm/2);//by 0.2 mm more then actual size (PCB 2006P1)
+
+ pRich->AddNode(pPpf,copy=1,new TGeoTranslation(-335*mm,-433*mm,8*cm+20*mm));//F1 2040P1 z p.84 TDR
+ pRich->AddNode(pPpf,copy=2,new TGeoTranslation(+335*mm,-433*mm,8*cm+20*mm));
+ pRich->AddNode(pPpf,copy=3,new TGeoTranslation(-335*mm, 0*mm,8*cm+20*mm));
+ pRich->AddNode(pPpf,copy=4,new TGeoTranslation(+335*mm, 0*mm,8*cm+20*mm));
+ pRich->AddNode(pPpf,copy=5,new TGeoTranslation(-335*mm,+433*mm,8*cm+20*mm));
+ pRich->AddNode(pPpf,copy=6,new TGeoTranslation(+335*mm,+433*mm,8*cm+20*mm));
pPpf->AddNode( pPc ,copy=1,new TGeoTranslation( 0*mm, 0*mm,-19.15*mm));//PPF 2001P2
pPpf->AddNode(pPpfLarge,copy=1,new TGeoTranslation(-224.5*mm,-151.875*mm, 0.85*mm));
pPpf->AddNode(pPpfLarge,copy=2,new TGeoTranslation(-224.5*mm,- 50.625*mm, 0.85*mm));
pPpf->AddNode(pPpfLarge,copy=6,new TGeoTranslation(+224.5*mm,- 50.625*mm, 0.85*mm));
pPpf->AddNode(pPpfLarge,copy=7,new TGeoTranslation(+224.5*mm,+ 50.625*mm, 0.85*mm));
pPpf->AddNode(pPpfLarge,copy=8,new TGeoTranslation(+224.5*mm,+151.875*mm, 0.85*mm));
-}//PadPanelFrame()
-//__________________________________________________________________________________________________
-void Gap(TGeoVolume *pTop)
-{
-//Gap - anod wires
- TGeoVolume *pGap =g->MakeBox ("Gap" ,g->GetMedium("CH4") ,dx=648*mm/2,dy= 411*mm/2 ,dz=4.45*mm/2);//xy as PPF 2001P2 z WP 2099P1
- TGeoVolume *pAnod=g->MakeTube("Anod" ,g->GetMedium("W") ,r1= 0*mm ,r2= 20*mkm/2 ,dz=648*mm/2); //WP 2099P1 z = gap x PPF 2001P2
- TGeoRotation *pAnodRot=new TGeoRotation("AnodRot",90,90,0);
-
- pTop->AddNode(pGap,copy=1,new TGeoTranslation(-335*mm,-433*mm,8*cm-2.225*mm)); //F1 2040P1 z WP 2099P1
- pTop->AddNode(pGap,copy=2,new TGeoTranslation(+335*mm,-433*mm,8*cm-2.225*mm));
- pTop->AddNode(pGap,copy=3,new TGeoTranslation(-335*mm, 0*mm,8*cm-2.225*mm));
- pTop->AddNode(pGap,copy=4,new TGeoTranslation(+335*mm, 0*mm,8*cm-2.225*mm));
- pTop->AddNode(pGap,copy=5,new TGeoTranslation(-335*mm,+433*mm,8*cm-2.225*mm));
- pTop->AddNode(pGap,copy=6,new TGeoTranslation(+335*mm,+433*mm,8*cm-2.225*mm));
+//gap - anod wires
+ TGeoVolume *pGap =gGeoManager->MakeBox ("Rgap" ,gGeoManager->GetMedium("RICH_CH4") ,dx=648*mm/2,dy= 411*mm/2 ,dz=4.45*mm/2);//xy as PPF 2001P2 z WP 2099P1
+ TGeoVolume *pAnod=gGeoManager->MakeTube("Rano" ,gGeoManager->GetMedium("RICH_W") ,r1= 0*mm ,r2= 20*mkm/2 ,dz=648*mm/2); //WP 2099P1 z = gap x PPF 2001P2
+ TGeoRotation *pAnodRot=new TGeoRotation("RanW",90,90,0);
+
+ pRich->AddNode(pGap,copy=1,new TGeoTranslation(-335*mm,-433*mm,8*cm-2.225*mm)); //F1 2040P1 z WP 2099P1
+ pRich->AddNode(pGap,copy=2,new TGeoTranslation(+335*mm,-433*mm,8*cm-2.225*mm));
+ pRich->AddNode(pGap,copy=3,new TGeoTranslation(-335*mm, 0*mm,8*cm-2.225*mm));
+ pRich->AddNode(pGap,copy=4,new TGeoTranslation(+335*mm, 0*mm,8*cm-2.225*mm));
+ pRich->AddNode(pGap,copy=5,new TGeoTranslation(-335*mm,+433*mm,8*cm-2.225*mm));
+ pRich->AddNode(pGap,copy=6,new TGeoTranslation(+335*mm,+433*mm,8*cm-2.225*mm));
for(int i=1;i<=96;i++)
pGap->AddNode(pAnod,copy=i,new TGeoCombiTrans( 0*mm, -411/2*mm+i*4*mm, 0.185*mm,pAnodRot)); //WP 2099P1
-}//Gap()
-//__________________________________________________________________________________________________
-void Frame3(TGeoVolume *pTop)
-{//Frame 3- cathode wires
- TGeoVolume *pCath=g->MakeTube("Cath" ,g->GetMedium("Cu") ,r1=0 ,r2=100*mkm/2,dz=1323*mm/2);//r WP 2099P1 z F3 2041P1
+//frame 3- cathode wires
+ TGeoVolume *pCath=gGeoManager->MakeTube("RcaW" ,gGeoManager->GetMedium("Cu") ,r1=0 ,r2=100*mkm/2,dz=1323*mm/2);//r WP 2099P1 z F3 2041P1
TGeoRotation *pCathRot=new TGeoRotation("CathRot",90,90,0);
for(int i=1;i<=618;i++)
- pTop->AddNode(pCath,copy=i,new TGeoCombiTrans( 0*mm, -649.5*mm+i*2.1*mm, 75*mm,pCathRot)); //WP 2099P1
-}//Frame3()
-//__________________________________________________________________________________________________
-void Frame4(TGeoVolume *pTop)
-{
+ pRich->AddNode(pCath,copy=i,new TGeoCombiTrans( 0*mm, -649.5*mm+i*2.1*mm, 75*mm,pCathRot)); //WP 2099P1
//Frame 4- collection wires
- TGeoVolume *pF4 =g->MakeBox( "F4" ,g->GetMedium("CH4") ,dx=1407*mm/2 ,dy=1366*mm/2 ,dz= 15*mm/2);//F4 2043P1
- TGeoVolume *pF4al=g->MakeBox( "F4al" ,g->GetMedium("Al") ,dx=1407*mm/2 ,dy=1366*mm/2 ,dz= 10*mm/2);
- TGeoVolume *pF4in=g->MakeBox( "F4in" ,g->GetMedium("CH4") ,dx=1323*mm/2 ,dy=1296*mm/2 ,dz= 10*mm/2);
- TGeoVolume *pColl=g->MakeTube("Coll" ,g->GetMedium("Cu") ,r1= 0*mm ,r2=100*mkm/2 ,dz=1323*mm/2);
- TGeoRotation *pCollRot=new TGeoRotation("CollRot",90,90,0);
+ TGeoVolume *pF4 =gGeoManager->MakeBox( "Rfr4" ,gGeoManager->GetMedium("RICH_CH4") ,dx=1407*mm/2 ,dy=1366*mm/2 ,dz= 15*mm/2);//F4 2043P1
+ TGeoVolume *pF4al=gGeoManager->MakeBox( "Rfr4al" ,gGeoManager->GetMedium("RICH_Al") ,dx=1407*mm/2 ,dy=1366*mm/2 ,dz= 10*mm/2);
+ TGeoVolume *pF4in=gGeoManager->MakeBox( "Rfr4in" ,gGeoManager->GetMedium("RICH_CH4") ,dx=1323*mm/2 ,dy=1296*mm/2 ,dz= 10*mm/2);
+ TGeoVolume *pColl=gGeoManager->MakeTube("RcoW" ,gGeoManager->GetMedium("RICH_Cu") ,r1= 0*mm ,r2=100*mkm/2 ,dz=1323*mm/2);
+ TGeoRotation *pCollRot=new TGeoRotation("RcoRot",90,90,0);
- pTop->AddNode(pF4 ,copy=1,new TGeoTranslation( 0*mm,0*mm, 9*mm)); //F4 to Rich p.84 TDR
+ pRich->AddNode(pF4 ,copy=1,new TGeoTranslation( 0*mm,0*mm, 9*mm)); //F4 to Rich p.84 TDR
pF4 ->AddNode(pF4al ,copy=1,new TGeoTranslation( 0*mm,0*mm, 2.5*mm)); //F4 al to F4 2043P1
pF4al->AddNode(pF4in ,copy=1,new TGeoTranslation( 0*mm,0*mm, 0*mm)); //F4 whole F4 al 2043P1
for(int i=1;i<=322;i++)
pF4->AddNode(pColl,copy=i,new TGeoCombiTrans( 0*mm, -1296/2*mm+i*4*mm, -5*mm,pCollRot)); //F4 2043P1
-}//void Frame4()
-//__________________________________________________________________________________________________
-void Radiators(TGeoVolume *pTop)
-{
- TGeoVolume *pRad =g->MakeBox( "Rad" ,g->GetMedium("C6F14") ,dx=1330*mm/2 ,dy= 413*mm/2 ,dz= 24*mm/2); // Rad 2011P1
- TGeoVolume *pRadFront =g->MakeBox( "RadFront" ,g->GetMedium("Neoceram") ,dx=1330*mm/2 ,dy= 413*mm/2 ,dz= 4*mm/2);
- TGeoVolume *pRadWin =g->MakeBox( "RadWin" ,g->GetMedium("SiO2") ,dx=1330*mm/2 ,dy= 413*mm/2 ,dz= 5*mm/2);
- TGeoVolume *pRadLong =g->MakeBox( "RadLong" ,g->GetMedium("Neoceram") ,dx=1330*mm/2 ,dy= 5*mm/2 ,dz= 15*mm/2);
- TGeoVolume *pRadShort =g->MakeBox( "RadShort" ,g->GetMedium("Neoceram") ,dx= 10*mm/2 ,dy= 403*mm/2 ,dz= 15*mm/2);
- TGeoVolume *pRadSpacer=g->MakeTube("RadSpacer",g->GetMedium("SiO2") ,r1= 0 ,r2=10*mm/2 ,dz= 15*mm/2);
+//radiators
+ TGeoVolume *pRad =gGeoManager->MakeBox( "Rad" ,gGeoManager->GetMedium("RICH_C6F14") ,dx=1330*mm/2 ,dy= 413*mm/2 ,dz= 24*mm/2); // Rad 2011P1
+ TGeoVolume *pRadFront =gGeoManager->MakeBox( "RadFront" ,gGeoManager->GetMedium("RICH_Neoceram") ,dx=1330*mm/2 ,dy= 413*mm/2 ,dz= 4*mm/2);
+ TGeoVolume *pRadWin =gGeoManager->MakeBox( "RadWin" ,gGeoManager->GetMedium("RICH_SiO2") ,dx=1330*mm/2 ,dy= 413*mm/2 ,dz= 5*mm/2);
+ TGeoVolume *pRadLong =gGeoManager->MakeBox( "RadLong" ,gGeoManager->GetMedium("RICH_Neoceram") ,dx=1330*mm/2 ,dy= 5*mm/2 ,dz= 15*mm/2);
+ TGeoVolume *pRadShort =gGeoManager->MakeBox( "RadShort" ,gGeoManager->GetMedium("RICH_Neoceram") ,dx= 10*mm/2 ,dy= 403*mm/2 ,dz= 15*mm/2);
+ TGeoVolume *pRadSpacer=gGeoManager->MakeTube("RadSpacer",gGeoManager->GetMedium("RICH_SiO2") ,r1= 0 ,r2=10*mm/2 ,dz= 15*mm/2);
- pTop->AddNode(pRad ,copy=1,new TGeoTranslation( 0*mm,-434*mm, -12*mm));
- pTop->AddNode(pRad ,copy=2,new TGeoTranslation( 0*mm, 0*mm, -12*mm));
- pTop->AddNode(pRad ,copy=3,new TGeoTranslation( 0*mm,+434*mm, -12*mm));
+ pRich->AddNode(pRad ,copy=1,new TGeoTranslation( 0*mm,-434*mm, -12*mm));
+ pRich->AddNode(pRad ,copy=2,new TGeoTranslation( 0*mm, 0*mm, -12*mm));
+ pRich->AddNode(pRad ,copy=3,new TGeoTranslation( 0*mm,+434*mm, -12*mm));
pRad ->AddNode(pRadFront ,copy=1,new TGeoTranslation( 0*mm, 0*mm, -10.0*mm));
pRad ->AddNode(pRadWin ,copy=1,new TGeoTranslation( 0*mm, 0*mm, 9.5*mm));
pRad ->AddNode(pRadLong ,copy=2,new TGeoTranslation( 0*mm,+204*mm, -0.5*mm));
pRad ->AddNode(pRadShort ,copy=1,new TGeoTranslation(-660*mm, 0*mm, -0.5*mm));
pRad ->AddNode(pRadShort ,copy=2,new TGeoTranslation(+660*mm, 0*mm, -0.5*mm));
- for(int i=0;i<3;i++)
- for(int j=0;j<10;j++)
- pRad->AddNode(pRadSpacer,copy=10*i+j,new TGeoTranslation(-1330*mm/2+116*mm+j*122*mm,(i-1)*105*mm,-0.5*mm));
-}//Radiators()
+ for(int i=0;i<3;i++) for(int j=0;j<10;j++) pRad->AddNode(pRadSpacer,copy=10*i+j,new TGeoTranslation(-1330*mm/2+116*mm+j*122*mm,(i-1)*105*mm,-0.5*mm));
+//sandbox
+ TGeoVolume *pSandBox =gGeoManager->MakeBox( "RSandBox" ,gGeoManager->GetMedium("Air") ,dx=1419*mm/2 ,dy=1378*mm/2 ,dz=50.5*mm/2); //2072P1
+ TGeoVolume *pSandCover=gGeoManager->MakeBox( "RSandCover",gGeoManager->GetMedium("RICH_Al") ,dx=1419*mm/2 ,dy=1378*mm/2 ,dz= 0.5*mm/2);
+ TGeoVolume *pSandComb =gGeoManager->MakeBox( "RSandComb" ,gGeoManager->GetMedium("RICH_Rohacell") ,dx=1359*mm/2 ,dy=1318*mm/2 ,dz=49.5*mm/2);
+
+ pRich->AddNode(pSandBox,copy=1,new TGeoTranslation( 0*mm,0*mm, -73.75*mm)); //p.84 TDR
+ pSandBox->AddNode(pSandComb ,copy=1,new TGeoTranslation( 0*mm,0*mm, 0*mm)); //2072P1
+ pSandBox->AddNode(pSandCover ,copy=1,new TGeoTranslation( 0*mm,0*mm, +25*mm));
+ pSandBox->AddNode(pSandCover ,copy=2,new TGeoTranslation( 0*mm,0*mm, -25*mm));
+}//Rich()
//__________________________________________________________________________________________________
void Sr90(TGeoVolume *pTop)
{
- pSrc =g->MakeTube("Src" ,g->GetMedium("CH4") , 0 , 70*mm/2 , 30*mm/2); //top container
- pAlGlass =g->MakeTube("SrcAlGlass" ,g->GetMedium("Al") , 0 , 38*mm/2 ,21.8*mm/2); //Al glass wall
- pPerpexPlug =g->MakeTube("SrcPerpex" ,g->GetMedium("Perpex"), 0 , 34*mm/2 , 20*mm/2); //Perpex plug
- pScrewCentral=g->MakeTube("SrcScrewCentral" ,g->GetMedium("Steel") , 0 , 5*mm/2 , 15*mm/2); //Steel screw in the center
- pScrewSr90 =g->MakeTube("SrcScrewSr90" ,g->GetMedium("Steel") , 0 , 2*mm/2 , 10*mm/2); //Steel screw to support Sr90
- pSr90 =g->MakeTube("SrcSr90" ,g->GetMedium("Sr90") , 0 , 1*mm/2 , 1*mm/2); //Sr90 source
- pHolePerpex =g->MakeTube("SrcHolePerpex" ,g->GetMedium("Air") , 0 , 4*mm/2 , 10*mm/2); //Air hole in perpex plug
- pHoleAl =g->MakeTube("SrcHoleAl" ,g->GetMedium("Air") , 0 , 5*mm/2 , 1.8*mm/2); //Air hole in Al glass bottom
- pMylarFoil =g->MakeTube("SrcMylarFoil" ,g->GetMedium("Mylar") , 0 , 30*mm/2 , 50*mkm/2); //Mylar foil
+ pSrc =gGeoManager->MakeTube("Src" ,gGeoManager->GetMedium("Air") , 0 , 70*mm/2 , 30*mm/2); //top container
+ pAlGlass =gGeoManager->MakeTube("SrcAlGlass" ,gGeoManager->GetMedium("RICH_Al") , 0 , 38*mm/2 ,21.8*mm/2); //Al glass wall
+ pPerpexPlug =gGeoManager->MakeTube("SrcPerpex" ,gGeoManager->GetMedium("RICH_Perpex"), 0 , 34*mm/2 , 20*mm/2); //Perpex plug
+ pScrewCentral=gGeoManager->MakeTube("SrcScrewCentral" ,gGeoManager->GetMedium("RICH_Steel") , 0 , 5*mm/2 , 15*mm/2); //Steel screw in the center
+ pScrewSr90 =gGeoManager->MakeTube("SrcScrewSr90" ,gGeoManager->GetMedium("RICH_Steel") , 0 , 2*mm/2 , 10*mm/2); //Steel screw to support Sr90
+ pSr90 =gGeoManager->MakeTube("SrcSr90" ,gGeoManager->GetMedium("RICH_Sr90") , 0 , 1*mm/2 , 1*mm/2); //Sr90 source
+ pHolePerpex =gGeoManager->MakeTube("SrcHolePerpex" ,gGeoManager->GetMedium("Air") , 0 , 4*mm/2 , 10*mm/2); //Air hole in perpex plug
+ pHoleAl =gGeoManager->MakeTube("SrcHoleAl" ,gGeoManager->GetMedium("Air") , 0 , 5*mm/2 , 1.8*mm/2); //Air hole in Al glass bottom
+ pMylarFoil =gGeoManager->MakeTube("SrcMylarFoil" ,gGeoManager->GetMedium("RICH_Mylar") , 0 , 30*mm/2 , 50*mkm/2); //Mylar foil
pTop->AddNode(pSrc,1,new TGeoTranslation(30*cm,0,1*cm));
pSrc ->AddNode(pMylarFoil,1,new TGeoTranslation(0,0,21.8*mm/2+50*mkm/2));
pScrewSr90->AddNode( pSr90 ,1,new TGeoTranslation(0 ,0,-4.5*mm));
}//Sr90()
//__________________________________________________________________________________________________
-void Sandbox(TGeoVolume *pTop)
-{//Sandbox
- TGeoVolume *pSandBox =g->MakeBox( "SandBox" ,g->GetMedium("Air") ,dx=1419*mm/2 ,dy=1378*mm/2 ,dz=50.5*mm/2); //2072P1
- TGeoVolume *pSandCover=g->MakeBox( "SandCover",g->GetMedium("Al") ,dx=1419*mm/2 ,dy=1378*mm/2 ,dz= 0.5*mm/2);
- TGeoVolume *pSandComb =g->MakeBox( "SandComb" ,g->GetMedium("Roha") ,dx=1359*mm/2 ,dy=1318*mm/2 ,dz=49.5*mm/2);
+void RusGel()
+{
+//Defines VHMPID aerogel option geometry.
+// top view normal position side view normal position
+// ^ y
+// -------- |
+// | | |
+// | | z<-----* y z<-------* x ----> MUON side
+// | | | ----
+// | | | | |
+// ________ v x | |
+// |--|
+// | |
+// ----
+//Chamber consists from Al box filled with air where 4 aerogel blocks and APD wall are positioned.
+// ------------------------------
+// |-| |-| |-| |-| |-||
+// |-| | | | | | | | ||
+// |-| | | | | | | | ||
+// |-| APD wall | | | | | | | || z<---* y top view
+// |-| | | | | | | | || |
+// |-| | | | | | | | || |
+// |-| |_| |_| |_| |_|| v x
+// ------------------------------
+//
+// ALIC
+// |
+// Vbox (Al)
+// |
+// Vair (Air)
+// _______|________
+// | |
+// 4*Vgel Vwall
+// |
+// Vcolumn (division along X)
+// |
+// Vcell (division along Y)
+// |
+// Vapd
+
+ Double_t cm=1 , m=100 , mm=0.1 ;//dimentions, default is cm
- pTop->AddNode(pSandBox,copy=1,new TGeoTranslation( 0*mm,0*mm, -73.75*mm)); //p.84 TDR
- pSandBox->AddNode(pSandComb ,copy=1,new TGeoTranslation( 0*mm,0*mm, 0*mm)); //2072P1
- pSandBox->AddNode(pSandCover ,copy=1,new TGeoTranslation( 0*mm,0*mm, +25*mm));
- pSandBox->AddNode(pSandCover ,copy=2,new TGeoTranslation( 0*mm,0*mm, -25*mm));
-}//Sandbox()
+ Int_t iNapdsX =10 ;//number of APDs along x
+ Int_t iNapdsY =16 ;//number of APDs along y
+ Double_t dCellX =1.5*mm *0.5 ;//cell X half size
+ Double_t dCellY =1.5*mm *0.5 ;//cell Y half size
+ Double_t dCellZ =0.5*mm *0.5 ;//APD wall thickness
+ Double_t dWallX = iNapdsX*dCellX;//APD wall X half size
+ Double_t dWallY = iNapdsY*dCellY;//APD wall Y half size
+ Double_t dWallZ = dCellZ;//APD wall half thickness
+ Double_t dApdR =0.5*mm ;//APD radius
+ Double_t dApdZ = dCellZ;//APD Z half size
+ Double_t dGelX = dWallX;//gel block X half size
+ Double_t dGelY = dWallY;//gel block Y half size
+ Double_t dGelZ =10*mm *0.5 ;//gel block Z half size
+ Double_t dProxGap =50*cm ;//half distance between APD wall and last aerogel block
+ Double_t dAirX = dWallX;//internal air X hald size
+ Double_t dAirY = dWallY;//internal air Y hald size
+ Double_t dAirZ = dWallZ+dProxGap+7*dGelZ;//internal air Z hald size
+ Double_t dBoxWall =2*mm *0.5 ;//Al box walls thickness
+ Double_t dBoxX = dAirX+dBoxWall;//Al box x half size
+ Double_t dBoxY = dAirY+dBoxWall;//Al box y half size
+ Double_t dBoxZ = dAirZ+dBoxWall;//Al box z half size
+
+ Int_t copy; Double_t rmin,rmax,dx,dy,dz;
+//make external Al box
+ TGeoVolume *pBox=gGeoManager->MakeBox("Gbox",gGeoManager->GetMedium("RICH_Al"),dx=dBoxX,dy=dBoxY,dz=dBoxZ);
+ TGeoRotation *pRot=new TGeoRotation("GboxRot"); pRot->RotateX(90);
+ gGeoManager->GetVolume("ALIC")->AddNode(pBox,copy=1,new TGeoCombiTrans(0*m,-5.2*m,2.5*m,pRot));//normal position
+//position Air to Al box
+ TGeoVolume *pAir=gGeoManager->MakeBox( "Gair",gGeoManager->GetMedium("Air"),dx=dAirX,dy=dAirY,dz=dAirZ);
+ pBox->AddNode(pAir,copy=1);
+//position 4 gel blocks to Air
+ TGeoVolume *pGel24=gGeoManager->MakeBox( "Ggel24",gGeoManager->GetMedium("RICH_Gel24"),dx=dGelX,dy=dGelY,dz=dGelZ);
+ pAir->AddNode(pGel24,copy=1,new TGeoTranslation(0,0,-dAirZ+1*dGelZ));
+ TGeoVolume *pGel26=gGeoManager->MakeBox( "Ggel26",gGeoManager->GetMedium("RICH_Gel26"),dx=dGelX,dy=dGelY,dz=dGelZ);
+ pAir->AddNode(pGel26,copy=1,new TGeoTranslation(0,0,-dAirZ+5*dGelZ));
+ TGeoVolume *pGel28=gGeoManager->MakeBox( "Ggel28",gGeoManager->GetMedium("RICH_Gel28"),dx=dGelX,dy=dGelY,dz=dGelZ);
+ pAir->AddNode(pGel28,copy=1,new TGeoTranslation(0,0,-dAirZ+9*dGelZ));
+ TGeoVolume *pGel30=gGeoManager->MakeBox( "Ggel30",gGeoManager->GetMedium("RICH_Gel30"),dx=dGelX,dy=dGelY,dz=dGelZ);
+ pAir->AddNode(pGel30,copy=1,new TGeoTranslation(0,0,-dAirZ+13*dGelZ));
+//position APD wall to air
+ TGeoVolume *pWall =gGeoManager->MakeBox ("Gwall",gGeoManager->GetMedium("RICH_Si"),dx=dWallX , dy=dWallY , dz=dWallZ );
+ pAir->AddNode(pWall,copy=1,new TGeoTranslation(0,0,dAirZ-dWallZ));
+//divide wall into cells
+ Int_t axis,ndiv; Double_t start,step;
+ TGeoVolume *pWallCol =pWall ->Divide("Gcol",axis=1,ndiv=iNapdsX,start=0,step=0);//divide VhGap along X by NpadsX columns
+ TGeoVolume *pWallCell=pWallCol ->Divide("Gcel",axis=2,ndiv=iNapdsY,start=0,step=0);//divide VhGapCol along Y by NpadsY cells
+//position APD to wall cell
+ TGeoVolume *pApd=gGeoManager->MakeTube("Gapd",gGeoManager->GetMedium("RICH_Apd"),rmin=0,rmax=dApdR,dz=dApdZ); pWallCell->AddNode(pApd,copy=1);
+}//RusGel()
+//__________________________________________________________________________________________________
+void Vhmpid()
+{
+//Defines VHMPID geometry for TIC option.
+// top view normal position side view normal position
+// ^ y
+// -------- |
+// |------| |
+// | | z<-----* y z<-------* x ----> MUON side
+// | | | ----
+// | | | | |
+// ________ v x | |
+// |--|
+// | |
+// ----
+//Chamber consists from Al box filled with radiator CF4 and C4F10 quartz window in between , Al mirror and MWPC.
+// --------------------------------------------------- top view chamber in test position
+// | -------------- MWPC | quartz window |
+// | . . . . . . | |
+// | \ | |
+// | \ CF4 | C4F10 | z<-----* y
+// | \ mirror | | |
+// | \ | | |
+// | \ | | v x
+// ---------------------------------------------------
+// z ^
+// |
+// |
+// <-Y0-> X <--Y1--> X <--Y1--> X <--Y1--> X <-Y0-> | cath wires: r 50mkm; shift Y0=1.05m;, pitch Y1=2.1; center to PC 4.45mm; material Cu
+// x *------->y
+//
+// <--Y0--> x <-----------Y1-----------> x <--Y0--> anod wires: r 20mkm; shift Y0=2.2mm; pitch Y1=4.0mm; center to PC 2.04mm; material W
+//
+//
+// |________________________________________________| pad size y 8.4mm
+//
+// ALIC
+// |
+// Vbox
+// _______|______
+// | | |
+// Vc4f Vwin Vcf4
+// _____|________
+// | |
+// Vmir |
+// |
+// Vgap
+// |
+// Vcol (column of gap cells) X
+// |
+// Vcel cell in the column Y
+// ______|______
+// | | |
+// Vpad Vano Vcat
+ Double_t cm=1 , m=100 , mm=0.1 , um=1e-4 ;//dimentions, default is cm
+
+ Int_t iNpadsX = AliRICHParam::NpadsX() ;//number of pads along x parametrised
+ Int_t iNpadsY = AliRICHParam::NpadsY() ;//number of pads along y parametrised
+ Double_t wCathR =50 *um ;//cathode wire radius defined by USER
+ Double_t wCathShift =1.05*mm ;//cathode wire shift from pad edge defined by USER
+ Double_t wCathPitch =2.1 *mm ;//cathode wire pitch defined by USER
+ Double_t wCathPc =4.45*mm ;//distance from pc to cathode wire defined by USER
+ Double_t wAnodR =20 *um ;//anod wire radius defined by USER
+ Double_t wAnodShift =2.2 *mm ;//anod wire shift from pad edge defined by USER
+ Double_t wAnodPc =2.04*mm ;//distance from anod wire center to pc defined by USER
+ Double_t dPadX = 0.5* AliRICHParam::PadSizeX() ;//pad X half size parametrised
+ Double_t dPadY = 0.5* AliRICHParam::PadSizeY() ;//pad Y half size parametrised
+ Double_t dPadZ =1.0 *mm *0.5 ;//CsI film thickness
+ Double_t dGapX = 0.5* iNpadsX*2*dPadX ;//gap x half size n. pads x * pad size
+ Double_t dGapY = 0.5* iNpadsY*2*dPadY ;//gap y half size
+ Double_t dGapZ = 0.5* (2*dPadZ+wCathPc+wCathR) ;//gap half thickness
+ Double_t dMirX = 0.5* 2*dGapX/TMath::Cos(45*TMath::DegToRad());//Ag mirror x half size defined by gap size and angle 45 degrees
+ Double_t dMirY = 0.5* 2*dGapY ;//Ag mirror y half size defined by gap size
+ Double_t dMirZ =1.0 *mm *0.5 ;//Ag mirror z half size defined by USER
+ Double_t wBoxWall =2.0 *mm ;//Al box walls thickness defined by USER
+ Double_t dBoxX = 0.5* (2*dGapX+2*cm) ;//Al box x half size defined by gap size 2 cm for tolerance
+ Double_t dBoxY = 0.5* (2*dGapY+2*cm) ;//Al box y half size defined by gap size 2 cm for tolerance
+ Double_t dBoxZ =1.8*m *0.5 ;//Al box z half size defined by USER
+ Double_t dWinX = (dBoxX-wBoxWall) ;//SiO2 window x half size defined by box size
+ Double_t dWinY = (dBoxY-wBoxWall) ;//SiO2 window y half size defined by box size
+ Double_t dWinZ =1.0*cm *0.5 ;//SiO2 window z half size defined by USER
+ Double_t dCF4X = (dBoxX-wBoxWall) ;//CF4 radiator x half size defined by box size
+ Double_t dCF4Y = (dBoxY-wBoxWall) ;//CF4 radiator y half size defined by box size
+ Double_t dCF4Z = 0.4*dBoxZ ;//CF4 radiator z half size defined by box size or by USER
+ Double_t dC4F10X = (dBoxX-wBoxWall) ;//C4F10 radiator x half size defined by box size
+ Double_t dC4F10Y = (dBoxY-wBoxWall) ;//C4F10 radiator y half size defined by box size
+ Double_t dC4F10Z = (dBoxZ-dWinZ-dCF4Z-wBoxWall) ;//C4F10 radiator z half size defined by box, CF4 and window sizes
+
+ Int_t copy;
+ Double_t rmin,rmax,dx,dy,dz;
+
+//make VHMPID type 2 volume (2 radiators)
+ TGeoVolume *pBox=gGeoManager->MakeBox("Vbox",gGeoManager->GetMedium("RICH_Al"),dx=dBoxX,dy=dBoxY,dz=dBoxZ);
+
+ TGeoRotation *pRot=new TGeoRotation("VboxRot"); pRot->RotateX(90);//normal position
+ gGeoManager->GetVolume("ALIC")->AddNode(pBox,copy=1,new TGeoCombiTrans(0*m,-5.2*m,2.5*m,pRot));
+//position C4F10 radiator to Al box
+ TGeoVolume *pC4F10=gGeoManager->MakeBox("Vc4f",gGeoManager->GetMedium("RICH_C4F10"),dx=dC4F10X,dy=dC4F10Y,dz=dC4F10Z);
+ pBox->AddNode(pC4F10,copy=1,new TGeoTranslation(0*cm,0*cm,-dBoxZ+wBoxWall+dC4F10Z));
+//position quartz window to Al box
+ TGeoVolume *pWindow=gGeoManager->MakeBox( "Vwin",gGeoManager->GetMedium("RICH_SiO2"),dx=dWinX,dy=dWinY,dz=dWinZ);
+ pBox->AddNode(pWindow,copy=1,new TGeoTranslation(0*cm,0*cm,-dBoxZ+wBoxWall+2*dCF4Z+dWinZ));
+//position CF4 radiator to Al box
+ TGeoVolume *pCF4=gGeoManager->MakeBox( "Vcf4",gGeoManager->GetMedium("RICH_CF4"),dx=dCF4X,dy=dCF4Y,dz=dCF4Z);
+ pBox->AddNode(pCF4,copy=1,new TGeoTranslation(0*cm,0*cm,dBoxZ-wBoxWall-dCF4Z));
+//position mirror to CF4 radiator
+ TGeoVolume *pMirror=gGeoManager->MakeBox( "Vmir",gGeoManager->GetMedium("RICH_Ag"),dx=dMirX,dy=dMirY,dz=dMirZ);
+ TGeoRotation *pMirrorRot=new TGeoRotation("VmirRot"); pMirrorRot->RotateY(45);
+ pCF4->AddNode(pMirror,copy=1,new TGeoCombiTrans(0*cm,0*cm,dCF4Z-1*cm-dGapX,pMirrorRot));
+//position gap to CF4 radiator
+ TGeoVolume *pGap =gGeoManager->MakeBox ("Vgap" ,gGeoManager->GetMedium("RICH_CF4"),dx=dGapX , dy=dGapY , dz=dGapZ );
+ TGeoRotation *pMwpcRot=new TGeoRotation("VmpcRot"); pMwpcRot->RotateY(90);
+ pCF4->AddNode(pGap,copy=1,new TGeoCombiTrans(-dBoxX+1*cm,0*cm,dCF4Z-1*cm-dGapX,pMwpcRot));
+//divide gap into 80x48 cells
+ Int_t axis,ndiv; Double_t start,step;
+ TGeoVolume *pGapCol =pGap ->Divide("Vcol",axis=1,ndiv=iNpadsX,start=0,step=0);//divide VhGap along X by NpadsX columns
+ TGeoVolume *pGapCell=pGapCol ->Divide("Vcel",axis=2,ndiv=iNpadsY,start=0,step=0);//divide VhGapCol along Y by NpadsY cells
+//position pad to gap cell
+ TGeoVolume *pPad=gGeoManager->MakeBox ("Vpad",gGeoManager->GetMedium("RICH_CsI"),dx=dPadX,dy=dPadY,dz=dPadZ);
+ pGapCell->AddNode(pPad,copy=1,new TGeoTranslation(0,0,-dGapZ+dPadZ));
+//define wire rotation common for both anod and cathode wires
+ TGeoRotation *pWireRot=new TGeoRotation("VwireRot"); pWireRot->RotateY(90); //rotate wires around Y to be along X (initially along Z)
+//position 2 anod wires to gap cell
+ TGeoVolume *pAnodWire =gGeoManager->MakeTube("Vano",gGeoManager->GetMedium("RICH_W") ,rmin=0 , rmax=wAnodR , dz=dPadX );
+ pGapCell->AddNode(pAnodWire,copy=1,new TGeoCombiTrans (0, -dPadY+wAnodShift , -dGapZ+wAnodPc+2*dPadZ , pWireRot));
+ pGapCell->AddNode(pAnodWire,copy=2,new TGeoCombiTrans (0, dPadY-wAnodShift , -dGapZ+wAnodPc+2*dPadZ , pWireRot));
+//position 4 cathode wires to gap cell
+ TGeoVolume *pCathWire =gGeoManager->MakeTube("Vcat",gGeoManager->GetMedium("RICH_Cu") ,rmin=0 , rmax=wCathR , dz=dPadX );
+ pGapCell->AddNode(pCathWire,copy=1,new TGeoCombiTrans (0, -dPadY+wCathShift , -dGapZ+wCathPc+2*dPadZ , pWireRot));
+ pGapCell->AddNode(pCathWire,copy=2,new TGeoCombiTrans (0, -dPadY+wCathShift+wCathPitch , -dGapZ+wCathPc+2*dPadZ , pWireRot));
+ pGapCell->AddNode(pCathWire,copy=3,new TGeoCombiTrans (0, dPadY-wCathShift-wCathPitch , -dGapZ+wCathPc+2*dPadZ , pWireRot));
+ pGapCell->AddNode(pCathWire,copy=4,new TGeoCombiTrans (0, dPadY-wCathShift , -dGapZ+wCathPc+2*dPadZ , pWireRot));
+}//Vhmpid()
//__________________________________________________________________________________________________
void Axis()
{
TPolyLine3D *pZaxis=new TPolyLine3D(2,Z);pZaxis->SetLineColor(kBlue); pZaxis->Draw();
}
//__________________________________________________________________________________________________
-void Colors()
-{
-//Set volume colors
- TGeoVolume *pVol=0;
- pVol=g->GetVolume("Pc") ; if(pVol) pVol->SetLineColor(kGreen);
- pVol=g->GetVolume("PPFlarge") ; if(pVol) pVol->SetLineColor(kYellow);
- pVol=g->GetVolume("PPFsmall") ; if(pVol) pVol->SetLineColor(kYellow);
- pVol=g->GetVolume("RadFront") ; if(pVol) pVol->SetLineColor(kRed);
- pVol=g->GetVolume("RadLong") ; if(pVol) pVol->SetLineColor(46);
- pVol=g->GetVolume("RadShort") ; if(pVol) pVol->SetLineColor(kMagenta);
- pVol=g->GetVolume("RadWin") ; if(pVol) pVol->SetLineColor(kBlue);
- pVol=g->GetVolume("RadSpacer"); if(pVol) pVol->SetLineColor(kYellow);
- pVol=g->GetVolume("SrcSr90") ; if(pVol) pVol->SetLineColor(kRed);
- pVol=g->GetVolume("SrcScrewSr90") ; if(pVol) pVol->SetLineColor(kGreen);
- pVol=g->GetVolume("SrcHolePerpex") ; if(pVol) pVol->SetLineColor(26);
- pVol=g->GetVolume("SrcHoleAl") ; if(pVol) pVol->SetLineColor(27);
-}