X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSv11Hybrid.cxx;h=fe19fdbf0418409d8e9b04c72c8bcec9061fe9e6;hb=58e8dc31d3a168d1eabfa44d71b82f1380ca004f;hp=0f4c51b40f94f9b4199f999a6b7ea82d66eb84e7;hpb=0fcbd0599801ef7381b833d62f9aa7480cae4f7e;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSv11Hybrid.cxx b/ITS/AliITSv11Hybrid.cxx index 0f4c51b40f9..fe19fdbf041 100644 --- a/ITS/AliITSv11Hybrid.cxx +++ b/ITS/AliITSv11Hybrid.cxx @@ -1,5 +1,5 @@ /************************************************************************** - * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. * * * * Author: The ALICE Off-line Project. * * Contributors are mentioned in the code where appropriate. * @@ -70,26 +70,20 @@ // Updates concerning the geometry: versioning system, new V11hybrid version, bug fixes (B.Nilsend and L. Gaudichet // - #include -#include -#include +#include +#include #include #include -#include -#include -#include -#include #include #include +#include +#include #include #include "AliITS.h" #include "AliITSDetTypeSim.h" #include "AliITSgeom.h" -#include "AliITSgeomSDD.h" -#include "AliITSgeomSPD.h" -#include "AliITSgeomSSD.h" #include "AliITShit.h" #include "AliITSCalibrationSDD.h" #include "AliITSsegmentationSDD.h" @@ -113,9 +107,6 @@ ClassImp(AliITSv11Hybrid) //______________________________________________________________________ AliITSv11Hybrid::AliITSv11Hybrid(): - AliITS(), - fGeomDetOut(kFALSE), - fGeomDetIn(kFALSE), fByThick(kTRUE), fMajorVersion(IsVersion()), fMinorVersion(-1), @@ -144,8 +135,6 @@ AliITSv11Hybrid::AliITSv11Hybrid(): //______________________________________________________________________ AliITSv11Hybrid::AliITSv11Hybrid(const char *title) : AliITS("ITS", title), - fGeomDetOut(kFALSE), - fGeomDetIn(kFALSE), fByThick(kTRUE), fMajorVersion(IsVersion()), fMinorVersion(1), @@ -211,18 +200,11 @@ AliITSv11Hybrid::AliITSv11Hybrid(const char *title) SetThicknessChip2(); SetDensityServicesByThickness(); - fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc"; - strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60); - strncpy(fRead,fEuclidGeomDet,60); - strncpy(fWrite,fEuclidGeomDet,60); - strncpy(fRead,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det",60); } //______________________________________________________________________ AliITSv11Hybrid::AliITSv11Hybrid(const char *name, const char *title) : AliITS("ITS", title), - fGeomDetOut(kFALSE), - fGeomDetIn(kFALSE), fByThick(kTRUE), fMajorVersion(IsVersion()), fMinorVersion(1), @@ -291,11 +273,6 @@ AliITSv11Hybrid::AliITSv11Hybrid(const char *name, const char *title) SetThicknessChip2(); SetDensityServicesByThickness(); - fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc"; - strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60); - strncpy(fRead,fEuclidGeomDet,60); - strncpy(fWrite,fEuclidGeomDet,60); - strncpy(fRead,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det",60); } //______________________________________________________________________ @@ -688,9 +665,8 @@ void AliITSv11Hybrid::AddAlignableVolumes() const{ modnum = 0; TString str0 = "/ALIC_1/ITSV_1/ITSsddLayer3_1/ITSsddLadd_"; // SDD layer1 TString str1 = "/ITSsddSensor3_"; - TString str2 = "/ITSsddWafer3_1"; TString ladder; - TString wafer; + TString sensor; for(Int_t c1 = 0; c1<14; c1++) { @@ -708,17 +684,16 @@ void AliITSv11Hybrid::AddAlignableVolumes() const{ for(Int_t c2 =0; c2<6; c2++) { modUID = AliGeomManager::LayerToVolUID(layerId,modnum++); - wafer = ladder; - wafer += str1; - wafer += c2; - wafer += str2; // one wafer + sensor = ladder; + sensor += str1; + sensor += c2; strEntryName2 = strEntryName1; strEntryName2 += strSensor; strEntryName2 += c2; //printf("%s == %s\n",strEntryName2.Data(),wafer.Data()); - if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID)) + if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),sensor.Data(),modUID)) AliFatal(Form("Unable to set alignable entry 2! %s :: %s", - strEntryName2.Data(),wafer.Data())); + strEntryName2.Data(),sensor.Data())); if(c1 != 2) { SetT2Lmatrix(modUID, 0, kFALSE, c2>=3); @@ -732,7 +707,6 @@ void AliITSv11Hybrid::AddAlignableVolumes() const{ modnum = 0; str0 = "/ALIC_1/ITSV_1/ITSsddLayer4_1/ITSsddLadd_"; // SDD layer2 str1 = "/ITSsddSensor4_"; - str2 = "/ITSsddWafer4_1"; for(Int_t c1 = 0; c1<22; c1++) { @@ -750,17 +724,16 @@ void AliITSv11Hybrid::AddAlignableVolumes() const{ for(Int_t c2 =0; c2<8; c2++) { modUID = AliGeomManager::LayerToVolUID(layerId,modnum++); - wafer = ladder; - wafer += str1; - wafer += c2; - wafer += str2; // one wafer + sensor = ladder; + sensor += str1; + sensor += c2; strEntryName2 = strEntryName1; strEntryName2 += strSensor; strEntryName2 += c2; //printf("%s == %s\n",strEntryName2.Data(),wafer.Data()); - if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID)) + if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),sensor.Data(),modUID)) AliFatal(Form("Unable to set alignable entry 2! %s :: %s", - strEntryName2.Data(),wafer.Data())); + strEntryName2.Data(),sensor.Data())); SetT2Lmatrix(modUID, 0, kFALSE, c2>=4); } @@ -996,63 +969,6 @@ void AliITSv11Hybrid::AddAlignableVolumes() const{ } // end SSD geometry } -//______________________________________________________________________ -void AliITSv11Hybrid::BuildGeometry(){ - // Geometry builder for the ITS version 10. Event Display geometry. - // Inputs: - // none. - // Outputs: - // none. - // Return: - // none. - - TNode *node, *top; - - const Int_t kColorITS=kYellow; - // - top = gAlice->GetGeometry()->GetNode("alice"); - - - new TTUBE("S_layer1","Layer1 of ITS","void", - 3.8095,3.8095+1.03*9.36/100.,14.35); - top->cd(); - node = new TNode("Layer1","Layer1","S_layer1",0,0,0,""); - node->SetLineColor(kColorITS); - fNodes->Add(node); - - new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+1.03*9.36/100.,14.35); - top->cd(); - node = new TNode("Layer2","Layer2","S_layer2",0,0,0,""); - node->SetLineColor(kColorITS); - fNodes->Add(node); - - new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.94*9.36/100.,25.1); - top->cd(); - node = new TNode("Layer3","Layer3","S_layer3",0,0,0,""); - node->SetLineColor(kColorITS); - fNodes->Add(node); - - new TTUBE("S_layer4","Layer4 of ITS","void",24.1,24.1+0.95*9.36/100.,32.1); - top->cd(); - node = new TNode("Layer4","Layer4","S_layer4",0,0,0,""); - node->SetLineColor(kColorITS); - fNodes->Add(node); - - new TTUBE("S_layer5","Layer5 of ITS","void", - 38.5,38.5+0.91*9.36/100.,49.405); - top->cd(); - node = new TNode("Layer5","Layer5","S_layer5",0,0,0,""); - node->SetLineColor(kColorITS); - fNodes->Add(node); - - new TTUBE("S_layer6","Layer6 of ITS","void", - 43.5765,43.5765+0.87*9.36/100.,55.27); - top->cd(); - node = new TNode("Layer6","Layer6","S_layer6",0,0,0,""); - node->SetLineColor(kColorITS); - fNodes->Add(node); -} - //______________________________________________________________________ void AliITSv11Hybrid::CreateGeometry() { @@ -1107,6 +1023,7 @@ void AliITSv11Hybrid::CreateGeometry() { if (AliITSInitGeometry::ServicesAreTGeoNative()) { fSDDgeom->SDDCables(vITS); + fSSDgeom->SSDCables(vITS); } } @@ -4567,7 +4484,6 @@ void AliITSv11Hybrid::CreateOldGeometry(){ gMC->Gspos("I2CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY"); gMC->Gspos("I2CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY"); - } // Move this graph down as you implement services in TGeo - M.S. 19mar08 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES // UPPER PART @@ -4594,11 +4510,13 @@ void AliITSv11Hybrid::CreateOldGeometry(){ gMC->Gspos("IPA2", 1, "ITSV", 0., 0., 95.25, 0, "ONLY"); gMC->Gspos("IPA2", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY"); + } // Move this graph down as you implement services in TGeo - M.S. 28may08 + // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - COPPER PART // UPPER PART - dgh[0] = (ztpc-97.5)/2.; + dgh[0] = (ztpc-97.5-2.3)/2.; dgh[1] = 46.2; dgh[2] = 46.2+1.0; dgh[3] = 62.3; @@ -4606,12 +4524,13 @@ void AliITSv11Hybrid::CreateOldGeometry(){ dgh[5] = 12.; dgh[6] = 168.; gMC->Gsvolu("ICU1", "CONS", idtmed[213], dgh, 7); - gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY"); + // gMC->Gspos("ICU1", 1, "ITSV", 0., 0.,97.5+dgh[0], 0, "ONLY"); + gMC->Gspos("ICU1", 1, "ITSV", 0., 0.,-(97.5+dgh[0]+4.6), idrotm[199], "ONLY"); // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - COPPER PART // LOWER PART - dgh[0] = (ztpc-97.5)/2.; + dgh[0] = (ztpc-97.5-2.3)/2.; dgh[1] = 46.2; dgh[2] = 46.2+1.0; dgh[3] = 62.3; @@ -4619,13 +4538,14 @@ void AliITSv11Hybrid::CreateOldGeometry(){ dgh[5] = 192.; dgh[6] = 348.; gMC->Gsvolu("ICU2", "CONS", idtmed[213], dgh, 7); - gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY"); + // gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY"); + gMC->Gspos("ICU2", 1, "ITSV", 0., 0., -(97.5+dgh[0]+4.6), idrotm[199], "ONLY"); // -- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - CARBON PART // UPPER PART - dgh[0] = (ztpc-97.5)/2.; + dgh[0] = (ztpc-97.5-2.3)/2.; dgh[1] = 46.2+1.0; dgh[2] = 46.2+1.0+1.5; dgh[3] = 62.3+1.0; @@ -4633,12 +4553,13 @@ void AliITSv11Hybrid::CreateOldGeometry(){ dgh[5] = 12.; dgh[6] = 168.; gMC->Gsvolu("ICC1", "CONS", idtmed[225], dgh, 7); - gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY"); + // gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY"); + gMC->Gspos("ICC1", 1, "ITSV", 0., 0., -(97.5+dgh[0]+4.6), idrotm[199], "ONLY"); // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - CARBON PART // LOWER PART - dgh[0] = (ztpc-97.5)/2.; + dgh[0] = (ztpc-97.5-2.3)/2.; dgh[1] = 46.2+1.0; dgh[2] = 46.2+1.0+1.5; dgh[3] = 62.3+1.0; @@ -4646,159 +4567,214 @@ void AliITSv11Hybrid::CreateOldGeometry(){ dgh[5] = 192.; dgh[6] = 348.; gMC->Gsvolu("ICC2", "CONS", idtmed[225], dgh, 7); - gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY"); + // gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY"); + gMC->Gspos("ICC2", 1, "ITSV", 0., 0., -(97.5+dgh[0]+4.6), idrotm[199], "ONLY"); // -- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - COPPER PART // UPPER PART - dgh[0] = 62.; + dgh[0] = 62.2; dgh[1] = 74.5; dgh[2] = 0.5; dgh[3] = 12.; dgh[4] = 168.; gMC->Gsvolu("ICU3", "TUBS", idtmed[213], dgh, 5); - gMC->Gspos("ICU3", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY"); + // gMC->Gspos("ICU3", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY"); + gMC->Gspos("ICU3", 1, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]+1.), idrotm[199], "ONLY"); // -- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - COPPER PART // LOWER PART - dgh[0] = 62.; + dgh[0] = 62.2; dgh[1] = 74.5; dgh[2] = 0.5; dgh[3] = 192.; dgh[4] = 348.; gMC->Gsvolu("ICU4", "TUBS", idtmed[213], dgh, 5); - gMC->Gspos("ICU4", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY"); + // gMC->Gspos("ICU4", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY"); + gMC->Gspos("ICU4", 1, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]+1.), idrotm[199], "ONLY"); // -- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - CARBON PART // UPPER PART - dgh[0] = 62.1; + dgh[0] = 64.8; dgh[1] = 74.5; dgh[2] = 0.75; dgh[3] = 12.; dgh[4] = 168.; gMC->Gsvolu("ICC3", "TUBS", idtmed[225], dgh, 5); - gMC->Gspos("ICC3", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY"); + // gMC->Gspos("ICC3", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY"); + gMC->Gspos("ICC3", 1, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[199], "ONLY"); // -- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - CARBON PART // LOWER PART - dgh[0] = 62.1; + dgh[0] = 64.8; dgh[1] = 74.5; dgh[2] = 0.75; dgh[3] = 192.; dgh[4] = 348.; gMC->Gsvolu("ICC4", "TUBS", idtmed[225], dgh, 5); - gMC->Gspos("ICC4", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY"); + // gMC->Gspos("ICC4", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY"); + gMC->Gspos("ICC4", 1, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[199], "ONLY"); // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T. // THE ABSORBER - COPPER PART - UPPER PART - + dgh[0] = 46.; dgh[1] = 46.+1.0; - dgh[2] = (ztpc-97.5+1.5)/2.; +// dgh[2] = (ztpc-97.5+1.5-2.5)/2.; + dgh[2] = (186.6 - 101.1)/2.; dgh[3] = 12.; dgh[4] = 168.; gMC->Gsvolu("ICU5", "TUBS", idtmed[213], dgh, 5); - gMC->Gspos("ICU5", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY"); - + // gMC->Gspos("ICU5", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY"); + gMC->Gspos("ICU5", 1, "ITSV", 0., 0., -(-101.1-dgh[2]), idrotm[199], "ONLY"); + + dgh[0] = (ztpc - 1.0 - 186.6)/2.; + dgh[1] = 64.0; + dgh[2] = 64.0+1.0; + dgh[3] = 46.; + dgh[4] = 46.+1.0; + dgh[5] = 12.; + dgh[6] = 168.; + gMC->Gsvolu("ICU9", "CONS", idtmed[213], dgh, 7); + gMC->Gspos("ICU9", 1, "ITSV", 0., 0., -(-186.6-dgh[0]), idrotm[199], "ONLY"); + // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T. // THE ABSORBER - COPPER PART - LOWER PART dgh[0] = 46.; dgh[1] = 46.+1.0; - dgh[2] = (ztpc-97.5+1.5)/2.; +// dgh[2] = (ztpc-97.5+1.5-2.5)/2.; + dgh[2] = (186.6 - 101.1)/2.; dgh[3] = 192.; dgh[4] = 348.; gMC->Gsvolu("ICU6", "TUBS", idtmed[213], dgh, 5); - gMC->Gspos("ICU6", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY"); - + // gMC->Gspos("ICU6", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY"); + gMC->Gspos("ICU6", 1, "ITSV", 0., 0., -(-101.1-dgh[2]), idrotm[199], "ONLY"); + + dgh[0] = (ztpc - 1.0 - 186.6)/2.; + dgh[1] = 64.0; + dgh[2] = 64.0+1.0; + dgh[3] = 46.; + dgh[4] = 46.+1.0; + dgh[5] = 192.; + dgh[6] = 348.; + gMC->Gsvolu("ICU0", "CONS", idtmed[213], dgh, 7); + gMC->Gspos("ICU0", 1, "ITSV", 0., 0., -(-186.6-dgh[0]), idrotm[199], "ONLY"); + // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T. // THE ABSORBER - CARBON PART - UPPER PART dgh[0] = 46.+1.0; dgh[1] = 46.+1.0+1.5; - dgh[2] = (ztpc-97.5)/2.; +// dgh[2] = (ztpc-97.5)/2.; + dgh[2] = (186.6 - 101.1)/2.; dgh[3] = 12.; dgh[4] = 168.; gMC->Gsvolu("ICC5", "TUBS", idtmed[225], dgh, 5); - gMC->Gspos("ICC5", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY"); - + // gMC->Gspos("ICC5", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY"); + gMC->Gspos("ICC5", 1, "ITSV", 0., 0., -(-101.1-dgh[2]), idrotm[199], "ONLY"); + + dgh[0] = (ztpc - 1.0 - 186.6)/2.; + dgh[1] = 64.0+1.0; + dgh[2] = 64.0+1.0+1.5; + dgh[3] = 46.+1.0; + dgh[4] = 46.+1.0+1.5; + dgh[5] = 12.; + dgh[6] = 168.; + gMC->Gsvolu("ICC9", "CONS", idtmed[225], dgh, 7); + gMC->Gspos("ICC9", 1, "ITSV", 0., 0., -(-186.6-dgh[0]), idrotm[199], "ONLY"); + // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T. // THE ABSORBER - CARBON PART - LOWER PART dgh[0] = 46.+1.0; dgh[1] = 46.+1.0+1.5; - dgh[2] = (ztpc-97.5)/2.; +// dgh[2] = (ztpc-97.5)/2.; + dgh[2] = (186.6 - 101.1)/2.; dgh[3] = 192.; dgh[4] = 348.; gMC->Gsvolu("ICC6", "TUBS", idtmed[225], dgh, 5); - gMC->Gspos("ICC6", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY"); + // gMC->Gspos("ICC6", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY"); + gMC->Gspos("ICC6", 1, "ITSV", 0., 0., -(-101.1-dgh[2]), idrotm[199], "ONLY"); + + dgh[0] = (ztpc - 1.0 - 186.6)/2.; + dgh[1] = 64.0+1.0; + dgh[2] = 64.0+1.0+1.5; + dgh[3] = 46.+1.0; + dgh[4] = 46.+1.0+1.5; + dgh[5] = 192.; + dgh[6] = 348.; + gMC->Gsvolu("ICC0", "CONS", idtmed[225], dgh, 7); + gMC->Gspos("ICC0", 1, "ITSV", 0., 0., -(-186.6-dgh[0]), idrotm[199], "ONLY"); // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER // COPPER PART - UPPER PART - dgh[0] = 46.; + dgh[0] = 64.0; dgh[1] = 74.5; dgh[2] = 0.5; dgh[3] = 12.; dgh[4] = 168.; gMC->Gsvolu("ICU7", "TUBS", idtmed[213], dgh, 5); - gMC->Gspos("ICU7", 1, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), 0, "ONLY"); + gMC->Gspos("ICU7", 1, "ITSV", 0., 0., (ztpc+1.5+dgh[2]), idrotm[199], "ONLY"); // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER // COPPER PART - LOWER PART - dgh[0] = 46.; + dgh[0] = 64.0; dgh[1] = 74.5; dgh[2] = 0.5; dgh[3] = 192.; dgh[4] = 348.; gMC->Gsvolu("ICU8", "TUBS", idtmed[213], dgh, 5); - gMC->Gspos("ICU8", 1, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), 0, "ONLY"); + gMC->Gspos("ICU8", 1, "ITSV", 0., 0., (ztpc+1.5+dgh[2]), idrotm[199], "ONLY"); // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER // CARBON PART - UPPER PART - dgh[0] = 46.+1.0; + dgh[0] = 64.0+1.0; dgh[1] = 74.5; dgh[2] = 0.75; dgh[3] = 12.; dgh[4] = 168.; gMC->Gsvolu("ICC7", "TUBS", idtmed[225], dgh, 5); - gMC->Gspos("ICC7", 1, "ITSV", 0., 0., -(ztpc+dgh[2]), 0, "ONLY"); + gMC->Gspos("ICC7", 1, "ITSV", 0., 0., (ztpc+dgh[2]), idrotm[199], "ONLY"); // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER // CARBON PART - LOWER PART - dgh[0] = 46.+1.0; + dgh[0] = 64.0+1.0; dgh[1] = 74.5; dgh[2] = 0.75; dgh[3] = 192.; dgh[4] = 348.; gMC->Gsvolu("ICC8", "TUBS", idtmed[225], dgh, 5); - gMC->Gspos("ICC8", 1, "ITSV", 0., 0., -(ztpc+dgh[2]), 0, "ONLY"); + gMC->Gspos("ICC8", 1, "ITSV", 0., 0., (ztpc+dgh[2]), idrotm[199], "ONLY"); + + // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART - dgh[0] = 74.5; - dgh[1] = 79.5; + dgh[0] = 74.7; + dgh[1] = 75.3; dgh[2] = 2.5; dgh[3] = 12.; dgh[4] = 168.; gMC->Gsvolu("IHK1", "TUBS", idtmed[264], dgh, 5); - gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY"); + gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -(-ztpc-dgh[2]), idrotm[199], "ONLY"); // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - LOWER PART - dgh[0] = 74.5; - dgh[1] = 79.5; + dgh[0] = 74.7; + dgh[1] = 75.3; dgh[2] = 2.5; dgh[3] = 192.; dgh[4] = 348.; gMC->Gsvolu("IHK2", "TUBS", idtmed[264], dgh, 5); - gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY"); + gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -(-ztpc-dgh[2]), idrotm[199], "ONLY"); // } @@ -4812,9 +4788,9 @@ void AliITSv11Hybrid::CreateOldGeometry(){ dgh[1] = 8.; dgh[2] = 190.; gMC->Gsvolu("IRA1", "BOX ", idtmed[268], dgh, 3); - gMC->Gspos("IRA1", 1, "ITSV", 53.5, 0., -69.5, 0, "ONLY"); + gMC->Gspos("IRA1", 1, "ITSV", 53.5, 0., 69.5, idrotm[199], "ONLY"); gMC->Gsvolu("IRA2", "BOX ", idtmed[268], dgh, 3); - gMC->Gspos("IRA2", 1, "ITSV", -53.5, 0., -69.5, 0, "ONLY"); + gMC->Gspos("IRA2", 1, "ITSV", -53.5, 0., 69.5, idrotm[199], "ONLY"); dgh[0] = 2.-0.5;// 0.5 was determined in such a way that the aluminum area is 20.9 cm^2 dgh[1] = 8.-0.5;// 0.5 was determined in such a way that the aluminum area is 20.9 cm^2 @@ -4832,8 +4808,8 @@ void AliITSv11Hybrid::CreateOldGeometry(){ dgh[1] = 59.; dgh[2] = 0.6; gMC->Gsvolu("ICYL", "TUBE", idtmed[210], dgh, 3); - gMC->Gspos("ICYL", 1, "ALIC", 0., 0., -74.1,idrotm[199], "ONLY"); - gMC->Gspos("ICYL", 2, "ALIC", 0., 0., 74.1, 0, "ONLY"); + gMC->Gspos("ICYL", 1, "ITSV", 0., 0., -74.1,idrotm[199], "ONLY"); + gMC->Gspos("ICYL", 2, "ITSV", 0., 0., 74.1, 0, "ONLY"); // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE CYLINDERS @@ -4841,14 +4817,14 @@ void AliITSv11Hybrid::CreateOldGeometry(){ dgh[1] = 3.; dgh[2] = 5.;// 5. comes from the fact that the volume has to be 567.6/2 cm^3 gMC->Gsvolu("ISR1", "TUBE", idtmed[284], dgh, 3); - gMC->Gspos("ISR1", 1, "ITSV", 53.4292, 10.7053, 79.75, 0, "ONLY"); - gMC->Gspos("ISR1", 2, "ITSV", 53.4292, -10.7053, 79.75, 0, "ONLY"); - gMC->Gspos("ISR1", 3, "ITSV", -53.4292, 10.7053, 79.75, 0, "ONLY"); - gMC->Gspos("ISR1", 4, "ITSV", -53.4292, -10.7053, 79.75, 0, "ONLY"); - gMC->Gspos("ISR1", 5, "ITSV", 53.4292, 10.7053, -79.75, 0, "ONLY"); - gMC->Gspos("ISR1", 6, "ITSV", 53.4292, -10.7053, -79.75, 0, "ONLY"); - gMC->Gspos("ISR1", 7, "ITSV", -53.4292, 10.7053, -79.75, 0, "ONLY"); - gMC->Gspos("ISR1", 8, "ITSV", -53.4292, -10.7053, -79.75, 0, "ONLY"); + gMC->Gspos("ISR1", 1, "ITSV", 53.4292, 10.7053, -79.75,idrotm[199],"ONLY"); + gMC->Gspos("ISR1", 2, "ITSV", 53.4292, -10.7053, -79.75,idrotm[199],"ONLY"); + gMC->Gspos("ISR1", 3, "ITSV", -53.4292, 10.7053, -79.75,idrotm[199],"ONLY"); + gMC->Gspos("ISR1", 4, "ITSV", -53.4292, -10.7053, -79.75,idrotm[199],"ONLY"); + gMC->Gspos("ISR1", 5, "ITSV", 53.4292, 10.7053, 79.75,idrotm[199],"ONLY"); + gMC->Gspos("ISR1", 6, "ITSV", 53.4292, -10.7053, 79.75,idrotm[199],"ONLY"); + gMC->Gspos("ISR1", 7, "ITSV", -53.4292, 10.7053, 79.75,idrotm[199],"ONLY"); + gMC->Gspos("ISR1", 8, "ITSV", -53.4292, -10.7053, 79.75,idrotm[199],"ONLY"); // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE ABSORBER @@ -4856,9 +4832,9 @@ void AliITSv11Hybrid::CreateOldGeometry(){ dgh[1] = 12.; dgh[2] = 5.; gMC->Gsvolu("ISR2", "BOX ", idtmed[210], dgh, 3); - gMC->Gspos("ISR2", 1, "ITSV", -53.5, 0., -125.5, idrotm[199], "ONLY"); + gMC->Gspos("ISR2", 1, "ITSV", -53.5, 0., 125.5, 0, "ONLY"); gMC->Gsvolu("ISR3", "BOX ", idtmed[210], dgh, 3); - gMC->Gspos("ISR3", 1, "ITSV", 53.5, 0., -125.5, idrotm[199], "ONLY"); + gMC->Gspos("ISR3", 1, "ITSV", 53.5, 0., 125.5, 0, "ONLY"); dgh[0] = 5.-2.; dgh[1] = 12.-2.; @@ -4874,20 +4850,12 @@ void AliITSv11Hybrid::CreateOldGeometry(){ dgh[1] = 5.; dgh[2] = 2.; gMC->Gsvolu("ISR6", "TUBE", idtmed[210], dgh, 3); - gMC->Gspos("ISR6", 1, "ITSV", 0., 54., -77., idrotm[199], "ONLY"); - gMC->Gspos("ISR6", 2, "ITSV", 0., 54., 77., idrotm[199], "ONLY"); - gMC->Gspos("ISR6", 3, "ITSV", 0., -54., 77., idrotm[199], "ONLY"); - - } + gMC->Gspos("ISR6", 1, "ITSV", 0., 54., 77., 0, "ONLY"); + gMC->Gspos("ISR6", 2, "ITSV", 0., 54., -77., 0, "ONLY"); + gMC->Gspos("ISR6", 3, "ITSV", 0., -54., -77., 0, "ONLY"); - - // --- Outputs the geometry tree in the EUCLID/CAD format - - if (fEuclidOut) { - gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5); } - { if (!gGeoManager) { AliError("TGeoManager doesn't exist !"); @@ -5119,8 +5087,8 @@ void AliITSv11Hybrid::CreateMaterials(){ // Return: // none. - Int_t ifield = gAlice->Field()->Integ(); - Float_t fieldm = gAlice->Field()->Max(); + Int_t ifield = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ(); + Float_t fieldm = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max(); Float_t tmaxfd = 0.1; // 1.0; // Degree Float_t stemax = 1.0; // cm @@ -5763,7 +5731,6 @@ void AliITSv11Hybrid::Init(){ fMinorVersion)); UpdateInternalGeometry(); AliITS::Init(); - if(fGeomDetOut) GetITSgeom()->WriteNewFile(fWrite); fIDMother = gMC->VolId("ITSV"); // ITS Mother Volume ID. } @@ -5778,92 +5745,14 @@ void AliITSv11Hybrid::SetDefaults(){ // Return: // none. - const Float_t kconv = 1.0e+04; // convert cm to microns - if(!fDetTypeSim){ Warning("SetDefaults","Error fDetTypeSim not defined"); return; } - AliITSgeomSPD *s0; - AliITSgeomSDD *s1; - AliITSgeomSSD *s2; - Int_t i; - Float_t bx[256],bz[280]; - fDetTypeSim->SetDefaults(); - //SPD - s0 = (AliITSgeomSPD*) GetITSgeom()->GetShape(kSPD); - // Get shape info. Do it this way for now. - //AliITSCalibrationSPD* resp0=new AliITSCalibrationSPD(); - AliITSsegmentationSPD* seg0 = - (AliITSsegmentationSPD*)fDetTypeSim->GetSegmentationModel(0); - seg0->SetDetSize(s0->GetDx()*2.*kconv, // base this on AliITSgeomSPD - s0->GetDz()*2.*kconv, // for now. - s0->GetDy()*2.*kconv); // x,z,y full width in microns. - seg0->SetNPads(256,160);// Number of Bins in x and z - for(i=000;i<256;i++) bx[i] = 50.0; // in x all are 50 microns. - for(i=000;i<160;i++) bz[i] = 425.0; // most are 425 microns except below - for(i=160;i<280;i++) bz[i] = 0.0; // Outside of detector. - bz[ 31] = bz[ 32] = 625.0; // first chip boundry - bz[ 63] = bz[ 64] = 625.0; // first chip boundry - bz[ 95] = bz[ 96] = 625.0; // first chip boundry - bz[127] = bz[128] = 625.0; // first chip boundry - bz[160] = 425.0; // Set so that there is no zero pixel size for fNz. - seg0->SetBinSize(bx,bz); // Based on AliITSgeomSPD for now. - SetSegmentationModel(kSPD,seg0); - // set digit and raw cluster classes to be used - const char *kData0=(fDetTypeSim->GetCalibrationModel( - GetITSgeom()->GetStartSPD()))->DataType(); - if (strstr(kData0,"real")) fDetTypeSim->SetDigitClassName(kSPD, - "AliITSdigit"); - else fDetTypeSim->SetDigitClassName(kSPD,"AliITSdigitSPD"); - // SDD - s1 = (AliITSgeomSDD*) GetITSgeom()->GetShape(kSDD); - // Get shape info. Do it this way for now. - - //AliITSCalibrationSDD* resp1=new AliITSCalibrationSDD("simulated"); - AliITSsegmentationSDD* seg1 = - (AliITSsegmentationSDD*)fDetTypeSim->GetSegmentationModel(1); - seg1->SetDetSize(s1->GetDx()*kconv, // base this on AliITSgeomSDD - s1->GetDz()*2.*kconv, // for now. - s1->GetDy()*2.*kconv); // x,z,y full width in microns. - seg1->SetNPads(256,256);// Use AliITSgeomSDD for now - SetSegmentationModel(kSDD,seg1); - const char *kData1=(fDetTypeSim->GetCalibrationModel( - GetITSgeom()->GetStartSDD()))->DataType(); - AliITSCalibrationSDD* rsp = - (AliITSCalibrationSDD*)fDetTypeSim->GetCalibrationModel( - GetITSgeom()->GetStartSDD()); - const char *kopt=rsp->GetZeroSuppOption(); - if((!strstr(kopt,"ZS")) || strstr(kData1,"real") ){ - fDetTypeSim->SetDigitClassName(kSDD,"AliITSdigit"); - } else fDetTypeSim->SetDigitClassName(kSDD,"AliITSdigitSDD"); - // SSD Layer 5 - - s2 = (AliITSgeomSSD*) GetITSgeom()->GetShape(kSSD); - // Get shape info. Do it this way for now. - - - //SetCalibrationModel(GetITSgeom()->GetStartSSD(), - // new AliITSCalibrationSSD("simulated")); - AliITSsegmentationSSD* seg2 = - (AliITSsegmentationSSD*)fDetTypeSim->GetSegmentationModel(2); - seg2->SetDetSize(s2->GetDx()*2.*kconv, // base this on AliITSgeomSSD - s2->GetDz()*2.*kconv, // for now. - s2->GetDy()*2.*kconv); // x,z,y full width in microns. - seg2->SetPadSize(95.,0.); // strip x pitch in microns - seg2->SetNPads(768,0); // number of strips on each side. - seg2->SetAngles(0.0075,0.0275); // strip angels rad P and N side. - seg2->SetAnglesLay5(0.0075,0.0275); // strip angels rad P and N side. - seg2->SetAnglesLay6(0.0275,0.0075); // strip angels rad P and N side. - SetSegmentationModel(kSSD,seg2); - const char *kData2=(fDetTypeSim->GetCalibrationModel( - GetITSgeom()->GetStartSSD()))->DataType(); - if(strstr(kData2,"real") ) fDetTypeSim->SetDigitClassName(kSSD, - "AliITSdigit"); - else fDetTypeSim->SetDigitClassName(kSSD,"AliITSdigitSSD"); + if(fgkNTYPES>3){ Warning("SetDefaults", "Only the four basic detector types are initialised!"); @@ -5945,8 +5834,8 @@ void AliITSv11Hybrid::StepManager(){ Int_t copy, lay = 0; Int_t id = gMC->CurrentVolID(copy); - Bool_t notSens; - while ((notSens = id != fIdSens[lay]) && (layIsTrackExiting()) {