{ //=========Macro generated from canvas: Trajectories/Trajectories //========= (Tue Mar 8 12:11:17 2011) by ROOT version5.29/01 new TGeoManager("simple1", "Simple geometry"); Double_t dx,dy,dz; Double_t dx1, dx2, dy1, dy2; Double_t vert[20], par[20]; Double_t theta, phi, h1, bl1, tl1, alpha1, h2, bl2, tl2, alpha2; Double_t twist; Double_t origin[3]; Double_t rmin, rmax, rmin1, rmax1, rmin2, rmax2; Double_t r, rlo, rhi; Double_t phi1, phi2; Double_t a,b; Double_t point[3], norm[3]; Double_t rin, stin, rout, stout; Double_t thx, phx, thy, phy, thz, phz; Double_t alpha, theta1, theta2, phi1, phi2, dphi; Double_t tr[3], rot[9]; Double_t z, density, radl, absl, w; Double_t lx,ly,lz,tx,ty,tz; Double_t xvert[50], yvert[50]; Double_t zsect,x0,y0,scale0; Int_t nel, numed, nz, nedges, nvert; TGeoBoolNode *pBoolNode = 0; // MATERIALS, MIXTURES AND TRACKING MEDIA // Material: Vacuum a = 0.000000; z = 0.000000; density = 0.000000; radl = 1000000000000000019884624838656.000000; absl = 1000000000000000019884624838656.000000; pMat1 = new TGeoMaterial("Vacuum", a,z,density,radl,absl); pMat1->SetIndex(0); // Medium: Vacuum numed = 1; // medium number par[0] = 0.000000; // isvol par[1] = 0.000000; // ifield par[2] = 0.000000; // fieldm par[3] = 0.000000; // tmaxfd par[4] = 0.000000; // stemax par[5] = 0.000000; // deemax par[6] = 0.000000; // epsil par[7] = 0.000000; // stmin pMed1 = new TGeoMedium("Vacuum", numed,pMat1, par); // Material: Ge a = 72.590000; z = 32.000000; density = 5.320000; radl = 2.301536; absl = 27.348711; pMat2 = new TGeoMaterial("Ge", a,z,density,radl,absl); pMat2->SetIndex(1); // Medium: MED numed = 1; // medium number par[0] = 0.000000; // isvol par[1] = 0.000000; // ifield par[2] = 0.000000; // fieldm par[3] = 0.000000; // tmaxfd par[4] = 0.000000; // stemax par[5] = 0.000000; // deemax par[6] = 0.000000; // epsil par[7] = 0.000000; // stmin pMed2 = new TGeoMedium("MED", numed,pMat2, par); // TRANSFORMATION MATRICES // Shape: TOP type: TGeoBBox dx = 50.000000; dy = 50.000000; dz = 100.000000; TGeoShape *pTOP_1 = new TGeoBBox("TOP", dx,dy,dz); // Volume: TOP pTOP_1064c4c40 = new TGeoVolume("TOP",pTOP_1, pMed1); pTOP_1064c4c40->SetVisLeaves(kTRUE); // SET TOP VOLUME OF GEOMETRY gGeoManager->SetTopVolume(pTOP_1064c4c40); // SHAPES, VOLUMES AND GEOMETRICAL HIERARCHY // Shape: tempcyl_3 type: TGeoTube rmin = 0.000000; rmax = 40.000000; dz = 45.000000; TGeoShape *ptempcyl_3_3 = new TGeoTube("tempcyl_3",rmin,rmax,dz); // Shape: plug_3 type: TGeoTube rmin = 0.000000; rmax = 5.000000; dz = 38.500000; TGeoShape *pplug_3_4 = new TGeoTube("plug_3",rmin,rmax,dz); // Translation: plugtrans_3 dx = 0.000000; dy = 0.000000; dz = 6.500000; TGeoTranslation *pMatrix3 = new TGeoTranslation("plugtrans_3",dx,dy,dz); pBoolNode = new TGeoSubtraction(ptempcyl_3_3,pplug_3_4,0,pMatrix3); // Shape: pluggedtempcyl_3 type: TGeoCompositeShape TGeoShape *ppluggedtempcyl_3_5 = new TGeoCompositeShape("pluggedtempcyl_3", pBoolNode); ppluggedtempcyl_3_5->SetTitle("(tempcyl_3-plug_3:plugtrans_3)"); // Shape: xtru_3 type: TGeoXtru nz = 2; nvert = 6; TGeoXtru *xtru = new TGeoXtru(nz); xtru->SetName("xtru_3"); xvert[0] = 24.432583; yvert[0] = -42.318475; xvert[1] = -24.432583; yvert[1] = -42.318475; xvert[2] = -48.865166; yvert[2] = 0.000000; xvert[3] = -24.432583; yvert[3] = 42.318475; xvert[4] = 24.432583; yvert[4] = 42.318475; xvert[5] = 48.865166; yvert[5] = 0.000000; xtru->DefinePolygon(nvert,xvert,yvert); zsect = 0.000000; x0 = 0.000000; y0 = 0.000000; scale0 = 0.625000; xtru->DefineSection(0,zsect,x0,y0,scale0); zsect = 90.000000; x0 = 0.000000; y0 = 0.000000; scale0 = 1.000000; xtru->DefineSection(1,zsect,x0,y0,scale0); TGeoShape *pxtru_3_2 = xtru; // Translation: cyltrans_3 dx = 0.000000; dy = 0.000000; dz = 45.000000; TGeoTranslation *pMatrix4 = new TGeoTranslation("cyltrans_3",dx,dy,dz); pBoolNode = new TGeoIntersection(ppluggedtempcyl_3_5,pxtru_3_2,pMatrix4,0); // Shape: AGATAcrystalComposite_3 type: TGeoCompositeShape TGeoShape *pAGATAcrystalComposite_3_6 = new TGeoCompositeShape("AGATAcrystalComposite_3", pBoolNode); pAGATAcrystalComposite_3_6->SetTitle("(pluggedtempcyl_3:cyltrans_3*xtru_3)"); // Volume: AGATAcrystalType_3 pAGATAcrystalType_3_1064c7570 = new TGeoVolume("AGATAcrystalType_3",pAGATAcrystalComposite_3_6, pMed2); pAGATAcrystalType_3_1064c7570->SetLineColor(kBlack); pAGATAcrystalType_3_1064c7570->SetFillColor(kBlack); pAGATAcrystalType_3_1064c7570->SetFillStyle(1001); pAGATAcrystalType_3_1064c7570->SetLineWidth(2); pAGATAcrystalType_3_1064c7570->SetVisLeaves(kTRUE); pAGATAcrystalType_3_1064c7570->SetTransparency(50); pTOP_1064c4c40->AddNode(pAGATAcrystalType_3_1064c7570, 0); //Add boxes for histogram gROOT->ProcessLine(".x histoex.C"); TH3F *h3 = muh111_histogram; Float_t max = h3->GetMaximum(); int atbin=0; for(int xbin=1; xbin<=h3->GetNbinsX(); ++xbin){ for(int ybin=1; ybin<=h3->GetNbinsY(); ++ybin){ for(int zbin=1; zbin<=h3->GetNbinsZ(); ++zbin){ float bincontent = h3->GetBinContent(xbin,ybin,zbin); double scale = bincontent/max; if (scale>1) scale=1; if (scale<0) scale=0; //Get bin center float xc = h3->GetXaxis()->GetBinCenter(xbin); float yc = h3->GetYaxis()->GetBinCenter(ybin); float zc = h3->GetZaxis()->GetBinCenter(zbin); //get d(x,y,z) float dX = h3->GetXaxis()->GetBinWidth(xbin)*scale; float dY = h3->GetYaxis()->GetBinWidth(ybin)*scale; float dZ = h3->GetZaxis()->GetBinWidth(zbin)*scale; //Make box TGeoVolume *box = gGeoManager->MakeBox(Form("box_%i",atbin++), pMed1, dX, dY, dZ); box->SetLineColor(kRed); pTOP_1064c4c40->AddNode(box,0,new TGeoTranslation(xc,yc,zc)); } } } // CLOSE GEOMETRY gGeoManager->CloseGeometry(); gGeoManager->SetNsegments(40); // TEveGeoNode::SetCSGExportNSeg(40); // TEveManager::Create(); // // TGeoNode* node = gGeoManager->GetTopNode(); // TEveGeoTopNode* en = new TEveGeoTopNode(gGeoManager, node); // en->SetVisLevel(4); // en->GetNode()->GetVolume()->SetVisibility(kFALSE); // // gEve->AddGlobalElement(en); // // gEve->Redraw3D(kTRUE); gGeoManager->SetVisLevel(4); gGeoManager->SetVisOption(0); gGeoManager->GetTopVolume()->Draw(); }