- // create the sensitive volumes,
- gMC->Gsvolu("S05G","BOX",kSensMaterial,dum,0);
- gMC->Gsvolu("S06G","BOX",kSensMaterial,dum,0);
-
-
- // create the vertical frame volume
-
- gMC->Gsvolu("S05V","BOX",kVframeMaterial,vFramepar,3);
- gMC->Gsvolu("S06V","BOX",kVframeMaterial,vFramepar,3);
-
- // create the horizontal frame volume
-
-
- gMC->Gsvolu("S05H","BOX",kHframeMaterial,hFramepar,3);
- gMC->Gsvolu("SB5H","BOX",kHframeMaterial,hFramepar2,3);
- gMC->Gsvolu("S06H","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("S06B","BOX",kBframeMaterial,bFramepar,3);
-
- index=0;
- for (i = 0; i<kNslats3; i++){
- for (Int_t quadrant=1; quadrant<=4; quadrant++) {
-
- if (i==0&&quadrant==2) continue;
- if (i==0&&quadrant==4) continue;
-
- sprintf(idSlatCh5,"LA%d",ConvertSlatNum(i,quadrant,4));
- sprintf(idSlatCh6,"LB%d",ConvertSlatNum(i,quadrant,4));
- Float_t xvFrame = (slatLength3[i] - kVframeLength)/2.;
- Float_t xvFrame2 = xvFrame;
-
- if ( i==1 || i ==2 ) xvFrame2 -= 5./2.;
-
- // position the vertical frames
- if (i!=1 && i!=0) {
- GetChamber(4)->GetGeometry()->AddEnvelopeConstituent("S05V", idSlatCh5, (2*i-1)*10+quadrant,TGeoTranslation(xvFrame2,0.,0.));
- GetChamber(4)->GetGeometry()->AddEnvelopeConstituent("S05V", idSlatCh5, (2*i)*10+quadrant,TGeoTranslation(-xvFrame2,0.,0.));
- GetChamber(5)->GetGeometry()->AddEnvelopeConstituent("S06V", idSlatCh6, (2*i-1)*10+quadrant,TGeoTranslation(xvFrame,0.,0.));
- GetChamber(5)->GetGeometry()->AddEnvelopeConstituent("S06V", idSlatCh6, (2*i)*10+quadrant,TGeoTranslation(-xvFrame,0.,0.));
-
- }
- // position the panels and the insulating material
- for (j=0; j<kNPCB3[i]; j++){
- if (i==1&&j==0) continue;
- index++;
- Float_t xx = kSensLength * (-kNPCB3[i]/2.+j+.5);
- Float_t xx2 = xx + 5/2.;
-
- Float_t zPanel = spar[2] - panelpar[2];
- if ( (i==1 || i==2) && j == kNPCB3[i]-1) { // 1 pcb is shortened by 5cm
- GetChamber(4)->GetGeometry()->AddEnvelopeConstituent("SB5C", idSlatCh5, 2*index-1,TGeoTranslation(xx,0.,zPanel));
- GetChamber(4)->GetGeometry()->AddEnvelopeConstituent("SB5C", idSlatCh5, 2*index,TGeoTranslation(xx,0.,-zPanel));
- GetChamber(4)->GetGeometry()->AddEnvelopeConstituent("SB5I", idSlatCh5, index,TGeoTranslation(xx,0.,0.));
- }
- else if ( (i==1 || i==2) && j < kNPCB3[i]-1) {
- GetChamber(4)->GetGeometry()->AddEnvelopeConstituent("S05C", idSlatCh5, 2*index-1,TGeoTranslation(xx2,0.,zPanel));
- GetChamber(4)->GetGeometry()->AddEnvelopeConstituent("S05C", idSlatCh5, 2*index,TGeoTranslation(xx2,0.,-zPanel));
- GetChamber(4)->GetGeometry()->AddEnvelopeConstituent("S05I", idSlatCh5, index,TGeoTranslation(xx2,0.,0.));
- }
- else {
- GetChamber(4)->GetGeometry()->AddEnvelopeConstituent("S05C", idSlatCh5, 2*index-1,TGeoTranslation(xx,0.,zPanel));
- GetChamber(4)->GetGeometry()->AddEnvelopeConstituent("S05C", idSlatCh5, 2*index,TGeoTranslation(xx,0.,-zPanel));
- GetChamber(4)->GetGeometry()->AddEnvelopeConstituent("S05I", idSlatCh5, index,TGeoTranslation(xx,0.,0.));
- }
- GetChamber(5)->GetGeometry()->AddEnvelopeConstituent("S06C", idSlatCh6, 2*index-1,TGeoTranslation(xx,0.,zPanel));
- GetChamber(5)->GetGeometry()->AddEnvelopeConstituent("S06C", idSlatCh6, 2*index,TGeoTranslation(xx,0.,-zPanel));
- GetChamber(5)->GetGeometry()->AddEnvelopeConstituent("S06I", idSlatCh6, index,TGeoTranslation(xx,0.,0.));
+ // 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);
+
+ // Replace the volume shape with a composite shape
+ // with substracted overlap with beam shield
+ if ( gMC->IsRootGeometrySupported() ) {
+
+ // Get shape
+ Int_t nSlatType = 2;
+ Int_t nVol = 8;
+ const char* slatType = "CD"; // C: central slat; D: rounded slat
+ const char* volLetter = "CNXIPHBG";
+ TString volName;
+ TString compName;
+ TString csName;
+ TGeoVolume *mVol = 0x0;
+ TObjArray centerSlat(nSlatType*((nVol+1)*2));
+ TObjArray composite(nSlatType*((nVol+1)*2));
+
+ // Beam shield recess
+ new TGeoTube("tubeCut", 0., AliMUONConstants::Rmin(2), kSlatWidth/2.+0.001);
+ // Displacement
+ TGeoTranslation* trCTube = new TGeoTranslation("trCTube", -(kPcbLength-csvPcbLength/2.+kVframeLength/2.), 0., 0.);
+ trCTube->RegisterYourself();
+ TGeoTranslation* trDTube = new TGeoTranslation("trDTube", -(kPcbLength+kVframeLength)/2., -kYpos3[1], 0.);
+ trDTube->RegisterYourself();
+ TGeoTranslation* trCBTube = new TGeoTranslation("trCBTube", 0., ( kPcbHeight - kBframeHeight ) / 2., 0.);
+ trCBTube->Add(trCTube);
+ trCBTube->RegisterYourself();
+ TGeoTranslation* trDBTube = new TGeoTranslation("trDBTube", 0., ( kPcbHeight - kBframeHeight ) / 2., 0.);
+ trDBTube->Add(trDTube);
+ trDBTube->RegisterYourself();
+
+ Float_t cPhi2 = (TMath::Pi()/2.-TMath::ACos((kSensHeight/2.)/(AliMUONConstants::Rmin(2)-kRframeLength)));
+ TGeoBBox *boxCCut = new TGeoBBox("boxCCut",(cFramepar3[1]-cFramepar3[0]*TMath::Cos(cPhi2))/2., hFramepar3[1], cFramepar3[2]+0.001);
+ // Displacement
+ TGeoTranslation* trCBox = new TGeoTranslation("trCBox",cFramepar3[0]*TMath::Cos(cPhi2)+boxCCut->GetDX(), 0., 0.);
+ trCBox->RegisterYourself();
+ new TGeoBBox("boxDCut",(kPcbLength+kVframeLength)/2., hFramepar3[1], vFramepar[2]+0.001);
+ // Displacement
+ TGeoTranslation* trDBox = new TGeoTranslation("trDBox",kPcbLength/2., kYpos3[1], 0.);
+ trDBox->RegisterYourself();
+
+ TGeoBBox *boxVframe = new TGeoBBox("boxVframe",vFramepar[0],vrFrameHeight/2., vFramepar[2]);
+ TGeoTranslation* trVBox = new TGeoTranslation("trVBox", 0., AliMUONConstants::Rmin(2)-kRframeLength + boxVframe->GetDY(), 0.);
+ trVBox->RegisterYourself();
+
+ for(int iCh=5; iCh<=6; iCh++){
+ for (int iSlatType = 0; iSlatType<nSlatType; iSlatType++) {
+ for (int iVol = 0; iVol<nVol; iVol++){
+ Int_t lIndex = (iCh-5)*(nSlatType*(nVol+1))+iSlatType*(nVol+1)+iVol;
+ volName=Form("S%c%d%c",slatType[iSlatType],iCh,volLetter[iVol]);
+ mVol = gGeoManager->FindVolumeFast(volName);
+ if ( !mVol ) {
+ AliErrorStream()
+ << "Slat volume " << volName << " not found" << endl;
+ }
+ else {
+ centerSlat[lIndex] = mVol->GetShape();
+ csName=Form("centerSlat%c%d%c",slatType[iSlatType],iCh,volLetter[iVol]);
+ ((TGeoShape*)centerSlat[lIndex])->SetName(csName);
+
+ // Composite shape
+ TString compOperation(csName);
+ compOperation+="-tubeCut:tr";
+ compOperation+=slatType[iSlatType];
+ if (strstr(volName,"B")){
+ compOperation+="B";
+ }
+ compOperation+="Tube";
+ 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]);
+ }
+ }
+
+ // For rounded spacer
+ Int_t lIndex = (iCh-5)*(nSlatType*(nVol+1))+iSlatType*(nVol+1)+nVol;
+ volName=Form("S%c%dD",slatType[iSlatType],iCh);
+ mVol = gGeoManager->FindVolumeFast(volName);
+ if ( !mVol ) {
+ AliErrorStream()
+ << "Slat volume " << volName << " not found" << endl;
+ }
+ else {
+ centerSlat[lIndex] = mVol->GetShape();
+ csName=Form("centerSlat%c%dD",slatType[iSlatType],iCh);
+ ((TGeoShape*)centerSlat[lIndex])->SetName(csName);
+
+ // Composite shape
+ TString compOperation(csName);
+ if (strstr(volName,"SC")){
+ compOperation+="*boxCCut:trCBox";
+ }
+ if (strstr(volName,"SD")){
+ compOperation.Prepend("(");
+ compOperation+="+boxVframe:trVBox)*boxDCut:trDBox";
+ }
+ compName=Form("composite%c%dD",slatType[iSlatType],iCh);
+ composite[lIndex] = new TGeoCompositeShape(compName, compOperation.Data());
+ // Reset shape to volume
+ mVol->SetShape((TGeoShape*)composite[lIndex]);
+ }
+ }
+ }
+ }
+
+ index = 0;
+ for (i = 0; i<kNslats3; i++){
+ for (Int_t quadrant = 1; quadrant <= 4; quadrant++) {
+
+ if (i == 0 && quadrant == 2) continue;
+ if (i == 0 && quadrant == 4) continue;
+
+ sprintf(idSlatCh5,"SLA%d",ConvertSlatNum(i,quadrant,kNslats3-1));
+ sprintf(idSlatCh6,"SLB%d",ConvertSlatNum(i,quadrant,kNslats3-1));
+ Int_t moduleSlatCh5 = GetModuleId(idSlatCh5);
+ Int_t moduleSlatCh6 = GetModuleId(idSlatCh6);
+ Float_t xvFrame = (slatLength3[i] - kVframeLength)/2.;
+ Float_t xvFrame2 = xvFrame;
+
+ if (i == 0 || i == 1 || i == 2) xvFrame2 -= pcbDLength3; // Correct position (J.C.)
+
+ // position the vertical frames
+ if ( i > 2) {
+ GetEnvelopes(moduleSlatCh5)->AddEnvelopeConstituent("S05V", idSlatCh5,
+ (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.));
+ 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.));
+ 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.));
+ 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.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("S06V", idSlatCh6,
+ (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.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SC6D", idSlatCh6,
+ (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.),TGeoRotation("rotAbX",90,180+angle,90,90+angle,180,0));
+ GetEnvelopes(moduleSlatCh6)->AddEnvelopeConstituent("SD6D", idSlatCh6,
+ (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++;
+ 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 || 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");
+
+ // 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");
+
+ // 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");
+
+ // 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");
+
+ // 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");
+