X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TOF%2FAliTOFv2FHoles.cxx;h=e564a4356cf20e624811df45a1407c78c306e6e9;hb=da43c135bc8893563fa447f0ae069c3e6249be4d;hp=14cf1f7f24c02ea02511df1e68e88e3df63baf5e;hpb=61e4c9baccddf32d2850d000dffdfefb7694b67e;p=u%2Fmrichter%2FAliRoot.git diff --git a/TOF/AliTOFv2FHoles.cxx b/TOF/AliTOFv2FHoles.cxx index 14cf1f7f24c..e564a4356cf 100644 --- a/TOF/AliTOFv2FHoles.cxx +++ b/TOF/AliTOFv2FHoles.cxx @@ -13,7 +13,7 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ - +/* $Id$ */ /////////////////////////////////////////////////////////////////////////////// // @@ -22,7 +22,7 @@ // // VERSION WITH 5 MODULES AND TILTED STRIPS // -// HOLES FOR PHOS AND RICH DETECTOR +// HOLES FOR PHOS AND HMPID DETECTOR // // !Not Official version! // @@ -46,16 +46,16 @@ #include #include -#include "AliTOFv2FHoles.h" -#include "TBRIK.h" -#include "TGeometry.h" -#include "TNode.h" #include -#include "TObject.h" -#include "AliRun.h" -#include "AliMagF.h" -#include "AliConst.h" +#include +#include +#include "AliConst.h" +#include "AliMagF.h" +#include "AliRun.h" +#include "AliTOFv2FHoles.h" +#include "AliTOFConstants.h" // AdC +#include "AliMC.h" ClassImp(AliTOFv2FHoles) @@ -87,104 +87,6 @@ AliTOFv2FHoles::AliTOFv2FHoles(const char *name, const char *title) exit(1); } } - -//____________________________________________________________________________ - -void AliTOFv2FHoles::BuildGeometry() -{ - // - // Build TOF ROOT geometry for the ALICE event display - // - 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; - const Int_t kNTof = fNTof; - const Float_t kPi = TMath::Pi(); - const Float_t kangle = 2*kPi/kNTof; - Float_t ang; - - // fixing parameters as requested by FRAME v0 (Morsch 16-10-2001) - //Float_t zlenA = 124.; // cm (A module length) original size 106. enlarged - Float_t zlenB = 154.; // cm (B module length) original size 141. enlarged - Float_t zlenC = 159.5; // cm (C module length) original size 175.5 reduced - Float_t ztof0 = 375.5; // total half-length of a TOF sector original size 371.5cm - - Float_t zOffsetC = ztof0 - zlenC*0.5; - Float_t zOffsetB = ztof0 - zlenC - zlenB*0.5; - Float_t zOffsetA = 0.00; - - // Define TOF basic volume - - char nodeName0[6], nodeName1[6], nodeName2[6]; - char nodeName3[6], nodeName4[6], rotMatNum[6]; - - new TBRIK("S_TOF_C","TOF box","void", - fStripLn*0.5,khTof*0.5,fZlenC*0.5); - new TBRIK("S_TOF_B","TOF box","void", - fStripLn*0.5,khTof*0.5,fZlenB*0.5); - new TBRIK("S_TOF_A","TOF box","void", - 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),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); - if (nodeNum !=1 && nodeNum!=17 && nodeNum !=18) - { - 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); - } // Holes for RICH detector - - if ((nodeNum<7 || nodeNum>11) && nodeNum !=1 && nodeNum!=17 && nodeNum !=18) - { - 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); - } // Holes for PHOS detector (+ Holes for RICH detector, central part) - } // end loop on nodeNum -} - //_____________________________________________________________________________ void AliTOFv2FHoles::CreateGeometry() @@ -381,8 +283,6 @@ void AliTOFv2FHoles::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC, // positioning the central PCB layer gMC->Gspos("FPCB",3,"FSTR",0.,0.,0.,0,"ONLY"); - - //-- MYLAR Layer definition parfp[1] = khmyly*0.5; gMC->Gsvolu("FMYL","BOX",idtmed[511],parfp,3); @@ -457,23 +357,26 @@ void AliTOFv2FHoles::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC, // 1 cm is a special value exclusively for AliTOFv2FHoles geometry Float_t zpos = 0; Float_t ang = 0; - Int_t i=1,j=1; + Int_t j=1; // AdC nrot = 0; zcoor = 0; ycoor = -14.5 + kspace ; //2 cm over front plate AliMatrix (idrotm[0], 90., 0.,90.,90.,0., 90.); - gMC->Gspos("FSTR",j,"FLTA",0.,ycoor, 0.,idrotm[0],"ONLY"); - + + Int_t centerLoc= (Int_t)(fNStripA/2.) + 1; // AdC + + //gMC->Gspos("FSTR",j,"FLTA",0.,ycoor, 0.,idrotm[0],"ONLY"); + gMC->Gspos("FSTR",centerLoc,"FLTA",0.,ycoor, 0.,idrotm[0],"ONLY"); // AdC if(fDebug>=1) { - printf("%s: %f, St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,i); + printf("%s: %f, St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC printf("%s: y = %f, z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos); } zcoor -= zSenStrip; - j++; + //j++; // AdC Int_t upDown = -1; // upDown=-1 -> Upper strip - // upDown=+1 -> Lower strip + // upDown=+1 -> Lower strip do{ ang = atan(zcoor/radius); ang *= kRaddeg; @@ -482,15 +385,16 @@ void AliTOFv2FHoles::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC, ang /= kRaddeg; ycoor = -14.5+ kspace; //2 cm over front plate ycoor += (1-(upDown+1)/2)*gap; - gMC->Gspos("FSTR",j ,"FLTA",0.,ycoor, zcoor,idrotm[nrot], "ONLY"); - gMC->Gspos("FSTR",j+1,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY"); - + //gMC->Gspos("FSTR",j ,"FLTA",0.,ycoor, zcoor,idrotm[nrot], "ONLY"); + //gMC->Gspos("FSTR",j+1,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY"); + gMC->Gspos("FSTR",centerLoc-j,"FLTA",0.,ycoor, zcoor,idrotm[nrot], "ONLY"); // AdC + gMC->Gspos("FSTR",centerLoc+j,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY"); // AdC if(fDebug>=1) { - printf("%s: %f, St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,i); + printf("%s: %f, St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC printf("%s: y = %f, z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos); } - j += 2; + j++; //j += 2; // AdC upDown*= -1; // Alternate strips zcoor = zcoor-(zSenStrip/2)/TMath::Cos(ang)- upDown*gap*TMath::Tan(ang)- @@ -516,21 +420,22 @@ void AliTOFv2FHoles::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC, ycoor += (1-(upDown+1)/2)*gap; /* for FRAME v0 - gMC->Gspos("FSTR",j ,"FLTA",0.,ycoor, zcoor,idrotm[nrot], "ONLY"); - gMC->Gspos("FSTR",j+1,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY"); + //gMC->Gspos("FSTR",j ,"FLTA",0.,ycoor, zcoor,idrotm[nrot], "ONLY"); + //gMC->Gspos("FSTR",j+1,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY"); + gMC->Gspos("FSTR",centerLoc-j,"FLTA",0.,ycoor, zcoor,idrotm[nrot], "ONLY"); // AdC + gMC->Gspos("FSTR",centerLoc+j,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY"); // AdC + if(fDebug>=1) { + printf("%s: %f, St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC + printf("%s: y = %f, z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos); + } */ - if(fDebug>=1) { - printf("%s: %f, St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,i); - printf("%s: y = %f, z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos); - } - ycoor = -hTof/2.+ kspace;//2 cm over front plate // Plate B nrot = 0; - i=1; + Int_t i=1; // AdC upDown = 1; Float_t deadRegion = 1.0;//cm @@ -568,7 +473,6 @@ void AliTOFv2FHoles::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC, ycoor += (1-(upDown+1)/2)*gap; 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"); - if(fDebug>=1) { printf("%s: %f, St. %2i, Pl.4 ",ClassName(),ang*kRaddeg,i); printf("%s: y = %f, z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos); @@ -624,7 +528,6 @@ void AliTOFv2FHoles::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC, zcoor = zpos+(zFLTC*0.5+zFLTB+zFLTA*0.5+db*2); if (i!=1) gMC->Gspos("FSTR",i, "FLTC", 0., ycoor, zcoor,idrotm[nrot], "ONLY"); - if(fDebug>=1) { printf("%s: %f, St. %2i, Pl.5 ",ClassName(),ang*kRaddeg,i); printf("%s: y = %f, z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos); @@ -632,8 +535,8 @@ void AliTOFv2FHoles::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC, zpos = zpos - zSenStrip/TMath::Cos(ang); } while (zpos-stripWidth*TMath::Cos(ang)*0.5>-t); - - + + ////////// Layers after strips ///////////////// // Al Layer thickness (2.3mm) factor 0.7 @@ -1042,7 +945,7 @@ void AliTOFv2FHoles::Init() " TOF " "**************************************\n",ClassName()); printf("\n%s: Version 2 of TOF initialing, " - "TOF with holes for PHOS and RICH \n",ClassName()); + "TOF with holes for PHOS and HMPID \n",ClassName()); } AliTOF::Init(); @@ -1076,7 +979,7 @@ void AliTOFv2FHoles::StepManager() Int_t *idtmed = fIdtmed->GetArray()-499; Float_t incidenceAngle; - if(gMC->GetMedium()==idtmed[513] && + if(gMC->CurrentMedium()==idtmed[513] && gMC->IsTrackEntering() && gMC->TrackCharge() && gMC->CurrentVolID(copy)==fIdSens) { @@ -1125,19 +1028,29 @@ void AliTOFv2FHoles::StepManager() if (z <-(fZlenA*0.5+fZlenB)) plate = 1; end to be changed */ - if (TMath::Abs(z) <= 124.*0.5) plate = 3; + if (TMath::Abs(z) <= 124.*0.5) plate = 2; //3; // AdC if (z < (124.*0.5+154.) && - z > 124.*0.5) plate = 4; + z > 124.*0.5) plate = 1; //4; // AdC if (z >-(124.*0.5+154.) && - z < -124.*0.5) plate = 2; - if (z > (124.*0.5+154.)) plate = 5; - if (z <-(124.*0.5+154.)) plate = 1; + z < -124.*0.5) plate = 3; //2; // AdC + if (z > (124.*0.5+154.)) plate = 0; //5; // AdC + if (z <-(124.*0.5+154.)) plate = 4; //1; // AdC + + if (plate==0) strip=AliTOFConstants::fgkNStripC-strip; // AdC + else if (plate==1) strip=AliTOFConstants::fgkNStripB-strip; // AdC + else strip--; // AdC + + if (z<=0.) padx=AliTOFConstants::fgkNpadX-padx; // AdC + else padx--; // AdC + if (plate==3 || plate==4) padz=AliTOFConstants::fgkNpadZ-padz; // AdC + else padz--; // AdC phi = pos.Phi(); - phid = phi*kRaddeg+180.; + if (phi>=0.) phid = phi*kRaddeg; //+180.; // AdC + else phid = phi*kRaddeg + 360.; // AdC sector = Int_t (phid/20.); - sector++; + //sector++; // AdC for(i=0;i<3;++i) { hits[i] = pos[i]; @@ -1158,6 +1071,6 @@ void AliTOFv2FHoles::StepManager() vol[3]= padx; vol[4]= padz; - AddHit(gAlice->CurrentTrack(),vol, hits); + AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(),vol, hits); } }