LCOV - code coverage report
Current view: top level - MUON/MUONsim - AliMUONSt2GeometryBuilderV2.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 392 392 100.0 %
Date: 2016-06-14 17:26:59 Functions: 12 12 100.0 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       3             :  *                                                                        *
       4             :  * Author: The ALICE Off-line Project.                                    *
       5             :  * Contributors are mentioned in the code where appropriate.              *
       6             :  *                                                                        *
       7             :  * Permission to use, copy, modify and distribute this software and its   *
       8             :  * documentation strictly for non-commercial purposes is hereby granted   *
       9             :  * without fee, provided that the above copyright notice appears in all   *
      10             :  * copies and that both the copyright notice and this permission notice   *
      11             :  * appear in the supporting documentation. The authors make no claims     *
      12             :  * about the suitability of this software for any purpose. It is          *
      13             :  * provided "as is" without express or implied warranty.                  *
      14             :  **************************************************************************/
      15             : 
      16             : // $Id$
      17             : 
      18             : //-----------------------------------------------------------------------------
      19             : // Class AliMUONSt2GeometryBuilderV2
      20             : // ---------------------------------
      21             : // MUON Station2 coarse geometry construction class.
      22             : // Author: SANJOY PAL ,Prof. SUKALYAN CHATTOPADHAYAY  [SINP, KOLKATA]
      23             : //         &  Dr.SHAKEEL AHMAD (AMU), INDIA
      24             : //-----------------------------------------------------------------------------
      25             : 
      26             : 
      27             : #include <TVirtualMC.h>
      28             : #include <TGeoMatrix.h>
      29             : #include <Riostream.h>
      30             : #include <TArrayI.h>
      31             : 
      32             : #include "AliRun.h"
      33             : #include "AliLog.h"
      34             : 
      35             : #include "AliMUONSt2GeometryBuilderV2.h"
      36             : #include "AliMUON.h"
      37             : #include "AliMUONConstants.h"
      38             : #include "AliMUONGeometryModule.h"
      39             : #include "AliMUONGeometryEnvelopeStore.h"
      40             : #include "AliMUONConstants.h"
      41             : 
      42             : #define PI 3.14159
      43             : 
      44             : /// \cond CLASSIMP
      45          16 : ClassImp(AliMUONSt2GeometryBuilderV2)
      46             : /// \endcond
      47             : 
      48             : //______________________________________________________________________________
      49             : AliMUONSt2GeometryBuilderV2::AliMUONSt2GeometryBuilderV2(AliMUON* muon)
      50           1 :  : AliMUONVGeometryBuilder(2, 2),
      51           1 :    fMUON(muon)
      52           5 : {
      53             : /// Standard constructor
      54             : 
      55           2 : }
      56             : 
      57             : //______________________________________________________________________________
      58             : AliMUONSt2GeometryBuilderV2::AliMUONSt2GeometryBuilderV2()
      59          12 :  : AliMUONVGeometryBuilder(),
      60          12 :    fMUON(0)
      61          60 : {
      62             : /// Default constructor
      63          24 : }
      64             : 
      65             : //______________________________________________________________________________
      66             : AliMUONSt2GeometryBuilderV2::~AliMUONSt2GeometryBuilderV2() 
      67          52 : {
      68             : /// Destructor
      69          52 : }
      70             : 
      71             : //
      72             : // public methods
      73             : //
      74             : 
      75             : //______________________________________________________________________________
      76             : void AliMUONSt2GeometryBuilderV2::CreateGeometry()
      77             : {
      78             : /// Geometry construction
      79             : 
      80             : //
      81             : //********************************************************************
      82             : //                            Station 2                             **
      83             : //********************************************************************
      84             :      // indices 1 and 2 for first and second chambers in the station
      85             :      // iChamber (first chamber) kept for other quanties than Z,
      86             :      // assumed to be the same in both chambers
      87             : 
      88             :      // Get tracking medias Ids
      89           2 :      Int_t *idtmed = fMUON->GetIdtmed()->GetArray()-1099;
      90           1 :      Int_t idAir  = idtmed[1100]; // medium 1
      91           1 :      Int_t idGas  = idtmed[1108]; // medium Ar-CO2 gas (80%+20%)
      92           1 :      Int_t idPCB  = idtmed[1122]; // medium FR4
      93           1 :      Int_t idCU   = idtmed[1110]; // medium copper
      94           1 :      Int_t idRoha = idtmed[1113]; // medium roha cell
      95           1 :      Int_t idPGF30= idtmed[1123]; // medium for Frame Eq.to Bakelite
      96             :      //Int_t idScru = idtmed[1128]; // screw material - Stainless Steel(18%Cr,9%Ni,Fe)
      97             : 
      98             : 
      99             : 
     100             : /*########################################################################################
     101             :     Create volume for one Quadrant
     102             : ##########################################################################################*/
     103           1 :      Float_t tpar1[5];
     104           1 :      tpar1[0] = 20.55;
     105           1 :      tpar1[1] = 123.5;
     106           1 :      tpar1[2] = 6.8/2;
     107           1 :      tpar1[3] = -12.0;
     108           1 :      tpar1[4] = 102.0;
     109             : 
     110             : 
     111           1 :      TVirtualMC::GetMC()->Gsvolu("SQM3","TUBS", idAir, tpar1, 5);
     112           1 :      TVirtualMC::GetMC()->Gsvolu("SQM4","TUBS", idAir, tpar1, 5);
     113             : 
     114             : 
     115             : //==================================================================================
     116             : //                                Plane      
     117             : //==================================================================================
     118             : 
     119             : //Thickness of variour parts
     120             :   Float_t zCu   = 0.005;      // eff. cu in cathode pcb
     121             :   Float_t zCbb  = 0.04;       //cathode pcb
     122             :   Float_t zRoha = 2.5;        // Rhocell
     123             :   Float_t zMeb = 0.04;      //Mech. exit board //0.08
     124             :   Float_t zEeb = 0.04;     //Effective electronic readout board //0.02
     125             : 
     126             :   //starting Z-positions of various parts--- in Plane-1
     127             :   Float_t zposCu    = 0.25;   // 2.5 mm => gap between anode & chatode plane
     128             :   Float_t zposCbb   = zposCu + zCu;
     129             :   Float_t zposRoha  = zposCbb + zCbb;
     130             :   Float_t zposMeb   = zposRoha + zRoha;
     131             :   Float_t zposEeb   = zposMeb + zMeb;
     132             : 
     133           1 :   Float_t zposCuBar   = zposCu +  zCu/2.; //for segment 0 & 6
     134           1 :   Float_t zposCbbBar  = zposCbb + zCbb/2.;  
     135           1 :   Float_t zposRohaBar = zposRoha + zRoha/2.;
     136           1 :   Float_t zposMebBar  = zposMeb + zMeb/2.;
     137           1 :   Float_t zposEebBar  = zposEeb + zEeb/2.;
     138             : 
     139             : 
     140             :  //Cathode PCB + Copper sheet + Rohacell + mech exit board + eff. electronic exit board
     141             : 
     142             :  //Segment-0 ~~~Horizantal box  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     143           1 :   Float_t bparH[3];
     144           1 :   bparH[0] = 95.5/2.; // extension beyond 0 deg in x direction // 94.5
     145           1 :   bparH[1] = 1.2/2.;  // extension beyond 0 deg in y direction (3.7[total extn] - 2.5[frame dim])
     146           1 :   bparH[2] = zCu/2.;     //Thickness of Copper sheet
     147           1 :   TVirtualMC::GetMC()->Gsvolu("SCU0L", "BOX", idCU, bparH, 3);
     148             :   
     149           1 :   bparH[2] = zCbb/2.; // thickness of cathode sheet in z direction
     150           1 :   TVirtualMC::GetMC()->Gsvolu("SCB0L", "BOX", idPCB, bparH, 3);
     151             :   
     152           1 :   bparH[2] = zRoha/2.;     //Thickness of Roha cell
     153           1 :   TVirtualMC::GetMC()->Gsvolu("SRH0L", "BOX", idRoha, bparH, 3);
     154             : 
     155           1 :   bparH[2] = zMeb/2;       //Thickness of mechanical exit board
     156           1 :   TVirtualMC::GetMC()->Gsvolu("SMB0L", "BOX", idPCB, bparH, 3);
     157             :   
     158           1 :   bparH[2] = zEeb/2;          //Thickness of effective electronic  exit board
     159           1 :   TVirtualMC::GetMC()->Gsvolu("SEB0L", "BOX", idCU, bparH, 3);
     160             :   
     161             :   //Segment-1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     162           1 :   Float_t pgpar[10]; // polygon
     163           1 :   pgpar[0] = 0.;  // initial angle
     164           1 :   pgpar[1] = 90.; // increment in angle starting from initial angle 
     165           1 :   pgpar[2] = 5;   // number of side
     166           1 :   pgpar[3] = 2.; // number of plane
     167           1 :   pgpar[4] = -zCu/2.; // z-position of the first plane
     168           1 :   pgpar[5] = 23.1; // innner radius first plane
     169           1 :   pgpar[6] = 117.6;  // outer radious first plane
     170           1 :   pgpar[7] = zCu/2.; // z-position of the second plane
     171           1 :   pgpar[8] = pgpar[5];  // innner radius of second plane
     172           1 :   pgpar[9] = pgpar[6];  // outer radious of second plane
     173           1 :   TVirtualMC::GetMC()->Gsvolu("SCU1L", "PGON", idCU, pgpar, 10);
     174             : 
     175           1 :   pgpar[4] = -zCbb/2.; // z-position of the first plane
     176           1 :   pgpar[7] = zCbb/2.;  // Thickness of copper-sheet
     177           1 :   TVirtualMC::GetMC()->Gsvolu("SCB1L", "PGON", idPCB, pgpar, 10);  
     178             :   
     179           1 :   pgpar[4] = -zRoha/2.;  // Thickness of Roha cell
     180           1 :   pgpar[7] = zRoha/2.;  // Thickness of Roha cell
     181           1 :   TVirtualMC::GetMC()->Gsvolu("SRH1L", "PGON", idRoha, pgpar, 10);
     182             :        
     183           1 :   pgpar[4] = -zMeb/2.;  // Thickness of mechanical exit board
     184           1 :   pgpar[7] = zMeb/2.;  // Thickness of mechanical exit board
     185           1 :   TVirtualMC::GetMC()->Gsvolu("SMB1L", "PGON", idPCB, pgpar, 10);
     186             :   
     187           1 :   pgpar[4] = -zEeb/2.;  // Thickness of electronic readout board
     188           1 :   pgpar[7] = zEeb/2.;  // Thickness of electronic readout board
     189           1 :   TVirtualMC::GetMC()->Gsvolu("SEB1L", "PGON", idCU, pgpar, 10);
     190             :        
     191             : 
     192             : //Segment-2 - vertical box (simalar to horizontal bar as in Segment 0)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     193             :        
     194           1 :   Float_t bparV[3];
     195             :   
     196           1 :   bparV[0] = 1.0/2.;
     197           1 :   bparV[1] = 95.5/2.; // 94.5
     198           1 :   bparV[2] = zCu/2.;
     199           1 :   TVirtualMC::GetMC()->Gsvolu("SCU2L", "BOX", idCU, bparV, 3);
     200             :   
     201           1 :   bparV[2] = zCbb/2.;
     202           1 :   TVirtualMC::GetMC()->Gsvolu("SCB2L", "BOX", idPCB, bparV, 3);
     203             :   
     204             :   
     205           1 :   bparV[2] = zRoha/2.;
     206           1 :   TVirtualMC::GetMC()->Gsvolu("SRH2L", "BOX", idRoha, bparV, 3);
     207             :   
     208           1 :   bparV[2] = zMeb/2;
     209           1 :   TVirtualMC::GetMC()->Gsvolu("SMB2L", "BOX", idPCB, bparV, 3);
     210             :   
     211           1 :   bparV[2] = zEeb/2;
     212           1 :   TVirtualMC::GetMC()->Gsvolu("SEB2L", "BOX", idCU, bparV, 3);
     213             :        
     214             :   //....(Setting posion of Segment 0,1,2)..................................................................
     215             :   
     216           1 :   Float_t xposHorBox =  bparH[0] + 23.1; // 23.1 = 20.6(inner radius of qrd) + 2.5 (width of frame)
     217           1 :   Float_t yposHorBox = -bparH[1];  
     218             :   
     219           1 :   Float_t xposVerBox = -bparV[0];
     220           1 :   Float_t yposVerBox =  bparV[1] + 23.1;
     221             :   
     222             :   
     223             :   //Positioning the PCB
     224             :   
     225             :   
     226             :   // chamber 3
     227           1 :   TVirtualMC::GetMC()->Gspos("SCB0L",1, "SQM3",xposHorBox,yposHorBox,zposCbbBar,0, "ONLY");
     228           1 :   TVirtualMC::GetMC()->Gspos("SCB1L",1, "SQM3", 0.0,0.0,zposCbbBar,0, "ONLY");
     229           1 :   TVirtualMC::GetMC()->Gspos("SCB2L",1, "SQM3",xposVerBox,yposVerBox,zposCbbBar,0, "ONLY");
     230             :   
     231           1 :   TVirtualMC::GetMC()->Gspos("SCB0L",2, "SQM3",xposHorBox,yposHorBox,-zposCbbBar,0, "ONLY");
     232           1 :   TVirtualMC::GetMC()->Gspos("SCB1L",2, "SQM3", 0.0,0.0,-zposCbbBar,0, "ONLY");
     233           1 :   TVirtualMC::GetMC()->Gspos("SCB2L",2, "SQM3",xposVerBox,yposVerBox,-zposCbbBar,0, "ONLY");
     234             : 
     235             :   // chamber 4
     236           1 :   TVirtualMC::GetMC()->Gspos("SCB0L",3, "SQM4",xposHorBox,yposHorBox,zposCbbBar,0, "ONLY");
     237           1 :   TVirtualMC::GetMC()->Gspos("SCB1L",3, "SQM4", 0.0,0.0,zposCbbBar,0, "ONLY");
     238           1 :   TVirtualMC::GetMC()->Gspos("SCB2L",3, "SQM4",xposVerBox,yposVerBox,zposCbbBar,0, "ONLY");
     239             :   
     240           1 :   TVirtualMC::GetMC()->Gspos("SCB0L",4, "SQM4",xposHorBox,yposHorBox,-zposCbbBar,0, "ONLY");
     241           1 :   TVirtualMC::GetMC()->Gspos("SCB1L",4, "SQM4", 0.0,0.0,-zposCbbBar,0, "ONLY");
     242           1 :   TVirtualMC::GetMC()->Gspos("SCB2L",4, "SQM4",xposVerBox,yposVerBox,-zposCbbBar,0, "ONLY");
     243             :   
     244             : 
     245             :   //Positioning Copper sheet
     246             :   
     247             :   // chamber 3
     248             : 
     249           1 :   TVirtualMC::GetMC()->Gspos("SCU0L",1, "SQM3",xposHorBox,yposHorBox,zposCuBar,0, "ONLY");
     250           1 :   TVirtualMC::GetMC()->Gspos("SCU1L",1, "SQM3", 0.0,0.0,zposCuBar,0, "ONLY");
     251           1 :   TVirtualMC::GetMC()->Gspos("SCU2L",1, "SQM3",xposVerBox,yposVerBox,zposCuBar,0, "ONLY");
     252             :   
     253           1 :   TVirtualMC::GetMC()->Gspos("SCU0L",2, "SQM3",xposHorBox,yposHorBox,-zposCuBar,0, "ONLY");
     254           1 :   TVirtualMC::GetMC()->Gspos("SCU1L",2, "SQM3", 0.0,0.0,-zposCuBar,0, "ONLY");
     255           1 :   TVirtualMC::GetMC()->Gspos("SCU2L",2, "SQM3",xposVerBox,yposVerBox,-zposCuBar,0, "ONLY");
     256             : 
     257             :   // chamber 4
     258           1 :   TVirtualMC::GetMC()->Gspos("SCU0L",3, "SQM4",xposHorBox,yposHorBox,zposCuBar,0, "ONLY");
     259           1 :   TVirtualMC::GetMC()->Gspos("SCU1L",3, "SQM4", 0.0,0.0,zposCuBar,0, "ONLY");
     260           1 :   TVirtualMC::GetMC()->Gspos("SCU2L",3, "SQM4",xposVerBox,yposVerBox,zposCuBar,0, "ONLY");
     261             :   
     262           1 :   TVirtualMC::GetMC()->Gspos("SCU0L",4, "SQM4",xposHorBox,yposHorBox,-zposCuBar,0, "ONLY");
     263           1 :   TVirtualMC::GetMC()->Gspos("SCU1L",4, "SQM4", 0.0,0.0,-zposCuBar,0, "ONLY");
     264           1 :   TVirtualMC::GetMC()->Gspos("SCU2L",4, "SQM4",xposVerBox,yposVerBox,-zposCuBar,0, "ONLY");
     265             :      
     266             :   //Positioning Roha cell 
     267             :   
     268             :   // chamber 3
     269             :   
     270           1 :   TVirtualMC::GetMC()->Gspos("SRH0L",1, "SQM3",xposHorBox,yposHorBox,zposRohaBar,0, "ONLY");
     271           1 :   TVirtualMC::GetMC()->Gspos("SRH1L",1, "SQM3", 0.0,0.0,zposRohaBar,0, "ONLY");
     272           1 :   TVirtualMC::GetMC()->Gspos("SRH2L",1, "SQM3",xposVerBox,yposVerBox,zposRohaBar,0, "ONLY");
     273             :   
     274           1 :   TVirtualMC::GetMC()->Gspos("SRH0L",2, "SQM3",xposHorBox,yposHorBox,-zposRohaBar,0, "ONLY");
     275           1 :   TVirtualMC::GetMC()->Gspos("SRH1L",2, "SQM3", 0.0,0.0,-zposRohaBar,0, "ONLY");
     276           1 :   TVirtualMC::GetMC()->Gspos("SRH2L",2, "SQM3",xposVerBox,yposVerBox,-zposRohaBar,0, "ONLY");
     277             :   
     278             :   // chamber 4
     279             :   
     280           1 :   TVirtualMC::GetMC()->Gspos("SRH0L",3, "SQM4",xposHorBox,yposHorBox,zposRohaBar,0, "ONLY");
     281           1 :   TVirtualMC::GetMC()->Gspos("SRH1L",3, "SQM4", 0.0,0.0,zposRohaBar,0, "ONLY");
     282           1 :   TVirtualMC::GetMC()->Gspos("SRH2L",3, "SQM4",xposVerBox,yposVerBox,zposRohaBar,0, "ONLY");
     283             :   
     284           1 :   TVirtualMC::GetMC()->Gspos("SRH0L",4, "SQM4",xposHorBox,yposHorBox,-zposRohaBar,0, "ONLY");
     285           1 :   TVirtualMC::GetMC()->Gspos("SRH1L",4, "SQM4", 0.0,0.0,-zposRohaBar,0, "ONLY");
     286           1 :   TVirtualMC::GetMC()->Gspos("SRH2L",4, "SQM4",xposVerBox,yposVerBox,-zposRohaBar,0, "ONLY");
     287             : 
     288             :   //Positioning of Mech. exit board
     289             :   
     290             :   // chamber 3
     291             :   
     292           1 :   TVirtualMC::GetMC()->Gspos("SMB0L",1, "SQM3",xposHorBox,yposHorBox,zposMebBar,0, "ONLY");
     293           1 :   TVirtualMC::GetMC()->Gspos("SMB1L",1, "SQM3", 0.0,0.0,zposMebBar,0, "ONLY");
     294           1 :   TVirtualMC::GetMC()->Gspos("SMB2L",1, "SQM3",xposVerBox,yposVerBox,zposMebBar,0, "ONLY");
     295             :   
     296           1 :   TVirtualMC::GetMC()->Gspos("SMB0L",2, "SQM3",xposHorBox,yposHorBox,-zposMebBar,0, "ONLY");
     297           1 :   TVirtualMC::GetMC()->Gspos("SMB1L",2, "SQM3", 0.0,0.0,-zposMebBar,0, "ONLY");
     298           1 :   TVirtualMC::GetMC()->Gspos("SMB2L",2, "SQM3",xposVerBox,yposVerBox,-zposMebBar,0, "ONLY");
     299             :   // chamber 4
     300             :   
     301           1 :   TVirtualMC::GetMC()->Gspos("SMB0L",3, "SQM4",xposHorBox,yposHorBox,zposMebBar,0, "ONLY");
     302           1 :   TVirtualMC::GetMC()->Gspos("SMB1L",3, "SQM4", 0.0,0.0,zposMebBar,0, "ONLY");
     303           1 :   TVirtualMC::GetMC()->Gspos("SMB2L",3, "SQM4",xposVerBox,yposVerBox,zposMebBar,0, "ONLY");
     304             :   
     305           1 :   TVirtualMC::GetMC()->Gspos("SMB0L",4, "SQM4",xposHorBox,yposHorBox,-zposMebBar,0, "ONLY");
     306           1 :   TVirtualMC::GetMC()->Gspos("SMB1L",4, "SQM4", 0.0,0.0,-zposMebBar,0, "ONLY");
     307           1 :   TVirtualMC::GetMC()->Gspos("SMB2L",4, "SQM4",xposVerBox,yposVerBox,-zposMebBar,0, "ONLY");
     308             :   
     309             :   //Positioning of Electronic exit board
     310             :   
     311             :   
     312             :   // chamber 3
     313             : 
     314           1 :   TVirtualMC::GetMC()->Gspos("SEB0L",1, "SQM3",xposHorBox,yposHorBox,zposEebBar,0, "ONLY");
     315           1 :   TVirtualMC::GetMC()->Gspos("SEB1L",1, "SQM3", 0.0,0.0,zposEebBar,0, "ONLY");
     316           1 :   TVirtualMC::GetMC()->Gspos("SEB2L",1, "SQM3",xposVerBox,yposVerBox,zposEebBar,0, "ONLY");
     317             :   
     318           1 :   TVirtualMC::GetMC()->Gspos("SEB0L",2, "SQM3",xposHorBox,yposHorBox,-zposEebBar,0, "ONLY");
     319           1 :   TVirtualMC::GetMC()->Gspos("SEB1L",2, "SQM3", 0.0,0.0,-zposEebBar,0, "ONLY");
     320           1 :   TVirtualMC::GetMC()->Gspos("SEB2L",2, "SQM3",xposVerBox,yposVerBox,-zposEebBar,0, "ONLY");
     321             :   // chamber 4
     322             : 
     323           1 :   TVirtualMC::GetMC()->Gspos("SEB0L",3, "SQM4",xposHorBox,yposHorBox,zposEebBar,0, "ONLY");
     324           1 :   TVirtualMC::GetMC()->Gspos("SEB1L",3, "SQM4", 0.0,0.0,zposEebBar,0, "ONLY");
     325           1 :   TVirtualMC::GetMC()->Gspos("SEB2L",3, "SQM4",xposVerBox,yposVerBox,zposEebBar,0, "ONLY");
     326             :   
     327           1 :   TVirtualMC::GetMC()->Gspos("SEB0L",4, "SQM4",xposHorBox,yposHorBox,-zposEebBar,0, "ONLY");
     328           1 :   TVirtualMC::GetMC()->Gspos("SEB1L",4, "SQM4", 0.0,0.0,-zposEebBar,0, "ONLY");
     329           1 :   TVirtualMC::GetMC()->Gspos("SEB2L",4, "SQM4",xposVerBox,yposVerBox,-zposEebBar,0, "ONLY");
     330             :   
     331             :   
     332             :   //----------------------------------------------------------------------
     333             :   //                         Frames
     334             :   //----------------------------------------------------------------------
     335             :   //Frame-1
     336             : 
     337           1 :   Float_t frame1[3] ;                
     338           1 :   frame1[0] = 101.0/2.;             //100.6 = 94.5 + 2.5 + 3.6 
     339           1 :   frame1[1] = 2.5/2.;               
     340           1 :   frame1[2] = 5.0/2.;
     341             :   
     342           1 :   TVirtualMC::GetMC()->Gsvolu("SFRM1", "BOX", idPGF30, frame1, 3); //Frame - 1 // fill with pkk GF30
     343             :   
     344           1 :   Float_t arib1[3];
     345           1 :   arib1[0] = frame1[0];
     346           1 :   arib1[1] = 0.9/2.;
     347           1 :   arib1[2] =(frame1[2]-0.95)/2.0;
     348             :   
     349           1 :   TVirtualMC::GetMC()->Gsvolu("SFRA1", "BOX", idAir, arib1, 3); // fill with air
     350             :   
     351             :   Float_t xposarib1 = 0;
     352           1 :   Float_t yposarib1 = -frame1[1] + arib1[1];
     353           1 :   Float_t zposarib1 = frame1[2] - arib1[2];
     354             :   
     355           1 :   TVirtualMC::GetMC()->Gspos("SFRA1",1, "SFRM1", xposarib1, yposarib1, zposarib1,0, "ONLY");  //replace pkk GF30 with air(b)
     356           1 :   TVirtualMC::GetMC()->Gspos("SFRA1",2, "SFRM1", xposarib1, yposarib1, -zposarib1,0, "ONLY"); //replace pkk GF30 with air(nb)
     357             :   
     358           1 :   Float_t rrib1[3];
     359           1 :   rrib1[0] = frame1[0];
     360           1 :   rrib1[1] = 0.6/2.;
     361           1 :   rrib1[2] =(frame1[2]-0.95)/2.0;
     362             :   
     363           1 :   TVirtualMC::GetMC()->Gsvolu("SFRR1", "BOX", idRoha, rrib1, 3); // fill with rohacell
     364             :   
     365             :   Float_t xposrrib1 = 0.0;
     366           1 :   Float_t yposrrib1 = frame1[1] - rrib1[1];
     367           1 :   Float_t zposrrib1 = frame1[2] - rrib1[2];
     368             :   
     369           1 :   TVirtualMC::GetMC()->Gspos("SFRR1",1, "SFRM1", xposrrib1, yposrrib1, zposrrib1,0, "ONLY");//replace pkk GF30 with rohacell
     370           1 :   TVirtualMC::GetMC()->Gspos("SFRR1",2, "SFRM1", xposrrib1, yposrrib1, -zposrrib1,0, "ONLY");//replace pkk GF30 with rohacell
     371             :   
     372             :   
     373           1 :   Float_t xposFr1 = frame1[0] + 20.6;
     374           1 :   Float_t yposFr1 = -3.7 + frame1[1] ;
     375             :   Float_t zposFr1 = 0.0;
     376             :   
     377           1 :   TVirtualMC::GetMC()->Gspos("SFRM1",1, "SQM3", xposFr1, yposFr1, zposFr1,0, "ONLY");// frame -1
     378           1 :   TVirtualMC::GetMC()->Gspos("SFRM1",2, "SQM4", xposFr1, yposFr1, zposFr1,0, "ONLY");// frame -1
     379             :   
     380             :   
     381             :   //......................................................................................
     382             :   //Frame-2
     383             : 
     384           1 :   Float_t frame2[3]; 
     385           1 :   frame2[0] = 4.0/2.;
     386           1 :   frame2[1] = 1.2/2.;
     387           1 :   frame2[2] = 5.0/2;
     388             :   
     389           1 :   TVirtualMC::GetMC()->Gsvolu("SFRM2", "BOX", idPGF30, frame2, 3); //Frame - 2
     390             :   
     391           1 :   Float_t rrib2[3];
     392           1 :   rrib2[0] = frame2[0]-1.0/2.0;
     393           1 :   rrib2[1] = frame2[1];
     394           1 :   rrib2[2] =(frame2[2]-0.95)/2.0;
     395             : 
     396           1 :   TVirtualMC::GetMC()->Gsvolu("SFRR2", "BOX", idRoha, rrib2, 3);
     397             :       
     398             :   Float_t xposrrib2 = -1.0/2.0;
     399             :   Float_t yposrrib2 = 0.0;
     400           1 :   Float_t zposrrib2 = frame2[2] - rrib2[2];
     401             :   
     402           1 :   TVirtualMC::GetMC()->Gspos("SFRR2",1, "SFRM2", xposrrib2, yposrrib2, zposrrib2,0, "ONLY");//replace pkk GF30 with rohacell
     403           1 :   TVirtualMC::GetMC()->Gspos("SFRR2",2, "SFRM2", xposrrib2, yposrrib2, -zposrrib2,0, "ONLY");//replace pkk GF30 with roha
     404             :   
     405             : 
     406             :   
     407           1 :   Float_t xposFr2 = frame2[0] + 117.6;
     408           1 :   Float_t yposFr2 = -frame2[1];
     409             :   Float_t zposFr2 = 0.0;
     410             :   
     411           1 :   TVirtualMC::GetMC()->Gspos("SFRM2",1, "SQM3", xposFr2, yposFr2, zposFr2,0, "MANY");//global positing of frame in SQM3
     412           1 :   TVirtualMC::GetMC()->Gspos("SFRM2",2, "SQM4", xposFr2, yposFr2, zposFr2,0, "MANY");//global positing of frame in SQM4
     413             :   
     414             :   
     415             :   //......................................................................................
     416             :   
     417             :   //Frame-3
     418             :   
     419           1 :   Float_t pgparFr3[10];
     420           1 :   pgparFr3[0] = 0.;
     421           1 :   pgparFr3[1] = 90.;
     422           1 :   pgparFr3[2] = 5;
     423           1 :   pgparFr3[3] = 2.;
     424           1 :   pgparFr3[4] = 0.;
     425           1 :   pgparFr3[5] = 117.6;
     426           1 :   pgparFr3[6] = 121.6;
     427           1 :   pgparFr3[7] = pgparFr3[4] + 5.0;
     428           1 :   pgparFr3[8] = pgparFr3[5];
     429           1 :   pgparFr3[9] = pgparFr3[6];
     430             :   
     431           1 :   TVirtualMC::GetMC()->Gsvolu("SFRM3", "PGON", idPGF30, pgparFr3, 10);
     432             :   
     433           1 :   Float_t pgparRrib3[10];
     434           1 :   pgparRrib3[0] = 0.;
     435           1 :   pgparRrib3[1] = 90.;
     436           1 :   pgparRrib3[2] = 5;
     437           1 :   pgparRrib3[3] = 2.;
     438           1 :   pgparRrib3[4] = 0.;
     439           1 :   pgparRrib3[5] = 117.6;
     440           1 :   pgparRrib3[6] = 120.6;
     441           1 :   pgparRrib3[7] = pgparRrib3[4] +1.55 ;
     442           1 :   pgparRrib3[8] = pgparRrib3[5];
     443           1 :   pgparRrib3[9] = pgparRrib3[6];
     444             :   
     445           1 :   TVirtualMC::GetMC()->Gsvolu("SFRR3", "PGON", idRoha, pgparRrib3, 10);
     446             :   
     447             :   Float_t xposrrib3 = 0.0;
     448             :   Float_t yposrrib3 = 0.0;
     449             :   Float_t zposrrib3 = 0.0;
     450             : 
     451           1 :   TVirtualMC::GetMC()->Gspos("SFRR3",1, "SFRM3", xposrrib3, yposrrib3, zposrrib3,0, "ONLY");
     452             :   
     453             :   zposrrib3 = 3.45;
     454             :   
     455           1 :   TVirtualMC::GetMC()->Gspos("SFRR3",2, "SFRM3", xposrrib3, yposrrib3, zposrrib3,0, "ONLY");
     456             :   
     457             :       
     458             :   
     459             :   Float_t xposFr3 = 0.0;
     460             :   Float_t yposFr3 = 0.0;
     461           1 :   Float_t zposFr3 = -frame1[2];
     462             :       
     463           1 :   TVirtualMC::GetMC()->Gspos("SFRM3",1, "SQM3", xposFr3, yposFr3, zposFr3,0, "ONLY");// frame -1
     464           1 :   TVirtualMC::GetMC()->Gspos("SFRM3",2, "SQM4", xposFr3, yposFr3, zposFr3,0, "ONLY");// frame -1
     465             :   
     466             :   
     467             :   //......................................................................................
     468             :   //Frame-4
     469             :   
     470           1 :   Float_t frame4[3]; 
     471           1 :   frame4[0] = 1.0/2.;
     472           1 :   frame4[1] = 4.0/2.;
     473           1 :   frame4[2] = frame1[2];
     474             :   
     475           1 :   TVirtualMC::GetMC()->Gsvolu("SFRM4", "BOX", idPGF30, frame4, 3); 
     476             :   
     477           1 :   Float_t rrib4[3];
     478           1 :   rrib4[0] = frame4[0];
     479           1 :   rrib4[1] = frame4[1]-1.0/2;
     480           1 :   rrib4[2] =(frame4[2]-0.95)/2.0;
     481             : 
     482           1 :   TVirtualMC::GetMC()->Gsvolu("SFRR4", "BOX", idRoha, rrib4, 3);
     483             :   
     484             :   Float_t xposrrib4 = 0.0;
     485             :   Float_t yposrrib4 = -1.0/2;
     486           1 :   Float_t zposrrib4 = frame4[2] - rrib4[2];
     487             :   
     488           1 :   TVirtualMC::GetMC()->Gspos("SFRR4",1, "SFRM4", xposrrib4, yposrrib4, zposrrib4,0, "ONLY");
     489           1 :   TVirtualMC::GetMC()->Gspos("SFRR4",2, "SFRM4", xposrrib4, yposrrib4, -zposrrib4,0, "ONLY");
     490             :   
     491             : 
     492             :   
     493           1 :   Float_t xposFr4 = -frame4[0];
     494           1 :   Float_t yposFr4 = -frame4[1] + 117.6;
     495             :   Float_t zposFr4 = 0.0;
     496             :   
     497           1 :   TVirtualMC::GetMC()->Gspos("SFRM4",1, "SQM3", xposFr4, yposFr4, zposFr4,0, "MANY");
     498           1 :   TVirtualMC::GetMC()->Gspos("SFRM4",2, "SQM4", xposFr4, yposFr4, zposFr4,0, "MANY");
     499             :   
     500             :   
     501             :   //......................................................................................
     502             :   //Frame-5
     503           1 :   Float_t frame5[3] ;               
     504           1 :   frame5[0] = 2.7/2.;            
     505           1 :   frame5[1] = 101.0/2.;              
     506           1 :   frame5[2] = 5.0/2.;
     507             :   
     508           1 :   TVirtualMC::GetMC()->Gsvolu("SFRM5", "BOX", idPGF30, frame5, 3); //Frame - 1
     509             :       
     510           1 :   Float_t arib5[3];
     511           1 :   arib5[0] = 0.9/2.0;
     512           1 :   arib5[1] = frame5[1];
     513           1 :   arib5[2] = (frame5[2]-0.95)/2.0;
     514             :   
     515           1 :   TVirtualMC::GetMC()->Gsvolu("SFRA5", "BOX", idAir, arib5, 3);
     516             :   
     517           1 :   Float_t xposarib5 = -frame5[0] + arib5[0];
     518             :   Float_t yposarib5 = 0.0;
     519           1 :   Float_t zposarib5 = frame5[2] - arib5[2];
     520             :       
     521           1 :   TVirtualMC::GetMC()->Gspos("SFRA5",1, "SFRM5", xposarib5, yposarib5, zposarib5,0, "ONLY");
     522           1 :   TVirtualMC::GetMC()->Gspos("SFRA5",2, "SFRM5", xposarib5, yposarib5, -zposarib5,0, "ONLY");
     523             :   
     524           1 :   Float_t rrib5[3];
     525           1 :   rrib5[0] = 0.8/2.0;
     526           1 :   rrib5[1] = frame5[1];
     527           1 :   rrib5[2] = (frame5[2]-0.95)/2.0;
     528             :   
     529           1 :   TVirtualMC::GetMC()->Gsvolu("SFRR5", "BOX", idRoha, rrib5, 3);
     530             :   
     531           1 :   Float_t xposrrib5 = frame5[0] - rrib5[0];
     532             :   Float_t yposrrib5 = 0.0;
     533           1 :   Float_t zposrrib5 = frame5[2] - rrib5[2];
     534             :   
     535           1 :   TVirtualMC::GetMC()->Gspos("SFRR5",1, "SFRM5", xposrrib5, yposrrib5, zposrrib5,0, "ONLY");
     536           1 :   TVirtualMC::GetMC()->Gspos("SFRR5",2, "SFRM5", xposrrib5, yposrrib5, -zposrrib5,0, "ONLY");
     537             :   
     538           1 :   Float_t xposFr5 = -3.7 + frame5[0];
     539           1 :   Float_t yposFr5 = frame5[1] + 20.6;
     540             :   Float_t zposFr5 = 0.0;
     541             :   
     542           1 :   TVirtualMC::GetMC()->Gspos("SFRM5",1, "SQM3", xposFr5, yposFr5, zposFr5,0, "ONLY");
     543           1 :   TVirtualMC::GetMC()->Gspos("SFRM5",2, "SQM4", xposFr5, yposFr5, zposFr5,0, "ONLY");
     544             :   
     545             :   //......................................................................................
     546             :   //Frame -6 
     547             :   
     548           1 :   Float_t frame6[3]; 
     549           1 :   frame6[0] = 1.0/2.;
     550           1 :   frame6[1] = 2.5/2.;
     551           1 :   frame6[2] = frame1[2];
     552             :   
     553           1 :   TVirtualMC::GetMC()->Gsvolu("SFRM6", "BOX", idPGF30, frame6, 3); 
     554             :   
     555           1 :   Float_t rrib6[3];
     556           1 :   rrib6[0] = frame6[0];
     557           1 :   rrib6[1] = 1.5/2.;
     558           1 :   rrib6[2] =(frame2[2]-0.95)/2.0;
     559             : 
     560           1 :   TVirtualMC::GetMC()->Gsvolu("SFRR6", "BOX", idRoha, rrib6, 3);
     561             :   
     562             :   Float_t xposrrib6 = 0.0;
     563             :   Float_t yposrrib6 = 1.0/2.0;
     564           1 :   Float_t zposrrib6 = frame6[2] - rrib6[2];
     565             : 
     566           1 :   TVirtualMC::GetMC()->Gspos("SFRR6",1, "SFRM6", xposrrib6, yposrrib6, zposrrib6,0, "ONLY");
     567           1 :   TVirtualMC::GetMC()->Gspos("SFRR6",2, "SFRM6", xposrrib6, yposrrib6, -zposrrib6,0, "ONLY");
     568             :   
     569             :   
     570             :   
     571           1 :   Float_t xposFr6 = -frame6[0];
     572           1 :   Float_t yposFr6 = frame6[1] + 20.6;
     573             :   Float_t zposFr6 = 0.0;
     574             : 
     575           1 :   TVirtualMC::GetMC()->Gspos("SFRM6",1, "SQM3", xposFr6, yposFr6, zposFr6,0, "ONLY");
     576           1 :   TVirtualMC::GetMC()->Gspos("SFRM6",2, "SQM4", xposFr6, yposFr6, zposFr6,0, "ONLY");
     577             :   
     578             :   
     579             : //......................................................................................
     580             : //Frame - 7 inner pgon
     581             :   
     582           1 :   Float_t pgparFr7[10];
     583           1 :   pgparFr7[0] = 0.;
     584           1 :   pgparFr7[1] = 90.;
     585           1 :   pgparFr7[2] = 5;
     586           1 :   pgparFr7[3] = 2.;
     587           1 :   pgparFr7[4] = 0.;
     588           1 :   pgparFr7[5] = 20.6;
     589           1 :   pgparFr7[6] = 23.1;
     590           1 :   pgparFr7[7] = pgparFr7[4] + 5.0;
     591           1 :   pgparFr7[8] = pgparFr7[5];
     592           1 :   pgparFr7[9] = pgparFr7[6];
     593             :   
     594           1 :   TVirtualMC::GetMC()->Gsvolu("SFRM7", "PGON", idPGF30, pgparFr7, 10);
     595             :   
     596           1 :   Float_t pgparRrib7[10];
     597           1 :   pgparRrib7[0] = 0.;
     598           1 :   pgparRrib7[1] = 90.;
     599           1 :   pgparRrib7[2] = 5;
     600           1 :   pgparRrib7[3] = 2.;
     601           1 :   pgparRrib7[4] = 0.;
     602           1 :   pgparRrib7[5] = 21.6;
     603           1 :   pgparRrib7[6] = 23.1;
     604           1 :   pgparRrib7[7] = pgparRrib7[4] + 1.55;
     605           1 :   pgparRrib7[8] = pgparRrib7[5];
     606           1 :   pgparRrib7[9] = pgparRrib7[6];
     607             :   
     608           1 :   TVirtualMC::GetMC()->Gsvolu("SFRR7", "PGON", idRoha, pgparRrib7, 10);
     609             :   
     610             :   Float_t xposrrib7 = 0.0;
     611             :   Float_t yposrrib7 = 0.0;
     612             :   Float_t zposrrib7 = 0.0;
     613             :   
     614           1 :   TVirtualMC::GetMC()->Gspos("SFRR7",1, "SFRM7", xposrrib7, yposrrib7, zposrrib7,0, "ONLY");
     615             :   
     616             :   zposrrib7 = 3.45;
     617             :   
     618           1 :   TVirtualMC::GetMC()->Gspos("SFRR7",2, "SFRM7", xposrrib7, yposrrib7, zposrrib7,0, "ONLY");
     619             :   
     620             :   Float_t xposFr7 = 0.0;
     621             :   Float_t yposFr7 = 0.0;
     622           1 :   Float_t zposFr7 = -frame1[2];
     623             :   
     624           1 :   TVirtualMC::GetMC()->Gspos("SFRM7",1, "SQM3", xposFr7, yposFr7, zposFr7,0, "ONLY");
     625           1 :   TVirtualMC::GetMC()->Gspos("SFRM7",2, "SQM4", xposFr7, yposFr7, zposFr7,0, "ONLY");
     626             :   
     627             :   
     628             :   //......................................................................................
     629             :   //Frame - 8 
     630             : 
     631             :   
     632           1 :   Float_t frame8[3] ;
     633           1 :   frame8[0] = 2.5/2.0;
     634           1 :   frame8[1] = 1.2/2.0;
     635           1 :   frame8[2] = frame1[2];
     636             :   
     637           1 :   TVirtualMC::GetMC()->Gsvolu("SFRM8", "BOX", idPGF30, frame8, 3); //Frame - 2
     638             :       
     639           1 :   Float_t rrib8[3];
     640           1 :   rrib8[0] = frame8[0]-1.0/2;
     641           1 :   rrib8[1] = frame8[1];
     642           1 :   rrib8[2] =(frame8[2]-0.95)/2.0;
     643             :   
     644           1 :   TVirtualMC::GetMC()->Gsvolu("SFRR8", "BOX", idRoha, rrib8, 3);
     645             :   
     646             :   Float_t xposrrib8 = -1.0/2;
     647             :   Float_t yposrrib8 = 0.0;
     648           1 :   Float_t zposrrib8 = frame8[2] - rrib8[2];
     649             :   
     650           1 :   TVirtualMC::GetMC()->Gspos("SFRR8",1, "SFRM8", xposrrib8, yposrrib8, zposrrib8,0, "ONLY");
     651           1 :   TVirtualMC::GetMC()->Gspos("SFRR8",2, "SFRM8", xposrrib8, yposrrib8, -zposrrib8,0, "ONLY");
     652             :   
     653             :   
     654             :   
     655           1 :   Float_t xposFr8 = frame8[0] + 20.6;
     656           1 :   Float_t yposFr8 = -frame8[1];
     657             :   Float_t zposFr8 = 0.0;
     658             :   
     659           1 :   TVirtualMC::GetMC()->Gspos("SFRM8",1, "SQM3", xposFr8, yposFr8, zposFr8,0, "ONLY");
     660           1 :   TVirtualMC::GetMC()->Gspos("SFRM8",2, "SQM4", xposFr8, yposFr8, zposFr8,0, "ONLY");
     661             :   
     662             :   
     663             :   
     664             : 
     665             :   //^^^^^^^^^^^^^^^^^^^^^^^^^ Sensitive volumes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     666             :   
     667             :   Float_t zsenv = 0.5; // distance between two cathode plane
     668             :   
     669             :   //Segment-0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     670           1 :   bparH[0] = 94.5/2.;
     671           1 :   bparH[1] = 1.2/2.;
     672           1 :   bparH[2] = zsenv/2.;
     673           1 :   TVirtualMC::GetMC()->Gsvolu("SC3G0", "BOX", idGas, bparH, 3);
     674           1 :   TVirtualMC::GetMC()->Gsvolu("SC4G0", "BOX", idGas, bparH, 3);
     675             :   
     676             :  //Segment-1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     677           1 :   pgpar[0] = 0.;
     678           1 :   pgpar[1] = 90.;
     679           1 :   pgpar[2] = 5;
     680           1 :   pgpar[3] = 2.;
     681           1 :   pgpar[4] = -zsenv/2.;
     682           1 :   pgpar[5] = 23.1;
     683           1 :   pgpar[6] = 117.6;
     684           1 :   pgpar[7] = zsenv/2.;
     685           1 :   pgpar[8] = pgpar[5];
     686           1 :   pgpar[9] = pgpar[6];
     687           1 :   TVirtualMC::GetMC()->Gsvolu("SC3G1", "PGON", idGas, pgpar, 10);
     688           1 :   TVirtualMC::GetMC()->Gsvolu("SC4G1", "PGON", idGas, pgpar, 10);
     689             :   
     690             : 
     691             :   //Segment-2 - vertical box ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     692             :   
     693           1 :   bparV[0] = 1.0/2.;
     694           1 :   bparV[1] = 95.5/2.;
     695           1 :   bparV[2] = zsenv/2.;
     696           1 :   TVirtualMC::GetMC()->Gsvolu("SC3G2", "BOX", idGas, bparV, 3);
     697           1 :   TVirtualMC::GetMC()->Gsvolu("SC4G2", "BOX", idGas, bparV, 3);
     698             :   
     699             :   //...........................................................................................
     700             :   
     701           1 :   xposHorBox =  bparH[0] + 23.1;
     702           1 :   yposHorBox = -bparH[1];
     703             :   
     704           1 :   xposVerBox = -bparV[0];
     705           1 :   yposVerBox = bparV[1] + 23.1;
     706             :   
     707           1 :   TVirtualMC::GetMC()->Gspos("SC3G0",1, "SQM3", xposHorBox,yposHorBox,0.,0, "ONLY");
     708           1 :   TVirtualMC::GetMC()->Gspos("SC3G1",1, "SQM3", 0.,0.,0.,0, "ONLY");
     709           1 :   TVirtualMC::GetMC()->Gspos("SC3G2",1, "SQM3", xposVerBox,yposVerBox,0.,0, "ONLY");
     710             :      
     711             :   
     712           1 :   TVirtualMC::GetMC()->Gspos("SC4G0",1, "SQM4", xposHorBox,yposHorBox,0.,0, "ONLY");
     713           1 :   TVirtualMC::GetMC()->Gspos("SC4G1",1, "SQM4", 0.,0.,0.,0, "ONLY");
     714           1 :   TVirtualMC::GetMC()->Gspos("SC4G2",1, "SQM4", xposVerBox,yposVerBox,0.,0, "ONLY");
     715             :      
     716             :   
     717             :   //^^^^^^^^^^^^^^^^^^^^^^^^^ Sensitive volumes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     718             : 
     719             : 
     720             : 
     721             : //##################################################################################################
     722             : //   Positioning Quadrant  in chamber#3 and chamber#4
     723             : //##################################################################################################
     724             : /******Transformations for  Quadrant**********************************************
     725             :       ||        I  => Quadrant I:   no rotation
     726             :       ||
     727             :   II. || I.    II  => Quadrant II:  Reflaction of Quadrant I in XZ plane
     728             :       ||           => TGeoRotation("Qrot2",90.,180.,90.,90.,180.,0.);
     729             : =============
     730             :       ||       III => Quadrant III: 180 degree rotation of Quadrant I in XY plane
     731             :  III. || IV.       => TGeoRotation("Qrot3",90.,180.,90.,90.,180.,0.);
     732             :       ||        IV => Quadrant IV:-180 degree rotation of Quadrant II in XY plane
     733             :                    => TGeoRotation("Qrot4",90.,0.,90.,-90.,180.,0.);
     734             : **********************************************************************************************/
     735             : 
     736             :  Int_t detElemId1 =  1;  // quadrant I
     737             :  Int_t detElemId2 =  0;  // quadrant II
     738             :  Int_t detElemId3 =  3;  // quadrant III
     739             :  Int_t detElemId4 =  2;  // quadrant IV
     740             : 
     741             :  //Float_t halfChamber = zCbb + zCu + zRoha + zMeb + zEeb + zsenv/2;
     742             : //   cout<<  "\n half_chamber \t" << half_chamber << endl;
     743             : 
     744           1 :  Float_t halfChamber = tpar1[2];// tpar1[2] = 6.8/2;
     745             : 
     746             : // ------------------------------St2 Chamber3------------------------------------------------
     747             : 
     748             :  //    GetEnvelopes(2)->AddEnvelope("S3M0", 300, true,TGeoTranslation(0.,0.,0.));
     749           3 :     GetEnvelopes(2)->AddEnvelope("SQM3", 300+detElemId1, 1, TGeoTranslation( 0., 0., - halfChamber));
     750           3 :     GetEnvelopes(2)->AddEnvelope("SQM3", 300+detElemId2, 2, TGeoTranslation( 0., 0., + halfChamber),
     751           1 :                                  TGeoRotation("Qrot3",90.,180.,90.,90.,180.,0.));
     752           3 :     GetEnvelopes(2)->AddEnvelope("SQM3", 300+detElemId3, 3, TGeoTranslation( 0., 0., - halfChamber),
     753           1 :                                   TGeoRotation("Qrot3",90.,180.,90.,270.,0.,0.));
     754           3 :     GetEnvelopes(2)->AddEnvelope("SQM3", 300+detElemId4, 4, TGeoTranslation( 0., 0., + halfChamber),
     755           1 :                                   TGeoRotation("Qrot4",90.,0.,90.,-90.,180.,0.));
     756             : 
     757             : //--------------------------------St2 Chamber4-------------------------------------------------
     758             : 
     759           3 :     GetEnvelopes(3)->AddEnvelope("SQM4", 400+detElemId1, 1, TGeoTranslation( 0., 0., - halfChamber));
     760           3 :     GetEnvelopes(3)->AddEnvelope("SQM4", 400+detElemId2, 2, TGeoTranslation( 0., 0., + halfChamber),
     761           1 :                                  TGeoRotation("Qrot2",90.,180.,90.,90.,180.,0.));
     762           3 :     GetEnvelopes(3)->AddEnvelope("SQM4", 400+detElemId3, 3, TGeoTranslation( 0., 0., - halfChamber),
     763           1 :                                   TGeoRotation("Qrot3",90.,180.,90.,270.,0.,0.));
     764           3 :     GetEnvelopes(3)->AddEnvelope("SQM4", 400+detElemId4, 4, TGeoTranslation( 0., 0., + halfChamber),
     765           1 :                                   TGeoRotation("Qrot4",90.,0.,90.,-90.,180.,0.));
     766             : 
     767             : //**********************************************************************************************
     768             : 
     769           1 : }
     770             : //______________________________________________________________________________
     771             : void AliMUONSt2GeometryBuilderV2::SetVolumes()
     772             : {
     773             : /// Defines the volumes for the station2 chambers.
     774             : 
     775           2 :   if (gAlice->GetModule("SHIL")) {
     776           2 :     SetMotherVolume(2, "YOUT1");
     777           2 :     SetMotherVolume(3, "YOUT1");
     778           1 :   }  
     779             : 
     780             :   // Define chamber volumes as virtual
     781           2 :   SetVolume(2, "SC03", true);
     782           2 :   SetVolume(3, "SC04", true);
     783           1 : }
     784             : 
     785             : //______________________________________________________________________________
     786             : void AliMUONSt2GeometryBuilderV2::SetTransformations()
     787             : {
     788             : /// Defines the transformations for the station2 chambers.
     789             : 
     790           2 :   Double_t zpos1 = - AliMUONConstants::DefaultChamberZ(2); 
     791           2 :   SetTranslation(2, TGeoTranslation(0., 0., zpos1));
     792             : 
     793           1 :   Double_t zpos2 = - AliMUONConstants::DefaultChamberZ(3); 
     794           2 :   SetTranslation(3, TGeoTranslation(0., 0., zpos2));
     795           1 : }
     796             : 
     797             : //______________________________________________________________________________
     798             : void AliMUONSt2GeometryBuilderV2::SetSensitiveVolumes()
     799             : {
     800             : /// Defines the sensitive volumes for station2 chambers.
     801             : 
     802           3 :   GetGeometry(2)->SetSensitiveVolume("SC3G0");
     803           2 :   GetGeometry(2)->SetSensitiveVolume("SC3G1");
     804           2 :   GetGeometry(2)->SetSensitiveVolume("SC3G2");
     805             : 
     806           2 :   GetGeometry(3)->SetSensitiveVolume("SC4G0");
     807           2 :   GetGeometry(3)->SetSensitiveVolume("SC4G1");
     808           2 :   GetGeometry(3)->SetSensitiveVolume("SC4G2");
     809           1 : }
     810             : 

Generated by: LCOV version 1.11