12   Double_t     beamlineangle =  -TMath::DegToRad()*0.0; 
 
   56    gSystem->Load(
"libGeoBase");
 
   57    gSystem->Load(
"libParBase");
 
   58    gSystem->Load(
"libBase");
 
   59    gSystem->Load(
"libPndData");
 
   60    gSystem->Load(
"libPassive");
 
   63    TFile* 
fi = 
new TFile(outfile,
"RECREATE");
 
   65    FairGeoLoader* 
geoLoad = 
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
 
   66    FairGeoInterface *
geoFace = geoLoad->getGeoInterface();
 
   68    geoFace->setMediaFile(
"$VMCWORKDIR/geometry/media_pnd.geo");
 
   73    FairGeoMedia *
Media =  geoFace->getMedia();
 
   74    FairGeoBuilder *
geobuild=geoLoad->getGeoBuilder();
 
   83    Int_t 
nmed=geobuild->createMedium(MediumAir);
 
   84    nmed=geobuild->createMedium(MediumTyvek);
 
   85    nmed=geobuild->createMedium(MediumCarbon);
 
   86    nmed=geobuild->createMedium(MediumLead);
 
   87    nmed=geobuild->createMedium(MediumScint);
 
   88    nmed=geobuild->createMedium(MediumFiber);
 
   90    TGeoManager* 
gGeoMan = (TGeoManager*)gROOT->FindObject(
"FAIRGeom");
 
   94    TGeoVolume *
top = 
new TGeoVolumeAssembly(
"Emc5");
 
   96    gGeoMan->SetTopVolume(top);
 
  104    TGeoShape* 
SuperModuleShape = 
new TGeoBBox(name,suprModXsize/2.,suprModYsize/2.,thickness/2.);
 
  105    name = 
"FscSuperModuleVolume";
 
  107    TGeoVolume* 
SuperModuleVolume = 
new TGeoVolume(name, SuperModuleShape, gGeoMan->GetMedium(medium));
 
  108    SuperModuleVolume->SetLineColor(2);
 
  111    name = 
"FscTyvekShape";
 
  112    TGeoShape* 
TyvekShape = 
new TGeoBBox(name,suprModXsize/2. - paperbundle,suprModYsize/2. - paperbundle,thickness/2. - paperbundle);
 
  113    name = 
"FscTyvekVolume";
 
  115    TGeoVolume* 
TyvekVolume = 
new TGeoVolume(name, TyvekShape, gGeoMan->GetMedium(medium));
 
  116    TyvekVolume->SetLineColor(3);
 
  117    SuperModuleVolume->AddNode(TyvekVolume,0);
 
  120    name = 
"FscModuleShape";
 
  121    TGeoShape* 
ModuleShape = 
new TGeoBBox(name,cellxsize/2.,cellysize/2.,holder_thickness/2.);
 
  122    name = 
"FscModuleVolume";
 
  124    TGeoVolume* 
ModuleVolume = 
new TGeoVolume(name, ModuleShape, gGeoMan->GetMedium(medium));
 
  125    ModuleVolume->SetLineColor(2);
 
  135            x = -cellxsize + 2.*(cellxsize/(
Double_t)nClsSuperModuleX)*(ix - 0.5);
 
  136            y = -cellxsize + 2.*(cellxsize/(
Double_t)nClsSuperModuleY)*(iy - 0.5);
 
  137            cout<<
"===Inside supermodule"<<endl;
 
  138            cout <<
"x="<<x<<
" y="<<y<<endl;
 
  139            cout <<
"ix="<<ix<<
" iy="<<iy<<endl;
 
  141            iCombTrans = 
new TGeoCombiTrans(x,y,0, 
new TGeoRotation(rot));
 
  142            name = 
"FscModuleVolume";
 
  144            iCombTrans->SetName(name);
 
  145            iCombTrans->RegisterYourself();
 
  146            TyvekVolume->AddNode(ModuleVolume,iCopy,iCombTrans);
 
  152    name = 
"FscLayerHolderShape";
 
  153    TGeoShape* 
LayerHolderShape = 
new TGeoBBox(name, cellxsize/2. - crystalspace, cellysize/2. - crystalspace, cell_thickness/2.);
 
  154    name = 
"FscLayerHolderVolume";
 
  162       name = 
"FscLeadShape";
 
  163       TGeoShape* 
LeadShape = 
new TGeoBBox(name, cellxsize/2. - crystalspace, cellysize/2. - crystalspace, Pb_thickness/2.);
 
  164       name = 
"FscLeadVolume";
 
  166       TGeoVolume* 
LeadVolume = 
new TGeoVolume(name, LeadShape, gGeoMan->GetMedium(medium));
 
  167       LeadVolume->SetLineColor(4);
 
  168       iCombTrans = 
new TGeoCombiTrans(0,0,-cell_thickness/2.+Pb_thickness/2., 
new TGeoRotation(rot));
 
  169       LayerHolderVolume->AddNode(LeadVolume,0,iCombTrans);
 
  171       name = 
"FscSciShape";
 
  172       TGeoShape* 
SciShape = 
new TGeoBBox(name, cellxsize/2. - crystalspace, cellysize/2. - crystalspace, Sci_thickness/2.);
 
  173       name = 
