/************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * * Author: The ALICE Off-line Project. * * Contributors are mentioned in the code where appropriate. * * * * Permission to use, copy, modify and distribute this software and its * * documentation strictly for non-commercial purposes is hereby granted * * without fee, provided that the above copyright notice appears in all * * copies and that both the copyright notice and this permission notice * * appear in the supporting documentation. The authors make no claims * * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ ///////////////////////////////////////////////////////////////////// // // // START ( T-zero) detector version 1 // // //Begin Html /* */ //End Html // // // // ////////////////////////////////////////////////////////////////////// #include #include #include #include #include #include #include #include #include "AliLog.h" #include "AliMagF.h" #include "AliRun.h" #include "AliSTARThit.h" #include "AliSTARTv1.h" #include "AliMC.h" ClassImp(AliSTARTv1) //-------------------------------------------------------------------- AliSTARTv1::AliSTARTv1(const char *name, const char *title): AliSTART(name,title) { // // Standart constructor for START Detector version 0 // fIdSens1=0; fIshunt = 2; // setBufferSize(128000); } //------------------------------------------------------------------------- void AliSTARTv1::CreateGeometry() { // // Create the geometry of START Detector version 0 // // begin Html /* */ // Int_t *idtmed = fIdtmed->GetArray(); Int_t is; Int_t idrotm[999]; Float_t x,y,z; Float_t pstartR[18]={0., 360., 5., -76.5+0.00+69.7, 4.25, 10., -76.5+6.05+69.7, 4.5, 10., -76.5+8.05+69.7, 4.5, 10., -76.5+8.05+69.7, 5.1, 10., -62.9+0.00+69.7, 5.1, 10.}; Float_t pstart[3]={4.3, 12.,6.8}; Float_t pinstart[3]={0.,1.6,6.5}; Float_t ppmt[3]={0.,1.5,3.5}; Float_t preg[3]={0.,0.875,0.005}; //dobavil bogdanov Float_t pdivider[3]={0.,1.2,1.75}; Float_t pdiv2[3]={0.,1.2,1.25}; Float_t pdiv1[3]={0.6,1.2,0.5}; // Float_t ptop[3]={0.,1.3,1.5}; Float_t ptop[3]={0.,1.0,1.5}; Float_t pbot[3]={0.6,1.2,0.1}; Float_t pglass[3]={1.2,1.3,2.}; Float_t pcer[3]={0.9,1.1,0.09}; Float_t psteel[3]={0.9,1.1,0.01}; Float_t ppins[3]={0.6,1.2,0.014}; Float_t phole[3]={0.6,1.2,0.015}; Float_t pknob[3]={0.5,0.6,0.4}; Float_t pknob_vac[3]={0.,0.5,0.4}; Float_t pknob_bot[3]={0.,0.6,0.05}; Float_t pribber[3] = {0.,1.2,2.413/2.}; Float_t presist[3] = {0.,1.2,0.087/2.}; Float_t psupport1[3] = {4.51,4.6,4.0};//C kozhuh vnutri Float_t psupport2[3] = {9.4,9.5,4.0};// snaruzhi C Float_t psupport3[3] = {4.51,9.5,0.05};//kryshki C Float_t psupport5[3] = {1.44,1.5,6.5}; // stakanchik dlai feu C Float_t psupport6[3] = {0,1.5,0.05}; //kryshechka stakanchika Al Float_t psupport7[3] = {1.5,1.6,0.6}; //kolechko snaruzhu stakanchika Al // Mother Volume katushka dlia krepezha vokrug truby k Absorbru AliMatrix(idrotm[901], 90., 0., 90., 90., 180., 0.); Float_t ppcon[70]; ppcon[0] = 0; ppcon[1] = 360; ppcon[2] = 13; // 1: ppcon[3] = 14.1/2; ppcon[4] = 4.4; ppcon[5] = 4.5; // 2 ppcon[6] = ppcon[3]+1.; ppcon[7] = 4.4; ppcon[8] = 4.5; // 3 ppcon[9] = ppcon[6]; ppcon[10] = 4.4; ppcon[11] = 5.1; // 4 ppcon[12] = ppcon[9]+0.1; ppcon[13] = 4.4; ppcon[14] = 5.1; // 5 ppcon[15] = ppcon[12]; ppcon[16] = 4.9; ppcon[17] = 5.1; // 6 ppcon[18] = ppcon[15]+7.05; ppcon[19] = 4.9; ppcon[20] = 5.1; // 7 ppcon[21] = ppcon[18]; ppcon[22] = 4.9; ppcon[23] = 5.1; /// 8 ppcon[24] = ppcon[21]+0.01; ppcon[25] = 3.15; ppcon[26] = 3.25; /// 9 ppcon[27] = ppcon[24]; ppcon[28] = 3.15; ppcon[29] = 3.25; // 10 ppcon[30] = ppcon[27]+4.5; ppcon[31] = 3.15; ppcon[32] = 3.25; // 11 ppcon[33] = ppcon[30]; ppcon[34] = 3.15; ppcon[35] = 3.25; // 12 ppcon[36] = ppcon[33]; ppcon[37] = 3.15; ppcon[38] = 7.6; // 13 ppcon[39] = ppcon[33]+0.4; ppcon[40] = 3.15; ppcon[41] = 7.6; // 14 // ppcon[39] = ppcon[36]; // ppcon[40] = 3.15; // ppcon[41] = 7.6; gMC->Gsvolu("0SUP", "PCON", idtmed[kAir], ppcon,42); z=-69.7;//-14.1/2; gMC->Gspos("0SUP",1,"ALIC",0.,0.,z,idrotm[901],"ONLY"); Float_t zdetRight=69.7,zdetLeft=350; //------------------------------------------------------------------- // START volume //------------------------------------------------------------------- gMC->Gsvolu("0STR","PCON",idtmed[kAir],pstartR,18); gMC->Gsvolu("0STL","TUBE",idtmed[kAir],pstart,3); gMC->Gspos("0STR",1,"ALIC",0.,0.,-zdetRight-pstart[2],idrotm[901],"ONLY"); gMC->Gspos("0STL",1,"ALIC",0.,0.,zdetLeft+pstart[2],0,"ONLY"); //START interior gMC->Gsvolu("0INS","TUBE",idtmed[kAir],pinstart,3); gMC->Gsvolu("0PMT","TUBE",idtmed[kOpAir],ppmt,3); gMC->Gsvolu("0DIV","TUBE",idtmed[kVac],pdivider,3); gMC->Gsvolu("0SU1","TUBE",idtmed[kC],psupport1,3);//C kozhuh vnutri gMC->Gsvolu("0SU2","TUBE",idtmed[kC],psupport2,3);// snaruzhi C gMC->Gsvolu("0SU3","TUBE",idtmed[kC],psupport3,3);//kryshka perednaiai C gMC->Gsvolu("0SU4","TUBE",idtmed[kC],psupport3,3);//kryshka zadnaiai C // gMC->Gsvolu("0SU5","TUBE",idtmed[kAir],psupport4,3);// dyrki dlia feu v zadnej kryshke Air gMC->Gsvolu("0SU6","TUBE",idtmed[kC],psupport5,3);// stakanchik dlai feu C gMC->Gsvolu("0SU7","TUBE",idtmed[kAl],psupport6,3);//kryshechka stakanchika Al gMC->Gsvolu("0SU8","TUBE",idtmed[kAl],psupport7,3);//kolechko snaruzhu stakanchika Al // first ring: 12 units of Scintillator+PMT+divider Float_t theta = (180 / TMath::Pi()) * TMath::ATan(6.5 / zdetRight); Float_t angle = 2 * TMath::Pi() / 12; Float_t phi[3]; for (is=0; is<12; is++) { x = 6.5 * TMath::Sin(is * angle); y = 6.5 * TMath::Cos(is * angle); phi[0] = -30 * is; phi[1] = 90 - is * 30; phi[2] = 90 - is * 30; for (Int_t j = 0; j < 3; j++) if (phi[j] < 0) phi[j] += 360; AliMatrix (idrotm[902 + is], 90., phi[0], 90. + theta, phi[1], theta, phi[2]); z=-pstart[2]+pinstart[2]+0.2; gMC->Gspos ("0INS", is + 1, "0STR", x, y, z, idrotm[902 + is], "ONLY"); gMC->Gspos ("0INS", is + 13, "0STL", x, y, z, 0, "ONLY"); /* x = 9 * TMath::Sin(angle/2+is * angle); y = 9 * TMath::Cos(angle/2+is * angle); gMC->Gspos ("0INS", is + 25, "0STL", x, y, z, 0, "ONLY"); */ } x=0; y=0; z=-pinstart[2]+ppmt[2]+2.*psupport6[2]+0.1; gMC->Gspos("0PMT",1,"0INS",x,y,z,0,"ONLY"); z=z+pdivider[2]+ppmt[2]; gMC->Gspos("0DIV",1,"0INS",x,y,z,0,"ONLY"); // PMT // Entry window (glass) gMC->Gsvolu("0TOP","TUBE",idtmed[kOpGlass],ptop,3); //glass // gMC->Gsvolu("0TOP","TUBE",idtmed[12],ptop,3); //lucite z=-ppmt[2]+ptop[2]; gMC->Gspos("0TOP",1,"0PMT",0,0,z,0,"ONLY"); //Fotokatod gMC->Gsvolu ("0REG", "TUBE", idtmed[kOpGlass], preg, 3); //photocathode dobavil bogdanov(AliSTARTv2) z = -ppmt[2] + 2 * ptop[2] + preg[2]; //photocathode dobavil bogdanov gMC->Gspos ("0REG", 1, "0PMT", 0, 0, z, 0, "ONLY"); //photocathode dobavil bogdanov(AliSTARTv2) // Bottom glass gMC->Gsvolu("0BOT","TUBE",idtmed[kGlass],pbot,3); z=ppmt[2]-pbot[2]; if(fDebug) printf("%s: Z bottom %f\n",ClassName(),z); gMC->Gspos("0BOT",1,"0PMT",0,0,z,0,"ONLY"); // Side cylinder glass gMC->Gsvolu("0OUT","TUBE",idtmed[kGlass],pglass,3); z=ppmt[2]-pglass[2]; gMC->Gspos("0OUT",1,"0PMT",0,0,z,0,"ONLY"); //PMT electrodes support structure gMC->Gsvolu("0CER","TUBE",idtmed[kCer],pcer,3); gMC->Gsvolu("0STE","TUBE",idtmed[kSteel],psteel,3); z=-ppmt[2]+2*ptop[2]+0.3;; for (is=1; is<=15; is++) { z=z+psteel[2]+pcer[2]; gMC->Gspos("0CER",is,"0PMT",0,0,z,0,"ONLY"); z=z+psteel[2]+pcer[2]; gMC->Gspos("0STE",is,"0PMT",0,0,z,0,"ONLY"); } // Divider // Knob at the bottom of PMT baloon gMC->Gsvolu("0NB","TUBE",idtmed[6],pknob,3); z=-pdivider[2]+pknob[2]; gMC->Gspos("0NB",1,"0DIV",0,0,z,0,"ONLY"); gMC->Gsvolu("0KB","TUBE",idtmed[kGlass],pknob_bot,3); z=-pdivider[2]+2*pknob[2]+pknob_bot[2]; gMC->Gspos("0KB",1,"0DIV ",0,0,z,0,"ONLY"); gMC->Gsvolu("0VAC","TUBE",idtmed[kVac],pknob_vac,3); z=-pdivider[2]+pknob_vac[2]; gMC->Gspos("0VAC",1,"0DIV",0,0,z,0,"ONLY"); //Steel pins + pin holes gMC->Gsvolu("0PIN","TUBE",idtmed[kSteel],ppins,3); z=-pdivider[2]+ppins[2]; gMC->Gspos("0PIN",1,"0DIV",0,0,z,0,"ONLY"); gMC->Gsvolu("0HOL","TUBE",idtmed[kBrass],phole,3); z=-pdivider[2]+2*ppins[2]+phole[2]; gMC->Gspos("0HOL",1,"0DIV",0,0,z,0,"ONLY"); //Socket gMC->Gsvolu("0V1","TUBE",idtmed[kCer],pdiv1,3); z=-pdivider[2]+pdiv1[2]; gMC->Gspos("0V1",1,"0DIV",0,0,z,0,"ONLY"); //Resistors gMC->Gsvolu("0V2","TUBE",idtmed[kAir],pdiv2,3); z=pdivider[2]-pdiv2[2]; gMC->Gspos("0V2",1,"0DIV",0,0,z,0,"ONLY"); gMC->Gsvolu("0RS","TUBE",idtmed[kCer],presist,3); z=-pdiv2[2]+presist[2]; gMC->Gspos("0RS",1,"0V2",0,0,z,0,"ONLY"); gMC->Gsvolu("0RB","TUBE",idtmed[kRibber],pribber,3); z=pdiv2[2]-pribber[2]; gMC->Gspos("0RB",1,"0V2",0,0,z,0,"ONLY"); //Support left side /* z=-pstart[2]+psupport1[2]; gMC->Gspos("0SU1",2,"0STL",0,0,z,0,"ONLY"); //C kozhuh snaruzhi gMC->Gspos("0SU2",2,"0STL",0,0,z,0,"ONLY"); //C kozhuh vnutri z=-pstart[2]+psupport3[2]; gMC->Gspos("0SU3",2,"0STL",0,0,z,0,"ONLY"); //peredniaia kryshka z=-pstart[2]+2.*psupport1[2]; gMC->Gspos("0SU4",2,"0STL",0,0,z,0,"MANY"); //zadnaiai kryshka */ z=-pstart[2]+psupport1[2]+0.1; gMC->Gspos("0SU1",1,"0STR",0,0,z,0,"ONLY"); //C kozhuh snaruzhi gMC->Gspos("0SU2",1,"0STR",0,0,z,0,"ONLY"); //C kozhuh vnutri z=-pstart[2]+psupport3[2]+0.1; gMC->Gspos("0SU3",1,"0STR",0,0,z,0,"ONLY"); //peredniaia kryshka z=-pstart[2]+2.*psupport1[2]+0.1; gMC->Gspos("0SU4",1,"0STR",0,0,z,0,"MANY"); //zadnaiai kryshka gMC->Gspos("0SU6",1,"0INS",0,0,0,0,"ONLY");//C stakanchik dlia feu z=-pinstart[2]+psupport6[2]; gMC->Gspos("0SU7",1,"0INS",0,0,z,0,"ONLY"); //Al kryshechka z=pinstart[2]-psupport7[2]; gMC->Gspos("0SU8",1,"0INS",0,0,z,0,"ONLY"); //Al kolechko Float_t par[3]; par[0]=4.4; par[1]=4.5; par[2]=0.5; gMC->Gsvolu("0SC0","TUBE",idtmed[kC],par,3); z=ppcon[3]+par[2]; gMC->Gspos("0SC0",1,"0SUP",0,0,z,0,"ONLY"); z += par[2]; par[0]=4.4; par[1]=5.1; par[2]=0.05; gMC->Gsvolu("0SC1","TUBE",idtmed[kC],par,3); z += par[2]; gMC->Gspos("0SC1",1,"0SUP",0,0,z,0,"ONLY"); z=z+par[2]; par[0]=4.9; par[1]=5.0; par[2]=6.9/2; gMC->Gsvolu("0SC2","TUBE",idtmed[kC],par,3); z += par[2]; gMC->Gspos("0SC2",1,"0SUP",0,0,z,0,"ONLY"); z += par[2]; /* Float_t parC[5]; parC[0]=0.25; parC[1]=5.1; parC[2]=5.2; parC[3]=5.5; parC[4]=5.6; gMC->Gsvolu("0SC3","CONE",idtmed[kC],parC,5); z += parC[0]; gMC->Gspos("0SC3",1,"0SUP",0,0,z,0,"ONLY"); z += parC[0]; par[0]=5.5; par[1]=5.6; par[2]=1.2/2; gMC->Gsvolu("0SC4","TUBE",idtmed[kC],par,3); z += par[2]; gMC->Gspos("0SC4",1,"0SUP",0,0,z,0,"ONLY"); par[0]=5.1; par[1]=5.5; par[2]=1.2/2; gMC->Gsvolu("0SA0","TUBE",idtmed[kAl],par,3); gMC->Gspos("0SA0",1,"0SUP",0,0,z,0,"ONLY"); //gvozdi dlia skruchivaniia Al i C parts par[0]=5.75; par[1]=5.78; gMC->Gsvolu("0SN1","TUBE",idtmed[kSteel],par,3); gMC->Gspos("0SN1",1,"0SUP",0,0,z,0,"ONLY"); z += par[2]; */ par[0]=3.15; par[1]=4.9; par[2]=0.1/2; gMC->Gsvolu("0SA1","TUBE",idtmed[kAl],par,3); z += par[2]; gMC->Gspos("0SA1",1,"0SUP",0,0,z,0,"ONLY"); z=z+par[2]; par[0]=3.15; par[1]=3.16; par[2]=4.5/2; gMC->Gsvolu("0SA2","TUBE",idtmed[kAl],par,3); z += par[2]; gMC->Gspos("0SA2",1,"0SUP",0,0,z,0,"ONLY"); z=z+par[2]; par[0]=3.16; // eta chast' prikruchena k absorberu par[1]=7.5; par[2]=0.2; gMC->Gsvolu("0SA3","TUBE",idtmed[kAl],par,3); z += par[2]; gMC->Gspos("0SA3",1,"0SUP",0,0,z,0,"ONLY"); par[0]=3.16; // gvozdi eta chast' prikruchena k absorberu par[1]=7.5; par[2]=0.01; gMC->Gsvolu("0SN2","TUBE",idtmed[kSteel],par,3); gMC->Gspos("0SN2",1,"0SUP",0,0,z,0,"ONLY"); } //------------------------------------------------------------------------ void AliSTARTv1::CreateMaterials() { Int_t isxfld = gAlice->Field()->Integ(); Float_t sxmgmx = gAlice->Field()->Max(); Float_t a,z,d,radl,absl,buf[1]; Int_t nbuf; Int_t *idtmed = fIdtmed->GetArray(); // AIR Float_t aAir[4]={12.0107,14.0067,15.9994,39.948}; Float_t zAir[4]={6.,7.,8.,18.}; Float_t wAir[4]={0.000124,0.755267,0.231781,0.012827}; Float_t dAir = 1.20479E-3; // Scintillator CH Float_t ascin[2]={1.01,12.01}; Float_t zscin[2]={1,6}; Float_t wscin[2]={1,1}; Float_t denscin=1.03; //Lucite C(CH3)CO2CH3 Float_t alucite[3]={1.01,12.01,15.999}; Float_t zlucite[3]={1,6,8}; Float_t wlucite[3]={8,5,2}; Float_t denlucite=1.16; // PMT glass SiO2 Float_t aglass[2]={28.0855,15.9994}; Float_t zglass[2]={14.,8.}; Float_t wglass[2]={1.,2.}; Float_t dglass=2.65; // Ceramic 97.2% Al2O3 , 2.8% SiO2 Float_t acer[2],zcer[2],wcer[2]={0.972,0.028}; Float_t aCeramic[2] = { 26.981539,15.9994 }; Float_t zCeramic[2] = { 13.,8. }; Float_t wCeramic[2] = { 2.,3. }; Float_t denscer = 3.6; // Brass 80% Cu, 20% Zn Float_t abrass[2] = {63.546,65.39}; Float_t zbrass[2] = {29,30}; Float_t wbrass[2] = {0.8,0.2}; Float_t denbrass=8.96; //Ribber C6H12S Float_t aribber[3] = {12.,1.,32.}; Float_t zribber[3] = {6.,1.,16.}; Float_t wribber[3] = {6.,12.,1.}; Float_t denribber=0.8; // Support inside Float_t asupport[2] = {12.,1.}; Float_t zsupport[2] = {6.,1.}; Float_t wsupport[2] = {1.,1.}; Float_t densupport=0.1; //*** Definition Of avaible START materials *** AliMaterial(0, "START Steel$", 55.850,26.,7.87,1.76,999); AliMaterial(1, "START Vacuum$", 1.e-16,1.e-16,1.e-16,1.e16,999); AliMixture(2, "START Air$", aAir, zAir, dAir,4,wAir); AliMaterial(10, "CarbonPlastic$", 12.01, 6.0, 2.26, 18.8,999); AliMaterial(11, "Aliminium$", 26.98, 13.0, 2.7, 8.9,999); AliMixture( 3, "Ceramic $",aCeramic, zCeramic, denscer, -2, wCeramic); AliMixture( 4, "PMT glass $",aglass,zglass,dglass,-2,wglass); char namate[21]=""; gMC->Gfmate((*fIdmate)[3], namate, a, z, d, radl, absl, buf, nbuf); acer[0]=a; zcer[0]=z; gMC->Gfmate((*fIdmate)[4], namate, a, z, d, radl, absl, buf, nbuf); acer[1]=a; zcer[1]=z; AliMixture( 9, "Ceramic $", acer, zcer, denscer, 2, wcer); AliMixture( 5, "Scintillator$",ascin,zscin,denscin,-2,wscin); AliMixture( 6, "Brass $", abrass, zbrass, denbrass, 2, wbrass); AliMixture( 7, "Ribber $",aribber,zribber,denribber,-3,wribber); AliMixture( 8, "Lucite$",alucite,zlucite,denlucite,-3,wlucite); AliMixture( 9, "Penoplast$",asupport,zsupport,densupport,-2,wsupport); AliMedium(1, "START Air$", 2, 0, isxfld, sxmgmx, 10., .1, 1., .003, .003); AliMedium(2, "Scintillator$", 5, 1, isxfld, sxmgmx, 10., .01, 1., .003, .003); AliMedium(3, "Vacuum$", 1, 0, isxfld, sxmgmx, 10., .01, .1, .003, .003); AliMedium(4, "Ceramic$", 9, 0, isxfld, sxmgmx, 10., .01, .1, .003, .003); AliMedium(6, "Glass$", 4, 1, isxfld, sxmgmx, 10., .01, .1, .003, .003); AliMedium(8, "Steel$", 0, 0, isxfld, sxmgmx, 1., .001, 1., .001, .001); AliMedium(9, "Ribber $", 7, 0, isxfld, sxmgmx, 10., .01, .1, .003, .003); AliMedium(11, "Brass $", 6, 0, isxfld, sxmgmx, 10., .01, .1, .003, .003); AliMedium(12, "Lucite$", 8, 1, isxfld, sxmgmx, 10., .01, 1., .003, .003); AliMedium(13, "CarbonPlastic$", 10, 0, isxfld, sxmgmx, 10., .01, 1., .003, .003); AliMedium(14, "PenoPlast$", 9, 0, isxfld, sxmgmx, 10., .01, 1., .003, .003); AliMedium(15, "Aluminium$", 11, 0, isxfld, sxmgmx, 10., .01, 1., .003, .003); AliMedium(16, "OpticalGlass$", 4, 1, isxfld, sxmgmx, 10., .01, .1, .003, .003); AliMedium(17, "START OpAir$", 2, 0, isxfld, sxmgmx, 10., .1, 1., .003, .003); // Definition Cherenkov parameters int i; const Int_t kNbins=30; Float_t aPckov[kNbins]; Float_t aRindexSiO2[kNbins], rindexAir[kNbins], efficAll[kNbins], absorAir[kNbins]; Float_t aAbsSiO2[kNbins]={//New values from A.DiMauro 28.10.03 total 31 34.4338, 30.5424, 30.2584, 31.4928, 31.7868, 17.8397, 9.3410, 6.4492, 6.1128, 5.8128, 5.5589, 5.2877, 5.0162, 4.7999, 4.5734, 4.2135, 3.7471, 2.6033, 1.5223, 0.9658, 0.4242, 0.2500, 0.1426, 0.0863, 0.0793, 0.0724, 0.0655, 0.0587, 0.0001, 0.0001}; // Float_t aAbsSiO2[kNbins]={30*2000.}; for(i=0;iSetCerenkov (idtmed[kOpGlass], kNbins, aPckov, aAbsSiO2, efficAll, aRindexSiO2 ); gMC->SetCerenkov (idtmed[kOpAir], kNbins , aPckov, absorAir, efficAll, rindexAir); if(fDebug) cout<Gsatt("ALIC","SEEN",0); // //Set volumes visible // gMC->Gsatt("0STR","SEEN",0); // gMC->Gsatt("0INS","SEEN",0); // gMC->Gsatt("0PMT","SEEN",1); // gMC->Gsatt("0DIV","SEEN",1); // gMC->Gdopt("hide","off"); gMC->Gdopt("shad","on"); gMC->SetClipBox("."); gMC->SetClipBox("*",0,1000,-1000,1000,-1000,1000); gMC->DefaultRange(); gMC->Gdraw("alic",90,0,0,-35,9.5,.6,0.6); //gMC->Gdraw("alic",0,0,0,10,9.5,.8,0.8); //other side view gMC->Gdhead(1111,"T-Zero detector"); gMC->Gdopt("hide","off"); } //------------------------------------------------------------------- void AliSTARTv1::Init() { // Initialises version 0 of the Forward Multiplicity Detector // //Int_t *idtmed = gAlice->Idtmed(); AliSTART::Init(); fIdSens1=gMC->VolId("0REG"); AliDebug(1,Form("%s: *** START version 1 initialized ***\n",ClassName())); } //------------------------------------------------------------------- void AliSTARTv1::StepManager() { // // Called for every step in the START Detector // Int_t id,copy,copy1; static Float_t hits[6]; static Int_t vol[2]; TLorentzVector pos; TClonesArray &lhits = *fHits; if(!gMC->IsTrackAlive()) return; // particle has disappeared // If particles is photon then ... if (gMC->TrackPid() == 50000050) { id=gMC->CurrentVolID(copy); // Check the sensetive volume if(id==fIdSens1 ) { if(gMC->IsTrackEntering()) { gMC->CurrentVolOffID(2,copy); vol[1]=copy; gMC->CurrentVolOffID(3,copy1); vol[0]=copy1; gMC->TrackPosition(pos); hits[0] = pos[0]; hits[1] = pos[1]; hits[2] = pos[2]; if(pos[2]<0) vol[0]=2; if(pos[2]>=0) vol[0]=1; Float_t etot=gMC->Etot(); hits[3]=etot; Int_t iPart= gMC->TrackPid(); Int_t partID=gMC->IdFromPDG(iPart); hits[4]=partID; // if (partID!=50) cout<TrackTime(); hits[5]=ttime*1e9; } if(gMC->IsTrackExiting()) new(lhits[fNhits++]) AliSTARThit(fIshunt,gAlice->GetMCApp()->GetCurrentTrackNumber(),vol,hits); } } //--------------------------------------------------------------------- }