X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=ZDC%2FAliZDCv3.cxx;h=949d02b6af92fe6777b88e1a9a88db2d7b58bef2;hp=7e4ff2b40de242f7582ff0b725762be34b74a84e;hb=e946305455fc7d733d123a61a2953d761a04466d;hpb=796c8b58bfbeb3f9a914589389287f448ab172ff diff --git a/ZDC/AliZDCv3.cxx b/ZDC/AliZDCv3.cxx index 7e4ff2b40de..949d02b6af9 100644 --- a/ZDC/AliZDCv3.cxx +++ b/ZDC/AliZDCv3.cxx @@ -32,8 +32,10 @@ #include #include #include +#include #include #include +#include #include #include @@ -81,14 +83,26 @@ AliZDCv3::AliZDCv3() : fpcVCollA(0), fpDetectedA(0), fnDetectedA(0), - fVCollAperture(7./2.), - fVCollCentreY(0.), + fVCollSideCAperture(7./2.), + fVCollSideCApertureNeg(7./2.), + fVCollSideCCentreY(0.), + fVCollSideAAperture(7./2.), + fVCollSideAApertureNeg(7./2.), + fVCollSideACentreY(0.), + fTCDDAperturePos(2.0), + fTCDDApertureNeg(2.2), + fTDIAperturePos(5.5), + fTDIApertureNeg(5.5), fLumiLength(15.) { // // Default constructor for Zero Degree Calorimeter // - + for(Int_t i=0; i<3; i++){ + fDimZN[i] = fDimZP[i] = 0.; + fPosZNC[i] = fPosZNA[i] = fPosZPC[i]= fPosZPA[i] = fPosZEM[i] = 0.; + fFibZN[i] = fFibZP[i] = 0.; + } } //_____________________________________________________________________________ @@ -120,8 +134,16 @@ AliZDCv3::AliZDCv3(const char *name, const char *title) : fpcVCollA(0), fpDetectedA(0), fnDetectedA(0), - fVCollAperture(7./2.), - fVCollCentreY(0.), + fVCollSideCAperture(7./2.), + fVCollSideCApertureNeg(7./2.), + fVCollSideCCentreY(0.), + fVCollSideAAperture(7./2.), + fVCollSideAApertureNeg(7./2.), + fVCollSideACentreY(0.), + fTCDDAperturePos(2.0), + fTCDDApertureNeg(2.2), + fTDIAperturePos(5.5), + fTDIApertureNeg(5.5), fLumiLength(15.) { // @@ -307,28 +329,39 @@ void AliZDCv3::CreateBeamLine() tubpar[0] = 18.6/2.; tubpar[1] = 7.6/2.; tubpar[2] = totLength1/2.; - gMC->Gsvolu("QE01", "ELTU", idtmed[7], tubpar, 3); +// gMC->Gsvolu("QE01", "ELTU", idtmed[7], tubpar, 3); + // temporary replace with a scaled tube (AG) + TGeoTube *tubeQE01 = new TGeoTube(0.,tubpar[0],tubpar[2]); + TGeoScale *scaleQE01 = new TGeoScale(1., tubpar[1]/tubpar[0], 1.); + TGeoScaledShape *sshapeQE01 = new TGeoScaledShape(tubeQE01, scaleQE01); + new TGeoVolume("QE01", sshapeQE01, gGeoManager->GetMedium(idtmed[7])); tubpar[0] = 18.0/2.; tubpar[1] = 7.0/2.; tubpar[2] = totLength1/2.; - gMC->Gsvolu("QE02", "ELTU", idtmed[10], tubpar, 3); +// gMC->Gsvolu("QE02", "ELTU", idtmed[10], tubpar, 3); + // temporary replace with a scaled tube (AG) + TGeoTube *tubeQE02 = new TGeoTube(0.,tubpar[0],tubpar[2]); + TGeoScale *scaleQE02 = new TGeoScale(1., tubpar[1]/tubpar[0], 1.); + TGeoScaledShape *sshapeQE02 = new TGeoScaledShape(tubeQE02, scaleQE02); + new TGeoVolume("QE02", sshapeQE02, gGeoManager->GetMedium(idtmed[10])); + gMC->Gspos("QE01", 1, "ZDCC", 0., 0., -tubpar[2]-zd1, 0, "ONLY"); gMC->Gspos("QE02", 1, "QE01", 0., 0., 0., 0, "ONLY"); // Ch.debug //printf(" QE01 ELTU from z = %1.2f to z= %1.2f\n",-zd1,-2*tubpar[2]-zd1); // Vertical collimator jaws (defined ONLY if fVCollAperture<3.5!) - if(fVCollAperture<3.5){ + if(fVCollSideCAperture<3.5){ boxpar[0] = 5.4/2.; - boxpar[1] = (3.5-fVCollAperture-fVCollCentreY-0.7)/2.; + boxpar[1] = (3.5-fVCollSideCAperture-fVCollSideCCentreY-0.7)/2.; if(boxpar[1]<0.) boxpar[1]=0.; boxpar[2] = 124.4/2.; - printf("\n AliZDCv3 -> Setting VCollimator jaw: aperture %1.2f center %1.2f mod.thickness %1.3f\n\n", - 2*fVCollAperture,fVCollCentreY,2*boxpar[1]); + printf(" AliZDCv3 -> sideC VCollimator jaws: apertures +%1.2f/-%1.2f center %1.2f [cm]\n", + fVCollSideCAperture, fVCollSideCApertureNeg,fVCollSideCCentreY); gMC->Gsvolu("QCVC" , "BOX ", idtmed[13], boxpar, 3); - gMC->Gspos("QCVC", 1, "QE02", -boxpar[0], fVCollAperture+fVCollCentreY+boxpar[1], -totLength1/2.+160.8+78.+148./2., 0, "ONLY"); - gMC->Gspos("QCVC", 2, "QE02", -boxpar[0], -fVCollAperture+fVCollCentreY-boxpar[1], -totLength1/2.+160.8+78.+148./2., 0, "ONLY"); + gMC->Gspos("QCVC", 1, "QE02", -boxpar[0], fVCollSideCAperture+fVCollSideCCentreY+boxpar[1], -totLength1/2.+160.8+78.+148./2., 0, "ONLY"); + gMC->Gspos("QCVC", 2, "QE02", -boxpar[0], -fVCollSideCApertureNeg+fVCollSideCCentreY-boxpar[1], -totLength1/2.+160.8+78.+148./2., 0, "ONLY"); } zd1 += tubpar[2] * 2.; @@ -623,10 +656,10 @@ void AliZDCv3::CreateBeamLine() // transition x2zdc to recombination chamber : skewed cone conpar[0] = (10.-0.2-offset)/2.; - conpar[1] = 5.4/2.; - conpar[2] = 5.8/2.; - conpar[3] = 6.3/2.; - conpar[4] = 7.0/2.; + conpar[1] = 6.3/2.; + conpar[2] = 7.0/2.; + conpar[3] = 5.4/2.; + conpar[4] = 5.8/2.; gMC->Gsvolu("QC10", "CONE", idtmed[7], conpar, 5); gMC->Gspos("QC10", 1, "ZDCC", -7.9-0.175, 0., -conpar[0]-0.1-zd1, irotpipe1, "ONLY"); gMC->Gspos("QC10", 2, "ZDCC", 7.9+0.175, 0., -conpar[0]-0.1-zd1, irotpipe2, "ONLY"); @@ -911,8 +944,10 @@ void AliZDCv3::CreateBeamLine() gMC->Gspos("Q11T", 1, "Q10T", 0., -1.1, 0., 0, "ONLY"); // positioning TCDD elements in ZDCA, (inside TCDD volume) - gMC->Gspos("Q08T", 1, "ZDCA", 0., 2., -100.+zd2, 0, "ONLY"); - gMC->Gspos("Q10T", 1, "ZDCA", 0., -2., -100.+zd2, 0, "ONLY"); + gMC->Gspos("Q08T", 1, "ZDCA", 0., fTCDDAperturePos, -100.+zd2, 0, "ONLY"); + gMC->Gspos("Q10T", 1, "ZDCA", 0., -fTCDDApertureNeg, -100.+zd2, 0, "ONLY"); + printf(" AliZDCv3 -> TCDD apertures +%1.2f/-%1.2f cm\n", + fTCDDAperturePos, fTCDDApertureNeg); // RF screen boxpar[0] = 0.2/2.; @@ -932,26 +967,38 @@ void AliZDCv3::CreateBeamLine() tubpar[0] = 18.4/2.; tubpar[1] = 7.4/2.; tubpar[2] = 313.3/2.; - gMC->Gsvolu("QA06", "ELTU", idtmed[7], tubpar, 3); +// gMC->Gsvolu("QA06", "ELTU", idtmed[7], tubpar, 3); + // temporary replace with a scaled tube (AG) + TGeoTube *tubeQA06 = new TGeoTube(0.,tubpar[0],tubpar[2]); + TGeoScale *scaleQA06 = new TGeoScale(1., tubpar[1]/tubpar[0], 1.); + TGeoScaledShape *sshapeQA06 = new TGeoScaledShape(tubeQA06, scaleQA06); + new TGeoVolume("QA06", sshapeQA06, gGeoManager->GetMedium(idtmed[7])); //printf(" QA06 TUBE from z = %1.2f to z= %1.2f\n",zd2,2*tubpar[2]+zd2); tubpar[0] = 18.0/2.; tubpar[1] = 7.0/2.; tubpar[2] = 313.3/2.; - gMC->Gsvolu("QA07", "ELTU", idtmed[10], tubpar, 3); +// gMC->Gsvolu("QA07", "ELTU", idtmed[10], tubpar, 3); + // temporary replace with a scaled tube (AG) + TGeoTube *tubeQA07 = new TGeoTube(0.,tubpar[0],tubpar[2]); + TGeoScale *scaleQA07 = new TGeoScale(1., tubpar[1]/tubpar[0], 1.); + TGeoScaledShape *sshapeQA07 = new TGeoScaledShape(tubeQA07, scaleQA07); + new TGeoVolume("QA07", sshapeQA07, gGeoManager->GetMedium(idtmed[10])); //printf(" QA07 TUBE from z = %1.2f to z= %1.2f\n",zd2,2*tubpar[2]+zd2); gMC->Gspos("QA06", 1, "ZDCA", 0., 0., tubpar[2]+zd2, 0, "ONLY"); gMC->Gspos("QA07", 1, "QA06", 0., 0., 0., 0, "ONLY"); // Vertical collimator jaws (defined ONLY if fVCollAperture<3.5!) - if(fVCollAperture<3.5){ + if(fVCollSideAAperture<3.5){ boxpar[0] = 5.4/2.; - boxpar[1] = (3.5-fVCollAperture-fVCollCentreY-0.7)/2.; + boxpar[1] = (3.5-fVCollSideAAperture-fVCollSideACentreY-0.7)/2.; if(boxpar[1]<0.) boxpar[1]=0.; boxpar[2] = 124.4/2.; gMC->Gsvolu("QCVA" , "BOX ", idtmed[13], boxpar, 3); - gMC->Gspos("QCVA", 1, "QA07", -boxpar[0], fVCollAperture+fVCollCentreY+boxpar[1], -313.3/2.+78.+148./2., 0, "ONLY"); - gMC->Gspos("QCVA", 2, "QA07", -boxpar[0], -fVCollAperture+fVCollCentreY-boxpar[1], -313.3/2.+78.+148./2., 0, "ONLY"); + gMC->Gspos("QCVA", 1, "QA07", -boxpar[0], fVCollSideAAperture+fVCollSideACentreY+boxpar[1], -313.3/2.+78.+148./2., 0, "ONLY"); + gMC->Gspos("QCVA", 2, "QA07", -boxpar[0], -fVCollSideAApertureNeg+fVCollSideACentreY-boxpar[1], -313.3/2.+78.+148./2., 0, "ONLY"); + printf(" AliZDCv3 -> sideA VCollimator jaws: apertures +%1.2f/-%1.2f center %1.2f [cm]\n", + fVCollSideAAperture, fVCollSideAApertureNeg,fVCollSideACentreY); } zd2 += 2.*tubpar[2]; @@ -1015,20 +1062,22 @@ void AliZDCv3::CreateBeamLine() boxpar[1] = 9.0/2.; boxpar[2] = 540.0/2.; gMC->Gsvolu("QTD1", "BOX ", idtmed[7], boxpar, 3); - gMC->Gspos("QTD1", 1, "Q13TM", -3.8, 10.5, 0., 0, "ONLY"); + gMC->Gspos("QTD1", 1, "Q13TM", -3.8, boxpar[1]+fTDIAperturePos, 0., 0, "ONLY"); boxpar[0] = 11.0/2.; boxpar[1] = 9.0/2.; boxpar[2] = 540.0/2.; gMC->Gsvolu("QTD2", "BOX ", idtmed[7], boxpar, 3); - gMC->Gspos("QTD2", 1, "Q13TM", -3.8, -10.5, 0., 0, "ONLY"); + gMC->Gspos("QTD2", 1, "Q13TM", -3.8, -boxpar[1]-fTDIApertureNeg, 0., 0, "ONLY"); boxpar[0] = 5.1/2.; boxpar[1] = 0.2/2.; boxpar[2] = 540.0/2.; gMC->Gsvolu("QTD3", "BOX ", idtmed[7], boxpar, 3); - gMC->Gspos("QTD3", 1, "Q13TM", -3.8+5.5+boxpar[0], 6.1, 0., 0, "ONLY"); - gMC->Gspos("QTD3", 2, "Q13TM", -3.8+5.5+boxpar[0], -6.1, 0., 0, "ONLY"); - gMC->Gspos("QTD3", 3, "Q13TM", -3.8-5.5-boxpar[0], 6.1, 0., 0, "ONLY"); - gMC->Gspos("QTD3", 4, "Q13TM", -3.8-5.5-boxpar[0], -6.1, 0., 0, "ONLY"); + gMC->Gspos("QTD3", 1, "Q13TM", -3.8+5.5+boxpar[0], fTDIAperturePos, 0., 0, "ONLY"); + gMC->Gspos("QTD3", 2, "Q13TM", -3.8+5.5+boxpar[0], -fTDIApertureNeg, 0., 0, "ONLY"); + gMC->Gspos("QTD3", 3, "Q13TM", -3.8-5.5-boxpar[0], fTDIAperturePos, 0., 0, "ONLY"); + gMC->Gspos("QTD3", 4, "Q13TM", -3.8-5.5-boxpar[0], -fTDIApertureNeg, 0., 0, "ONLY"); + printf(" AliZDCv3 -> TDI apertures +%1.2f/-%1.2f cm\n\n", + fTDIAperturePos, fTDIApertureNeg); // tubspar[0] = 12.0/2.; tubspar[1] = 12.4/2.; @@ -1876,105 +1925,6 @@ void AliZDCv3::CreateZDC() } -//_____________________________________________________________________________ -void AliZDCv3::DrawModule() const -{ - // - // Draw a shaded view of the Zero Degree Calorimeter version 1 - // - - // Set everything unseen - gMC->Gsatt("*", "seen", -1); - // - // Set ALIC mother transparent - gMC->Gsatt("ALIC","SEEN",0); - // - // Set the volumes visible - gMC->Gsatt("ZDCC","SEEN",0); - gMC->Gsatt("QT01","SEEN",1); - gMC->Gsatt("QT02","SEEN",1); - gMC->Gsatt("QT03","SEEN",1); - gMC->Gsatt("QT04","SEEN",1); - gMC->Gsatt("QT05","SEEN",1); - gMC->Gsatt("QT06","SEEN",1); - gMC->Gsatt("QT07","SEEN",1); - gMC->Gsatt("QT08","SEEN",1); - gMC->Gsatt("QT09","SEEN",1); - gMC->Gsatt("QT10","SEEN",1); - gMC->Gsatt("QT11","SEEN",1); - gMC->Gsatt("QT12","SEEN",1); - gMC->Gsatt("QT13","SEEN",1); - gMC->Gsatt("QC01","SEEN",1); - gMC->Gsatt("QC02","SEEN",1); - gMC->Gsatt("QC03","SEEN",1); - gMC->Gsatt("QC04","SEEN",1); - gMC->Gsatt("QC05","SEEN",1); - gMC->Gsatt("QC06","SEEN",1); - gMC->Gsatt("QC07","SEEN",1); - gMC->Gsatt("QC08","SEEN",1); - gMC->Gsatt("QC09","SEEN",1); - gMC->Gsatt("QC10","SEEN",1); - gMC->Gsatt("MQXL","SEEN",1); - gMC->Gsatt("YMQL","SEEN",1); - gMC->Gsatt("MQX ","SEEN",1); - gMC->Gsatt("YMQ ","SEEN",1); - gMC->Gsatt("ZQYX","SEEN",1); - gMC->Gsatt("MD1 ","SEEN",1); - gMC->Gsatt("MD1V","SEEN",1); - gMC->Gsatt("YD1 ","SEEN",1); - gMC->Gsatt("MD2 ","SEEN",1); - gMC->Gsatt("YD2 ","SEEN",1); - gMC->Gsatt("ZNEU","SEEN",0); - gMC->Gsatt("ZNF1","SEEN",0); - gMC->Gsatt("ZNF2","SEEN",0); - gMC->Gsatt("ZNF3","SEEN",0); - gMC->Gsatt("ZNF4","SEEN",0); - gMC->Gsatt("ZNG1","SEEN",0); - gMC->Gsatt("ZNG2","SEEN",0); - gMC->Gsatt("ZNG3","SEEN",0); - gMC->Gsatt("ZNG4","SEEN",0); - gMC->Gsatt("ZNTX","SEEN",0); - gMC->Gsatt("ZN1 ","COLO",4); - gMC->Gsatt("ZN1 ","SEEN",1); - gMC->Gsatt("ZNSL","SEEN",0); - gMC->Gsatt("ZNST","SEEN",0); - gMC->Gsatt("ZPRO","SEEN",0); - gMC->Gsatt("ZPF1","SEEN",0); - gMC->Gsatt("ZPF2","SEEN",0); - gMC->Gsatt("ZPF3","SEEN",0); - gMC->Gsatt("ZPF4","SEEN",0); - gMC->Gsatt("ZPG1","SEEN",0); - gMC->Gsatt("ZPG2","SEEN",0); - gMC->Gsatt("ZPG3","SEEN",0); - gMC->Gsatt("ZPG4","SEEN",0); - gMC->Gsatt("ZPTX","SEEN",0); - gMC->Gsatt("ZP1 ","COLO",6); - gMC->Gsatt("ZP1 ","SEEN",1); - gMC->Gsatt("ZPSL","SEEN",0); - gMC->Gsatt("ZPST","SEEN",0); - gMC->Gsatt("ZEM ","COLO",7); - gMC->Gsatt("ZEM ","SEEN",1); - gMC->Gsatt("ZEMF","SEEN",0); - gMC->Gsatt("ZETR","SEEN",0); - gMC->Gsatt("ZEL0","SEEN",0); - gMC->Gsatt("ZEL1","SEEN",0); - gMC->Gsatt("ZEL2","SEEN",0); - gMC->Gsatt("ZEV0","SEEN",0); - gMC->Gsatt("ZEV1","SEEN",0); - gMC->Gsatt("ZES0","SEEN",0); - gMC->Gsatt("ZES1","SEEN",0); - // - gMC->Gdopt("hide", "on"); - gMC->Gdopt("shad", "on"); - gMC->Gsatt("*", "fill", 7); - gMC->SetClipBox("."); - gMC->SetClipBox("*", 0, 100, -100, 100, 12000, 16000); - gMC->DefaultRange(); - gMC->Gdraw("alic", 40, 30, 0, 488, 220, .07, .07); - gMC->Gdhead(1111, "Zero Degree Calorimeter Version 3"); - gMC->Gdman(18, 4, "MAN"); -} - //_____________________________________________________________________________ void AliZDCv3::CreateMaterials() { @@ -2082,6 +2032,7 @@ void AliZDCv3::CreateMaterials() Float_t stmin = 0.01; // Min. value 4 max. step (cm) Float_t stemax = 1.; // Max. step permitted (cm) Float_t tmaxfd = 0.; // Maximum angle due to field (degrees) + Float_t tmaxfdv = 0.1; // Maximum angle due to field (degrees) Float_t deemax = -1.; // Maximum fractional energy loss Float_t nofieldm = 0.; // Max. field value (no field) Float_t fieldm = 45.; // Max. field value (with field) @@ -2101,7 +2052,7 @@ void AliZDCv3::CreateMaterials() AliMedium(8, "ZIRONN",8, isvol, inofld, nofieldm, tmaxfd, stemax, deemax, epsil, stmin); AliMedium(9, "ZCOPL", 6, isvol, inofld, nofieldm, tmaxfd, stemax, deemax, epsil, stmin); AliMedium(10,"ZVOID",10, isvol, inofld, nofieldm, tmaxfd, stemax, deemax, epsil, stmin); - AliMedium(11,"ZVOIM",11, isvol, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin); + AliMedium(11,"ZVOIM",11, isvol, ifield, fieldm, tmaxfdv, stemax, deemax, epsil, stmin); AliMedium(12,"ZAIR", 12, isvolActive, inofld, nofieldm, tmaxfd, stemax, deemax, epsil, stmin); AliMedium(13,"ZTANT",13, isvolActive, inofld, nofieldm, tmaxfd, stemax, deemax, epsil, stmin); AliMedium(14, "ZIRONT", 7, isvol, inofld, nofieldm, tmaxfd, stemax, deemax, epsil, stmin); @@ -2146,109 +2097,6 @@ void AliZDCv3::Init() { InitTables(); Int_t *idtmed = fIdtmed->GetArray(); - Int_t i; - // Thresholds for showering in the ZDCs - i = 1; //Wa lloy - gMC->Gstpar(idtmed[i], "CUTGAM", .001); - gMC->Gstpar(idtmed[i], "CUTELE", .001); - gMC->Gstpar(idtmed[i], "CUTNEU", .01); - gMC->Gstpar(idtmed[i], "CUTHAD", .01); - i = 2; //brass - gMC->Gstpar(idtmed[i], "CUTGAM", .001); - gMC->Gstpar(idtmed[i], "CUTELE", .001); - gMC->Gstpar(idtmed[i], "CUTNEU", .01); - gMC->Gstpar(idtmed[i], "CUTHAD", .01); - i = 5; //lead - gMC->Gstpar(idtmed[i], "CUTGAM", .001); - gMC->Gstpar(idtmed[i], "CUTELE", .001); - gMC->Gstpar(idtmed[i], "CUTNEU", .01); - gMC->Gstpar(idtmed[i], "CUTHAD", .01); - - // Avoid too detailed showering in TDI - i = 6; //copper - gMC->Gstpar(idtmed[i], "CUTGAM", .1); - gMC->Gstpar(idtmed[i], "CUTELE", .1); - gMC->Gstpar(idtmed[i], "CUTNEU", 1.); - gMC->Gstpar(idtmed[i], "CUTHAD", 1.); - - // Thresholds for showering in the luminometer - i = 9; //copper - gMC->Gstpar(idtmed[i], "CUTGAM", .001); - gMC->Gstpar(idtmed[i], "CUTELE", .001); - gMC->Gstpar(idtmed[i], "CUTNEU", .01); - gMC->Gstpar(idtmed[i], "CUTHAD", .01); - - // Avoid too detailed showering along the beam line - i = 7; //iron with energy loss (ZIRON) - gMC->Gstpar(idtmed[i], "CUTGAM", .1); - gMC->Gstpar(idtmed[i], "CUTELE", .1); - gMC->Gstpar(idtmed[i], "CUTNEU", 1.); - gMC->Gstpar(idtmed[i], "CUTHAD", 1.); - - // Avoid too detailed showering along the beam line - i = 14; //iron with energy loss (ZIRONT) - gMC->Gstpar(idtmed[i], "CUTGAM", .001); - gMC->Gstpar(idtmed[i], "CUTELE", .001); - gMC->Gstpar(idtmed[i], "CUTNEU", .01); - gMC->Gstpar(idtmed[i], "CUTHAD", .01); - - // Avoid too detailed showering along the beam line - i = 8; //iron without energy loss (ZIRONN) - gMC->Gstpar(idtmed[i], "CUTGAM", .1); - gMC->Gstpar(idtmed[i], "CUTELE", .1); - gMC->Gstpar(idtmed[i], "CUTNEU", 1.); - gMC->Gstpar(idtmed[i], "CUTHAD", 1.); - - // Avoid too detailed showering along the beam line - i = 13; //collimator jaws (ZTANT) - gMC->Gstpar(idtmed[i], "CUTGAM", .1); - gMC->Gstpar(idtmed[i], "CUTELE", .1); - gMC->Gstpar(idtmed[i], "CUTNEU", 1.); - gMC->Gstpar(idtmed[i], "CUTHAD", 1.); - - // Avoid interaction in fibers (only energy loss allowed) - i = 3; //fibers (ZSI02) - gMC->Gstpar(idtmed[i], "DCAY", 0.); - gMC->Gstpar(idtmed[i], "MULS", 0.); - gMC->Gstpar(idtmed[i], "PFIS", 0.); - gMC->Gstpar(idtmed[i], "MUNU", 0.); - gMC->Gstpar(idtmed[i], "LOSS", 1.); - gMC->Gstpar(idtmed[i], "PHOT", 0.); - gMC->Gstpar(idtmed[i], "COMP", 0.); - gMC->Gstpar(idtmed[i], "PAIR", 0.); - gMC->Gstpar(idtmed[i], "BREM", 0.); - gMC->Gstpar(idtmed[i], "DRAY", 0.); - gMC->Gstpar(idtmed[i], "ANNI", 0.); - gMC->Gstpar(idtmed[i], "HADR", 0.); - i = 4; //fibers (ZQUAR) - gMC->Gstpar(idtmed[i], "DCAY", 0.); - gMC->Gstpar(idtmed[i], "MULS", 0.); - gMC->Gstpar(idtmed[i], "PFIS", 0.); - gMC->Gstpar(idtmed[i], "MUNU", 0.); - gMC->Gstpar(idtmed[i], "LOSS", 1.); - gMC->Gstpar(idtmed[i], "PHOT", 0.); - gMC->Gstpar(idtmed[i], "COMP", 0.); - gMC->Gstpar(idtmed[i], "PAIR", 0.); - gMC->Gstpar(idtmed[i], "BREM", 0.); - gMC->Gstpar(idtmed[i], "DRAY", 0.); - gMC->Gstpar(idtmed[i], "ANNI", 0.); - gMC->Gstpar(idtmed[i], "HADR", 0.); - - // Avoid interaction in void - i = 11; //void with field - gMC->Gstpar(idtmed[i], "DCAY", 0.); - gMC->Gstpar(idtmed[i], "MULS", 0.); - gMC->Gstpar(idtmed[i], "PFIS", 0.); - gMC->Gstpar(idtmed[i], "MUNU", 0.); - gMC->Gstpar(idtmed[i], "LOSS", 0.); - gMC->Gstpar(idtmed[i], "PHOT", 0.); - gMC->Gstpar(idtmed[i], "COMP", 0.); - gMC->Gstpar(idtmed[i], "PAIR", 0.); - gMC->Gstpar(idtmed[i], "BREM", 0.); - gMC->Gstpar(idtmed[i], "DRAY", 0.); - gMC->Gstpar(idtmed[i], "ANNI", 0.); - gMC->Gstpar(idtmed[i], "HADR", 0.); - // fMedSensZN = idtmed[1]; // Sensitive volume: ZN passive material fMedSensZP = idtmed[2]; // Sensitive volume: ZP passive material @@ -2270,89 +2118,132 @@ void AliZDCv3::InitTables() // Int_t k, j; - - char *lightfName1,*lightfName2,*lightfName3,*lightfName4, - *lightfName5,*lightfName6,*lightfName7,*lightfName8; - FILE *fp1, *fp2, *fp3, *fp4, *fp5, *fp6, *fp7, *fp8; + int read=1; // --- Reading light tables for ZN - lightfName1 = gSystem->ExpandPathName("$ALICE_ROOT/ZDC/light22620362207s"); - if((fp1 = fopen(lightfName1,"r")) == NULL){ + char *lightfName1 = gSystem->ExpandPathName("$ALICE_ROOT/ZDC/light22620362207s"); + FILE *fp1 = fopen(lightfName1,"r"); + if(fp1 == NULL){ printf("Cannot open file fp1 \n"); return; } - lightfName2 = gSystem->ExpandPathName("$ALICE_ROOT/ZDC/light22620362208s"); - if((fp2 = fopen(lightfName2,"r")) == NULL){ + else{ + for(k=0; kExpandPathName("$ALICE_ROOT/ZDC/light22620362208s"); + FILE *fp2 = fopen(lightfName2,"r"); + if(fp2 == NULL){ printf("Cannot open file fp2 \n"); return; } - lightfName3 = gSystem->ExpandPathName("$ALICE_ROOT/ZDC/light22620362209s"); - if((fp3 = fopen(lightfName3,"r")) == NULL){ + else{ + for(k=0; kExpandPathName("$ALICE_ROOT/ZDC/light22620362209s"); + FILE *fp3 = fopen(lightfName3,"r"); + if(fp3 == NULL){ printf("Cannot open file fp3 \n"); return; } - lightfName4 = gSystem->ExpandPathName("$ALICE_ROOT/ZDC/light22620362210s"); - if((fp4 = fopen(lightfName4,"r")) == NULL){ + else{ + for(k=0; kExpandPathName("$ALICE_ROOT/ZDC/light22620362210s"); + FILE *fp4 = fopen(lightfName4,"r"); + if(fp4 == NULL){ printf("Cannot open file fp4 \n"); return; } - - int read=1; - for(k=0; kExpandPathName("$ALICE_ROOT/ZDC/light22620552207s"); - if((fp5 = fopen(lightfName5,"r")) == NULL){ + char *lightfName5 = gSystem->ExpandPathName("$ALICE_ROOT/ZDC/light22620552207s"); + FILE *fp5 = fopen(lightfName5,"r"); + if(fp5 == NULL){ printf("Cannot open file fp5 \n"); return; } - lightfName6 = gSystem->ExpandPathName("$ALICE_ROOT/ZDC/light22620552208s"); - if((fp6 = fopen(lightfName6,"r")) == NULL){ + else{ + for(k=0; kExpandPathName("$ALICE_ROOT/ZDC/light22620552208s"); + FILE *fp6 = fopen(lightfName6,"r"); + if(fp6 == NULL){ printf("Cannot open file fp6 \n"); return; } - lightfName7 = gSystem->ExpandPathName("$ALICE_ROOT/ZDC/light22620552209s"); - if((fp7 = fopen(lightfName7,"r")) == NULL){ + else{ + for(k=0; kExpandPathName("$ALICE_ROOT/ZDC/light22620552209s"); + FILE *fp7 = fopen(lightfName7,"r"); + if(fp7 == NULL){ printf("Cannot open file fp7 \n"); return; } - lightfName8 = gSystem->ExpandPathName("$ALICE_ROOT/ZDC/light22620552210s"); - if((fp8 = fopen(lightfName8,"r")) == NULL){ + else{ + for(k=0; kExpandPathName("$ALICE_ROOT/ZDC/light22620552210s"); + FILE *fp8 = fopen(lightfName8,"r"); + if(fp8 == NULL){ printf("Cannot open file fp8 \n"); return; } - - for(k=0; k return @@ -2573,6 +2464,7 @@ void AliZDCv3::StepManager() // hits[12] = 1.0e09*gMC->TrackTime(); // in ns! //printf("\t TrackTime = %f\n", hits[12]); + hits[13] = part->Eta(); AddHit(curTrackN, vol, hits); @@ -2699,7 +2591,7 @@ void AliZDCv3::StepManager() AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(), vol, hits); } } - else if((vol[0]==3)) { // (3) ZEM fibres + else if(vol[0]==3) { // (3) ZEM fibres if(ibe>fNbep) ibe=fNbep; out = charge*charge*fTablep[ibeta][ialfa][ibe]; gMC->TrackPosition(s[0],s[1],s[2]);