FairRoot/PandaRoot
create_HypSTxy3Cmic_RootGeo.C
Go to the documentation of this file.
1 
2 
3 TVector3 ComputeTransformation(const int copyNo, Double_t *par)
4 {//{ComputeTransformation(const int copyNo, TVector3* origin,Double_t *par) const
5  TVector3 origin;
6 
7 
8  Double_t display= par[4]*( 20-copyNo);
9  Double_t position= par[0]+(copyNo)*par[2];
10 
11  origin.SetXYZ(0, display,position);
12 
13  return origin;
14 
15 }
16 
17 TVector3 ComputeDimensions( const int copyNo,Double_t *par)
18 {//ComputeDimensions(TVector3& Layer, const int copyNo,Double_t *par) const
19  TVector3 Layer;
20 
21  //Double_t fStartPosition = firstPosition;
22  //Double_t fHalfLayThick = 0.5*LayThick;
23  //Double_t fSpacing = LayThick;
24  //Double_t fHalfLengthFirst = 0.5 * firstLength;
25  //Double_t fHalfLengthIncr = 0.5 *(lastLength-firstLength)/20;
26  //Double_t fHalfLastLength = 0.5*lastLength;
27 
28  Double_t halfLength = par[3] + copyNo * par[4];
29  Layer.SetXYZ(par[5],halfLength,par[1]);
30  //Layer.SetX(par[5]);
31  //Layer.SetY(par[1]);
32  return Layer;
33 
34  //}
35 }
36 
37 TVector3 rotate(TVector3 vec, TGeoRotation* rotma)
38 {
39  TVector3 v;
40  v.SetXYZ(0,0,0);
41 
42  vec.Print();
43  const Double_t* b;
44  b = rotma->GetRotationMatrix();
45  //a = new TRotation(b[0],b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8]);
46 
47  for (Int_t i=0; i<9; i++) {
48  if (TMath::Abs(b[i])<1E-10) b[i] = 0;
49  if (TMath::Abs(b[i]-1)<1E-10) b[i] = 1;
50  if (TMath::Abs(b[i]+1)<1E-10) b[i] = -1;
51  }
52  for(i=0;i<9;i++){
53  cout<<" matrix "<<b[i]<<endl;
54  }
55  v.SetX(b[0]*vec.X()+b[1]*vec.Y()+b[2]*vec.Z());
56  v.SetY(b[3]*vec.X()+b[4]*vec.Y()+b[5]*vec.Z());
57  v.SetZ(b[6]*vec.X()+b[7]*vec.Y()+b[8]*vec.Z());
58  //cout<<" rotate "<<v.X()<<" "<<v.Y()<<" "<<v.Z()<<endl;
59 
60  return v;
61 
62 
63 }
64 
66 {
67 
68  gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
69 
70  // Load this libraries
71  gSystem->Load("libGeoBase");
72  gSystem->Load("libParBase");
73  gSystem->Load("libBase");
74  gSystem->Load("libPndData");
75  gSystem->Load("libPassive");
76 
77 
78  TString outfile= "../../geometry/HYPST_assexy3C.root";
79  TFile* fi = new TFile(outfile,"RECREATE");
80 
81  FairGeoLoader* geoLoad = new FairGeoLoader("TGeo","FairGeoLoader");
82  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
83  geoFace->setMediaFile("../../geometry/media_pnd.geo");
84  geoFace->readMedia();
85  geoFace->print();
86 
87  FairGeoMedia *Media = geoFace->getMedia();
88  FairGeoBuilder *geobuild=geoLoad->getGeoBuilder();
89 
90  FairGeoMedium *medab = Media->getMedium("HYPdiamond");
91  Int_t nmedGe=geobuild->createMedium(medab);
92 
93  //Scintillator plate
94  FairGeoMedium *medsci = Media->getMedium("HYPsilicon");
95  Int_t nmedsci=geobuild->createMedium(medsci);
96 
97  FairGeoMedium *medcar = Media->getMedium("HYPcarbon");
98  Int_t nmedC=geobuild->createMedium(medcar);
99 
100 
101 
102  TGeoManager* gGeoMan = (TGeoManager*)gROOT->FindObject("FAIRGeom");
103 
104  TGeoVolume *top = new TGeoVolumeAssembly("hypst");
105 
106  gGeoMan->SetTopVolume(top);
107 
108  TGeoVolume *complex = new TGeoVolumeAssembly("complex");
109 
110  //936.4335456774155
111  const Int_t max = 80; // max. number of stations
112  Double_t xt[4]; // detector thickness [mm]
113  Double_t yt[4]; // inner radius [mm]
114  Double_t zt[4]; // outer radius [mm]
115  Double_t z[max]; // z position from target [mm]
116  Double_t dlt[max],dl[max]; // inner acceptance [deg]
117  Double_t hlt[max],hl[max]; // outer acceptance [deg]
118  Double_t zll[max],zlt[max]; // outer acceptance [deg]
119  Double_t xl[max]; // detector thickness [mm]
120  Double_t yl[max]; // inner radius [mm]
121  Double_t zl[max]; // outer radius [mm]
122 
123  Double_t da[max]; // inner acceptance [deg]
124  Double_t ha[max]; // outer acceptance [deg]
125  Double_t zla[max]; // outer acceptance [deg]
126  Double_t xa[max]; // detector thickness [mm]
127  Double_t ya[max]; // inner radius [mm]
128  Double_t za[max]; // outer radius [mm]
129 
130  Double_t dg[max]; // inner acceptance [deg]
131  Double_t hg[max]; // outer acceptance [deg]
132  Double_t zlg[max]; // outer acceptance [deg]
133  Double_t xg[max]; // detector thickness [mm]
134  Double_t yg[max]; // inner radius [mm]
135  Double_t zg[max]; // outer radius [mm]
136  Int_t n,nn,na,ng;
137 
138 
139  //ifstream geoin;
140  //geoin.open("secontarget.dat");
141  //ofstream geoout("nada.geo");
142 
143  Double_t fAbsorberThickness = 0.1; //Material mm
144  Double_t fGapThickness = 0.03; //Silicon mm
145  Int_t NbOfLayers = 20; //21
146 
147  Double_t lt = fAbsorberThickness + fGapThickness;
148  Double_t stt = NbOfLayers*lt;
149  Double_t stsyz = stt + 1.5;
150  Double_t hole = 0.75; //mm the radius of the hole(pipe)
151  Double_t SecTargThick = stt;
152  Double_t LayThick= lt;
153  Double_t SecTargSizeYZ = stsyz;
154 
155  TVector3* v2;
156  TGeoRotation* rot = new TGeoRotation();
157  TGeoRotation* rot2 = new TGeoRotation();
158  char tempname[100];
159  char name4[100];
160 
161  TGeoVolume *BoxAsmb[4];
162 
163 
164  TGeoVolume *LayAsmb[80];
165  TGeoBBox *LayB;
166 
167  TGeoBBox *BoxSi[80];
168  TGeoBBox *BoxAb[80];
169  TGeoVolume *LaySi[80];
170  TGeoVolume *LayAb[80];
171  TGeoTube *pipe;
172  TGeoVolume *hyppipe;
173  int d;
174  d=0;
175  for(int i=0;i<4;i++){
176 
177  //int i =0;
178  rot->SetAngles(0,0,0);
179  rot2->SetAngles(0,0,0);
180  rot->RotateX(90);
181  rot->RotateZ((-1*i)*90.0);
182  rot2->RotateZ(-1*i*90.0);
183  //cout<<" matr "<<-1*i*90.0<<endl;
184 
185  v2 = new TVector3(rotate(TVector3((stsyz/2)-hole,stsyz/2,0.),rot2));
186  sprintf(tempname,"stgQuad%d",i+1);
187  sprintf(name4,"transQuad%d",i+1);
188 
189  TGeoCombiTrans* trc5 = new TGeoCombiTrans(v2->x(), v2->y(), v2->z(),
190  new TGeoRotation (*rot));
191  trc5->SetName(name4);
192  trc5->RegisterYourself();
193 
194  BoxAsmb[d]= new TGeoVolumeAssembly(tempname);
195  complex->AddNode(BoxAsmb[d],0,trc5);
196 
197  d = d+1;
198  }
199 
200  string tmaterial[4]={"HYPdiamond","HYPdiamond","beryllium","aluminium"};
201  char tmp[100];
202  char tmplay[100],tmplayb[100],tmpAbs[100], tmpGap[100],tmpVAbs[100], tmpVGap[100];
203  char name[100], name1[100],name2[100];
204 
205  Double_t firstPosition = -0.5*SecTargThick + 0.5*LayThick;
206  Double_t theta = (40*TMath::Pi())/180.;
207  Double_t lengthpar = (hole+0.5*LayThick)/TMath::Tan(theta);
208  Double_t firstLength = 0.5*SecTargSizeYZ + lengthpar;
209  //Double_t firstLength = SecTargSizeYZ - ((SecTargThick)/TMath::Tan(theta));
210  //Double_t firstLength = SecTargSizeYZ - ((SecTargThick-0.5*LayThick)/TMath::Tan(theta));
211  Double_t lastLength = SecTargSizeYZ;
212 
213  TVector3 Lay;
214  TVector3 v_Pos;
215  TVector3 vecAbs,vecGap;
216 
217 
218 
219  //fNbOfLayers = NbOfLayers;
220 
221  Double_t fStartPosition = firstPosition;
222  Double_t fHalfLayThick = 0.5*LayThick;
223  Double_t fSpacing = LayThick;
224  Double_t fHalfLengthFirst = 0.5 * firstLength;
225  Double_t fHalfLengthIncr = 0.5 *(lastLength-firstLength)/NbOfLayers;
226  Double_t fHalfLastLength = 0.5*lastLength;
227 
228  Double_t param[6]={fStartPosition,fHalfLayThick,fSpacing,fHalfLengthFirst,
229  fHalfLengthIncr,fHalfLastLength};
230 
231  //for(Int_t k=0; k<4; k++)
232  //{
233  //geoin>>n>>dlt[k]>>hlt[k]>>zlt[k];
234  //cout<<"thick"<<dlt[k]<<endl;
235 
236  for(Int_t i=0; i<20; i++)
237  {
238 
239  //Lay.SetXYZ(0.,0.,0.);
240  //v_Pos.SetXYZ(0.,0.,0.);
241 
242 
243  v_Pos= ComputeTransformation(i,param);
244 
245  Lay = ComputeDimensions(i,param);
246 
247  v_Pos.SetY(-v_Pos.y());
248  //(k==0 ? v_Pos.SetZ(-v_Pos.z()): v_Pos.SetZ(v_Pos.z()));
249  v_Pos.SetZ(-v_Pos.z());
250 
251  dl[i] = Lay.X(); //length
252  hl[i] = Lay.Y(); //parametrised length
253  zll[i] = Lay.Z(); //thickness
254 
255  xl[i] = v_Pos.x();
256  yl[i] = v_Pos.y();
257  zl[i] = v_Pos.z();
258 
259  //absorver layer dimension//
260 
261  da[i]= dl[i];
262  ha[i]= hl[i];
263  zla[i]= fAbsorberThickness/2;
264 
265  //absorver layer placement
266 
267  //(k==0 ? vecAbs.SetZ(-fGapThickness/2.0) : vecAbs.SetZ(fGapThickness/2.0));
268  vecAbs.SetZ(-fGapThickness/2.0);
269 
270  xa[i] = vecAbs.x();
271  ya[i] = vecAbs.y();
272  za[i] = vecAbs.z();
273 
274  //Gap layer dimension//
275 
276  dg[i]= dl[i];
277  hg[i]= hl[i];
278  zlg[i]= fGapThickness/2.0;
279 
280  //Gap layer placement
281 
282  //(k==0 ? vecGap.SetZ(fAbsorberThickness/2) : vecGap.SetZ(-fAbsorberThickness/2));
283  vecGap.SetZ(fAbsorberThickness/2);
284 
285  xg[i] = vecGap.x();
286  yg[i] = vecGap.y();
287  zg[i] = vecGap.z();
288 
289 
290 
291  }
292  //}
293 
294 
295  int t,j;
296 
297 
298 
299  for(Int_t j=0; j<4;j++)
300  {
301 
302  if(j==0){
303  t=0;
304  for(Int_t k=0; k<20; k++)
305  {
306 
307  //sprintf(tmp,"stgQuad#0%d",j);
308  //sprintf(tmpAbs,"stglA%d%d%d#01",j,x,k);//target
309  //sprintf(tmpGap,"stglS%d%d%d#01",j,x,k);//silicon
310 
311  //sprintf(tmplayb,"stgLayB_%d",k);
312  sprintf(tmplay,"stgLay%d",k);
313  sprintf(tmpAbs,"stgBlAb%d",k);
314  sprintf(tmpGap,"stgBlSi%d",k);
315  sprintf(tmpVAbs,"stglAb%d",k);
316  sprintf(tmpVGap,"stglSi%d",k);
317 
318  sprintf(name,"transAb%d",k);
319  sprintf(name1,"transSi%d",k);
320  sprintf(name2,"transLay%d",k);
321 
322  LayAsmb[t]= new TGeoVolumeAssembly(tmplay);
323  // LayB=new TGeoBBox("stgLayB",dl[j][k],hl[j][k],zll[j][k]);
324  // LayAsmb= new TGeoVolume("stgLay",LayB,gGeoMan->GetMedium("vacuum"));
325 
326 
327 
328  BoxAb[t] = new TGeoBBox(tmpAbs,da[k],ha[k],zla[k]);
329  LayAb[t] = new TGeoVolume(tmpVAbs,BoxAb[t],gGeoMan->GetMedium("HYPdiamond"));
330  BoxSi[t] = new TGeoBBox(tmpGap,dg[k],hg[k],zlg[k]);
331  LaySi[t] = new TGeoVolume(tmpVGap,BoxSi[t],gGeoMan->GetMedium("HYPsilicon"));
332  LaySi[t]->SetLineColor(kPink);
333  LayAb[t]->SetLineColor(kYellow);
334  TGeoCombiTrans* trc1 = new TGeoCombiTrans(xa[k],ya[k],za[k],new TGeoRotation ());
335  trc1->SetName(name);
336  trc1->RegisterYourself();
337  LayAsmb[t]->AddNode(LayAb[t],k, trc1);
338  TGeoCombiTrans* trc2 = new TGeoCombiTrans(xg[k],yg[k],zg[k],new TGeoRotation ());
339  trc2->SetName(name1);
340  trc2->RegisterYourself();
341  LayAsmb[t]->AddNode(LaySi[t],k, trc2);
342  TGeoCombiTrans* trc3 = new TGeoCombiTrans(xl[k],yl[k],zl[k], new TGeoRotation ());
343  trc3->SetName(name2);
344  trc3->RegisterYourself();
345  BoxAsmb[j]->AddNode(LayAsmb[t],k,trc3);
346  t = t+1;
347  }
348  }
349 
350  if(j==1){
351  t=20;
352  for(Int_t k=20; k<40; k++)
353  {
354 
355  //sprintf(tmp,"stgQuad#0%d",j);
356  //sprintf(tmpAbs,"stglA%d%d%d#01",j,x,k);//target
357  //sprintf(tmpGap,"stglS%d%d%d#01",j,x,k);//silicon
358 
359  // sprintf(tmplayb,"stgLayB_%d",k);
360  sprintf(tmplay,"stgLay%d",k);
361  sprintf(tmpAbs,"stgBlAb%d",k);
362  sprintf(tmpGap,"stgBlSi%d",k);
363  sprintf(tmpVAbs,"stglAb%d",k);
364  sprintf(tmpVGap,"stglSi%d",k);
365 
366  sprintf(name,"transAb%d",k);
367  sprintf(name1,"transSi%d",k);
368  sprintf(name2,"transLay%d",k);
369 
370  LayAsmb[t]= new TGeoVolumeAssembly(tmplay);
371  // LayB=new TGeoBBox("stgLayB",dl[j][k],hl[j][k],zll[j][k]);
372  // LayAsmb= new TGeoVolume("stgLay",LayB,gGeoMan->GetMedium("vacuum"));
373 
374 
375 
376  BoxAb[t] = new TGeoBBox(tmpAbs,da[k-20],ha[k-20],zla[k-20]);
377  LayAb[t] = new TGeoVolume(tmpVAbs,BoxAb[k],gGeoMan->GetMedium("HYPdiamond"));
378  BoxSi[t] = new TGeoBBox(tmpGap,dg[k-20],hg[k-20],zlg[k-20]);
379  LaySi[t] = new TGeoVolume(tmpVGap,BoxSi[t],gGeoMan->GetMedium("HYPsilicon"));
380  LaySi[t]->SetLineColor(kPink);
381  LayAb[t]->SetLineColor(kYellow);
382  TGeoCombiTrans* trc1 = new TGeoCombiTrans(xa[k-20],ya[k-20],za[k-20],new TGeoRotation ());
383  trc1->SetName(name);
384  trc1->RegisterYourself();
385  LayAsmb[t]->AddNode(LayAb[t],k, trc1);
386 
387  TGeoCombiTrans* trc2 = new TGeoCombiTrans(xg[k-20],yg[k-20],zg[k-20],new TGeoRotation ());
388  trc2->SetName(name1);
389  trc2->RegisterYourself();
390  LayAsmb[t]->AddNode(LaySi[t],k, trc2);
391 
392  TGeoCombiTrans* trc3 = new TGeoCombiTrans(xl[k-20],yl[k-20],zl[k-20], new TGeoRotation ());
393  trc3->SetName(name2);
394  trc3->RegisterYourself();
395  BoxAsmb[j]->AddNode(LayAsmb[t],k,trc3);
396 
397  t = t +1;
398  }
399  }
400 
401  if(j==2){
402  t=40;
403  for(Int_t k=40; k<60; k++)
404  {
405 
406  //sprintf(tmp,"stgQuad#0%d",j);
407  //sprintf(tmpAbs,"stglA%d%d%d#01",j,x,k);//target
408  //sprintf(tmpGap,"stglS%d%d%d#01",j,x,k);//silicon
409 
410  // sprintf(tmplayb,"stgLayB_%d",k);
411  sprintf(tmplay,"stgLay%d",k);
412  sprintf(tmpAbs,"stgBlAb%d",k);
413  sprintf(tmpGap,"stgBlSi%d",k);
414  sprintf(tmpVAbs,"stglAb%d",k);
415  sprintf(tmpVGap,"stglSi%d",k);
416 
417  sprintf(name,"transAb%d",k);
418  sprintf(name1,"transSi%d",k);
419  sprintf(name2,"transLay%d",k);
420 
421  LayAsmb[t]= new TGeoVolumeAssembly(tmplay);
422  // LayB=new TGeoBBox("stgLayB",dl[j][k],hl[j][k],zll[j][k]);
423  // LayAsmb= new TGeoVolume("stgLay",LayB,gGeoMan->GetMedium("vacuum"));
424 
425 
426 
427  BoxAb[t] = new TGeoBBox(tmpAbs,da[k-40],ha[k-40],zla[k-40]);
428  LayAb[t] = new TGeoVolume(tmpVAbs,BoxAb[t],gGeoMan->GetMedium("HYPdiamond"));
429  BoxSi[t] = new TGeoBBox(tmpGap,dg[k-40],hg[k-40],zlg[k-40]);
430  LaySi[t] = new TGeoVolume(tmpVGap,BoxSi[t],gGeoMan->GetMedium("HYPsilicon"));
431  LaySi[t]->SetLineColor(kPink);
432  LayAb[t]->SetLineColor(kYellow);
433 
434  TGeoCombiTrans* trc1 = new TGeoCombiTrans(xa[k-40],ya[k-40],za[k-40],new TGeoRotation ());
435  trc1->SetName(name);
436  trc1->RegisterYourself();
437  LayAsmb[t]->AddNode(LayAb[t],k, trc1);
438 
439  TGeoCombiTrans* trc2 = new TGeoCombiTrans(xg[k-40],yg[k-40],zg[k-40],new TGeoRotation ());
440  trc2->SetName(name1);
441  trc2->RegisterYourself();
442  LayAsmb[t]->AddNode(LaySi[t],k, trc2);
443 
444  TGeoCombiTrans* trc3 = new TGeoCombiTrans(xl[k-40],yl[k-40],zl[k-40], new TGeoRotation ());
445  trc3->SetName(name2);
446  trc3->RegisterYourself();
447  BoxAsmb[j]->AddNode(LayAsmb[t],k,trc3);
448  t = t +1;
449  }
450  }
451 
452  if(j==3){
453  t = 60;
454  for(Int_t k=60; k<80; k++)
455  {
456 
457  //sprintf(tmp,"stgQuad#0%d",j);
458  //sprintf(tmpAbs,"stglA%d%d%d#01",j,x,k);//target
459  //sprintf(tmpGap,"stglS%d%d%d#01",j,x,k);//silicon
460 
461  // sprintf(tmplayb,"stgLayB_%d",k);
462  sprintf(tmplay,"stgLay%d",k);
463  sprintf(tmpAbs,"stgBlAb%d",k);
464  sprintf(tmpGap,"stgBlSi%d",k);
465  sprintf(tmpVAbs,"stglAb%d",k);
466  sprintf(tmpVGap,"stglSi%d",k);
467 
468  sprintf(name,"transAb%d",k);
469  sprintf(name1,"transSi%d",k);
470  sprintf(name2,"transLay%d",k);
471 
472  LayAsmb[t]= new TGeoVolumeAssembly(tmplay);
473  // LayB=new TGeoBBox("stgLayB",dl[j][k],hl[j][k],zll[j][k]);
474  // LayAsmb= new TGeoVolume("stgLay",LayB,gGeoMan->GetMedium("vacuum"));
475 
476 
477 
478  BoxAb[t] = new TGeoBBox(tmpAbs,da[k-60],ha[k-60],zla[k-60]);
479  LayAb[t] = new TGeoVolume(tmpVAbs,BoxAb[t],gGeoMan->GetMedium("HYPdiamond"));
480  BoxSi[t] = new TGeoBBox(tmpGap,dg[k-60],hg[k-60],zlg[k-60]);
481  LaySi[t] = new TGeoVolume(tmpVGap,BoxSi[t],gGeoMan->GetMedium("HYPsilicon"));
482  LaySi[t]->SetLineColor(kPink);
483  LayAb[t]->SetLineColor(kYellow);
484 
485  TGeoCombiTrans* trc1 = new TGeoCombiTrans(xa[k-60],ya[k-60],za[k-60],new TGeoRotation ());
486  trc1->SetName(name);
487  trc1->RegisterYourself();
488  LayAsmb[t]->AddNode(LayAb[t],k, trc1);
489  TGeoCombiTrans* trc2 = new TGeoCombiTrans(xg[k-60],yg[k-60],zg[k-60],new TGeoRotation ());
490  trc2->SetName(name1);
491  trc2->RegisterYourself();
492  LayAsmb[t]->AddNode(LaySi[t],k, trc2);
493  TGeoCombiTrans* trc3 = new TGeoCombiTrans(xl[k-60],yl[k-60],zl[k-60], new TGeoRotation ());
494  trc3->SetName(name2);
495  trc3->RegisterYourself();
496  BoxAsmb[j]->AddNode(LayAsmb[t],k,trc3);
497 
498  t = t+1;
499  }
500 
501  }
502 
503  }
504 
505 
506  pipe = new TGeoTube("stghypPipe",0.69,0.7,10.);
507  hyppipe = new TGeoVolume("stglpipe",pipe,gGeoMan->GetMedium("HYPcarbon"));
508 
509  TGeoCombiTrans* trc4 = new TGeoCombiTrans(0., 0., 0., new TGeoRotation ());
510 
511  trc4->SetName("transpipe");
512  trc4->RegisterYourself();
513  complex->AddNode(hyppipe, 0,trc4);
514 
515  top->AddNode(complex,0,new TGeoCombiTrans(0., 0., -76.5, new TGeoRotation ()));
516 
517  gGeoMan->CloseGeometry();
518  top->Write();
519  fi->Close();
520  //top->Draw("ogl");
521  return 0;
522 }
523 
TObjArray * d
FairGeoLoader * geoLoad
Int_t i
Definition: run_full.C:25
FairGeoMedia * Media
TTree * b
TVector3 ComputeDimensions(const int copyNo, Double_t *par)
TGeoManager * gGeoMan
int n
Double_t par[3]
float Tan(float x)
Definition: PndCAMath.h:165
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Definition: P4_F32vec4.h:26
__m128 v
Definition: P4_F32vec4.h:4
TGeoVolume * top
static T Abs(const T &x)
Definition: PndCAMath.h:39
Double_t const fAbsorberThickness
FairGeoBuilder * geobuild
TFile * fi
Double_t
TGeoRotation rot2
TGeoCombiTrans * trc3
Double_t z
TString name
TVector3 rotate(TVector3 vec, TGeoRotation *rotma)
TGeoCombiTrans * trc1
TVector3 v2
Definition: bump_analys.C:40
TGeoRotation rot
TTree * t
Definition: bump_analys.C:13
int create_HypSTxy3Cmic_rootgeo3()
FairGeoInterface * geoFace
TVector3 ComputeTransformation(const int copyNo, Double_t *par)
Double_t Pi
TGeoCombiTrans * trc2
dble_vec_t vec[12]
Definition: ranlxd.cxx:380
TString outfile