LCOV - code coverage report
Current view: top level - T0/T0sim - AliT0v0.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 293 0.3 %
Date: 2016-06-14 17:26:59 Functions: 1 7 14.3 %

          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             : //                                                                 //
      20             : // T0 ( T-zero) detector  version 0                        //
      21             : //
      22             : //Begin Html       
      23             : /*
      24             : <img src="gif/AliT0v0Class.gif">
      25             : */
      26             : //End Html
      27             : //                                                                  //
      28             : //                                                                  //
      29             : //////////////////////////////////////////////////////////////////////
      30             : 
      31             : #include <Riostream.h>
      32             : #include <stdlib.h>
      33             : 
      34             : #include <TGeoGlobalMagField.h>
      35             : #include <TLorentzVector.h>
      36             : #include <TMath.h>
      37             : #include <TVirtualMC.h>
      38             : 
      39             : #include "AliLog.h"
      40             : #include "AliMagF.h"
      41             : #include "AliRun.h"
      42             : #include "AliT0hit.h"
      43             : #include "AliT0v0.h"
      44             : #include "AliLog.h"
      45             : 
      46          12 : ClassImp(AliT0v0)
      47             : 
      48             : //--------------------------------------------------------------------
      49             : AliT0v0::AliT0v0(const char *name, const char *title):
      50           0 :   AliT0(name,title),
      51           0 :   fIdSens1(0)
      52           0 : {
      53             :   //
      54             :   // Standart constructor for T0 Detector version 0
      55             :   //
      56             :   //  fIdSens1=0;
      57             : //  setBufferSize(128000);
      58           0 : }
      59             : //-------------------------------------------------------------------------
      60             : void AliT0v0::CreateGeometry()
      61             : {
      62             :   //
      63             :   // Create the geometry of T0 Detector version 0
      64             :   // Full geometry with support structure according T0 prototype
      65             :   //
      66             :   // begin Html
      67             :   /*
      68             :    <img src="gif/AliT0v0.gif">
      69             :   */
      70             :   //
      71             : 
      72             : 
      73             : 
      74           0 :   Int_t *idtmed = fIdtmed->GetArray();
      75             :   
      76             :   Int_t is;
      77           0 :   Int_t idrotm[999];
      78             :   Float_t x,y,z;
      79           0 :  Float_t pstartR[18]={0., 360., 5., 
      80             :                        -76.5+0.00+69.7, 4.25, 10.,
      81             :                        -76.5+6.05+69.7, 4.5, 10., 
      82             :                        -76.5+8.05+69.7, 4.5, 10.,
      83             :                        -76.5+8.05+69.7, 5.1, 10.,
      84             :                        -62.9+0.00+69.7, 5.1, 10.};
      85             :   
      86           0 :   Float_t pstart[3]={4.3, 12.,6.8};
      87           0 :   Float_t pinstart[3]={0.,1.6,6.5};
      88           0 :   Float_t ppmt[3]={0.,1.5,3.5};
      89             : 
      90           0 :   Float_t preg[3]={0.,0.875,0.005}; //dobavil bogdanov
      91             : 
      92           0 :   Float_t pdivider[3]={0.,1.2,1.75};
      93           0 :   Float_t pdiv2[3]={0.,1.2,1.25};
      94           0 :   Float_t pdiv1[3]={0.6,1.2,0.5};
      95             :   //  Float_t ptop[3]={0.,1.3,1.5};
      96           0 :   Float_t ptop[3]={0.,1.0,1.5};
      97           0 :   Float_t pbot[3]={0.6,1.2,0.1};
      98           0 :   Float_t pglass[3]={1.2,1.3,2.};
      99           0 :   Float_t pcer[3]={0.9,1.1,0.09};
     100           0 :   Float_t psteel[3]={0.9,1.1,0.01};
     101           0 :   Float_t ppins[3]={0.6,1.2,0.014};
     102           0 :   Float_t phole[3]={0.6,1.2,0.015};
     103           0 :   Float_t pknob[3]={0.5,0.6,0.4};
     104           0 :   Float_t pknob_vac[3]={0.,0.5,0.4};
     105           0 :   Float_t pknob_bot[3]={0.,0.6,0.05};
     106           0 :   Float_t pribber[3] = {0.,1.2,2.413/2.};
     107           0 :   Float_t presist[3] = {0.,1.2,0.087/2.};
     108           0 :   Float_t psupport1[3] = {4.51,4.6,4.0};//C kozhuh vnutri
     109           0 :   Float_t psupport2[3] = {9.4,9.5,4.0};// snaruzhi  C
     110           0 :   Float_t psupport3[3] = {4.51,9.5,0.05};//kryshki  C
     111           0 :    Float_t psupport5[3] = {1.44,1.5,6.5}; // stakanchik dlai feu  C
     112           0 :   Float_t psupport6[3] = {0,1.5,0.05}; //kryshechka stakanchika  Al
     113           0 :   Float_t psupport7[3] = {1.5,1.6,0.6}; //kolechko snaruzhu stakanchika Al
     114             :   // Mother Volume katushka dlia krepezha vokrug truby k Absorbru
     115           0 :     AliMatrix(idrotm[901], 90., 0., 90., 90., 180., 0.);
     116           0 :   Float_t ppcon[70]; 
     117           0 :     ppcon[0]  =   0;
     118           0 :     ppcon[1]  = 360;
     119           0 :     ppcon[2]  =  13;
     120             : //  1: 
     121           0 :     ppcon[3]  =  14.1/2;
     122           0 :     ppcon[4]  =   4.4;
     123           0 :     ppcon[5]  =   4.5;
     124             : //  2
     125           0 :     ppcon[6]  = ppcon[3]+1.;
     126           0 :     ppcon[7]  =   4.4;
     127           0 :     ppcon[8]  =   4.5;
     128             : //  3
     129           0 :     ppcon[9]  = ppcon[6];
     130           0 :     ppcon[10] =   4.4;
     131           0 :     ppcon[11] =   5.1;
     132             : 
     133             : //  4
     134             : 
     135           0 :     ppcon[12]  = ppcon[9]+0.1;
     136           0 :     ppcon[13] =   4.4;
     137           0 :     ppcon[14] =   5.1;
     138             : //  5
     139             : 
     140           0 :     ppcon[15]  = ppcon[12];
     141           0 :     ppcon[16] =   4.9;
     142           0 :     ppcon[17] =   5.1;
     143             :     
     144             : //  6
     145           0 :     ppcon[18]  = ppcon[15]+7.05;
     146           0 :     ppcon[19] =   4.9;
     147           0 :     ppcon[20] =   5.1;
     148             :     
     149             : //  7
     150           0 :     ppcon[21]  = ppcon[18];
     151           0 :     ppcon[22] =   4.9;
     152           0 :     ppcon[23] =   5.1;
     153             : 
     154             : /// 8
     155           0 :     ppcon[24]  = ppcon[21]+0.01;
     156           0 :     ppcon[25] =   3.15;
     157           0 :     ppcon[26] =   3.25;
     158             :     
     159             : /// 9
     160           0 :     ppcon[27]  = ppcon[24];
     161           0 :     ppcon[28] =   3.15;
     162           0 :     ppcon[29] =   3.25;
     163             :     
     164             : //  10
     165           0 :     ppcon[30]  = ppcon[27]+4.5;
     166           0 :     ppcon[31] =   3.15;
     167           0 :     ppcon[32] =   3.25;
     168             : 
     169             : //  11
     170           0 :     ppcon[33] = ppcon[30];
     171           0 :     ppcon[34] =   3.15;
     172           0 :     ppcon[35] =   3.25;
     173             : 
     174             : //  12
     175           0 :     ppcon[36]  = ppcon[33];
     176           0 :     ppcon[37] =   3.15;
     177           0 :     ppcon[38] =   7.6;
     178             : 
     179             : //  13
     180           0 :     ppcon[39]  = ppcon[33]+0.4;
     181           0 :     ppcon[40] =   3.15;
     182           0 :     ppcon[41] =   7.6;
     183             : 
     184             : //  14
     185             : //    ppcon[39]  = ppcon[36];
     186             : //    ppcon[40] =   3.15;
     187             : //    ppcon[41] =   7.6;
     188             : 
     189           0 :     TVirtualMC::GetMC()->Gsvolu("0SUP", "PCON", idtmed[kAir], ppcon,42);
     190             :     z=-69.7;//-14.1/2;
     191           0 :     TVirtualMC::GetMC()->Gspos("0SUP",1,"ALIC",0.,0.,z,idrotm[901],"ONLY");
     192             : 
     193             : 
     194             :    Float_t zdetRight=69.7,zdetLeft=350;
     195             :  //-------------------------------------------------------------------
     196             :  //  T0 volume 
     197             :  //-------------------------------------------------------------------
     198             :   
     199             :     
     200           0 :     TVirtualMC::GetMC()->Gsvolu("0STR","PCON",idtmed[kAir],pstartR,18);
     201           0 :     TVirtualMC::GetMC()->Gsvolu("0STL","TUBE",idtmed[kAir],pstart,3);
     202           0 :     TVirtualMC::GetMC()->Gspos("0STR",1,"ALIC",0.,0.,-zdetRight-pstart[2],idrotm[901],"ONLY");
     203           0 :     TVirtualMC::GetMC()->Gspos("0STL",1,"ALIC",0.,0.,zdetLeft+pstart[2],0,"ONLY");
     204             : 
     205             : //T0 interior
     206           0 :     TVirtualMC::GetMC()->Gsvolu("0INS","TUBE",idtmed[kAir],pinstart,3);
     207           0 :     TVirtualMC::GetMC()->Gsvolu("0PMT","TUBE",idtmed[kOpAir],ppmt,3);     
     208           0 :     TVirtualMC::GetMC()->Gsvolu("0DIV","TUBE",idtmed[kVac],pdivider,3);     
     209           0 :     TVirtualMC::GetMC()->Gsvolu("0SU1","TUBE",idtmed[kC],psupport1,3);//C kozhuh vnutri
     210           0 :     TVirtualMC::GetMC()->Gsvolu("0SU2","TUBE",idtmed[kC],psupport2,3);// snaruzhi  C
     211           0 :     TVirtualMC::GetMC()->Gsvolu("0SU3","TUBE",idtmed[kC],psupport3,3);//kryshka perednaiai  C
     212           0 :     TVirtualMC::GetMC()->Gsvolu("0SU4","TUBE",idtmed[kC],psupport3,3);//kryshka zadnaiai  C
     213             :     //    TVirtualMC::GetMC()->Gsvolu("0SU5","TUBE",idtmed[kAir],psupport4,3);// dyrki dlia feu v zadnej kryshke Air
     214           0 :     TVirtualMC::GetMC()->Gsvolu("0SU6","TUBE",idtmed[kC],psupport5,3);// stakanchik dlai feu  C
     215           0 :     TVirtualMC::GetMC()->Gsvolu("0SU7","TUBE",idtmed[kAl],psupport6,3);//kryshechka stakanchika  Al
     216           0 :     TVirtualMC::GetMC()->Gsvolu("0SU8","TUBE",idtmed[kAl],psupport7,3);//kolechko snaruzhu stakanchika Al
     217             :        
     218             : // first ring: 12 units of Scintillator+PMT+divider
     219           0 :   Float_t  theta  = (180 / TMath::Pi()) * TMath::ATan(6.5 / zdetRight);
     220           0 :   Float_t angle  = 2 * TMath::Pi() / 12;
     221           0 :   Float_t phi[3];
     222             :     
     223           0 :    for (is=0; is<12; is++)
     224             :       {  
     225             : 
     226           0 :         x = 6.5 * TMath::Sin(is * angle);
     227           0 :         y = 6.5 * TMath::Cos(is * angle);
     228             :         
     229           0 :         phi[0] = -30 * is;
     230           0 :         phi[1] = 90 - is * 30;
     231           0 :         phi[2] = 90 - is * 30;
     232           0 :         for (Int_t j = 0; j < 3; j++)
     233           0 :           if (phi[j] < 0)  phi[j] += 360;
     234             :         
     235           0 :         AliMatrix (idrotm[902 + is], 90.,         phi[0],
     236           0 :                    90. + theta, phi[1],
     237           0 :                    theta,       phi[2]);  
     238           0 :         z=-pstart[2]+pinstart[2]+0.2;
     239           0 :         TVirtualMC::GetMC()->Gspos ("0INS", is + 1, "0STR", x, y, z, idrotm[902 + is], "ONLY");
     240           0 :         TVirtualMC::GetMC()->Gspos ("0INS", is + 13, "0STL", x, y, z, 0, "ONLY");
     241             :         
     242           0 :         x = 9 * TMath::Sin(angle/2+is * angle);
     243           0 :         y = 9 * TMath::Cos(angle/2+is * angle);
     244             : 
     245           0 :         TVirtualMC::GetMC()->Gspos ("0INS", is + 25, "0STL", x, y, z, 0, "ONLY");
     246             :                 
     247             :       } 
     248             :    
     249             :       
     250             :    x=0;
     251             :    y=0;
     252           0 :    z=-pinstart[2]+ppmt[2]+2.*psupport6[2]+0.1;
     253           0 :    TVirtualMC::GetMC()->Gspos("0PMT",1,"0INS",x,y,z,0,"ONLY");
     254           0 :    z=z+pdivider[2]+ppmt[2];
     255           0 :    TVirtualMC::GetMC()->Gspos("0DIV",1,"0INS",x,y,z,0,"ONLY");
     256             :    
     257             :    // PMT
     258             :    
     259             :    // Entry window (glass)
     260           0 :    TVirtualMC::GetMC()->Gsvolu("0TOP","TUBE",idtmed[kOpGlass],ptop,3); //glass
     261             :    //   TVirtualMC::GetMC()->Gsvolu("0TOP","TUBE",idtmed[12],ptop,3); //lucite
     262           0 :    z=-ppmt[2]+ptop[2];
     263           0 :    TVirtualMC::GetMC()->Gspos("0TOP",1,"0PMT",0,0,z,0,"ONLY");
     264             :    
     265             :    //Fotokatod
     266             :    
     267           0 :    TVirtualMC::GetMC()->Gsvolu ("0REG", "TUBE", idtmed[kOpGlass], preg, 3); //photocathode dobavil bogdanov(AliT0v2)
     268           0 :    z = -ppmt[2] + 2 * ptop[2] + preg[2]; //photocathode dobavil bogdanov 
     269           0 :    TVirtualMC::GetMC()->Gspos ("0REG", 1, "0PMT", 0, 0, z, 0, "ONLY"); //photocathode dobavil bogdanov(AliT0v2)
     270             :    
     271             :    // Bottom glass
     272           0 :    TVirtualMC::GetMC()->Gsvolu("0BOT","TUBE",idtmed[kGlass],pbot,3);
     273           0 :    z=ppmt[2]-pbot[2];
     274           0 :    AliDebugClass(1,Form(" Z bottom %f\n",z));
     275           0 :    TVirtualMC::GetMC()->Gspos("0BOT",1,"0PMT",0,0,z,0,"ONLY");
     276             :    // Side cylinder glass
     277           0 :    TVirtualMC::GetMC()->Gsvolu("0OUT","TUBE",idtmed[kGlass],pglass,3);
     278           0 :    z=ppmt[2]-pglass[2];
     279           0 :    TVirtualMC::GetMC()->Gspos("0OUT",1,"0PMT",0,0,z,0,"ONLY");
     280             :    //PMT electrodes support structure
     281           0 :    TVirtualMC::GetMC()->Gsvolu("0CER","TUBE",idtmed[kCer],pcer,3);
     282           0 :    TVirtualMC::GetMC()->Gsvolu("0STE","TUBE",idtmed[kSteel],psteel,3);
     283           0 :    z=-ppmt[2]+2*ptop[2]+0.3;;
     284           0 :    for (is=1; is<=15; is++)
     285             :      {
     286           0 :        z=z+psteel[2]+pcer[2];
     287           0 :        TVirtualMC::GetMC()->Gspos("0CER",is,"0PMT",0,0,z,0,"ONLY");
     288           0 :        z=z+psteel[2]+pcer[2];
     289           0 :        TVirtualMC::GetMC()->Gspos("0STE",is,"0PMT",0,0,z,0,"ONLY");
     290             :      }
     291             :    
     292             :    // Divider
     293             :    // Knob at the bottom of PMT baloon
     294             :    
     295           0 :    TVirtualMC::GetMC()->Gsvolu("0NB","TUBE",idtmed[6],pknob,3);
     296           0 :    z=-pdivider[2]+pknob[2];
     297           0 :    TVirtualMC::GetMC()->Gspos("0NB",1,"0DIV",0,0,z,0,"ONLY");
     298           0 :    TVirtualMC::GetMC()->Gsvolu("0KB","TUBE",idtmed[kGlass],pknob_bot,3);
     299           0 :    z=-pdivider[2]+2*pknob[2]+pknob_bot[2];
     300           0 :    TVirtualMC::GetMC()->Gspos("0KB",1,"0DIV ",0,0,z,0,"ONLY");
     301           0 :    TVirtualMC::GetMC()->Gsvolu("0VAC","TUBE",idtmed[kVac],pknob_vac,3);
     302           0 :    z=-pdivider[2]+pknob_vac[2];
     303           0 :    TVirtualMC::GetMC()->Gspos("0VAC",1,"0DIV",0,0,z,0,"ONLY");
     304             :    //Steel pins + pin holes
     305           0 :    TVirtualMC::GetMC()->Gsvolu("0PIN","TUBE",idtmed[kSteel],ppins,3);
     306           0 :    z=-pdivider[2]+ppins[2];
     307           0 :    TVirtualMC::GetMC()->Gspos("0PIN",1,"0DIV",0,0,z,0,"ONLY");
     308           0 :    TVirtualMC::GetMC()->Gsvolu("0HOL","TUBE",idtmed[kBrass],phole,3);
     309           0 :    z=-pdivider[2]+2*ppins[2]+phole[2];
     310           0 :    TVirtualMC::GetMC()->Gspos("0HOL",1,"0DIV",0,0,z,0,"ONLY");
     311             :    
     312             :    //Socket
     313           0 :    TVirtualMC::GetMC()->Gsvolu("0V1","TUBE",idtmed[kCer],pdiv1,3);
     314           0 :    z=-pdivider[2]+pdiv1[2];
     315           0 :    TVirtualMC::GetMC()->Gspos("0V1",1,"0DIV",0,0,z,0,"ONLY");
     316             :    //Resistors
     317           0 :    TVirtualMC::GetMC()->Gsvolu("0V2","TUBE",idtmed[kAir],pdiv2,3);
     318           0 :    z=pdivider[2]-pdiv2[2];
     319           0 :    TVirtualMC::GetMC()->Gspos("0V2",1,"0DIV",0,0,z,0,"ONLY");
     320           0 :    TVirtualMC::GetMC()->Gsvolu("0RS","TUBE",idtmed[kCer],presist,3);
     321           0 :    z=-pdiv2[2]+presist[2];
     322           0 :    TVirtualMC::GetMC()->Gspos("0RS",1,"0V2",0,0,z,0,"ONLY");
     323           0 :    TVirtualMC::GetMC()->Gsvolu("0RB","TUBE",idtmed[kRibber],pribber,3);
     324           0 :    z=pdiv2[2]-pribber[2];
     325           0 :    TVirtualMC::GetMC()->Gspos("0RB",1,"0V2",0,0,z,0,"ONLY");
     326             :    
     327             :    
     328             :    //Support  left side
     329             :    /*   
     330             :    z=-pstart[2]+psupport1[2];
     331             :    TVirtualMC::GetMC()->Gspos("0SU1",2,"0STL",0,0,z,0,"ONLY"); //C kozhuh snaruzhi
     332             :    TVirtualMC::GetMC()->Gspos("0SU2",2,"0STL",0,0,z,0,"ONLY"); //C kozhuh vnutri
     333             :    z=-pstart[2]+psupport3[2];
     334             :    TVirtualMC::GetMC()->Gspos("0SU3",2,"0STL",0,0,z,0,"ONLY"); //peredniaia kryshka
     335             :    z=-pstart[2]+2.*psupport1[2];
     336             :    TVirtualMC::GetMC()->Gspos("0SU4",2,"0STL",0,0,z,0,"MANY"); //zadnaiai kryshka
     337             :    */
     338           0 :    z=-pstart[2]+psupport1[2]+0.1;
     339           0 :    TVirtualMC::GetMC()->Gspos("0SU1",1,"0STR",0,0,z,0,"ONLY"); //C kozhuh snaruzhi
     340           0 :    TVirtualMC::GetMC()->Gspos("0SU2",1,"0STR",0,0,z,0,"ONLY"); //C kozhuh vnutri
     341           0 :    z=-pstart[2]+psupport3[2]+0.1;
     342           0 :    TVirtualMC::GetMC()->Gspos("0SU3",1,"0STR",0,0,z,0,"ONLY"); //peredniaia kryshka
     343           0 :    z=-pstart[2]+2.*psupport1[2]+0.1;
     344           0 :    TVirtualMC::GetMC()->Gspos("0SU4",1,"0STR",0,0,z,0,"MANY"); //zadnaiai kryshka
     345           0 :    TVirtualMC::GetMC()->Gspos("0SU6",1,"0INS",0,0,0,0,"ONLY");//C stakanchik dlia feu 
     346           0 :    z=-pinstart[2]+psupport6[2];
     347           0 :    TVirtualMC::GetMC()->Gspos("0SU7",1,"0INS",0,0,z,0,"ONLY"); //Al kryshechka 
     348             :    
     349           0 :    z=pinstart[2]-psupport7[2];
     350           0 :    TVirtualMC::GetMC()->Gspos("0SU8",1,"0INS",0,0,z,0,"ONLY"); //Al kolechko
     351             :    
     352             :    
     353           0 :    Float_t par[3];
     354           0 :    par[0]=4.4;
     355           0 :    par[1]=4.5;
     356           0 :    par[2]=0.5;
     357           0 :    TVirtualMC::GetMC()->Gsvolu("0SC0","TUBE",idtmed[kC],par,3);
     358           0 :    z=ppcon[3]+par[2];
     359           0 :    TVirtualMC::GetMC()->Gspos("0SC0",1,"0SUP",0,0,z,0,"ONLY"); 
     360           0 :    z += par[2];
     361           0 :    par[0]=4.4;
     362           0 :    par[1]=5.1;
     363           0 :    par[2]=0.05;
     364           0 :    TVirtualMC::GetMC()->Gsvolu("0SC1","TUBE",idtmed[kC],par,3);
     365           0 :    z += par[2];
     366           0 :    TVirtualMC::GetMC()->Gspos("0SC1",1,"0SUP",0,0,z,0,"ONLY"); 
     367           0 :    z=z+par[2];
     368           0 :    par[0]=4.9;
     369           0 :    par[1]=5.0;
     370           0 :    par[2]=6.9/2;
     371           0 :     TVirtualMC::GetMC()->Gsvolu("0SC2","TUBE",idtmed[kC],par,3);
     372           0 :     z += par[2];
     373           0 :     TVirtualMC::GetMC()->Gspos("0SC2",1,"0SUP",0,0,z,0,"ONLY"); 
     374           0 :     z += par[2];
     375             :     /*
     376             :     Float_t parC[5];
     377             :     parC[0]=0.25;
     378             :     parC[1]=5.1;
     379             :     parC[2]=5.2;
     380             :     parC[3]=5.5;
     381             :     parC[4]=5.6;
     382             :     TVirtualMC::GetMC()->Gsvolu("0SC3","CONE",idtmed[kC],parC,5);
     383             :     z += parC[0];
     384             :     TVirtualMC::GetMC()->Gspos("0SC3",1,"0SUP",0,0,z,0,"ONLY"); 
     385             :     z += parC[0];
     386             :     par[0]=5.5;
     387             :     par[1]=5.6;
     388             :     par[2]=1.2/2;
     389             :     TVirtualMC::GetMC()->Gsvolu("0SC4","TUBE",idtmed[kC],par,3);
     390             :     z += par[2];
     391             :     TVirtualMC::GetMC()->Gspos("0SC4",1,"0SUP",0,0,z,0,"ONLY"); 
     392             :     par[0]=5.1;
     393             :     par[1]=5.5;
     394             :     par[2]=1.2/2;
     395             :     TVirtualMC::GetMC()->Gsvolu("0SA0","TUBE",idtmed[kAl],par,3);
     396             :     TVirtualMC::GetMC()->Gspos("0SA0",1,"0SUP",0,0,z,0,"ONLY"); 
     397             :     //gvozdi dlia skruchivaniia Al i C parts
     398             :     par[0]=5.75; 
     399             :     par[1]=5.78;
     400             :     TVirtualMC::GetMC()->Gsvolu("0SN1","TUBE",idtmed[kSteel],par,3);
     401             :     TVirtualMC::GetMC()->Gspos("0SN1",1,"0SUP",0,0,z,0,"ONLY"); 
     402             :     z += par[2];
     403             :     */
     404           0 :     par[0]=3.15;
     405           0 :     par[1]=4.9;
     406           0 :     par[2]=0.1/2;
     407           0 :     TVirtualMC::GetMC()->Gsvolu("0SA1","TUBE",idtmed[kAl],par,3);
     408             :     
     409           0 :     z += par[2];
     410           0 :     TVirtualMC::GetMC()->Gspos("0SA1",1,"0SUP",0,0,z,0,"ONLY"); 
     411           0 :     z=z+par[2];
     412           0 :     par[0]=3.15;
     413           0 :     par[1]=3.16;
     414           0 :     par[2]=4.5/2;
     415           0 :     TVirtualMC::GetMC()->Gsvolu("0SA2","TUBE",idtmed[kAl],par,3);
     416           0 :     z += par[2];
     417           0 :     TVirtualMC::GetMC()->Gspos("0SA2",1,"0SUP",0,0,z,0,"ONLY"); 
     418           0 :     z=z+par[2];
     419           0 :     par[0]=3.16; // eta chast' prikruchena k absorberu
     420           0 :     par[1]=7.5;
     421           0 :     par[2]=0.2;
     422           0 :     TVirtualMC::GetMC()->Gsvolu("0SA3","TUBE",idtmed[kAl],par,3);
     423           0 :     z += par[2];
     424           0 :     TVirtualMC::GetMC()->Gspos("0SA3",1,"0SUP",0,0,z,0,"ONLY"); 
     425           0 :     par[0]=3.16; // gvozdi eta chast' prikruchena k absorberu
     426           0 :     par[1]=7.5;
     427           0 :     par[2]=0.01;
     428           0 :     TVirtualMC::GetMC()->Gsvolu("0SN2","TUBE",idtmed[kSteel],par,3);
     429           0 :     TVirtualMC::GetMC()->Gspos("0SN2",1,"0SUP",0,0,z,0,"ONLY"); 
     430             :     
     431             :  
     432           0 : }    
     433             : 
     434             : //------------------------------------------------------------------------
     435             : void AliT0v0::CreateMaterials()
     436             : {
     437           0 :    Int_t isxfld   = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
     438           0 :    Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
     439           0 :    Double_t a,z,d,radl,absl;
     440           0 :    TArrayD par;
     441             : 
     442             : // Scintillator CH
     443           0 :    Float_t ascin[2]={1.01,12.01};
     444           0 :    Float_t zscin[2]={1,6};
     445           0 :    Float_t wscin[2]={1,1};
     446             :    Float_t denscin=1.03;
     447             : //Lucite C(CH3)CO2CH3
     448           0 :    Float_t alucite[3]={1.01,12.01,15.999};
     449           0 :    Float_t zlucite[3]={1,6,8};
     450           0 :    Float_t wlucite[3]={8,5,2};
     451             :    Float_t denlucite=1.16;
     452             :  // PMT glass SiO2
     453           0 :    Float_t aglass[2]={28.0855,15.9994};
     454           0 :    Float_t zglass[2]={14.,8.};
     455           0 :    Float_t wglass[2]={1.,2.};
     456             :    Float_t dglass=2.65;
     457             : // Ceramic   97.2% Al2O3 , 2.8% SiO2
     458           0 :    Float_t acer[2],zcer[2],wcer[2]={0.972,0.028};
     459           0 :    Float_t aal2o3[2]  = { 26.981539,15.9994 };
     460           0 :    Float_t zal2o3[2]  = { 13.,8. };
     461           0 :    Float_t wal2o3[2]  = { 2.,3. };
     462             :    Float_t denscer  = 3.6;
     463             : 
     464             : // Brass 80% Cu, 20% Zn
     465           0 :    Float_t abrass[2] = {63.546,65.39};
     466           0 :    Float_t zbrass[2] = {29,30};
     467           0 :    Float_t wbrass[2] = {0.8,0.2};
     468             :    Float_t denbrass=8.96;
     469             : 
     470             : //Ribber C6H12S
     471           0 :    Float_t aribber[3] = {12.,1.,32.};
     472           0 :    Float_t zribber[3] = {6.,1.,16.};
     473           0 :    Float_t wribber[3] = {6.,12.,1.};
     474             :    Float_t denribber=0.8;
     475             : // Support inside 
     476           0 :    Float_t asupport[2] = {12.,1.};
     477           0 :    Float_t zsupport[2] = {6.,1.};
     478           0 :    Float_t wsupport[2] = {1.,1.};
     479             :    Float_t densupport=0.1;
     480             : // AIR
     481           0 :    Float_t aAir[4]={12.0107,14.0067,15.9994,39.948};
     482           0 :    Float_t zAir[4]={6.,7.,8.,18.};
     483           0 :    Float_t wAir[4]={0.000124,0.755267,0.231781,0.012827};
     484             :    Float_t dAir = 1.20479E-3;
     485             :      
     486             : //*** Definition Of avaible T0 materials ***
     487           0 :    AliMaterial(0, "T0 Steel$", 55.850,26.,7.87,1.76,999);
     488           0 :    AliMaterial(1, "T0 Vacuum$", 1.e-16,1.e-16,1.e-16,1.e16,999);
     489           0 :    AliMixture(2, "T0 Air$", aAir, zAir, dAir,4,wAir);
     490             : 
     491           0 :    AliMaterial(10, "CarbonPlastic$", 12.01, 6.0, 2.26, 18.8,999); 
     492           0 :    AliMaterial(11, "Aliminium$", 26.98, 13.0, 2.7, 8.9,999); 
     493             : 
     494           0 :    AliMixture( 3, "Al2O3   $", aal2o3, zal2o3, denscer, -2, wal2o3);
     495           0 :    AliMixture( 4, "PMT glass   $",aglass,zglass,dglass,-2,wglass);
     496           0 :    TString namate;
     497           0 :    TVirtualMC::GetMC()->GetMaterial((*fIdmate)[3], namate, a, z, d, radl, absl, par);
     498           0 :    acer[0]=a;
     499           0 :    zcer[0]=z;
     500           0 :    TVirtualMC::GetMC()->GetMaterial((*fIdmate)[4], namate, a, z, d, radl, absl, par);
     501           0 :    acer[1]=a;
     502           0 :    zcer[1]=z;
     503             :    
     504           0 :    AliMixture( 9, "Ceramic    $", acer, zcer, denscer, 2, wcer);
     505           0 :    AliMixture( 5, "Scintillator$",ascin,zscin,denscin,-2,wscin);
     506           0 :    AliMixture( 6, "Brass    $", abrass, zbrass, denbrass, 2, wbrass);
     507             :    
     508           0 :    AliMixture( 7, "Ribber $",aribber,zribber,denribber,-3,wribber);
     509           0 :    AliMixture( 8, "Lucite$",alucite,zlucite,denlucite,-3,wlucite);
     510           0 :    AliMixture( 9, "Penoplast$",asupport,zsupport,densupport,-2,wsupport);
     511             :  
     512             :    
     513           0 :    AliMedium(1, "T0 Air$", 2, 0, isxfld, sxmgmx, 10., .1, 1., .003, .003);
     514           0 :    AliMedium(2, "Scintillator$", 5, 1, isxfld, sxmgmx, 10., .01, 1., .003, .003);
     515           0 :    AliMedium(3, "Vacuum$", 1, 0, isxfld, sxmgmx, 10., .01, .1, .003, .003);
     516           0 :    AliMedium(4, "Ceramic$", 9, 0, isxfld, sxmgmx, 10., .01, .1, .003, .003);
     517           0 :    AliMedium(6, "Glass$", 4, 1, isxfld, sxmgmx, 10., .01, .1, .003, .003);
     518           0 :    AliMedium(8, "Steel$", 0, 0, isxfld, sxmgmx, 1., .001, 1., .001, .001);
     519           0 :    AliMedium(9, "Ribber  $", 7, 0, isxfld, sxmgmx, 10., .01, .1, .003, .003);
     520           0 :    AliMedium(11, "Brass  $", 6, 0, isxfld, sxmgmx, 10., .01, .1, .003, .003);
     521           0 :    AliMedium(12, "Lucite$", 8, 1, isxfld, sxmgmx, 10., .01, 1., .003, .003);  
     522           0 :    AliMedium(13, "CarbonPlastic$", 10, 0, isxfld, sxmgmx, 10., .01, 1., .003, .003);  
     523           0 :    AliMedium(14, "PenoPlast$", 9, 0, isxfld, sxmgmx, 10., .01, 1., .003, .003);  
     524           0 :    AliMedium(15, "Aluminium$", 11, 0, isxfld, sxmgmx, 10., .01, 1., .003, .003);  
     525             : 
     526           0 :    AliDebugClass(1,": ++++++++++++++Medium set++++++++++");
     527             : 
     528           0 : }
     529             : 
     530             : //-------------------------------------------------------------------
     531             : void AliT0v0::Init()
     532             : {
     533             : // Initialises version 0 of the Forward Multiplicity Detector
     534             : //
     535             : //Int_t *idtmed  = gAlice->Idtmed();
     536           0 :   AliT0::Init();
     537           0 :   fIdSens1=TVirtualMC::GetMC()->VolId("0TOP");
     538           0 :   AliDebug(1,Form("%s: *** T0 version 0 initialized ***\n",ClassName()));
     539             :   
     540           0 : }
     541             : 
     542             : //-------------------------------------------------------------------
     543             : 
     544             : void AliT0v0::StepManager()
     545             : {
     546             :   //
     547             :   // Called for every step in the T0 Detector
     548             :   // See AliT0v1
     549             : 
     550           0 : }
     551             : //---------------------------------------------------------------------
     552             : 
     553             : 
     554             : 
     555             : 
     556             : 
     557             : 
     558             : 
     559             : 
     560             : 
     561             : 

Generated by: LCOV version 1.11