From bd0c01004c8668a4521a7cf403f4a75175868c43 Mon Sep 17 00:00:00 2001 From: Philipp Klaus Date: Fri, 4 Aug 2017 17:49:14 +0200 Subject: [PATCH] v0.4 --- mvd.C | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 mvd.C diff --git a/mvd.C b/mvd.C new file mode 100644 index 0000000..145851f --- /dev/null +++ b/mvd.C @@ -0,0 +1,96 @@ +int numStations = 4; +Float_t quadrantBeamOffset[4] = {-0.54, -0.54, -0.82, -1.04}; +Float_t carrierDimensions[4][2] = {{5.0, 5.15}, {8.0, 8.0}, {11.0, 9.9}, {14.0, 12.75}}; +Float_t stationPosition[4] = {5.0, 10.0, 15.0, 20.0}; +int sensorRows[4] = {3, 5, 7, 10}; +int sensorCols[4] = {1, 2, 3, 4}; +// 3xFSBB : 30 x 13 mm2 (of which the lower 3mm inactive) +Float_t sensorDimensionsActive[3] = {3., 1.0, 0.005}; +Float_t sensorDimensionsPassive[3] = {3., 0.3, 0.005}; +Float_t sensorPitch = sensorDimensionsActive[1] + sensorDimensionsPassive[1] - 0.05; +Float_t fpcDimensions[3] = {-1, 1.0, 0.004}; + +void mvd() + { + TGeoManager *manager = new TGeoManager("Chamber Layout", "Chamber Layout"); + TGeoMaterial *mat = new TGeoMaterial("Vacuum", 0.,0.,0.); + TGeoMaterial *tmat = new TGeoMaterial("TubeMat", 26.98,13.,2.700); + tmat->SetTransparency(50); + TGeoMaterial *wmat = new TGeoMaterial("WireMat", 63.546,29.,8.920); + TGeoMaterial *matAl = new TGeoMaterial("Al", 26.98,13,2.7); + TGeoMedium *med = new TGeoMedium("Vacuum", 0, mat); + TGeoMedium *tmed = new TGeoMedium("TubeMed", 0, tmat); + TGeoMedium *wmed = new TGeoMedium("WireMed", 0, wmat); + TGeoMedium *Al = new TGeoMedium("AlMed", 2, matAl); + TGeoVolume *top = manager->MakeBox("Top",med,150.,150.,150.); + + manager->SetTopVolume(top); + + TGeoVolume *sensor_active = manager->MakeBox("sensor_active", Al, sensorDimensionsActive[0]/2, sensorDimensionsActive[1]/2, sensorDimensionsActive[2]/2); + TGeoVolume *sensor_passive = manager->MakeBox("sensor_passive", Al, sensorDimensionsActive[0]/2, sensorDimensionsActive[1]/2, sensorDimensionsActive[2]/2); + sensor_active->SetTransparency(10); + sensor_active->SetLineColor(20); + sensor_passive->SetTransparency(2); + sensor_passive->SetLineColor(24); + + TGeoTranslation T; + TGeoRotation R; + TGeoCombiTrans *M; + char station_name[30], quadrant_name[30], carrier_name[30], quadrant_name[30]; + + for (int i=0; iMakeBox("carrier", Al, cd[0]/2, cd[1]/2, cd[2]/2); + //carrier->GetShape()->SetTransform(new TGeoTranslation(8.0/2,8.0/2,0.05/2)); + carrier->SetTransparency(1); + carrier->SetLineColor(27); + quadrant->AddNode(carrier, 1); + for (int k=0; kAddNode(sensor_active, 1, M); + // Passive + T.SetTranslation(sensorDimensionsActive[0]*(Float_t)k, sensorDimensionsActive[1]+sensorPitch*l, z_offset); + R.SetAngles(0.,0.,0.); + M = new TGeoCombiTrans(T,R); + quadrant->AddNode(sensor_passive, 1, M); + } + } + for (int j=0; j<4; j++) + { + cout << " Quadrant " << j << endl; + T.SetTranslation(-quadrantBeamOffset[i]-cd[0]/2, -quadrantBeamOffset[i]-cd[1]/2, 0.0); + //T.SetTranslation(-quadrantBeamOffset[i], -quadrantBeamOffset[i], 0.0); + R.SetAngles(0.,0.,90.*j); + M = new TGeoCombiTrans(T,R); + station->AddNode(quadrant, j, M); + } + T.SetTranslation(0, 0, stationPosition[i]); + R.SetAngles(0.,0.,0.); + M = new TGeoCombiTrans(T,R); + top->AddNode(station, 1, M); + } + manager->CloseGeometry(); + //TCanvas *c3D = new TCanvas("c3D","MVD Layout",1200,800); + //top->Draw("ogl"); + //station->Draw("ogl"); + //station->Draw(""); + top->Draw(""); + TView *view = gPad->GetView()->ShowAxis(); + top->Export("mvd.root"); + } -- 2.43.0