X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TOF%2FAliTOFv6T0.cxx;h=da19b0b1d326f9235dfe754c0161f18bf4ecab0a;hb=0bd264d520369187da0dfe07db00007d2265c332;hp=bc0b88bb67fd9b0ed2c02e6270f860126100dc73;hpb=19dd44a62505c670df0000af75bd2c48db4faa64;p=u%2Fmrichter%2FAliRoot.git diff --git a/TOF/AliTOFv6T0.cxx b/TOF/AliTOFv6T0.cxx index bc0b88bb67f..da19b0b1d32 100644 --- a/TOF/AliTOFv6T0.cxx +++ b/TOF/AliTOFv6T0.cxx @@ -15,6 +15,12 @@ /* $Log$ +Revision 1.11 2007/10/08 17:52:55 decaro +hole region in front of PHOS detector: update of sectors' numbers + +Revision 1.10 2007/10/07 19:40:46 decaro +right handling of l2t matrices and alignable entries in case of TOF staging geometry + Revision 1.9 2007/10/07 19:36:29 decaro TOF materials and volumes description: update @@ -83,17 +89,17 @@ Revision 0.1 2007 March G. Cara Romeo and A. De Caro // // /////////////////////////////////////////////////////////////////////////////// -#include "TBRIK.h" -#include "TGeometry.h" -#include "TLorentzVector.h" -#include "TNode.h" -#include "TVirtualMC.h" -#include "TGeoManager.h" +#include +#include +#include #include #include #include +#include +#include #include "AliConst.h" +#include "AliGeomManager.h" #include "AliLog.h" #include "AliMagF.h" #include "AliMC.h" @@ -103,7 +109,6 @@ Revision 0.1 2007 March G. Cara Romeo and A. De Caro #include "AliTOFGeometry.h" #include "AliTOFv6T0.h" -extern TDirectory *gDirectory; extern TVirtualMC *gMC; extern TGeoManager *gGeoManager; @@ -111,20 +116,40 @@ extern AliRun *gAlice; ClassImp(AliTOFv6T0) +// TOF sectors with Nino masks: 0, 8, 9, 10, 16 +const Bool_t AliTOFv6T0::fgkFEAwithMasks[18] = +{kTRUE , kFALSE, kFALSE, kFALSE, kFALSE, kFALSE, + kFALSE, kFALSE, kTRUE , kTRUE , kTRUE , kFALSE, + kFALSE, kFALSE, kFALSE, kFALSE, kTRUE , kFALSE}; const Float_t AliTOFv6T0::fgkModuleWallThickness = 0.33; // cm const Float_t AliTOFv6T0::fgkInterCentrModBorder1 = 49.5 ; // cm const Float_t AliTOFv6T0::fgkInterCentrModBorder2 = 57.5 ; // cm const Float_t AliTOFv6T0::fgkExterInterModBorder1 = 196.0 ; // cm const Float_t AliTOFv6T0::fgkExterInterModBorder2 = 203.5 ; // cm -const Float_t AliTOFv6T0::fgkLengthInCeModBorder = 4.7 ; // cm -const Float_t AliTOFv6T0::fgkLengthExInModBorder = 7.0 ; // cm +//const Float_t AliTOFv6T0::fgkLengthInCeModBorder = 7.2 ; // cm // it was 4.7 cm (AdC) +const Float_t AliTOFv6T0::fgkLengthInCeModBorderU = 5.0 ; // cm +const Float_t AliTOFv6T0::fgkLengthInCeModBorderD = 7.0 ; // cm +const Float_t AliTOFv6T0::fgkLengthExInModBorder = 5.0 ; // cm // it was 7.0 cm (AdC) const Float_t AliTOFv6T0::fgkModuleCoverThickness = 2.0 ; // cm const Float_t AliTOFv6T0::fgkFEAwidth1 = 19.0; // cm -const Float_t AliTOFv6T0::fgkFEAwidth2 = 38.5; // cm +const Float_t AliTOFv6T0::fgkFEAwidth2 = 39.5;//38.5; // cm const Float_t AliTOFv6T0::fgkSawThickness = 1.0; // cm const Float_t AliTOFv6T0::fgkCBLw = 13.5; // cm const Float_t AliTOFv6T0::fgkCBLh1 = 2.0; // cm const Float_t AliTOFv6T0::fgkCBLh2 = 12.3; // cm +const Float_t AliTOFv6T0::fgkBetweenLandMask = 0.1; // cm +const Float_t AliTOFv6T0::fgkAl1parameters[3] = {fgkFEAwidth1*0.5, 0.4, 0.2}; // cm +const Float_t AliTOFv6T0::fgkAl2parameters[3] = {7.25, 0.75, 0.25}; // cm +const Float_t AliTOFv6T0::fgkAl3parameters[3] = {3., 4., 0.1}; // cm +const Float_t AliTOFv6T0::fgkRoof1parameters[3] = {fgkAl1parameters[0], fgkAl1parameters[2], 1.45}; // cm +const Float_t AliTOFv6T0::fgkRoof2parameters[3] = {fgkAl3parameters[0], 0.1, 1.15}; // cm +const Float_t AliTOFv6T0::fgkFEAparameters[3] = {fgkFEAwidth1*0.5, 5.6, 0.1}; // cm +const Float_t AliTOFv6T0::fgkBar[3] = {8.575, 0.6, 0.25}; // cm +const Float_t AliTOFv6T0::fgkBar1[3] = {fgkBar[0], fgkBar[1], 0.1}; // cm +const Float_t AliTOFv6T0::fgkBar2[3] = {fgkBar[0], 0.1, fgkBar[1] - 2.*fgkBar1[2]}; // cm +const Float_t AliTOFv6T0::fgkBarS[3] = {2., fgkBar[1], fgkBar[2]}; // cm +const Float_t AliTOFv6T0::fgkBarS1[3] = {fgkBarS[0], fgkBar1[1], fgkBar1[2]}; // cm +const Float_t AliTOFv6T0::fgkBarS2[3] = {fgkBarS[0], fgkBar2[1], fgkBar2[2]}; // cm //_____________________________________________________________________________ AliTOFv6T0::AliTOFv6T0(): @@ -133,12 +158,13 @@ const Float_t AliTOFv6T0::fgkCBLh2 = 12.3; // cm fIdFTOC(-1), fIdFLTA(-1), fIdFLTB(-1), - fIdFLTC(-1), - fTOFHoles(kFALSE) + fIdFLTC(-1)//, +//fTOFHoles(kFALSE) { // // Default constructor // + } //_____________________________________________________________________________ @@ -149,41 +175,47 @@ AliTOFv6T0::AliTOFv6T0(const char *name, const char *title): fIdFTOC(-1), fIdFLTA(-1), fIdFLTB(-1), - fIdFLTC(-1), - fTOFHoles(kFALSE) + fIdFLTC(-1)//, + //fTOFHoles(kFALSE) { // // Standard constructor // + // // Check that FRAME is there otherwise we have no place where to // put TOF - + /* AliModule* frame = (AliModule*)gAlice->GetModule("FRAME"); + if(!frame) { AliFatal("TOF needs FRAME to be present"); - } else{ - + } else { if (fTOFGeometry) delete fTOFGeometry; fTOFGeometry = new AliTOFGeometry(); if(frame->IsVersion()==1) { AliDebug(1,Form("Frame version %d", frame->IsVersion())); AliDebug(1,"Full Coverage for TOF"); - fTOFHoles=false;} + fTOFHoles=false;} else { AliDebug(1,Form("Frame version %d", frame->IsVersion())); AliDebug(1,"TOF with Holes for PHOS"); - fTOFHoles=true;} + fTOFHoles=true;} + } + */ + + if (fTOFGeometry) delete fTOFGeometry; + fTOFGeometry = new AliTOFGeometry(); fTOFGeometry->SetHoles(fTOFHoles); //AliTOF::fTOFGeometry = fTOFGeometry; // Save the geometry TDirectory* saveDir = gDirectory; - gAlice->GetRunLoader()->CdGAFile(); + AliRunLoader::Instance()->CdGAFile(); fTOFGeometry->Write("TOFgeometry"); saveDir->cd(); @@ -198,6 +230,9 @@ void AliTOFv6T0::AddAlignableVolumes() const // eventual changes in the geometry. // + AliGeomManager::ELayerID idTOF = AliGeomManager::kTOF; + Int_t modUID, modnum=0; + TString volPath; TString symName; @@ -226,9 +261,10 @@ void AliTOFv6T0::AddAlignableVolumes() const for (Int_t isect = 0; isect < nSectors; isect++) { for (Int_t istr = 1; istr <= nStrips; istr++) { + modUID = AliGeomManager::LayerToVolUID(idTOF, modnum++); if (fTOFSectors[isect]==-1) continue; - if (fTOFHoles && (isect==11 || isect==12)) { + if (fTOFHoles && (isect==13 || isect==14 || isect==15)) { if (istr<39) { vpL3 = "/FTOB_0"; vpL4 = "/FLTB_0/FSTR_"; @@ -265,16 +301,13 @@ void AliTOFv6T0::AddAlignableVolumes() const AliDebug(2,Form("symName=%s\n",symName.Data())); AliDebug(2,"--------------------------------------------"); - gGeoManager->SetAlignableEntry(symName.Data(),volPath.Data()); + if(!gGeoManager->SetAlignableEntry(symName.Data(),volPath.Data(),modUID)) + AliError(Form("Alignable entry %s not set",symName.Data())); //T2L matrices for alignment - TGeoPNEntry *e = gGeoManager->GetAlignableEntry(symName.Data()); + TGeoPNEntry *e = gGeoManager->GetAlignableEntryByUID(modUID); if (e) { - const char *path = e->GetTitle(); - if (!gGeoManager->cd(path)) { - AliFatal(Form("Volume path %s not valid!",path)); - } - TGeoHMatrix *globMatrix = gGeoManager->GetCurrentMatrix(); + TGeoHMatrix *globMatrix = e->GetGlobalOrig(); Double_t phi = 20.0 * (isect % 18) + 10.0; TGeoHMatrix *t2l = new TGeoHMatrix(); t2l->RotateZ(phi); @@ -284,7 +317,6 @@ void AliTOFv6T0::AddAlignableVolumes() const else { AliError(Form("Alignable entry %s is not valid!",symName.Data())); } - imod++; } } @@ -307,99 +339,16 @@ void AliTOFv6T0::AddAlignableVolumes() const symName = snSM; symName += Form("%02d",isect); - AliDebug(2,"--------------------------------------------"); - AliDebug(2,Form("Alignable object %d", isect+imod)); - AliDebug(2,Form("volPath=%s\n",volPath.Data())); - AliDebug(2,Form("symName=%s\n",symName.Data())); - AliDebug(2,"--------------------------------------------"); - - gGeoManager->SetAlignableEntry(symName.Data(),volPath.Data()); + AliDebug(2,"--------------------------------------------"); + AliDebug(2,Form("Alignable object %d", isect+imod)); + AliDebug(2,Form("volPath=%s\n",volPath.Data())); + AliDebug(2,Form("symName=%s\n",symName.Data())); + AliDebug(2,"--------------------------------------------"); - } - -} -//____________________________________________________________________________ -void AliTOFv6T0::BuildGeometry() -{ - // - // Build TOF ROOT geometry for the ALICE event display - // - TNode *node, *top; - const int kColorTOF = 27; - - TGeometry *globalGeometry = (TGeometry*)gAlice->GetGeometry(); - - // Find top TNODE - top = globalGeometry->GetNode("alice"); - - // Position the different copies - const Float_t krTof =(fTOFGeometry->Rmax()+fTOFGeometry->Rmin())/2.; - const Float_t khTof = fTOFGeometry->Rmax()-fTOFGeometry->Rmin(); - const Int_t kNTof = fTOFGeometry->NSectors(); - const Float_t kangle = k2PI/kNTof; - - //const Float_t fgkInterCentrModBorder1 = 49.5; - //const Float_t fgkInterCentrModBorder2 = 57.5; - - Float_t ang; - - // define offset for nodes - Float_t zOffsetB = (fTOFGeometry->ZlenA()*0.5 + (fgkInterCentrModBorder1+fgkInterCentrModBorder2)*0.5)*0.5; - Float_t zOffsetA = 0.; - // Define TOF basic volume - - char nodeName0[16], nodeName1[16], nodeName2[16]; - char nodeName3[16], nodeName4[16], rotMatNum[16]; + gGeoManager->SetAlignableEntry(symName.Data(),volPath.Data()); - if (fTOFHoles) { - new TBRIK("S_TOF_B","TOF box","void", - fTOFGeometry->StripLength()*0.5, khTof*0.5, fTOFGeometry->ZlenB()*0.5); - new TBRIK("S_TOF_C","TOF box","void", - fTOFGeometry->StripLength()*0.5, khTof*0.5, fTOFGeometry->ZlenB()*0.5); } - new TBRIK("S_TOF_A","TOF box","void", - fTOFGeometry->StripLength()*0.5, khTof*0.5, fTOFGeometry->ZlenA()*0.5); - for (Int_t nodeNum=1;nodeNum9) { - 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; - - if (fTOFHoles) { - 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_C", 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 - } //_____________________________________________________________________________ @@ -427,14 +376,11 @@ void AliTOFv6T0::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenA) // Definition of the Time Of Fligh Resistive Plate Chambers // - // module wall thickness (cm) - //const Float_t fgkModuleWallThickness = 0.33; - AliDebug(1, "************************* TOF geometry **************************"); - AliDebug(1,Form(" xtof %d", xtof)); - AliDebug(1,Form(" ytof %d", ytof)); - AliDebug(1,Form(" zlenA %d", zlenA)); - AliDebug(2,Form(" zlenA*0.5 = %d", zlenA*0.5)); + AliDebug(1,Form(" xtof %f", xtof)); + AliDebug(1,Form(" ytof %f", ytof)); + AliDebug(1,Form(" zlenA %f", zlenA)); + AliDebug(2,Form(" zlenA*0.5 = %f", zlenA*0.5)); Float_t xFLT, yFLT, zFLTA; xFLT = xtof - 2.*fgkModuleWallThickness; @@ -447,9 +393,9 @@ void AliTOFv6T0::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenA) CreateModuleCovers(xtof, zlenA); CreateBackZone(xtof, ytof, zlenA); - MakeFrontEndElectronics(); - MakeFEACooling(xtof, ytof, zlenA); - MakeNinoMask(xtof, ytof, zlenA); + MakeFrontEndElectronics(xtof); + MakeFEACooling(xtof); + MakeNinoMask(xtof); MakeSuperModuleCooling(xtof, ytof, zlenA); MakeSuperModuleServices(xtof, ytof, zlenA); @@ -472,23 +418,11 @@ void AliTOFv6T0::CreateModules(Float_t xtof, Float_t ytof, Float_t zlenA, const Float_t kPi = TMath::Pi(); - //const Float_t fgkInterCentrModBorder1 = 49.5; - //const Float_t fgkInterCentrModBorder2 = 57.5; - //const Float_t fgkExterInterModBorder1 = 196.0; - //const Float_t fgkExterInterModBorder2 = 203.5; - - //const Float_t fgkLengthExInModBorder = 4.7; - //const Float_t fgkLengthInCeModBorder = 7.0; - - // module wall thickness (cm) - //const Float_t fgkModuleWallThickness = 0.33; - - // Definition of the of fibre glass modules (FTOA, FTOB and FTOC) - Int_t *idtmed = fIdtmed->GetArray()-499; Int_t idrotm[8]; + // Definition of the of fibre glass modules (FTOA, FTOB and FTOC) Float_t par[3]; par[0] = xtof * 0.5; par[1] = ytof * 0.25; @@ -506,7 +440,6 @@ void AliTOFv6T0::CreateModules(Float_t xtof, Float_t ytof, Float_t zlenA, // Definition and positioning // of the not sensitive volumes with Insensitive Freon (FLTA, FLTB and FLTC) - par[0] = xFLT*0.5; par[1] = yFLT*0.5; par[2] = zFLTA*0.5; @@ -532,9 +465,9 @@ void AliTOFv6T0::CreateModules(Float_t xtof, Float_t ytof, Float_t zlenA, // Definition and positioning // of the fibre glass walls between central and intermediate modules (FWZ1 and FWZ2) - Float_t alpha, tgal, beta, tgbe, trpa[11]; - tgal = (yFLT - 2.*fgkLengthInCeModBorder)/(fgkInterCentrModBorder2 - fgkInterCentrModBorder1); + //tgal = (yFLT - 2.*fgkLengthInCeModBorder)/(fgkInterCentrModBorder2 - fgkInterCentrModBorder1); + tgal = (yFLT - fgkLengthInCeModBorderU - fgkLengthInCeModBorderD)/(fgkInterCentrModBorder2 - fgkInterCentrModBorder1); alpha = TMath::ATan(tgal); beta = (kPi*0.5 - alpha)*0.5; tgbe = TMath::Tan(beta); @@ -542,28 +475,34 @@ void AliTOFv6T0::CreateModules(Float_t xtof, Float_t ytof, Float_t zlenA, trpa[1] = 0.; trpa[2] = 0.; trpa[3] = 2.*fgkModuleWallThickness; - trpa[4] = (fgkLengthInCeModBorder - 2.*fgkModuleWallThickness*tgbe)*0.5; - trpa[5] = (fgkLengthInCeModBorder + 2.*fgkModuleWallThickness*tgbe)*0.5; + //trpa[4] = (fgkLengthInCeModBorder - 2.*fgkModuleWallThickness*tgbe)*0.5; + //trpa[5] = (fgkLengthInCeModBorder + 2.*fgkModuleWallThickness*tgbe)*0.5; + trpa[4] = (fgkLengthInCeModBorderD - 2.*fgkModuleWallThickness*tgbe)*0.5; + trpa[5] = (fgkLengthInCeModBorderD + 2.*fgkModuleWallThickness*tgbe)*0.5; trpa[6] = TMath::ATan(tgbe*0.5)*kRaddeg; //TMath::ATan((trpa[5] - trpa[4])/(2.*trpa[3]))*kRaddeg; trpa[7] = 2.*fgkModuleWallThickness; - trpa[8] = (fgkLengthInCeModBorder - 2.*fgkModuleWallThickness*tgbe)*0.5; - trpa[9] = (fgkLengthInCeModBorder + 2.*fgkModuleWallThickness*tgbe)*0.5; + trpa[8] = (fgkLengthInCeModBorderD - 2.*fgkModuleWallThickness*tgbe)*0.5; + trpa[9] = (fgkLengthInCeModBorderD + 2.*fgkModuleWallThickness*tgbe)*0.5; + //trpa[8] = (fgkLengthInCeModBorder - 2.*fgkModuleWallThickness*tgbe)*0.5; + //trpa[9] = (fgkLengthInCeModBorder + 2.*fgkModuleWallThickness*tgbe)*0.5; trpa[10] = TMath::ATan(tgbe*0.5)*kRaddeg; //TMath::ATan((trpa[5] - trpa[4])/(2.*trpa[3]))*kRaddeg; - gMC->Gsvolu("FWZ1","TRAP", idtmed[503], trpa, 11); // Fibre glass + gMC->Gsvolu("FWZ1D", "TRAP", idtmed[503], trpa, 11); // Fibre glass AliMatrix (idrotm[0],90., 90.,180.,0.,90.,180.); AliMatrix (idrotm[1],90., 90., 0.,0.,90., 0.); //xcoor = 0.; - ycoor = -(yFLT - fgkLengthInCeModBorder)*0.5; + //ycoor = -(yFLT - fgkLengthInCeModBorder)*0.5; + ycoor = -(yFLT - fgkLengthInCeModBorderD)*0.5; zcoor = fgkInterCentrModBorder1; - gMC->Gspos("FWZ1", 1,"FLTA", xcoor, ycoor, zcoor,idrotm[0],"ONLY"); - gMC->Gspos("FWZ1", 2,"FLTA", xcoor, ycoor,-zcoor,idrotm[1],"ONLY"); + gMC->Gspos("FWZ1D", 1, "FLTA", xcoor, ycoor, zcoor, idrotm[0], "ONLY"); + gMC->Gspos("FWZ1D", 2, "FLTA", xcoor, ycoor,-zcoor, idrotm[1], "ONLY"); Float_t y0B, ycoorB, zcoorB; if (fTOFHoles) { - y0B = fgkLengthInCeModBorder - fgkModuleWallThickness*tgbe; + //y0B = fgkLengthInCeModBorder - fgkModuleWallThickness*tgbe; + y0B = fgkLengthInCeModBorderD - fgkModuleWallThickness*tgbe; trpa[0] = xFLT*0.5; trpa[1] = 0.; trpa[2] = 0.; @@ -578,22 +517,48 @@ void AliTOFv6T0::CreateModules(Float_t xtof, Float_t ytof, Float_t zlenA, //xcoor = 0.; ycoorB = ycoor - fgkModuleWallThickness*0.5*tgbe; zcoorB = (zlenA*0.5 - 2.*fgkModuleWallThickness - fgkInterCentrModBorder1)*0.5 - 2.*fgkModuleWallThickness; - gMC->Gsvolu("FWZA","TRAP", idtmed[503], trpa, 11); // Fibre glass - gMC->Gspos("FWZA", 1,"FLTB", xcoor, ycoorB, zcoorB,idrotm[1],"ONLY"); - gMC->Gspos("FWZA", 2,"FLTC", xcoor, ycoorB,-zcoorB,idrotm[0],"ONLY"); + gMC->Gsvolu("FWZAD", "TRAP", idtmed[503], trpa, 11); // Fibre glass + gMC->Gspos("FWZAD", 1, "FLTB", xcoor, ycoorB, zcoorB, idrotm[1], "ONLY"); + gMC->Gspos("FWZAD", 2, "FLTC", xcoor, ycoorB,-zcoorB, idrotm[0], "ONLY"); } + + + tgal = (yFLT - fgkLengthInCeModBorderU - fgkLengthInCeModBorderD)/(fgkInterCentrModBorder2 - fgkInterCentrModBorder1); + alpha = TMath::ATan(tgal); + beta = (kPi*0.5 - alpha)*0.5; + tgbe = TMath::Tan(beta); + trpa[0] = xFLT*0.5; + trpa[1] = 0.; + trpa[2] = 0.; + trpa[3] = 2.*fgkModuleWallThickness; + //trpa[4] = (fgkLengthInCeModBorder - 2.*fgkModuleWallThickness*tgbe)*0.5; + //trpa[5] = (fgkLengthInCeModBorder + 2.*fgkModuleWallThickness*tgbe)*0.5; + trpa[4] = (fgkLengthInCeModBorderU - 2.*fgkModuleWallThickness*tgbe)*0.5; + trpa[5] = (fgkLengthInCeModBorderU + 2.*fgkModuleWallThickness*tgbe)*0.5; + trpa[6] = TMath::ATan(tgbe*0.5)*kRaddeg; //TMath::ATan((trpa[5] - trpa[4])/(2.*trpa[3]))*kRaddeg; + trpa[7] = 2.*fgkModuleWallThickness; + trpa[8] = (fgkLengthInCeModBorderU - 2.*fgkModuleWallThickness*tgbe)*0.5; + trpa[9] = (fgkLengthInCeModBorderU + 2.*fgkModuleWallThickness*tgbe)*0.5; + //trpa[8] = (fgkLengthInCeModBorder - 2.*fgkModuleWallThickness*tgbe)*0.5; + //trpa[9] = (fgkLengthInCeModBorder + 2.*fgkModuleWallThickness*tgbe)*0.5; + trpa[10] = TMath::ATan(tgbe*0.5)*kRaddeg; //TMath::ATan((trpa[5] - trpa[4])/(2.*trpa[3]))*kRaddeg; + gMC->Gsvolu("FWZ1U", "TRAP", idtmed[503], trpa, 11); // Fibre glass + + AliMatrix (idrotm[2],90.,270., 0.,0.,90.,180.); AliMatrix (idrotm[3],90.,270.,180.,0.,90., 0.); //xcoor = 0.; - ycoor = (yFLT - fgkLengthInCeModBorder)*0.5; + //ycoor = (yFLT - fgkLengthInCeModBorder)*0.5; + ycoor = (yFLT - fgkLengthInCeModBorderU)*0.5; zcoor = fgkInterCentrModBorder2; - gMC->Gspos("FWZ1", 3,"FLTA", xcoor, ycoor, zcoor,idrotm[2],"ONLY"); - gMC->Gspos("FWZ1", 4,"FLTA", xcoor, ycoor,-zcoor,idrotm[3],"ONLY"); + gMC->Gspos("FWZ1U", 1, "FLTA", xcoor, ycoor, zcoor,idrotm[2], "ONLY"); + gMC->Gspos("FWZ1U", 2, "FLTA", xcoor, ycoor,-zcoor,idrotm[3], "ONLY"); if (fTOFHoles) { - y0B = fgkLengthInCeModBorder + fgkModuleWallThickness*tgbe; + //y0B = fgkLengthInCeModBorder + fgkModuleWallThickness*tgbe; + y0B = fgkLengthInCeModBorderU + fgkModuleWallThickness*tgbe; trpa[0] = xFLT*0.5; trpa[1] = 0.; trpa[2] = 0.; @@ -605,13 +570,13 @@ void AliTOFv6T0::CreateModules(Float_t xtof, Float_t ytof, Float_t zlenA, trpa[8] = (y0B - fgkModuleWallThickness*tgbe)*0.5; trpa[9] = (y0B + fgkModuleWallThickness*tgbe)*0.5; trpa[10] = TMath::ATan(tgbe*0.5)*kRaddeg; //TMath::ATan((trpa[5] - trpa[4])/(2.*trpa[3]))*kRaddeg; - gMC->Gsvolu("FWZB","TRAP", idtmed[503], trpa, 11); // Fibre glass + gMC->Gsvolu("FWZBU", "TRAP", idtmed[503], trpa, 11); // Fibre glass //xcoor = 0.; ycoorB = ycoor - fgkModuleWallThickness*0.5*tgbe; zcoorB = (zlenA*0.5 - 2.*fgkModuleWallThickness - fgkInterCentrModBorder1)*0.5 - (fgkInterCentrModBorder2 - fgkInterCentrModBorder1) - 2.*fgkModuleWallThickness; - gMC->Gspos("FWZB", 1,"FLTB", xcoor, ycoorB, zcoorB,idrotm[3],"ONLY"); - gMC->Gspos("FWZB", 2,"FLTC", xcoor, ycoorB,-zcoorB,idrotm[2],"ONLY"); + gMC->Gspos("FWZBU", 1, "FLTB", xcoor, ycoorB, zcoorB, idrotm[3], "ONLY"); + gMC->Gspos("FWZBU", 2, "FLTC", xcoor, ycoorB,-zcoorB, idrotm[2], "ONLY"); } trpa[0] = 0.5*(fgkInterCentrModBorder2 - fgkInterCentrModBorder1)/TMath::Cos(alpha); @@ -620,16 +585,17 @@ void AliTOFv6T0::CreateModules(Float_t xtof, Float_t ytof, Float_t zlenA, trpa[3] = -beta*kRaddeg; trpa[4] = 0.; trpa[5] = 0.; - gMC->Gsvolu("FWZ2","PARA", idtmed[503], trpa, 6); // Fibre glass + gMC->Gsvolu("FWZ2", "PARA", idtmed[503], trpa, 6); // Fibre glass AliMatrix (idrotm[4], alpha*kRaddeg,90.,90.+alpha*kRaddeg,90.,90.,180.); AliMatrix (idrotm[5],180.-alpha*kRaddeg,90.,90.-alpha*kRaddeg,90.,90., 0.); //xcoor = 0.; - ycoor = 0.; + //ycoor = 0.; + ycoor = (fgkLengthInCeModBorderD - fgkLengthInCeModBorderU)*0.5; zcoor = (fgkInterCentrModBorder2 + fgkInterCentrModBorder1)*0.5; - gMC->Gspos("FWZ2", 1,"FLTA", xcoor, ycoor, zcoor,idrotm[4],"ONLY"); - gMC->Gspos("FWZ2", 2,"FLTA", xcoor, ycoor,-zcoor,idrotm[5],"ONLY"); + gMC->Gspos("FWZ2", 1, "FLTA", xcoor, ycoor, zcoor, idrotm[4], "ONLY"); + gMC->Gspos("FWZ2", 2, "FLTA", xcoor, ycoor,-zcoor, idrotm[5], "ONLY"); if (fTOFHoles) { trpa[0] = 0.5*(fgkInterCentrModBorder2 - fgkInterCentrModBorder1)/TMath::Cos(alpha); @@ -638,19 +604,18 @@ void AliTOFv6T0::CreateModules(Float_t xtof, Float_t ytof, Float_t zlenA, trpa[3] = -beta*kRaddeg; trpa[4] = 0.; trpa[5] = 0.; - gMC->Gsvolu("FWZC","PARA", idtmed[503], trpa, 6); // Fibre glass + gMC->Gsvolu("FWZC", "PARA", idtmed[503], trpa, 6); // Fibre glass //xcoor = 0.; ycoorB = ycoor - fgkModuleWallThickness*tgbe; zcoorB = (zlenA*0.5 - 2.*fgkModuleWallThickness - fgkInterCentrModBorder1)*0.5 - (fgkInterCentrModBorder2 - fgkInterCentrModBorder1)*0.5 - 2.*fgkModuleWallThickness; - gMC->Gspos("FWZC", 1,"FLTB", xcoor, ycoorB, zcoorB, idrotm[5],"ONLY"); - gMC->Gspos("FWZC", 2,"FLTC", xcoor, ycoorB,-zcoorB, idrotm[4],"ONLY"); + gMC->Gspos("FWZC", 1, "FLTB", xcoor, ycoorB, zcoorB, idrotm[5], "ONLY"); + gMC->Gspos("FWZC", 2, "FLTC", xcoor, ycoorB,-zcoorB, idrotm[4], "ONLY"); } // Definition and positioning // of the fibre glass walls between intermediate and lateral modules (FWZ3 and FWZ4) - tgal = (yFLT - 2.*fgkLengthExInModBorder)/(fgkExterInterModBorder2 - fgkExterInterModBorder1); alpha = TMath::ATan(tgal); beta = (kPi*0.5 - alpha)*0.5; @@ -666,34 +631,34 @@ void AliTOFv6T0::CreateModules(Float_t xtof, Float_t ytof, Float_t zlenA, trpa[8] = (fgkLengthExInModBorder - 2.*fgkModuleWallThickness*tgbe)*0.5; trpa[9] = (fgkLengthExInModBorder + 2.*fgkModuleWallThickness*tgbe)*0.5; trpa[10] = TMath::ATan(tgbe*0.5)*kRaddeg; //TMath::ATan((trpa[5] - trpa[4])/(2.*trpa[3]))*kRaddeg; - gMC->Gsvolu("FWZ3","TRAP", idtmed[503], trpa, 11); // Fibre glass + gMC->Gsvolu("FWZ3", "TRAP", idtmed[503], trpa, 11); // Fibre glass //xcoor = 0.; ycoor = (yFLT - fgkLengthExInModBorder)*0.5; zcoor = fgkExterInterModBorder1; - gMC->Gspos("FWZ3", 1,"FLTA", xcoor, ycoor, zcoor,idrotm[3],"ONLY"); - gMC->Gspos("FWZ3", 2,"FLTA", xcoor, ycoor,-zcoor,idrotm[2],"ONLY"); + gMC->Gspos("FWZ3", 1, "FLTA", xcoor, ycoor, zcoor,idrotm[3], "ONLY"); + gMC->Gspos("FWZ3", 2, "FLTA", xcoor, ycoor,-zcoor,idrotm[2], "ONLY"); if (fTOFHoles) { //xcoor = 0.; //ycoor = (yFLT - fgkLengthExInModBorder)*0.5; zcoor = -fgkExterInterModBorder1 + (zlenA*0.5 + fgkInterCentrModBorder1 - 2.*fgkModuleWallThickness)*0.5; - gMC->Gspos("FWZ3", 5,"FLTB", xcoor, ycoor, zcoor,idrotm[2],"ONLY"); - gMC->Gspos("FWZ3", 6,"FLTC", xcoor, ycoor,-zcoor,idrotm[3],"ONLY"); + gMC->Gspos("FWZ3", 5, "FLTB", xcoor, ycoor, zcoor, idrotm[2], "ONLY"); + gMC->Gspos("FWZ3", 6, "FLTC", xcoor, ycoor,-zcoor, idrotm[3], "ONLY"); } //xcoor = 0.; ycoor = -(yFLT - fgkLengthExInModBorder)*0.5; zcoor = fgkExterInterModBorder2; - gMC->Gspos("FWZ3", 3,"FLTA", xcoor, ycoor, zcoor,idrotm[1],"ONLY"); - gMC->Gspos("FWZ3", 4,"FLTA", xcoor, ycoor,-zcoor,idrotm[0],"ONLY"); + gMC->Gspos("FWZ3", 3, "FLTA", xcoor, ycoor, zcoor, idrotm[1], "ONLY"); + gMC->Gspos("FWZ3", 4, "FLTA", xcoor, ycoor,-zcoor, idrotm[0], "ONLY"); if (fTOFHoles) { //xcoor = 0.; //ycoor = -(yFLT - fgkLengthExInModBorder)*0.5; zcoor = -fgkExterInterModBorder2 + (zlenA*0.5 + fgkInterCentrModBorder1 - 2.*fgkModuleWallThickness)*0.5; - gMC->Gspos("FWZ3", 7,"FLTB", xcoor, ycoor, zcoor,idrotm[0],"ONLY"); - gMC->Gspos("FWZ3", 8,"FLTC", xcoor, ycoor,-zcoor,idrotm[1],"ONLY"); + gMC->Gspos("FWZ3", 7, "FLTB", xcoor, ycoor, zcoor, idrotm[0], "ONLY"); + gMC->Gspos("FWZ3", 8, "FLTC", xcoor, ycoor,-zcoor, idrotm[1], "ONLY"); } trpa[0] = 0.5*(fgkExterInterModBorder2 - fgkExterInterModBorder1)/TMath::Cos(alpha); @@ -702,7 +667,7 @@ void AliTOFv6T0::CreateModules(Float_t xtof, Float_t ytof, Float_t zlenA, trpa[3] = -beta*kRaddeg; trpa[4] = 0.; trpa[5] = 0.; - gMC->Gsvolu("FWZ4","PARA", idtmed[503], trpa, 6); // Fibre glass + gMC->Gsvolu("FWZ4", "PARA", idtmed[503], trpa, 6); // Fibre glass AliMatrix (idrotm[6],alpha*kRaddeg,90.,90.+alpha*kRaddeg,90.,90.,180.); AliMatrix (idrotm[7],180.-alpha*kRaddeg,90.,90.-alpha*kRaddeg,90.,90.,0.); @@ -710,16 +675,16 @@ void AliTOFv6T0::CreateModules(Float_t xtof, Float_t ytof, Float_t zlenA, //xcoor = 0.; ycoor = 0.; zcoor = (fgkExterInterModBorder2 + fgkExterInterModBorder1)*0.5; - gMC->Gspos("FWZ4", 1,"FLTA", xcoor, ycoor, zcoor,idrotm[7],"ONLY"); - gMC->Gspos("FWZ4", 2,"FLTA", xcoor, ycoor,-zcoor,idrotm[6],"ONLY"); + gMC->Gspos("FWZ4", 1, "FLTA", xcoor, ycoor, zcoor, idrotm[7], "ONLY"); + gMC->Gspos("FWZ4", 2, "FLTA", xcoor, ycoor,-zcoor, idrotm[6], "ONLY"); if (fTOFHoles) { //xcoor = 0.; //ycoor = 0.; zcoor = -(fgkExterInterModBorder2 + fgkExterInterModBorder1)*0.5 + (zlenA*0.5 + fgkInterCentrModBorder1 - 2.*fgkModuleWallThickness)*0.5; - gMC->Gspos("FWZ4", 3,"FLTB", xcoor, ycoor, zcoor,idrotm[6],"ONLY"); - gMC->Gspos("FWZ4", 4,"FLTC", xcoor, ycoor,-zcoor,idrotm[7],"ONLY"); + gMC->Gspos("FWZ4", 3, "FLTB", xcoor, ycoor, zcoor, idrotm[6], "ONLY"); + gMC->Gspos("FWZ4", 4, "FLTC", xcoor, ycoor,-zcoor, idrotm[7], "ONLY"); } } @@ -731,18 +696,12 @@ void AliTOFv6T0::CreateModuleCovers(Float_t xtof, Float_t zlenA) const // Create covers for module: // per each module zone, defined according to // fgkInterCentrModBorder2, fgkExterInterModBorder1 and zlenA+2 values, - // there is a CORNICE of thickness 2cm in Al + // there is a frame of thickness 2cm in Al // and the contained zones in honeycomb of Al. // There is also an interface layer (1.6mm thichness) // and plastic and Cu corresponding to the flat cables. // - // module cover between strips and cards (cm) - //const Float_t fgkModuleCoverThickness = 2.; - - //const Float_t fgkInterCentrModBorder2 = 57.5; - //const Float_t fgkExterInterModBorder1 = 196.0; - Int_t *idtmed = fIdtmed->GetArray()-499; Float_t par[3]; @@ -864,7 +823,7 @@ void AliTOFv6T0::CreateModuleCovers(Float_t xtof, Float_t zlenA) const // volumes for flat cables // plastic - const Float_t kPlasticFlatCableThickness = 0.24; + const Float_t kPlasticFlatCableThickness = 0.25; par[0] = xtof*0.5; par[1] = kPlasticFlatCableThickness*0.5; par[2] = fgkInterCentrModBorder2 - 2.; @@ -908,38 +867,19 @@ void AliTOFv6T0::CreateModuleCovers(Float_t xtof, Float_t zlenA) const par[1] = kCopperFlatCableThickness*0.5; par[2] = fgkInterCentrModBorder2 - 2.; gMC->Gsvolu("FCC1", "BOX ", idtmed[512], par, 3); // Cu - //xcoor = 0.; - ycoor = -kAlCoverThickness*0.5 - kPlasticFlatCableThickness - kCopperFlatCableThickness*0.5; - zcoor = 0.; - gMC->Gspos("FCC1", 0, "FPEA", xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FCC1", 0, "FFC1", 0., 0., 0., 0, "ONLY"); //par[0] = xtof*0.5; //par[1] = kCopperFlatCableThickness*0.5; par[2] = (fgkExterInterModBorder1 - fgkInterCentrModBorder2)*0.5 - 2.; gMC->Gsvolu("FCC2", "BOX ", idtmed[512], par, 3); // Cu - //xcoor = 0.; - //ycoor = -kAlCoverThickness*0.5 - kPlasticFlatCableThickness - kCopperFlatCableThickness*0.5; - zcoor = (fgkExterInterModBorder1 + fgkInterCentrModBorder2)*0.5; - gMC->Gspos("FCC2", 1, "FPEA", xcoor, ycoor, zcoor, 0, "ONLY"); - gMC->Gspos("FCC2", 2, "FPEA", xcoor, ycoor,-zcoor, 0, "ONLY"); - if (fTOFHoles) { - gMC->Gspos("FCC2", 1, "FPEB", xcoor, ycoor, zcoor, 0, "ONLY"); - gMC->Gspos("FCC2", 2, "FPEB", xcoor, ycoor,-zcoor, 0, "ONLY"); - } + gMC->Gspos("FCC2", 0, "FFC2", 0., 0., 0., 0, "ONLY"); //par[0] = xtof*0.5; //par[1] = kCopperFlatCableThickness*0.5; par[2] = (zlenA*0.5 + 2. - fgkExterInterModBorder1)*0.5 - 2.; gMC->Gsvolu("FCC3", "BOX ", idtmed[512], par, 3); // Cu - //xcoor = 0.; - //ycoor = -kAlCoverThickness*0.5 - kPlasticFlatCableThickness - kCopperFlatCableThickness*0.5; - zcoor = (zlenA*0.5 + 2. + fgkExterInterModBorder1)*0.5; - gMC->Gspos("FCC3", 1, "FPEA", xcoor, ycoor, zcoor, 0, "ONLY"); - gMC->Gspos("FCC3", 2, "FPEA", xcoor, ycoor,-zcoor, 0, "ONLY"); - if (fTOFHoles) { - gMC->Gspos("FCC3", 1, "FPEB", xcoor, ycoor, zcoor, 0, "ONLY"); - gMC->Gspos("FCC3", 2, "FPEB", xcoor, ycoor,-zcoor, 0, "ONLY"); - } + gMC->Gspos("FCC3", 0, "FFC3", 0., 0., 0., 0, "ONLY"); } @@ -949,11 +889,11 @@ void AliTOFv6T0::MakeModulesInBTOFvolumes(Float_t ytof, Float_t zlenA) const // // Fill BTOF_%i (for i=0,...17) volumes // with volumes FTOA (MRPC strip container), - // In case of TOF holes, two sectors (i.e. 11th and 12th) + // In case of TOF holes, three sectors (i.e. 13th, 14th and 15th) // are filled with volumes: FTOB and FTOC (MRPC containers), // - //const Float_t fgkInterCentrModBorder1 = 49.5; + const Int_t kSize=16; Int_t idrotm[1]; @@ -964,13 +904,12 @@ void AliTOFv6T0::MakeModulesInBTOFvolumes(Float_t ytof, Float_t zlenA) const xcoor = 0.; // Positioning of fibre glass modules (FTOA, FTOB and FTOC) - for(Int_t isec=0; isecNSectors(); isec++){ if(fTOFSectors[isec]==-1)continue; - char name[16]; - sprintf(name, "BTOF%d",isec); - if (fTOFHoles && (isec==11||isec==12)) { - //if (fTOFHoles && (isec==16||isec==17)) { \\Old 6h convention + + char name[kSize]; + snprintf(name, kSize, "BTOF%d",isec); + if (fTOFHoles && (isec==13 || isec==14 || isec==15)) { //xcoor = 0.; ycoor = (zlenA*0.5 + fgkInterCentrModBorder1)*0.5; zcoor = -ytof * 0.25; @@ -993,13 +932,12 @@ void AliTOFv6T0::MakeCoversInBTOFvolumes() const // // Fill BTOF_%i (for i=0,...17) volumes // with volumes FPEA (to separate strips from FEA cards) - // In case of TOF holes, two sectors (i.e. 11th and 12th) + // In case of TOF holes, three sectors (i.e. 13th, 14th and 15th) // are filled with FPEB volumes // (to separate MRPC strips from FEA cards) // - // module cover between strips and cards (cm) - //const Float_t fgkModuleCoverThickness = 2.; + const Int_t kSize=16; Int_t idrotm[1]; @@ -1011,15 +949,13 @@ void AliTOFv6T0::MakeCoversInBTOFvolumes() const ycoor = 0.; zcoor = fgkModuleCoverThickness*0.5; - char name[16]; + char name[kSize]; // Positioning of module covers (FPEA, FPEB) - for(Int_t isec=0; isecNSectors(); isec++) { if(fTOFSectors[isec]==-1)continue; - sprintf(name, "BTOF%d",isec); - //if (fTOFHoles && (isec==16||isec==17)) \\Old 6h convention - if (fTOFHoles && (isec==11||isec==12)) + snprintf(name, kSize, "BTOF%d",isec); + if (fTOFHoles && (isec==13 || isec==14 || isec==15)) gMC->Gspos("FPEB", 0, name, xcoor, ycoor, zcoor, idrotm[0], "ONLY"); else gMC->Gspos("FPEA", 0, name, xcoor, ycoor, zcoor, idrotm[0], "ONLY"); @@ -1031,14 +967,13 @@ void AliTOFv6T0::MakeCoversInBTOFvolumes() const void AliTOFv6T0::MakeBackInBTOFvolumes(Float_t ytof) const { // - // Fill BTOF_%i (for i=0,...17) volumes - // with volumes FAIA (FEA cards and services container) - // In case of TOF holes, two sectors (i.e. 11th and 12th) - // are filled with volumes FAIB (FEA cards and services container). + // Fill BTOF_%i (for i=0,...17) volumes with volumes called FAIA and + // FAIC (FEA cards and services container). + // In case of TOF holes, three sectors (i.e. 13th, 14th and 15th) are + // filled with volumes FAIB (FEA cards and services container). // - // module cover between strips and cards (cm) - //const Float_t fgkModuleCoverThickness = 2.; + const Int_t kSize=16; Int_t idrotm[1]; @@ -1050,18 +985,20 @@ void AliTOFv6T0::MakeBackInBTOFvolumes(Float_t ytof) const ycoor = 0.; zcoor = fgkModuleCoverThickness + (ytof*0.5 - fgkModuleCoverThickness)*0.5; - char name[16]; - - // Positioning of FEA cards and services containers (FAIA and FAIB) + char name[kSize]; + // Positioning of FEA cards and services containers (FAIA, FAIC and FAIB) for(Int_t isec=0; isecNSectors(); isec++) { if(fTOFSectors[isec]==-1)continue; - sprintf(name, "BTOF%d",isec); - //if (fTOFHoles && (isec==16||isec==17)) \\Old 6h convention - if (fTOFHoles && (isec==11||isec==12)) - gMC->Gspos("FAIB", 0, name, xcoor, ycoor, zcoor, idrotm[0], "ONLY"); - else + snprintf(name, kSize, "BTOF%d",isec); + if (fgkFEAwithMasks[isec]) gMC->Gspos("FAIA", 0, name, xcoor, ycoor, zcoor, idrotm[0], "ONLY"); + else { + if (fTOFHoles && (isec==13 || isec==14 || isec==15)) + gMC->Gspos("FAIB", 0, name, xcoor, ycoor, zcoor, idrotm[0], "ONLY"); + else + gMC->Gspos("FAIC", 0, name, xcoor, ycoor, zcoor, idrotm[0], "ONLY"); + } } } @@ -1074,11 +1011,6 @@ void AliTOFv6T0::MakeStripsInModules(Float_t ytof, Float_t zlenA) const // Insert FSTR volume in FLTA/B/C volumes // - // module wall thickness (cm) - //const Float_t fgkModuleWallThickness = 0.33; - - //const Float_t fgkInterCentrModBorder1 = 49.5; - Float_t yFLT = ytof*0.5 - fgkModuleWallThickness; Int_t *idtmed = fIdtmed->GetArray()-499; @@ -1124,7 +1056,7 @@ void AliTOFv6T0::MakeStripsInModules(Float_t ytof, Float_t zlenA) const // FSTR volume definition-filling this volume with non sensitive Gas Mixture Float_t parfp[3]={klstripx*0.5, khstripy*0.5, kwstripz*0.5}; - gMC->Gsvolu("FSTR","BOX",idtmed[506],parfp,3); // Freon mix + gMC->Gsvolu("FSTR", "BOX", idtmed[506], parfp, 3); // Freon mix Float_t posfp[3]={0.,0.,0.}; @@ -1132,78 +1064,79 @@ void AliTOFv6T0::MakeStripsInModules(Float_t ytof, Float_t zlenA) const //parfp[0] = klstripx*0.5; parfp[1] = khhony*0.5; parfp[2] = kwhonz*0.5; - gMC->Gsvolu("FHON","BOX",idtmed[501],parfp,3); // Nomex (Honeycomb) + gMC->Gsvolu("FHON", "BOX", idtmed[501], parfp, 3); // Nomex (Honeycomb) // positioning 2 NOMEX Layers on FSTR volume //posfp[0] = 0.; posfp[1] =-khstripy*0.5 + parfp[1]; //posfp[2] = 0.; - gMC->Gspos("FHON",1,"FSTR",0., posfp[1],0.,0,"ONLY"); - gMC->Gspos("FHON",2,"FSTR",0.,-posfp[1],0.,0,"ONLY"); + gMC->Gspos("FHON", 1, "FSTR", 0., posfp[1], 0., 0, "ONLY"); + gMC->Gspos("FHON", 2, "FSTR", 0.,-posfp[1], 0., 0, "ONLY"); // Lower PCB Layer definition //parfp[0] = klstripx*0.5; parfp[1] = khpcby*0.5; parfp[2] = kwpcbz1*0.5; - gMC->Gsvolu("FPC1","BOX",idtmed[502],parfp,3); // G10 + gMC->Gsvolu("FPC1", "BOX", idtmed[502], parfp, 3); // G10 // Upper PCB Layer definition //parfp[0] = klstripx*0.5; //parfp[1] = khpcby*0.5; parfp[2] = kwpcbz2*0.5; - gMC->Gsvolu("FPC2","BOX",idtmed[502],parfp,3); // G10 + gMC->Gsvolu("FPC2", "BOX", idtmed[502], parfp, 3); // G10 // positioning 2 external PCB Layers in FSTR volume //posfp[0] = 0.; posfp[1] =-khstripy*0.5+khhony+parfp[1]; //posfp[2] = 0.; - gMC->Gspos("FPC1",1,"FSTR",0.,-posfp[1],0.,0,"ONLY"); - gMC->Gspos("FPC2",1,"FSTR",0., posfp[1],0.,0,"ONLY"); + gMC->Gspos("FPC1", 1, "FSTR", 0.,-posfp[1], 0., 0, "ONLY"); + gMC->Gspos("FPC2", 1, "FSTR", 0., posfp[1], 0., 0, "ONLY"); // Central PCB layer definition //parfp[0] = klstripx*0.5; parfp[1] = khcpcby*0.5; parfp[2] = kwcpcbz*0.5; - gMC->Gsvolu("FPCB","BOX",idtmed[502],parfp,3); // G10 + gMC->Gsvolu("FPCB", "BOX", idtmed[502], parfp, 3); // G10 + gGeoManager->GetVolume("FPCB")->VisibleDaughters(kFALSE); // positioning the central PCB layer - gMC->Gspos("FPCB",1,"FSTR",0.,0.,0.,0,"ONLY"); + gMC->Gspos("FPCB", 1, "FSTR", 0., 0., 0., 0, "ONLY"); // Sensitive volume definition Float_t parfs[3] = {klsensmx*0.5, khsensmy*0.5, kwsensmz*0.5}; - gMC->Gsvolu("FSEN","BOX",idtmed[507],parfs,3); // Cu sensitive + gMC->Gsvolu("FSEN", "BOX", idtmed[507], parfs, 3); // Cu sensitive // dividing FSEN along z in knz=2 and along x in knx=48 - gMC->Gsdvn("FSEZ","FSEN",knz,3); - gMC->Gsdvn("FPAD","FSEZ",knx,1); + gMC->Gsdvn("FSEZ", "FSEN", knz, 3); + gMC->Gsdvn("FPAD", "FSEZ", knx, 1); // positioning sensitive layer inside FPCB - gMC->Gspos("FSEN",1,"FPCB",0.,0.,0.,0,"ONLY"); + gMC->Gspos("FSEN", 1, "FPCB", 0., 0., 0., 0, "ONLY"); // RED GLASS Layer definition //parfp[0] = klstripx*0.5; parfp[1] = khrgly*0.5; parfp[2] = kwrglz*0.5; - gMC->Gsvolu("FRGL","BOX",idtmed[508],parfp,3); // red glass + gMC->Gsvolu("FRGL", "BOX", idtmed[508], parfp, 3); // red glass // positioning 4 RED GLASS Layers in FSTR volume //posfp[0] = 0.; posfp[1] = -khstripy*0.5+khhony+khpcby+parfp[1]; //posfp[2] = 0.; - gMC->Gspos("FRGL",1,"FSTR",0., posfp[1],0.,0,"ONLY"); - gMC->Gspos("FRGL",4,"FSTR",0.,-posfp[1],0.,0,"ONLY"); + gMC->Gspos("FRGL", 1, "FSTR", 0., posfp[1], 0., 0, "ONLY"); + gMC->Gspos("FRGL", 4, "FSTR", 0.,-posfp[1], 0., 0, "ONLY"); //posfp[0] = 0.; posfp[1] = (khcpcby+khrgly)*0.5; //posfp[2] = 0.; - gMC->Gspos("FRGL",2,"FSTR",0.,-posfp[1],0.,0,"ONLY"); - gMC->Gspos("FRGL",3,"FSTR",0., posfp[1],0.,0,"ONLY"); + gMC->Gspos("FRGL", 2, "FSTR", 0.,-posfp[1], 0., 0, "ONLY"); + gMC->Gspos("FRGL", 3, "FSTR", 0., posfp[1], 0., 0, "ONLY"); // GLASS Layer definition //parfp[0] = klstripx*0.5; parfp[1] = khglassy; parfp[2] = kwglfz*0.5; - gMC->Gsvolu("FGLF","BOX",idtmed[508],parfp,3); // glass + gMC->Gsvolu("FGLF", "BOX", idtmed[508], parfp, 3); // glass // positioning 2 GLASS Layers in FSTR volume //posfp[0] = 0.; posfp[1] = (khcpcby + khglfy)*0.5 + khrgly; //posfp[2] = 0.; - gMC->Gspos("FGLF",1,"FSTR",0.,-posfp[1],0.,0,"ONLY"); - gMC->Gspos("FGLF",2,"FSTR",0., posfp[1],0.,0,"ONLY"); + gMC->Gspos("FGLF", 1, "FSTR", 0.,-posfp[1], 0., 0, "ONLY"); + gMC->Gspos("FGLF", 2, "FSTR", 0., posfp[1], 0., 0, "ONLY"); // Positioning the Strips (FSTR volumes) in the FLT volumes Int_t maxStripNumbers [5] ={fTOFGeometry->NStripC(), @@ -1230,13 +1163,13 @@ void AliTOFv6T0::MakeStripsInModules(Float_t ytof, Float_t zlenA) const xpos = 0.; ypos = fTOFGeometry->GetHeights(iplate,istrip) + yFLT*0.5; zpos = fTOFGeometry->GetDistances(iplate,istrip); - gMC->Gspos("FSTR",istrip+totalStrip+1,"FLTA", xpos, ypos,-zpos,idrotm[istrip+totalStrip], "ONLY"); + gMC->Gspos("FSTR", istrip+totalStrip+1, "FLTA", xpos, ypos,-zpos, idrotm[istrip+totalStrip], "ONLY"); if (fTOFHoles) { if (istrip+totalStrip+1>53) - gMC->Gspos("FSTR",istrip+totalStrip+1,"FLTC", xpos, ypos,-zpos-(zlenA*0.5 - 2.*fgkModuleWallThickness + fgkInterCentrModBorder1)*0.5,idrotm[istrip+totalStrip],"ONLY"); + gMC->Gspos("FSTR", istrip+totalStrip+1, "FLTC", xpos, ypos,-zpos-(zlenA*0.5 - 2.*fgkModuleWallThickness + fgkInterCentrModBorder1)*0.5, idrotm[istrip+totalStrip], "ONLY"); if (istrip+totalStrip+1<39) - gMC->Gspos("FSTR",istrip+totalStrip+1,"FLTB", xpos, ypos,-zpos+(zlenA*0.5 - 2.*fgkModuleWallThickness + fgkInterCentrModBorder1)*0.5,idrotm[istrip+totalStrip],"ONLY"); + gMC->Gspos("FSTR", istrip+totalStrip+1, "FLTB", xpos, ypos,-zpos+(zlenA*0.5 - 2.*fgkModuleWallThickness + fgkInterCentrModBorder1)*0.5, idrotm[istrip+totalStrip], "ONLY"); } } } @@ -1250,22 +1183,16 @@ void AliTOFv6T0::CreateBackZone(Float_t xtof, Float_t ytof, Float_t zlenA) const // Define: // - containers for FEA cards, cooling system // signal cables and supermodule support structure - // (volumes called FAIA/B), + // (volumes called FAIA/B/C), // - containers for FEA cards and some cooling // elements for a FEA (volumes called FCA1/2). // - // module cover between strips and cards (cm) - //const Float_t fgkModuleCoverThickness = 2.; - - //const Float_t fgkFEAwidth1 = 19.; - //const Float_t fgkFEAwidth2 = 38.5; - Int_t *idtmed = fIdtmed->GetArray()-499; Int_t idrotm[1]; - // Definition of the air card containers (FAIA and FAIB) + // Definition of the air card containers (FAIA, FAIC and FAIB) Float_t par[3]; par[0] = xtof*0.5; @@ -1273,13 +1200,18 @@ void AliTOFv6T0::CreateBackZone(Float_t xtof, Float_t ytof, Float_t zlenA) const par[2] = zlenA*0.5; gMC->Gsvolu("FAIA", "BOX ", idtmed[500], par, 3); // Air if (fTOFHoles) gMC->Gsvolu("FAIB", "BOX ", idtmed[500], par, 3); // Air + gMC->Gsvolu("FAIC", "BOX ", idtmed[500], par, 3); // Air + + Float_t feaParam[3] = {fgkFEAparameters[0], fgkFEAparameters[1], fgkFEAparameters[2]}; + Float_t feaRoof1[3] = {fgkRoof1parameters[0], fgkRoof1parameters[1], fgkRoof1parameters[2]}; + Float_t al3[3] = {fgkAl3parameters[0], fgkAl3parameters[1], fgkAl3parameters[2]}; + //Float_t feaRoof2[3] = {fgkRoof2parameters[0], fgkRoof2parameters[1], fgkRoof2parameters[2]}; // FEA card mother-volume definition - Float_t carpar[3] = {fgkFEAwidth1*0.5, 5.6, 0.45}; + Float_t carpar[3] = {xtof*0.5 - fgkCBLw - fgkSawThickness, + feaParam[1] + feaRoof1[1] + fgkRoof2parameters[1]*0.5, + feaRoof1[2] + fgkBetweenLandMask*0.5 + al3[2]}; gMC->Gsvolu("FCA1", "BOX ", idtmed[500], carpar, 3); // Air - carpar[0] = fgkFEAwidth2*0.5; - //carpar[1] = 5.6; - //carpar[2] = 0.45; gMC->Gsvolu("FCA2", "BOX ", idtmed[500], carpar, 3); // Air // rotation matrix @@ -1289,13 +1221,16 @@ void AliTOFv6T0::CreateBackZone(Float_t xtof, Float_t ytof, Float_t zlenA) const Float_t rowstep = 6.66; Float_t rowgap[5] = {13.5, 22.9, 16.94, 23.8, 20.4}; Int_t rowb[5] = {6, 7, 6, 19, 7}; - Float_t carpos[3] = {25. - xtof*0.5, - (11.5 - (ytof*0.5 - fgkModuleCoverThickness))*0.5, - 0.}; + Float_t carpos[3] = {0., + -(ytof*0.5 - fgkModuleCoverThickness)*0.5 + carpar[1], + -0.8}; + gMC->Gspos("FCA1", 91, "FAIA", carpos[0], carpos[1], carpos[2], 0, "MANY"); + gMC->Gspos("FCA2", 91, "FAIC", carpos[0], carpos[1], carpos[2], 0, "MANY"); + Int_t row = 1; Int_t nrow = 0; for (Int_t sg= -1; sg< 2; sg+= 2) { - carpos[2] = sg*zlenA*0.5; + carpos[2] = sg*zlenA*0.5 - 0.8; for (Int_t nb=0; nb<5; ++nb) { carpos[2] = carpos[2] - sg*(rowgap[nb] - rowstep); nrow = row + rowb[nb]; @@ -1304,38 +1239,32 @@ void AliTOFv6T0::CreateBackZone(Float_t xtof, Float_t ytof, Float_t zlenA) const carpos[2] -= sg*rowstep; if (nb==4) { - gMC->Gspos("FCA1",2*row, "FAIA", carpos[0],carpos[1],carpos[2], 0,"ONLY"); - gMC->Gspos("FCA1",2*row-1,"FAIA",-carpos[0],carpos[1],carpos[2], 0,"ONLY"); - gMC->Gspos("FCA2", row, "FAIA", 0.,carpos[1],carpos[2], 0,"ONLY"); + gMC->Gspos("FCA1", row, "FAIA", carpos[0], carpos[1], carpos[2], 0, "ONLY"); + gMC->Gspos("FCA2", row, "FAIC", carpos[0], carpos[1], carpos[2], 0, "ONLY"); } else { switch (sg) { case 1: - gMC->Gspos("FCA1",2*row, "FAIA", carpos[0],carpos[1],carpos[2], 0,"ONLY"); - gMC->Gspos("FCA1",2*row-1,"FAIA",-carpos[0],carpos[1],carpos[2], 0,"ONLY"); - gMC->Gspos("FCA2", row, "FAIA", 0.,carpos[1],carpos[2], 0,"ONLY"); + gMC->Gspos("FCA1", row, "FAIA", carpos[0], carpos[1], carpos[2], 0, "ONLY"); + gMC->Gspos("FCA2", row, "FAIC", carpos[0], carpos[1], carpos[2], 0, "ONLY"); break; case -1: - gMC->Gspos("FCA1",2*row, "FAIA", carpos[0],carpos[1],carpos[2], idrotm[0],"ONLY"); - gMC->Gspos("FCA1",2*row-1,"FAIA",-carpos[0],carpos[1],carpos[2], idrotm[0],"ONLY"); - gMC->Gspos("FCA2", row, "FAIA", 0.,carpos[1],carpos[2], idrotm[0],"ONLY"); + gMC->Gspos("FCA1", row, "FAIA", carpos[0], carpos[1], carpos[2], idrotm[0], "ONLY"); + gMC->Gspos("FCA2", row, "FAIC", carpos[0], carpos[1], carpos[2], idrotm[0], "ONLY"); break; } } + } } } - gMC->Gspos("FCA1", 182, "FAIA", carpos[0],carpos[1],0., 0,"ONLY"); - gMC->Gspos("FCA1", 181, "FAIA",-carpos[0],carpos[1],0., 0,"ONLY"); - gMC->Gspos("FCA2", 91, "FAIA", 0., carpos[1], 0., 0, "ONLY"); - if (fTOFHoles) { row = 1; for (Int_t sg= -1; sg< 2; sg+= 2) { - carpos[2] = sg*zlenA*0.5; + carpos[2] = sg*zlenA*0.5 - 0.8; for (Int_t nb=0; nb<4; ++nb) { carpos[2] = carpos[2] - sg*(rowgap[nb] - rowstep); nrow = row + rowb[nb]; @@ -1344,14 +1273,10 @@ void AliTOFv6T0::CreateBackZone(Float_t xtof, Float_t ytof, Float_t zlenA) const switch (sg) { case 1: - gMC->Gspos("FCA1",2*row, "FAIB", carpos[0],carpos[1],carpos[2], 0,"ONLY"); - gMC->Gspos("FCA1",2*row-1,"FAIB",-carpos[0],carpos[1],carpos[2], 0,"ONLY"); - gMC->Gspos("FCA2", row, "FAIB", 0.,carpos[1],carpos[2], 0,"ONLY"); + gMC->Gspos("FCA1", row, "FAIB", carpos[0], carpos[1], carpos[2], 0, "ONLY"); break; case -1: - gMC->Gspos("FCA1",2*row, "FAIB", carpos[0],carpos[1],carpos[2], idrotm[0],"ONLY"); - gMC->Gspos("FCA1",2*row-1,"FAIB",-carpos[0],carpos[1],carpos[2], idrotm[0],"ONLY"); - gMC->Gspos("FCA2", row, "FAIB", 0.,carpos[1],carpos[2], idrotm[0],"ONLY"); + gMC->Gspos("FCA1", row, "FAIB", carpos[0], carpos[1], carpos[2], idrotm[0], "ONLY"); break; } } @@ -1362,7 +1287,7 @@ void AliTOFv6T0::CreateBackZone(Float_t xtof, Float_t ytof, Float_t zlenA) const } //_____________________________________________________________________________ -void AliTOFv6T0::MakeFrontEndElectronics() const +void AliTOFv6T0::MakeFrontEndElectronics(Float_t xtof) const { // // Fill FCA1/2 volumes with FEA cards (FFEA volumes). @@ -1370,373 +1295,226 @@ void AliTOFv6T0::MakeFrontEndElectronics() const Int_t *idtmed = fIdtmed->GetArray()-499; - //const Float_t fgkFEAwidth1 = 19.; - // FEA card volume definition - Float_t feaParam1[3] = {fgkFEAwidth1*0.5, 5.6, 0.1}; - gMC->Gsvolu("FFEA", "BOX ", idtmed[502], feaParam1, 3); // G10 + Float_t feaParam[3] = {fgkFEAparameters[0], fgkFEAparameters[1], fgkFEAparameters[2]}; + gMC->Gsvolu("FFEA", "BOX ", idtmed[502], feaParam, 3); // G10 + + Float_t al1[3] = {fgkAl1parameters[0], fgkAl1parameters[1], fgkAl1parameters[2]}; + Float_t al3[3] = {fgkAl3parameters[0], fgkAl3parameters[1], fgkAl3parameters[2]}; + Float_t feaRoof1[3] = {fgkRoof1parameters[0], fgkRoof1parameters[1], fgkRoof1parameters[2]}; + //Float_t feaRoof2[3] = {fgkRoof2parameters[0], fgkRoof2parameters[1], fgkRoof2parameters[2]}; + + Float_t carpar[3] = {xtof*0.5 - fgkCBLw - fgkSawThickness, + feaParam[1] + feaRoof1[1] + fgkRoof2parameters[1]*0.5, + feaRoof1[2] + fgkBetweenLandMask*0.5 + al3[2]}; // FEA card volume positioning - Float_t carpar[3] = {fgkFEAwidth1*0.5, 5.6, 0.45}; - gMC->Gspos("FFEA", 1, "FCA1", 0., 0., -carpar[2]+feaParam1[2], 0, "ONLY"); - gMC->Gspos("FFEA", 2, "FCA2", -(feaParam1[0]+0.25), 0., -carpar[2]+feaParam1[2], 0, "ONLY"); - gMC->Gspos("FFEA", 3, "FCA2", (feaParam1[0]+0.25), 0., -carpar[2]+feaParam1[2], 0, "ONLY"); + Float_t xCoor = xtof*0.5 - 25.; + Float_t yCoor =-carpar[1] + feaParam[1]; + Float_t zCoor =-carpar[2] + (2.*feaRoof1[2] - 2.*al1[2] - feaParam[2]); + gMC->Gspos("FFEA", 1, "FCA1",-xCoor, yCoor, zCoor, 0, "ONLY"); + gMC->Gspos("FFEA", 4, "FCA1", xCoor, yCoor, zCoor, 0, "ONLY"); + gMC->Gspos("FFEA", 1, "FCA2",-xCoor, yCoor, zCoor, 0, "ONLY"); + gMC->Gspos("FFEA", 4, "FCA2", xCoor, yCoor, zCoor, 0, "ONLY"); + xCoor = feaParam[0] + (fgkFEAwidth2*0.5 - fgkFEAwidth1); + gMC->Gspos("FFEA", 2, "FCA1",-xCoor, yCoor, zCoor, 0, "ONLY"); + gMC->Gspos("FFEA", 3, "FCA1", xCoor, yCoor, zCoor, 0, "ONLY"); + gMC->Gspos("FFEA", 2, "FCA2",-xCoor, yCoor, zCoor, 0, "ONLY"); + gMC->Gspos("FFEA", 3, "FCA2", xCoor, yCoor, zCoor, 0, "ONLY"); } //_____________________________________________________________________________ -void AliTOFv6T0::MakeFEACooling(Float_t xtof, Float_t ytof, Float_t zlenA) const +void AliTOFv6T0::MakeFEACooling(Float_t xtof) const { // // Make cooling system attached to each FEA card // (FAL1, FRO1 and FBAR/1/2 volumes) - // in FAIA/B and FCA1/2 volume containers. + // in FCA1/2 volume containers. // - // honeycomb layer between strips and cards (cm) - //const Float_t fgkModuleCoverThickness = 2.; - Int_t *idtmed = fIdtmed->GetArray()-499; - //const Float_t fgkFEAwidth1 = 19.; - - Float_t feaParam1[3] = {fgkFEAwidth1*0.5, 5.6, 0.1}; - // first FEA cooling element definition - Float_t al1[3] = {fgkFEAwidth1*0.5, 0.4, 0.2}; + Float_t al1[3] = {fgkAl1parameters[0], fgkAl1parameters[1], fgkAl1parameters[2]}; gMC->Gsvolu("FAL1", "BOX ", idtmed[504], al1, 3); // Al - // first FEA cooling element positioning - Float_t carpar[3] = {fgkFEAwidth1*0.5, 5.6, 0.45}; - gMC->Gspos("FAL1", 1, "FCA1", 0., carpar[1]-al1[1], -carpar[2]+2.*feaParam1[2]+al1[2], 0, "ONLY"); - gMC->Gspos("FAL1", 2, "FCA2", -(feaParam1[0]+0.25), carpar[1]-al1[1], -carpar[2]+2.*feaParam1[2]+al1[2], 0, "ONLY"); - gMC->Gspos("FAL1", 3, "FCA2", (feaParam1[0]+0.25), carpar[1]-al1[1], -carpar[2]+2.*feaParam1[2]+al1[2], 0, "ONLY"); - - // second FEA cooling element difinition - //Float_t feaRoof1[3] = {9.5, 0.2, 1.45}; - Float_t feaRoof1[3] = {al1[0], al1[2], 1.45}; - gMC->Gsvolu("FRO1", "BOX ", idtmed[504], feaRoof1, 3); // Al - - // third FEA cooling element difinition - Float_t bar[3] = {8.575, 0.6, 0.25}; - gMC->Gsvolu("FBAR", "BOX ", idtmed[504], bar, 3); // Al - - // fourth FEA cooling element difinition - //Float_t bar1[3] = {8.575, 0.6, 0.1}; - Float_t bar1[3] = {bar[0], bar[1], 0.1}; - gMC->Gsvolu("FBA1", "BOX ", idtmed[504], bar1, 3); // Al - - // fifth FEA cooling element difinition - //Float_t bar2[3] = {8.575, 0.1, 0.4}; - Float_t bar2[3] = {bar[0], 0.1, bar[1]-2.*bar[2]}; - gMC->Gsvolu("FBA2", "BOX ", idtmed[504], bar2, 3); // Al - - //const Float_t fgkCBLw = 13.5; // width of lateral cables and tubes block - - Float_t tubepar[3] = {0., 0.4, xtof*0.5 - fgkCBLw}; - - // FEA cooling components positioning - Float_t rowstep = 6.66; - Float_t rowgap[5] = {13.5, 22.9, 16.94, 23.8, 20.4}; - Int_t rowb[5] = {6, 7, 6, 19, 7}; - Float_t carpos[3] = {25. - xtof*0.5, - (11.5 - (ytof*0.5 - fgkModuleCoverThickness))*0.5, - 0.}; - Int_t row = 1; - Int_t nrow = 0; - for (Int_t sg= -1; sg< 2; sg+= 2) { - carpos[2] = sg*zlenA*0.5; - for (Int_t nb=0; nb<5; ++nb) { - carpos[2] = carpos[2] - sg*(rowgap[nb] - rowstep); - nrow = row + rowb[nb]; - for ( ; row < nrow ; ++row) { - - carpos[2] -= sg*rowstep; - - if (nb==4) { - - gMC->Gspos("FBAR",4*row, "FAIA", carpos[0],carpos[1]+carpar[1]-bar[1],carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - gMC->Gspos("FBAR",4*row-1,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - gMC->Gspos("FBAR",4*row-2,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - gMC->Gspos("FBAR",4*row-3,"FAIA",-carpos[0],carpos[1]+carpar[1]-bar[1],carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - - gMC->Gspos("FBA1",4*row, "FAIA", carpos[0],carpos[1]+carpar[1]-bar[1],carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - gMC->Gspos("FBA1",4*row-1,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - gMC->Gspos("FBA1",4*row-2,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - gMC->Gspos("FBA1",4*row-3,"FAIA",-carpos[0],carpos[1]+carpar[1]-bar[1],carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - - gMC->Gspos("FBA2",8*row, "FAIA", carpos[0],carpos[1]+carpar[1]-bar2[1], carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-1,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]-bar2[1], carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-2,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-bar2[1], carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-3,"FAIA",-carpos[0],carpos[1]+carpar[1]-bar2[1], carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - - gMC->Gspos("FBA2",8*row-4,"FAIA", carpos[0],carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-5,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-6,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-7,"FAIA",-carpos[0],carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - - - gMC->Gspos("FRO1",4*row, "FAIA", carpos[0],carpos[1]+carpar[1]+feaRoof1[1],carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); - gMC->Gspos("FRO1",4*row-1,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof1[1],carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); - gMC->Gspos("FRO1",4*row-2,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof1[1],carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); - gMC->Gspos("FRO1",4*row-3,"FAIA",-carpos[0],carpos[1]+carpar[1]+feaRoof1[1],carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); - - } - else { - - gMC->Gspos("FBAR",4*row, "FAIA", carpos[0],carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - gMC->Gspos("FBAR",4*row-1,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - gMC->Gspos("FBAR",4*row-2,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - gMC->Gspos("FBAR",4*row-3,"FAIA",-carpos[0],carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - - gMC->Gspos("FBA1",4*row, "FAIA", carpos[0],carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - gMC->Gspos("FBA1",4*row-1,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - gMC->Gspos("FBA1",4*row-2,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - gMC->Gspos("FBA1",4*row-3,"FAIA",-carpos[0],carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - - gMC->Gspos("FBA2",8*row, "FAIA", carpos[0],carpos[1]+carpar[1]-bar2[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-1,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]-bar2[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-2,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-bar2[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-3,"FAIA",-carpos[0],carpos[1]+carpar[1]-bar2[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - - gMC->Gspos("FBA2",8*row-4,"FAIA", carpos[0],carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-5,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-6,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-7,"FAIA",-carpos[0],carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - - gMC->Gspos("FRO1",4*row, "FAIA", carpos[0],carpos[1]+carpar[1]+feaRoof1[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); - gMC->Gspos("FRO1",4*row-1,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof1[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); - gMC->Gspos("FRO1",4*row-2,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof1[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); - gMC->Gspos("FRO1",4*row-3,"FAIA",-carpos[0],carpos[1]+carpar[1]+feaRoof1[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); - - } - } - } - } - - gMC->Gspos("FBAR",364, "FAIA", carpos[0],carpos[1]+carpar[1]-bar[1],-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - gMC->Gspos("FBAR",363, "FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - gMC->Gspos("FBAR",362, "FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - gMC->Gspos("FBAR",361, "FAIA",-carpos[0],carpos[1]+carpar[1]-bar[1],-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - - gMC->Gspos("FBA1",364, "FAIA", carpos[0],carpos[1]+carpar[1]-bar[1],-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - gMC->Gspos("FBA1",363, "FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - gMC->Gspos("FBA1",362, "FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - gMC->Gspos("FBA1",361, "FAIA",-carpos[0],carpos[1]+carpar[1]-bar[1],-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - - gMC->Gspos("FBA2",728, "FAIA", carpos[0],carpos[1]+carpar[1]-bar2[1], -(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",727, "FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]-bar2[1], -(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",726, "FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-bar2[1], -(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",725, "FAIA",-carpos[0],carpos[1]+carpar[1]-bar2[1], -(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",724,"FAIA", carpos[0],carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], -(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",723,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], -(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",722,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], -(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",721,"FAIA",-carpos[0],carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], -(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - - gMC->Gspos("FRO1",364, "FAIA", carpos[0],carpos[1]+carpar[1]+feaRoof1[1],-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); - gMC->Gspos("FRO1",363, "FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof1[1],-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); - gMC->Gspos("FRO1",362, "FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof1[1],-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); - gMC->Gspos("FRO1",361, "FAIA",-carpos[0],carpos[1]+carpar[1]+feaRoof1[1],-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); + // second FEA cooling element definition + Float_t feaRoof1[3] = {fgkRoof1parameters[0], fgkRoof1parameters[1], fgkRoof1parameters[2]}; + gMC->Gsvolu("FRO1", "BOX ", idtmed[504], feaRoof1, 3); // Al + Float_t al3[3] = {fgkAl3parameters[0], fgkAl3parameters[1], fgkAl3parameters[2]}; + //Float_t feaRoof2[3] = {fgkRoof2parameters[0], fgkRoof2parameters[1], fgkRoof2parameters[2]}; - if (fTOFHoles) { - row = 1; - for (Int_t sg= -1; sg< 2; sg+= 2) { - carpos[2] = sg*zlenA*0.5; - for (Int_t nb=0; nb<4; ++nb) { - carpos[2] = carpos[2] - sg*(rowgap[nb] - rowstep); - nrow = row + rowb[nb]; - for ( ; row < nrow ; ++row) { - carpos[2] -= sg*rowstep; + // definition and positioning of a small air groove in the FRO1 volume + Float_t airHole[3] = {fgkRoof2parameters[0], fgkRoof2parameters[1]*0.5, feaRoof1[2]}; + gMC->Gsvolu("FREE", "BOX ", idtmed[500], airHole, 3); // Air + gMC->Gspos("FREE", 1, "FRO1", 0., feaRoof1[1]-airHole[1], 0., 0, "ONLY"); + gGeoManager->GetVolume("FRO1")->VisibleDaughters(kFALSE); - gMC->Gspos("FBAR",4*row, "FAIB", carpos[0],carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - gMC->Gspos("FBAR",4*row-1,"FAIB", (feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - gMC->Gspos("FBAR",4*row-2,"FAIB",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); - gMC->Gspos("FBAR",4*row-3,"FAIB",-carpos[0],carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-bar[2]), 0,"ONLY"); + // third FEA cooling element definition + Float_t bar[3] = {fgkBar[0], fgkBar[1], fgkBar[2]}; + gMC->Gsvolu("FBAR", "BOX ", idtmed[504], bar, 3); // Al - gMC->Gspos("FBA1",4*row, "FAIB", carpos[0],carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - gMC->Gspos("FBA1",4*row-1,"FAIB", (feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - gMC->Gspos("FBA1",4*row-2,"FAIB",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); - gMC->Gspos("FBA1",4*row-3,"FAIB",-carpos[0],carpos[1]+carpar[1]-bar[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-2.*tubepar[1]-bar1[2]), 0,"ONLY"); + Float_t feaParam[3] = {fgkFEAparameters[0], fgkFEAparameters[1], fgkFEAparameters[2]}; - gMC->Gspos("FBA2",8*row, "FAIB", carpos[0],carpos[1]+carpar[1]-bar2[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-1,"FAIB", (feaParam1[0]+0.25),carpos[1]+carpar[1]-bar2[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-2,"FAIB",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-bar2[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-3,"FAIB",-carpos[0],carpos[1]+carpar[1]-bar2[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); + Float_t carpar[3] = {xtof*0.5 - fgkCBLw - fgkSawThickness, + feaParam[1] + feaRoof1[1] + fgkRoof2parameters[1]*0.5, + feaRoof1[2] + fgkBetweenLandMask*0.5 + al3[2]}; - gMC->Gspos("FBA2",8*row-4,"FAIB", carpos[0],carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-5,"FAIB", (feaParam1[0]+0.25),carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-6,"FAIB",-(feaParam1[0]+0.25),carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); - gMC->Gspos("FBA2",8*row-7,"FAIB",-carpos[0],carpos[1]+carpar[1]-3.*bar2[1]-2.*tubepar[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), 0, "ONLY"); + // fourth FEA cooling element definition + Float_t bar1[3] = {fgkBar1[0], fgkBar1[1], fgkBar1[2]}; + gMC->Gsvolu("FBA1", "BOX ", idtmed[504], bar1, 3); // Al - gMC->Gspos("FRO1",4*row, "FAIB", carpos[0],carpos[1]+carpar[1]+feaRoof1[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); - gMC->Gspos("FRO1",4*row-1,"FAIB", (feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof1[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); - gMC->Gspos("FRO1",4*row-2,"FAIB",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof1[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); - gMC->Gspos("FRO1",4*row-3,"FAIB",-carpos[0],carpos[1]+carpar[1]+feaRoof1[1],carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+feaRoof1[2]), 0,"ONLY"); + // fifth FEA cooling element definition + Float_t bar2[3] = {fgkBar2[0], fgkBar2[1], fgkBar2[2]}; + gMC->Gsvolu("FBA2", "BOX ", idtmed[504], bar2, 3); // Al - } - } - } - } + // first FEA cooling element positioning + Float_t xcoor = xtof*0.5 - 25.; + Float_t ycoor = carpar[1] - 2.*fgkRoof2parameters[1]*0.5 - 2.*feaRoof1[1] - al1[1]; + Float_t zcoor =-carpar[2] + 2.*feaRoof1[2] - al1[2]; + gMC->Gspos("FAL1", 1, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FAL1", 4, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FAL1", 1, "FCA2",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FAL1", 4, "FCA2", xcoor, ycoor, zcoor, 0, "ONLY"); + xcoor = feaParam[0] + (fgkFEAwidth2*0.5 - fgkFEAwidth1); + gMC->Gspos("FAL1", 2, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FAL1", 3, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FAL1", 2, "FCA2",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FAL1", 3, "FCA2", xcoor, ycoor, zcoor, 0, "ONLY"); + + // second FEA cooling element positioning + xcoor = xtof*0.5 - 25.; + ycoor = carpar[1] - 2.*fgkRoof2parameters[1]*0.5 - feaRoof1[1]; + zcoor =-carpar[2] + feaRoof1[2]; + gMC->Gspos("FRO1", 1, "FCA1",-xcoor, ycoor, zcoor, 0, "MANY"); // (AdC) + gMC->Gspos("FRO1", 4, "FCA1", xcoor, ycoor, zcoor, 0, "MANY"); // (AdC) + gMC->Gspos("FRO1", 1, "FCA2",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FRO1", 4, "FCA2", xcoor, ycoor, zcoor, 0, "ONLY"); + xcoor = feaParam[0] + (fgkFEAwidth2*0.5 - fgkFEAwidth1); + gMC->Gspos("FRO1", 2, "FCA1",-xcoor, ycoor, zcoor, 0, "MANY"); // (AdC) + gMC->Gspos("FRO1", 3, "FCA1", xcoor, ycoor, zcoor, 0, "MANY"); // (AdC) + gMC->Gspos("FRO1", 2, "FCA2",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FRO1", 3, "FCA2", xcoor, ycoor, zcoor, 0, "ONLY"); + + // third FEA cooling element positioning + xcoor = xtof*0.5 - 25.; + ycoor = carpar[1] - 2.*fgkRoof2parameters[1]*0.5 - 2.*feaRoof1[1] - bar[1]; + zcoor =-carpar[2] + bar[2]; + gMC->Gspos("FBAR", 1, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBAR", 4, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBAR", 1, "FCA2",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBAR", 4, "FCA2", xcoor, ycoor, zcoor, 0, "ONLY"); + xcoor = feaParam[0] + (fgkFEAwidth2*0.5 - fgkFEAwidth1); + gMC->Gspos("FBAR", 2, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBAR", 3, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBAR", 2, "FCA2",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBAR", 3, "FCA2", xcoor, ycoor, zcoor, 0, "ONLY"); + + // fourth FEA cooling element positioning + Float_t tubepar[3] = {0., 0.4, xtof*0.5 - fgkCBLw}; + xcoor = xtof*0.5 - 25.; + ycoor = carpar[1] - 2.*fgkRoof2parameters[1]*0.5 - 2.*feaRoof1[1] - bar[1]; + zcoor =-carpar[2] + 2.*bar[2] + 2.*tubepar[1] + bar1[2]; + gMC->Gspos("FBA1", 1, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA1", 4, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA1", 1, "FCA2",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA1", 4, "FCA2", xcoor, ycoor, zcoor, 0, "ONLY"); + xcoor = feaParam[0] + (fgkFEAwidth2*0.5 - fgkFEAwidth1); + gMC->Gspos("FBA1", 2, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA1", 3, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA1", 2, "FCA2",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA1", 3, "FCA2", xcoor, ycoor, zcoor, 0, "ONLY"); + + // fifth FEA cooling element positioning + xcoor = xtof*0.5 - 25.; + ycoor = carpar[1] - 2.*fgkRoof2parameters[1]*0.5 - 2.*feaRoof1[1] - bar2[1]; + zcoor =-carpar[2] + 2.*bar[2] + bar2[2]; + gMC->Gspos("FBA2", 1, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA2", 4, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA2", 1, "FCA2",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA2", 4, "FCA2", xcoor, ycoor, zcoor, 0, "ONLY"); + xcoor = feaParam[0] + (fgkFEAwidth2*0.5 - fgkFEAwidth1); + gMC->Gspos("FBA2", 2, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA2", 3, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA2", 2, "FCA2",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA2", 3, "FCA2", xcoor, ycoor, zcoor, 0, "ONLY"); + + xcoor = xtof*0.5 - 25.; + ycoor = carpar[1] - 2.*fgkRoof2parameters[1]*0.5 - 2.*feaRoof1[1] - 2.*bar2[1] - 2.*tubepar[1] - bar2[1]; + zcoor =-carpar[2] + 2.*bar[2] + bar2[2]; + gMC->Gspos("FBA2", 5, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA2", 8, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA2", 5, "FCA2",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA2", 8, "FCA2", xcoor, ycoor, zcoor, 0, "ONLY"); + xcoor = feaParam[0] + (fgkFEAwidth2*0.5 - fgkFEAwidth1); + gMC->Gspos("FBA2", 6, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA2", 7, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA2", 6, "FCA2",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBA2", 7, "FCA2", xcoor, ycoor, zcoor, 0, "ONLY"); } //_____________________________________________________________________________ -void AliTOFv6T0::MakeNinoMask(Float_t xtof, Float_t ytof, Float_t zlenA) const +void AliTOFv6T0::MakeNinoMask(Float_t xtof) const { // // Make cooling Nino mask - // for each FEA card (FAL2/3 and FRO2/3/4 volumes) - // in FAIA/B and FCA1/2 volume containers. + // for each FEA card (FAL2/3 and FRO2 volumes) + // in FCA1 volume container. // - // honeycomb layer between strips and cards (cm) - //const Float_t fgkModuleCoverThickness = 2.; - Int_t *idtmed = fIdtmed->GetArray()-499; - //const Float_t fgkFEAwidth1 = 19.; - // first Nino ASIC mask volume definition - Float_t al2[3] = {7.25, 0.75, 0.25}; + Float_t al2[3] = {fgkAl2parameters[0], fgkAl2parameters[1], fgkAl2parameters[2]}; gMC->Gsvolu("FAL2", "BOX ", idtmed[504], al2, 3); // Al // second Nino ASIC mask volume definition - Float_t al3[3] = {3., 3.75, 0.1}; + Float_t al3[3] = {fgkAl3parameters[0], fgkAl3parameters[1], fgkAl3parameters[2]}; gMC->Gsvolu("FAL3", "BOX ", idtmed[504], al3, 3); // Al - // first Nino ASIC mask volume positioning - Float_t feaParam1[3] = {fgkFEAwidth1*0.5, 5.6, 0.1}; - Float_t carpar[3] = {fgkFEAwidth1*0.5, 5.6, 0.45}; - gMC->Gspos("FAL2", 1, "FCA1", 0., carpar[1]-2.*al3[1]+0.25, carpar[2]-2.*al3[2]-al2[2], 0, "ONLY"); - gMC->Gspos("FAL2", 2, "FCA2", -(feaParam1[0]+0.25), carpar[1]-2.*al3[1]+0.25, carpar[2]-2.*al3[2]-al2[2], 0, "ONLY"); - gMC->Gspos("FAL2", 3, "FCA2", (feaParam1[0]+0.25), carpar[1]-2.*al3[1]+0.25, carpar[2]-2.*al3[2]-al2[2], 0, "ONLY"); - - // second Nino ASIC mask volume positioning - gMC->Gspos("FAL3", 1, "FCA1", 0., carpar[1]-al3[1], carpar[2]-al3[2], 0, "ONLY"); - gMC->Gspos("FAL3", 2, "FCA2", -(feaParam1[0]+0.25), carpar[1]-al3[1], carpar[2]-al3[2], 0, "ONLY"); - gMC->Gspos("FAL3", 3, "FCA2", (feaParam1[0]+0.25), carpar[1]-al3[1], carpar[2]-al3[2], 0, "ONLY"); - - //Float_t feaRoof1[3] = {9.5, 0.2, 1.45}; - Float_t feaRoof1[3] = {fgkFEAwidth1*0.5, 0.2, 1.45}; - // third Nino ASIC mask volume definition - //Float_t feaRoof2[3] = {3.35, 0.05, 1.05}; - Float_t feaRoof2[3] = {al3[0], 0.05, 1.05}; + Float_t feaRoof2[3] = {fgkRoof2parameters[0], fgkRoof2parameters[1], fgkRoof2parameters[2]}; gMC->Gsvolu("FRO2", "BOX ", idtmed[504], feaRoof2, 3); // Al - // fourth Nino ASIC mask volume definition - //Float_t feaRoof3[3] = {3.35, feaRoof1[1]+feaRoof2[1], 0.1}; - Float_t feaRoof3[3] = {al3[0], feaRoof1[1]+feaRoof2[1], 0.1}; - gMC->Gsvolu("FRO3", "BOX ", idtmed[504], feaRoof3, 3); // Al - - // fifth Nino ASIC mask volume definition - Float_t feaRoof4[3] = {al3[0], 0.05, carpar[2]-feaParam1[2]-feaRoof1[1]-al3[2]}; - gMC->Gsvolu("FRO4", "BOX ", idtmed[504], feaRoof4, 3); // Al - - // other Nino ASIC mask volumes positioning - Float_t rowstep = 6.66; - Float_t rowgap[5] = {13.5, 22.9, 16.94, 23.8, 20.4}; - Int_t rowb[5] = {6, 7, 6, 19, 7}; - Float_t carpos[3] = {25. - xtof*0.5, - (11.5 - (ytof*0.5 - fgkModuleCoverThickness))*0.5, - 0.}; - Int_t row = 1; - Int_t nrow = 0; - for (Int_t sg= -1; sg< 2; sg+= 2) { - carpos[2] = sg*zlenA*0.5; - for (Int_t nb=0; nb<5; ++nb) { - carpos[2] = carpos[2] - sg*(rowgap[nb] - rowstep); - nrow = row + rowb[nb]; - for ( ; row < nrow ; ++row) { - - carpos[2] -= sg*rowstep; - - if (nb==4) { - - gMC->Gspos("FRO2",4*row, "FAIA", carpos[0],carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],carpos[2]+(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - gMC->Gspos("FRO2",4*row-1,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],carpos[2]+(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - gMC->Gspos("FRO2",4*row-2,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],carpos[2]+(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - gMC->Gspos("FRO2",4*row-3,"FAIA",-carpos[0],carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],carpos[2]+(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - - gMC->Gspos("FRO3",4*row, "FAIA", carpos[0],carpos[1]+carpar[1]+feaRoof3[1],carpos[2]+(carpar[2]-feaRoof3[2]), 0,"ONLY"); - gMC->Gspos("FRO3",4*row-1,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof3[1],carpos[2]+(carpar[2]-feaRoof3[2]), 0,"ONLY"); - gMC->Gspos("FRO3",4*row-2,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof3[1],carpos[2]+(carpar[2]-feaRoof3[2]), 0,"ONLY"); - gMC->Gspos("FRO3",4*row-3,"FAIA",-carpos[0],carpos[1]+carpar[1]+feaRoof3[1],carpos[2]+(carpar[2]-feaRoof3[2]), 0,"ONLY"); - - gMC->Gspos("FRO4",4*row, "FAIA", carpos[0], carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],carpos[2]+(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - gMC->Gspos("FRO4",4*row-1,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],carpos[2]+(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - gMC->Gspos("FRO4",4*row-2,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],carpos[2]+(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - gMC->Gspos("FRO4",4*row-3,"FAIA",-carpos[0], carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],carpos[2]+(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - - } - else { - - gMC->Gspos("FRO2",4*row, "FAIA", carpos[0],carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],carpos[2]+sg*(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - gMC->Gspos("FRO2",4*row-1,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],carpos[2]+sg*(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - gMC->Gspos("FRO2",4*row-2,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],carpos[2]+sg*(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - gMC->Gspos("FRO2",4*row-3,"FAIA",-carpos[0],carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],carpos[2]+sg*(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - - gMC->Gspos("FRO3",4*row, "FAIA", carpos[0],carpos[1]+carpar[1]+feaRoof3[1],carpos[2]+sg*(carpar[2]-feaRoof3[2]), 0,"ONLY"); - gMC->Gspos("FRO3",4*row-1,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof3[1],carpos[2]+sg*(carpar[2]-feaRoof3[2]), 0,"ONLY"); - gMC->Gspos("FRO3",4*row-2,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof3[1],carpos[2]+sg*(carpar[2]-feaRoof3[2]), 0,"ONLY"); - gMC->Gspos("FRO3",4*row-3,"FAIA",-carpos[0],carpos[1]+carpar[1]+feaRoof3[1],carpos[2]+sg*(carpar[2]-feaRoof3[2]), 0,"ONLY"); - - gMC->Gspos("FRO4",4*row, "FAIA", carpos[0], carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],carpos[2]+sg*(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - gMC->Gspos("FRO4",4*row-1,"FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],carpos[2]+sg*(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - gMC->Gspos("FRO4",4*row-2,"FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],carpos[2]+sg*(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - gMC->Gspos("FRO4",4*row-3,"FAIA",-carpos[0], carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],carpos[2]+sg*(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - - } - } - } - } - - gMC->Gspos("FRO2",364, "FAIA", carpos[0],carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - gMC->Gspos("FRO2",363, "FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - gMC->Gspos("FRO2",362, "FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - gMC->Gspos("FRO2",361, "FAIA",-carpos[0],carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - - gMC->Gspos("FRO3",364, "FAIA", carpos[0],carpos[1]+carpar[1]+feaRoof3[1],(carpar[2]-feaRoof3[2]), 0,"ONLY"); - gMC->Gspos("FRO3",363, "FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof3[1],(carpar[2]-feaRoof3[2]), 0,"ONLY"); - gMC->Gspos("FRO3",362, "FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof3[1],(carpar[2]-feaRoof3[2]), 0,"ONLY"); - gMC->Gspos("FRO3",361, "FAIA",-carpos[0],carpos[1]+carpar[1]+feaRoof3[1],(carpar[2]-feaRoof3[2]), 0,"ONLY"); - - gMC->Gspos("FRO4",364, "FAIA", carpos[0], carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - gMC->Gspos("FRO4",363, "FAIA", (feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - gMC->Gspos("FRO4",362, "FAIA",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - gMC->Gspos("FRO4",361, "FAIA",-carpos[0], carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - - - if (fTOFHoles) { - row = 1; - for (Int_t sg= -1; sg< 2; sg+= 2) { - carpos[2] = sg*zlenA*0.5; - for (Int_t nb=0; nb<4; ++nb) { - carpos[2] = carpos[2] - sg*(rowgap[nb] - rowstep); - nrow = row + rowb[nb]; - for ( ; row < nrow ; ++row) { - carpos[2] -= sg*rowstep; - - gMC->Gspos("FRO2",4*row, "FAIB", carpos[0],carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],carpos[2]+sg*(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - gMC->Gspos("FRO2",4*row-1,"FAIB", (feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],carpos[2]+sg*(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - gMC->Gspos("FRO2",4*row-2,"FAIB",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],carpos[2]+sg*(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); - gMC->Gspos("FRO2",4*row-3,"FAIB",-carpos[0],carpos[1]+carpar[1]+2.*feaRoof1[1]+feaRoof2[1],carpos[2]+sg*(carpar[2]-2.*feaRoof3[2]-feaRoof2[2]), 0,"ONLY"); + Float_t feaRoof1[3] = {fgkRoof1parameters[0], fgkRoof1parameters[1], fgkRoof1parameters[2]}; + Float_t feaParam[3] = {fgkFEAparameters[0], fgkFEAparameters[1], fgkFEAparameters[2]}; - gMC->Gspos("FRO3",4*row, "FAIB", carpos[0],carpos[1]+carpar[1]+feaRoof3[1],carpos[2]+sg*(carpar[2]-feaRoof3[2]), 0,"ONLY"); - gMC->Gspos("FRO3",4*row-1,"FAIB", (feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof3[1],carpos[2]+sg*(carpar[2]-feaRoof3[2]), 0,"ONLY"); - gMC->Gspos("FRO3",4*row-2,"FAIB",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+feaRoof3[1],carpos[2]+sg*(carpar[2]-feaRoof3[2]), 0,"ONLY"); - gMC->Gspos("FRO3",4*row-3,"FAIB",-carpos[0],carpos[1]+carpar[1]+feaRoof3[1],carpos[2]+sg*(carpar[2]-feaRoof3[2]), 0,"ONLY"); + Float_t carpar[3] = {xtof*0.5 - fgkCBLw - fgkSawThickness, + feaParam[1] + feaRoof1[1] + fgkRoof2parameters[1]*0.5, + feaRoof1[2] + fgkBetweenLandMask*0.5 + al3[2]}; - gMC->Gspos("FRO4",4*row, "FAIB", carpos[0], carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],carpos[2]+sg*(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - gMC->Gspos("FRO4",4*row-1,"FAIB", (feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],carpos[2]+sg*(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - gMC->Gspos("FRO4",4*row-2,"FAIB",-(feaParam1[0]+0.25),carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],carpos[2]+sg*(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); - gMC->Gspos("FRO4",4*row-3,"FAIB",-carpos[0], carpos[1]+carpar[1]+2.*feaRoof1[1]-feaRoof4[1],carpos[2]+sg*(carpar[2]-2.*al3[2]-feaRoof4[2]), 0,"ONLY"); + // first Nino ASIC mask volume positioning + Float_t xcoor = xtof*0.5 - 25.; + Float_t ycoor = carpar[1] - 2.*al3[1]; + Float_t zcoor = carpar[2] - 2.*al3[2] - al2[2]; + gMC->Gspos("FAL2", 1, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FAL2", 4, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); + xcoor = feaParam[0] + (fgkFEAwidth2*0.5 - fgkFEAwidth1); + gMC->Gspos("FAL2", 2, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FAL2", 3, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); - } - } - } - } + // second Nino ASIC mask volume positioning + xcoor = xtof*0.5 - 25.; + ycoor = carpar[1] - al3[1]; + zcoor = carpar[2] - al3[2]; + gMC->Gspos("FAL3", 1, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FAL3", 4, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); + xcoor = feaParam[0] + (fgkFEAwidth2*0.5 - fgkFEAwidth1); + gMC->Gspos("FAL3", 2, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FAL3", 3, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); + + // third Nino ASIC mask volume positioning + xcoor = xtof*0.5 - 25.; + ycoor = carpar[1] - fgkRoof2parameters[1]; + zcoor = carpar[2] - 2.*al3[2] - fgkRoof2parameters[2]; + gMC->Gspos("FRO2", 1, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FRO2", 4, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); + xcoor = feaParam[0] + (fgkFEAwidth2*0.5 - fgkFEAwidth1); + gMC->Gspos("FRO2", 2, "FCA1",-xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FRO2", 3, "FCA1", xcoor, ycoor, zcoor, 0, "ONLY"); } @@ -1745,24 +1523,14 @@ void AliTOFv6T0::MakeSuperModuleCooling(Float_t xtof, Float_t ytof, Float_t zlen { // // Make cooling tubes (FTUB volume) - // and cooling bars (FTLN and FLTN volumes) - // in FAIA/B volume containers. + // and cooling bars (FTLN and FLO1/2/3 volumes) + // in FAIA/B/C volume containers. // - //const Float_t fgkInterCentrModBorder2 = 57.5; - - // honeycomb layer between strips and cards (cm) - //const Float_t fgkModuleCoverThickness = 2.; - Int_t *idtmed = fIdtmed->GetArray()-499; Int_t idrotm[1]; - //const Float_t fgkFEAwidth1 = 19.; - - //const Float_t fgkCBLw = 13.5; // width of lateral cables and tubes block - //const Float_t fgkSawThickness = 1.; - // cooling tube volume definition Float_t tubepar[3] = {0., 0.4, xtof*0.5 - fgkCBLw - fgkSawThickness}; gMC->Gsvolu("FTUB", "TUBE", idtmed[512], tubepar, 3); // Cu @@ -1772,191 +1540,232 @@ void AliTOFv6T0::MakeSuperModuleCooling(Float_t xtof, Float_t ytof, Float_t zlen gMC->Gsvolu("FITU", "TUBE", idtmed[509], tubeparW, 3); // H2O // Positioning of the water tube into the steel one - gMC->Gspos("FITU",1,"FTUB",0.,0.,0.,0,"ONLY"); + gMC->Gspos("FITU", 1, "FTUB", 0., 0., 0., 0, "ONLY"); // definition of transverse components of SM cooling system - Float_t lonpar[3] = {tubepar[2], 6.15, 0.7}; - gMC->Gsvolu("FTLN", "BOX ", idtmed[504], lonpar, 3); // Al - lonpar[0] = 2.; - lonpar[1] = 1.; - lonpar[2] = zlenA*0.5; - // definition of longitudinal components of SM cooling system - gMC->Gsvolu("FLON", "BOX ", idtmed[504], lonpar, 3); // Al - if (fTOFHoles) { - lonpar[2] = (zlenA*0.5 - fgkInterCentrModBorder2)*0.5; - gMC->Gsvolu("FLOB", "BOX ", idtmed[504], lonpar, 3); // Al - } + Float_t trapar[3] = {tubepar[2], 6.175/*6.15*/, 0.7}; + gMC->Gsvolu("FTLN", "BOX ", idtmed[504], trapar, 3); // Al // rotation matrix AliMatrix(idrotm[0], 180., 90., 90., 90., 90., 0.); - // Positioning of cooling tubes and transverse components of SM - // cooling system - Float_t carpar[3] = {fgkFEAwidth1*0.5, 5.6, 0.45}; - Float_t feaParam1[3] = {fgkFEAwidth1*0.5, 5.6, 0.1}; - Float_t al1[3] = {fgkFEAwidth1*0.5, 0.4, 0.2}; - Float_t feaRoof1[3] = {al1[0], al1[2], 1.45}; - Float_t bar[3] = {8.575, 0.6, 0.25}; - Float_t rowstep = 6.66; - Float_t ytub= 3.65; - Float_t rowgap[5] = {13.5, 22.9, 16.94, 23.8, 20.4}; - Int_t rowb[5] = {6, 7, 6, 19, 7}; - Float_t carpos[3] = {25. - xtof*0.5, - (11.5 - (ytof*0.5 - fgkModuleCoverThickness))*0.5, - 0.}; - Int_t row = 1; - Int_t nrow = 0; - for (Int_t sg= -1; sg< 2; sg+= 2) { - carpos[2] = sg*zlenA*0.5; - for (Int_t nb=0; nb<5; ++nb) { - carpos[2] = carpos[2] - sg*(rowgap[nb] - rowstep); - nrow = row + rowb[nb]; - for ( ; row < nrow ; ++row) { + Float_t feaParam[3] = {fgkFEAparameters[0], fgkFEAparameters[1], fgkFEAparameters[2]}; + Float_t feaRoof1[3] = {fgkRoof1parameters[0], fgkRoof1parameters[1], fgkRoof1parameters[2]}; + Float_t bar[3] = {fgkBar[0], fgkBar[1], fgkBar[2]}; + Float_t bar2[3] = {fgkBar2[0], fgkBar2[1], fgkBar2[2]}; + Float_t al3[3] = {fgkAl3parameters[0], fgkAl3parameters[1], fgkAl3parameters[2]}; + //Float_t feaRoof2[3] = {fgkRoof2parameters[0], fgkRoof2parameters[1], fgkRoof2parameters[2]}; - carpos[2] -= sg*rowstep; + Float_t carpar[3] = {xtof*0.5 - fgkCBLw - fgkSawThickness, + feaParam[1] + feaRoof1[1] + fgkRoof2parameters[1]*0.5, + feaRoof1[2] + fgkBetweenLandMask*0.5 + al3[2]}; - if (nb==4) - gMC->Gspos("FTUB", row, "FAIA", 0., carpos[1]+carpar[1]-bar[1], carpos[2]-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), idrotm[0], "ONLY"); - else - gMC->Gspos("FTUB", row, "FAIA", 0., carpos[1]+carpar[1]-bar[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), idrotm[0], "ONLY"); - } - } - gMC->Gspos("FTLN", 5+4*sg, "FAIA", 0., -0.1, 369.9*sg, 0, "ONLY"); - gMC->Gspos("FTLN", 5+3*sg, "FAIA", 0., -0.1, 366.9*sg, 0, "ONLY"); - gMC->Gspos("FTLN", 5+2*sg, "FAIA", 0., -0.1, 198.8*sg, 0, "ONLY"); - gMC->Gspos("FTLN", 5+sg, "FAIA", 0., -0.1, 56.82*sg, 0, "ONLY"); - } + Float_t ytub =-(ytof*0.5 - fgkModuleCoverThickness)*0.5 + carpar[1] + + carpar[1] - 2.*fgkRoof2parameters[1]*0.5 - 2.*feaRoof1[1] - 2.*bar2[1] - tubepar[1]; + + // Positioning of tubes for the SM cooling system + Float_t ycoor = carpar[1] - 2.*fgkRoof2parameters[1]*0.5 - 2.*feaRoof1[1] - 2.*bar2[1] - tubepar[1]; + Float_t zcoor =-carpar[2] + 2.*bar[2] + tubepar[1]; + gMC->Gspos("FTUB", 1, "FCA1", 0., ycoor, zcoor, idrotm[0], "ONLY"); + gMC->Gspos("FTUB", 1, "FCA2", 0., ycoor, zcoor, idrotm[0], "ONLY"); + gGeoManager->GetVolume("FTUB")->VisibleDaughters(kFALSE); - gMC->Gspos("FTUB", 91, "FAIA", 0., carpos[1]+carpar[1]-bar[1],-(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), idrotm[0], "ONLY"); + Float_t yFLTN = trapar[1] - (ytof*0.5 - fgkModuleCoverThickness)*0.5; + for (Int_t sg= -1; sg< 2; sg+= 2) { + // Positioning of transverse components for the SM cooling system + gMC->Gspos("FTLN", 5+4*sg, "FAIA", 0., yFLTN, 369.9*sg, 0, "MANY"); + gMC->Gspos("FTLN", 5+3*sg, "FAIA", 0., yFLTN, 366.9*sg, 0, "MANY"); + gMC->Gspos("FTLN", 5+2*sg, "FAIA", 0., yFLTN, 198.8*sg, 0, "MANY"); + gMC->Gspos("FTLN", 5+sg, "FAIA", 0., yFLTN, 56.82*sg, 0, "MANY"); + gMC->Gspos("FTLN", 5+4*sg, "FAIC", 0., yFLTN, 369.9*sg, 0, "MANY"); + gMC->Gspos("FTLN", 5+3*sg, "FAIC", 0., yFLTN, 366.9*sg, 0, "MANY"); + gMC->Gspos("FTLN", 5+2*sg, "FAIC", 0., yFLTN, 198.8*sg, 0, "MANY"); + gMC->Gspos("FTLN", 5+sg, "FAIC", 0., yFLTN, 56.82*sg, 0, "MANY"); + } - gMC->Gspos("FLON", 2, "FAIA",-24., ytub+1.4, 0., 0, "MANY"); - gMC->Gspos("FLON", 1, "FAIA", 24., ytub+1.4, 0., 0, "MANY"); + // definition of longitudinal components of SM cooling system + Float_t lonpar1[3] = {2., 0.5, 56.82 - trapar[2]}; + Float_t lonpar2[3] = {lonpar1[0], lonpar1[1], (198.8 - 56.82)*0.5 - trapar[2]}; + Float_t lonpar3[3] = {lonpar1[0], lonpar1[1], (366.9 - 198.8)*0.5 - trapar[2]}; + gMC->Gsvolu("FLO1", "BOX ", idtmed[504], lonpar1, 3); // Al + gMC->Gsvolu("FLO2", "BOX ", idtmed[504], lonpar2, 3); // Al + gMC->Gsvolu("FLO3", "BOX ", idtmed[504], lonpar3, 3); // Al + + // Positioning of longitudinal components for the SM cooling system + ycoor = ytub + (tubepar[1] + 2.*bar2[1] + lonpar1[1]); + gMC->Gspos("FLO1", 4, "FAIA",-24., ycoor, 0., 0, "MANY"); + gMC->Gspos("FLO1", 2, "FAIA", 24., ycoor, 0., 0, "MANY"); + gMC->Gspos("FLO1", 4, "FAIC",-24., ycoor, 0., 0, "MANY"); + gMC->Gspos("FLO1", 2, "FAIC", 24., ycoor, 0., 0, "MANY"); + + zcoor = (198.8 + 56.82)*0.5; + gMC->Gspos("FLO2", 4, "FAIA",-24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 2, "FAIA", 24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 4, "FAIC",-24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 2, "FAIC", 24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 8, "FAIA",-24., ycoor, zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 6, "FAIA", 24., ycoor, zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 8, "FAIC",-24., ycoor, zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 6, "FAIC", 24., ycoor, zcoor, 0, "MANY"); + + zcoor = (366.9 + 198.8)*0.5; + gMC->Gspos("FLO3", 4, "FAIA",-24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 2, "FAIA", 24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 4, "FAIC",-24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 2, "FAIC", 24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 8, "FAIA",-24., ycoor, zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 6, "FAIA", 24., ycoor, zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 8, "FAIC",-24., ycoor, zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 6, "FAIC", 24., ycoor, zcoor, 0, "MANY"); + + ycoor = ytub - (tubepar[1] + 2.*bar2[1] + lonpar1[1]); + gMC->Gspos("FLO1", 3, "FAIA",-24., ycoor, 0., 0, "MANY"); + gMC->Gspos("FLO1", 1, "FAIA", 24., ycoor, 0., 0, "MANY"); + gMC->Gspos("FLO1", 3, "FAIC",-24., ycoor, 0., 0, "MANY"); + gMC->Gspos("FLO1", 1, "FAIC", 24., ycoor, 0., 0, "MANY"); + + zcoor = (198.8 + 56.82)*0.5; + gMC->Gspos("FLO2", 3, "FAIA",-24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 1, "FAIA", 24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 3, "FAIC",-24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 1, "FAIC", 24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 7, "FAIA",-24., ycoor, zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 5, "FAIA", 24., ycoor, zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 7, "FAIC",-24., ycoor, zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 5, "FAIC", 24., ycoor, zcoor, 0, "MANY"); + + zcoor = (366.9 + 198.8)*0.5; + gMC->Gspos("FLO3", 3, "FAIA",-24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 1, "FAIA", 24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 3, "FAIC",-24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 1, "FAIC", 24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 7, "FAIA",-24., ycoor, zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 5, "FAIA", 24., ycoor, zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 7, "FAIC",-24., ycoor, zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 5, "FAIC", 24., ycoor, zcoor, 0, "MANY"); + Float_t carpos[3] = {25. - xtof*0.5, + (11.5 - (ytof*0.5 - fgkModuleCoverThickness))*0.5, + 0.}; if (fTOFHoles) { - row = 1; for (Int_t sg= -1; sg< 2; sg+= 2) { carpos[2] = sg*zlenA*0.5; - for (Int_t nb=0; nb<4; ++nb) { - carpos[2] = carpos[2] - sg*(rowgap[nb] - rowstep); - nrow = row + rowb[nb]; - for ( ; row < nrow ; ++row) { - carpos[2] -= sg*rowstep; - gMC->Gspos("FTUB", row, "FAIB", 0., carpos[1]+carpar[1]-bar[1], carpos[2]-sg*(carpar[2]-2.*feaParam1[2]-2.*al1[2]+2.*feaRoof1[2]-2.*bar[2]-tubepar[1]), idrotm[0], "ONLY"); - } - } - - gMC->Gspos("FTLN", 5+4*sg, "FAIB", 0., -0.1, 369.9*sg, 0, "ONLY"); - gMC->Gspos("FTLN", 5+3*sg, "FAIB", 0., -0.1, 366.9*sg, 0, "ONLY"); - gMC->Gspos("FTLN", 5+2*sg, "FAIB", 0., -0.1, 198.8*sg, 0, "ONLY"); - gMC->Gspos("FTLN", 5+sg, "FAIB", 0., -0.1, 56.82*sg, 0, "ONLY"); + gMC->Gspos("FTLN", 5+4*sg, "FAIB", 0., yFLTN, 369.9*sg, 0, "MANY"); + gMC->Gspos("FTLN", 5+3*sg, "FAIB", 0., yFLTN, 366.9*sg, 0, "MANY"); + gMC->Gspos("FTLN", 5+2*sg, "FAIB", 0., yFLTN, 198.8*sg, 0, "MANY"); + gMC->Gspos("FTLN", 5+sg, "FAIB", 0., yFLTN, 56.82*sg, 0, "MANY"); } - gMC->Gspos("FLOB", 4, "FAIB",-24., ytub+1.4, (zlenA*0.5 + fgkInterCentrModBorder2)*0.5, 0, "MANY"); - gMC->Gspos("FLOB", 3, "FAIB", 24., ytub+1.4, (zlenA*0.5 + fgkInterCentrModBorder2)*0.5, 0, "MANY"); - gMC->Gspos("FLOB", 2, "FAIB",-24., ytub+1.4, -(zlenA*0.5 + fgkInterCentrModBorder2)*0.5, 0, "MANY"); - gMC->Gspos("FLOB", 1, "FAIB", 24., ytub+1.4, -(zlenA*0.5 + fgkInterCentrModBorder2)*0.5, 0, "MANY"); + ycoor = ytub + (tubepar[1] + 2.*bar2[1] + lonpar1[1]); + zcoor = (198.8 + 56.82)*0.5; + gMC->Gspos("FLO2", 2, "FAIB",-24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 1, "FAIB",-24., ycoor, zcoor, 0, "MANY"); + zcoor = (366.9 + 198.8)*0.5; + gMC->Gspos("FLO3", 2, "FAIB",-24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 1, "FAIB",-24., ycoor, zcoor, 0, "MANY"); + ycoor = ytub - (tubepar[1] + 2.*bar2[1] + lonpar1[1]); + zcoor = (198.8 + 56.82)*0.5; + gMC->Gspos("FLO2", 4, "FAIB", 24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO2", 3, "FAIB", 24., ycoor, zcoor, 0, "MANY"); + zcoor = (366.9 + 198.8)*0.5; + gMC->Gspos("FLO3", 4, "FAIB", 24., ycoor,-zcoor, 0, "MANY"); + gMC->Gspos("FLO3", 3, "FAIB", 24., ycoor, zcoor, 0, "MANY"); } + Float_t barS[3] = {fgkBarS[0], fgkBarS[1], fgkBarS[2]}; + gMC->Gsvolu("FBAS", "BOX ", idtmed[504], barS, 3); // Al + + Float_t barS1[3] = {fgkBarS1[0], fgkBarS1[1], fgkBarS1[2]}; + gMC->Gsvolu("FBS1", "BOX ", idtmed[504], barS1, 3); // Al + + Float_t barS2[3] = {fgkBarS2[0], fgkBarS2[1], fgkBarS2[2]}; + gMC->Gsvolu("FBS2", "BOX ", idtmed[504], barS2, 3); // Al + + Float_t ytubBis = carpar[1] - 2.*fgkRoof2parameters[1]*0.5 - 2.*feaRoof1[1] - 2.*barS2[1] - tubepar[1]; + ycoor = ytubBis; + zcoor =-carpar[2] + barS[2]; + gMC->Gspos("FBAS", 1, "FCA1",-24., ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBAS", 2, "FCA1", 24., ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBAS", 1, "FCA2",-24., ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBAS", 2, "FCA2", 24., ycoor, zcoor, 0, "ONLY"); + + zcoor =-carpar[2] + 2.*barS[2] + 2.*tubepar[1] + barS1[2]; + gMC->Gspos("FBS1", 1, "FCA1",-24., ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBS1", 2, "FCA1", 24., ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBS1", 1, "FCA2",-24., ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBS1", 2, "FCA2", 24., ycoor, zcoor, 0, "ONLY"); + + ycoor = ytubBis + (tubepar[1] + barS2[1]); + zcoor =-carpar[2] + 2.*barS[2] + barS2[2]; + gMC->Gspos("FBS2", 1, "FCA1",-24., ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBS2", 2, "FCA1", 24., ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBS2", 1, "FCA2",-24., ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBS2", 2, "FCA2", 24., ycoor, zcoor, 0, "ONLY"); + + ycoor = ytubBis - (tubepar[1] + barS2[1]); + //zcoor =-carpar[2] + 2.*barS[2] + barS2[2]; + gMC->Gspos("FBS2", 3, "FCA1",-24., ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBS2", 4, "FCA1", 24., ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBS2", 3, "FCA2",-24., ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FBS2", 4, "FCA2", 24., ycoor, zcoor, 0, "ONLY"); + } //_____________________________________________________________________________ void AliTOFv6T0::MakeSuperModuleServices(Float_t xtof, Float_t ytof, Float_t zlenA) const { // - // Make signal cables (FCAB and FCBL/B volumes), + // Make signal cables (FCAB/L and FCBL/B volumes), // supemodule cover (FCOV volume) and wall (FSAW volume) - // in FAIA/B volume containers. + // in FAIA/B/C volume containers. // - //const Float_t fgkInterCentrModBorder2 = 57.5; - - // honeycomb layer between strips and cards (cm) - //const Float_t fgkModuleCoverThickness = 2.; - Int_t *idtmed = fIdtmed->GetArray()-499; Int_t idrotm[3]; - //const Float_t fgkCBLw = 13.5; // width of lateral cables and tubes block - //const Float_t fgkSawThickness = 1.; - //const Float_t fgkFEAwidth1 = 19.; - //const Float_t fgkFEAwidth2 = 38.5; - Float_t tubepar[3] = {0., 0.4, xtof*0.5 - fgkCBLw - fgkSawThickness}; + Float_t al1[3] = {fgkAl1parameters[0], fgkAl1parameters[1], fgkAl1parameters[2]}; + Float_t al3[3] = {fgkAl3parameters[0], fgkAl3parameters[1], fgkAl3parameters[2]}; + Float_t feaRoof1[3] = {fgkRoof1parameters[0], fgkRoof1parameters[1], fgkRoof1parameters[2]}; + //Float_t feaRoof2[3] = {fgkRoof2parameters[0], fgkRoof2parameters[1], fgkRoof2parameters[2]}; + Float_t feaParam[3] = {fgkFEAparameters[0], fgkFEAparameters[1], fgkFEAparameters[2]}; // FEA cables definition - Float_t cbpar[3] = {0., 0.5, (tubepar[2] - fgkFEAwidth2*0.5)*0.5}; + Float_t cbpar[3] = {0., 0.5, (tubepar[2] - (fgkFEAwidth2 - fgkFEAwidth1/6.)*0.5)*0.5}; gMC->Gsvolu("FCAB", "TUBE", idtmed[510], cbpar, 3); // copper+alu - cbpar[2] = (xtof*0.5 - fgkCBLw - fgkSawThickness - (xtof*0.5 - 25. + fgkFEAwidth1*0.5))*0.5; - gMC->Gsvolu("FCAL", "TUBE", idtmed[510], cbpar, 3); // copper+alu + + Float_t cbparS[3] = {cbpar[0], cbpar[1], (tubepar[2] - (xtof*0.5 - 25. + (fgkFEAwidth1 - fgkFEAwidth1/6.)*0.5))*0.5}; + gMC->Gsvolu("FCAL", "TUBE", idtmed[510], cbparS, 3); // copper+alu // rotation matrix AliMatrix(idrotm[0], 180., 90., 90., 90., 90., 0.); - // FEA cables positioning - Float_t rowstep = 6.66; - Float_t ytub= 3.65; - Float_t ycab= ytub-3.; - Float_t rowgap[5] = {13.5, 22.9, 16.94, 23.8, 20.4}; - Int_t rowb[5] = {6, 7, 6, 19, 7}; - Float_t carpos[3] = {25. - xtof*0.5, - (11.5 - (ytof*0.5 - fgkModuleCoverThickness))*0.5, - 0.}; - Int_t row = 1; - Int_t nrow = 0; - Float_t xCable = (xtof*0.5 - fgkCBLw - fgkSawThickness + fgkFEAwidth2*0.5)*0.5; - Float_t xCableL = (xtof*0.5 - fgkCBLw - fgkSawThickness + (xtof*0.5 - 25. + fgkFEAwidth1*0.5))*0.5; - for (Int_t sg= -1; sg< 2; sg+= 2) { - carpos[2] = sg*zlenA*0.5; - for (Int_t nb=0; nb<5; ++nb) { - carpos[2] = carpos[2] - sg*(rowgap[nb] - rowstep); - nrow = row + rowb[nb]; - for ( ; row < nrow ; ++row) { + Float_t carpar[3] = {xtof*0.5 - fgkCBLw - fgkSawThickness, + feaParam[1] + feaRoof1[1] + fgkRoof2parameters[1]*0.5, + feaRoof1[2] + fgkBetweenLandMask*0.5 + al3[2]}; - carpos[2] -= sg*rowstep; + Float_t bar2[3] = {fgkBar2[0], fgkBar2[1], fgkBar2[2]}; + Float_t ytub =-(ytof*0.5 - fgkModuleCoverThickness)*0.5 + carpar[1] + + carpar[1] - 2.*fgkRoof2parameters[1]*0.5 - 2.*feaRoof1[1] - 2.*bar2[1] - tubepar[1]; - if (nb==4) - { - gMC->Gspos("FCAB", 2*row, "FAIA", xCable, ycab, carpos[2]-1.1, idrotm[0], "ONLY"); - gMC->Gspos("FCAB", 2*row-1, "FAIA",-xCable, ycab, carpos[2]-1.1, idrotm[0], "ONLY"); - gMC->Gspos("FCAL", 2*row, "FAIA", xCableL, ycab-2.*cbpar[1], carpos[2]-1.1, idrotm[0], "ONLY"); - gMC->Gspos("FCAL", 2*row-1, "FAIA",-xCableL, ycab-2.*cbpar[1], carpos[2]-1.1, idrotm[0], "ONLY"); - } - else - { - gMC->Gspos("FCAB", 2*row, "FAIA", xCable, ycab, carpos[2]-sg*1.1, idrotm[0], "ONLY"); - gMC->Gspos("FCAB", 2*row-1, "FAIA",-xCable, ycab, carpos[2]-sg*1.1, idrotm[0], "ONLY"); - gMC->Gspos("FCAL", 2*row, "FAIA", xCableL, ycab-2.*cbpar[1], carpos[2]-sg*1.1, idrotm[0], "ONLY"); - gMC->Gspos("FCAL", 2*row-1, "FAIA",-xCableL, ycab-2.*cbpar[1], carpos[2]-sg*1.1, idrotm[0], "ONLY"); - } - } - } - } - - gMC->Gspos("FCAB", 182, "FAIA", xCable, ycab, -1.1, idrotm[0], "ONLY"); - gMC->Gspos("FCAB", 181, "FAIA",-xCable, ycab, -1.1, idrotm[0], "ONLY"); - gMC->Gspos("FCAL", 182, "FAIA", xCableL, ycab-2.*cbpar[1], -1.1, idrotm[0], "ONLY"); - gMC->Gspos("FCAL", 181, "FAIA",-xCableL, ycab-2.*cbpar[1], -1.1, idrotm[0], "ONLY"); + // FEA cables positioning + Float_t xcoor = (tubepar[2] + (fgkFEAwidth2 - fgkFEAwidth1/6.)*0.5)*0.5; + Float_t ycoor = ytub - 3.; + Float_t zcoor =-carpar[2] + (2.*feaRoof1[2] - 2.*al1[2] - 2.*feaParam[2] - cbpar[1]); + gMC->Gspos("FCAB", 1, "FCA1",-xcoor, ycoor, zcoor, idrotm[0], "ONLY"); + gMC->Gspos("FCAB", 2, "FCA1", xcoor, ycoor, zcoor, idrotm[0], "ONLY"); + gMC->Gspos("FCAB", 1, "FCA2",-xcoor, ycoor, zcoor, idrotm[0], "ONLY"); + gMC->Gspos("FCAB", 2, "FCA2", xcoor, ycoor, zcoor, idrotm[0], "ONLY"); + xcoor = (tubepar[2] + (xtof*0.5 - 25. + (fgkFEAwidth1 - fgkFEAwidth1/6.)*0.5))*0.5; + ycoor -= 2.*cbpar[1]; + gMC->Gspos("FCAL", 1, "FCA1",-xcoor, ycoor, zcoor, idrotm[0], "ONLY"); + gMC->Gspos("FCAL", 2, "FCA1", xcoor, ycoor, zcoor, idrotm[0], "ONLY"); + gMC->Gspos("FCAL", 1, "FCA2",-xcoor, ycoor, zcoor, idrotm[0], "ONLY"); + gMC->Gspos("FCAL", 2, "FCA2", xcoor, ycoor, zcoor, idrotm[0], "ONLY"); - if (fTOFHoles) { - row = 1; - for (Int_t sg= -1; sg< 2; sg+= 2) { - carpos[2] = sg*zlenA*0.5; - for (Int_t nb=0; nb<4; ++nb) { - carpos[2] = carpos[2] - sg*(rowgap[nb] - rowstep); - nrow = row + rowb[nb]; - for ( ; row < nrow ; ++row) { - carpos[2] -= sg*rowstep; - gMC->Gspos("FCAB", 2*row, "FAIB", xCable, ycab, carpos[2]-sg*1.1, idrotm[0], "ONLY"); - gMC->Gspos("FCAB", 2*row-1, "FAIB",-xCable, ycab, carpos[2]-sg*1.1, idrotm[0], "ONLY"); - gMC->Gspos("FCAL", 2*row, "FAIB", xCableL, ycab-2.*cbpar[1], carpos[2]-sg*1.1, idrotm[0], "ONLY"); - gMC->Gspos("FCAL", 2*row-1, "FAIB",-xCableL, ycab-2.*cbpar[1], carpos[2]-sg*1.1, idrotm[0], "ONLY"); - } - } - } - } // Cables and tubes on the side blocks // constants definition @@ -1991,7 +1800,6 @@ void AliTOFv6T0::MakeSuperModuleServices(Float_t xtof, Float_t ytof, Float_t zle AliMatrix(idrotm[2], 90., 90., 0., 0., 90., 0.); // lateral cable and tube volume positioning - Float_t xcoor, ycoor, zcoor; xcoor = (xtof - fgkCBLw)*0.5 - 2.*sawpar[0]; ycoor = (fgkCBLh1 + fgkCBLh2)*0.25 - (ytof*0.5 - fgkModuleCoverThickness)*0.5; zcoor = kCBLl*0.5; @@ -1999,6 +1807,10 @@ void AliTOFv6T0::MakeSuperModuleServices(Float_t xtof, Float_t ytof, Float_t zle gMC->Gspos("FCBL", 2, "FAIA", xcoor, ycoor, -zcoor, idrotm[1], "ONLY"); gMC->Gspos("FCBL", 3, "FAIA", -xcoor, ycoor, zcoor, idrotm[2], "ONLY"); gMC->Gspos("FCBL", 4, "FAIA", xcoor, ycoor, zcoor, idrotm[2], "ONLY"); + gMC->Gspos("FCBL", 1, "FAIC", -xcoor, ycoor, -zcoor, idrotm[1], "ONLY"); + gMC->Gspos("FCBL", 2, "FAIC", xcoor, ycoor, -zcoor, idrotm[1], "ONLY"); + gMC->Gspos("FCBL", 3, "FAIC", -xcoor, ycoor, zcoor, idrotm[2], "ONLY"); + gMC->Gspos("FCBL", 4, "FAIC", xcoor, ycoor, zcoor, idrotm[2], "ONLY"); if (fTOFHoles) { cblpar[3] = kCBLlh *0.5; @@ -2017,11 +1829,13 @@ void AliTOFv6T0::MakeSuperModuleServices(Float_t xtof, Float_t ytof, Float_t zle } // lateral cable and tube volume positioning - xcoor = xtof*0.5-sawpar[0]; + xcoor = xtof*0.5 - sawpar[0]; ycoor = (fgkCBLh2 - ytof*0.5 + fgkModuleCoverThickness)*0.5; zcoor = 0.; gMC->Gspos("FSAW", 1, "FAIA", -xcoor, ycoor, zcoor, 0, "ONLY"); gMC->Gspos("FSAW", 2, "FAIA", xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FSAW", 1, "FAIC", -xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FSAW", 2, "FAIC", xcoor, ycoor, zcoor, 0, "ONLY"); if (fTOFHoles) { xcoor = xtof*0.5 - sawpar[0]; @@ -2041,9 +1855,10 @@ void AliTOFv6T0::MakeSuperModuleServices(Float_t xtof, Float_t ytof, Float_t zle } xcoor = 0.; - ycoor = 12.5*0.5 - covpar[1]; + ycoor = (ytof*0.5 - fgkModuleCoverThickness)*0.5 - covpar[1]; zcoor = 0.; gMC->Gspos("FCOV", 0, "FAIA", xcoor, ycoor, zcoor, 0, "ONLY"); + gMC->Gspos("FCOV", 0, "FAIC", xcoor, ycoor, zcoor, 0, "ONLY"); if (fTOFHoles) { zcoor = (zlenA*0.5 + fgkInterCentrModBorder2)*0.5; gMC->Gspos("FCOB", 1, "FAIB", xcoor, ycoor, zcoor, 0, "ONLY"); @@ -2104,257 +1919,8 @@ void AliTOFv6T0::MakeReadoutCrates(Float_t ytof) const } zcoor = (90. - 223.)*0.5; - gMC->Gspos("FTOS", 1, "BBCE", ra, 0., zcoor, 0, "ONLY"); - -} - -//_____________________________________________________________________________ -void AliTOFv6T0::DrawModule() const -{ - // - // Draw a shaded view of the Time Of Flight version 5 - // - - // Set everything unseen - gMC->Gsatt("*", "seen", -1); - - // - //Set volumes visible - // - - //Set ALIC mother transparent - gMC->Gsatt("ALIC","SEEN", 0); - -//=====> Level 1 - // Level 1 for TOF volumes - gMC->Gsatt("B077","seen", 0); - -//=====> Level 2 - // Level 2 for TOF volumes - gMC->Gsatt("B071","seen", 0); - gMC->Gsatt("B074","seen", 0); - gMC->Gsatt("B075","seen", 0); - gMC->Gsatt("B076","seen",-1); // all B076 sub-levels skipped - - gMC->Gsatt("B080","seen", 0); // B080 does not has sub-level - - // Level 2 of B071 - gMC->Gsatt("B056","seen", 0); // B056 does not has sub-levels - - gMC->Gsatt("B063","seen",-1); // all B063 sub-levels skipped - - gMC->Gsatt("B065","seen",-1); // all B065 sub-levels skipped - - gMC->Gsatt("B067","seen",-1); // all B067 sub-levels skipped - - gMC->Gsatt("B072","seen",-1); // all B072 sub-levels skipped - - - char name[16]; - for (Int_t isec=0; isecNSectors(); isec++) { - sprintf(name, "BREF%d",isec); - gMC->Gsatt(name,"seen", 0); // all BREF%d sub-levels skipped - - sprintf(name, "BTRD%d",isec); - gMC->Gsatt(name,"seen", 0); // all BTRD%d sub-levels skipped - - sprintf(name, "BTOF%d",isec); - gMC->Gsatt(name,"seen",-2); // all BTOF%d sub-levels skipped - - } - - gMC->Gdopt("hide", "on"); - gMC->Gdopt("shad", "on"); - gMC->Gsatt("*", "fill", 7); - gMC->SetClipBox("."); - gMC->SetClipBox("*", 100, 1000, 100, 1000, 100, 1000); - gMC->DefaultRange(); - gMC->Gdraw("alic", 40, 30, 0, 10, 9.5, .018, .018); - gMC->Gdhead(1111, "Time Of Flight"); - gMC->Gdman(18, 3, "MAN"); - gMC->Gdopt("hide","off"); -} -//_____________________________________________________________________________ -void AliTOFv6T0::DrawDetectorModules() const -{ - // - // Draw a shaded view of the TOF detector SuperModules version 5 - // - - // Set everything unseen - gMC->Gsatt("*", "seen", -1); - - // - //Set volumes visible - // - - //Set ALIC mother transparent - gMC->Gsatt("ALIC","SEEN", 0); - -//=====> Level 1 - // Level 1 for TOF volumes - gMC->Gsatt("B077","seen", 0); - -//=====> Level 2 - // Level 2 for TOF volumes - gMC->Gsatt("B071","seen", 0); - gMC->Gsatt("B074","seen", 0); - gMC->Gsatt("B075","seen", 0); - gMC->Gsatt("B076","seen",-1); // all B076 sub-levels skipped - - gMC->Gsatt("B080","seen", 0); // B080 does not has sub-level - - // Level 2 of B071 - gMC->Gsatt("B056","seen", 0); // B056 does not has sub-levels - - gMC->Gsatt("B063","seen",-1); // all B063 sub-levels skipped - - gMC->Gsatt("B065","seen",-1); // all B065 sub-levels skipped - - gMC->Gsatt("B067","seen",-1); // all B067 sub-levels skipped - - gMC->Gsatt("B072","seen",-1); // all B072 sub-levels skipped - - - char name[16]; - for (Int_t isec=0; isecNSectors(); isec++) { - sprintf(name, "BREF%d",isec); - gMC->Gsatt(name,"seen", 0); // all BREF%d sub-levels skipped - - sprintf(name, "BTRD%d",isec); - gMC->Gsatt(name,"seen", 0); // all BTRD%d sub-levels skipped - - sprintf(name, "BTOF%d",isec); - gMC->Gsatt(name,"seen", 0); // all BTOF%d sub-levels skipped - - } - - // Level 3 of B071, B075 and B074 - gMC->Gsatt("FTOA","seen",-2); // all FTOA sub-levels skipped - - if (fTOFHoles) gMC->Gsatt("FTOB","seen",-2); // all FTOB sub-levels skipped - - if (fTOFHoles) gMC->Gsatt("FTOC","seen",-2); // all FTOC sub-levels skipped - - - // Level 3 of B071, B075 and B074 - gMC->Gsatt("FAIA","seen",-1); // all FAIA sub-levels skipped - - if (fTOFHoles) gMC->Gsatt("FAIB","seen",-1); // all FAIB sub-levels skipped - - - // Level 3 of B071, B075 and B074 - gMC->Gsatt("FPEA","seen",-2/*1*/); // all FPEA sub-levels skipped - - if (fTOFHoles) gMC->Gsatt("FPEB","seen",-2/*1*/); // all FPEB sub-levels skipped - - - gMC->Gdopt("hide","on"); - gMC->Gdopt("shad","on"); - gMC->Gsatt("*", "fill", 5); - gMC->SetClipBox("."); - gMC->SetClipBox("*", 100, 1000, 100, 1000, 0, 1000); - gMC->DefaultRange(); - gMC->Gdraw("alic", 40, 30, 0, 10, 9.5, .018, .018); - gMC->Gdhead(1111,"TOF detector"); - gMC->Gdman(18, 3, "MAN"); - gMC->Gdopt("hide","off"); -} - -//_____________________________________________________________________________ -void AliTOFv6T0::DrawDetectorStrips() const -{ - // - // Draw a shaded view of the TOF strips for version 5 - // - - // Set everything unseen - gMC->Gsatt("*", "seen", -1); - - // - //Set volumes visible - // - - //Set ALIC mother transparent - gMC->Gsatt("ALIC","SEEN", 0); - -//=====> Level 1 - // Level 1 for TOF volumes - gMC->Gsatt("B077","seen", 0); - -//=====> Level 2 - // Level 2 for TOF volumes - gMC->Gsatt("B071","seen", 0); - gMC->Gsatt("B074","seen", 0); - gMC->Gsatt("B075","seen", 0); - gMC->Gsatt("B076","seen",-1); // all B076 sub-levels skipped - - gMC->Gsatt("B080","seen", 0); // B080 does not has sub-level - - // Level 2 of B071 - gMC->Gsatt("B063","seen",-1); // all B063 sub-levels skipped - - gMC->Gsatt("B065","seen",-1); // all B065 sub-levels skipped - - gMC->Gsatt("B067","seen",-1); // all B067 sub-levels skipped - - gMC->Gsatt("B056","seen", 0); // B056 does not has sub-levels - - gMC->Gsatt("B072","seen",-1); // all B072 sub-levels skipped - - - char name[16]; - for (Int_t isec=0; isecNSectors(); isec++) { - sprintf(name, "BREF%d",isec); - gMC->Gsatt(name,"seen", 0); // all BREF%d sub-levels skipped - - sprintf(name, "BTRD%d",isec); - gMC->Gsatt(name,"seen", 0); // all BTRD%d sub-levels skipped - - sprintf(name, "BTOF%d",isec); - gMC->Gsatt(name,"seen", 0); // all BTOF%d sub-levels skipped - - } - - // Level 3 of B071, B074 and B075 - gMC->Gsatt("FTOA","SEEN", 0); - if (fTOFHoles) gMC->Gsatt("FTOB","SEEN", 0); - if (fTOFHoles) gMC->Gsatt("FTOC","SEEN", 0); - - // Level 4 of B071, B074 and B075 - gMC->Gsatt("FLTA","SEEN", 0); - if (fTOFHoles) gMC->Gsatt("FLTB","SEEN", 0); - if (fTOFHoles) gMC->Gsatt("FLTC","SEEN", 0); - - // Level 5 of B071, B074 and B075 - gMC->Gsatt("FAIA","SEEN", 0); - if (fTOFHoles) gMC->Gsatt("FAIB","SEEN", 0); - - gMC->Gsatt("FPEA","SEEN", -2/*1*/); - if (fTOFHoles) gMC->Gsatt("FPEB","SEEN", -2/*1*/); - - gMC->Gsatt("FSTR","SEEN",-2); // all FSTR sub-levels skipped - - - gMC->Gsatt("FWZ1","SEEN", 1); - gMC->Gsatt("FWZ2","SEEN", 1); - gMC->Gsatt("FWZ3","SEEN", 1); - gMC->Gsatt("FWZ4","SEEN", 1); - if (fTOFHoles) { - gMC->Gsatt("FWZA","SEEN", 1); - gMC->Gsatt("FWZB","SEEN", 1); - gMC->Gsatt("FWZC","SEEN", 1); - } - - // Level 2 of FAIA - // Level 2 of FAIB - gMC->Gsatt("FCA1","SEEN", 0); - gMC->Gsatt("FCA2","SEEN", 0); - gMC->Gsatt("FCAB","SEEN", 0); - gMC->Gsatt("FCAL","SEEN", 0); - gMC->Gsatt("FTUB","SEEN",-1); // all FTUB sub-levels skipped - - gMC->Gsatt("FTLN","SEEN", 0); - gMC->Gsatt("FLTN","SEEN", 0); - gMC->Gsatt("FCBL","SEEN", 0); - if (fTOFHoles) gMC->Gsatt("FCBB","SEEN", 0); - gMC->Gsatt("FSAW","SEEN", 0); - gMC->Gsatt("FCOV","SEEN", 0); - if (fTOFHoles) { - gMC->Gsatt("FCOB","SEEN", 0); - gMC->Gsatt("FCOP","SEEN", 0); - } + gMC->Gspos("FTOS", 1, "BBCE", ra, -3., zcoor, 0, "ONLY"); - // Level 2 of FTUB - gMC->Gsatt("FITU","SEEN", 0); - - // Level 2 of FSTR - gMC->Gsatt("FHON","SEEN", 1); - gMC->Gsatt("FPC1","SEEN", 1); - gMC->Gsatt("FPC2","SEEN", 1); - gMC->Gsatt("FPCB","SEEN", 1); - gMC->Gsatt("FRGL","SEEN", 1); - gMC->Gsatt("FGLF","SEEN", 1); - - // Level 2 of FPCB => Level 3 of FSTR - gMC->Gsatt("FSEN","SEEN", 0); - gMC->Gsatt("FSEZ","SEEN", 0); - gMC->Gsatt("FPAD","SEEN", 1); - - gMC->Gdopt("hide","on"); - gMC->Gdopt("shad","on"); - gMC->Gsatt("*", "fill", 5); - gMC->SetClipBox("."); - gMC->SetClipBox("*", 0, 1000, 0, 1000, 0, 1000); - gMC->DefaultRange(); - gMC->Gdraw("alic", 40, 30, 0, 10, 9.5, .018, .018); - gMC->Gdhead(1111,"TOF Strips"); - gMC->Gdman(18, 3, "MAN"); - gMC->Gdopt("hide","off"); } //_____________________________________________________________________________ @@ -2366,7 +1932,7 @@ void AliTOFv6T0::CreateMaterials() //AliTOF::CreateMaterials(); - AliMagF *magneticField = (AliMagF*)gAlice->Field(); + AliMagF *magneticField = (AliMagF*)((AliMagF*)TGeoGlobalMagField::Instance()->GetField()); Int_t isxfld = magneticField->Integ(); Float_t sxmgmx = magneticField->Max(); @@ -2402,7 +1968,7 @@ void AliTOFv6T0::CreateMaterials() wmatg10[2]= we[2]*0.4; wmatg10[3]= we[3]*0.4; wmatg10[4]= we[4]*0.4; - AliDebug(1,Form("wg10 %d %d %d %d %d", wmatg10[0], wmatg10[1], wmatg10[2], wmatg10[3], wmatg10[4])); + AliDebug(1,Form("wg10 %f %f %f %f %f", wmatg10[0], wmatg10[1], wmatg10[2], wmatg10[3], wmatg10[4])); //Float_t densg10 = 1.7; //old value Float_t densg10 = 2.0; // (+17.8%) @@ -2584,8 +2150,8 @@ void AliTOFv6T0::StepManager() AliMC *mcApplication = (AliMC*)gAlice->GetMCApp(); - //AddTrackReference(mcApplication->GetCurrentTrackNumber(), AliTrackReference::kTOF); - AddTrackReference(mcApplication->GetCurrentTrackNumber()); + AddTrackReference(mcApplication->GetCurrentTrackNumber(), AliTrackReference::kTOF); + //AddTrackReference(mcApplication->GetCurrentTrackNumber()); // getting information about hit volumes @@ -2689,7 +2255,8 @@ void AliTOFv6T0::StepManager() } } //------------------------------------------------------------------- -void AliTOFv6T0::MaterialMixer(Float_t* p,Float_t* a,Float_t* m,Int_t n) const +void AliTOFv6T0::MaterialMixer(Float_t * p, const Float_t * const a, + const Float_t * const m, Int_t n) const { // a[] atomic weights vector (in) // (atoms present in more compound appear separately)