#include <TGeoTube.h>
#include <Riostream.h>
+using std::endl;
+using std::cout;
/// \cond CLASSIMP
ClassImp(AliMUONSlatGeometryBuilder)
/// \endcond
Int_t moduleId;
// the panel volume contains the nomex
- Float_t panelpar[3] = { kPanelLength/2., kPanelHeight/2., kPanelWidth/2. };
- Float_t nomexpar[3] = { kNomexLength/2., kNomexHeight/2., kNomexWidth/2. };
+ Float_t panelpar[3] = { static_cast<Float_t>(kPanelLength/2.), static_cast<Float_t>(kPanelHeight/2.), static_cast<Float_t>(kPanelWidth/2.) };
+ Float_t nomexpar[3] = { static_cast<Float_t>(kNomexLength/2.), static_cast<Float_t>(kNomexHeight/2.), static_cast<Float_t>(kNomexWidth/2.) };
Float_t twidth = kPanelWidth + kNomexBWidth;
- Float_t nomexbpar[3] = {kNomexLength/2., kNomexHeight/2.,twidth/2. };// bulk nomex
+ Float_t nomexbpar[3] = {static_cast<Float_t>(kNomexLength/2.), static_cast<Float_t>(kNomexHeight/2.),static_cast<Float_t>(twidth/2.) };// bulk nomex
// insulating material contains PCB-> gas
twidth = 2*(kInsuWidth + kPcbWidth) + kSensWidth ;
- Float_t insupar[3] = {kInsuLength/2., kInsuHeight/2., twidth/2. };
+ Float_t insupar[3] = {static_cast<Float_t>(kInsuLength/2.), static_cast<Float_t>(kInsuHeight/2.), static_cast<Float_t>(twidth/2.) };
twidth -= 2 * kInsuWidth;
- Float_t pcbpar[3] = {kPcbLength/2., kPcbHeight/2., twidth/2. };
- Float_t senspar[3] = {kSensLength/2., kSensHeight/2., kSensWidth/2. };
+ Float_t pcbpar[3] = {static_cast<Float_t>(kPcbLength/2.), static_cast<Float_t>(kPcbHeight/2.), static_cast<Float_t>(twidth/2.) };
+ Float_t senspar[3] = {static_cast<Float_t>(kSensLength/2.), static_cast<Float_t>(kSensHeight/2.), static_cast<Float_t>(kSensWidth/2.) };
Float_t theight = 2 * kHframeHeight + kSensHeight;
- Float_t hFramepar[3] = {kHframeLength/2., theight/2., kHframeWidth/2.};
- Float_t bFramepar[3] = {kBframeLength/2., kBframeHeight/2., kBframeWidth/2.};
- Float_t vFramepar[3] = {kVframeLength/2., kVframeHeight/2., kVframeWidth/2.};
- Float_t nulocpar[3] = {kNulocLength/2., kNulocHeight/2., kNulocWidth/2.};
+ Float_t hFramepar[3] = {static_cast<Float_t>(kHframeLength/2.), static_cast<Float_t>(theight/2.), static_cast<Float_t>(kHframeWidth/2.)};
+ Float_t bFramepar[3] = {static_cast<Float_t>(kBframeLength/2.), static_cast<Float_t>(kBframeHeight/2.), static_cast<Float_t>(kBframeWidth/2.)};
+ Float_t vFramepar[3] = {static_cast<Float_t>(kVframeLength/2.), static_cast<Float_t>(kVframeHeight/2.), static_cast<Float_t>(kVframeWidth/2.)};
+ Float_t nulocpar[3] = {static_cast<Float_t>(kNulocLength/2.), static_cast<Float_t>(kNulocHeight/2.), static_cast<Float_t>(kNulocWidth/2.)};
Float_t xx;
Float_t xxmax = (kBframeLength - kNulocLength)/2.;
// Only for chamber 5: slat 1 has a PCB shorter by 5cm!
Float_t tlength = 35.;
- Float_t panelpar2[3] = { tlength/2., panelpar[1], panelpar[2]};
- Float_t nomexpar2[3] = { tlength/2., nomexpar[1], nomexpar[2]};
- Float_t nomexbpar2[3] = { tlength/2., nomexbpar[1], nomexbpar[2]};
- Float_t insupar2[3] = { tlength/2., insupar[1], insupar[2]};
- Float_t pcbpar2[3] = { tlength/2., pcbpar[1], pcbpar[2]};
- Float_t senspar2[3] = { tlength/2., senspar[1], senspar[2]};
- Float_t hFramepar2[3] = { tlength/2., hFramepar[1], hFramepar[2]};
- Float_t bFramepar2[3] = { tlength/2., bFramepar[1], bFramepar[2]};
+ Float_t panelpar2[3] = { static_cast<Float_t>(tlength/2.), panelpar[1], panelpar[2]};
+ Float_t nomexpar2[3] = { static_cast<Float_t>(tlength/2.), nomexpar[1], nomexpar[2]};
+ Float_t nomexbpar2[3] = { static_cast<Float_t>(tlength/2.), nomexbpar[1], nomexbpar[2]};
+ Float_t insupar2[3] = { static_cast<Float_t>(tlength/2.), insupar[1], insupar[2]};
+ Float_t pcbpar2[3] = { static_cast<Float_t>(tlength/2.), pcbpar[1], pcbpar[2]};
+ Float_t senspar2[3] = { static_cast<Float_t>(tlength/2.), senspar[1], senspar[2]};
+ Float_t hFramepar2[3] = { static_cast<Float_t>(tlength/2.), hFramepar[1], hFramepar[2]};
+ Float_t bFramepar2[3] = { static_cast<Float_t>(tlength/2.), bFramepar[1], bFramepar[2]};
Float_t pcbDLength3 = (kPcbLength - tlength);
// For rounded pcb of central slat
Float_t csvPcbLength = 59.25-40.; // PQ-LAT-SR1
- Float_t panelpar3[3] = { csvPcbLength/2., panelpar[1], panelpar[2]};
- Float_t nomexpar3[3] = { csvPcbLength/2., nomexpar[1], nomexpar[2]};
- Float_t nomexbpar3[3] = { csvPcbLength/2., nomexbpar[1], nomexbpar[2]};
- Float_t insupar3[3] = { csvPcbLength/2., insupar[1], insupar[2]};
- Float_t pcbpar3[3] = { csvPcbLength/2., pcbpar[1], pcbpar[2]};
- Float_t senspar3[3] = { csvPcbLength/2., senspar[1], senspar[2]};
- Float_t hFramepar3[3] = { csvPcbLength/2., hFramepar[1], hFramepar[2]};
- Float_t bFramepar3[3] = { csvPcbLength/2., bFramepar[1], bFramepar[2]};
+ Float_t panelpar3[3] = { static_cast<Float_t>(csvPcbLength/2.), panelpar[1], panelpar[2]};
+ Float_t nomexpar3[3] = { static_cast<Float_t>(csvPcbLength/2.), nomexpar[1], nomexpar[2]};
+ Float_t nomexbpar3[3] = {static_cast<Float_t>( csvPcbLength/2.), nomexbpar[1], nomexbpar[2]};
+ Float_t insupar3[3] = { static_cast<Float_t>(csvPcbLength/2.), insupar[1], insupar[2]};
+ Float_t pcbpar3[3] = { static_cast<Float_t>(csvPcbLength/2.), pcbpar[1], pcbpar[2]};
+ Float_t senspar3[3] = { static_cast<Float_t>(csvPcbLength/2.), senspar[1], senspar[2]};
+ Float_t hFramepar3[3] = { static_cast<Float_t>(csvPcbLength/2.), hFramepar[1], hFramepar[2]};
+ Float_t bFramepar3[3] = { static_cast<Float_t>(csvPcbLength/2.), bFramepar[1], bFramepar[2]};
Float_t cPhi = TMath::RadToDeg()*(TMath::Pi()/2.-TMath::ACos(hFramepar3[1]/(AliMUONConstants::Rmin(2)-kRframeLength)));
Float_t cFramepar3[5] = { AliMUONConstants::Rmin(2)-kRframeLength, AliMUONConstants::Rmin(2), kRframeWidth, -cPhi, cPhi};
sprintf(idSlatCh5,"SLA%d",i+kNslats3-1);
detElemId = 509 - (i + kNslats3-1-4);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0)
+ if (detElemId == 508 || detElemId == 509) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(xSlat3, ySlat3, -zSlat3 + dzCh3),
+ TGeoRotation("rot1",90,180+angle,90,90+angle,180,0) );
+ else {
+ if (detElemId % 2 == 0)
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(xSlat3, ySlat3, -zSlat3 + dzCh3),
- TGeoRotation("rot1",90,angle,90,90+angle,0,0) );
- else
+ TGeoRotation("rot1",90,angle,90,90+angle,0,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(xSlat3, ySlat3, -zSlat3 + dzCh3),
TGeoRotation("rot1",90,angle,90,270+angle,180,0) );
-
+ }
+
sprintf(idSlatCh5,"SLA%d",3*kNslats3-2+i);
detElemId = 500 + (i + kNslats3-1-4);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0)
+ if (detElemId == 500 || detElemId == 501) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(-xSlat3, ySlat3, zSlat3 - dzCh3),
+ TGeoRotation("rot2",90,angle,90,90+angle,0,0) );
+ else {
+ if (detElemId % 2 == 1)
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(-xSlat3, ySlat3, zSlat3 - dzCh3),
- TGeoRotation("rot2",90,180+angle,90,270+angle,0,0) );
- else
+ TGeoRotation("rot2",90,180+angle,90,90+angle,180,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(-xSlat3, ySlat3, zSlat3 - dzCh3),
- TGeoRotation("rot2",90,180+angle,90,90+angle,180,0) );
+ TGeoRotation("rot2",90,180+angle,90,270+angle,0,0) );
+ }
if (i > 0) {
sprintf(idSlatCh5,"SLA%d",kNslats3-1-i);
detElemId = 509 + (i + kNslats3-1-4);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0 && detElemId != 510)
+ if (detElemId % 2 == 0 ) {
+ if (detElemId == 510) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(xSlat3, -ySlat3, -zSlat3 + dzCh3),
+ TGeoRotation("rot3",90,180+angle,90,270+angle,0,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(xSlat3, -ySlat3, -zSlat3 + dzCh3),
TGeoRotation("rot3",90,angle,90,90+angle,0,0) );
+ }
else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(xSlat3, -ySlat3, -zSlat3 + dzCh3),
TGeoRotation("rot3",90,angle,90,270+angle,180,0) );
sprintf(idSlatCh5,"SLA%d",3*kNslats3-2-i);
detElemId = 518 - (i + kNslats3-1-4);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 1 && detElemId != 517)
+ if (detElemId % 2 == 1) {
+ if (detElemId == 517) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(-xSlat3, -ySlat3, zSlat3 - dzCh3),
+ TGeoRotation("rot4",90,angle,90,270+angle,180,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(-xSlat3, -ySlat3, zSlat3 - dzCh3),
TGeoRotation("rot4",90,180+angle,90,90+angle,180,0) );
+ }
else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(-xSlat3, -ySlat3, zSlat3 - dzCh3),
TGeoRotation("rot4",90,180+angle,90,270+angle,0,0) );
sprintf(idSlatCh6,"SLB%d",kNslats3-1+i);
detElemId = 609 - (i + kNslats3-1-4);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0)
+ if (detElemId == 608 || detElemId == 609) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(xSlat3, ySlat3, -zSlat3 + dzCh3),
+ TGeoRotation("rot5",90,180+angle,90,90+angle,180,0));
+ else {
+ if (detElemId % 2 == 0)
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(xSlat3, ySlat3, -zSlat3 + dzCh3),
- TGeoRotation("rot5",90,angle,90,90+angle,0,0) );
- else
+ TGeoRotation("rot5",90,angle,90,90+angle,0,0));
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(xSlat3, ySlat3, -zSlat3 + dzCh3),
- TGeoRotation("rot5",90,angle,90,270+angle,180,0) );
+ TGeoRotation("rot5",90,angle,90,270+angle,180,0));
+ }
sprintf(idSlatCh6,"SLB%d",3*kNslats3-2+i);
detElemId = 600 + (i + kNslats3-1-4);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0)
- GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(-xSlat3, ySlat3, zSlat3 - dzCh3),
- TGeoRotation("rot6",90,180+angle,90,270+angle,0,0) );
- else
+ if (detElemId == 600 || detElemId == 601) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(-xSlat3, ySlat3, zSlat3 - dzCh3),
+ TGeoRotation("rot6",90,angle,90,90+angle,0,0) );
+ else {
+ if (detElemId % 2 == 1)
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(-xSlat3, ySlat3, zSlat3 - dzCh3),
TGeoRotation("rot6",90,180+angle,90,90+angle,180,0) );
+ else
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(-xSlat3, ySlat3, zSlat3 - dzCh3),
+ TGeoRotation("rot6",90,180+angle,90,270+angle,0,0) );
+ }
if (i > 0) {
sprintf(idSlatCh6,"SLB%d",kNslats3-1-i);
detElemId = 609 + (i + kNslats3-1-4);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0 && detElemId != 610)
+ if (detElemId % 2 == 0 ) {
+ if (detElemId == 610) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(xSlat3, -ySlat3, -zSlat3 + dzCh3),
+ TGeoRotation("rot7",90,180+angle,90,270+angle,0,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(xSlat3, -ySlat3, -zSlat3 + dzCh3),
TGeoRotation("rot7",90,angle,90,90+angle,0,0) );
+ }
else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(xSlat3, -ySlat3, -zSlat3 + dzCh3),
TGeoRotation("rot7",90,angle,90,270+angle,180,0) );
+
sprintf(idSlatCh6,"SLB%d",3*kNslats3-2-i);
detElemId = 618 - (i + kNslats3-1-4);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 1 && detElemId != 617)
+ if (detElemId % 2 == 1) {
+ if (detElemId == 617) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(-xSlat3, -ySlat3, zSlat3 - dzCh3),
+ TGeoRotation("rot8",90,angle,90,270+angle,180,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(-xSlat3, -ySlat3, zSlat3 - dzCh3),
TGeoRotation("rot8",90,180+angle,90,90+angle,180,0) );
+ }
else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(-xSlat3, -ySlat3, zSlat3 - dzCh3),
TGeoRotation("rot8",90,180+angle,90,270+angle,0,0) );
// create the panel volume
- gMC->Gsvolu("S05C","BOX",kCarbonMaterial,panelpar,3);
- gMC->Gsvolu("SB5C","BOX",kCarbonMaterial,panelpar2,3);
- gMC->Gsvolu("SC5C","BOX",kCarbonMaterial,panelpar3,3);
- gMC->Gsvolu("SD5C","BOX",kCarbonMaterial,panelpar,3);
- gMC->Gsvolu("S06C","BOX",kCarbonMaterial,panelpar,3);
- gMC->Gsvolu("SC6C","BOX",kCarbonMaterial,panelpar3,3);
- gMC->Gsvolu("SD6C","BOX",kCarbonMaterial,panelpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S05C","BOX",kCarbonMaterial,panelpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SB5C","BOX",kCarbonMaterial,panelpar2,3);
+ TVirtualMC::GetMC()->Gsvolu("SC5C","BOX",kCarbonMaterial,panelpar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD5C","BOX",kCarbonMaterial,panelpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S06C","BOX",kCarbonMaterial,panelpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SC6C","BOX",kCarbonMaterial,panelpar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD6C","BOX",kCarbonMaterial,panelpar,3);
// create the nomex volume (honey comb)
- gMC->Gsvolu("S05N","BOX",kNomexMaterial,nomexpar,3);
- gMC->Gsvolu("SB5N","BOX",kNomexMaterial,nomexpar2,3);
- gMC->Gsvolu("SC5N","BOX",kNomexMaterial,nomexpar3,3);
- gMC->Gsvolu("SD5N","BOX",kNomexMaterial,nomexpar,3);
- gMC->Gsvolu("S06N","BOX",kNomexMaterial,nomexpar,3);
- gMC->Gsvolu("SC6N","BOX",kNomexMaterial,nomexpar3,3);
- gMC->Gsvolu("SD6N","BOX",kNomexMaterial,nomexpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S05N","BOX",kNomexMaterial,nomexpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SB5N","BOX",kNomexMaterial,nomexpar2,3);
+ TVirtualMC::GetMC()->Gsvolu("SC5N","BOX",kNomexMaterial,nomexpar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD5N","BOX",kNomexMaterial,nomexpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S06N","BOX",kNomexMaterial,nomexpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SC6N","BOX",kNomexMaterial,nomexpar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD6N","BOX",kNomexMaterial,nomexpar,3);
// create the nomex volume (bulk)
- gMC->Gsvolu("S05X","BOX",kNomexBMaterial,nomexbpar,3);
- gMC->Gsvolu("SB5X","BOX",kNomexBMaterial,nomexbpar2,3);
- gMC->Gsvolu("SC5X","BOX",kNomexBMaterial,nomexbpar3,3);
- gMC->Gsvolu("SD5X","BOX",kNomexBMaterial,nomexbpar,3);
- gMC->Gsvolu("S06X","BOX",kNomexBMaterial,nomexbpar,3);
- gMC->Gsvolu("SC6X","BOX",kNomexBMaterial,nomexbpar3,3);
- gMC->Gsvolu("SD6X","BOX",kNomexBMaterial,nomexbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S05X","BOX",kNomexBMaterial,nomexbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SB5X","BOX",kNomexBMaterial,nomexbpar2,3);
+ TVirtualMC::GetMC()->Gsvolu("SC5X","BOX",kNomexBMaterial,nomexbpar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD5X","BOX",kNomexBMaterial,nomexbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S06X","BOX",kNomexBMaterial,nomexbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SC6X","BOX",kNomexBMaterial,nomexbpar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD6X","BOX",kNomexBMaterial,nomexbpar,3);
// create the insulating material volume
- gMC->Gsvolu("S05I","BOX",kInsuMaterial,insupar,3);
- gMC->Gsvolu("SB5I","BOX",kInsuMaterial,insupar2,3);
- gMC->Gsvolu("SC5I","BOX",kInsuMaterial,insupar3,3);
- gMC->Gsvolu("SD5I","BOX",kInsuMaterial,insupar,3);
- gMC->Gsvolu("S06I","BOX",kInsuMaterial,insupar,3);
- gMC->Gsvolu("SC6I","BOX",kInsuMaterial,insupar3,3);
- gMC->Gsvolu("SD6I","BOX",kInsuMaterial,insupar,3);
+ TVirtualMC::GetMC()->Gsvolu("S05I","BOX",kInsuMaterial,insupar,3);
+ TVirtualMC::GetMC()->Gsvolu("SB5I","BOX",kInsuMaterial,insupar2,3);
+ TVirtualMC::GetMC()->Gsvolu("SC5I","BOX",kInsuMaterial,insupar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD5I","BOX",kInsuMaterial,insupar,3);
+ TVirtualMC::GetMC()->Gsvolu("S06I","BOX",kInsuMaterial,insupar,3);
+ TVirtualMC::GetMC()->Gsvolu("SC6I","BOX",kInsuMaterial,insupar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD6I","BOX",kInsuMaterial,insupar,3);
// create the PCB volume
- gMC->Gsvolu("S05P","BOX",kPcbMaterial,pcbpar,3);
- gMC->Gsvolu("SB5P","BOX",kPcbMaterial,pcbpar2,3);
- gMC->Gsvolu("SC5P","BOX",kPcbMaterial,pcbpar3,3);
- gMC->Gsvolu("SD5P","BOX",kPcbMaterial,pcbpar,3);
- gMC->Gsvolu("S06P","BOX",kPcbMaterial,pcbpar,3);
- gMC->Gsvolu("SC6P","BOX",kPcbMaterial,pcbpar3,3);
- gMC->Gsvolu("SD6P","BOX",kPcbMaterial,pcbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S05P","BOX",kPcbMaterial,pcbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SB5P","BOX",kPcbMaterial,pcbpar2,3);
+ TVirtualMC::GetMC()->Gsvolu("SC5P","BOX",kPcbMaterial,pcbpar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD5P","BOX",kPcbMaterial,pcbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S06P","BOX",kPcbMaterial,pcbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SC6P","BOX",kPcbMaterial,pcbpar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD6P","BOX",kPcbMaterial,pcbpar,3);
// create the sensitive volumes,
- gMC->Gsvolu("S05G","BOX",kSensMaterial,dum,0);
- gMC->Gsvolu("SC5G","BOX",kSensMaterial,senspar3,3);
- gMC->Gsvolu("SD5G","BOX",kSensMaterial,senspar,3);
- gMC->Gsvolu("S06G","BOX",kSensMaterial,dum,0);
- gMC->Gsvolu("SC6G","BOX",kSensMaterial,senspar3,3);
- gMC->Gsvolu("SD6G","BOX",kSensMaterial,senspar,3);
+ TVirtualMC::GetMC()->Gsvolu("S05G","BOX",kSensMaterial,dum,0);
+ TVirtualMC::GetMC()->Gsvolu("SC5G","BOX",kSensMaterial,senspar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD5G","BOX",kSensMaterial,senspar,3);
+ TVirtualMC::GetMC()->Gsvolu("S06G","BOX",kSensMaterial,dum,0);
+ TVirtualMC::GetMC()->Gsvolu("SC6G","BOX",kSensMaterial,senspar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD6G","BOX",kSensMaterial,senspar,3);
// create the vertical frame volume
- gMC->Gsvolu("S05V","BOX",kVframeMaterial,vFramepar,3);
- gMC->Gsvolu("S06V","BOX",kVframeMaterial,vFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S05V","BOX",kVframeMaterial,vFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S06V","BOX",kVframeMaterial,vFramepar,3);
// create the rounded vertical frame volume
- gMC->Gsvolu("SC5D","TUBS",kRframeMaterial,cFramepar3,5);
- gMC->Gsvolu("SD5D","TUBS",kRframeMaterial,rFramepar3,5);
- gMC->Gsvolu("SC6D","TUBS",kRframeMaterial,cFramepar3,5);
- gMC->Gsvolu("SD6D","TUBS",kRframeMaterial,rFramepar3,5);
+ TVirtualMC::GetMC()->Gsvolu("SC5D","TUBS",kRframeMaterial,cFramepar3,5);
+ TVirtualMC::GetMC()->Gsvolu("SD5D","TUBS",kRframeMaterial,rFramepar3,5);
+ TVirtualMC::GetMC()->Gsvolu("SC6D","TUBS",kRframeMaterial,cFramepar3,5);
+ TVirtualMC::GetMC()->Gsvolu("SD6D","TUBS",kRframeMaterial,rFramepar3,5);
// create the horizontal frame volume
- gMC->Gsvolu("S05H","BOX",kHframeMaterial,hFramepar,3);
- gMC->Gsvolu("SB5H","BOX",kHframeMaterial,hFramepar2,3);
- gMC->Gsvolu("SC5H","BOX",kHframeMaterial,hFramepar3,3);
- gMC->Gsvolu("SD5H","BOX",kHframeMaterial,hFramepar,3);
- gMC->Gsvolu("S06H","BOX",kHframeMaterial,hFramepar,3);
- gMC->Gsvolu("SC6H","BOX",kHframeMaterial,hFramepar3,3);
- gMC->Gsvolu("SD6H","BOX",kHframeMaterial,hFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S05H","BOX",kHframeMaterial,hFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("SB5H","BOX",kHframeMaterial,hFramepar2,3);
+ TVirtualMC::GetMC()->Gsvolu("SC5H","BOX",kHframeMaterial,hFramepar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD5H","BOX",kHframeMaterial,hFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S06H","BOX",kHframeMaterial,hFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("SC6H","BOX",kHframeMaterial,hFramepar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD6H","BOX",kHframeMaterial,hFramepar,3);
// create the horizontal border volume
- gMC->Gsvolu("S05B","BOX",kBframeMaterial,bFramepar,3);
- gMC->Gsvolu("SB5B","BOX",kBframeMaterial,bFramepar2,3);
- gMC->Gsvolu("SC5B","BOX",kBframeMaterial,bFramepar3,3);
- gMC->Gsvolu("SD5B","BOX",kBframeMaterial,bFramepar,3);
- gMC->Gsvolu("S06B","BOX",kBframeMaterial,bFramepar,3);
- gMC->Gsvolu("SC6B","BOX",kBframeMaterial,bFramepar3,3);
- gMC->Gsvolu("SD6B","BOX",kBframeMaterial,bFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S05B","BOX",kBframeMaterial,bFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("SB5B","BOX",kBframeMaterial,bFramepar2,3);
+ TVirtualMC::GetMC()->Gsvolu("SC5B","BOX",kBframeMaterial,bFramepar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD5B","BOX",kBframeMaterial,bFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S06B","BOX",kBframeMaterial,bFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("SC6B","BOX",kBframeMaterial,bFramepar3,3);
+ TVirtualMC::GetMC()->Gsvolu("SD6B","BOX",kBframeMaterial,bFramepar,3);
// Replace the volume shape with a composite shape
// with substracted overlap with beam shield
- if ( gMC->IsRootGeometrySupported() ) {
+ if ( TVirtualMC::GetMC()->IsRootGeometrySupported() ) {
// Get shape
Int_t nSlatType = 2;
compOperation+="B";
}
compOperation+="Tube";
- compName=Form("composite%d%c",iCh,volLetter[iVol]);
+ compName=Form("composite%c%d%c",slatType[iSlatType],iCh,volLetter[iVol]);
composite[lIndex] = new TGeoCompositeShape(compName, compOperation.Data());
-
// Reset shape to volume
mVol->SetShape((TGeoShape*)composite[lIndex]);
}
// position the vertical frames
if ( i > 2) {
GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05V", idSlatCh5,
- (2*i-1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
+ (2*i+1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05V", idSlatCh5,
(2*i)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.));
GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06V", idSlatCh6,
- (2*i-1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
+ (2*i+1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06V", idSlatCh6,
(2*i)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.));
}
if (i == 2) {
GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05V", idSlatCh5,
- (2*i-1)*10+quadrant,TGeoTranslation(xvFrame2,0.,0.));
+ (2*i+1)*10+quadrant,TGeoTranslation(xvFrame2,0.,0.));
GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05V", idSlatCh5,
(2*i)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.));
GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06V", idSlatCh6,
- (2*i-1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
+ (2*i+1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06V", idSlatCh6,
(2*i)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.));
}
+ // Different rotation due to new mapping convention
if (i == 0 || i == 1) { // first vertical spacers
GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05V", idSlatCh5,
- (2*i-1)*10+quadrant,TGeoTranslation(xvFrame2,0.,0.));
+ (2*i+1)*10+quadrant,TGeoTranslation(-xvFrame2,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06V", idSlatCh6,
- (2*i-1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
+ (2*i+1)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
if (i == 0) { // rounded spacer for central slat (J.C.)
GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SC5D", idSlatCh5,
- (2*i)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.));
+ (2*i)*10+quadrant,TGeoTranslation(xvFrame,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SC6D", idSlatCh6,
- (2*i)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.));
+ (2*i)*10+quadrant,TGeoTranslation(xvFrame,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
}
if (i == 1) { // rounded + vertical spacer for rounded slat (J.C.)
GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SD5D", idSlatCh5,
- (2*i)*10+quadrant,TGeoTranslation(-xvFrame,-kYpos3[1],0.));
+ (2*i)*10+quadrant,TGeoTranslation(xvFrame,-kYpos3[1],0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SD6D", idSlatCh6,
- (2*i)*10+quadrant,TGeoTranslation(-xvFrame,-kYpos3[1],0.));
+ (2*i)*10+quadrant,TGeoTranslation(xvFrame,-kYpos3[1],0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
}
}
// position the panels and the insulating material
for (j = 0; j < kNPCB3[i]; j++){
- index++;
+ index++;
xx = kSensLength * (-kNPCB3[i]/2. + j + 0.5);
Float_t xx2 = xx - pcbDLength3/2.;
Float_t xx3 = xx + (kSensLength-csvPcbLength)/2.;
Float_t zPanel = spar[2] - nomexbpar[2];
- if (i==0 && j==0){ // Rounded pcb of central slat (SR1, NR1)
- GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SC5X", idSlatCh5, 2*index-1,TGeoTranslation(xx3,0.,zPanel));
- GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SC5X", idSlatCh5, 2*index,TGeoTranslation(xx3,0.,-zPanel));
- GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SC5I", idSlatCh5, index,TGeoTranslation(xx3,0.,0.));
- GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SC6X", idSlatCh6, 2*index-1,TGeoTranslation(xx3,0.,zPanel));
- GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SC6X", idSlatCh6, 2*index,TGeoTranslation(xx3,0.,-zPanel));
- GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SC6I", idSlatCh6, index,TGeoTranslation(xx3,0.,0.));
- } else {
- if (i==1 && j==0){ // Rounded pcb of rounded slats (SR2. NR2)
- GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SD5X", idSlatCh5, 2*index-1,TGeoTranslation(xx,0.,zPanel));
- GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SD5X", idSlatCh5, 2*index,TGeoTranslation(xx,0.,-zPanel));
- GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SD5I", idSlatCh5, index,TGeoTranslation(xx,0.,0.));
- GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SD6X", idSlatCh6, 2*index-1,TGeoTranslation(xx,0.,zPanel));
- GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SD6X", idSlatCh6, 2*index,TGeoTranslation(xx,0.,-zPanel));
- GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SD6I", idSlatCh6, index,TGeoTranslation(xx,0.,0.));
- } else {
- if ( (i == 0 || i == 1 || i == 2) && j == kNPCB3[i]-1) { // 1 pcb is shortened by 5cm
- GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SB5X", idSlatCh5, 2*index-1,TGeoTranslation(xx2,0.,zPanel));
- GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SB5X", idSlatCh5, 2*index,TGeoTranslation(xx2,0.,-zPanel));
- GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SB5I", idSlatCh5, index,TGeoTranslation(xx2,0.,0.));
- } else {
- GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05X", idSlatCh5, 2*index-1,TGeoTranslation(xx,0.,zPanel));
- GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05X", idSlatCh5, 2*index,TGeoTranslation(xx,0.,-zPanel));
- GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05I", idSlatCh5, index,TGeoTranslation(xx,0.,0.));
- }
- GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06X", idSlatCh6, 2*index-1,TGeoTranslation(xx,0.,zPanel));
- GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06X", idSlatCh6, 2*index,TGeoTranslation(xx,0.,-zPanel));
- GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06I", idSlatCh6, index,TGeoTranslation(xx,0.,0.));
+ if (i==0 || i==1) { // Different rotation due to new mapping convention
+ if (i==0 && j==0) { // Rounded pcb of central slat (SR1, NR1)
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SC5X", idSlatCh5, 2*index-1,TGeoTranslation(-xx3,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SC5X", idSlatCh5, 2*index,TGeoTranslation(-xx3,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SC5I", idSlatCh5, index,TGeoTranslation(-xx3,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SC6X", idSlatCh6, 2*index-1,TGeoTranslation(-xx3,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SC6X", idSlatCh6, 2*index,TGeoTranslation(-xx3,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SC6I", idSlatCh6, index,TGeoTranslation(-xx3,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ }
+ else {
+ if (i==1 && j==0){ // Rounded pcb of rounded slats (SR2. NR2)
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SD5X", idSlatCh5, 2*index-1,TGeoTranslation(-xx,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SD5X", idSlatCh5, 2*index,TGeoTranslation(-xx,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SD5I", idSlatCh5, index,TGeoTranslation(-xx,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SD6X", idSlatCh6, 2*index-1,TGeoTranslation(-xx,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SD6X", idSlatCh6, 2*index,TGeoTranslation(-xx,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SD6I", idSlatCh6, index,TGeoTranslation(-xx,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ }
+ else {
+ if (j == kNPCB3[i]-1) { // 1 pcb is shortened by 5cm
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SB5X", idSlatCh5, 2*index-1,TGeoTranslation(-xx2,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SB5X", idSlatCh5, 2*index,TGeoTranslation(-xx2,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SB5I", idSlatCh5, index,TGeoTranslation(-xx2,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ }
+ else {
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05X", idSlatCh5, 2*index-1,TGeoTranslation(-xx,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05X", idSlatCh5, 2*index,TGeoTranslation(-xx,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05I", idSlatCh5, index,TGeoTranslation(-xx,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ }
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06X", idSlatCh6, 2*index-1,TGeoTranslation(-xx,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06X", idSlatCh6, 2*index,TGeoTranslation(-xx,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06I", idSlatCh6, index,TGeoTranslation(-xx,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ }
+ }
+ }
+ else {
+ if (i==2 && j == kNPCB3[i]-1) { // 1 pcb is shortened by 5cm
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SB5X", idSlatCh5, 2*index-1,TGeoTranslation(xx2,0.,zPanel));
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SB5X", idSlatCh5, 2*index,TGeoTranslation(xx2,0.,-zPanel));
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("SB5I", idSlatCh5, index,TGeoTranslation(xx2,0.,0.));
+ } else {
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05X", idSlatCh5, 2*index-1,TGeoTranslation(xx,0.,zPanel));
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05X", idSlatCh5, 2*index,TGeoTranslation(xx,0.,-zPanel));
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05I", idSlatCh5, index,TGeoTranslation(xx,0.,0.));
}
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06X", idSlatCh6, 2*index-1,TGeoTranslation(xx,0.,zPanel));
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06X", idSlatCh6, 2*index,TGeoTranslation(xx,0.,-zPanel));
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06I", idSlatCh6, index,TGeoTranslation(xx,0.,0.));
}
}
}
}
+
// position the nomex volume inside the panel volume
- gMC->Gspos("S05N",1,"S05C",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SB5N",1,"SB5C",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SC5N",1,"SC5C",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD5N",1,"SD5C",0.,0.,0.,0,"ONLY");
- gMC->Gspos("S06N",1,"S06C",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SC6N",1,"SC6C",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD6N",1,"SD6C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S05N",1,"S05C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SB5N",1,"SB5C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SC5N",1,"SC5C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD5N",1,"SD5C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S06N",1,"S06C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SC6N",1,"SC6C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD6N",1,"SD6C",0.,0.,0.,0,"ONLY");
// position panel volume inside the bulk nomex material volume
- gMC->Gspos("S05C",1,"S05X",0.,0.,kNomexBWidth/2.,0,"ONLY");
- gMC->Gspos("SB5C",1,"SB5X",0.,0.,kNomexBWidth/2.,0,"ONLY");
- gMC->Gspos("SC5C",1,"SC5X",0.,0.,kNomexBWidth/2.,0,"ONLY");
- gMC->Gspos("SD5C",1,"SD5X",0.,0.,kNomexBWidth/2.,0,"ONLY");
- gMC->Gspos("S06C",1,"S06X",0.,0.,kNomexBWidth/2.,0,"ONLY");
- gMC->Gspos("SC6C",1,"SC6X",0.,0.,kNomexBWidth/2.,0,"ONLY");
- gMC->Gspos("SD6C",1,"SD6X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S05C",1,"S05X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SB5C",1,"SB5X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SC5C",1,"SC5X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD5C",1,"SD5X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S06C",1,"S06X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SC6C",1,"SC6X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD6C",1,"SD6X",0.,0.,kNomexBWidth/2.,0,"ONLY");
// position the PCB volume inside the insulating material volume
- gMC->Gspos("S05P",1,"S05I",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SB5P",1,"SB5I",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SC5P",1,"SC5I",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD5P",1,"SD5I",0.,0.,0.,0,"ONLY");
- gMC->Gspos("S06P",1,"S06I",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SC6P",1,"SC6I",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD6P",1,"SD6I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S05P",1,"S05I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SB5P",1,"SB5I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SC5P",1,"SC5I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD5P",1,"SD5I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S06P",1,"S06I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SC6P",1,"SC6I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD6P",1,"SD6I",0.,0.,0.,0,"ONLY");
// position the horizontal frame volume inside the PCB volume
- gMC->Gspos("S05H",1,"S05P",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SB5H",1,"SB5P",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SC5H",1,"SC5P",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD5H",1,"SD5P",0.,0.,0.,0,"ONLY");
- gMC->Gspos("S06H",1,"S06P",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SC6H",1,"SC6P",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD6H",1,"SD6P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S05H",1,"S05P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SB5H",1,"SB5P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SC5H",1,"SC5P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD5H",1,"SD5P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S06H",1,"S06P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SC6H",1,"SC6P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD6H",1,"SD6P",0.,0.,0.,0,"ONLY");
// position the sensitive volume inside the horizontal frame volume
- gMC->Gsposp("S05G",1,"S05H",0.,0.,0.,0,"ONLY",senspar,3);
- gMC->Gsposp("S05G",1,"SB5H",0.,0.,0.,0,"ONLY",senspar2,3);
- gMC->Gspos("SC5G",1,"SC5H",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD5G",1,"SD5H",0.,0.,0.,0,"ONLY");
- gMC->Gsposp("S06G",1,"S06H",0.,0.,0.,0,"ONLY",senspar,3);
- gMC->Gspos("SC6G",1,"SC6H",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD6G",1,"SD6H",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gsposp("S05G",1,"S05H",0.,0.,0.,0,"ONLY",senspar,3);
+ TVirtualMC::GetMC()->Gsposp("S05G",1,"SB5H",0.,0.,0.,0,"ONLY",senspar2,3);
+ TVirtualMC::GetMC()->Gspos("SC5G",1,"SC5H",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD5G",1,"SD5H",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gsposp("S06G",1,"S06H",0.,0.,0.,0,"ONLY",senspar,3);
+ TVirtualMC::GetMC()->Gspos("SC6G",1,"SC6H",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD6G",1,"SD6H",0.,0.,0.,0,"ONLY");
// position the border volumes inside the PCB volume
Float_t yborder = ( kPcbHeight - kBframeHeight ) / 2.;
Int_t rotB = 0;
- gMC->Matrix(rotB,90,0,90,270,180,0); // rotation around x for second border
-
- gMC->Gspos("S05B",1,"S05P",0., yborder,0.,0,"ONLY");
- gMC->Gspos("S05B",2,"S05P",0.,-yborder,0.,0,"ONLY");
- gMC->Gspos("SB5B",1,"SB5P",0., yborder,0.,0,"ONLY");
- gMC->Gspos("SB5B",2,"SB5P",0.,-yborder,0.,0,"ONLY");
- gMC->Gspos("SC5B",1,"SC5P",0., yborder,0.,rotB,"ONLY");
- gMC->Gspos("SC5B",2,"SC5P",0.,-yborder,0.,0,"ONLY");
- gMC->Gspos("S05B",1,"SD5P",0., yborder,0.,0,"ONLY");
- gMC->Gspos("SD5B",1,"SD5P",0.,-yborder,0.,0,"ONLY");
-
- gMC->Gspos("S06B",1,"S06P",0., yborder,0.,0,"ONLY");
- gMC->Gspos("S06B",2,"S06P",0.,-yborder,0.,0,"ONLY");
- gMC->Gspos("SC6B",1,"SC6P",0., yborder,0.,rotB,"ONLY");
- gMC->Gspos("SC6B",2,"SC6P",0.,-yborder,0.,0,"ONLY");
- gMC->Gspos("S06B",1,"SD6P",0., yborder,0.,0,"ONLY");
- gMC->Gspos("SD6B",1,"SD6P",0.,-yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Matrix(rotB,90,0,90,270,180,0); // rotation around x for second border
+
+ TVirtualMC::GetMC()->Gspos("S05B",1,"S05P",0., yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S05B",2,"S05P",0.,-yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SB5B",1,"SB5P",0., yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SB5B",2,"SB5P",0.,-yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SC5B",1,"SC5P",0., yborder,0.,rotB,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SC5B",2,"SC5P",0.,-yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S05B",1,"SD5P",0., yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD5B",1,"SD5P",0.,-yborder,0.,0,"ONLY");
+
+ TVirtualMC::GetMC()->Gspos("S06B",1,"S06P",0., yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S06B",2,"S06P",0.,-yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SC6B",1,"SC6P",0., yborder,0.,rotB,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SC6B",2,"SC6P",0.,-yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S06B",1,"SD6P",0., yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD6B",1,"SD6P",0.,-yborder,0.,0,"ONLY");
// create the NULOC volume and position it in the horizontal frame
- gMC->Gsvolu("S05E","BOX",kNulocMaterial,nulocpar,3);
- gMC->Gsvolu("S06E","BOX",kNulocMaterial,nulocpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S05E","BOX",kNulocMaterial,nulocpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S06E","BOX",kNulocMaterial,nulocpar,3);
index = 0;
Float_t xxmax2 = xxmax - pcbDLength3/2.;
Float_t xxmax3 = xxmax - (kPcbLength-csvPcbLength)/2.;
Float_t xxmax4 = (AliMUONConstants::Rmin(2)*TMath::Cos(rPhi3)-kVframeLength/2.) - (kBframeLength - kNulocLength)/2.;
for (xx = -xxmax; xx <= xxmax; xx += 2*kNulocLength) {
index++;
- gMC->Gspos("S05E",2*index-1,"S05B", xx, 0.,-kBframeWidth/2. + kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S05E",2*index ,"S05B", xx, 0., kBframeWidth/2. - kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S06E",2*index-1,"S06B", xx, 0.,-kBframeWidth/2. + kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S06E",2*index ,"S06B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S05E",2*index-1,"S05B", xx, 0.,-kBframeWidth/2. + kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S05E",2*index ,"S05B", xx, 0., kBframeWidth/2. - kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S06E",2*index-1,"S06B", xx, 0.,-kBframeWidth/2. + kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S06E",2*index ,"S06B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
if (xx > -xxmax2 && xx< xxmax2) {
- gMC->Gspos("S05E",2*index-1,"SB5B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S05E",2*index ,"SB5B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S05E",2*index-1,"SB5B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S05E",2*index ,"SB5B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
}
if (xx > -xxmax3 && xx< xxmax3) {
- gMC->Gspos("S05E",2*index-1,"SC5B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2., 0, "ONLY");
- gMC->Gspos("S05E",2*index ,"SC5B", xx, 0., kBframeWidth/2.- kNulocWidth/2., 0, "ONLY");
- gMC->Gspos("S06E",2*index-1,"SC6B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S06E",2*index ,"SC6B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S05E",2*index-1,"SC5B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2., 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S05E",2*index ,"SC5B", xx, 0., kBframeWidth/2.- kNulocWidth/2., 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S06E",2*index-1,"SC6B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S06E",2*index ,"SC6B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
}
if (xx > xxmax4 && xx< xxmax) {
- gMC->Gspos("S05E",2*index-1,"SD5B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S05E",2*index ,"SD5B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S06E",2*index-1,"SD6B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S06E",2*index ,"SD6B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S05E",2*index-1,"SD5B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S05E",2*index ,"SD5B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S06E",2*index-1,"SD6B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S06E",2*index ,"SD6B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
}
- }
+ }
//
//Geometry of the support pannel Verticla length 3.62m, horizontal length 1.62m, internal radius dMotherInner of SC05 and SC06 (F. Orsini, Saclay)
// Add readout cables
- gMC->Gsvolu("S05L","BOX",kCableMaterial,dum,0);
- gMC->Gsvolu("S06L","BOX",kCableMaterial,dum,0);
+ TVirtualMC::GetMC()->Gsvolu("S05L","BOX",kCableMaterial,dum,0);
+ TVirtualMC::GetMC()->Gsvolu("S06L","BOX",kCableMaterial,dum,0);
ySlat3 = 0.;
Float_t lCableX = 0.;
Float_t lCableX6 = 0.;
Float_t lCableY = 0.;
Float_t lCableZ = 0.;
- Float_t cablepar[3] = {supporthlength/2., kCableHeight/2., kCableWidth/2.};
- Float_t cablepar6[3] = {supporthlengthCh6/2., kCableHeight/2., kCableWidth/2.};
+ Float_t cablepar[3] = {static_cast<Float_t>(supporthlength/2.), static_cast<Float_t>(kCableHeight/2.), static_cast<Float_t>(kCableWidth/2.)};
+ Float_t cablepar6[3] = {static_cast<Float_t>(supporthlengthCh6/2.), static_cast<Float_t>(kCableHeight/2.), static_cast<Float_t>(kCableWidth/2.)};
Float_t lCableDY = 0.;
Int_t cIndex = 0;
Int_t cIndex6 = 0;
lCableY = ySlat3;
// Cables going out from the start of slat
- if(kNPCB3[i]>=4){ // Only if 4 or more pcb
+ if(kNPCB3[i]>=4 && i<kNslats3-2){ // Only if 4 or more pcb
// First top cables
cablepar[0] = supporthlength/2.;
lCableX = 0.;
cablepar6[0] -= (kPcbLength-csvPcbLength)/2.;
lCableX6 = (kPcbLength-csvPcbLength)/2.;
}
- gMC->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar6,3);
- gMC->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar6,3);
+ TVirtualMC::GetMC()->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar6,3);
+ TVirtualMC::GetMC()->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar6,3);
// Then bottom cables
if(i>0){
lCableDY = lCableY - dMotherInner - cablepar[1];
}
}
- gMC->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar6,3);
- gMC->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar6,3);
+ TVirtualMC::GetMC()->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar6,3);
+ TVirtualMC::GetMC()->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar6,3);
}
}
lCableX6 = (kPcbLength+kVframeLength)/2.;
lCableDY = (kYpos3[i+1]+kYpos3[i+2])/2.-cablepar[1]; // half way between 2 slats on same side
lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
- gMC->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar6,3);
- gMC->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar6,3);
+ TVirtualMC::GetMC()->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar6,3);
+ TVirtualMC::GetMC()->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar6,3);
// Then bottom cables
lCableDY = (kYpos3[i]+kYpos3[i])/2.-cablepar[1];
- gMC->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar6,3);
- gMC->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar6,3);
+ TVirtualMC::GetMC()->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar6,3);
+ TVirtualMC::GetMC()->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar6,3);
}
// Cables going out from the end of the slats
cablepar[0] += pcbDLength3/2.;
lCableX -= pcbDLength3/2.;
}
- gMC->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar6,3);
- gMC->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar6,3);
+ TVirtualMC::GetMC()->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar6,3);
+ TVirtualMC::GetMC()->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar6,3);
// Then bottom cables
if(i>0){ // Loop is over top half of slats, lower half are symmetric
if (i==1) {
else{
lCableDY = (kYpos3[i]+kYpos3[i-1])/2.-cablepar[1]; // half way between 2 slats on same side
}
- gMC->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar6,3);
- gMC->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar6,3);
+ TVirtualMC::GetMC()->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar6,3);
+ TVirtualMC::GetMC()->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar6,3);
}
}
sprintf(idSlatCh7,"SLC%d",kNslats4-1+i);
detElemId = 713 - (i + kNslats4-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0)
+ if (detElemId % 2 == 0) {
+ if (detElemId == 712) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(xSlat4, ySlat41, -zSlat4 + dzCh4),
+ TGeoRotation("rot1",90,180+angle,90,90+angle,180,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(xSlat4, ySlat41, -zSlat4 + dzCh4),
- TGeoRotation("rot1",90,angle,90,90+angle,0,0) );
+ TGeoRotation("rot1",90,angle,90,90+angle,0,0) );
+ }
else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(xSlat4, ySlat41, -zSlat4 + dzCh4),
TGeoRotation("rot1",90,angle,90,270+angle,180,0) );
sprintf(idSlatCh7,"SLC%d",3*kNslats4-2+i);
detElemId = 700 + (i + kNslats4-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0)
+ if (detElemId % 2 == 1) {
+ if (detElemId == 701) // Round slat, new rotation due to mapping convention
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(-xSlat4, ySlat41, zSlat4 - dzCh4),
- TGeoRotation("rot2",90,180+angle,90,270+angle,0,0) );
- else
+ TGeoRotation("rot2",90,angle,90,90+angle,0,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(-xSlat4, ySlat41, zSlat4 - dzCh4),
- TGeoRotation("rot2",90,180+angle,90,90+angle,180,0) );
+ TGeoRotation("rot2",90,180+angle,90,90+angle,180,0) );
+ }
+ else
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(-xSlat4, ySlat41, zSlat4 - dzCh4),
+ TGeoRotation("rot2",90,180+angle,90,270+angle,0,0) );
+
if (i > 0) {
sprintf(idSlatCh7,"SLC%d",kNslats4-1-i);
detElemId = 713 + (i + kNslats4-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0 && detElemId != 714)
+ if (detElemId % 2 == 0) {
+ if (detElemId == 714) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(xSlat4, -ySlat41, -zSlat4 + dzCh4),
+ TGeoRotation("rot3",90,180+angle,90,270+angle,0,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(xSlat4, -ySlat41, -zSlat4 + dzCh4),
TGeoRotation("rot3",90,angle,90,90+angle,0,0) );
+ }
else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(xSlat4, -ySlat41, -zSlat4 + dzCh4),
TGeoRotation("rot3",90,angle,90,270+angle,180,0) );
+
sprintf(idSlatCh7,"SLC%d",3*kNslats4-2-i);
detElemId = 726 - (i + kNslats4-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 1 && detElemId != 725 )
+ if (detElemId % 2 == 1) {
+ if (detElemId == 725) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(-xSlat4, -ySlat41, zSlat4 - dzCh4),
+ TGeoRotation("rot4",90,angle,90,270+angle,180,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(-xSlat4, -ySlat41, zSlat4 - dzCh4),
- TGeoRotation("rot4",90,180+angle,90,90+angle,180,0) );
+ TGeoRotation("rot4",90,180+angle,90,90+angle,180,0) );
+ }
else
- GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(-xSlat4, -ySlat41, zSlat4 - dzCh4),
- TGeoRotation("rot4",90,180+angle,90,270+angle,0,0) );
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(-xSlat4, -ySlat41, zSlat4 - dzCh4),
+ TGeoRotation("rot4",90,180+angle,90,270+angle,0,0) );
}
sprintf(idSlatCh8,"SLD%d",kNslats4-1+i);
detElemId = 813 - (i + kNslats4-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0)
+ if (detElemId % 2 == 0) {
+ if (detElemId == 812) // Round slat, new rotation due to mapping convention
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(xSlat4, ySlat42, -zSlat4 + dzCh4),
- TGeoRotation("rot5",90,angle,90,90+angle,0,0) );
- else
+ TGeoRotation("rot5",90,180+angle,90,90+angle,180,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(xSlat4, ySlat42, -zSlat4 + dzCh4),
- TGeoRotation("rot5",90,angle,90,270+angle,180,0) );
+ TGeoRotation("rot5",90,angle,90,90+angle,0,0) );
+ }
+ else
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(xSlat4, ySlat42, -zSlat4 + dzCh4),
+ TGeoRotation("rot5",90,angle,90,270+angle,180,0) );
sprintf(idSlatCh8,"SLD%d",3*kNslats4-2+i);
detElemId = 800 + (i + kNslats4-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0)
+ if (detElemId % 2 == 1) {
+ if (detElemId == 801) // Round slat, new rotation due to mapping convention
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(-xSlat4, ySlat42, zSlat4 - dzCh4),
- TGeoRotation("rot6",90,180+angle,90,270+angle,0,0) );
- else
+ TGeoRotation("rot6",90,angle,90,90+angle,0,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(-xSlat4, ySlat42, zSlat4 - dzCh4),
- TGeoRotation("rot6",90,180+angle,90,90+angle,180,0) );
+ TGeoRotation("rot6",90,180+angle,90,90+angle,180,0) );
+ }
+ else
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(-xSlat4, ySlat42, zSlat4 - dzCh4),
+ TGeoRotation("rot6",90,180+angle,90,270+angle,0,0) );
if (i > 0) {
sprintf(idSlatCh8,"SLD%d",kNslats4-1-i);
detElemId = 813 + (i + kNslats4-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0 && detElemId != 814)
+ if (detElemId % 2 == 0) {
+ if (detElemId == 814) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(xSlat4, -ySlat42, -zSlat4 + dzCh4),
+ TGeoRotation("rot7",90,180+angle,90,270+angle,0,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(xSlat4, -ySlat42, -zSlat4 + dzCh4),
TGeoRotation("rot7",90,angle,90,90+angle,0,0) );
+ }
else
- GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(xSlat4, -ySlat42, -zSlat4 + dzCh4),
- TGeoRotation("rot7",90,angle,90,270+angle,180,0) );
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(xSlat4, -ySlat42, -zSlat4 + dzCh4),
+ TGeoRotation("rot7",90,angle,90,270+angle,180,0) );
+
sprintf(idSlatCh8,"SLD%d",3*kNslats4-2-i);
detElemId = 826 - (i + kNslats4-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 1 && detElemId != 825 )
+ if (detElemId % 2 == 1) {
+ if (detElemId == 825 ) // Round slat, new rotation due to mapping convention
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(-xSlat4, -ySlat42, zSlat4 - dzCh4),
- TGeoRotation("rot8",90,180+angle,90,90+angle,180,0) );
- else
+ TGeoRotation("rot8",90,angle,90,270+angle,180,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(-xSlat4, -ySlat42, zSlat4 - dzCh4),
- TGeoRotation("rot8",90,180+angle,90,270+angle,0,0) );
-
+ TGeoRotation("rot8",90,180+angle,90,90+angle,180,0) );
+ }
+ else
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(-xSlat4, -ySlat42, zSlat4 - dzCh4),
+ TGeoRotation("rot8",90,180+angle,90,270+angle,0,0) );
+
}
}
// create the panel volume
- gMC->Gsvolu("S07C","BOX",kCarbonMaterial,panelpar,3);
- gMC->Gsvolu("SD7C","BOX",kCarbonMaterial,panelpar,3);
- gMC->Gsvolu("S08C","BOX",kCarbonMaterial,panelpar,3);
- gMC->Gsvolu("SD8C","BOX",kCarbonMaterial,panelpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S07C","BOX",kCarbonMaterial,panelpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD7C","BOX",kCarbonMaterial,panelpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S08C","BOX",kCarbonMaterial,panelpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD8C","BOX",kCarbonMaterial,panelpar,3);
// create the nomex volume
- gMC->Gsvolu("S07N","BOX",kNomexMaterial,nomexpar,3);
- gMC->Gsvolu("SD7N","BOX",kNomexMaterial,nomexpar,3);
- gMC->Gsvolu("S08N","BOX",kNomexMaterial,nomexpar,3);
- gMC->Gsvolu("SD8N","BOX",kNomexMaterial,nomexpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S07N","BOX",kNomexMaterial,nomexpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD7N","BOX",kNomexMaterial,nomexpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S08N","BOX",kNomexMaterial,nomexpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD8N","BOX",kNomexMaterial,nomexpar,3);
// create the nomex volume (bulk)
- gMC->Gsvolu("S07X","BOX",kNomexBMaterial,nomexbpar,3);
- gMC->Gsvolu("SD7X","BOX",kNomexBMaterial,nomexbpar,3);
- gMC->Gsvolu("S08X","BOX",kNomexBMaterial,nomexbpar,3);
- gMC->Gsvolu("SD8X","BOX",kNomexBMaterial,nomexbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S07X","BOX",kNomexBMaterial,nomexbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD7X","BOX",kNomexBMaterial,nomexbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S08X","BOX",kNomexBMaterial,nomexbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD8X","BOX",kNomexBMaterial,nomexbpar,3);
// create the insulating material volume
- gMC->Gsvolu("S07I","BOX",kInsuMaterial,insupar,3);
- gMC->Gsvolu("SD7I","BOX",kInsuMaterial,insupar,3);
- gMC->Gsvolu("S08I","BOX",kInsuMaterial,insupar,3);
- gMC->Gsvolu("SD8I","BOX",kInsuMaterial,insupar,3);
+ TVirtualMC::GetMC()->Gsvolu("S07I","BOX",kInsuMaterial,insupar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD7I","BOX",kInsuMaterial,insupar,3);
+ TVirtualMC::GetMC()->Gsvolu("S08I","BOX",kInsuMaterial,insupar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD8I","BOX",kInsuMaterial,insupar,3);
// create the PCB volume
- gMC->Gsvolu("S07P","BOX",kPcbMaterial,pcbpar,3);
- gMC->Gsvolu("SD7P","BOX",kPcbMaterial,pcbpar,3);
- gMC->Gsvolu("S08P","BOX",kPcbMaterial,pcbpar,3);
- gMC->Gsvolu("SD8P","BOX",kPcbMaterial,pcbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S07P","BOX",kPcbMaterial,pcbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD7P","BOX",kPcbMaterial,pcbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S08P","BOX",kPcbMaterial,pcbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD8P","BOX",kPcbMaterial,pcbpar,3);
// create the sensitive volumes,
- gMC->Gsvolu("S07G","BOX",kSensMaterial,dum,0);
- gMC->Gsvolu("SD7G","BOX",kSensMaterial,senspar,3);
- gMC->Gsvolu("S08G","BOX",kSensMaterial,dum,0);
- gMC->Gsvolu("SD8G","BOX",kSensMaterial,senspar,3);
+ TVirtualMC::GetMC()->Gsvolu("S07G","BOX",kSensMaterial,dum,0);
+ TVirtualMC::GetMC()->Gsvolu("SD7G","BOX",kSensMaterial,senspar,3);
+ TVirtualMC::GetMC()->Gsvolu("S08G","BOX",kSensMaterial,dum,0);
+ TVirtualMC::GetMC()->Gsvolu("SD8G","BOX",kSensMaterial,senspar,3);
// create the vertical frame volume
- gMC->Gsvolu("S07V","BOX",kVframeMaterial,vFramepar,3);
- gMC->Gsvolu("S08V","BOX",kVframeMaterial,vFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S07V","BOX",kVframeMaterial,vFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S08V","BOX",kVframeMaterial,vFramepar,3);
// create the rounded vertical frame volume
- gMC->Gsvolu("SD7D","TUBS",kRframeMaterial,rFramepar4,5);
- gMC->Gsvolu("SD8D","TUBS",kRframeMaterial,rFramepar4,5);
+ TVirtualMC::GetMC()->Gsvolu("SD7D","TUBS",kRframeMaterial,rFramepar4,5);
+ TVirtualMC::GetMC()->Gsvolu("SD8D","TUBS",kRframeMaterial,rFramepar4,5);
// create the horizontal frame volume
- gMC->Gsvolu("S07H","BOX",kHframeMaterial,hFramepar,3);
- gMC->Gsvolu("SD7H","BOX",kHframeMaterial,hFramepar,3);
- gMC->Gsvolu("S08H","BOX",kHframeMaterial,hFramepar,3);
- gMC->Gsvolu("SD8H","BOX",kHframeMaterial,hFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S07H","BOX",kHframeMaterial,hFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD7H","BOX",kHframeMaterial,hFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S08H","BOX",kHframeMaterial,hFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD8H","BOX",kHframeMaterial,hFramepar,3);
// create the horizontal border volume
- gMC->Gsvolu("S07B","BOX",kBframeMaterial,bFramepar,3);
- gMC->Gsvolu("SD7B","BOX",kBframeMaterial,bFramepar,3);
- gMC->Gsvolu("S08B","BOX",kBframeMaterial,bFramepar,3);
- gMC->Gsvolu("SD8B","BOX",kBframeMaterial,bFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S07B","BOX",kBframeMaterial,bFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD7B","BOX",kBframeMaterial,bFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S08B","BOX",kBframeMaterial,bFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD8B","BOX",kBframeMaterial,bFramepar,3);
// Replace the volume shape with a composite shape
// with substracted overlap with beam shield
- if ( gMC->IsRootGeometrySupported() ) {
+ if ( TVirtualMC::GetMC()->IsRootGeometrySupported() ) {
// Get shape
Int_t nSlatType = 1;
compOperation+="B";
}
compOperation+="Tube4";
- compName=Form("composite4%d%c",iCh,volLetter[iVol]);
+ compName=Form("composite4%c%d%c",slatType[iSlatType],iCh,volLetter[iVol]);
composite4[lIndex] = new TGeoCompositeShape(compName, compOperation.Data());
// Reset shape to volume
// position the vertical frames
if (i != 1) {
- GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("S07V", idSlatCh7, (2*i-1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
+ GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("S07V", idSlatCh7, (2*i+1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("S07V", idSlatCh7, (2*i)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.));
- GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("S08V", idSlatCh8, (2*i-1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
+ GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("S08V", idSlatCh8, (2*i+1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("S08V", idSlatCh8, (2*i)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.));
- } else { // Vertical and Rounded+Vertical spacer
- GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("S07V", idSlatCh7, (2*i-1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
- GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("SD7D", idSlatCh7, (2*i)*10+quadrant,TGeoTranslation(-xvFrame,-kYpos41[1],0.));
- GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("S08V", idSlatCh8, (2*i-1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
- GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("SD8D", idSlatCh8, (2*i)*10+quadrant,TGeoTranslation(-xvFrame,-kYpos42[1],0.));
+ } else { // Vertical and Rounded+Vertical spacer - Different rotation due to new mapping convention
+ GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("S07V", idSlatCh7, (2*i+1)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("SD7D", idSlatCh7, (2*i)*10+quadrant,TGeoTranslation(xvFrame,-kYpos41[1],0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("S08V", idSlatCh8, (2*i+1)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("SD8D", idSlatCh8, (2*i)*10+quadrant,TGeoTranslation(+xvFrame,-kYpos42[1],0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
}
// position the panels and the insulating material
for (j = 0; j < kNPCB4[i]; j++){
index++;
xx = kSensLength * (-kNPCB4[i]/2.+j+.5);
Float_t zPanel = spar[2] - nomexbpar[2];
- if (i==1 && j==0){ // Rounded pcb of rounded slat
- GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("SD7X", idSlatCh7, 2*index-1,TGeoTranslation(xx,0.,zPanel));
- GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("SD7X", idSlatCh7, 2*index,TGeoTranslation(xx,0.,-zPanel));
- GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("SD7I", idSlatCh7, index,TGeoTranslation(xx,0.,0.));
- GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("SD8X", idSlatCh8, 2*index-1,TGeoTranslation(xx,0.,zPanel));
- GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("SD8X", idSlatCh8, 2*index,TGeoTranslation(xx,0.,-zPanel));
- GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("SD8I", idSlatCh8, index,TGeoTranslation(xx,0.,0.));
+ if (i==1) { // Different rotation due to new mapping convention
+ if (j==0){ // Rounded pcb of rounded slat
+ GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("SD7X", idSlatCh7, 2*index-1,TGeoTranslation(-xx,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("SD7X", idSlatCh7, 2*index,TGeoTranslation(-xx,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("SD7I", idSlatCh7, index,TGeoTranslation(-xx,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("SD8X", idSlatCh8, 2*index-1,TGeoTranslation(-xx,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("SD8X", idSlatCh8, 2*index,TGeoTranslation(-xx,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("SD8I", idSlatCh8, index,TGeoTranslation(-xx,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ } else {
+ GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("S07X", idSlatCh7, 2*index-1,TGeoTranslation(-xx,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("S07X", idSlatCh7, 2*index,TGeoTranslation(-xx,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("S07I", idSlatCh7, index,TGeoTranslation(-xx,0.,0.));
+ GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("S08X", idSlatCh8, 2*index-1,TGeoTranslation(-xx,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("S08X", idSlatCh8, 2*index,TGeoTranslation(-xx,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh8)->AddEnvelopeConstituent("S08I", idSlatCh8, index,TGeoTranslation(-xx,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ }
} else {
GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("S07X", idSlatCh7, 2*index-1,TGeoTranslation(xx,0.,zPanel));
GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("S07X", idSlatCh7, 2*index,TGeoTranslation(xx,0.,-zPanel));
}
// position the nomex volume inside the panel volume
- gMC->Gspos("S07N",1,"S07C",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD7N",1,"SD7C",0.,0.,0.,0,"ONLY");
- gMC->Gspos("S08N",1,"S08C",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD8N",1,"SD8C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S07N",1,"S07C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD7N",1,"SD7C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S08N",1,"S08C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD8N",1,"SD8C",0.,0.,0.,0,"ONLY");
// position panel volume inside the bulk nomex material volume
- gMC->Gspos("S07C",1,"S07X",0.,0.,kNomexBWidth/2.,0,"ONLY");
- gMC->Gspos("SD7C",1,"SD7X",0.,0.,kNomexBWidth/2.,0,"ONLY");
- gMC->Gspos("S08C",1,"S08X",0.,0.,kNomexBWidth/2.,0,"ONLY");
- gMC->Gspos("SD8C",1,"SD8X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S07C",1,"S07X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD7C",1,"SD7X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S08C",1,"S08X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD8C",1,"SD8X",0.,0.,kNomexBWidth/2.,0,"ONLY");
// position the PCB volume inside the insulating material volume
- gMC->Gspos("S07P",1,"S07I",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD7P",1,"SD7I",0.,0.,0.,0,"ONLY");
- gMC->Gspos("S08P",1,"S08I",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD8P",1,"SD8I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S07P",1,"S07I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD7P",1,"SD7I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S08P",1,"S08I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD8P",1,"SD8I",0.,0.,0.,0,"ONLY");
// position the horizontal frame volume inside the PCB volume
- gMC->Gspos("S07H",1,"S07P",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD7H",1,"SD7P",0.,0.,0.,0,"ONLY");
- gMC->Gspos("S08H",1,"S08P",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD8H",1,"SD8P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S07H",1,"S07P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD7H",1,"SD7P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S08H",1,"S08P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD8H",1,"SD8P",0.,0.,0.,0,"ONLY");
// position the sensitive volume inside the horizontal frame volume
- gMC->Gsposp("S07G",1,"S07H",0.,0.,0.,0,"ONLY",senspar,3);
- gMC->Gspos("SD7G",1,"SD7H",0.,0.,0.,0,"ONLY");
- gMC->Gsposp("S08G",1,"S08H",0.,0.,0.,0,"ONLY",senspar,3);
- gMC->Gspos("SD8G",1,"SD8H",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gsposp("S07G",1,"S07H",0.,0.,0.,0,"ONLY",senspar,3);
+ TVirtualMC::GetMC()->Gspos("SD7G",1,"SD7H",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gsposp("S08G",1,"S08H",0.,0.,0.,0,"ONLY",senspar,3);
+ TVirtualMC::GetMC()->Gspos("SD8G",1,"SD8H",0.,0.,0.,0,"ONLY");
// position the border volumes inside the PCB volume
Float_t yborder = ( kPcbHeight - kBframeHeight ) / 2.;
- gMC->Gspos("S07B",1,"S07P",0., yborder,0.,0,"ONLY");
- gMC->Gspos("S07B",2,"S07P",0.,-yborder,0.,0,"ONLY");
- gMC->Gspos("S07B",1,"SD7P",0., yborder,0.,0,"ONLY");
- gMC->Gspos("SD7B",1,"SD7P",0.,-yborder,0.,0,"ONLY");
- gMC->Gspos("S08B",1,"S08P",0., yborder,0.,0,"ONLY");
- gMC->Gspos("S08B",2,"S08P",0.,-yborder,0.,0,"ONLY");
- gMC->Gspos("S08B",1,"SD8P",0., yborder,0.,0,"ONLY");
- gMC->Gspos("SD8B",1,"SD8P",0.,-yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S07B",1,"S07P",0., yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S07B",2,"S07P",0.,-yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S07B",1,"SD7P",0., yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD7B",1,"SD7P",0.,-yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S08B",1,"S08P",0., yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S08B",2,"S08P",0.,-yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S08B",1,"SD8P",0., yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD8B",1,"SD8P",0.,-yborder,0.,0,"ONLY");
// create the NULOC volume and position it in the horizontal frame
- gMC->Gsvolu("S07E","BOX",kNulocMaterial,nulocpar,3);
- gMC->Gsvolu("S08E","BOX",kNulocMaterial,nulocpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S07E","BOX",kNulocMaterial,nulocpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S08E","BOX",kNulocMaterial,nulocpar,3);
index = 0;
Float_t rPhi3 = TMath::ASin((kYpos41[1]-kPcbHeight/2.)/AliMUONConstants::Rmin(3));
Float_t xxmax4 = (AliMUONConstants::Rmin(3)*TMath::Cos(rPhi3)-kVframeLength/2.) - (kBframeLength - kNulocLength)/2.;
for (xx = -xxmax; xx <= xxmax; xx += 2*kNulocLength) {
index++;
- gMC->Gspos("S07E",2*index-1,"S07B", xx, 0.,-kBframeWidth/2. + kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S07E",2*index ,"S07B", xx, 0., kBframeWidth/2. - kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S08E",2*index-1,"S08B", xx, 0.,-kBframeWidth/2. + kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S08E",2*index ,"S08B", xx, 0., kBframeWidth/2. - kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S07E",2*index-1,"S07B", xx, 0.,-kBframeWidth/2. + kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S07E",2*index ,"S07B", xx, 0., kBframeWidth/2. - kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S08E",2*index-1,"S08B", xx, 0.,-kBframeWidth/2. + kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S08E",2*index ,"S08B", xx, 0., kBframeWidth/2. - kNulocWidth/2, 0, "ONLY");
}
if (xx > xxmax4 && xx< xxmax) {
- gMC->Gspos("S07E",2*index-1,"SD7B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S07E",2*index ,"SD7B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S08E",2*index-1,"SD8B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S08E",2*index ,"SD8B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S07E",2*index-1,"SD7B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S07E",2*index ,"SD7B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S08E",2*index-1,"SD8B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S08E",2*index ,"SD8B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
}
//
voNomexSupportSt4Ch8->AddNode(voCarbonSupportSt4Ch8,2,trCarbon2St4);
// Add readout cables
- gMC->Gsvolu("S07L","BOX",kCableMaterial,dum,0);
- gMC->Gsvolu("S08L","BOX",kCableMaterial,dum,0);
+ TVirtualMC::GetMC()->Gsvolu("S07L","BOX",kCableMaterial,dum,0);
+ TVirtualMC::GetMC()->Gsvolu("S08L","BOX",kCableMaterial,dum,0);
ySlat41 = 0.;
ySlat42 = 0.;
Float_t lCableY = 0.;
Float_t lCableY8 = 0.;
Float_t lCableZ = 0.;
- Float_t cablepar[3] = {supporthlength/2., kCableHeight/2., kCableWidth/2.};
+ Float_t cablepar[3] = {static_cast<Float_t>(supporthlength/2.), static_cast<Float_t>(kCableHeight/2.), static_cast<Float_t>(kCableWidth/2.)};
Float_t lCableDY = 0.;
Float_t lCableDY8 = 0.;
for (i = 0; i<kNslats4; i++){
lCableY8 = ySlat42;
// Cables going out from the start of slat
- if(kNPCB4[i]>=4){ // Only if 4 or more pcb
+ if(kNPCB4[i]>=4 && i<kNslats4-2){ // Only if 4 or more pcb
// First top cables
cablepar[0] = (supporthlength-kXpos4[i])/2.;
lCableX = kXpos4[i]/2.;
lCableDY = (kYpos41[i+1]+kYpos41[i+2])/2.-cablepar[1];
lCableDY8 = (kYpos42[i+1]+kYpos42[i+2])/2.-cablepar[1];
lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
- gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,lCableY8+lCableDY8,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,-(lCableY8+lCableDY8),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,lCableY8+lCableDY8,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,-(lCableY8+lCableDY8),lCableZ,0,"ONLY",cablepar,3);
// Then bottom cables
if (i>0){
if (i==1) { // Rounded slat. Bottom cable starts at dMotherInner (beam pipe)
lCableDY8 = lCableY8 - dMotherInner - cablepar[1];
}
}
- gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,lCableY8-lCableDY8,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,-(lCableY8-lCableDY8),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,lCableY8-lCableDY8,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,-(lCableY8-lCableDY8),lCableZ,0,"ONLY",cablepar,3);
}
}
lCableDY = (kYpos41[i+1]+kYpos41[i+2])/2.-cablepar[1]; // half way between 2 slats on same side
lCableDY8 = (kYpos42[i+1]+kYpos42[i+2])/2.-cablepar[1]; // half way between 2 slats on same side
lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
- gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,lCableY8+lCableDY8,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,-(lCableY8+lCableDY8),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,lCableY8+lCableDY8,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,-(lCableY8+lCableDY8),lCableZ,0,"ONLY",cablepar,3);
}
// Cables going out from the end of the slats
lCableDY8 = (kYpos42[i+1]+kYpos42[i+2])/2.-cablepar[1];
}
lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
- gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,lCableY8+lCableDY8,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,-(lCableY8+lCableDY8),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,lCableY8+lCableDY8,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,-(lCableY8+lCableDY8),lCableZ,0,"ONLY",cablepar,3);
// Then bottom cables
if(i>0){
if (i==1) {
lCableDY8 = lCableY8 - dMotherInner - cablepar[1];
}
}
- gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,lCableY8-lCableDY8,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,-(lCableY8-lCableDY8),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,lCableY8-lCableDY8,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,-(lCableY8-lCableDY8),lCableZ,0,"ONLY",cablepar,3);
}
}
sprintf(idSlatCh9,"SLE%d",kNslats5-1+i);
detElemId = 913 - (i + kNslats5-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0)
+ if (detElemId % 2 == 0) {
+ if (detElemId == 912) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(xSlat5, ySlat5, -zSlat5 + dzCh5),
+ TGeoRotation("rot1",90,180+angle,90,90+angle,180,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(xSlat5, ySlat5, -zSlat5 + dzCh5),
TGeoRotation("rot1",90,angle,90,90+angle,0,0) );
+ }
else
- GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(xSlat5, ySlat5, -zSlat5 + dzCh5),
- TGeoRotation("rot1",90,angle,90,270+angle,180,0) );
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(xSlat5, ySlat5, -zSlat5 + dzCh5),
+ TGeoRotation("rot1",90,angle,90,270+angle,180,0) );
sprintf(idSlatCh9,"SLE%d",3*kNslats5-2+i);
detElemId = 900 + (i + kNslats5-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0)
+ if (detElemId % 2 == 1) {
+ if (detElemId == 901) // Round slat, new rotation due to mapping convention
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(-xSlat5, ySlat5, zSlat5 - dzCh5),
- TGeoRotation("rot2",90,180+angle,90,270+angle,0,0) );
- else
+ TGeoRotation("rot2",90,angle,90,90+angle,0,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(-xSlat5, ySlat5, zSlat5 - dzCh5),
TGeoRotation("rot2",90,180+angle,90,90+angle,180,0) );
+ }
+ else
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(-xSlat5, ySlat5, zSlat5 - dzCh5),
+ TGeoRotation("rot2",90,180+angle,90,270+angle,0,0) );
+
if (i > 0) {
sprintf(idSlatCh9,"SLE%d",kNslats5-1-i);
detElemId = 913 + (i + kNslats5-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0 && detElemId != 914)
+ if (detElemId % 2 == 0) {
+ if (detElemId == 914) // Round slat, new rotation due to mapping convention
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(xSlat5, -ySlat5, -zSlat5 + dzCh5),
- TGeoRotation("rot3",90,angle,90,90+angle,0,0) );
- else
+ TGeoRotation("rot3",90,180+angle,90,270+angle,0,0) );
+ else
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(xSlat5, -ySlat5, -zSlat5 + dzCh5),
+ TGeoRotation("rot3",90,angle,90,90+angle,0,0) );
+ }
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(xSlat5, -ySlat5, -zSlat5 + dzCh5),
TGeoRotation("rot3",90,angle,90,270+angle,180,0) );
+
sprintf(idSlatCh9,"SLE%d",3*kNslats5-2-i);
detElemId = 926 - (i + kNslats5-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 1 && detElemId != 925 )
+ if (detElemId % 2 == 1) {
+ if (detElemId == 925) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(-xSlat5, -ySlat5, zSlat5 - dzCh5),
+ TGeoRotation("rot4",90,angle,90,270+angle,180,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(-xSlat5, -ySlat5, zSlat5 - dzCh5),
TGeoRotation("rot4",90,180+angle,90,90+angle,180,0) );
+ }
else
- GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(-xSlat5, -ySlat5, zSlat5 - dzCh5),
- TGeoRotation("rot4",90,180+angle,90,270+angle,0,0) );
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(-xSlat5, -ySlat5, zSlat5 - dzCh5),
+ TGeoRotation("rot4",90,180+angle,90,270+angle,0,0) );
}
sprintf(idSlatCh10,"SLF%d",kNslats5-1+i);
detElemId = 1013 - (i + kNslats5-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0)
+ if (detElemId % 2 == 0) {
+ if (detElemId == 1012) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(xSlat5, ySlat5, -zSlat5 + dzCh5),
+ TGeoRotation("rot5",90,180+angle,90,90+angle,180,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(xSlat5, ySlat5, -zSlat5 + dzCh5),
TGeoRotation("rot5",90,angle,90,90+angle,0,0) );
+ }
else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(xSlat5, ySlat5, -zSlat5 + dzCh5),
TGeoRotation("rot5",90,angle,90,270+angle,180,0) );
sprintf(idSlatCh10,"SLF%d",3*kNslats5-2+i);
detElemId = 1000 + (i + kNslats5-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0)
+ if (detElemId % 2 == 1) {
+ if (detElemId == 1001) // Round slat, new rotation due to mapping convention
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(-xSlat5, ySlat5, zSlat5 - dzCh5),
- TGeoRotation("rot6",90,180+angle,90,270+angle,0,0) );
- else
+ TGeoRotation("rot6",90,angle,90,90+angle,0,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(-xSlat5, ySlat5, zSlat5 - dzCh5),
TGeoRotation("rot6",90,180+angle,90,90+angle,180,0) );
+ }
+ else
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(-xSlat5, ySlat5, zSlat5 - dzCh5),
+ TGeoRotation("rot6",90,180+angle,90,270+angle,0,0) );
+
if (i > 0) {
sprintf(idSlatCh10,"SLF%d",kNslats5-1-i);
detElemId = 1013 + (i + kNslats5-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 0 && detElemId != 1014)
- GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(xSlat5, -ySlat5, -zSlat5 + dzCh5),
- TGeoRotation("rot7",90,angle,90,90+angle,0,0) );
- else
+ if (detElemId % 2 == 0) {
+ if (detElemId == 1014) // Round slat, new rotation due to mapping convention
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(xSlat5, -ySlat5, -zSlat5 + dzCh5),
+ TGeoRotation("rot7",90,180+angle,90,270+angle,0,0) );
+ else
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(xSlat5, -ySlat5, -zSlat5 + dzCh5),
+ TGeoRotation("rot7",90,angle,90,90+angle,0,0) );
+ }
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(xSlat5, -ySlat5, -zSlat5 + dzCh5),
- TGeoRotation("rot7",90,angle,90,270+angle,180,0) );
+ TGeoRotation("rot7",90,angle,90,270+angle,180,0) );
+
sprintf(idSlatCh10,"SLF%d",3*kNslats5-2-i);
detElemId = 1026 - (i + kNslats5-1-6);
moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
- if (detElemId % 2 == 1 && detElemId != 1025 )
+ if (detElemId % 2 == 1) {
+ if (detElemId == 1025) // Round slat, new rotation due to mapping convention
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(-xSlat5, -ySlat5, zSlat5 - dzCh5),
- TGeoRotation("rot8",90,180+angle,90,90+angle,180,0) );
- else
+ TGeoRotation("rot8",90,angle,90,270+angle,180,0) );
+ else
GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(-xSlat5, -ySlat5, zSlat5 - dzCh5),
+ TGeoRotation("rot8",90,180+angle,90,90+angle,180,0) );
+ }
+ else
+ GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(-xSlat5, -ySlat5, zSlat5 - dzCh5),
TGeoRotation("rot8",90,180+angle,90,270+angle,0,0) );
}
}
// create the panel volume
- gMC->Gsvolu("S09C","BOX",kCarbonMaterial,panelpar,3);
- gMC->Gsvolu("SD9C","BOX",kCarbonMaterial,panelpar,3);
- gMC->Gsvolu("S10C","BOX",kCarbonMaterial,panelpar,3);
- gMC->Gsvolu("SD0C","BOX",kCarbonMaterial,panelpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S09C","BOX",kCarbonMaterial,panelpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD9C","BOX",kCarbonMaterial,panelpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S10C","BOX",kCarbonMaterial,panelpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD0C","BOX",kCarbonMaterial,panelpar,3);
// create the nomex volume
- gMC->Gsvolu("S09N","BOX",kNomexMaterial,nomexpar,3);
- gMC->Gsvolu("SD9N","BOX",kNomexMaterial,nomexpar,3);
- gMC->Gsvolu("S10N","BOX",kNomexMaterial,nomexpar,3);
- gMC->Gsvolu("SD0N","BOX",kNomexMaterial,nomexpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S09N","BOX",kNomexMaterial,nomexpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD9N","BOX",kNomexMaterial,nomexpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S10N","BOX",kNomexMaterial,nomexpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD0N","BOX",kNomexMaterial,nomexpar,3);
// create the nomex volume (bulk)
- gMC->Gsvolu("S09X","BOX",kNomexBMaterial,nomexbpar,3);
- gMC->Gsvolu("SD9X","BOX",kNomexBMaterial,nomexbpar,3);
- gMC->Gsvolu("S10X","BOX",kNomexBMaterial,nomexbpar,3);
- gMC->Gsvolu("SD0X","BOX",kNomexBMaterial,nomexbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S09X","BOX",kNomexBMaterial,nomexbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD9X","BOX",kNomexBMaterial,nomexbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S10X","BOX",kNomexBMaterial,nomexbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD0X","BOX",kNomexBMaterial,nomexbpar,3);
// create the insulating material volume
- gMC->Gsvolu("S09I","BOX",kInsuMaterial,insupar,3);
- gMC->Gsvolu("SD9I","BOX",kInsuMaterial,insupar,3);
- gMC->Gsvolu("S10I","BOX",kInsuMaterial,insupar,3);
- gMC->Gsvolu("SD0I","BOX",kInsuMaterial,insupar,3);
+ TVirtualMC::GetMC()->Gsvolu("S09I","BOX",kInsuMaterial,insupar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD9I","BOX",kInsuMaterial,insupar,3);
+ TVirtualMC::GetMC()->Gsvolu("S10I","BOX",kInsuMaterial,insupar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD0I","BOX",kInsuMaterial,insupar,3);
// create the PCB volume
- gMC->Gsvolu("S09P","BOX",kPcbMaterial,pcbpar,3);
- gMC->Gsvolu("SD9P","BOX",kPcbMaterial,pcbpar,3);
- gMC->Gsvolu("S10P","BOX",kPcbMaterial,pcbpar,3);
- gMC->Gsvolu("SD0P","BOX",kPcbMaterial,pcbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S09P","BOX",kPcbMaterial,pcbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD9P","BOX",kPcbMaterial,pcbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S10P","BOX",kPcbMaterial,pcbpar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD0P","BOX",kPcbMaterial,pcbpar,3);
// create the sensitive volumes,
- gMC->Gsvolu("S09G","BOX",kSensMaterial,dum,0);
- gMC->Gsvolu("SD9G","BOX",kSensMaterial,senspar,3);
- gMC->Gsvolu("S10G","BOX",kSensMaterial,dum,0);
- gMC->Gsvolu("SD0G","BOX",kSensMaterial,senspar,3);
+ TVirtualMC::GetMC()->Gsvolu("S09G","BOX",kSensMaterial,dum,0);
+ TVirtualMC::GetMC()->Gsvolu("SD9G","BOX",kSensMaterial,senspar,3);
+ TVirtualMC::GetMC()->Gsvolu("S10G","BOX",kSensMaterial,dum,0);
+ TVirtualMC::GetMC()->Gsvolu("SD0G","BOX",kSensMaterial,senspar,3);
// create the vertical frame volume
- gMC->Gsvolu("S09V","BOX",kVframeMaterial,vFramepar,3);
- gMC->Gsvolu("S10V","BOX",kVframeMaterial,vFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S09V","BOX",kVframeMaterial,vFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S10V","BOX",kVframeMaterial,vFramepar,3);
// create the rounded vertical frame volume
- gMC->Gsvolu("SD9D","TUBS",kRframeMaterial,rFramepar5,5);
- gMC->Gsvolu("SD0D","TUBS",kRframeMaterial,rFramepar5,5);
+ TVirtualMC::GetMC()->Gsvolu("SD9D","TUBS",kRframeMaterial,rFramepar5,5);
+ TVirtualMC::GetMC()->Gsvolu("SD0D","TUBS",kRframeMaterial,rFramepar5,5);
// create the horizontal frame volume
- gMC->Gsvolu("S09H","BOX",kHframeMaterial,hFramepar,3);
- gMC->Gsvolu("SD9H","BOX",kHframeMaterial,hFramepar,3);
- gMC->Gsvolu("S10H","BOX",kHframeMaterial,hFramepar,3);
- gMC->Gsvolu("SD0H","BOX",kHframeMaterial,hFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S09H","BOX",kHframeMaterial,hFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD9H","BOX",kHframeMaterial,hFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S10H","BOX",kHframeMaterial,hFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD0H","BOX",kHframeMaterial,hFramepar,3);
// create the horizontal border volume
- gMC->Gsvolu("S09B","BOX",kBframeMaterial,bFramepar,3);
- gMC->Gsvolu("SD9B","BOX",kBframeMaterial,bFramepar,3);
- gMC->Gsvolu("S10B","BOX",kBframeMaterial,bFramepar,3);
- gMC->Gsvolu("SD0B","BOX",kBframeMaterial,bFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S09B","BOX",kBframeMaterial,bFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD9B","BOX",kBframeMaterial,bFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("S10B","BOX",kBframeMaterial,bFramepar,3);
+ TVirtualMC::GetMC()->Gsvolu("SD0B","BOX",kBframeMaterial,bFramepar,3);
// Replace the volume shape with a composite shape
// with substracted overlap with beam shield
- if ( gMC->IsRootGeometrySupported() ) {
+ if ( TVirtualMC::GetMC()->IsRootGeometrySupported() ) {
// Get shape
Int_t nSlatType = 1;
compOperation+="B";
}
compOperation+="Tube5";
- compName=Form("composite5%d%c",iCh,volLetter[iVol]);
+ compName=Form("composite5%c%d%c",slatType[iSlatType],iCh,volLetter[iVol]);
composite5[lIndex] = new TGeoCompositeShape(compName, compOperation.Data());
// Reset shape to volume
// position the vertical frames (spacers)
if (i != 1) {
- GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("S09V", idSlatCh9, (2*i-1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
+ GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("S09V", idSlatCh9, (2*i+1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("S09V", idSlatCh9, (2*i)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.));
- GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("S10V", idSlatCh10, (2*i-1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
+ GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("S10V", idSlatCh10, (2*i+1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("S10V", idSlatCh10, (2*i)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.));
- } else { // Vertical and Rounded+Vertical spacer
- GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("S09V", idSlatCh9, (2*i-1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
- GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("SD9D", idSlatCh9, (2*i)*10+quadrant,TGeoTranslation(-xvFrame,-kYpos5[1],0.));
- GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("S10V", idSlatCh10, (2*i-1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
- GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("SD0D", idSlatCh10, (2*i)*10+quadrant,TGeoTranslation(-xvFrame,-kYpos5[1],0.));
+ } else { // Vertical and Rounded+Vertical spacer - Different rotation due to new mapping convention
+ GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("S09V", idSlatCh9, (2*i+1)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("SD9D", idSlatCh9, (2*i)*10+quadrant,TGeoTranslation(xvFrame,-kYpos5[1],0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("S10V", idSlatCh10, (2*i+1)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("SD0D", idSlatCh10, (2*i)*10+quadrant,TGeoTranslation(xvFrame,-kYpos5[1],0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
}
// position the panels and the insulating material
xx = kSensLength * (-kNPCB5[i]/2.+j+.5);
Float_t zPanel = spar[2] - nomexbpar[2];
- if (i==1 && j==0){ // Rounded pcb of rounded slat
- GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("SD9X", idSlatCh9, 2*index-1,TGeoTranslation(xx,0.,zPanel));
- GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("SD9X", idSlatCh9, 2*index,TGeoTranslation(xx,0.,-zPanel));
- GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("SD9I", idSlatCh9, index,TGeoTranslation(xx,0.,0.));
- GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("SD0X", idSlatCh10, 2*index-1,TGeoTranslation(xx,0.,zPanel));
- GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("SD0X", idSlatCh10, 2*index,TGeoTranslation(xx,0.,-zPanel));
- GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("SD0I", idSlatCh10, index,TGeoTranslation(xx,0.,0.));
+ if (i==1) { // Different rotation due to new mapping convention
+ if (j==0) { // Rounded pcb of rounded slat
+ GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("SD9X", idSlatCh9, 2*index-1,TGeoTranslation(-xx,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("SD9X", idSlatCh9, 2*index,TGeoTranslation(-xx,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("SD9I", idSlatCh9, index,TGeoTranslation(-xx,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("SD0X", idSlatCh10, 2*index-1,TGeoTranslation(-xx,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("SD0X", idSlatCh10, 2*index,TGeoTranslation(-xx,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("SD0I", idSlatCh10, index,TGeoTranslation(-xx,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ } else {
+ GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("S09X", idSlatCh9, 2*index-1,TGeoTranslation(-xx,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("S09X", idSlatCh9, 2*index,TGeoTranslation(-xx,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("S09I", idSlatCh9, index,TGeoTranslation(-xx,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("S10X", idSlatCh10, 2*index-1,TGeoTranslation(-xx,0.,zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("S10X", idSlatCh10, 2*index,TGeoTranslation(-xx,0.,-zPanel),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("S10I", idSlatCh10, index,TGeoTranslation(-xx,0.,0.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ }
} else {
GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("S09X", idSlatCh9, 2*index-1,TGeoTranslation(xx,0.,zPanel));
GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("S09X", idSlatCh9, 2*index,TGeoTranslation(xx,0.,-zPanel));
- GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("S09I", idSlatCh9, index,TGeoTranslation(xx,0.,0.));
-
+ GetEnvelopes(moduleSlatCh9)->AddEnvelopeConstituent("S09I", idSlatCh9, index,TGeoTranslation(xx,0.,0.));
GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("S10X", idSlatCh10, 2*index-1,TGeoTranslation(xx,0.,zPanel));
GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("S10X", idSlatCh10, 2*index,TGeoTranslation(xx,0.,-zPanel));
GetEnvelopes(moduleSlatCh10)->AddEnvelopeConstituent("S10I", idSlatCh10, index,TGeoTranslation(xx,0.,0.));
}
// position the nomex volume inside the panel volume
- gMC->Gspos("S09N",1,"S09C",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD9N",1,"SD9C",0.,0.,0.,0,"ONLY");
- gMC->Gspos("S10N",1,"S10C",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD0N",1,"SD0C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S09N",1,"S09C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD9N",1,"SD9C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S10N",1,"S10C",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD0N",1,"SD0C",0.,0.,0.,0,"ONLY");
// position panel volume inside the bulk nomex material volume
- gMC->Gspos("S09C",1,"S09X",0.,0.,kNomexBWidth/2.,0,"ONLY");
- gMC->Gspos("SD9C",1,"SD9X",0.,0.,kNomexBWidth/2.,0,"ONLY");
- gMC->Gspos("S10C",1,"S10X",0.,0.,kNomexBWidth/2.,0,"ONLY");
- gMC->Gspos("SD0C",1,"SD0X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S09C",1,"S09X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD9C",1,"SD9X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S10C",1,"S10X",0.,0.,kNomexBWidth/2.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD0C",1,"SD0X",0.,0.,kNomexBWidth/2.,0,"ONLY");
// position the PCB volume inside the insulating material volume
- gMC->Gspos("S09P",1,"S09I",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD9P",1,"SD9I",0.,0.,0.,0,"ONLY");
- gMC->Gspos("S10P",1,"S10I",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD0P",1,"SD0I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S09P",1,"S09I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD9P",1,"SD9I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S10P",1,"S10I",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD0P",1,"SD0I",0.,0.,0.,0,"ONLY");
// position the horizontal frame volume inside the PCB volume
- gMC->Gspos("S09H",1,"S09P",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD9H",1,"SD9P",0.,0.,0.,0,"ONLY");
- gMC->Gspos("S10H",1,"S10P",0.,0.,0.,0,"ONLY");
- gMC->Gspos("SD0H",1,"SD0P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S09H",1,"S09P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD9H",1,"SD9P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S10H",1,"S10P",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD0H",1,"SD0P",0.,0.,0.,0,"ONLY");
// position the sensitive volume inside the horizontal frame volume
- gMC->Gsposp("S09G",1,"S09H",0.,0.,0.,0,"ONLY",senspar,3);
- gMC->Gspos("SD9G",1,"SD9H",0.,0.,0.,0,"ONLY");
- gMC->Gsposp("S10G",1,"S10H",0.,0.,0.,0,"ONLY",senspar,3);
- gMC->Gspos("SD0G",1,"SD0H",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gsposp("S09G",1,"S09H",0.,0.,0.,0,"ONLY",senspar,3);
+ TVirtualMC::GetMC()->Gspos("SD9G",1,"SD9H",0.,0.,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gsposp("S10G",1,"S10H",0.,0.,0.,0,"ONLY",senspar,3);
+ TVirtualMC::GetMC()->Gspos("SD0G",1,"SD0H",0.,0.,0.,0,"ONLY");
// position the border volumes inside the PCB volume
Float_t yborder = ( kPcbHeight - kBframeHeight ) / 2.;
- gMC->Gspos("S09B",1,"S09P",0., yborder,0.,0,"ONLY");
- gMC->Gspos("S09B",2,"S09P",0.,-yborder,0.,0,"ONLY");
- gMC->Gspos("S09B",1,"SD9P",0., yborder,0.,0,"ONLY");
- gMC->Gspos("SD9B",1,"SD9P",0.,-yborder,0.,0,"ONLY");
- gMC->Gspos("S10B",1,"S10P",0., yborder,0.,0,"ONLY");
- gMC->Gspos("S10B",2,"S10P",0.,-yborder,0.,0,"ONLY");
- gMC->Gspos("S10B",1,"SD0P",0., yborder,0.,0,"ONLY");
- gMC->Gspos("SD0B",1,"SD0P",0.,-yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S09B",1,"S09P",0., yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S09B",2,"S09P",0.,-yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S09B",1,"SD9P",0., yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD9B",1,"SD9P",0.,-yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S10B",1,"S10P",0., yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S10B",2,"S10P",0.,-yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("S10B",1,"SD0P",0., yborder,0.,0,"ONLY");
+ TVirtualMC::GetMC()->Gspos("SD0B",1,"SD0P",0.,-yborder,0.,0,"ONLY");
// // create the NULOC volume and position it in the horizontal frame
- gMC->Gsvolu("S09E","BOX",kNulocMaterial,nulocpar,3);
- gMC->Gsvolu("S10E","BOX",kNulocMaterial,nulocpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S09E","BOX",kNulocMaterial,nulocpar,3);
+ TVirtualMC::GetMC()->Gsvolu("S10E","BOX",kNulocMaterial,nulocpar,3);
index = 0;
Float_t rPhi3 = TMath::ASin((kYpos5[1]-kPcbHeight/2.)/AliMUONConstants::Rmin(4));
Float_t xxmax4 = (AliMUONConstants::Rmin(4)*TMath::Cos(rPhi3)-kVframeLength/2.) - (kBframeLength - kNulocLength)/2.;
for (xx = -xxmax; xx <= xxmax; xx += 2*kNulocLength) {
index++;
- gMC->Gspos("S09E",2*index-1,"S09B", xx, 0.,-kBframeWidth/2. + kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S09E",2*index ,"S09B", xx, 0., kBframeWidth/2. - kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S10E",2*index-1,"S10B", xx, 0.,-kBframeWidth/2. + kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S10E",2*index ,"S10B", xx, 0., kBframeWidth/2. - kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S09E",2*index-1,"S09B", xx, 0.,-kBframeWidth/2. + kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S09E",2*index ,"S09B", xx, 0., kBframeWidth/2. - kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S10E",2*index-1,"S10B", xx, 0.,-kBframeWidth/2. + kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S10E",2*index ,"S10B", xx, 0., kBframeWidth/2. - kNulocWidth/2, 0, "ONLY");
}
if (xx > xxmax4 && xx< xxmax) {
- gMC->Gspos("S09E",2*index-1,"SD9B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S09E",2*index ,"SD9B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S10E",2*index-1,"SD0B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
- gMC->Gspos("S10E",2*index ,"SD0B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S09E",2*index-1,"SD9B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S09E",2*index ,"SD9B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S10E",2*index-1,"SD0B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+ TVirtualMC::GetMC()->Gspos("S10E",2*index ,"SD0B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
}
//
voNomexSupportSt5->AddNode(voCarbonSupportSt5,2,trCarbon2St5);
// Add readout cables
- gMC->Gsvolu("S09L","BOX",kCableMaterial,dum,0);
+ TVirtualMC::GetMC()->Gsvolu("S09L","BOX",kCableMaterial,dum,0);
ySlat5 = 0.;
Float_t lCableX = 0.;
Float_t lCableY = 0.;
Float_t lCableZ = 0.;
- Float_t cablepar[3] = {supporthlength/2., kCableHeight/2., kCableWidth/2.};
+ Float_t cablepar[3] = {static_cast<Float_t>(supporthlength/2.), static_cast<Float_t>(kCableHeight/2.), static_cast<Float_t>(kCableWidth/2.)};
Float_t lCableDY = 0.;
for (i = 0; i<kNslats5; i++){
Int_t iCable = 1;
lCableDY = (kYpos5[i+1]+kYpos5[i+2])/2.-cablepar[1];
}
lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
- gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
// Then bottom cables
if (i>0) {
if (i==1) { // Rounded slat. Bottom cable starts at dMotherInner (beam pipe)
lCableDY = lCableY - dMotherInner - cablepar[1];
}
}
- gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar,3);
}
}
lCableX = (kPcbLength+kVframeLength)/2.;
lCableDY = (kYpos5[i+1]+kYpos5[i+2])/2.-cablepar[1]; // half way between 2 slats on same side
lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
- gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
}
// Cables going out from the end of the slats
lCableDY = (kYpos5[i+1]+kYpos5[i+2])/2.-cablepar[1];
}
lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
- gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
if(i>0){
if (i==1) { // Rounded slat. Bottom cable starts at dMotherInner (beam pipe)
lCableDY = (kYpos5[i]+kYpos5[i])/2.-cablepar[1];
lCableDY = lCableY - dMotherInner - cablepar[1];
}
}
- gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar,3);
- gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,lCableY-lCableDY,lCableZ,0,"ONLY",cablepar,3);
+ TVirtualMC::GetMC()->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,-(lCableY-lCableDY),lCableZ,0,"ONLY",cablepar,3);
}
}