X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=TOF%2FAliTOFv0.cxx;h=ae5583e69a6bac0f5d3fdc5c57ad490d3e0c5cca;hp=d0561efba527e443dc1896189dc5026bb664cc8f;hb=88cb7938ca21d4a80991d4e7aa564008c29340f7;hpb=517b7f8fe71b1ff065b08249230566234646a0f7 diff --git a/TOF/AliTOFv0.cxx b/TOF/AliTOFv0.cxx index d0561efba52..ae5583e69a6 100644 --- a/TOF/AliTOFv0.cxx +++ b/TOF/AliTOFv0.cxx @@ -13,56 +13,10 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -/* -$Log$ -Revision 1.22 2001/09/20 15:54:22 vicinanz -Updated Strip Structure (Double Stack) - -Revision 1.21 2001/08/28 08:45:59 vicinanz -TTask and TFolder structures implemented - -Revision 1.9 2001/05/04 10:09:48 vicinanz -Major upgrades to the strip structure - -Revision 1.8 2000/12/04 08:48:20 alibrary -Fixing problems in the HEAD - -Revision 1.7 2000/10/02 21:28:17 fca -Removal of useless dependecies via forward declarations - -Revision 1.6 2000/05/10 16:52:18 vicinanz -New TOF version with holes for PHOS/RICH - -Revision 1.4.2.1 2000/05/10 09:37:16 vicinanz -New version with Holes for PHOS/RICH - -Revision 1.14 1999/11/05 22:39:06 fca -New hits structure - -Revision 1.13 1999/11/02 11:26:39 fca -added stdlib.h for exit - -Revision 1.12 1999/11/01 20:41:57 fca -Added protections against using the wrong version of FRAME - -Revision 1.11 1999/10/22 08:04:14 fca -Correct improper use of negative parameters - -Revision 1.10 1999/10/16 19:30:06 fca -Corrected Rotation Matrix and CVS log - -Revision 1.9 1999/10/15 15:35:20 fca -New version for frame1099 with and without holes - -Revision 1.8 1999/09/29 09:24:33 fca -Introduction of the Copyright and cvs Log - -*/ +/* $Id$ */ /////////////////////////////////////////////////////////////////////////////// -// // -// Time Of Flight: design of C.Williams // -// // +// // This class contains the functions for version 0 of the Time Of Flight // // detector. // // @@ -89,19 +43,19 @@ Introduction of the Copyright and cvs Log // // /////////////////////////////////////////////////////////////////////////////// -#include +#include #include -#include "AliTOFv0.h" -#include "TBRIK.h" -#include "TGeometry.h" -#include "TNode.h" +#include +#include #include -#include "TObject.h" -#include "AliRun.h" -#include "AliMC.h" -#include "AliConst.h" +#include +#include +#include +#include "AliConst.h" +#include "AliRun.h" +#include "AliTOFv0.h" ClassImp(AliTOFv0) @@ -144,10 +98,10 @@ void AliTOFv0::BuildGeometry() // TNode *node, *top; const int kColorTOF = 27; - + // Find top TNODE top = gAlice->GetGeometry()->GetNode("alice"); - + // Position the different copies const Float_t krTof =(fRmax+fRmin)/2; const Float_t khTof = fRmax-fRmin; @@ -155,65 +109,69 @@ void AliTOFv0::BuildGeometry() const Float_t kPi = TMath::Pi(); const Float_t kangle = 2*kPi/kNTof; Float_t ang; - + + // define offset for nodes + Float_t zOffsetC = fZtof - fZlenC*0.5; + Float_t zOffsetB = fZtof - fZlenC - fZlenB*0.5; + Float_t zOffsetA = 0.; // Define TOF basic volume char nodeName0[7], nodeName1[7], nodeName2[7]; char nodeName3[7], nodeName4[7], rotMatNum[7]; - + new TBRIK("S_TOF_C","TOF box","void", - 120*0.5,khTof*0.5,fZlenC*0.5); + fStripLn*0.5,khTof*0.5,fZlenC*0.5); new TBRIK("S_TOF_B","TOF box","void", - 120*0.5,khTof*0.5,fZlenB*0.5); + fStripLn*0.5,khTof*0.5,fZlenB*0.5); new TBRIK("S_TOF_A","TOF box","void", - 120*0.5,khTof*0.5,fZlenA*0.5); - + fStripLn*0.5,khTof*0.5,fZlenA*0.5); + for (Int_t nodeNum=1;nodeNum<19;nodeNum++){ - - if (nodeNum<10) { - sprintf(rotMatNum,"rot50%i",nodeNum); - sprintf(nodeName0,"FTO00%i",nodeNum); - sprintf(nodeName1,"FTO10%i",nodeNum); - sprintf(nodeName2,"FTO20%i",nodeNum); - sprintf(nodeName3,"FTO30%i",nodeNum); - sprintf(nodeName4,"FTO40%i",nodeNum); - } - if (nodeNum>9) { - sprintf(rotMatNum,"rot5%i",nodeNum); - sprintf(nodeName0,"FTO0%i",nodeNum); - sprintf(nodeName1,"FTO1%i",nodeNum); - sprintf(nodeName2,"FTO2%i",nodeNum); - sprintf(nodeName3,"FTO3%i",nodeNum); - sprintf(nodeName4,"FTO4%i",nodeNum); - } - - new TRotMatrix(rotMatNum,rotMatNum,90,-20*nodeNum,90,90-20*nodeNum,0,0); - ang = (4.5-nodeNum) * kangle; - - top->cd(); - node = new TNode(nodeName0,nodeName0,"S_TOF_C",krTof*TMath::Cos(ang),krTof*TMath::Sin(ang),299.15,rotMatNum); - node->SetLineColor(kColorTOF); - fNodes->Add(node); - - top->cd(); - node = new TNode(nodeName1,nodeName1,"S_TOF_C",krTof*TMath::Cos(ang),krTof*TMath::Sin(ang),-299.15,rotMatNum); - node->SetLineColor(kColorTOF); - fNodes->Add(node); - - top->cd(); - node = new TNode(nodeName2,nodeName2,"S_TOF_B",krTof*TMath::Cos(ang),krTof*TMath::Sin(ang),146.45,rotMatNum); - node->SetLineColor(kColorTOF); - fNodes->Add(node); - - top->cd(); - node = new TNode(nodeName3,nodeName3,"S_TOF_B",krTof*TMath::Cos(ang),krTof*TMath::Sin(ang),-146.45,rotMatNum); - node->SetLineColor(kColorTOF); - fNodes->Add(node); - - top->cd(); - node = new TNode(nodeName4,nodeName4,"S_TOF_A",krTof*TMath::Cos(ang),krTof*TMath::Sin(ang),0.,rotMatNum); - node->SetLineColor(kColorTOF); - fNodes->Add(node); + + if (nodeNum<10) { + sprintf(rotMatNum,"rot50%i",nodeNum); + sprintf(nodeName0,"FTO00%i",nodeNum); + sprintf(nodeName1,"FTO10%i",nodeNum); + sprintf(nodeName2,"FTO20%i",nodeNum); + sprintf(nodeName3,"FTO30%i",nodeNum); + sprintf(nodeName4,"FTO40%i",nodeNum); + } + if (nodeNum>9) { + sprintf(rotMatNum,"rot5%i",nodeNum); + sprintf(nodeName0,"FTO0%i",nodeNum); + sprintf(nodeName1,"FTO1%i",nodeNum); + sprintf(nodeName2,"FTO2%i",nodeNum); + sprintf(nodeName3,"FTO3%i",nodeNum); + sprintf(nodeName4,"FTO4%i",nodeNum); + } + + new TRotMatrix(rotMatNum,rotMatNum,90,-20*nodeNum,90,90-20*nodeNum,0,0); + ang = (4.5-nodeNum) * kangle; + + top->cd(); + node = new TNode(nodeName0,nodeName0,"S_TOF_C",krTof*TMath::Cos(ang),krTof*TMath::Sin(ang),zOffsetC,rotMatNum); + node->SetLineColor(kColorTOF); + fNodes->Add(node); + + top->cd(); + node = new TNode(nodeName1,nodeName1,"S_TOF_C",krTof*TMath::Cos(ang),krTof*TMath::Sin(ang),-zOffsetC,rotMatNum); + node->SetLineColor(kColorTOF); + fNodes->Add(node); + + top->cd(); + node = new TNode(nodeName2,nodeName2,"S_TOF_B",krTof*TMath::Cos(ang),krTof*TMath::Sin(ang),zOffsetB,rotMatNum); + node->SetLineColor(kColorTOF); + fNodes->Add(node); + + top->cd(); + node = new TNode(nodeName3,nodeName3,"S_TOF_B",krTof*TMath::Cos(ang),krTof*TMath::Sin(ang),-zOffsetB,rotMatNum); + node->SetLineColor(kColorTOF); + fNodes->Add(node); + + top->cd(); + node = new TNode(nodeName4,nodeName4,"S_TOF_A",krTof*TMath::Cos(ang),krTof*TMath::Sin(ang),zOffsetA,rotMatNum); + node->SetLineColor(kColorTOF); + fNodes->Add(node); } // end loop on nodeNum } @@ -476,7 +434,7 @@ void AliTOFv0::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC, Float_t t = zFLTC+zFLTB+zFLTA*0.5+ 2*db;//Half Width of Barrel - Float_t gap = fGapA; //cm distance between the strip axis + Float_t gap = fGapA+0.5; //cm updated distance between the strip axis Float_t zpos = 0; Float_t ang = 0; Int_t i=1,j=1; @@ -574,8 +532,10 @@ void AliTOFv0::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC, ang *= kRaddeg; AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.); ang /= kRaddeg; - ycoor = -hTof*0.5+ kspace ; //2 cm over front plate - ycoor += (1-(upDown+1)/2)*gap; + Float_t deltaSpaceinB=-0.5; // [cm] to avoid overlaps with the end of freon frame + Float_t deltaGapinB=0.5; // [cm] to avoid overlaps in between initial strips + ycoor = -hTof*0.5+ kspace+deltaSpaceinB ; //2 cm over front plate + ycoor += (1-(upDown+1)/2)*(gap+deltaGapinB); zcoor = zpos+(zFLTA*0.5+zFLTB*0.5+db); // Moves to the system of the modulus FLTB gMC->Gspos("FSTR",i, "FLTB", 0., ycoor, zcoor,idrotm[nrot], "ONLY"); @@ -589,6 +549,9 @@ void AliTOFv0::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC, ycoor = -hTof*0.5+ kspace ; //2 cm over front plate zpos = zpos - zSenStrip/TMath::Cos(ang); + // this avoid overlaps in between outer strips in plate B + Float_t deltaMovingUp=0.8; // [cm] + Float_t deltaMovingDown=-0.5; // [cm] do { ang = atan(zpos/radius); @@ -596,7 +559,8 @@ void AliTOFv0::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC, AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.); ang /= kRaddeg; zcoor = zpos+(zFLTB/2+zFLTA/2+db); - gMC->Gspos("FSTR",i, "FLTB", 0., ycoor, zcoor,idrotm[nrot], "ONLY"); + gMC->Gspos("FSTR",i, "FLTB", 0., ycoor+deltaMovingDown+deltaMovingUp, zcoor,idrotm[nrot], "ONLY"); + deltaMovingUp+=0.8; // update delta moving toward the end of the plate zpos = zpos - zSenStrip/TMath::Cos(ang); printf("%f, St. %2i, Pl.4 ",ang*kRaddeg,i); printf("y = %f, z = %f, zpos = %f \n",ycoor,zcoor,zpos); @@ -613,7 +577,8 @@ void AliTOFv0::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC, nrot = 0; i=0; - ycoor= -hTof*0.5+kspace+gap; + Float_t deltaGap=-2.5; // [cm] update distance from strip center and plate + ycoor= -hTof*0.5+kspace+gap+deltaGap; do { i++; @@ -763,10 +728,8 @@ void AliTOFv0::DrawDetectorModules() // Draw a shaded view of the TOF detector version 0 // - AliMC* pMC = AliMC::GetMC(); - //Set ALIC mother transparent - pMC->Gsatt("ALIC","SEEN",0); + gMC->Gsatt("ALIC","SEEN",0); // //Set volumes visible @@ -836,10 +799,8 @@ void AliTOFv0::DrawDetectorStrips() // Draw a shaded view of the TOF strips for version 0 // - AliMC* pMC = AliMC::GetMC(); - //Set ALIC mother transparent - pMC->Gsatt("ALIC","SEEN",0); + gMC->Gsatt("ALIC","SEEN",0); // //Set volumes visible