"FscSciVolume";
 
  175       TGeoVolume* 
SciVolume = 
new TGeoVolume(name, SciShape, gGeoMan->GetMedium(medium));
 
  176       SciVolume->SetLineColor(5);
 
  177       iCombTrans = 
new TGeoCombiTrans(0,0,cell_thickness/2.-Sci_thickness/2., 
new TGeoRotation(rot));
 
  178       LayerHolderVolume->AddNode(SciVolume,0,iCombTrans);
 
  186            z = -holder_thickness/2. + 0.5 * cell_thickness *(2.*iz - 1.);
 
  187            iCombTrans = 
new TGeoCombiTrans(0,0,z, 
new TGeoRotation(rot));
 
  188            name = 
"FscLayerHolder";
 
  190            ModuleVolume->AddNode(LayerHolderVolume,iz-1,iCombTrans);
 
  196    name = 
"FscFibHoleSHape";
 
  198    TGeoShape* 
FiberHoleShape = 
new TGeoTube(name, 0., fiber_hole_r, (holder_thickness)/2.);
 
  199    name = 
"FscFibHoleVolume";
 
  201    TGeoVolume* 
FiberHoleVolume = 
new TGeoVolume(name, FiberHoleShape, gGeoMan->GetMedium(medium));
 
  206                    x = -Absorb_xsize/2. + (Absorb_xsize/(
Double_t)numfibers)*(ix - 0.5);
 
  207                    y = -Absorb_ysize/2. + (Absorb_ysize/(
Double_t)numfibers)*(iy - 0.5);
 
  209                    iCombTrans = 
new TGeoCombiTrans(x,y,0, 
new TGeoRotation(rot));
 
  210                    name = 
"FscFibHoleVolume";
 
  212                    iCombTrans->SetName(name);
 
  213                    iCombTrans->RegisterYourself();
 
  216                    ModuleVolume->AddNodeOverlap(FiberHoleVolume,iCopy,iCombTrans);  
 
  222    name = 
"FscFiberShape";
 
  224    TGeoShape* 
FiberShape = 
new TGeoTube(name, 0., fiber_r, (holder_thickness)/2.);
 
  225    name = 
"FscFiberVolume";
 
  227    TGeoVolume* 
FiberVolume = 
new TGeoVolume(name, FiberShape, gGeoMan->GetMedium(medium));
 
  228    FiberVolume->SetLineColor(5);
 
  229    iCombTrans = 
new TGeoCombiTrans(0,0,0, 
new TGeoRotation(rot));
 
  230    FiberHoleVolume->AddNode(FiberVolume,0,iCombTrans);
 
  241                    x = 0.5 * suprModXsize  * (2. * ix - numcellsx/nClsSuperModuleX - 1.);
 
  242                    y = 0.5 * suprModYsize  * (2. * iy - numcellsy/nClsSuperModuleY - 1.);
 
  243                    cout<<
"======Supermodules"<<endl;
 
  244                    cout <<
"x="<<x<<
" y="<<y<<endl;
 
  245                    cout <<
"ix="<<ix<<
" iy="<<iy<<endl;
 
  247                    iCombTrans = 
new TGeoCombiTrans(x,y,0., 
new TGeoRotation(rot));
 
  248                    name = 
"FscSuperModuleVolume";
 
  250                    CopyCode = 100*ix+iy;
 
  252                    iCombTrans->SetName(name);
 
  253                    iCombTrans->RegisterYourself();
 
  255                    top->AddNode(SuperModuleVolume,CopyCode,iCombTrans);
 
  270    TFile *
fb = 
new TFile(FileName);
 
  271    TGeoVolume *
MechFsc=(TGeoVolume *)fb->Get(
"topNode");
 
  274    MechFsc->PrintNodes();
 
  276    TGeoNode *
n=MechFsc->GetNode(0);
 
  285    MFscVol->PrintNodes();
 
  291    rotMechFsc.RotateX(-90.);
 
  292    rotMechFsc.RotateY(180.);
 
  296    top->AddNode(MFscVol,0, 
new TGeoCombiTrans(11.0, 4.8, -38.9, 
new TGeoRotation(rotMechFsc)));
 
  301    gGeoMan->CloseGeometry();
 
TGeoShape * SuperModuleShape
const Double_t tyvekbundle
const Double_t fiber_hole_r
const Int_t nClsSuperModuleX
FairGeoMedium * MediumScint
TGeoShape * LayerHolderShape
TGeoShape * FiberHoleShape
const Int_t nClsSuperModuleY
FairGeoMedium * MediumLead
const Double_t Pb_thickness
FairGeoBuilder * geobuild
const Double_t paperbundle
FairGeoMedium * MediumTyvek
FairGeoMedium * MediumCarbon
TGeoVolume * SuperModuleVolume
Double_t holder_thickness
const Double_t Sci_thickness
FairGeoMedium * MediumAir
static T Max(const T &x, const T &y)
const Double_t Air_thickness
TGeoVolume * LayerHolderVolume
const Double_t Absorb_ysize
FairGeoMedium * MediumFiber
TGeoCombiTrans * iCombTrans
FairGeoInterface * geoFace
const Double_t Absorb_xsize
TGeoVolume * FiberHoleVolume
TGeoVolume * ModuleVolume