FairRoot/PandaRoot
Functions
create_ftof_rootgeo.C File Reference

Go to the source code of this file.

Functions

int create_ftof_rootgeo (Double_t distance=775)
 

Function Documentation

int create_ftof_rootgeo ( Double_t  distance = 775)

Definition at line 1 of file create_ftof_rootgeo.C.

References Double_t, fi, geobuild, geoFace, geoLoad, gGeoMan, i, Media, name, name1, name2, nmed, offset(), outfile, SubunitVol, top, trc1, and TString.

1  {
2  // Forward tof geometry parameters
3  //-----------------------------
4  //-- macro created by Alicia S. based on
5  //-- Panda TPR and on previous geant3 geometry for forward tof(Vladimir V.)
6  const Double_t kBCentX = 2.5; // half length(cm) //from EMC TDR
7  const Double_t kBCentY = 70.0; //half length (cm) //?
8  const Double_t kBCentZ = 0.75; //half length (cm) //?
9 
10  const Double_t kBBeamX = 2.5; // half length(cm) //from EMC TDR
11  const Double_t kBBeamY = 30.0; //alf length (cm) //?
12  const Double_t kBBeamZ = 0.75; //half length (cm) //?
13 
14  const Double_t kBVertX = 5.0; //half length (cm) //from EMC TDR
15  const Double_t kBVertY = 70.0; //half length (cm) //?
16  const Double_t kBVertZ = 0.75; //half length (cm) //from EMC TDR
17 
18  //--------------------------------------------------------------------
19  gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
20 
21  // Load this libraries
22  gSystem->Load("libGeoBase");
23  gSystem->Load("libParBase");
24  gSystem->Load("libBase");
25  gSystem->Load("libPndData");
26  gSystem->Load("libPassive");
27 
28  TString outfile= "../../geometry/ftofwall.root";
29  TFile* fi = new TFile(outfile,"RECREATE");
30 
31  FairGeoLoader* geoLoad = new FairGeoLoader("TGeo","FairGeoLoader");
32  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
33  geoFace->setMediaFile("../../geometry/media_pnd.geo");
34  geoFace->readMedia();
35  geoFace->print();
36 
37  FairGeoMedia *Media = geoFace->getMedia();
38  FairGeoBuilder *geobuild=geoLoad->getGeoBuilder();
39 
40  FairGeoMedium *CbmMediumSci = Media->getMedium("polyvinyltoluene");
41 
42 
43  Int_t nmed=geobuild->createMedium(CbmMediumSci);
44 
45 
46  TGeoManager* gGeoMan = (TGeoManager*)gROOT->FindObject("FAIRGeom");
47 
48  TGeoVolume *top = new TGeoVolumeAssembly("Ftof");
49 
50  gGeoMan->SetTopVolume(top);
51 
52 
53 TGeoBBox *CentShape[26];
54 TGeoBBox *BeamShape[26];
55 TGeoBBox *VertShape[50];
56 
57 TGeoVolume* CentVol[26];
58 TGeoVolume* BeamVol[26];
59 TGeoVolume* VertVol[50];
60 
61 
62 Double_t bx[26],by[26],bz[26];
63 Double_t bvx[50],bvy[50],bvz[50];
64 TGeoVolumeAssembly* SubunitVol = new TGeoVolumeAssembly("Ftof_strips");
65 
66 
67 char name[17];
68 char namB[17];
69 char namV[17];
70 char name1[17];
71 char namB1[17];
72 char namV1[20];
73 char name2[17];
74 char namB2[17];
75 char namV2[17];
76 
77 
78 for(int i=0;i<26;i++){
79  bx[i]=-40+kBCentX*((2*i)+1);
80 }
81 
82 for(int i=0;i<26;i++){
83  if(i<8||i>17){
84 
86  sprintf (name,"Centshape%d",i);
87  sprintf (name1,"Ftof_Central_Strip%d",i);
88 
89  CentShape[i] = new TGeoBBox(name,kBCentX,kBCentY,kBCentZ);
90  CentVol[i] = new TGeoVolume(name1,CentShape[i],gGeoMan->GetMedium("polyvinyltoluene"));
91  if(i<8)TGeoCombiTrans* trc1= new TGeoCombiTrans(bx[i],0,0.,new TGeoRotation ());
92  else if (i>17)TGeoCombiTrans* trc1= new TGeoCombiTrans(bx[i-5],0,0.,new TGeoRotation ());
93 
94  trc1->SetName(name);
95  trc1->RegisterYourself();
96  SubunitVol->AddNode(CentVol[i],i,trc1);
97  }
98  else{
99 
100  sprintf (namB,"Beamshape%d",i);
101  sprintf (namB1,"Ftof_Beam_Strip%02d",i);
102  BeamShape[i] = new TGeoBBox(namB,kBBeamX,kBBeamY,kBBeamZ);
103  BeamVol[i] = new TGeoVolume(namB1,BeamShape[i],gGeoMan->GetMedium("polyvinyltoluene"));
104 
105  if(i==8||i==9){
106 
107 
108  (i==8 ? (offset = -70+kBBeamY) : (offset = 70-kBBeamY));
109  TGeoCombiTrans* trc1= new TGeoCombiTrans(bx[8],offset,0.,new TGeoRotation ());
110 
111  trc1->SetName(namB);
112  trc1->RegisterYourself();
113  SubunitVol->AddNode(BeamVol[i],i,trc1);
114 
115  }
116  if(i==10||i==11){
117 
118  (i==10 ? (offset = -70+kBBeamY) : (offset = 70-kBBeamY));
119 
120  TGeoCombiTrans* trc1= new TGeoCombiTrans(bx[9],offset,0.,new TGeoRotation ());
121 
122  trc1->SetName(namB);
123  trc1->RegisterYourself();
124  SubunitVol->AddNode(BeamVol[i],i,trc1);
125 
126  }
127  if(i==12||i==13){
128 
129  (i==12 ? (offset = -70+kBBeamY) : (offset = 70-kBBeamY));
130 
131  TGeoCombiTrans* trc1= new TGeoCombiTrans(bx[10],offset,0.,new TGeoRotation ());
132 
133  trc1->SetName(namB);
134  trc1->RegisterYourself();
135  SubunitVol->AddNode(BeamVol[i],i,trc1);
136 
137  }
138  if(i==14||i==15){
139 
140  (i==14 ? (offset = -70+kBBeamY) : (offset = 70-kBBeamY));
141 
142  TGeoCombiTrans* trc1= new TGeoCombiTrans(bx[11],offset,0.,new TGeoRotation ());
143 
144  trc1->SetName(namB);
145  trc1->RegisterYourself();
146  SubunitVol->AddNode(BeamVol[i],i,trc1);
147 
148  }
149  if(i==16||i==17){
150 
151  (i==16 ? (offset = -70+kBBeamY) : (offset = 70-kBBeamY));
152 
153  TGeoCombiTrans* trc1= new TGeoCombiTrans(bx[12],offset,0.,new TGeoRotation ());
154 
155  trc1->SetName(namB);
156  trc1->RegisterYourself();
157  SubunitVol->AddNode(BeamVol[i],i,trc1);
158 
159  }
160  }
161 
162  return 0;
163 }
164 
165 for(int i=0;i<24;i++){
166  bvx[i]=-280+kBVertX*((2*i)+1);
167 }
168 
169 for(int i=0;i<26;i++){
170 
171  bvx[i+24]=60+kBVertX*((2*i)+1);
172 }
173 
174 for(int i=0;i<50;i++){
175 
176 
177  sprintf (namV,"VertShape%d",i);
178  sprintf (namV1,"Ftof_Vertical_Strip%d",i);
179 
180  VertShape[i] = new TGeoBBox(namV,kBVertX,kBVertY,kBVertZ);
181  VertVol[i] = new TGeoVolume(namV1,VertShape[i],gGeoMan->GetMedium("polyvinyltoluene"));
182  TGeoCombiTrans* trc1= new TGeoCombiTrans(bvx[i],0,0.,new TGeoRotation ());
183 
184  trc1->SetName(namV);
185  trc1->RegisterYourself();
186  SubunitVol->AddNode(VertVol[i],i,trc1);
187  }
188 
189 
190 top->AddNode(SubunitVol,0,new TGeoCombiTrans(0.,0.,distance,new TGeoRotation ()));
191 
192  gGeoMan->CloseGeometry();
193  top->Write();
194  fi->Close();
195 // gGeoManager->Export(outfile);
196  //top->Draw("ogl");
197 }
FairGeoLoader * geoLoad
Int_t i
Definition: run_full.C:25
FairGeoMedia * Media
TGeoManager * gGeoMan
TVector3 offset(2, 0, 0)
TGeoVolume * top
TGeoVolume * SubunitVol
FairGeoBuilder * geobuild
TFile * fi
Double_t
TString name
TGeoCombiTrans * trc1
FairGeoInterface * geoFace
TString outfile