diff --git a/macro/mcbm/geometry/trd/Create_TRD_Geometry_v22a.C b/macro/mcbm/geometry/trd/Create_TRD_Geometry_v22a.C index 204d10bbf28fb0da7e26b57f6022437a7bdd3820..89494e557452814e0ad6983179cfc7a7c6708125 100644 --- a/macro/mcbm/geometry/trd/Create_TRD_Geometry_v22a.C +++ b/macro/mcbm/geometry/trd/Create_TRD_Geometry_v22a.C @@ -210,13 +210,13 @@ const Int_t MaxLayers = 10; // max layers // SIS300-mu // 1: plot, 0: hide // const Int_t ShowLayer[MaxLayers] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; // // SIS300-e // 1: plot, 0: hide -Int_t ShowLayer[MaxLayers] = {1, 1, 0, 1, 0, 0, 0, 0, 0, 0}; // SIS100-4l is default +Int_t ShowLayer[MaxLayers] = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0}; // SIS100-4l is default -Int_t BusBarOrientation[MaxLayers] = {1, 1, 0, 0, 1, 0, 0, 0, 0, 0}; // 1 = vertical +Int_t BusBarOrientation[MaxLayers] = {0, 1, 1, 0, 1, 0, 0, 0, 0, 0}; // 1 = vertical Int_t PlaneId[MaxLayers]; // automatically filled with layer ID -const Int_t LayerType[MaxLayers] = {10, 11, 20, 20, 20, 21, 20, 21, 30, 31}; // ab: a [1-4] - layer +const Int_t LayerType[MaxLayers] = {20, 10, 11, 20, 20, 21, 20, 21, 30, 31}; // ab: a [1-4] - layer // type, b [0,1] - // vertical/horizontal pads // ### Layer Type 20 is mCBM Layer Type 2 with Buch prototype module (type 4) @@ -3208,8 +3208,8 @@ void create_detector_layers(Int_t layerId) // install TRD2D detectors in the TRD setup Int_t type = -1; - if (layerId == 2 && layerType == 2) type = 10; - if (layerId == 3 && layerType == 2) type = 9; + if (layerId == 1 && layerType == 2) type = 10; + if (layerId == 0 && layerType == 2) type = 9; if (type < 0) return; Info("create_detector_layers", "add module[0x%p] of type[%d]", (void*) gModules[type - 1], type); @@ -3219,14 +3219,14 @@ void create_detector_layers(Int_t layerId) Double_t yPos = 2.5 * 5.12; // check with FASPRO_width; Double_t zPos = 0.; - if (layerId == 3) { + if (layerId == 0) { // DESH xPos = 0; yPos = 0; // xPos = xPos - 35.5; zPos = -2.0; } - if (layerId == 2) { + if (layerId == 1) { xPos = xPos - 22.5; yPos = yPos - 12.5; zPos = 3.0; diff --git a/macro/mcbm/geometry/trd/Create_TRD_Geometry_v22b.C b/macro/mcbm/geometry/trd/Create_TRD_Geometry_v22b.C index 810262af8f1b9cc5fe1d854463cd4348cd8dabf1..a7f60129b315a187ac7258ca5203a151b30ce048 100644 --- a/macro/mcbm/geometry/trd/Create_TRD_Geometry_v22b.C +++ b/macro/mcbm/geometry/trd/Create_TRD_Geometry_v22b.C @@ -2,14 +2,13 @@ SPDX-License-Identifier: GPL-3.0-only Authors: David Emschermann [committer], Alexandru Bercuci */ -// clang-format off - /// -/// \file Create_TRD_Geometry_v22a.C +/// \file Create_TRD_Geometry_v22b.C /// \brief Generates TRD geometry in Root format. /// -// 2021-10-28 - SR - v22b - based on v22a the trd 2d is removed -// 2021-10-07 - SR - v22a - based on v20b the trd 2d is inserted + +// 2021-11-15 - AB - v22b - based on v21b. Both TRD-2D modules are removed +// 2021-10-10 - AB - v21b - based on v21b. Correct order of TRD(2D) modules in the set-up // 2021-09-28 - SR - v21b - based on v21a the position is corrected // 2021-07-25 - AB - v21a - based on v20b, add 2 TRD2D modules and their support structure for the 2021 setup // 2020-05-25 - DE - v20b - based on v20a, use 2 TRD modules for 2021 setup @@ -33,12 +32,15 @@ // 2014-05-02 - DE - v14a_3e - redesign inner part of station 3, now with 5x5-1 small modules, like in station 1 and station 2 // 2014-05-02 - DE - v14a_3e - include optional GBTX readout boards on each module // 2014-05-02 - DE - v14a_3e - introduce 3x5=15 Spadic FEBs for ultimate density on module type 1 +// // 2013-11-14 - DE - v13q_3e - generate information about pad plane layout (CbmTrdPads_v14a.h) for all module types in this macro +// // 2013-11-04 - DE - v13p4 - adapt the number of front-end boards to the pad layout of the 540 mm modules // 2013-11-04 - DE - v13p4 - use 8 module types (4x S + 4x L) to better match the occupancy // 2013-10-31 - DE - v13p4 - modify the support structure of station 1 to match with the MUCH/RICH platform // 2013-10-29 - DE - v13p4 - build lattice grid as TGeoBBox instead of VolumeAssembly - in run_sim.C save 9% of time compared to v13p7 // 2013-10-29 - DE - v13p4 - build lattice grid as TGeoBBox instead of CompositeShape - in run_sim.C save 18% of time compared to v13p6 +// // 2013-10-28 - DE - introduce new geometry naming scheme: v13p1 - SIS 100 hadron // 2013-10-28 - DE - introduce new geometry naming scheme: v13p2 - SIS 100 electron // 2013-10-28 - DE - introduce new geometry naming scheme: v13p3 - SIS 100 muon @@ -46,6 +48,7 @@ // 2013-10-28 - DE - introduce new geometry naming scheme: v13p5 - SIS 300 muon // 2013-10-28 - DE - add option to draw the magnetic field vector in the magnet // 2013-09-27 - DE - do not use TGeoXtru to build the supports, use TGeoBBox instead +// // 2013-06-25 - DE - v13g trd300_rich (10 layers, z = 4100 ) - TRD right behind SIS300 RICH // 2013-06-25 - DE - v13h trd100_sts ( 4 layers, z = 2600 ) - TRD completely on RICH/MUCH platform to allow TOF to move upstream // 2013-06-25 - DE - v13i trd100_rich ( 2 layers, z = 4100 ) - TRD right behind RICH @@ -55,6 +58,7 @@ // 2013-06-25 - DE - v13l trd100_much_3_absorbers ( 4 layers, z = 4600 ) - TRD right behind SIS100 MUCH // 2013-06-25 - DE - v13m trd300_much_6_absorbers (10 layers, z = 5500 ) - TRD right behind SIS300 MUCH // 2013-06-25 - DE - v13n trd300_rich_stretched (10 layers, z = 4600 ) - TRD stretched behind SIS300 RICH +// // 2013-06-19 - DE - add TRD (I, II, III) labels on support structure // 2013-05-29 - DE - allow for flexible TRD z-positions defined by position of layer01 // 2013-05-23 - DE - remove "trd_" prefix from node names (except top node) @@ -103,18 +107,17 @@ // Name of output file with geometry const TString tagVersion = "v22b_mcbm"; -// const TString subVersion = "_1h"; -// const TString subVersion = "_1e"; -// const TString subVersion = "_1m"; -// const TString subVersion = "_3e"; -// const TString subVersion = "_3m"; +//const TString subVersion = "_1h"; +//const TString subVersion = "_1e"; +//const TString subVersion = "_1m"; +//const TString subVersion = "_3e"; +//const TString subVersion = "_3m"; const Int_t setupid = 1; // 1e is the default -// const Double_t zfront[5] = { 260., 410., 360., 410., 550. }; -const Double_t zfront[5] = {260., 155., 360., 410., 550.}; // move 1st TRD to z=180 cm // mCBM 2021_07 -// const Double_t zfront[5] = {260., 177., 360., 410., 550.}; // move 1st TRD -// to z=177 cm -// const Double_t zfront[5] = { 260., 140., 360., 410., 550. }; +//const Double_t zfront[5] = { 260., 410., 360., 410., 550. }; +const Double_t zfront[5] = {260., 180., 360., 410., 550.}; // move 1st TRD to z=180 cm // mCBM 2021_07 +//const Double_t zfront[5] = {260., 177., 360., 410., 550.}; // move 1st TRD to z=177 cm +//const Double_t zfront[5] = { 260., 140., 360., 410., 550. }; const TString setupVer[5] = {"_1h", "_1e", "_1m", "_3e", "_3m"}; const TString subVersion = setupVer[setupid]; @@ -128,31 +131,25 @@ const TString FileNamePads = "CbmTrdPads_" + tagVersion + ".h"; const Bool_t IncludeRadiator = false; // false; // true, if radiator is included in geometry const Bool_t IncludeLattice = true; // false; // true, if lattice grid is included in geometry -const Bool_t IncludeKaptonFoil = true; // false; // true, if entrance window is included in geometry -const Bool_t IncludeGasFrame = true; // false; // true, if frame around gas volume is included in geometry -const Bool_t IncludePadplane = true; // false; // true, if padplane is included in geometry -const Bool_t IncludeBackpanel = true; // false; // true, if backpanel is included in geometry -const Bool_t IncludeAluLedge = true; // false; // true, if Al-ledge around the - // backpanel is included in geometry -const Bool_t IncludeGibbet = true; // false; // true, if mTRD gibbet support to be drawn -const Bool_t IncludePowerbars = false; // false; // true, if LV copper bus bars to be drawn - -const Bool_t IncludeFebs = true; // false; // true, if FEBs are included in geometry -const Bool_t IncludeRobs = true; // true, if ROBs are included in geometry -const Bool_t IncludeAsics = true; // true, if ASICs are included in geometry -const Bool_t IncludeSupports = false; // false; // true, if support structure is included in geometry -const Bool_t IncludeLabels = false; // false; // true, if TRD (I, II, III) - // labels are plotted in (VisLevel 5) +const Bool_t IncludeKaptonFoil = true; // false; // true, if entrance window is included in geometry +const Bool_t IncludeGasFrame = true; // false; // true, if frame around gas volume is included in geometry +const Bool_t IncludePadplane = true; // false; // true, if padplane is included in geometry +const Bool_t IncludeBackpanel = true; // false; // true, if backpanel is included in geometry +const Bool_t IncludeAluLedge = true; // false; // true, if Al-ledge around the backpanel is included in geometry +const Bool_t IncludeGibbet = true; // false; // true, if mTRD gibbet support to be drawn +const Bool_t IncludePowerbars = false; // false; // true, if LV copper bus bars to be drawn + +const Bool_t IncludeFebs = true; // false; // true, if FEBs are included in geometry +const Bool_t IncludeRobs = true; // true, if ROBs are included in geometry +const Bool_t IncludeAsics = true; // true, if ASICs are included in geometry +const Bool_t IncludeSupports = false; // false; // true, if support structure is included in geometry +const Bool_t IncludeLabels = false; // false; // true, if TRD (I, II, III) labels are plotted in (VisLevel 5) const Bool_t IncludeFieldVector = false; // true, if magnetic field vector to be shown (in the magnet) // positioning switches -const Bool_t DisplaceRandom = false; // true; // false; // add random - // displacement of modules for alignment - // study -const Bool_t RotateRandom = false; // true; // false; // add random rotation of - // modules for alignment study -const Bool_t DoExplode = false; // true, // false; // add random displacement - // of modules for alignment study +const Bool_t DisplaceRandom = false; // true; // false; // add random displacement of modules for alignment study +const Bool_t RotateRandom = false; // true; // false; // add random rotation of modules for alignment study +const Bool_t DoExplode = false; // true, // false; // add random displacement of modules for alignment study // positioning parameters const Double_t maxdx = 0.2; // max +- 0.1 cm shift in x @@ -168,59 +165,40 @@ const Double_t ExplodeFactor = 1.02; // 1.02; // Factor by which modules are ex // initialise random numbers TRandom3 r3(0); -// Parameters defining the layout of the complete detector build out of -// different detector layers. +// Parameters defining the layout of the complete detector build out of different detector layers. const Int_t MaxLayers = 10; // max layers // select layers to display // -// const Int_t ShowLayer[MaxLayers] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // -// 1st layer only -// const Int_t ShowLayer[MaxLayers] = { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; // -// 2nd layer only -// const Int_t ShowLayer[MaxLayers] = { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }; // -// 5th layer only -// const Int_t ShowLayer[MaxLayers] = { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }; // -// 6th layer only -// const Int_t ShowLayer[MaxLayers] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }; // -// 9th layer only -// const Int_t ShowLayer[MaxLayers] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }; // -// 10th layer only +//const Int_t ShowLayer[MaxLayers] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // 1st layer only +//const Int_t ShowLayer[MaxLayers] = { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; // 2nd layer only +//const Int_t ShowLayer[MaxLayers] = { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }; // 5th layer only +//const Int_t ShowLayer[MaxLayers] = { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }; // 6th layer only +//const Int_t ShowLayer[MaxLayers] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }; // 9th layer only +//const Int_t ShowLayer[MaxLayers] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }; // 10th layer only // -// const Int_t ShowLayer[MaxLayers] = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; // -// Station 1, layer 1, 2 -// const Int_t ShowLayer[MaxLayers] = { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 }; // -// Station 2, layer 5, 6 -// const Int_t ShowLayer[MaxLayers] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 }; // -// Station 3, layer 9,10 -// const Int_t ShowLayer[MaxLayers] = { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0 }; // -// Station 1 and 2 -// const Int_t ShowLayer[MaxLayers] = { 1, 1, 0, 0, 1, 1, 1, 0, 1, 1 }; // -// Station 1, 2 and 3 +//const Int_t ShowLayer[MaxLayers] = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; // Station 1, layer 1, 2 +//const Int_t ShowLayer[MaxLayers] = { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 }; // Station 2, layer 5, 6 +//const Int_t ShowLayer[MaxLayers] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 }; // Station 3, layer 9,10 +//const Int_t ShowLayer[MaxLayers] = { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0 }; // Station 1 and 2 +//const Int_t ShowLayer[MaxLayers] = { 1, 1, 0, 0, 1, 1, 1, 0, 1, 1 }; // Station 1, 2 and 3 // -// const Int_t ShowLayer[MaxLayers] = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; // -// SIS100-2l // 1: plot, 0: hide -// const Int_t ShowLayer[MaxLayers] = { 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }; // -// SIS100-3l // 1: plot, 0: hide +//const Int_t ShowLayer[MaxLayers] = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; // SIS100-2l // 1: plot, 0: hide +//const Int_t ShowLayer[MaxLayers] = { 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }; // SIS100-3l // 1: plot, 0: hide // -// const Int_t ShowLayer[MaxLayers] = { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; // -// SIS100-4l // 1: plot, 0: hide -// const Int_t ShowLayer[MaxLayers] = { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1 }; // -// SIS300-mu // 1: plot, 0: hide -// const Int_t ShowLayer[MaxLayers] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; // -// SIS300-e // 1: plot, 0: hide -//Int_t ShowLayer[MaxLayers] = {1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; // SIS100-4l is default +//const Int_t ShowLayer[MaxLayers] = { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; // SIS100-4l // 1: plot, 0: hide +//const Int_t ShowLayer[MaxLayers] = { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1 }; // SIS300-mu // 1: plot, 0: hide +//const Int_t ShowLayer[MaxLayers] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; // SIS300-e // 1: plot, 0: hide Int_t ShowLayer[MaxLayers] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0}; // SIS100-4l is default -Int_t BusBarOrientation[MaxLayers] = {1, 1, 0, 0, 1, 0, 0, 0, 0, 0}; // 1 = vertical +//Int_t BusBarOrientation[MaxLayers] = {1, 1, 0, 0, 1, 0, 0, 0, 0, 0}; // 1 = vertical +Int_t BusBarOrientation[MaxLayers] = {1, 1, 1, 1, 1, 0, 0, 0, 0, 0}; // 1 = vertical Int_t PlaneId[MaxLayers]; // automatically filled with layer ID -const Int_t LayerType[MaxLayers] = {10, 11, 20, 20, 20, 21, 20, 21, 30, 31}; // ab: a [1-4] - layer - // type, b [0,1] - - // vertical/horizontal pads -// ### Layer Type 20 is mCBM Layer Type 2 with Buch prototype module (type 4) -// with vertical pads +const Int_t LayerType[MaxLayers] = {10, 11, 20, 20, 20, 21, + 20, 21, 30, 31}; // ab: a [1-4] - layer type, b [0,1] - vertical/horizontal pads +// ### Layer Type 20 is mCBM Layer Type 2 with Buch prototype module (type 4) with vertical pads // ### Layer Type 11 is Layer Type 1 with detector modules rotated by 90?? // ### Layer Type 21 is Layer Type 2 with detector modules rotated by 90?? // ### Layer Type 31 is Layer Type 3 with detector modules rotated by 90?? @@ -231,62 +209,43 @@ const Int_t LayerNrInStation[MaxLayers] = {1, 2, 3, 4, 1, 2, 3, 4, 1, 2}; Double_t LayerPosition[MaxLayers] = {0.}; // start position = 0 - 2016-07-12 - DE // 5x z-positions from 260 till 550 cm -// Double_t LayerPosition[MaxLayers] = { 260. }; // start position - 2013-10-28 -// - DE - v14_1h - SIS 100 hadron ( 4 layers, z = 2600 ) -// Double_t LayerPosition[MaxLayers] = { 410. }; // start position - 2013-10-28 -// - DE - v14_1e - SIS 100 electron ( 4 layers, z = 4100 ) -// Double_t LayerPosition[MaxLayers] = { 360. }; // start position - 2014-06-16 -// - DE - v14_1m - SIS 100 muon ( 4 layers, z = 3600 ) was 460. -// Double_t LayerPosition[MaxLayers] = { 410. }; // start position - 2013-10-28 -// - DE - v14_3e - SIS 300 electron (10 layers, z = 4100 ) -// Double_t LayerPosition[MaxLayers] = { 550. }; // start position - 2013-10-28 -// - DE - v14_3m - SIS 300 muon 6_abs (10 layers, z = 5500 ) +//Double_t LayerPosition[MaxLayers] = { 260. }; // start position - 2013-10-28 - DE - v14_1h - SIS 100 hadron ( 4 layers, z = 2600 ) +//Double_t LayerPosition[MaxLayers] = { 410. }; // start position - 2013-10-28 - DE - v14_1e - SIS 100 electron ( 4 layers, z = 4100 ) +//Double_t LayerPosition[MaxLayers] = { 360. }; // start position - 2014-06-16 - DE - v14_1m - SIS 100 muon ( 4 layers, z = 3600 ) was 460. +//Double_t LayerPosition[MaxLayers] = { 410. }; // start position - 2013-10-28 - DE - v14_3e - SIS 300 electron (10 layers, z = 4100 ) +//Double_t LayerPosition[MaxLayers] = { 550. }; // start position - 2013-10-28 - DE - v14_3m - SIS 300 muon 6_abs (10 layers, z = 5500 ) // // obsolete variants -// Double_t LayerPosition[MaxLayers] = { 460. }; // start position - 2013-10-28 -// - DE - v13x3 - SIS 100 muon ( 4 layers, z = 4600 ) -// Double_t LayerPosition[MaxLayers] = { 410. }; // start position - 2013-06-25 -// - DE - v13i trd100_rich ( 2 layers, z = 4100 ) -// Double_t LayerPosition[MaxLayers] = { 410. }; // start position - 2013-06-25 -// - DE - v13j trd100_rich ( 3 layers, z = 4100 ) -// Double_t LayerPosition[MaxLayers] = { 430. }; // start position - 2013-06-25 -// - DE - --- trd100_much_2_absorbers ( 4 layers, z = 4300 ) -// Double_t LayerPosition[MaxLayers] = { 460. }; // start position - 2013-06-25 -// - DE - v13n trd300_rich_stretched (10 layers, z = 4600 ) - -// const Double_t LayerThickness = 22.0; // miniCBM - Thickness of one TRD -// layer in cm +//Double_t LayerPosition[MaxLayers] = { 460. }; // start position - 2013-10-28 - DE - v13x3 - SIS 100 muon ( 4 layers, z = 4600 ) +//Double_t LayerPosition[MaxLayers] = { 410. }; // start position - 2013-06-25 - DE - v13i trd100_rich ( 2 layers, z = 4100 ) +//Double_t LayerPosition[MaxLayers] = { 410. }; // start position - 2013-06-25 - DE - v13j trd100_rich ( 3 layers, z = 4100 ) +//Double_t LayerPosition[MaxLayers] = { 430. }; // start position - 2013-06-25 - DE - --- trd100_much_2_absorbers ( 4 layers, z = 4300 ) +//Double_t LayerPosition[MaxLayers] = { 460. }; // start position - 2013-06-25 - DE - v13n trd300_rich_stretched (10 layers, z = 4600 ) + + +//const Double_t LayerThickness = 22.0; // miniCBM - Thickness of one TRD layer in cm const Double_t LayerThickness = 27.0; // miniCBM - Thickness of one TRD layer in cm -// const Double_t LayerThickness = 25.0; // miniCBM - Thickness of one TRD layer -// in cm -// const Double_t LayerThickness = 45.0; // Thickness of one TRD layer in cm +//const Double_t LayerThickness = 25.0; // miniCBM - Thickness of one TRD layer in cm +//const Double_t LayerThickness = 45.0; // Thickness of one TRD layer in cm const Double_t LayerOffset[MaxLayers] = {0., 0., 0., 0., -112., 0., 0., 0., 5., 0.}; // v13x[4,5] - z offset in addition to LayerThickness -// const Double_t LayerOffset[MaxLayers] = { 0., 0., 0., 0., -115., -// 0., 0., 0., 5., 0. }; // v13x[4,5] - z offset in addition to -// LayerThickness +//const Double_t LayerOffset[MaxLayers] = { 0., 0., 0., 0., -115., 0., 0., 0., 5., 0. }; // v13x[4,5] - z offset in addition to LayerThickness // 140 / 165 / 190 / 215 / 240 - 115 = 125 -// const Double_t LayerOffset[MaxLayers] = { 0., 0., 0., 0., -115., -// 0., 0., 0., 5., 0. }; // v13x[4,5] - z offset in addition to -// LayerThickness +//const Double_t LayerOffset[MaxLayers] = { 0., 0., 0., 0., -115., 0., 0., 0., 5., 0. }; // v13x[4,5] - z offset in addition to LayerThickness // 115 / 140 / 165 / 190 / 215 - 125 = 100 -// const Double_t LayerOffset[MaxLayers] = { 0., -10., 0., 0., 0., -// 0., 0., 0., 5., 0. }; // v13x[4,5] - z offset in addition to -// LayerThickness +// const Double_t LayerOffset[MaxLayers] = { 0., -10., 0., 0., 0., 0., 0., 0., 5., 0. }; // v13x[4,5] - z offset in addition to LayerThickness // 100 / 125 - 10 = 115 / 140 / 165 / 190 -// const Double_t LayerOffset[MaxLayers] = { 0., 0., 0., 0., 0., 0., -// 0., 0., 0., 0. }; // SIS100 - z offset in addition to LayerThickness -// const Double_t LayerOffset[MaxLayers] = { 0., 0., 0., 0., 95., 0., -// 0., 0., 5., 0. }; // v13n - z offset in addition to -// LayerThickness +//const Double_t LayerOffset[MaxLayers] = { 0., 0., 0., 0., 0., 0., 0., 0., 0., 0. }; // SIS100 - z offset in addition to LayerThickness +//const Double_t LayerOffset[MaxLayers] = { 0., 0., 0., 0., 95., 0., 0., 0., 5., 0. }; // v13n - z offset in addition to LayerThickness const Int_t LayerArraySize[3][4] = {{5, 5, 9, 11}, // for layer[1-3][i,o] below {5, 5, 9, 11}, {5, 5, 9, 11}}; + // ### Layer Type 1 // v14x - module types in the inner sector of layer type 1 - looking upstream const Int_t layer1i[5][5] = {{0, 0, 0, 0, 0}, @@ -296,8 +255,7 @@ const Int_t layer1i[5][5] = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}; -// const Int_t layer1i[5][5] = { { 323, 323, 321, 321, 321 }, // abc: a -// module type - b orientation (x90 deg) in odd - c even layers +//const Int_t layer1i[5][5] = { { 323, 323, 321, 321, 321 }, // abc: a module type - b orientation (x90 deg) in odd - c even layers // { 223, 123, 121, 121, 221 }, // { 203, 103, 0, 101, 201 }, // { 203, 103, 101, 101, 201 }, @@ -310,31 +268,22 @@ const Int_t layer1o[9][11] = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 821, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; //// v14x - module types in the outer sector of layer type 1 - looking upstream -// const Int_t layer1o[9][11]= { { 0, 0, 0, 0, 0, 0, 0, 0, -// 0, 0, 0 }, -// { 0, 0, 0, 0, 0, 0, 0, 0, -// 0, 0, 0 }, -// { 0, 0, 823, 823, 723, 721, 721, 821, -// 821, 0, 0 }, -// { 0, 0, 823, 623, 0, 0, 0, 621, -// 821, 0, 0 }, -// { 0, 0, 703, 603, 0, 0, 0, 601, -// 701, 0, 0 }, -// { 0, 0, 803, 603, 0, 0, 0, 601, -// 801, 0, 0 }, -// { 0, 0, 803, 803, 703, 701, 701, 801, -// 801, 0, 0 }, -// { 0, 0, 0, 0, 0, 0, 0, 0, -// 0, 0, 0 }, -// { 0, 0, 0, 0, 0, 0, 0, 0, -// 0, 0, 0 } }; +//const Int_t layer1o[9][11]= { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +// { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +// { 0, 0, 823, 823, 723, 721, 721, 821, 821, 0, 0 }, +// { 0, 0, 823, 623, 0, 0, 0, 621, 821, 0, 0 }, +// { 0, 0, 703, 603, 0, 0, 0, 601, 701, 0, 0 }, +// { 0, 0, 803, 603, 0, 0, 0, 601, 801, 0, 0 }, +// { 0, 0, 803, 803, 703, 701, 701, 801, 801, 0, 0 }, +// { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +// { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; // number of modules: 26 // Layer1 = 24 + 26; // v14a + // ### Layer Type 2 -> remapped for Buch prototype // v14x - module types in the inner sector of layer type 2 - looking upstream -// const Int_t layer2i[5][5] = { { 323, 323, 321, 321, 321 }, // abc: a -// module type - b orientation (x90 deg) in odd - c even layers +// const Int_t layer2i[5][5] = { { 323, 323, 321, 321, 321 }, // abc: a module type - b orientation (x90 deg) in odd - c even layers // { 223, 123, 121, 121, 221 }, // { 203, 103, 0, 101, 201 }, // { 203, 103, 101, 101, 201 }, @@ -348,36 +297,28 @@ const Int_t layer2i[5][5] = {{0}, // abc: a module type - b orientation (x90 de // number of modules: 24 // v14x - module types in the outer sector of layer type 2 - looking upstream -// const Int_t layer2o[9][11]= { { 0, 0, 0, 0, 0, 0, 0, -// 0, 0, 0, 0 }, -// { 0, 823, 823, 823, 823, 821, 821, -// 821, 821, 821, 0 }, -// { 0, 823, 823, 823, 723, 721, 721, -// 821, 821, 821, 0 }, -// { 0, 823, 723, 623, 0, 0, 0, -// 621, 721, 821, 0 }, -// { 0, 803, 703, 603, 0, 0, 0, -// 601, 701, 801, 0 }, -// { 0, 803, 703, 603, 0, 0, 0, -// 601, 701, 801, 0 }, -// { 0, 803, 803, 803, 703, 701, 701, -// 801, 801, 801, 0 }, -// { 0, 803, 803, 803, 803, 801, 801, -// 801, 801, 801, 0 }, -// { 0, 0, 0, 0, 0, 0, 0, -// 0, 0, 0, 0 } }; +// const Int_t layer2o[9][11]= { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +// { 0, 823, 823, 823, 823, 821, 821, 821, 821, 821, 0 }, +// { 0, 823, 823, 823, 723, 721, 721, 821, 821, 821, 0 }, +// { 0, 823, 723, 623, 0, 0, 0, 621, 721, 821, 0 }, +// { 0, 803, 703, 603, 0, 0, 0, 601, 701, 801, 0 }, +// { 0, 803, 703, 603, 0, 0, 0, 601, 701, 801, 0 }, +// { 0, 803, 803, 803, 703, 701, 701, 801, 801, 801, 0 }, +// { 0, 803, 803, 803, 803, 801, 801, 801, 801, 801, 0 }, +// { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; const Int_t layer2o[9][11] = {{0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}; // number of modules: 54 // Layer2 = 24 + 54; // v14a + // ### Layer Type 3 // v14x - module types in the inner sector of layer type 3 - looking upstream -const Int_t layer3i[5][5] = {{323, 323, 321, 321, 321}, // abc: a module type - b orientation (x90 deg) - // in odd - c even layers - {223, 123, 121, 121, 221}, - {203, 103, 0, 101, 201}, - {203, 103, 101, 101, 201}, - {303, 303, 301, 301, 301}}; +const Int_t layer3i[5][5] = { + {323, 323, 321, 321, 321}, // abc: a module type - b orientation (x90 deg) in odd - c even layers + {223, 123, 121, 121, 221}, + {203, 103, 0, 101, 201}, + {203, 103, 101, 101, 201}, + {303, 303, 301, 301, 301}}; // number of modules: 24 // v14x - module types in the outer sector of layer type 3 - looking upstream @@ -390,138 +331,98 @@ const Int_t layer3o[9][11] = { // number of modules: 90 // Layer2 = 24 + 90; // v14a + // Parameters defining the layout of the different detector modules const Int_t NofModuleTypes = 10; -const Int_t ModuleType[NofModuleTypes] = {0, 0, 0, 2, 1, 1, 1, 1, 2, 3}; // 0 = small module, 1 = - // large module, 2 = mCBM - // Bucharest prototype, 3 - // = mCBM Bucharest - // TRD-2Dh prototype +const Int_t ModuleType[NofModuleTypes] = { + 0, 0, 0, 2, 1, 1, + 1, 1, 2, 3}; // 0 = small module, 1 = large module, 2 = mCBM Bucharest prototype, 3 = mCBM Bucharest TRD-2Dh prototype // FEB inclination angle const Double_t feb_rotation_angle[NofModuleTypes] = { 70, 90, 90, 0, 80, 90, 90, 90, 0, 0}; // rotation around x-axis, 0 = vertical, 90 = horizontal -// const Double_t feb_rotation_angle[NofModuleTypes] = { 45, 45, 45, 45, 45, -// 45, 45, 45 }; // rotation around x-axis, 0 = vertical, 90 = horizontal +//const Double_t feb_rotation_angle[NofModuleTypes] = { 45, 45, 45, 45, 45, 45, 45, 45 }; // rotation around x-axis, 0 = vertical, 90 = horizontal // GBTx ROB definitions -const Int_t RobsPerModule[NofModuleTypes] = {3, 2, 1, 6, 2, 2, 1, 1, 30, 1}; // number of GBTx ROBs on module +const Int_t RobsPerModule[NofModuleTypes] = {3, 2, 1, 6, 2, 2, 1, 1, 30, 2}; // number of GBTx ROBs on module const Int_t GbtxPerRob[NofModuleTypes] = {105, 105, 105, 103, 107, 105, 105, 103, 103, 103}; // number of GBTx ASICs on ROB const Int_t GbtxPerModule[NofModuleTypes] = {15, 10, 5, 18, 0, - 10, 5, 3, 18, 18}; // for .geo.info - TODO: merge with above GbtxPerRob -const Int_t RobTypeOnModule[NofModuleTypes] = {555, 55, 5, 333333, 0, - 55, 5, 3, 333333, 333333}; // for .geo.info - TODO: merge with above - // GbtxPerRob - -// const Int_t RobsPerModule[NofModuleTypes] = { 2, 2, 1, 1, 2, 2, 1, 1 -// }; // number of GBTx ROBs on module -// const Int_t GbtxPerRob[NofModuleTypes] = {107,105,105,103,107,105,105,103 -// }; // number of GBTx ASICs on ROB -// const Int_t GbtxPerModule[NofModuleTypes] = { 14, 8, 5, 0, 0, 10, 5, 3 -// }; // for .geo.info - TODO: merge with above GbtxPerRob -// const Int_t RobTypeOnModule[NofModuleTypes] = { 77, 53, 5, 0, 0, 55, 5, -// 3 }; // for .geo.info - TODO: merge with above GbtxPerRob + 10, 5, 3, 6, 1}; // for .geo.info - TODO: merge with above GbtxPerRob +const Int_t RobTypeOnModule[NofModuleTypes] = { + 555, 55, 5, 333333, 0, 55, 5, 3, 333333, 333333}; // for .geo.info - TODO: merge with above GbtxPerRob + +//const Int_t RobsPerModule[NofModuleTypes] = { 2, 2, 1, 1, 2, 2, 1, 1 }; // number of GBTx ROBs on module +//const Int_t GbtxPerRob[NofModuleTypes] = {107,105,105,103,107,105,105,103 }; // number of GBTx ASICs on ROB +//const Int_t GbtxPerModule[NofModuleTypes] = { 14, 8, 5, 0, 0, 10, 5, 3 }; // for .geo.info - TODO: merge with above GbtxPerRob +//const Int_t RobTypeOnModule[NofModuleTypes] = { 77, 53, 5, 0, 0, 55, 5, 3 }; // for .geo.info - TODO: merge with above GbtxPerRob // super density for type 1 modules - 2017 - 540 mm -const Int_t FebsPerModule[NofModuleTypes] = {9, 5, 6, 18, 12, 8, 4, 3, 18, 18}; // number of FEBs on backside -// const Int_t FebsPerModule[NofModuleTypes] = { 9, 6, 3, 4, 12, 8, 4, 2 -// }; // number of FEBs on backside -const Int_t AsicsPerFeb[NofModuleTypes] = {210, 210, 210, 410, 108, 108, 108, 108, 410, 410}; // %100 gives - // number of - // ASICs on FEB, - // /100 gives - // grouping +const Int_t FebsPerModule[NofModuleTypes] = {9, 5, 6, 18, 12, 8, 4, 3, 30, 2}; // number of FEBs on backside +//const Int_t FebsPerModule[NofModuleTypes] = { 9, 6, 3, 4, 12, 8, 4, 2 }; // number of FEBs on backside +const Int_t AsicsPerFeb[NofModuleTypes] = { + 210, 210, 210, 410, 108, 108, 108, 108, 406, 406}; // %100 gives number of ASICs on FEB, /100 gives grouping //// ultimate density - 540 mm -// const Int_t FebsPerModule[NofModuleTypes] = { 6, 5, 6, 4, 12, 8, 4, 3 -// }; // number of FEBs on backside - reduced FEBs (64 ch ASICs) -// const Int_t AsicsPerFeb[NofModuleTypes] = {315,210,105,105,108,108,108,108 -// }; // %100 gives number of ASICs on FEB, /100 gives grouping -////const Int_t FebsPerModule[NofModuleTypes] = { 6, 5, 3, 2, 6, 3, 4, 3 -///}; // min number of FEBs // number of FEBs on backside - reduced FEBs (64 ch -/// ASICs) -////const Int_t AsicsPerFeb[NofModuleTypes] = {315,210,210,210,216,216,108,108 -///}; // %100 gives number of ASICs on FEB, /100 gives grouping -////const Int_t AsicsPerFeb[NofModuleTypes] = {216,210,210,210,216,216,108,108 -///}; // %100 gives number of ASICs on FEB, /100 gives grouping +//const Int_t FebsPerModule[NofModuleTypes] = { 6, 5, 6, 4, 12, 8, 4, 3 }; // number of FEBs on backside - reduced FEBs (64 ch ASICs) +//const Int_t AsicsPerFeb[NofModuleTypes] = {315,210,105,105,108,108,108,108 }; // %100 gives number of ASICs on FEB, /100 gives grouping +////const Int_t FebsPerModule[NofModuleTypes] = { 6, 5, 3, 2, 6, 3, 4, 3 }; // min number of FEBs // number of FEBs on backside - reduced FEBs (64 ch ASICs) +////const Int_t AsicsPerFeb[NofModuleTypes] = {315,210,210,210,216,216,108,108 }; // %100 gives number of ASICs on FEB, /100 gives grouping +////const Int_t AsicsPerFeb[NofModuleTypes] = {216,210,210,210,216,216,108,108 }; // %100 gives number of ASICs on FEB, /100 gives grouping // ////// super density - 540 mm -// const Int_t FebsPerModule[NofModuleTypes] = { 9, 5, 6, 4, 12, 6, 4, 3 -// }; // light // number of FEBs on backside - reduced FEBs (64 ch ASICs) -// const Int_t AsicsPerFeb[NofModuleTypes] = {210,210,105,105,108,108,108,108 -// }; // %100 gives number of ASICs on FEB, /100 gives grouping +//const Int_t FebsPerModule[NofModuleTypes] = { 9, 5, 6, 4, 12, 6, 4, 3 }; // light // number of FEBs on backside - reduced FEBs (64 ch ASICs) +//const Int_t AsicsPerFeb[NofModuleTypes] = {210,210,105,105,108,108,108,108 }; // %100 gives number of ASICs on FEB, /100 gives grouping // //// normal density - 540 mm -// const Int_t FebsPerModule[NofModuleTypes] = { 18, 10, 6, 4, 12, 6, 4, 3 -// }; // number of FEBs on backside (linked to pad layout) - mod4 = mod3, -// therefore same -// const Int_t AsicsPerFeb[NofModuleTypes] = {105,105,105,105,108,108,108,108 -// }; // %100 gives number of ASICs on FEB, /100 gives grouping +//const Int_t FebsPerModule[NofModuleTypes] = { 18, 10, 6, 4, 12, 6, 4, 3 }; // number of FEBs on backside (linked to pad layout) - mod4 = mod3, therefore same +//const Int_t AsicsPerFeb[NofModuleTypes] = {105,105,105,105,108,108,108,108 }; // %100 gives number of ASICs on FEB, /100 gives grouping // ultimate density - 570 mm -// const Int_t FebsPerModule[NofModuleTypes] = { 6, 5, 3, 2, 5, 3, 2, 1 -// }; // min number of FEBs // number of FEBs on backside - reduced FEBs (64 ch -// ASICs) -// const Int_t AsicsPerFeb[NofModuleTypes] = {216,210,210,210,216,216,216,216 -// }; // %100 gives number of ASICs on FEB, /100 gives grouping +//const Int_t FebsPerModule[NofModuleTypes] = { 6, 5, 3, 2, 5, 3, 2, 1 }; // min number of FEBs // number of FEBs on backside - reduced FEBs (64 ch ASICs) +//const Int_t AsicsPerFeb[NofModuleTypes] = {216,210,210,210,216,216,216,216 }; // %100 gives number of ASICs on FEB, /100 gives grouping // -// const Int_t FebsPerModule[NofModuleTypes] = { 6, 5, 3, 3, 10, 5, 3, 3 -// }; // min (6) module types // number of FEBs on backside - reduced FEBs (64 -// ch ASICs) -// const Int_t AsicsPerFeb[NofModuleTypes] = {216,210,210,210,108,108,108,108 -// }; // %100 gives number of ASICs on FEB, /100 gives grouping +//const Int_t FebsPerModule[NofModuleTypes] = { 6, 5, 3, 3, 10, 5, 3, 3 }; // min (6) module types // number of FEBs on backside - reduced FEBs (64 ch ASICs) +//const Int_t AsicsPerFeb[NofModuleTypes] = {216,210,210,210,108,108,108,108 }; // %100 gives number of ASICs on FEB, /100 gives grouping //// super density - 570 mm -// const Int_t FebsPerModule[NofModuleTypes] = { 10, 5, 5, 5, 12, 6, 4, 3 -// }; // light // number of FEBs on backside - reduced FEBs (64 ch ASICs) -// const Int_t AsicsPerFeb[NofModuleTypes] = {210,210,105,105,108,108,108,108 -// }; // %100 gives number of ASICs on FEB, /100 gives grouping +//const Int_t FebsPerModule[NofModuleTypes] = { 10, 5, 5, 5, 12, 6, 4, 3 }; // light // number of FEBs on backside - reduced FEBs (64 ch ASICs) +//const Int_t AsicsPerFeb[NofModuleTypes] = {210,210,105,105,108,108,108,108 }; // %100 gives number of ASICs on FEB, /100 gives grouping // //// normal density - 570 mm -// const Int_t FebsPerModule[NofModuleTypes] = { 19, 10, 5, 5, 12, 6, 4, 3 -// }; // number of FEBs on backside (linked to pad layout) - mod4 = mod3, -// therefore same -// const Int_t AsicsPerFeb[NofModuleTypes] = {105,105,105,105,108,108,108,108 -// }; // %100 gives number of ASICs on FEB, /100 gives grouping +//const Int_t FebsPerModule[NofModuleTypes] = { 19, 10, 5, 5, 12, 6, 4, 3 }; // number of FEBs on backside (linked to pad layout) - mod4 = mod3, therefore same +//const Int_t AsicsPerFeb[NofModuleTypes] = {105,105,105,105,108,108,108,108 }; // %100 gives number of ASICs on FEB, /100 gives grouping + /* TODO: activate connector grouping info below // ultimate - grouping of pads to connectors -const Int_t RowsPerConnector[NofModuleTypes] = { 6, 4, 2, 2, 2, 2, 2, 2 -}; -const Int_t ColsPerConnector[NofModuleTypes] = { 16, 16, 16, 16, 16, 16, 16, 16 -}; +const Int_t RowsPerConnector[NofModuleTypes] = { 6, 4, 2, 2, 2, 2, 2, 2 }; +const Int_t ColsPerConnector[NofModuleTypes] = { 16, 16, 16, 16, 16, 16, 16, 16 }; // super - grouping of pads to connectors -const Int_t RowsPerConnector[NofModuleTypes] = { 4, 4, 2, 2, 2, 2, 2, 2 -}; -const Int_t ColsPerConnector[NofModuleTypes] = { 16, 16, 16, 16, 16, 16, 16, 16 -}; +const Int_t RowsPerConnector[NofModuleTypes] = { 4, 4, 2, 2, 2, 2, 2, 2 }; +const Int_t ColsPerConnector[NofModuleTypes] = { 16, 16, 16, 16, 16, 16, 16, 16 }; // normal - grouping of pads to connectors -const Int_t RowsPerConnector[NofModuleTypes] = { 2, 2, 2, 2, 2, 2, 2, 2 -}; -const Int_t ColsPerConnector[NofModuleTypes] = { 16, 16, 16, 16, 16, 16, 16, 16 -}; +const Int_t RowsPerConnector[NofModuleTypes] = { 2, 2, 2, 2, 2, 2, 2, 2 }; +const Int_t ColsPerConnector[NofModuleTypes] = { 16, 16, 16, 16, 16, 16, 16, 16 }; */ + const Double_t feb_z_offset = 0.1; // 1 mm - offset in z of FEBs to backpanel const Double_t asic_offset = 0.1; // 1 mm - offset of ASICs to FEBs to avoid overlaps // ASIC parameters Double_t asic_distance; -// const Double_t FrameWidth[2] = { 1.5, 2.0 }; // Width of detector frames -// in cm +//const Double_t FrameWidth[2] = { 1.5, 2.0 }; // Width of detector frames in cm const Double_t FrameWidth[4] = {1.5, 1.5, 2.5, 1.5}; // Width of detector frames in cm // mini - production const Double_t DetectorSizeX[4] = {57., 95., 59.0, 23.04 + 3.}; // => 54 x 54 cm2 & 91 x 91 cm2 active area const Double_t DetectorSizeY[4] = {57., 95., 60.8, 8.16 + 3.}; // quadratic modules //// default -// const Double_t DetectorSizeX[2] = { 60., 100.}; // => 57 x 57 cm2 & 96 x 96 -// cm2 active area -// const Double_t DetectorSizeY[2] = { 60., 100.}; // quadratic modules +//const Double_t DetectorSizeX[2] = { 60., 100.}; // => 57 x 57 cm2 & 96 x 96 cm2 active area +//const Double_t DetectorSizeY[2] = { 60., 100.}; // quadratic modules // Parameters tor the lattice grid reinforcing the entrance window -// const Double_t lattice_o_width[2] = { 1.5, 2.0 }; // Width of outer lattice -// frame in cm +//const Double_t lattice_o_width[2] = { 1.5, 2.0 }; // Width of outer lattice frame in cm const Double_t lattice_o_width[2] = {1.5, 1.5}; // Width of outer lattice frame in cm const Double_t lattice_i_width[2] = {0.2, 0.2}; // { 0.4, 0.4 }; // Width of inner lattice frame in cm // Thickness (in z) of lattice frames in cm - see below @@ -531,12 +432,10 @@ Int_t ModuleStats[MaxLayers][NofModuleTypes] = {0}; // z - geometry of TRD modules const Double_t radiator_thickness = 0.0; // 35 cm thickness of radiator -// const Double_t radiator_thickness = 30.0; // 30 cm thickness of -// radiator + shift pad plane to integer multiple of 1 mm +//const Double_t radiator_thickness = 30.0; // 30 cm thickness of radiator + shift pad plane to integer multiple of 1 mm const Double_t radiator_position = -LayerThickness / 2. + radiator_thickness / 2.; -// const Double_t lattice_thickness = 1.0; // 1.0; // 10 mm thick -// lattice frames +//const Double_t lattice_thickness = 1.0; // 1.0; // 10 mm thick lattice frames const Double_t lattice_thickness = 1.0 - 0.0025; // 0.9975; // 1.0; // 10 mm thick lattice frames const Double_t lattice_position = radiator_position + radiator_thickness / 2. + lattice_thickness / 2.; @@ -586,7 +485,7 @@ const Double_t rail_width = 3.0; // 3 cm in x/y direction const Double_t rail_position = aluminium_position + aluminium_thickness / 2. + rail_thickness / 2.; // readout boards -// const Double_t feb_width = 10.0; // width of FEBs in cm +//const Double_t feb_width = 10.0; // width of FEBs in cm const Double_t feb_width = 8.5; // width of FEBs in cm const Double_t feb_thickness = 0.25; // light // 2.5 mm thickness of FEBs const Double_t febvolume_position = aluminium_position + aluminium_thickness / 2. + feb_width / 2.; @@ -595,14 +494,13 @@ const Double_t febvolume_position = aluminium_position + aluminium_thickness / 2 const Double_t asic_thickness = 0.25; // 2.5 mm asic_thickness const Double_t asic_width = 3.0; // 2.0; 1.0; // 1 cm -// -------------- BUCHAREST PROTOTYPE SPECIFICS -// ---------------------------------- + +// -------------- BUCHAREST PROTOTYPE SPECIFICS ---------------------------------- // Frontpanel components const Double_t carbonBu_thickness = 0.03; // 300 micron thickness for 1 layer of carbon fibers const Double_t honeycombBu_thickness = 0.94; // 9 mm thickness of honeycomb const Double_t WIN_Frame_thickness = 0.6; // entrance window framing 6x12 mm2 -// const Double_t carbonBu0_position = radiator_position + radiator_thickness -// / 2. + carbonBu_thickness / 2.; +//const Double_t carbonBu0_position = radiator_position + radiator_thickness / 2. + carbonBu_thickness / 2.; const Double_t honeycombBu0_position = radiator_position + radiator_thickness / 2. + honeycombBu_thickness / 2.; const Double_t carbonBu1_position = honeycombBu0_position + honeycombBu_thickness / 2. + carbonBu_thickness / 2.; // Active volume @@ -617,7 +515,7 @@ const Double_t glassFibre_thickness = 0.0270; // 300 microns overall PCB thickn const Double_t cuCoating_thickness = 0.0030; const Double_t glassFibre_position = honeycombBu1_position + honeycombBu_thickness / 2. + glassFibre_thickness / 2.; const Double_t cuCoating_position = glassFibre_position + glassFibre_thickness / 2. + cuCoating_thickness / 2.; -// Frame around entrance window, active volume and exit window +//Frame around entrance window, active volume and exit window const Double_t frameBu_thickness = 2 * carbonBu_thickness + honeycombBu_thickness + gas_thickness + padcopper_thickness + padplane_thickness + honeycombBu_thickness + glassFibre_thickness + cuCoating_thickness; @@ -651,6 +549,7 @@ const Double_t gbtx_thickness = 0.25; // 2.5 mm const Double_t gbtx_width = 3.0; // 2.0; 1.0; // 1 cm const Double_t gbtx_distance = 0.4; + // Names of the different used materials which are used to build the modules // The materials are defined in the global media.geo file const TString KeepingVolumeMedium = "air"; @@ -672,9 +571,9 @@ const TString AluminiumVolumeMedium = "aluminium"; const TString Kanya10x10sVolumeMedium = "KANYAProfile10x10Strong"; const TString Kanya10x10nVolumeMedium = "KANYAProfile10x10Normal"; const TString Kanya03x05nVolumeMedium = "KANYAProfile3x5Normal"; -// const TString MylarVolumeMedium = "mylar"; -// const TString RadiatorVolumeMedium = "polypropylene"; -// const TString ElectronicsVolumeMedium = "goldcoatedcopper"; +//const TString MylarVolumeMedium = "mylar"; +//const TString RadiatorVolumeMedium = "polypropylene"; +//const TString ElectronicsVolumeMedium = "goldcoatedcopper"; // some global variables TGeoManager* gGeoMan = NULL; // Pointer to TGeoManager instance @@ -695,6 +594,7 @@ void create_mag_field_vector(); void dump_info_file(); void dump_digi_file(); + void Create_TRD_Geometry_v22b() { @@ -707,6 +607,7 @@ void Create_TRD_Geometry_v22b() create_materials_from_media_file(); // Position the layers in z + LayerPosition[0] = -54; for (Int_t iLayer = 1; iLayer < MaxLayers; iLayer++) LayerPosition[iLayer] = LayerPosition[iLayer - 1] + LayerThickness + LayerOffset[iLayer]; // add offset for extra gaps @@ -730,8 +631,7 @@ void Create_TRD_Geometry_v22b() Int_t nLayer = 0; // active layer counter for (Int_t iLayer = 0; iLayer < MaxLayers; iLayer++) { - // if ((iLayer != 0) && (iLayer != 3)) continue; // first layer only - - // comment later on + // if ((iLayer != 0) && (iLayer != 3)) continue; // first layer only - comment later on // if (iLayer != 0) continue; // first layer only - comment later on if (ShowLayer[iLayer]) { PlaneId[iLayer] = ++nLayer; @@ -766,11 +666,9 @@ void Create_TRD_Geometry_v22b() trd->Export(FileNameSim); // an alternative way of writing the trd volume TFile* outfile = new TFile(FileNameSim, "UPDATE"); - // TGeoTranslation* trd_placement = new TGeoTranslation("trd_trans", 0., 0., - // 0.); - TGeoTranslation* trd_placement = new TGeoTranslation("trd_trans", 0., 0., zfront[setupid]); - // TGeoTranslation* trd_placement = new TGeoTranslation("trd_trans", -7, 0., - // zfront[setupid]); + // TGeoTranslation* trd_placement = new TGeoTranslation("trd_trans", 0., 0., 0.); + // TGeoTranslation* trd_placement = new TGeoTranslation("trd_trans", 0., 0., zfront[setupid]); + TGeoTranslation* trd_placement = new TGeoTranslation("trd_trans", -7., 0., zfront[setupid]); trd_placement->Write(); outfile->Close(); @@ -783,13 +681,14 @@ void Create_TRD_Geometry_v22b() top->Draw("ogl"); - // top->Raytrace(); + //top->Raytrace(); // cout << "Press Return to exit" << endl; // cin.get(); // exit(); } + //============================================================== void dump_digi_file() { @@ -865,7 +764,7 @@ void dump_digi_file() im + 1); printf("%.2f = %.2f + %.2f + %.2f\n", ActiveAreaY[ModuleType[im]], HeightOfSector[im][0], HeightOfSector[im][1], HeightOfSector[im][2]); - // exit(1); + //exit(1); } } //============================================================== @@ -895,7 +794,7 @@ void dump_digi_file() fprintf(ifile, "// array of pad geometries in the TRD (trd1mod[1-%d])\n", NofModuleTypes); fprintf(ifile, "// %d modules // 3 sectors // 4 values \n", NofModuleTypes); fprintf(ifile, "Float_t fst1_pad_type[%d][3][4] = \n", NofModuleTypes); - // fprintf(ifile,"Double_t fst1_pad_type[8][3][4] = \n"); + //fprintf(ifile,"Double_t fst1_pad_type[8][3][4] = \n"); fprintf(ifile, " \n"); for (Int_t im = 0; im < NofModuleTypes; im++) { @@ -941,57 +840,31 @@ void dump_digi_file() // Int_t im = 0; // fprintf(ifile,"// module type %d \n", im+1); - // fprintf(ifile," { { { %.1f, %5.2f, %.1f/%3d, %5.2f }, \n", - // ActiveAreaX[ModuleType[im]], HeightOfSector[im][0], - // ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], - // PadHeightInSector[im][0]); - // fprintf(ifile," { %.1f, %5.2f, %.1f/%3d, %5.2f }, \n", - // ActiveAreaX[ModuleType[im]], HeightOfSector[im][1], - // ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], - // PadHeightInSector[im][1]); - // fprintf(ifile," { %.1f, %5.2f, %.1f/%3d, %5.2f } }, \n", - // ActiveAreaX[ModuleType[im]], HeightOfSector[im][2], - // ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], - // PadHeightInSector[im][2]); + // fprintf(ifile," { { { %.1f, %5.2f, %.1f/%3d, %5.2f }, \n", ActiveAreaX[ModuleType[im]], HeightOfSector[im][0], ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], PadHeightInSector[im][0]); + // fprintf(ifile," { %.1f, %5.2f, %.1f/%3d, %5.2f }, \n", ActiveAreaX[ModuleType[im]], HeightOfSector[im][1], ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], PadHeightInSector[im][1]); + // fprintf(ifile," { %.1f, %5.2f, %.1f/%3d, %5.2f } }, \n", ActiveAreaX[ModuleType[im]], HeightOfSector[im][2], ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], PadHeightInSector[im][2]); // fprintf(ifile,"\n"); // // for (Int_t im = 1; im < NofModuleTypes-1; im++) // { // fprintf(ifile,"// module type %d \n", im+1); - // fprintf(ifile," { { %.1f, %5.2f, %.1f/%3d, %5.2f }, \n", - // ActiveAreaX[ModuleType[im]], HeightOfSector[im][0], - // ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], - // PadHeightInSector[im][0]); - // fprintf(ifile," { %.1f, %5.2f, %.1f/%3d, %5.2f }, \n", - // ActiveAreaX[ModuleType[im]], HeightOfSector[im][1], - // ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], - // PadHeightInSector[im][1]); - // fprintf(ifile," { %.1f, %5.2f, %.1f/%3d, %5.2f } }, \n", - // ActiveAreaX[ModuleType[im]], HeightOfSector[im][2], - // ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], - // PadHeightInSector[im][2]); + // fprintf(ifile," { { %.1f, %5.2f, %.1f/%3d, %5.2f }, \n", ActiveAreaX[ModuleType[im]], HeightOfSector[im][0], ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], PadHeightInSector[im][0]); + // fprintf(ifile," { %.1f, %5.2f, %.1f/%3d, %5.2f }, \n", ActiveAreaX[ModuleType[im]], HeightOfSector[im][1], ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], PadHeightInSector[im][1]); + // fprintf(ifile," { %.1f, %5.2f, %.1f/%3d, %5.2f } }, \n", ActiveAreaX[ModuleType[im]], HeightOfSector[im][2], ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], PadHeightInSector[im][2]); // fprintf(ifile,"\n"); // } // // Int_t im = 7; // fprintf(ifile,"// module type %d \n", im+1); - // fprintf(ifile," { { %.1f, %5.2f, %.1f/%3d, %5.2f }, \n", - // ActiveAreaX[ModuleType[im]], HeightOfSector[im][0], - // ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], - // PadHeightInSector[im][0]); - // fprintf(ifile," { %.1f, %5.2f, %.1f/%3d, %5.2f }, \n", - // ActiveAreaX[ModuleType[im]], HeightOfSector[im][1], - // ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], - // PadHeightInSector[im][1]); - // fprintf(ifile," { %.1f, %5.2f, %.1f/%3d, %5.2f } } };\n", - // ActiveAreaX[ModuleType[im]], HeightOfSector[im][2], - // ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], - // PadHeightInSector[im][2]); + // fprintf(ifile," { { %.1f, %5.2f, %.1f/%3d, %5.2f }, \n", ActiveAreaX[ModuleType[im]], HeightOfSector[im][0], ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], PadHeightInSector[im][0]); + // fprintf(ifile," { %.1f, %5.2f, %.1f/%3d, %5.2f }, \n", ActiveAreaX[ModuleType[im]], HeightOfSector[im][1], ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], PadHeightInSector[im][1]); + // fprintf(ifile," { %.1f, %5.2f, %.1f/%3d, %5.2f } } };\n", ActiveAreaX[ModuleType[im]], HeightOfSector[im][2], ActiveAreaX[ModuleType[im]], NofPadsInRow[ModuleType[im]], PadHeightInSector[im][2]); // fprintf(ifile,"\n"); fclose(ifile); } + void dump_info_file() { TDatime datetime; // used to get timestamp @@ -1173,6 +1046,7 @@ void dump_info_file() fprintf(ifile, "\n"); + // module statistics // fprintf(ifile,"#\n## modules\n#\n\n"); // fprintf(ifile,"number of modules per type and layer:\n"); @@ -1471,8 +1345,7 @@ void dump_info_file() fprintf(ifile, "%7.1f%%u", (float) total_channels_u / (total_asics[NofModuleTypes] * 32) * 100); fprintf(ifile, "%7.1f%%s", (float) total_channels_s / (total_asics[NofModuleTypes] * 32) * 100); fprintf(ifile, "%7.1f%%r", (float) total_channels_r / (total_asics[NofModuleTypes] * 32) * 100); - fprintf(ifile, " " - "channel ratio\n"); + fprintf(ifile, " channel ratio\n"); fprintf(ifile, "\n"); fprintf(ifile, "%8.1f%% channel efficiency\n", @@ -1518,8 +1391,7 @@ void dump_info_file() for (Int_t iLayer = 0; iLayer < MaxLayers; iLayer++) if (ShowLayer[iLayer]) { if (iLayer <= 5) { - // fprintf(ifile,"y %10.4f cm x %10.4f cm\n", 2.5 * - // DetectorSizeY[1], 3.5 * DetectorSizeX[1]); + // fprintf(ifile,"y %10.4f cm x %10.4f cm\n", 2.5 * DetectorSizeY[1], 3.5 * DetectorSizeX[1]); Int_t type(LayerType[iLayer] / 10); yangle = atan(2.5 * DetectorSizeY[type] / (LayerPosition[iLayer] + LayerThickness / 2. + padplane_position)) * 180. / acos(-1.); @@ -1527,16 +1399,14 @@ void dump_info_file() * 180. / acos(-1.); } if ((iLayer > 5) && (iLayer < 8)) { - // fprintf(ifile,"y %10.4f cm x %10.4f cm\n", 3.5 * - // DetectorSizeY[1], 4.5 * DetectorSizeX[1]); + // fprintf(ifile,"y %10.4f cm x %10.4f cm\n", 3.5 * DetectorSizeY[1], 4.5 * DetectorSizeX[1]); yangle = atan(3.5 * DetectorSizeY[1] / (LayerPosition[iLayer] + LayerThickness / 2. + padplane_position)) * 180. / acos(-1.); xangle = atan(4.5 * DetectorSizeX[1] / (LayerPosition[iLayer] + LayerThickness / 2. + padplane_position)) * 180. / acos(-1.); } if ((iLayer >= 8) && (iLayer < 10)) { - // fprintf(ifile,"y %10.4f cm x %10.4f cm\n", 4.5 * - // DetectorSizeY[1], 5.5 * DetectorSizeX[1]); + // fprintf(ifile,"y %10.4f cm x %10.4f cm\n", 4.5 * DetectorSizeY[1], 5.5 * DetectorSizeX[1]); yangle = atan(4.5 * DetectorSizeY[1] / (LayerPosition[iLayer] + LayerThickness / 2. + padplane_position)) * 180. / acos(-1.); xangle = atan(5.5 * DetectorSizeX[1] / (LayerPosition[iLayer] + LayerThickness / 2. + padplane_position)) * 180. @@ -1552,24 +1422,21 @@ void dump_info_file() for (Int_t iLayer = 0; iLayer < MaxLayers; iLayer++) if (ShowLayer[iLayer]) { if (iLayer <= 5) { - // fprintf(ifile,"y %10.4f cm x %10.4f cm\n", 2.5 * - // DetectorSizeY[1], 3.5 * DetectorSizeX[1]); + // fprintf(ifile,"y %10.4f cm x %10.4f cm\n", 2.5 * DetectorSizeY[1], 3.5 * DetectorSizeX[1]); yangle = atan(0.5 * DetectorSizeY[0] / (LayerPosition[iLayer] + LayerThickness / 2. + padplane_position)) * 180. / acos(-1.); xangle = atan(0.5 * DetectorSizeX[0] / (LayerPosition[iLayer] + LayerThickness / 2. + padplane_position)) * 180. / acos(-1.); } if ((iLayer > 5) && (iLayer < 8)) { - // fprintf(ifile,"y %10.4f cm x %10.4f cm\n", 3.5 * - // DetectorSizeY[1], 4.5 * DetectorSizeX[1]); + // fprintf(ifile,"y %10.4f cm x %10.4f cm\n", 3.5 * DetectorSizeY[1], 4.5 * DetectorSizeX[1]); yangle = atan(0.5 * DetectorSizeY[0] / (LayerPosition[iLayer] + LayerThickness / 2. + padplane_position)) * 180. / acos(-1.); xangle = atan(0.5 * DetectorSizeX[0] / (LayerPosition[iLayer] + LayerThickness / 2. + padplane_position)) * 180. / acos(-1.); } if ((iLayer >= 8) && (iLayer < 10)) { - // fprintf(ifile,"y %10.4f cm x %10.4f cm\n", 4.5 * - // DetectorSizeY[1], 5.5 * DetectorSizeX[1]); + // fprintf(ifile,"y %10.4f cm x %10.4f cm\n", 4.5 * DetectorSizeY[1], 5.5 * DetectorSizeX[1]); yangle = atan(0.5 * DetectorSizeY[0] / (LayerPosition[iLayer] + LayerThickness / 2. + padplane_position)) * 180. / acos(-1.); xangle = atan(0.5 * DetectorSizeX[0] / (LayerPosition[iLayer] + LayerThickness / 2. + padplane_position)) * 180. @@ -1582,10 +1449,10 @@ void dump_info_file() fclose(ifile); } + void create_materials_from_media_file() { - // Use the FairRoot geometry interface to load the media which are already - // defined + // Use the FairRoot geometry interface to load the media which are already defined FairGeoLoader* geoLoad = new FairGeoLoader("TGeo", "FairGeoLoader"); FairGeoInterface* geoFace = geoLoad->getGeoInterface(); TString geoPath = gSystem->Getenv("VMCWORKDIR"); @@ -1645,8 +1512,7 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) TGeoMedium* honeycombVolMed = gGeoMan->GetMedium(HoneycombVolumeMedium); TGeoMedium* carbonVolMed = gGeoMan->GetMedium(CarbonVolumeMedium); // TGeoMedium* mylarVolMed = gGeoMan->GetMedium(MylarVolumeMedium); - // TGeoMedium* electronicsVolMed = - // gGeoMan->GetMedium(ElectronicsVolumeMedium); + // TGeoMedium* electronicsVolMed = gGeoMan->GetMedium(ElectronicsVolumeMedium); TGeoMedium* frameVolMed = gGeoMan->GetMedium(FrameVolumeMedium); TGeoMedium* aluledgeVolMed = gGeoMan->GetMedium(AluLegdeVolumeMedium); TGeoMedium* febVolMed = gGeoMan->GetMedium(FebVolumeMedium); @@ -1656,16 +1522,14 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) TString name = Form("module%d", moduleType); TGeoVolume* module = new TGeoVolumeAssembly(name); + if (IncludeRadiator) { // Radiator - // TGeoBBox* trd_radiator = new TGeoBBox("", activeAreaX /2., activeAreaY - // /2., radiator_thickness /2.); + // TGeoBBox* trd_radiator = new TGeoBBox("", activeAreaX /2., activeAreaY /2., radiator_thickness /2.); TGeoBBox* trd_radiator = new TGeoBBox("trd_radiator", sizeX / 2., sizeY / 2., radiator_thickness / 2.); TGeoVolume* trdmod1_radvol = new TGeoVolume("radiator", trd_radiator, radVolMed); - // TGeoVolume* trdmod1_radvol = new TGeoVolume(Form("module%d_radiator", - // moduleType), trd_radiator, radVolMed); - // TGeoVolume* trdmod1_radvol = new TGeoVolume(Form("trd1mod%dradiator", - // moduleType), trd_radiator, radVolMed); + // TGeoVolume* trdmod1_radvol = new TGeoVolume(Form("module%d_radiator", moduleType), trd_radiator, radVolMed); + // TGeoVolume* trdmod1_radvol = new TGeoVolume(Form("trd1mod%dradiator", moduleType), trd_radiator, radVolMed); trdmod1_radvol->SetLineColor(kBlue); trdmod1_radvol->SetTransparency(70); // (60); // (70); // set transparency for the TRD radiator TGeoTranslation* trd_radiator_trans = new TGeoTranslation("", 0., 0., radiator_position); @@ -1726,14 +1590,12 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) (0.00 * activeAreaY / 2.), -(0.40 * activeAreaY / 2.), -(0.80 * activeAreaY / 2. + lattice_i_width[type] / 4.)}; - // TGeoVolumeAssembly* trdmod0_lattice = new - // TGeoVolumeAssembly("mod0lattice"); // volume for lattice grid + // TGeoVolumeAssembly* trdmod0_lattice = new TGeoVolumeAssembly("mod0lattice"); // volume for lattice grid TGeoBBox* trd_lattice_mod0 = new TGeoBBox("trd_lattice_mod0", sizeX / 2., sizeY / 2., lattice_thickness / 2.); TGeoVolume* trdmod0_lattice = new TGeoVolume("lat_grid_mod0", trd_lattice_mod0, keepVolMed); - // trdmod0_lattice->SetLineColor(kGreen); // set color for keeping - // volume + // trdmod0_lattice->SetLineColor(kGreen); // set color for keeping volume // outer frame trdmod0_lattice->AddNode(trd_lattice_mod0_vol_ho, 1, tv010); @@ -1756,11 +1618,9 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) for (Int_t x = 0; x < 4; x++) for (Int_t y = 0; y < 5; y++) { TGeoTranslation* t0xy = new TGeoTranslation("", vxpos0[x], vypos0[y], 0); - if ((y == 0) || (y == 4)) trdmod0_lattice->AddNode(trd_lattice_mod0_vol_vb, lat0_no, - t0xy); // border piece + if ((y == 0) || (y == 4)) trdmod0_lattice->AddNode(trd_lattice_mod0_vol_vb, lat0_no, t0xy); // border piece else - trdmod0_lattice->AddNode(trd_lattice_mod0_vol_vi, lat0_no, - t0xy); // middle piece + trdmod0_lattice->AddNode(trd_lattice_mod0_vol_vi, lat0_no, t0xy); // middle piece lat0_no++; } @@ -1827,14 +1687,12 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) -(0.625 * activeAreaY / 2.), -(0.875 * activeAreaY / 2. + lattice_i_width[type] / 4.)}; - // TGeoVolumeAssembly* trdmod1_lattice = new - // TGeoVolumeAssembly("mod1lattice"); // volume for lattice grid + // TGeoVolumeAssembly* trdmod1_lattice = new TGeoVolumeAssembly("mod1lattice"); // volume for lattice grid TGeoBBox* trd_lattice_mod1 = new TGeoBBox("trd_lattice_mod1", sizeX / 2., sizeY / 2., lattice_thickness / 2.); TGeoVolume* trdmod1_lattice = new TGeoVolume("lat_grid_mod1", trd_lattice_mod1, keepVolMed); - // trdmod1_lattice->SetLineColor(kGreen); // set color for keeping - // volume + // trdmod1_lattice->SetLineColor(kGreen); // set color for keeping volume // outer frame trdmod1_lattice->AddNode(trd_lattice_mod1_vol_ho, 1, tv110); @@ -1857,11 +1715,9 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) for (Int_t x = 0; x < 7; x++) for (Int_t y = 0; y < 8; y++) { TGeoTranslation* t1xy = new TGeoTranslation("", vxpos1[x], vypos1[y], 0); - if ((y == 0) || (y == 7)) trdmod1_lattice->AddNode(trd_lattice_mod1_vol_vb, lat1_no, - t1xy); // border piece + if ((y == 0) || (y == 7)) trdmod1_lattice->AddNode(trd_lattice_mod1_vol_vb, lat1_no, t1xy); // border piece else - trdmod1_lattice->AddNode(trd_lattice_mod1_vol_vi, lat1_no, - t1xy); // middle piece + trdmod1_lattice->AddNode(trd_lattice_mod1_vol_vi, lat1_no, t1xy); // middle piece lat1_no++; } @@ -1876,11 +1732,8 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) // Kapton Foil TGeoBBox* trd_kapton = new TGeoBBox("trd_kapton", sizeX / 2., sizeY / 2., kapton_thickness / 2.); TGeoVolume* trdmod1_kaptonvol = new TGeoVolume("kaptonfoil", trd_kapton, kaptonVolMed); - // TGeoVolume* trdmod1_kaptonvol = new - // TGeoVolume(Form("module%d_kaptonfoil", moduleType), trd_kapton, - // kaptonVolMed); - // TGeoVolume* trdmod1_kaptonvol = new TGeoVolume(Form("trd1mod%dkapton", - // moduleType), trd_kapton, kaptonVolMed); + // TGeoVolume* trdmod1_kaptonvol = new TGeoVolume(Form("module%d_kaptonfoil", moduleType), trd_kapton, kaptonVolMed); + // TGeoVolume* trdmod1_kaptonvol = new TGeoVolume(Form("trd1mod%dkapton", moduleType), trd_kapton, kaptonVolMed); trdmod1_kaptonvol->SetLineColor(kGreen); TGeoTranslation* trd_kapton_trans = new TGeoTranslation("", 0., 0., kapton_position); module->AddNode(trdmod1_kaptonvol, 1, trd_kapton_trans); @@ -1890,10 +1743,8 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) // Gas TGeoBBox* trd_gas = new TGeoBBox("trd_gas", activeAreaX / 2., activeAreaY / 2., gas_thickness / 2.); TGeoVolume* trdmod1_gasvol = new TGeoVolume("gas", trd_gas, gasVolMed); - // TGeoVolume* trdmod1_gasvol = new TGeoVolume(Form("module%d_gas", - // moduleType), trd_gas, gasVolMed); - // TGeoVolume* trdmod1_gasvol = new TGeoVolume(Form("trd1mod%dgas", - // moduleType), trd_gas, gasVolMed); + // TGeoVolume* trdmod1_gasvol = new TGeoVolume(Form("module%d_gas", moduleType), trd_gas, gasVolMed); + // TGeoVolume* trdmod1_gasvol = new TGeoVolume(Form("trd1mod%dgas", moduleType), trd_gas, gasVolMed); // trdmod1_gasvol->SetLineColor(kBlue); trdmod1_gasvol->SetLineColor(kGreen); // to avoid blue overlaps in the screenshots trdmod1_gasvol->SetTransparency(40); // set transparency for the TRD gas @@ -1913,6 +1764,7 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) trd_frame1_trans = new TGeoTranslation("", 0., -(activeAreaY / 2. + frameWidth / 2.), frame_position); module->AddNode(trdmod1_frame1vol, 2, trd_frame1_trans); + // frame2 TGeoBBox* trd_frame2 = new TGeoBBox("trd_frame2", frameWidth / 2., activeAreaY / 2., frame_thickness / 2.); TGeoVolume* trdmod1_frame2vol = new TGeoVolume("frame2", trd_frame2, frameVolMed); @@ -1929,12 +1781,8 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) // Pad Copper TGeoBBox* trd_padcopper = new TGeoBBox("trd_padcopper", sizeX / 2., sizeY / 2., padcopper_thickness / 2.); TGeoVolume* trdmod1_padcoppervol = new TGeoVolume("padcopper", trd_padcopper, padcopperVolMed); - // TGeoVolume* trdmod1_padcoppervol = new - // TGeoVolume(Form("module%d_padcopper", moduleType), trd_padcopper, - // padcopperVolMed); - // TGeoVolume* trdmod1_padcoppervol = new - // TGeoVolume(Form("trd1mod%dpadcopper", moduleType), trd_padcopper, - // padcopperVolMed); + // TGeoVolume* trdmod1_padcoppervol = new TGeoVolume(Form("module%d_padcopper", moduleType), trd_padcopper, padcopperVolMed); + // TGeoVolume* trdmod1_padcoppervol = new TGeoVolume(Form("trd1mod%dpadcopper", moduleType), trd_padcopper, padcopperVolMed); trdmod1_padcoppervol->SetLineColor(kOrange); TGeoTranslation* trd_padcopper_trans = new TGeoTranslation("", 0., 0., padcopper_position); module->AddNode(trdmod1_padcoppervol, 1, trd_padcopper_trans); @@ -1942,12 +1790,8 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) // Pad Plane TGeoBBox* trd_padpcb = new TGeoBBox("trd_padpcb", sizeX / 2., sizeY / 2., padplane_thickness / 2.); TGeoVolume* trdmod1_padpcbvol = new TGeoVolume("padplane", trd_padpcb, padpcbVolMed); - // TGeoVolume* trdmod1_padpcbvol = new - // TGeoVolume(Form("module%d_padplane", moduleType), trd_padpcb, - // padpcbVolMed); - // TGeoVolume* trdmod1_padpcbvol = new - // TGeoVolume(Form("trd1mod%dpadplane", moduleType), trd_padpcb, - // padpcbVolMed); + // TGeoVolume* trdmod1_padpcbvol = new TGeoVolume(Form("module%d_padplane", moduleType), trd_padpcb, padpcbVolMed); + // TGeoVolume* trdmod1_padpcbvol = new TGeoVolume(Form("trd1mod%dpadplane", moduleType), trd_padpcb, padpcbVolMed); trdmod1_padpcbvol->SetLineColor(kBlue); TGeoTranslation* trd_padpcb_trans = new TGeoTranslation("", 0., 0., padplane_position); module->AddNode(trdmod1_padpcbvol, 1, trd_padpcb_trans); @@ -1957,12 +1801,8 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) // Honeycomb TGeoBBox* trd_honeycomb = new TGeoBBox("trd_honeycomb", sizeX / 2., sizeY / 2., honeycomb_thickness / 2.); TGeoVolume* trdmod1_honeycombvol = new TGeoVolume("honeycomb", trd_honeycomb, honeycombVolMed); - // TGeoVolume* trdmod1_honeycombvol = new - // TGeoVolume(Form("module%d_honeycomb", moduleType), trd_honeycomb, - // honeycombVolMed); - // TGeoVolume* trdmod1_honeycombvol = new - // TGeoVolume(Form("trd1mod%dhoneycomb", moduleType), trd_honeycomb, - // honeycombVolMed); + // TGeoVolume* trdmod1_honeycombvol = new TGeoVolume(Form("module%d_honeycomb", moduleType), trd_honeycomb, honeycombVolMed); + // TGeoVolume* trdmod1_honeycombvol = new TGeoVolume(Form("trd1mod%dhoneycomb", moduleType), trd_honeycomb, honeycombVolMed); trdmod1_honeycombvol->SetLineColor(kOrange); TGeoTranslation* trd_honeycomb_trans = new TGeoTranslation("", 0., 0., honeycomb_position); module->AddNode(trdmod1_honeycombvol, 1, trd_honeycomb_trans); @@ -1970,11 +1810,8 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) // Carbon fiber layers TGeoBBox* trd_carbon = new TGeoBBox("trd_carbon", sizeX / 2., sizeY / 2., carbon_thickness / 2.); TGeoVolume* trdmod1_carbonvol = new TGeoVolume("carbonsheet", trd_carbon, carbonVolMed); - // TGeoVolume* trdmod1_carbonvol = new - // TGeoVolume(Form("module%d_carbonsheet", moduleType), trd_carbon, - // carbonVolMed); - // TGeoVolume* trdmod1_carbonvol = new TGeoVolume(Form("trd1mod%dcarbon", - // moduleType), trd_carbon, carbonVolMed); + // TGeoVolume* trdmod1_carbonvol = new TGeoVolume(Form("module%d_carbonsheet", moduleType), trd_carbon, carbonVolMed); + // TGeoVolume* trdmod1_carbonvol = new TGeoVolume(Form("trd1mod%dcarbon", moduleType), trd_carbon, carbonVolMed); trdmod1_carbonvol->SetLineColor(kGreen); TGeoTranslation* trd_carbon_trans = new TGeoTranslation("", 0., 0., carbon_position); module->AddNode(trdmod1_carbonvol, 1, trd_carbon_trans); @@ -1993,6 +1830,7 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) trd_aluledge1_trans = new TGeoTranslation("", 0., -(sizeY / 2. - aluminium_width / 2.), aluminium_position); module->AddNode(trdmod1_aluledge1vol, 2, trd_aluledge1_trans); + // Al-ledge TGeoBBox* trd_aluledge2 = new TGeoBBox("trd_aluledge2", aluminium_width / 2., sizeY / 2. - aluminium_width, aluminium_thickness / 2.); @@ -2013,18 +1851,10 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) TGeoVolumeAssembly* trd_feb_vol = new TGeoVolumeAssembly("febvol"); // the mother volume of all FEBs TGeoVolumeAssembly* trd_feb_box = new TGeoVolumeAssembly("febbox"); // volume for inclined FEBs, then shifted along y - // TGeoVolumeAssembly* trd_feb_vol = new - // TGeoVolumeAssembly(Form("module%d_febvol", moduleType)); // the mother - // volume of all FEBs - // TGeoVolumeAssembly* trd_feb_box = new - // TGeoVolumeAssembly(Form("module%d_febbox", moduleType)); // volume for - // inclined FEBs, then shifted along y - // TGeoVolumeAssembly* trd_feb_vol = new - // TGeoVolumeAssembly(Form("trd1mod%dfebvol", moduleType)); // the mother - // volume of all FEBs - // TGeoVolumeAssembly* trd_feb_box = new - // TGeoVolumeAssembly(Form("trd1mod%dfebbox", moduleType)); // volume for - // inclined FEBs, then shifted along y + //TGeoVolumeAssembly* trd_feb_vol = new TGeoVolumeAssembly(Form("module%d_febvol", moduleType)); // the mother volume of all FEBs + //TGeoVolumeAssembly* trd_feb_box = new TGeoVolumeAssembly(Form("module%d_febbox", moduleType)); // volume for inclined FEBs, then shifted along y + //TGeoVolumeAssembly* trd_feb_vol = new TGeoVolumeAssembly(Form("trd1mod%dfebvol", moduleType)); // the mother volume of all FEBs + //TGeoVolumeAssembly* trd_feb_box = new TGeoVolumeAssembly(Form("trd1mod%dfebbox", moduleType)); // volume for inclined FEBs, then shifted along y // translations + rotations TGeoTranslation* trd_feb_trans1; // center to corner @@ -2038,14 +1868,11 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) // // TGeoCombiTrans *trd_feb_placement; // // // fix Z back offset 0.3 at some point // // yback = - sin(feb_rotation_angle/180*3.141) * feb_width /2.; - // // zback = - (1-cos(feb_rotation_angle/180*3.141)) * feb_width /2. - // + 0.3; - // // trd_feb_placement = new TGeoCombiTrans(0, feb_pos_y + yback, - // zback, trd_feb_rotation); + // // zback = - (1-cos(feb_rotation_angle/180*3.141)) * feb_width /2. + 0.3; + // // trd_feb_placement = new TGeoCombiTrans(0, feb_pos_y + yback, zback, trd_feb_rotation); // // trd_feb_box->AddNode(trdmod1_feb, iFeb+1, trd_feb_placement); - // trd_feb_null = new TGeoTranslation("", 0., 0., 0.); // empty - // operation + // trd_feb_null = new TGeoTranslation("", 0., 0., 0.); // empty operation trd_feb_trans1 = new TGeoTranslation("", 0., -feb_thickness / 2., -feb_width / 2.); // move bottom right corner to center trd_feb_trans2 = new TGeoTranslation("", 0., feb_thickness / 2., @@ -2061,24 +1888,18 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) // (*incline_feb) = (*trd_feb_trans1) * (*trd_feb_y_position); // OK // (*incline_feb) = (*trd_feb_trans1) * (*trd_feb_trans2); // OK // (*incline_feb) = (*trd_feb_trans1) * (*trd_feb_rotation); // OK - // (*incline_feb) = (*trd_feb_trans1) * (*trd_feb_rotation) * - // (*trd_feb_trans2) * (*trd_feb_y_position); // not OK + // (*incline_feb) = (*trd_feb_trans1) * (*trd_feb_rotation) * (*trd_feb_trans2) * (*trd_feb_y_position); // not OK // trd_feb_y_position is displaced in rotated coordinate system // matrix operation to rotate FEB PCB around its corner on the backanel (*incline_feb) = (*trd_feb_trans1) * (*trd_feb_rotation) * (*trd_feb_trans2); // OK - // Create all FEBs and place them in an assembly which will be added to the - // TRD module + // Create all FEBs and place them in an assembly which will be added to the TRD module TGeoBBox* trd_feb = new TGeoBBox("trd_feb", activeAreaX / 2., feb_thickness / 2., feb_width / 2.); // the FEB itself - as a cuboid TGeoVolume* trdmod1_feb = new TGeoVolume("feb", trd_feb, febVolMed); // the FEB made of a certain medium - // TGeoVolume* trdmod1_feb = new TGeoVolume(Form("module%d_feb", - // moduleType), trd_feb, febVolMed); // the FEB made of a certain - // medium - // TGeoVolume* trdmod1_feb = new TGeoVolume(Form("trd1mod%dfeb", - // moduleType), trd_feb, febVolMed); // the FEB made of a certain - // medium + // TGeoVolume* trdmod1_feb = new TGeoVolume(Form("module%d_feb", moduleType), trd_feb, febVolMed); // the FEB made of a certain medium + // TGeoVolume* trdmod1_feb = new TGeoVolume(Form("trd1mod%dfeb", moduleType), trd_feb, febVolMed); // the FEB made of a certain medium trdmod1_feb->SetLineColor(kYellow); // set yellow color trd_feb_box->AddNode(trdmod1_feb, 1, incline_feb); // now we have an inclined FEB @@ -2106,12 +1927,8 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) asic_width / 2.); // ASIC dimensions // TODO: use Silicon as ASICs material TGeoVolume* trdmod1_asic = new TGeoVolume("asic", trd_asic, asicVolMed); // the ASIC made of a certain medium - // TGeoVolume* trdmod1_asic = new TGeoVolume(Form("module%d_asic", - // moduleType), trd_asic, asicVolMed); // the ASIC made of a - // certain medium - // TGeoVolume* trdmod1_asic = new TGeoVolume(Form("trd1mod%dasic", - // moduleType), trd_asic, asicVolMed); // the ASIC made of a - // certain medium + // TGeoVolume* trdmod1_asic = new TGeoVolume(Form("module%d_asic", moduleType), trd_asic, asicVolMed); // the ASIC made of a certain medium + // TGeoVolume* trdmod1_asic = new TGeoVolume(Form("trd1mod%dasic", moduleType), trd_asic, asicVolMed); // the ASIC made of a certain medium trdmod1_asic->SetLineColor(kBlue); // set blue color for ASICs Int_t nofAsics = AsicsPerFeb[moduleType - 1] % 100; @@ -2124,9 +1941,8 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) for (Int_t iAsic = 0; iAsic < (nofAsics / groupAsics); iAsic++) { if (groupAsics == 1) // single ASICs { - asic_pos = (iAsic + 0.5) / nofAsics - 0.5; // equal spacing of ASICs - // on the FEB, e.g. for - // no=3 : -1/3, 0, +1/3 + asic_pos = + (iAsic + 0.5) / nofAsics - 0.5; // equal spacing of ASICs on the FEB, e.g. for no=3 : -1/3, 0, +1/3 // ASIC 1 asic_pos_x = asic_pos * activeAreaX; @@ -2140,9 +1956,8 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) if (groupAsics == 2) // pairs of ASICs { - asic_pos = - (iAsic + 0.5) / (nofAsics / groupAsics) - 0.5; // equal spacing of ASICs on the FEB, e.g. for no=3 : - // -1/3, 0, +1/3 + asic_pos = (iAsic + 0.5) / (nofAsics / groupAsics) + - 0.5; // equal spacing of ASICs on the FEB, e.g. for no=3 : -1/3, 0, +1/3 // ASIC 1 asic_pos_x = asic_pos * activeAreaX + (0.5 + asic_distance / 2.) * asic_width; @@ -2165,9 +1980,8 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) if (groupAsics == 3) // triplets of ASICs { - asic_pos = - (iAsic + 0.5) / (nofAsics / groupAsics) - 0.5; // equal spacing of ASICs on the FEB, e.g. for no=3 : - // -1/3, 0, +1/3 + asic_pos = (iAsic + 0.5) / (nofAsics / groupAsics) + - 0.5; // equal spacing of ASICs on the FEB, e.g. for no=3 : -1/3, 0, +1/3 // ASIC 1 asic_pos_x = asic_pos * activeAreaX + 1.1 * asic_width; // (0.5 + asic_distance/2.) * asic_width; @@ -2200,6 +2014,7 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) // now we have an inclined FEB with ASICs } + // now go on with FEB placement Double_t feb_pos; Double_t feb_pos_y; @@ -2214,10 +2029,8 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) // shift inclined FEB in y to its final position trd_feb_y_position = new TGeoTranslation("", 0., feb_pos_y, feb_z_offset); // with additional fixed offset in z direction - // trd_feb_y_position = new TGeoTranslation("", 0., feb_pos_y, - // 0.0); // touching the backpanel with the corner - trd_feb_vol->AddNode(trd_feb_box, iFeb + 1, - trd_feb_y_position); // position FEB in y + // trd_feb_y_position = new TGeoTranslation("", 0., feb_pos_y, 0.0); // touching the backpanel with the corner + trd_feb_vol->AddNode(trd_feb_box, iFeb + 1, trd_feb_y_position); // position FEB in y } if (IncludeRobs) { @@ -2266,17 +2079,13 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) Int_t iGbtx = 1; for (Int_t iGbtxX = 0; iGbtxX < nofGbtxX; iGbtxX++) { - gbtx_pos = (iGbtxX + 0.5) / nofGbtxX - 0.5; // equal spacing of GBTXs on - // the FEB, e.g. for no=3 : - // -1/3, 0, +1/3 + gbtx_pos = (iGbtxX + 0.5) / nofGbtxX - 0.5; // equal spacing of GBTXs on the FEB, e.g. for no=3 : -1/3, 0, +1/3 gbtx_pos_x = -gbtx_pos * rob_size_x; if (iGbtxX > 0) for (Int_t iGbtxY = 0; iGbtxY < nofGbtxY; iGbtxY++) { - gbtx_pos = (iGbtxY + 0.5) / nofGbtxY - 0.5; // equal spacing of - // GBTXs on the FEB, - // e.g. for no=3 : -1/3, - // 0, +1/3 + gbtx_pos = + (iGbtxY + 0.5) / nofGbtxY - 0.5; // equal spacing of GBTXs on the FEB, e.g. for no=3 : -1/3, 0, +1/3 gbtx_pos_y = gbtx_pos * rob_size_y; trd_gbtx_trans1 = new TGeoTranslation("", gbtx_pos_x, gbtx_pos_y, @@ -2309,8 +2118,7 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) trd_rob_y_position = new TGeoTranslation("", 0., rob_pos_y, -feb_width / 2. + rob_offset); // place ROBs close to FEBs else { - // Int_t rob_z_pos = 0.; // test where ROB is placed by - // default + // Int_t rob_z_pos = 0.; // test where ROB is placed by default Int_t rob_z_pos = -feb_width / 2. + feb_width * cos(feb_rotation_angle[moduleType - 1] * acos(-1.) / 180.) + rob_offset; if (rob_z_pos > feb_width / 2.) // if the rob is too far out @@ -2322,8 +2130,7 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) } trd_rob_y_position = new TGeoTranslation("", 0., rob_pos_y, rob_z_pos); } - trd_feb_vol->AddNode(trd_rob_box, iRob + 1, - trd_rob_y_position); // position FEB in y + trd_feb_vol->AddNode(trd_rob_box, iRob + 1, trd_rob_y_position); // position FEB in y } } // IncludeGbtx @@ -2331,10 +2138,7 @@ TGeoVolume* create_trd_module_type(Int_t moduleType) // put FEB box on module TGeoTranslation* trd_febvolume_trans = new TGeoTranslation("", 0., 0., febvolume_position); gGeoMan->GetVolume(name)->AddNode(trd_feb_vol, 1, - trd_febvolume_trans); // put febvolume at - // correct z - // position wrt to - // the module + trd_febvolume_trans); // put febvolume at correct z position wrt to the module } // DE123 @@ -2387,8 +2191,7 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) TGeoMedium* honeycombVolMed = gGeoMan->GetMedium(HoneycombVolumeMedium); TGeoMedium* carbonVolMed = gGeoMan->GetMedium(CarbonVolumeMedium); // TGeoMedium* mylarVolMed = gGeoMan->GetMedium(MylarVolumeMedium); - // TGeoMedium* electronicsVolMed = - // gGeoMan->GetMedium(ElectronicsVolumeMedium); + // TGeoMedium* electronicsVolMed = gGeoMan->GetMedium(ElectronicsVolumeMedium); TGeoMedium* frameVolMed = gGeoMan->GetMedium(FrameVolumeMedium); TGeoMedium* febVolMed = gGeoMan->GetMedium(FebVolumeMedium); TGeoMedium* asicVolMed = gGeoMan->GetMedium(AsicVolumeMedium); @@ -2397,6 +2200,7 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) TString name = Form("module%d", moduleType); TGeoVolume* module = new TGeoVolumeAssembly(name); + if (IncludeRadiator) { // Radiator TGeoBBox* trd_radiator = new TGeoBBox("trd_radiator", sizeX / 2., sizeY / 2., radiator_thickness / 2.); TGeoVolume* trdmod1_radvol = new TGeoVolume("Radiator", trd_radiator, radVolMed); @@ -2409,8 +2213,7 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) Double_t winIn_C_thickness = 0.02; Double_t winIn_HC_thickness = 1.; Double_t winIn_thickness = winIn_HC_thickness + /*2**/ winIn_C_thickness; - if (IncludeLattice) { // Entrance window in the case of the Bucharest - // prototype + if (IncludeLattice) { // Entrance window in the case of the Bucharest prototype Info("create_trd2d_module_type", "make entrance widow ..."); // Carbon fiber layers TGeoBBox* winIn_C = new TGeoBBox("winIn_C", 0.3 + activeAreaX / 2., 0.9 + activeAreaY / 2., winIn_C_thickness / 2.); @@ -2442,18 +2245,16 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) trd_win_in->AddNode(vol_winIn_C, 1, new TGeoTranslation("", 0., 0., 0.5 * (winIn_HC_thickness + winIn_C_thickness))); // trd_win_in->AddNode(vol_winIn_C, 2, - // new TGeoTranslation("", 0., 0., - // -(winIn_thickness-winIn_C_thickness)/2.)); + // new TGeoTranslation("", 0., 0., -(winIn_thickness-winIn_C_thickness)/2.)); module->AddNode(trd_win_in, 1, new TGeoTranslation( "", 0., 0., gasBu_position - gas_thickness / 2. - winIn_C_thickness - winIn_HC_thickness / 2.)); } - // Gas. The volume has to be defined only for pads (read-out) area. Take care - // in the DigiPara definition + // Gas. The volume has to be defined only for pads (read-out) area. Take care in the DigiPara definition TGeoBBox* trd_gas = new TGeoBBox("trd_gas", 0.5 * activeAreaX, 0.5 * activeAreaY, 0.5 * gas_thickness); TGeoVolume* vol_gas = new TGeoVolume("gas", trd_gas, gasVolMed); - vol_gas->SetLineColor(kRed + 3); // trdmod1_gasvol->SetTransparency(40); + vol_gas->SetLineColor(kRed + 3); //trdmod1_gasvol->SetTransparency(40); TGeoBBox* trd_gas_dstr = new TGeoBBox("trd_gas_dstr", 0.5 * activeAreaX, 0.2, 0.5 * gas_thickness); TGeoVolume* vol_gas_dstr = new TGeoVolume("inlet", trd_gas_dstr, gasVolMed); vol_gas_dstr->SetLineColor(kRed); @@ -2482,18 +2283,16 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) TGeoBBox* trd_ppHC_bd = new TGeoBBox(Form("%s_hc_bd", ppn), 1.0 + activeAreaX / 2., 0.9 + activeAreaY / 2., pp_hc_thickness / 2.); TGeoBBox* trd_ppHC_fc = new TGeoBBox(Form("%s_hc_fc", ppn), 2.4 / 2., 0.8 / 2., (1.e-4 + pp_hc_thickness) / 2.); - // if(detTypeIdx==2) addFlatCableHoles(Form("%s_hc", ppn)); - // TGeoCompositeShape* trd_ppHC = new TGeoCompositeShape(Form("%s_hc", ppn), - // sexpr.Data()); + //if(detTypeIdx==2) addFlatCableHoles(Form("%s_hc", ppn)); + //TGeoCompositeShape* trd_ppHC = new TGeoCompositeShape(Form("%s_hc", ppn), sexpr.Data()); TGeoVolume* vol_trd_ppHC = new TGeoVolume(Form("vol_%s_hc", ppn), trd_ppHC_bd, honeycombVolMed); vol_trd_ppHC->SetLineColor(kOrange); // Pad Plane C fiber TGeoBBox* trd_ppC_bd = new TGeoBBox(Form("%s_c_bd", ppn), 1.0 + activeAreaX / 2., 0.9 + activeAreaY / 2., pp_c_thickness / 2.); TGeoBBox* trd_ppC_fc = new TGeoBBox(Form("%s_c_fc", ppn), 2.4 / 2., 0.8 / 2., (1.e-4 + pp_c_thickness) / 2.); - // if(detTypeIdx==2) addFlatCableHoles(Form("%s_c", ppn)); - // TGeoCompositeShape* trd_ppC = new TGeoCompositeShape(Form("%s_c", ppn), - // sexpr.Data()); + //if(detTypeIdx==2) addFlatCableHoles(Form("%s_c", ppn)); + //TGeoCompositeShape* trd_ppC = new TGeoCompositeShape(Form("%s_c", ppn), sexpr.Data()); TGeoVolume* vol_trd_ppC = new TGeoVolume(Form("vol_%s_c", ppn), trd_ppC_bd, carbonVolMed); vol_trd_ppC->SetLineColor(kGray); @@ -2510,6 +2309,7 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) new TGeoTranslation("", 0., 0., gasBu_position + gas_thickness / 2. + pp_thickness / 2.)); } + if (IncludeGasFrame) { Info("create_trd2d_module_type", "make gas frame ..."); // framex @@ -2519,22 +2319,22 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) Double_t frame_fx1_thickness = winIn_thickness + gas_thickness + pp_thickness; TGeoBBox* frame_fx1 = new TGeoBBox("frame_fx1", 1. + activeAreaX / 2., 0.3 / 2., frame_fx1_thickness / 2.); TGeoVolume* vol_frame_fx1 = new TGeoVolume("vol_frame_fx1", frame_fx1, frameVolMed); - vol_frame_fx1->SetLineColor(kViolet); // vol_frame_fx1->SetTransparency(50); + vol_frame_fx1->SetLineColor(kViolet); //vol_frame_fx1->SetTransparency(50); // framey TGeoBBox* frame_fy_0 = new TGeoBBox("frame_fy_0", 0.7 / 2., (1.8 + activeAreaY) / 2., winIn_thickness / 2.); TGeoVolume* vol_frame_fy_0 = new TGeoVolume("vol_frame_fy_0", frame_fy_0, frameVolMed); vol_frame_fy_0->SetLineColor(kBlue); - TGeoBBox* frame_fy_1 = new TGeoBBox("frame_fy_1", 1.0 / 2., (1.8 + activeAreaY) / 2., - 0.4 / 2.); // catode wire support + TGeoBBox* frame_fy_1 = + new TGeoBBox("frame_fy_1", 1.0 / 2., (1.8 + activeAreaY) / 2., 0.4 / 2.); // catode wire support TGeoVolume* vol_frame_fy_1 = new TGeoVolume("vol_frame_fy_1", frame_fy_1, frameVolMed); vol_frame_fy_1->SetLineColor(kBlue - 3); - TGeoBBox* frame_fy_2 = new TGeoBBox("frame_fy_2", 0.7 / 2., (1.8 + activeAreaY) / 2., - 0.4 / 2.); // anode wire support + TGeoBBox* frame_fy_2 = + new TGeoBBox("frame_fy_2", 0.7 / 2., (1.8 + activeAreaY) / 2., 0.4 / 2.); // anode wire support TGeoVolume* vol_frame_fy_2 = new TGeoVolume("vol_frame_fy_2", frame_fy_2, frameVolMed); vol_frame_fy_2->SetLineColor(kOrange + 4); - TGeoBBox* frame_fy_3 = new TGeoBBox("frame_fy_3", 0.4 / 2., (1.8 + activeAreaY) / 2., - 0.4 / 2.); // pad-plane support + TGeoBBox* frame_fy_3 = + new TGeoBBox("frame_fy_3", 0.4 / 2., (1.8 + activeAreaY) / 2., 0.4 / 2.); // pad-plane support TGeoVolume* vol_frame_fy_3 = new TGeoVolume("vol_frame_fy_3", frame_fy_3, frameVolMed); vol_frame_fy_3->SetLineColor(kYellow + 3); // add up framey components @@ -2547,7 +2347,7 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) vol_frame_fy0->AddNode(vol_frame_fy_3, 1, new TGeoTranslation("", -0.4 / 2., 0., 0.4)); TGeoBBox* frame_fy1 = new TGeoBBox("frame_fy1", 0.3 / 2., 1.2 + activeAreaY / 2., frame_fx1_thickness / 2.); TGeoVolume* vol_frame_fy1 = new TGeoVolume("vol_frame_fy1", frame_fy1, frameVolMed); - vol_frame_fy1->SetLineColor(kViolet + 2); // vol_frame_fy1->SetTransparency(50); + vol_frame_fy1->SetLineColor(kViolet + 2); //vol_frame_fy1->SetTransparency(50); // Add up all frames Double_t frame_fx1_position = -winIn_thickness - gas_thickness / 2. + frame_fx1_thickness / 2.; @@ -2605,6 +2405,7 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) module->AddNode(trd_gas_frame, 1, new TGeoTranslation("", 0., 0., gasBu_position)); } + const Double_t bp_hc_thickness = 2.; const Double_t bp_pcb_thickness = 0.05; const Double_t bp_cu_thickness = 0.003; @@ -2615,32 +2416,29 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) // Honeycomb board and flat-cable hole TGeoBBox* bp_hc_bd = new TGeoBBox("bp_hc_bd", activeAreaX / 2., activeAreaY / 2., bp_hc_thickness / 2.); TGeoBBox* bp_hc_fc = new TGeoBBox("bp_hc_fc", 2.4 / 2., 0.8 / 2., (1.e-4 + bp_hc_thickness) / 2.); - // if(detTypeIdx==2) addFlatCableHoles("bp_hc"); - // TGeoCompositeShape* bp_hc = new TGeoCompositeShape("bp_hc", - // sexpr.Data()); + //if(detTypeIdx==2) addFlatCableHoles("bp_hc"); + //TGeoCompositeShape* bp_hc = new TGeoCompositeShape("bp_hc", sexpr.Data()); TGeoVolume* vol_bp_hc = new TGeoVolume(".vol_bp_hc", bp_hc_bd, honeycombVolMed); vol_bp_hc->SetLineColor(kOrange); // Screen fibre-glass support (PCB) TGeoBBox* bp_pcb_bd = new TGeoBBox("bp_pcb_bd", 0.5 + activeAreaX / 2., 0.5 + activeAreaY / 2., bp_pcb_thickness / 2.); TGeoBBox* bp_pcb_fc = new TGeoBBox("bp_pcb_fc", 2.4 / 2., 0.8 / 2., (1.e-3 + bp_pcb_thickness) / 2.); - // if(detTypeIdx==2) addFlatCableHoles("bp_pcb"); - // TGeoCompositeShape* bp_pcb = new TGeoCompositeShape("bp_pcb", - // sexpr.Data()); + //if(detTypeIdx==2) addFlatCableHoles("bp_pcb"); + //TGeoCompositeShape* bp_pcb = new TGeoCompositeShape("bp_pcb", sexpr.Data()); TGeoVolume* vol_bp_pcb = new TGeoVolume("vol_bp_pcb", bp_pcb_bd, padpcbVolMed); vol_bp_pcb->SetLineColor(kGreen); // Pad Copper TGeoBBox* bp_cu_bd = new TGeoBBox("bp_cu_bd", 0.5 + activeAreaX / 2., 0.5 + activeAreaY / 2., bp_cu_thickness / 2.); TGeoBBox* bp_cu_fc = new TGeoBBox("bp_cu_fc", 2.4 / 2., 0.8 / 2., (1.e-3 + bp_cu_thickness) / 2.); - // if(detTypeIdx==2) addFlatCableHoles("bp_cu"); - // TGeoCompositeShape* bp_cu = new TGeoCompositeShape("bp_cu", - // sexpr.Data()); + //if(detTypeIdx==2) addFlatCableHoles("bp_cu"); + //TGeoCompositeShape* bp_cu = new TGeoCompositeShape("bp_cu", sexpr.Data()); TGeoVolume* vol_bp_cu = new TGeoVolume("vol_bp_cu", bp_cu_bd, padcopperVolMed); vol_bp_cu->SetLineColor(kRed); TGeoBBox* bp_fx = new TGeoBBox("bp_fx", activeAreaX / 2., 0.5 / 2., bp_hc_thickness / 2.); TGeoVolume* vol_bp_fx = new TGeoVolume("vol_bp_fx", bp_fx, frameVolMed); - vol_bp_fx->SetLineColor(kViolet); // vol_gas_fx1->SetTransparency(50); + vol_bp_fx->SetLineColor(kViolet); //vol_gas_fx1->SetTransparency(50); TGeoBBox* bp_fy = new TGeoBBox("bp_fy", 0.5 / 2, 0.5 + 0.5 * activeAreaY, bp_hc_thickness / 2.); TGeoVolume* vol_bp_fy = new TGeoVolume("vol_bp_fy", bp_fy, frameVolMed); vol_bp_fy->SetLineColor(kViolet + 2); @@ -2689,7 +2487,7 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) const Double_t FMCsuppD = 0.8; // outer radius of FMC connector side supports const Double_t FMCsuppX = 0.6; // FMC connector side supports // GETS2C-ROB3 connector boord parameters - const Double_t robConn_size_x = 3.9; // 15.0; + const Double_t robConn_size_x = 3.9; //15.0; const Double_t robConn_size_y = 15.0; // const Double_t robConn_xoffset = 6.0; // SATA+ connector definition @@ -2703,20 +2501,19 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) if (IncludeFebs) { Info("create_trd2d_module_type", "make FEBs ..."); - // Create all FEBs and place them in an assembly which will be added to the - // TRD module + // Create all FEBs and place them in an assembly which will be added to the TRD module // FASPRO board TGeoBBox* faspro_bd = new TGeoBBox("faspro_bd", FASPRO_length / 2., FASPRO_width / 2., FASPRO_thickness / 2.); TGeoVolume* vol_faspro_bd = new TGeoVolume("vol_faspro_bd", faspro_bd, febVolMed); - vol_faspro_bd->SetLineColor(kGreen + 3); // vol_faspro_bd->SetTransparency(50); + vol_faspro_bd->SetLineColor(kGreen + 3); //vol_faspro_bd->SetTransparency(50); // GETS board TGeoBBox* gets_bd = new TGeoBBox("gets_bd", GETS_length / 2., GETS_width / 2., GETS_thickness / 2.); TGeoVolume* vol_gets_bd = new TGeoVolume("vol_gets_bd", gets_bd, febVolMed); - vol_gets_bd->SetLineColor(kGreen + 3); // vol_gets_bd->SetTransparency(50); + vol_gets_bd->SetLineColor(kGreen + 3); //vol_gets_bd->SetTransparency(50); // GA01 board TGeoBBox* ga01_bd = new TGeoBBox("ga01_bd", GA01_length / 2., GA01_width / 2., GA01_thickness / 2.); TGeoVolume* vol_ga01_bd = new TGeoVolume("vol_ga01_bd", ga01_bd, febVolMed); - vol_ga01_bd->SetLineColor(kGreen + 7); // vol_gets_bd->SetTransparency(50); + vol_ga01_bd->SetLineColor(kGreen + 7); //vol_gets_bd->SetTransparency(50); // Create connectors // FMC connector @@ -2799,7 +2596,7 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) // supports for electronics TGeoBBox* faspro_fy = new TGeoBBox("faspro_fy", 0.4 / 2, 0.5 + 0.5 * activeAreaY, 0.5 * (FASPRO_zspace - 0.2)); TGeoVolume* vol_faspro_fy = new TGeoVolume("faspro_fy", faspro_fy, frameVolMed); - vol_faspro_fy->SetLineColor(kViolet + 2); // vol_faspro_fy->SetTransparency(50); + vol_faspro_fy->SetLineColor(kViolet + 2); //vol_faspro_fy->SetTransparency(50); // now go on with FEB placement TGeoVolumeAssembly* vol_feb = new TGeoVolumeAssembly("FEB"); // the mother volume of all FEBs @@ -2812,9 +2609,7 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) for (Int_t rFeb(1); rFeb < 5; rFeb++) { // the upper side ... // vol_feb->AddNode(faspro, iFeb++, - // new TGeoTranslation("", - // cFeb*(FASPRO_length+FASPRO_dx), - // (rFeb+0.5)*(FASPRO_width+FASPRO_dy), 0)); + // new TGeoTranslation("", cFeb*(FASPRO_length+FASPRO_dx), (rFeb+0.5)*(FASPRO_width+FASPRO_dy), 0)); // the bottom side ... vol_feb->AddNode(faspro, iFeb++, new TGeoTranslation("", cFeb * (FASPRO_length + FASPRO_dx) - FASPRO_length / 3., @@ -2862,7 +2657,7 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) TGeoBBox* crob_gbtx = new TGeoBBox("crob_gbtx", gbtx_width / 2., gbtx_width / 2., gbtx_thickness / 2.); TGeoVolume* vol_crob_gbtx = new TGeoVolume("crob_gbtx", crob_gbtx, asicVolMed); vol_crob_gbtx->SetLineColor(kGreen); - // place 3 GBTXs on each C-ROC + //place 3 GBTXs on each C-ROC Double_t gbtx_pos_x = 0.5 * (-rob_size_x + gbtx_width) - 1.5 /*-0.5*/; Double_t gbtx_pos_y = 0.5 * (rob_size_y - gbtx_width) - 0.5; crob->AddNode(vol_crob_gbtx, 0, @@ -2876,31 +2671,26 @@ TGeoVolume* create_trd2d_module_type(Int_t moduleType) // Int_t nofRobs = RobsPerModule[ 2 ], nofRobsHalf(nofRobs/2); // for (Int_t iRob = 0, jRob(0); iRob < nofRobsHalf; iRob++) { // printf("ROB[%d]\n", iRob); - // Double_t rob_pos = (iRob + 0.5) / nofRobsHalf - 0.5, // - // equal spacing of ROBs on the backpanel + // Double_t rob_pos = (iRob + 0.5) / nofRobsHalf - 0.5, // equal spacing of ROBs on the backpanel // rob_pos_y = rob_pos * activeAreaY; - // vol_feb->AddNode(crob, jRob++, new TGeoTranslation("", - // -0.5*(FASPRO_length+FASPRO_dx), rob_pos_y, LVB_pos)); - // TGeoRotation *crob_rot = new TGeoRotation("crob_rot"); - // crob_rot->RotateZ(180.); crob_rot->RegisterYourself(); - // TGeoTranslation *crob_tra = new TGeoTranslation("crob_tra", - // 0.5*(FASPRO_length+FASPRO_dx), rob_pos_y, LVB_pos); - // crob_tra->RegisterYourself(); - // TGeoHMatrix *crob_transform = new TGeoHMatrix(""); - // (*crob_transform)=(*crob_tra)*(*crob_rot); + // vol_feb->AddNode(crob, jRob++, new TGeoTranslation("", -0.5*(FASPRO_length+FASPRO_dx), rob_pos_y, LVB_pos)); + // TGeoRotation *crob_rot = new TGeoRotation("crob_rot"); crob_rot->RotateZ(180.); crob_rot->RegisterYourself(); + // TGeoTranslation *crob_tra = new TGeoTranslation("crob_tra", 0.5*(FASPRO_length+FASPRO_dx), rob_pos_y, LVB_pos); crob_tra->RegisterYourself(); + // TGeoHMatrix *crob_transform = new TGeoHMatrix(""); (*crob_transform)=(*crob_tra)*(*crob_rot); // vol_feb->AddNode(crob, jRob++, crob_transform); // } } // IncludeGbtx // put FEB box on module - module->AddNode(vol_feb, 1, new TGeoTranslation("", 0., 0., FASPRO_position)); // put febvolume at - // correct z position - // wrt to the module + module->AddNode( + vol_feb, 1, + new TGeoTranslation("", 0., 0., FASPRO_position)); // put febvolume at correct z position wrt to the module } return module; } + Int_t copy_nr(Int_t stationNr, Int_t copyNr, Int_t isRotated, Int_t planeNr, Int_t modinplaneNr) { if (modinplaneNr > 128) @@ -2967,8 +2757,7 @@ void create_detector_layers(Int_t layerId) Int_t i = LayerType[layerId] / 10 * 10000 // 1 digit // fStation + LayerType[layerId] % 10 * 1000 // 1 digit // isRotated + LayerNrInStation[layerId] * 100 // 1 digit // fLayer - + PlaneId[layerId]; // 2 digits // fPlane // layer type as leading - // digit in copy number of layer + + PlaneId[layerId]; // 2 digits // fPlane // layer type as leading digit in copy number of layer gGeoMan->GetVolume(geoVersion)->AddNode(layer, i); // Int_t i = 100 + PlaneId[layerId]; @@ -3010,32 +2799,23 @@ void create_detector_layers(Int_t layerId) // statistics per layer and module type ModuleStats[layerId][type - 1]++; - // Int_t copy = copy_nr_modid(stationNr, layerNrInStation, - // copyNrIn[type - 1], PlaneId[layerId], modId); // with - // modID - // Int_t copy = copy_nr(stationNr, copyNrIn[type - 1], - // isRotated, PlaneId[layerId], modId); + // Int_t copy = copy_nr_modid(stationNr, layerNrInStation, copyNrIn[type - 1], PlaneId[layerId], modId); // with modID + // Int_t copy = copy_nr(stationNr, copyNrIn[type - 1], isRotated, PlaneId[layerId], modId); // take care of FEB orientation - away from beam Int_t copy = 0; - module_rotation = new TGeoRotation(); // need to renew rotation to - // start from 0 degree angle + module_rotation = new TGeoRotation(); // need to renew rotation to start from 0 degree angle if (isRotated == 0) // layer 1,3 ... { copy = copy_nr(stationNr, copyNrIn[type - 1], module_id / 10 % 10, PlaneId[layerId], modId); - module_rotation->RotateZ((module_id / 10 % 10) * 90.); // rotate module by 0 or 180 - // degrees, see layer[1-3][i,o] - - // vertical pads + module_rotation->RotateZ( + (module_id / 10 % 10) * 90.); // rotate module by 0 or 180 degrees, see layer[1-3][i,o] - vertical pads } else // layer 2,4 ... { copy = copy_nr(stationNr, copyNrIn[type - 1], module_id % 10, PlaneId[layerId], modId); - module_rotation->RotateZ((module_id % 10) * 90.); // rotate module - // by 90 or 270 - // degrees, see - // layer[1-3][i,o] - // - horizontal - // pads + module_rotation->RotateZ( + (module_id % 10) * 90.); // rotate module by 90 or 270 degrees, see layer[1-3][i,o] - horizontal pads } // rotation @@ -3056,8 +2836,7 @@ void create_detector_layers(Int_t layerId) TGeoCombiTrans* module_placement = new TGeoCombiTrans(xPos, yPos, LayerPosition[layerId] + LayerThickness / 2 + dz, module_rotation); // shift by half layer thickness - // gGeoMan->GetVolume(geoVersion)->AddNode(gModules[type - - // 1], copy, module_placement); + // gGeoMan->GetVolume(geoVersion)->AddNode(gModules[type - 1], copy, module_placement); // add module to layer gGeoMan->GetVolume(layername)->AddNode(gModules[type - 1], copy, module_placement); // @@ -3095,32 +2874,23 @@ void create_detector_layers(Int_t layerId) // statistics per layer and module type ModuleStats[layerId][type - 1]++; - // Int_t copy = copy_nr_modid(stationNr, layerNrInStation, - // copyNrOut[type - 5], PlaneId[layerId], modId); // with - // modID - // Int_t copy = copy_nr(stationNr, copyNrOut[type - 5], - // isRotated, PlaneId[layerId], modId); + // Int_t copy = copy_nr_modid(stationNr, layerNrInStation, copyNrOut[type - 5], PlaneId[layerId], modId); // with modID + // Int_t copy = copy_nr(stationNr, copyNrOut[type - 5], isRotated, PlaneId[layerId], modId); // take care of FEB orientation - away from beam Int_t copy = 0; - module_rotation = new TGeoRotation(); // need to renew rotation to - // start from 0 degree angle + module_rotation = new TGeoRotation(); // need to renew rotation to start from 0 degree angle if (isRotated == 0) // layer 1,3 ... { copy = copy_nr(stationNr, copyNrOut[type - 5], module_id / 10 % 10, PlaneId[layerId], modId); - module_rotation->RotateZ((module_id / 10 % 10) * 90.); // rotate module by 0 or 180 - // degrees, see layer[1-3][i,o] - - // vertical pads + module_rotation->RotateZ( + (module_id / 10 % 10) * 90.); // rotate module by 0 or 180 degrees, see layer[1-3][i,o] - vertical pads } else // layer 2,4 ... { copy = copy_nr(stationNr, copyNrOut[type - 5], module_id % 10, PlaneId[layerId], modId); - module_rotation->RotateZ((module_id % 10) * 90.); // rotate module - // by 90 or 270 - // degrees, see - // layer[1-3][i,o] - // - horizontal - // pads + module_rotation->RotateZ( + (module_id % 10) * 90.); // rotate module by 90 or 270 degrees, see layer[1-3][i,o] - horizontal pads } // rotation @@ -3143,57 +2913,49 @@ void create_detector_layers(Int_t layerId) cout << "layer " << layerId << " ---" << endl; frameref_angle = atan((DetectorSizeX[1] / 2. - FrameWidth[1]) / (zfront[setupid] + 3 * LayerThickness)); - // frameref_angle = 15. / 180. * acos(-1); // set a fixed - // reference angle + // frameref_angle = 15. / 180. * acos(-1); // set a fixed reference angle cout << "reference angle " << frameref_angle * 180 / acos(-1) << endl; layer_angle = atan((DetectorSizeX[1] / 2. - FrameWidth[1]) / (zfront[setupid] + layerId * LayerThickness)); cout << "layer angle " << layer_angle * 180 / acos(-1) << endl; // DEDE - // xPos = tan( frameref_angle ) * (zfront[setupid] + layerId * - // LayerThickness) - (DetectorSizeX[1]/2. - FrameWidth[1]); // shift - // module along x-axis + // xPos = tan( frameref_angle ) * (zfront[setupid] + layerId * LayerThickness) - (DetectorSizeX[1]/2. - FrameWidth[1]); // shift module along x-axis xPos = 0; - /* if (layerId == 0) { + if (layerId == 2) { xPos += -22; // offset in x of 1st large TRD in mCBM 2021_07 yPos += -0.5; } // offset in x of 1st large TRD in mCBM 2021_07 - if (layerId == 1) { + if (layerId == 3) { xPos += -19; // offset in x of 2nd large TRD in mCBM 2021_07 yPos += 4.5; } // offset in x of 2nd large TRD in mCBM 2021_07 - cout << "DESH layer " << layerId << " - xPos " << xPos << endl; - */ layer_angle = atan((DetectorSizeX[1] / 2. - FrameWidth[1] + xPos) / (zfront[setupid] + layerId * LayerThickness)); cout << "corrected angle " << layer_angle * 180 / acos(-1) << endl; + // Double_t frameangle[4] = {0}; // for ( Int_t ilayer = 3; ilayer >= 0; ilayer--) // { - // frameangle[ilayer] = atan( (DetectorSizeX[1]/2. - - // FrameWidth[1]) / (zfront[setupid] + ilayer * - // LayerThickness) ); - // cout << "layer " << ilayer << " - angle " << - // frameangle[ilayer] * 180 / acos(-1) << endl; + // frameangle[ilayer] = atan( (DetectorSizeX[1]/2. - FrameWidth[1]) / (zfront[setupid] + ilayer * LayerThickness) ); + // cout << "layer " << ilayer << " - angle " << frameangle[ilayer] * 180 / acos(-1) << endl; // // xPos = (DetectorSizeX[1]/2. - FrameWidth[1]); - // cout << "layer " << ilayer << " - xPos " << xPos << - // endl; + // cout << "layer " << ilayer << " - xPos " << xPos << endl; // - // xPos = tan( frameangle[3] ) * (zfront[setupid] + ilayer - // * LayerThickness); - // cout << "layer " << ilayer << " - xPos " << xPos << - // endl; + // xPos = tan( frameangle[3] ) * (zfront[setupid] + ilayer * LayerThickness); + // cout << "layer " << ilayer << " - xPos " << xPos << endl; // - // xPos = (DetectorSizeX[1]/2. - FrameWidth[1]) - ( tan( - // frameangle[3] ) * (zfront[setupid] + ilayer * - // LayerThickness) ); // shift module along x-axis - // cout << "layer " << ilayer << " - xPos " << xPos << - // endl; + // xPos = (DetectorSizeX[1]/2. - FrameWidth[1]) - ( tan( frameangle[3] ) * (zfront[setupid] + ilayer * LayerThickness) ); // shift module along x-axis + // cout << "layer " << ilayer << " - xPos " << xPos << endl; // } + cout << "DESH layer " << layerId << " xPos " << xPos << endl; + cout << "DESH layer " << layerId << " yPos " << yPos << endl; + cout << "DESH layer " << layerId << " zPos " << LayerPosition[layerId] << " " << LayerThickness / 2 << " " + << dz << endl; + TGeoCombiTrans* module_placement = new TGeoCombiTrans(xPos, yPos, LayerPosition[layerId] + LayerThickness / 2 + dz, module_rotation); // shift by half layer thickness @@ -3206,10 +2968,10 @@ void create_detector_layers(Int_t layerId) } } - // install TRD2D detectors in the TRD setup + //install TRD2D detectors in the TRD setup Int_t type = -1; - if (layerId == 2 && layerType == 2) type = 10; - if (layerId == 3 && layerType == 2) type = 9; + if (layerId == 1 && layerType == 2) type = 10; + if (layerId == 0 && layerType == 2) type = 9; if (type < 0) return; Info("create_detector_layers", "add module[0x%p] of type[%d]", (void*) gModules[type - 1], type); @@ -3219,11 +2981,11 @@ void create_detector_layers(Int_t layerId) Double_t yPos = 2.5 * 5.12; // check with FASPRO_width; Double_t zPos = 0.; - if (layerId == 3) { + if (layerId == 0) { xPos = xPos - 35.5; - zPos = -2.0; + zPos = -2.0 + 13.5; } - if (layerId == 2) { + if (layerId == 1) { xPos = xPos - 22.5; yPos = yPos - 12.5; zPos = 3.0; @@ -3233,14 +2995,16 @@ void create_detector_layers(Int_t layerId) ModuleStats[layerId][type - 1]++; module_rotation = new TGeoRotation(); - // DESH + cout << "DESH layer " << layerId << " zPos " << LayerPosition[layerId] + LayerThickness / 2 << " " << zPos << endl; TGeoCombiTrans* module_placement = - new TGeoCombiTrans(xPos, yPos, LayerPosition[0] - (layerId - 1) * LayerThickness / 2 + zPos, + new TGeoCombiTrans(xPos, yPos, /*LayerPosition[0] - (layerId - 1) * LayerThickness / 2 + zPos*/ + LayerPosition[layerId] + LayerThickness / 2 + zPos, module_rotation); // shift by half layer thickness Int_t copy = copy_nr(1, 1, 0, PlaneId[layerId], 1); gGeoMan->GetVolume(layername)->AddNode(gModules[type - 1], copy, module_placement); } + void create_mag_field_vector() { const TString cbmfield_01 = "cbm_field"; @@ -3276,11 +3040,11 @@ void create_mag_field_vector() TGeoCombiTrans* field_combi01 = new TGeoCombiTrans(0., 0., 40., rotx270); // point in +y direction gGeoMan->GetVolume(geoVersion)->AddNode(cbmfield_1, 1, field_combi01); - // TGeoCombiTrans* field_combi02 = new TGeoCombiTrans( 200., 0., 0., - // rotx090); // point in -y direction + // TGeoCombiTrans* field_combi02 = new TGeoCombiTrans( 200., 0., 0., rotx090); // point in -y direction // gGeoMan->GetVolume(geoVersion)->AddNode(cbmfield_1, 2, field_combi02); } + void create_gibbet_support() { const TString gibbet_01 = "gibbet_bars_trd1"; @@ -3372,21 +3136,21 @@ void create_gibbet_support() { TString layername = Form("layer%02d", l + 1); // DESH - /* if (l == 0) { + if (l == 2) { xPos = -22; // offset in x of 1st large TRD in mCBM 2021_07 yPos = -0.5; } // offset in x of 1st large TRD in mCBM 2021_07 - if (l == 1) { + if (l == 3) { xPos = -19; // offset in x of 2nd large TRD in mCBM 2021_07 yPos = 4.5; } // offset in x of 2nd large TRD in mCBM 2021_07 - */ TGeoTranslation* gibbet_placement = new TGeoTranslation(xPos, yPos, LayerPosition[l] + LayerThickness / 2. + gibbet_position); gGeoMan->GetVolume(layername)->AddNode(gibbet_1, l, gibbet_placement); } } + void create_power_bars_vertical() { const TString power_01 = "power_bars_trd1"; @@ -3431,6 +3195,7 @@ void create_power_bars_vertical() power1_trans = new TGeoTranslation("", 1 * DetectorSizeX[0], -1.5 * DetectorSizeY[1], 0.); power_1->AddNode(power1_vol, 4, power1_trans); + // powerbus - vertical long power2 = new TGeoBBox("power2", powerbar_width / 2., (5 * DetectorSizeY[1] + powerbar_width) / 2., powerbar_thickness / 2.); @@ -3512,6 +3277,7 @@ void create_power_bars_vertical() } } + void create_power_bars_horizontal() { const TString power_01 = "power_bars_trd1"; @@ -3556,6 +3322,7 @@ void create_power_bars_horizontal() power1_trans = new TGeoTranslation("", -1.5 * DetectorSizeX[1], -1 * DetectorSizeY[0], 0.); power_1->AddNode(power1_vol, 4, power1_trans); + // powerbus - horizontal long power2 = new TGeoBBox("power2", (7 * DetectorSizeX[1] + powerbar_width) / 2., powerbar_width / 2., powerbar_thickness / 2.); @@ -3632,6 +3399,7 @@ void create_power_bars_horizontal() } } + void create_xtru_supports() { const TString trd_01 = "support_trd1"; @@ -3717,6 +3485,7 @@ void create_xtru_supports() rotxy02->RotateX(90.); // rotate 90 deg around x-axis rotxy02->RotateZ(ang1); // rotate ang1 around rotated y-axis + //------------------- // vertical pillars (Y) //------------------- @@ -3784,6 +3553,7 @@ void create_xtru_supports() trd_3->AddNode(trd_H_vert_vol1, 34, trd_H_vert_combi04); } + //------------------- // horizontal supports (X) //------------------- @@ -3851,6 +3621,7 @@ void create_xtru_supports() trd_3->AddNode(trd_H_hori_vol1, 34, trd_H_hori_combi04); } + //------------------- // horizontal supports (Z) //------------------- @@ -4001,6 +3772,7 @@ void create_xtru_supports() gGeoMan->GetVolume(geoVersion)->AddNode(trd_3, 3); } + void add_trd_labels(TGeoVolume* trdbox1, TGeoVolume* trdbox2, TGeoVolume* trdbox3) { // write TRD (the 3 characters) in a simple geometry @@ -4112,29 +3884,24 @@ void add_trd_labels(TGeoVolume* trdbox1, TGeoVolume* trdbox2, TGeoVolume* trdbox I->AddNode(Ibar2, 1, tr32); I->AddNode(Ibar2, 2, tr33); + // build text block "TRD" <32> + 8 + <28> + 8 + <32> = 108 // TGeoBBox *trdboxb = new TGeoBBox("", 108./2, 40./2, 8./2); // TGeoVolume *trdbox = new TGeoVolume("trdboxb", trdboxb, textVolMed); // trdbox->SetVisibility(kFALSE); - // TGeoVolume* trdbox[0] = new TGeoVolumeAssembly("trdbox1"); // volume for - // TRD text (108, 40, 8) - // TGeoVolume* trdbox[1] = new TGeoVolumeAssembly("trdbox2"); // volume for - // TRD text (108, 40, 8) - // TGeoVolume* trdbox[2] = new TGeoVolumeAssembly("trdbox3"); // volume for - // TRD text (108, 40, 8) + // TGeoVolume* trdbox[0] = new TGeoVolumeAssembly("trdbox1"); // volume for TRD text (108, 40, 8) + // TGeoVolume* trdbox[1] = new TGeoVolumeAssembly("trdbox2"); // volume for TRD text (108, 40, 8) + // TGeoVolume* trdbox[2] = new TGeoVolumeAssembly("trdbox3"); // volume for TRD text (108, 40, 8) TGeoTranslation* tr100 = new TGeoTranslation(38., 0., 0.); TGeoTranslation* tr101 = new TGeoTranslation(0., 0., 0.); TGeoTranslation* tr102 = new TGeoTranslation(-38., 0., 0.); - // TGeoTranslation *tr103 = new TGeoTranslation( -70., 0., 0.); // on the - // same line - // TGeoTranslation *tr104 = new TGeoTranslation( -86., 0., 0.); // on the - // same line - // TGeoTranslation *tr105 = new TGeoTranslation(-102., 0., 0.); // on the - // same line + // TGeoTranslation *tr103 = new TGeoTranslation( -70., 0., 0.); // on the same line + // TGeoTranslation *tr104 = new TGeoTranslation( -86., 0., 0.); // on the same line + // TGeoTranslation *tr105 = new TGeoTranslation(-102., 0., 0.); // on the same line TGeoTranslation* tr110 = new TGeoTranslation(0., -50., 0.); TGeoTranslation* tr111 = new TGeoTranslation(8., -50., 0.); @@ -4183,8 +3950,7 @@ void add_trd_labels(TGeoVolume* trdbox1, TGeoVolume* trdbox2, TGeoVolume* trdbox trdbox3->AddNode(I, 2, tr213); trdbox3->AddNode(I, 3, tr214); - // TGeoScale *sc100 = new TGeoScale( 36./50., 36./50., 1.); // text is - // vertical 50 cm, H-bar opening is 36 cm + // TGeoScale *sc100 = new TGeoScale( 36./50., 36./50., 1.); // text is vertical 50 cm, H-bar opening is 36 cm // // // scale text // TGeoHMatrix *mat100 = new TGeoHMatrix(""); @@ -4200,16 +3966,14 @@ void add_trd_labels(TGeoVolume* trdbox1, TGeoVolume* trdbox2, TGeoVolume* trdbox // // final placement // // TGeoTranslation *tr103 = new TGeoTranslation(0., 400., 500.); - // gGeoMan->GetVolume(geoVersion)->AddNode(trdbox, 1, new - // TGeoTranslation(0., 400., 500.)); - // gGeoMan->GetVolume(geoVersion)->AddNode(trdbox, 2, new - // TGeoTranslation(0., 500., 600.)); - // gGeoMan->GetVolume(geoVersion)->AddNode(trdbox, 3, new - // TGeoTranslation(0., 600., 700.)); + // gGeoMan->GetVolume(geoVersion)->AddNode(trdbox, 1, new TGeoTranslation(0., 400., 500.)); + // gGeoMan->GetVolume(geoVersion)->AddNode(trdbox, 2, new TGeoTranslation(0., 500., 600.)); + // gGeoMan->GetVolume(geoVersion)->AddNode(trdbox, 3, new TGeoTranslation(0., 600., 700.)); // return trdbox; } + void create_box_supports() { const TString trd_01 = "support_trd1"; @@ -4239,19 +4003,13 @@ void create_box_supports() const Double_t PlatformHeight = 234; // platform is 2.34m above the floor const Double_t PlatformOffset = 1; // distance to platform - // Double_t AperX[3] = { 450., 550., 600.}; // 100 cm modules // inner - // aperture in X of support structure for stations 1,2,3 - // Double_t AperY[3] = { 350., 450., 500.}; // 100 cm modules // inner - // aperture in Y of support structure for stations 1,2,3 + // Double_t AperX[3] = { 450., 550., 600.}; // 100 cm modules // inner aperture in X of support structure for stations 1,2,3 + // Double_t AperY[3] = { 350., 450., 500.}; // 100 cm modules // inner aperture in Y of support structure for stations 1,2,3 const Double_t AperX[3] = {4.5 * DetectorSizeX[1], 5.5 * DetectorSizeX[1], - 6 * DetectorSizeX[1]}; // inner aperture in X of - // support structure for - // stations 1,2,3 + 6 * DetectorSizeX[1]}; // inner aperture in X of support structure for stations 1,2,3 const Double_t AperY[3] = {3.5 * DetectorSizeY[1], 4.5 * DetectorSizeY[1], - 5 * DetectorSizeY[1]}; // inner aperture in Y of - // support structure for - // stations 1,2,3 + 5 * DetectorSizeY[1]}; // inner aperture in Y of support structure for stations 1,2,3 // platform const Double_t AperYbot[3] = {BeamHeight - (PlatformHeight + PlatformOffset + I_height), 4.5 * DetectorSizeY[1], 5 * DetectorSizeY[1]}; // inner aperture for station1 @@ -4310,6 +4068,7 @@ void create_box_supports() rotxy02->RotateX(90.); // rotate 90 deg around x-axis rotxy02->RotateZ(ang1); // rotate ang1 around rotated y-axis + //------------------- // vertical pillars (Y) //------------------- @@ -4317,13 +4076,11 @@ void create_box_supports() // station 1 if (ShowLayer[0]) // if geometry contains layer 1 (1st layer of station 1) { - // TGeoBBox* trd_I_vert1_keep = new TGeoBBox("", I_thick /2., I_height - // /2. - I_thick, (BeamHeight + (AperY[0]+I_height) ) /2.); + // TGeoBBox* trd_I_vert1_keep = new TGeoBBox("", I_thick /2., I_height /2. - I_thick, (BeamHeight + (AperY[0]+I_height) ) /2.); TGeoBBox* trd_I_vert1_keep = new TGeoBBox("trd_I_vert1_keep", I_thick / 2., I_height / 2. - I_thick, ((AperYbot[0] + I_height) + (AperY[0] + I_height)) / 2.); TGeoVolume* trd_I_vert1 = new TGeoVolume("trd_I_y11", trd_I_vert1_keep, aluminiumVolMed); - // TGeoBBox* trd_I_vert2_keep = new TGeoBBox("", I_width /2., - // I_thick /2., (BeamHeight + (AperY[0]+I_height) ) /2.); + // TGeoBBox* trd_I_vert2_keep = new TGeoBBox("", I_width /2., I_thick /2., (BeamHeight + (AperY[0]+I_height) ) /2.); TGeoBBox* trd_I_vert2_keep = new TGeoBBox("trd_I_vert2_keep", I_width / 2., I_thick / 2., ((AperYbot[0] + I_height) + (AperY[0] + I_height)) / 2.); TGeoVolume* trd_I_vert2 = new TGeoVolume("trd_I_y12", trd_I_vert2_keep, aluminiumVolMed); @@ -4335,14 +4092,12 @@ void create_box_supports() TGeoTranslation* ty02 = new TGeoTranslation("ty02", 0., (I_height - I_thick) / 2., 0.); TGeoTranslation* ty03 = new TGeoTranslation("ty03", 0., -(I_height - I_thick) / 2., 0.); - // TGeoBBox* trd_I_vert_vol1_keep = new TGeoBBox("", I_width /2., - // I_height /2., (BeamHeight + (AperY[0]+I_height) ) /2.); + // TGeoBBox* trd_I_vert_vol1_keep = new TGeoBBox("", I_width /2., I_height /2., (BeamHeight + (AperY[0]+I_height) ) /2.); TGeoBBox* trd_I_vert_vol1_keep = new TGeoBBox("trd_I_vert_vol1_keep", I_width / 2., I_height / 2., ((AperYbot[0] + I_height) + (AperY[0] + I_height)) / 2.); TGeoVolume* trd_I_vert_vol1 = new TGeoVolume("trd_I_y10", trd_I_vert_vol1_keep, keepVolMed); - // set green color for keeping volume of I profile, seen with - // gGeoManager->SetVisLevel(2) + // set green color for keeping volume of I profile, seen with gGeoManager->SetVisLevel(2) trd_I_vert_vol1->SetLineColor(kGreen); // build I-bar trd_I_vert_vol1 @@ -4355,12 +4110,8 @@ void create_box_supports() new TGeoBBox("trd_I_vert3_keep", (I_width - I_thick) / 2. / 2., I_height / 2. - I_thick, I_thick / 2.); TGeoVolume* trd_I_vert3 = new TGeoVolume("trd_I_y13", trd_I_vert3_keep, aluminiumVolMed); trd_I_vert3->SetLineColor(kGreen); - // TGeoTranslation *ty04 = new TGeoTranslation("ty04", (I_thick/2. + - // (I_width-I_thick)/2./2.), 0., -( (AperYbot[0]+I_height) + - // (AperY[0]+I_height) - I_width) /2.); // top - // TGeoTranslation *ty05 = new TGeoTranslation("ty05", (I_thick/2. + - // (I_width-I_thick)/2./2.), 0., ( (AperYbot[0]+I_height) + - // (AperY[0]+I_height) - I_width) /2.); // bottom + // TGeoTranslation *ty04 = new TGeoTranslation("ty04", (I_thick/2. + (I_width-I_thick)/2./2.), 0., -( (AperYbot[0]+I_height) + (AperY[0]+I_height) - I_width) /2.); // top + // TGeoTranslation *ty05 = new TGeoTranslation("ty05", (I_thick/2. + (I_width-I_thick)/2./2.), 0., ( (AperYbot[0]+I_height) + (AperY[0]+I_height) - I_width) /2.); // bottom TGeoTranslation* ty04 = new TGeoTranslation("ty04", (I_thick / 2. + (I_width - I_thick) / 2. / 2.), 0., -(zBarPosYbot[0] + zBarPosYtop[0]) / 2.); // top TGeoTranslation* ty05 = new TGeoTranslation("ty05", (I_thick / 2. + (I_width - I_thick) / 2. / 2.), 0., @@ -4405,8 +4156,7 @@ void create_box_supports() new TGeoBBox("trd_I_vert_vol1_keep", I_width / 2., I_height / 2., (BeamHeight + (AperY[1] + I_height)) / 2.); TGeoVolume* trd_I_vert_vol1 = new TGeoVolume("trd_I_y20", trd_I_vert_vol1_keep, keepVolMed); - // set green color for keeping volume of I profile, seen with - // gGeoManager->SetVisLevel(2) + // set green color for keeping volume of I profile, seen with gGeoManager->SetVisLevel(2) trd_I_vert_vol1->SetLineColor(kGreen); // build I-bar trd_I_vert_vol1 @@ -4463,8 +4213,7 @@ void create_box_supports() new TGeoBBox("trd_I_vert_vol1_keep", I_width / 2., I_height / 2., (BeamHeight + (AperY[2] + I_height)) / 2.); TGeoVolume* trd_I_vert_vol1 = new TGeoVolume("trd_I_y30", trd_I_vert_vol1_keep, keepVolMed); - // set green color for keeping volume of I profile, seen with - // gGeoManager->SetVisLevel(2) + // set green color for keeping volume of I profile, seen with gGeoManager->SetVisLevel(2) trd_I_vert_vol1->SetLineColor(kGreen); // build I-bar trd_I_vert_vol1 @@ -4500,6 +4249,7 @@ void create_box_supports() trd_3->AddNode(trd_I_vert_vol1, 34, trd_I_vert_combi04); } + //------------------- // horizontal supports (X) //------------------- @@ -4522,8 +4272,7 @@ void create_box_supports() TGeoBBox* trd_I_hori_vol1_keep = new TGeoBBox("trd_I_hori_vol1_keep", I_width / 2., I_height / 2., AperX[0]); TGeoVolume* trd_I_hori_vol1 = new TGeoVolume("trd_I_x10", trd_I_hori_vol1_keep, keepVolMed); - // set red color for keeping volume of I profile, seen with - // gGeoManager->SetVisLevel(2) + // set red color for keeping volume of I profile, seen with gGeoManager->SetVisLevel(2) trd_I_hori_vol1->SetLineColor(kRed); // build I-bar trd_I_hori_vol1 @@ -4559,8 +4308,7 @@ void create_box_supports() TGeoBBox* trd_I_hori_vol1_keep = new TGeoBBox("trd_I_hori_vol1_keep", I_width / 2., I_height / 2., AperX[1]); TGeoVolume* trd_I_hori_vol1 = new TGeoVolume("trd_I_x20", trd_I_hori_vol1_keep, keepVolMed); - // set red color for keeping volume of I profile, seen with - // gGeoManager->SetVisLevel(2) + // set red color for keeping volume of I profile, seen with gGeoManager->SetVisLevel(2) trd_I_hori_vol1->SetLineColor(kRed); // build I-bar trd_I_hori_vol1 @@ -4596,8 +4344,7 @@ void create_box_supports() TGeoBBox* trd_I_hori_vol1_keep = new TGeoBBox("trd_I_hori_vol1_keep", I_width / 2., I_height / 2., AperX[2]); TGeoVolume* trd_I_hori_vol1 = new TGeoVolume("trd_I_x30", trd_I_hori_vol1_keep, keepVolMed); - // set red color for keeping volume of I profile, seen with - // gGeoManager->SetVisLevel(2) + // set red color for keeping volume of I profile, seen with gGeoManager->SetVisLevel(2) trd_I_hori_vol1->SetLineColor(kRed); // build I-bar trd_I_hori_vol1 @@ -4615,6 +4362,7 @@ void create_box_supports() trd_3->AddNode(trd_I_hori_vol1, 34, trd_I_hori_combi04); } + //------------------- // horizontal supports (Z) //------------------- @@ -4640,8 +4388,7 @@ void create_box_supports() new TGeoBBox("trd_I_slope_vol1_keep", I_width / 2., I_height / 2., (PilPosZ[1] - PilPosZ[0] - I_width) / 2.); TGeoVolume* trd_I_slope_vol1 = new TGeoVolume("trd_I_z10", trd_I_slope_vol1_keep, keepVolMed); - // set yellow color for keeping volume of I profile, seen with - // gGeoManager->SetVisLevel(2) + // set yellow color for keeping volume of I profile, seen with gGeoManager->SetVisLevel(2) trd_I_slope_vol1->SetLineColor(kYellow); // build I-bar trd_I_slope_vol1 @@ -4686,8 +4433,7 @@ void create_box_supports() new TGeoBBox("trd_I_slope_vol1_keep", I_width / 2., I_height / 2., (PilPosZ[3] - PilPosZ[2] - I_width) / 2.); TGeoVolume* trd_I_slope_vol1 = new TGeoVolume("trd_I_z20", trd_I_slope_vol1_keep, keepVolMed); - // set yellow color for keeping volume of I profile, seen with - // gGeoManager->SetVisLevel(2) + // set yellow color for keeping volume of I profile, seen with gGeoManager->SetVisLevel(2) trd_I_slope_vol1->SetLineColor(kYellow); // build I-bar trd_I_slope_vol1 @@ -4732,8 +4478,7 @@ void create_box_supports() new TGeoBBox("trd_I_slope_vol1_keep", I_width / 2., I_height / 2., (PilPosZ[5] - PilPosZ[4] - I_width) / 2.); TGeoVolume* trd_I_slope_vol1 = new TGeoVolume("trd_I_z30", trd_I_slope_vol1_keep, keepVolMed); - // set yellow color for keeping volume of I profile, seen with - // gGeoManager->SetVisLevel(2) + // set yellow color for keeping volume of I profile, seen with gGeoManager->SetVisLevel(2) trd_I_slope_vol1->SetLineColor(kYellow); // build I-bar trd_I_slope_vol1