223 GeoMaterial* pMaterial;
227 double aH,aB,aC,aN,aO,aNa,aMg,aAl,aSi,aP,aS,aK,aCa,aTi,aCr,aMn,aFe,aNi,aMo,Atot;
229 const GeoElement*
H = pMaterialManager->
getElement(
"Hydrogen");
230 const GeoElement* B = pMaterialManager->
getElement(
"Boron");
231 const GeoElement*
C = pMaterialManager->
getElement(
"Carbon");
232 const GeoElement* N = pMaterialManager->
getElement(
"Nitrogen");
233 const GeoElement* O = pMaterialManager->
getElement(
"Oxygen");
234 const GeoElement* Na = pMaterialManager->
getElement(
"Sodium");
235 const GeoElement* Mg = pMaterialManager->
getElement(
"Magnesium");
236 const GeoElement* Al = pMaterialManager->
getElement(
"Aluminium");
237 const GeoElement* Si = pMaterialManager->
getElement(
"Silicon");
238 const GeoElement*
P = pMaterialManager->
getElement(
"Phosphorus");
239 const GeoElement* S = pMaterialManager->
getElement(
"Sulfur");
240 const GeoElement* K = pMaterialManager->
getElement(
"Potassium");
241 const GeoElement* Ca = pMaterialManager->
getElement(
"Calcium");
242 const GeoElement* Ti = pMaterialManager->
getElement(
"Titanium");
243 const GeoElement* Cr = pMaterialManager->
getElement(
"Chromium");
244 const GeoElement* Mn = pMaterialManager->
getElement(
"Manganese");
245 const GeoElement* Fe = pMaterialManager->
getElement(
"Iron");
246 const GeoElement* Ni = pMaterialManager->
getElement(
"Nickel");
247 const GeoElement* Mo = pMaterialManager->
getElement(
"Molybdenum");
251 pMaterial=
new GeoMaterial(MatName, 8*CLHEP::g/CLHEP::cm3);
253 aFe=62.045*Fe->getA()/(CLHEP::g/CLHEP::mole);
254 aC =0.03*
C ->getA()/(CLHEP::g/CLHEP::mole);
255 aMn=2.0*Mn ->getA()/(CLHEP::g/CLHEP::mole);
256 aSi=0.75*Si->getA()/(CLHEP::g/CLHEP::mole);
257 aP =0.045*
P->getA()/(CLHEP::g/CLHEP::mole);
258 aS =0.03*S ->getA()/(CLHEP::g/CLHEP::mole);
259 aCr=18.0*Cr->getA()/(CLHEP::g/CLHEP::mole);
260 aMo=3.0*Mo ->getA()/(CLHEP::g/CLHEP::mole);
261 aNi=14.0*Ni->getA()/(CLHEP::g/CLHEP::mole);
262 aN =0.10*N ->getA()/(CLHEP::g/CLHEP::mole);
263 Atot=aFe+aC+aMn+aSi+aP+aS+aCr+aMo+aNi+aN;
265 pMaterial->add(
const_cast<GeoElement*
> (Fe),aFe/Atot);
266 pMaterial->add(
const_cast<GeoElement*
> (
C), aC/Atot);
267 pMaterial->add(
const_cast<GeoElement*
> (Mn),aMn/Atot);
268 pMaterial->add(
const_cast<GeoElement*
> (Si),aSi/Atot);
269 pMaterial->add(
const_cast<GeoElement*
> (
P), aP/Atot);
270 pMaterial->add(
const_cast<GeoElement*
> (S), aS/Atot);
271 pMaterial->add(
const_cast<GeoElement*
> (Cr),aCr/Atot);
272 pMaterial->add(
const_cast<GeoElement*
> (Mo),aMo/Atot);
273 pMaterial->add(
const_cast<GeoElement*
> (Ni),aNi/Atot);
274 pMaterial->add(
const_cast<GeoElement*
> (N), aN/Atot);
276 m_MapMaterials.insert(pair<string,GeoMaterial*>(MatName,pMaterial));
280 pMaterial=
new GeoMaterial(MatName, 4.506*CLHEP::g/CLHEP::cm3);
282 aTi=Ti->getA()/(CLHEP::g/CLHEP::mole);
283 pMaterial->add(
const_cast<GeoElement*
> (Ti), 1);
285 m_MapMaterials.insert(pair<string,GeoMaterial*>(MatName,pMaterial));
289 pMaterial=
new GeoMaterial(MatName, 1.032*CLHEP::g/CLHEP::cm3);
291 aH=52.5*
H->getA()/(CLHEP::g/CLHEP::mole);
292 aC=47.5*
C->getA()/(CLHEP::g/CLHEP::mole);
295 pMaterial->add(
const_cast<GeoElement*
> (
H), aH/Atot);
296 pMaterial->add(
const_cast<GeoElement*
> (
C), aC/Atot);
298 m_MapMaterials.insert(pair<string,GeoMaterial*>(MatName,pMaterial));
304 pMaterial=
new GeoMaterial(MatName, 1.8*CLHEP::g/CLHEP::cm3);
306 aH =.03*
H ->getA()/(CLHEP::g/CLHEP::mole);
307 aB =.02* B ->getA()/(CLHEP::g/CLHEP::mole);
308 aC =.22*
C ->getA()/(CLHEP::g/CLHEP::mole);
309 aN =.005*N ->getA()/(CLHEP::g/CLHEP::mole);
310 aO =.39* O ->getA()/(CLHEP::g/CLHEP::mole);
311 aNa=.002*Na->getA()/(CLHEP::g/CLHEP::mole);
312 aMg=.01* Mg->getA()/(CLHEP::g/CLHEP::mole);
313 aAl=.075*Al->getA()/(CLHEP::g/CLHEP::mole);
314 aSi=.15* Si->getA()/(CLHEP::g/CLHEP::mole);
315 aP =.01*
P ->getA()/(CLHEP::g/CLHEP::mole);
316 aK =.002*K ->getA()/(CLHEP::g/CLHEP::mole);
317 aCa=.08* Ca->getA()/(CLHEP::g/CLHEP::mole);
318 aTi=.004*Ti->getA()/(CLHEP::g/CLHEP::mole);
319 aFe=.002*Fe->getA()/(CLHEP::g/CLHEP::mole);
320 Atot=aH+aB+aC+aN+aO+aNa+aMg+aAl+aSi+aP+aK+aCa+aTi+aFe;
322 pMaterial->add(
const_cast<GeoElement*
> (
H), aH/Atot);
323 pMaterial->add(
const_cast<GeoElement*
> (B), aB/Atot);
324 pMaterial->add(
const_cast<GeoElement*
> (
C), aC/Atot);
325 pMaterial->add(
const_cast<GeoElement*
> (N), aN/Atot);
326 pMaterial->add(
const_cast<GeoElement*
> (O), aO/Atot);
327 pMaterial->add(
const_cast<GeoElement*
> (Na),aNa/Atot);
328 pMaterial->add(
const_cast<GeoElement*
> (Mg),aMg/Atot);
329 pMaterial->add(
const_cast<GeoElement*
> (Al),aAl/Atot);
330 pMaterial->add(
const_cast<GeoElement*
> (Si),aSi/Atot);
331 pMaterial->add(
const_cast<GeoElement*
> (
P), aP/Atot);
332 pMaterial->add(
const_cast<GeoElement*
> (K), aK/Atot);
333 pMaterial->add(
const_cast<GeoElement*
> (Ca),aCa/Atot);
334 pMaterial->add(
const_cast<GeoElement*
> (Ti),aTi/Atot);
335 pMaterial->add(
const_cast<GeoElement*
> (Fe),aFe/Atot);
337 m_MapMaterials.insert(pair<string,GeoMaterial*>(MatName,pMaterial));
340 MatName=
"Polystyrene";
341 pMaterial=
new GeoMaterial(MatName, 1.05*CLHEP::g/CLHEP::cm3);
343 aH=9*
H->getA()/(CLHEP::g/CLHEP::mole);
344 aC=8*
C->getA()/(CLHEP::g/CLHEP::mole);
347 pMaterial->add(
const_cast<GeoElement*
> (
H), aH/Atot);
348 pMaterial->add(
const_cast<GeoElement*
> (
C), aC/Atot);
350 m_MapMaterials.insert(pair<string,GeoMaterial*>(MatName,pMaterial));
354 pMaterial=
new GeoMaterial(MatName, 1.19*CLHEP::g/CLHEP::cm3);
356 aH=8*
H->getA()/(CLHEP::g/CLHEP::mole);
357 aC=5*
C->getA()/(CLHEP::g/CLHEP::mole);
358 aO=2*O->getA()/(CLHEP::g/CLHEP::mole);
361 pMaterial->add(
const_cast<GeoElement*
> (
H), aH/Atot);
362 pMaterial->add(
const_cast<GeoElement*
> (
C), aC/Atot);
363 pMaterial->add(
const_cast<GeoElement*
> (O), aO/Atot);
365 m_MapMaterials.insert(pair<string,GeoMaterial*>(MatName,pMaterial));
372 MatName=
"std::Vacuum";
379 GeoBox* pSolBoxX =
new GeoBox(500.0*CLHEP::mm,0.5*CLHEP::mm,0.5*CLHEP::mm);
380 GeoBox* pSolBoxY =
new GeoBox(0.5*CLHEP::mm,1000.0*CLHEP::mm,0.5*CLHEP::mm);
381 GeoBox* pSolBoxZ =
new GeoBox(0.5*CLHEP::mm,0.5*CLHEP::mm,250.0*CLHEP::mm);
383 GeoLogVol* pLogBoxX=
new GeoLogVol(
"BoxX",pSolBoxX,
m_MapMaterials[
string(
"PMMA")]);
384 GeoLogVol* pLogBoxY=
new GeoLogVol(
"BoxY",pSolBoxY,
m_MapMaterials[
string(
"PMMA")]);
385 GeoLogVol* pLogBoxZ=
new GeoLogVol(
"BoxZ",pSolBoxZ,
m_MapMaterials[
string(
"PMMA")]);
387 GeoFullPhysVol* pPhysBoxX=
new GeoFullPhysVol(pLogBoxX);
388 GeoFullPhysVol* pPhysBoxY=
new GeoFullPhysVol(pLogBoxY);
389 GeoFullPhysVol* pPhysBoxZ=
new GeoFullPhysVol(pLogBoxZ);
391 pMotherVolume->add(
new GeoNameTag(
"BoxX"));
392 pMotherVolume->add(
new GeoTransform(GeoTrf::Transform3D::Identity()));
393 pMotherVolume->add(pPhysBoxX);
395 pMotherVolume->add(
new GeoNameTag(
"BoxY"));
396 pMotherVolume->add(
new GeoTransform(GeoTrf::Transform3D::Identity()));
397 pMotherVolume->add(pPhysBoxY);
399 pMotherVolume->add(
new GeoNameTag(
"BoxZ"));
400 pMotherVolume->add(
new GeoTransform(GeoTrf::Transform3D::Identity()));
401 pMotherVolume->add(pPhysBoxZ);
467 GeoFullPhysVol* pPhysAlfaBox=NULL;
469 GeoBox* pSolidAlfaBox=
new GeoBox(500.0*CLHEP::mm,1000.0*CLHEP::mm,
ALFASTATIONHSIZEZ);
470 GeoLogVol* pLogAlfaBox=
new GeoLogVol(
"ALFA",pSolidAlfaBox,
m_MapMaterials[
string(
"std::Vacuum")]);
474 m_pGeoReader->GetASPosParams(&AStationParams,eAStation);
475 sprintf(szLabel,
"ALFA_%s",AStationParams.
szLabel);
476 LogStream<<MSG::INFO<<
"Create ALFA station "<<szLabel<<
endmsg;
477 pPhysAlfaBox=
new GeoFullPhysVol(pLogAlfaBox);
479 pWorld->add(
new GeoNameTag(szLabel));
481 pWorld->add(pPhysAlfaBox);
488 pmapActiveStations->insert(pair<eAStationName,ALFAPHYSVOLUME>(eAStation,APhysVolume));
492 m_pGeoReader->GetASPosParams(&AStationParams,eAStation);
493 sprintf(szLabel,
"ALFA_%s",AStationParams.
szLabel);
494 LogStream<<MSG::INFO<<
"Create ALFA station "<<szLabel<<
endmsg;
495 pPhysAlfaBox=
new GeoFullPhysVol(pLogAlfaBox);
497 pWorld->add(
new GeoNameTag(szLabel));
499 pWorld->add(pPhysAlfaBox);
506 pmapActiveStations->insert(pair<eAStationName,ALFAPHYSVOLUME>(eAStation,APhysVolume));
510 m_pGeoReader->GetASPosParams(&AStationParams,eAStation);
511 sprintf(szLabel,
"ALFA_%s",AStationParams.
szLabel);
512 LogStream<<MSG::INFO<<
"Create ALFA station "<<szLabel<<
endmsg;
513 pPhysAlfaBox=
new GeoFullPhysVol(pLogAlfaBox);
515 pWorld->add(
new GeoNameTag(szLabel));
517 pWorld->add(pPhysAlfaBox);
524 pmapActiveStations->insert(pair<eAStationName,ALFAPHYSVOLUME>(eAStation,APhysVolume));
528 m_pGeoReader->GetASPosParams(&AStationParams,eAStation);
529 sprintf(szLabel,
"ALFA_%s",AStationParams.
szLabel);
530 LogStream<<MSG::INFO<<
"Create ALFA station "<<szLabel<<
endmsg;
531 pPhysAlfaBox=
new GeoFullPhysVol(pLogAlfaBox);
533 pWorld->add(
new GeoNameTag(szLabel));
535 pWorld->add(pPhysAlfaBox);
542 pmapActiveStations->insert(pair<eAStationName,ALFAPHYSVOLUME>(eAStation,APhysVolume));
547 char szLabel[32]{}, szLabel2[32]{};
548 double fInnerTubeHLength;
549 GeoTube* pTube, *pTube2;
550 GeoLogVol* pLogTube, *pLogTube2;
551 GeoFullPhysVol* pPhysTube, *pPhysTube2;
553 HepGeom::Transform3D TransTube;
557 strcpy(szLabel,
"ALFA_Beampipe01");
558 strcpy(szLabel2,
"ALFA_Beampipe01Fill");
562 pLogTube=
new GeoLogVol(szLabel,pTube,
m_MapMaterials[
string(
"Steel")]);
563 pLogTube2=
new GeoLogVol(szLabel2,pTube2,
m_MapMaterials[
string(
"std::Vacuum")]);
564 pPhysTube=
new GeoFullPhysVol(pLogTube);
565 pPhysTube2=
new GeoFullPhysVol(pLogTube2);
568 pWorld->add(
new GeoNameTag(szLabel));
570 pWorld->add(pPhysTube);
572 pWorld->add(
new GeoNameTag(szLabel2));
574 pWorld->add(pPhysTube2);
578 strcpy(szLabel,
"ALFA_Beampipe02");
579 strcpy(szLabel2,
"ALFA_Beampipe02Fill");
585 pLogTube=
new GeoLogVol(szLabel,pTube,
m_MapMaterials[
string(
"Steel")]);
586 pLogTube2=
new GeoLogVol(szLabel2,pTube2,
m_MapMaterials[
string(
"std::Vacuum")]);
587 pPhysTube=
new GeoFullPhysVol(pLogTube);
588 pPhysTube2=
new GeoFullPhysVol(pLogTube2);
591 pWorld->add(
new GeoNameTag(szLabel));
593 pWorld->add(pPhysTube);
595 pWorld->add(
new GeoNameTag(szLabel2));
597 pWorld->add(pPhysTube2);
601 strcpy(szLabel,
"ALFA_Beampipe03");
602 strcpy(szLabel2,
"ALFA_Beampipe03Fill");
606 pLogTube=
new GeoLogVol(szLabel,pTube,
m_MapMaterials[
string(
"Steel")]);
607 pLogTube2=
new GeoLogVol(szLabel2,pTube2,
m_MapMaterials[
string(
"std::Vacuum")]);
608 pPhysTube=
new GeoFullPhysVol(pLogTube);
609 pPhysTube2=
new GeoFullPhysVol(pLogTube2);
612 pWorld->add(
new GeoNameTag(szLabel));
614 pWorld->add(pPhysTube);
616 pWorld->add(
new GeoNameTag(szLabel2));
618 pWorld->add(pPhysTube2);
622 strcpy(szLabel,
"ALFA_Beampipe04");
623 strcpy(szLabel2,
"ALFA_Beampipe04Fill");
627 pLogTube=
new GeoLogVol(szLabel,pTube,
m_MapMaterials[
string(
"Steel")]);
628 pLogTube2=
new GeoLogVol(szLabel2,pTube2,
m_MapMaterials[
string(
"std::Vacuum")]);
629 pPhysTube=
new GeoFullPhysVol(pLogTube);
630 pPhysTube2=
new GeoFullPhysVol(pLogTube2);
633 pWorld->add(
new GeoNameTag(szLabel));
635 pWorld->add(pPhysTube);
637 pWorld->add(
new GeoNameTag(szLabel2));
639 pWorld->add(pPhysTube2);
643 strcpy(szLabel,
"ALFA_Beampipe05");
644 strcpy(szLabel2,
"ALFA_Beampipe05Fill");
650 pLogTube=
new GeoLogVol(szLabel,pTube,
m_MapMaterials[
string(
"Steel")]);
651 pLogTube2=
new GeoLogVol(szLabel2,pTube2,
m_MapMaterials[
string(
"std::Vacuum")]);
652 pPhysTube=
new GeoFullPhysVol(pLogTube);
653 pPhysTube2=
new GeoFullPhysVol(pLogTube2);
656 pWorld->add(
new GeoNameTag(szLabel));
658 pWorld->add(pPhysTube);
660 pWorld->add(
new GeoNameTag(szLabel2));
662 pWorld->add(pPhysTube2);
666 strcpy(szLabel,
"ALFA_Beampipe06");
667 strcpy(szLabel2,
"ALFA_Beampipe06Fill");
671 pLogTube=
new GeoLogVol(szLabel,pTube,
m_MapMaterials[
string(
"Steel")]);
672 pLogTube2=
new GeoLogVol(szLabel2,pTube2,
m_MapMaterials[
string(
"std::Vacuum")]);
673 pPhysTube=
new GeoFullPhysVol(pLogTube);
674 pPhysTube2=
new GeoFullPhysVol(pLogTube2);
677 pWorld->add(
new GeoNameTag(szLabel));
679 pWorld->add(pPhysTube);
681 pWorld->add(
new GeoNameTag(szLabel2));
683 pWorld->add(pPhysTube2);
694 LogStream<<MSG::INFO<<
"ALFA_DetectorFactory::buildALFA_RP"<<
endmsg;
695 LogStream<<MSG::DEBUG<<
"Build ALFA Roman Pot"<<
endmsg;
701 if (
m_pDetectorStore->retrieve(pMaterialManager, std::string(
"MATERIALS"))!=StatusCode::SUCCESS){
702 LogStream<<MSG::INFO<<
"Could not load material manager"<<
endmsg;
714 LogStream<<MSG::INFO<<
"Geometry loaded successfully"<<
endmsg;
717 LogStream<<MSG::INFO<<
"Could not load geometry"<<
endmsg;
733 GeoLogVol* pLogRPBox=NULL;
734 GeoLogVol* pLogRPAir=NULL;
735 GeoFullPhysVol* pPhysAlfaBox=NULL;
736 GeoFullPhysVol* pPhysRPBox=NULL;
737 GeoFullPhysVol* pPhysRPAir=NULL;
738 HepGeom::Translate3D ObjTranslate;
739 HepGeom::Rotate3D ObjRotate;
741 GeoLogVol* pLogObj=NULL;
742 GeoFullPhysVol* pPhysObj=NULL;
743 HepGeom::Transform3D TransAlfaBox,TransRPAir,TransTot;
744 HepGeom::Transform3D TransAlfaBoxRotate;
745 HepGeom::Transform3D TransRPBoxRotate;
748 GeoAlignableTransform* pAlTransRPBox;
749 GeoAlignableTransform* pAlTransDetInRPMainPoint;
753 map<eAStationName,ALFAPHYSVOLUME> mapActiveStations;
762 pPhysAlfaBox=mapActiveStations[RPosParams.
eASName].pPhysVolume;
763 TransAlfaBox=mapActiveStations[RPosParams.
eASName].Transform;
769 sprintf(szLabel,
"LogRPBox[%02d]",eRPName);
770 pLogRPBox=
new GeoLogVol(szLabel,pSolidRP,
m_MapMaterials[
string(
"Steel")]);
771 pPhysRPBox=
new GeoFullPhysVol(pLogRPBox);
773 sprintf(szLabel,
"RPBox[%02d]",eRPName);
774 pPhysAlfaBox->add(
new GeoNameTag(szLabel));
775 pPhysAlfaBox->add(pAlTransRPBox);
776 pPhysAlfaBox->add(pPhysRPBox);
780 sprintf(szLabel,
"LogRPAir[%02d]",eRPName);
781 pLogRPAir=
new GeoLogVol(szLabel,pSolidAir,
m_MapMaterials[
string(
"std::Vacuum")]);
782 pPhysRPAir=
new GeoFullPhysVol(pLogRPAir);
784 sprintf(szLabel,
"RPAir[%02d]",eRPName);
785 TransRPAir=HepGeom::Translate3D(0.0,0.0,0.0);
786 pPhysRPBox->add(
new GeoNameTag(szLabel));
788 pPhysRPBox->add(pPhysRPAir);
792 sprintf(szLabel,
"LogTrigger[%02d]",eRPName);
793 pLogObj=
new GeoLogVol(szLabel,pSolidTrigger,
m_MapMaterials[
string(
"PVT")]);
794 pPhysObj=
new GeoFullPhysVol(pLogObj);
795 sprintf(szLabel,
"Trigger[%02d]",eRPName);
796 pPhysRPAir->add(
new GeoNameTag(szLabel));
797 pPhysRPAir->add(pAlTransDetInRPMainPoint);
798 pPhysRPAir->add(
new GeoTransform(GeoTrf::Translate3D(-22.0*CLHEP::mm,-31.325*CLHEP::mm,11.3*CLHEP::mm)));
799 pPhysRPAir->add(pPhysObj);
803 sprintf(szLabel,
"LogRPSupport[%02d]",eRPName);
804 pLogObj=
new GeoLogVol(szLabel,pSolidRPSupport,
m_MapMaterials[
string(
"Steel")]);
805 pPhysObj=
new GeoFullPhysVol(pLogObj);
806 sprintf(szLabel,
"RPSupport[%02d]",eRPName);
807 pPhysRPAir->add(
new GeoNameTag(szLabel));
808 pPhysRPAir->add(pAlTransDetInRPMainPoint);
809 pPhysRPAir->add(
new GeoTransform(GeoTrf::Translate3D(0.0*CLHEP::mm,85.475*CLHEP::mm,-28.5*CLHEP::mm)));
810 pPhysRPAir->add(pPhysObj);
814 sprintf(szLabel,
"LogG10Substrate[%02d]",eRPName);
815 pLogObj=
new GeoLogVol(szLabel,pSolidG10Shapes,
m_MapMaterials[
string(
"PMMA")]);
817 pPhysObj=
new GeoFullPhysVol(pLogObj);
818 sprintf(szLabel,
"G10Substrate[%02d][%d]",eRPName,i);
819 pPhysRPAir->add(
new GeoNameTag(szLabel));
820 pPhysRPAir->add(pAlTransDetInRPMainPoint);
821 pPhysRPAir->add(
new GeoTransform(GeoTrf::Translate3D(ALFA_stagger[i]*CLHEP::mm,-27.525*CLHEP::mm,(-17.5+i*2)*CLHEP::mm)*GeoTrf::RotateX3D(-90.0*CLHEP::deg)));
822 pPhysRPAir->add(pPhysObj);
827 sprintf(szLabel,
"LogRPSupport[%02d][%d]",eRPName,i);
828 pLogObj=
new GeoLogVol(szLabel,(*pMapSolidTiPlates)[i],
m_MapMaterials[
string(
"Titanium")]);
829 pPhysObj=
new GeoFullPhysVol(pLogObj);
830 sprintf(szLabel,
"RPSupport[%02d][%d]",eRPName,i);
831 pPhysRPAir->add(
new GeoNameTag(szLabel));
832 pPhysRPAir->add(pAlTransDetInRPMainPoint);
833 pPhysRPAir->add(
new GeoTransform(GeoTrf::Translate3D(0.0*CLHEP::mm,5.975*CLHEP::mm,(-17.5+i*2)*CLHEP::mm)));
834 pPhysRPAir->add(pPhysObj);
847 sprintf(szLabel,
"LogODPlate[%02d][%d]",eRPName,i);
848 pLogObj=
new GeoLogVol(szLabel,(*pMapSolidOdPlates)[i],
m_MapMaterials[
string(
"Titanium")]);
849 pPhysObj=
new GeoFullPhysVol(pLogObj);
850 sprintf(szLabel,
"ODPlate[%02d][%d]",eRPName,i);
851 pPhysRPAir->add(
new GeoNameTag(szLabel));
852 pPhysRPAir->add(pAlTransDetInRPMainPoint);
853 pPhysRPAir->add(
new GeoTransform(GeoTrf::Translate3D(0.0*CLHEP::mm,-0.175*CLHEP::mm,(15+i*2)*CLHEP::mm)));
854 pPhysRPAir->add(pPhysObj);
863 sprintf(szLabel,
"StRPBox[%02d]",eRPName);
866 if(!
sc.isSuccess())
throw std::runtime_error(
"Cannot store alignable record");
868 sprintf(szLabel,
"AlTransRPBox[%02d]",eRPName);
871 if(!
sc.isSuccess())
throw std::runtime_error(
"Cannot store alignable record");
873 sprintf(szLabel,
"AlTransDetInRPMainPoint[%02d]",eRPName);
876 if(!
sc.isSuccess())
throw std::runtime_error(
"Cannot store alignable record");
879 LogStream<<MSG::INFO<<
"ALFA detector successfully created."<<
endmsg;
886 if(pMapSolidOdPlates)
delete pMapSolidOdPlates;
887 if(pMapSolidTiPlates)
delete pMapSolidTiPlates;
895 GeoBox* RPbox1 =
new GeoBox(64*CLHEP::mm,29.825*CLHEP::mm,23*CLHEP::mm);
896 GeoBox* RPbox2 =
new GeoBox(21*CLHEP::mm,5.425*CLHEP::mm,7.5*CLHEP::mm);
897 GeoBox* RPbox3 =
new GeoBox(22*CLHEP::mm,1*CLHEP::mm,8.5*CLHEP::mm);
899 GeoTrf::Transform3D RP_Move1= GeoTrf::Translate3D(0, 4.425*CLHEP::mm, 0);
900 GeoShapeShift * mowe1 =
new GeoShapeShift(RPbox3,RP_Move1);
901 GeoShapeUnion * RPsemi1 =
new GeoShapeUnion(RPbox2, mowe1);
903 GeoTrf::Transform3D RP_Move2= GeoTrf::Translate3D( 38.5*CLHEP::mm, -35.25*CLHEP::mm, 14.5*CLHEP::mm);
904 GeoShapeShift * mowe2 =
new GeoShapeShift(RPsemi1,RP_Move2);
905 GeoShapeUnion * RPsemi2 =
new GeoShapeUnion(RPbox1, mowe2);
907 GeoTrf::Transform3D RP_Move3= GeoTrf::Translate3D(-38.5*CLHEP::mm, -35.25*CLHEP::mm, 14.5*CLHEP::mm);
908 GeoShapeShift * mowe3 =
new GeoShapeShift(RPsemi1,RP_Move3);
909 GeoShapeUnion * RPsemi3 =
new GeoShapeUnion(RPsemi2, mowe3);
911 GeoTube* RPtube1 =
new GeoTube(0*CLHEP::mm,74*CLHEP::mm,26.675*CLHEP::mm);
912 GeoTube* RPtube2 =
new GeoTube(0*CLHEP::mm,126.5*CLHEP::mm,9.875*CLHEP::mm);
914 GeoTrf::Transform3D RP_Move4= GeoTrf::Translate3D(0*CLHEP::mm, 0*CLHEP::mm, -36.55*CLHEP::mm);
915 GeoShapeShift * mowe4 =
new GeoShapeShift(RPtube2,RP_Move4);
916 GeoShapeUnion * RPsemi4 =
new GeoShapeUnion(RPtube1, mowe4);
918 GeoBox* RPbox4 =
new GeoBox(104*CLHEP::mm,104*CLHEP::mm,9.875*CLHEP::mm);
919 GeoBox* RPbox5 =
new GeoBox(131.75*CLHEP::mm,131.75*CLHEP::mm,22.5*CLHEP::mm);
921 GeoTrf::Transform3D RP_Move5= GeoTrf::Translate3D(0*CLHEP::mm, 0*CLHEP::mm, -56.3*CLHEP::mm);
922 GeoShapeShift * mowe5 =
new GeoShapeShift(RPbox4,RP_Move5);
923 GeoShapeUnion * RPsemi5 =
new GeoShapeUnion(RPsemi4, mowe5);
925 GeoTrf::Transform3D RP_Move6= GeoTrf::Translate3D(0*CLHEP::mm, 0*CLHEP::mm, -88.675*CLHEP::mm);
926 GeoShapeShift * mowe6 =
new GeoShapeShift(RPbox5,RP_Move6);
927 GeoShapeUnion * RPsemi6 =
new GeoShapeUnion(RPsemi5, mowe6);
929 GeoTrf::Transform3D RP_MoveRot7= GeoTrf::Translate3D(0*CLHEP::mm, 56.5*CLHEP::mm, -8.5*CLHEP::mm)*GeoTrf::RotateX3D(90*CLHEP::deg);
930 GeoShapeShift * mowe7 =
new GeoShapeShift(RPsemi6,RP_MoveRot7);
931 GeoShapeUnion * RPsemi7 =
new GeoShapeUnion(RPsemi3, mowe7);
933 GeoBox* RPbox6 =
new GeoBox(16.97*CLHEP::mm,16.97*CLHEP::mm,0.75*CLHEP::mm);
935 GeoTrf::Transform3D RP_MoveRot8= GeoTrf::Translate3D(0*CLHEP::mm, -21.525*CLHEP::mm, 22.25*CLHEP::mm)*GeoTrf::RotateZ3D(45*CLHEP::deg);
936 GeoShapeShift * mowe8 =
new GeoShapeShift(RPbox6,RP_MoveRot8);
937 GeoShapeSubtraction * RPsemi8 =
new GeoShapeSubtraction(RPsemi7, mowe8);
939 GeoTrf::Transform3D RP_MoveRot9= GeoTrf::Translate3D(0*CLHEP::mm, -21.525*CLHEP::mm, -22.25*CLHEP::mm)*GeoTrf::RotateZ3D(45*CLHEP::deg);
940 GeoShapeShift * mowe9 =
new GeoShapeShift(RPbox6,RP_MoveRot9);
941 GeoShapeSubtraction * shapeRP =
new GeoShapeSubtraction(RPsemi8, mowe9);
948 GeoBox* RP_Airbox1 =
new GeoBox(62*CLHEP::mm,27.825*CLHEP::mm,21*CLHEP::mm);
949 GeoBox* RP_Airbox2 =
new GeoBox(62*CLHEP::mm,3.5*CLHEP::mm,21*CLHEP::mm);
950 GeoBox* RP_Airbox3 =
new GeoBox(16.5*CLHEP::mm,0.925*CLHEP::mm,21*CLHEP::mm);
951 GeoBox* RP_Airbox4 =
new GeoBox(20*CLHEP::mm,5.675*CLHEP::mm,6.5*CLHEP::mm);
952 GeoTube* RP_Airtube1 =
new GeoTube(0*CLHEP::mm,69*CLHEP::mm,65.425*CLHEP::mm);
954 GeoTrf::Transform3D RP_Air_Move1= GeoTrf::Translate3D(0,31.325*CLHEP::mm, 0);
955 GeoShapeShift * mowe1 =
new GeoShapeShift(RP_Airbox2,RP_Air_Move1);
956 GeoShapeUnion * RP_Airsemi1 =
new GeoShapeUnion(RP_Airbox1, mowe1);
958 GeoTrf::Transform3D RP_Air_Move2= GeoTrf::Translate3D(0,-28.75*CLHEP::mm, 0);
959 GeoShapeShift * mowe2 =
new GeoShapeShift(RP_Airbox3,RP_Air_Move2);
960 GeoShapeUnion * RP_Airsemi2 =
new GeoShapeUnion(RP_Airsemi1, mowe2);
962 GeoTrf::Transform3D RP_Air_Move3= GeoTrf::Translate3D( 38.5*CLHEP::mm,-33.5*CLHEP::mm,14.5*CLHEP::mm);
963 GeoShapeShift * mowe3 =
new GeoShapeShift(RP_Airbox4,RP_Air_Move3);
964 GeoShapeUnion * RP_Airsemi3 =
new GeoShapeUnion(RP_Airsemi2, mowe3);
966 GeoTrf::Transform3D RP_Air_Move4= GeoTrf::Translate3D(-38.5*CLHEP::mm,-33.5*CLHEP::mm,14.5*CLHEP::mm);
967 GeoShapeShift * mowe4 =
new GeoShapeShift(RP_Airbox4,RP_Air_Move4);
968 GeoShapeUnion * RP_Airsemi4 =
new GeoShapeUnion(RP_Airsemi3, mowe4);
970 GeoTrf::Transform3D RP_Air_MoveRot5= GeoTrf::Translate3D(0*CLHEP::mm,100.25*CLHEP::mm, -8.5*CLHEP::mm)*GeoTrf::RotateX3D(90*CLHEP::deg);
971 GeoShapeShift * mowe5 =
new GeoShapeShift(RP_Airtube1,RP_Air_MoveRot5);
972 GeoShapeUnion * shapeRP_Air =
new GeoShapeUnion(RP_Airsemi4, mowe5);
979 GeoBox* ALFA_Trigbox1 =
new GeoBox(15.75*CLHEP::mm,15.75*CLHEP::mm,1.5*CLHEP::mm);
980 GeoBox* ALFA_Trigbox2 =
new GeoBox(15.75*CLHEP::mm,15.75*CLHEP::mm,3*CLHEP::mm);
981 GeoBox* ALFA_Trigbox3 =
new GeoBox(3*CLHEP::mm,7.5*CLHEP::mm,1.5*CLHEP::mm);
983 GeoTrf::Transform3D ALFA_Trig_MoveRot1= GeoTrf::Translate3D(17.235*CLHEP::mm, -17.235*CLHEP::mm, 0*CLHEP::mm)*GeoTrf::RotateZ3D(45*CLHEP::deg);
984 GeoShapeShift * mowe1 =
new GeoShapeShift(ALFA_Trigbox2, ALFA_Trig_MoveRot1);
985 GeoShapeSubtraction * ALFA_Trigsemi1 =
new GeoShapeSubtraction(ALFA_Trigbox1, mowe1);
987 GeoTrf::Transform3D ALFA_Trig_Move2= GeoTrf::Translate3D(0*CLHEP::mm,0*CLHEP::mm, 3.5*CLHEP::mm);
988 GeoShapeShift * mowe2 =
new GeoShapeShift(ALFA_Trigsemi1,ALFA_Trig_Move2);
989 GeoShapeUnion * ALFA_Trigsemi2 =
new GeoShapeUnion(ALFA_Trigsemi1, mowe2);
991 GeoTrf::Transform3D ALFA_Trig_Move3= GeoTrf::Translate3D(44*CLHEP::mm, 0*CLHEP::mm, 0*CLHEP::mm);
992 GeoShapeShift * mowe3 =
new GeoShapeShift(ALFA_Trigbox3,ALFA_Trig_Move3);
993 GeoShapeUnion * ALFA_Trigsemi3 =
new GeoShapeUnion(ALFA_Trigbox3, mowe3);
995 GeoTrf::Transform3D ALFA_Trig_MoveRot4= GeoTrf::Translate3D(22*CLHEP::mm, 10.424*CLHEP::mm, -7.6*CLHEP::mm)*GeoTrf::RotateZ3D(-45*CLHEP::deg);
996 GeoShapeShift * mowe4 =
new GeoShapeShift(ALFA_Trigsemi2,ALFA_Trig_MoveRot4);
997 GeoShapeUnion * shapeALFA_Trigger =
new GeoShapeUnion(ALFA_Trigsemi3, mowe4);
999 return shapeALFA_Trigger;
1004 GeoBox* RP_Supbox1 =
new GeoBox(10*CLHEP::mm,33*CLHEP::mm,10*CLHEP::mm);
1005 GeoBox* RP_Supbox2 =
new GeoBox( 6*CLHEP::mm, 9*CLHEP::mm,15*CLHEP::mm);
1006 GeoBox* RP_Supbox3 =
new GeoBox(18*CLHEP::mm, 5*CLHEP::mm,18*CLHEP::mm);
1007 GeoBox* RP_Supbox4 =
new GeoBox(18*CLHEP::mm,3.5*CLHEP::mm,18*CLHEP::mm);
1009 GeoTrf::Transform3D RP_Sup_Move1= GeoTrf::Translate3D(0, 42*CLHEP::mm, 8*CLHEP::mm);
1010 GeoShapeShift * mowe1 =
new GeoShapeShift(RP_Supbox2, RP_Sup_Move1);
1011 GeoShapeUnion * RP_Supsemi1 =
new GeoShapeUnion(RP_Supbox1, mowe1);
1013 GeoTrf::Transform3D RP_Sup_Move2= GeoTrf::Translate3D(0, 56*CLHEP::mm, 20*CLHEP::mm);
1014 GeoShapeShift * mowe2 =
new GeoShapeShift(RP_Supbox3, RP_Sup_Move2);
1015 GeoShapeUnion * RP_Supsemi2 =
new GeoShapeUnion(RP_Supsemi1, mowe2);
1017 GeoTrf::Transform3D RP_Sup_Move3= GeoTrf::Translate3D(0, 64.5*CLHEP::mm, 20*CLHEP::mm);
1018 GeoShapeShift * mowe3 =
new GeoShapeShift(RP_Supbox4, RP_Sup_Move3);
1019 GeoShapeUnion * shapeRP_Support =
new GeoShapeUnion(RP_Supsemi2, mowe3);
1021 return shapeRP_Support;
1026 GeoTrd* G10trd1 =
new GeoTrd( 15*CLHEP::mm, 17*CLHEP::mm, 0.15*CLHEP::mm, 0.15*CLHEP::mm, 1*CLHEP::mm);
1027 GeoTrd* G10trd2 =
new GeoTrd( 30*CLHEP::mm, 9.5*CLHEP::mm, 0.15*CLHEP::mm, 0.15*CLHEP::mm, 10.25*CLHEP::mm);
1028 GeoBox* G10box1 =
new GeoBox( 30*CLHEP::mm, 0.15*CLHEP::mm, 3.75*CLHEP::mm);
1030 GeoTrf::Transform3D G10_Move1= GeoTrf::Translate3D(0, 0, 4.75*CLHEP::mm);
1031 GeoShapeShift* mowe1 =
new GeoShapeShift(G10box1, G10_Move1);
1032 GeoShapeUnion* G10_Subsemi1 =
new GeoShapeUnion(G10trd1, mowe1);
1034 GeoTrf::Transform3D G10_Move2= GeoTrf::Translate3D(0, 0, 18.75*CLHEP::mm);
1035 GeoShapeShift* mowe2 =
new GeoShapeShift(G10trd2, G10_Move2);
1036 GeoShapeUnion* shapeG10_Substrate =
new GeoShapeUnion(G10_Subsemi1, mowe2);
1038 return shapeG10_Substrate;
1044 std::map<int,GeoShape*>* pMapTiPlates=
new std::map<int,GeoShape*>();
1046 GeoBox* TiPlate_Holder =
new GeoBox(10*CLHEP::mm,36.5*CLHEP::mm,1*CLHEP::mm);
1047 GeoBox* TiPlate_Substr =
new GeoBox(50*CLHEP::mm,32.5*CLHEP::mm,1*CLHEP::mm);
1048 GeoBox* TiPlate_box1 =
new GeoBox(16*CLHEP::mm,120*CLHEP::mm,0.75*CLHEP::mm);
1049 GeoBox* TiPlate_box2 =
new GeoBox(19.9793*CLHEP::mm,19.9793*CLHEP::mm,2*CLHEP::mm);
1051 GeoTrf::Transform3D TiPlate_Move1= GeoTrf::Translate3D(0, 69*CLHEP::mm, 0);
1052 GeoShapeShift * mowe1 =
new GeoShapeShift(TiPlate_Holder,TiPlate_Move1);
1053 GeoShapeUnion * TiPlatesemi1 =
new GeoShapeUnion(TiPlate_Substr, mowe1);
1056 GeoTrf::Transform3D TiPlate_MoveRot2 = GeoTrf::Translate3D(ALFA_stagger[i]*CLHEP::mm, -26.872*CLHEP::mm, 1*CLHEP::mm)*GeoTrf::RotateZ3D( 45*CLHEP::deg);
1057 GeoTrf::Transform3D TiPlate_MoveRot3 = GeoTrf::Translate3D(ALFA_stagger[i]*CLHEP::mm, -26.872*CLHEP::mm,-1*CLHEP::mm)*GeoTrf::RotateZ3D(-45*CLHEP::deg);
1059 GeoShapeShift * mowe2 =
new GeoShapeShift(TiPlate_box1, TiPlate_MoveRot2);
1060 GeoShapeShift * mowe3 =
new GeoShapeShift(TiPlate_box1, TiPlate_MoveRot3);
1061 GeoShapeSubtraction * TiPlatesemi2 =
new GeoShapeSubtraction(TiPlatesemi1,mowe2);
1062 GeoShapeSubtraction * TiPlatesemi3 =
new GeoShapeSubtraction(TiPlatesemi2,mowe3);
1064 GeoTrf::Transform3D TiPlate_MoveRot4 = GeoTrf::Translate3D(ALFA_stagger[i]*CLHEP::mm, -32.5*CLHEP::mm,0*CLHEP::mm)*GeoTrf::RotateZ3D(-45*CLHEP::deg);
1065 GeoShapeShift * mowe4 =
new GeoShapeShift(TiPlate_box2, TiPlate_MoveRot4);
1066 GeoShapeSubtraction* shapeTi_Plate =
new GeoShapeSubtraction(TiPlatesemi3, mowe4);
1068 pMapTiPlates->insert(std::pair<int,GeoShape*>(i,shapeTi_Plate));
1071 return pMapTiPlates;
1077 std::map<int,GeoShape*>* pMapODPlates=
new std::map<int,GeoShape*>();
1079 GeoBox* OD_Tibox1 =
new GeoBox(60*CLHEP::mm,38.65*CLHEP::mm,0.4*CLHEP::mm);
1080 GeoBox* OD_Tibox2 =
new GeoBox(10*CLHEP::mm,36.5*CLHEP::mm,1*CLHEP::mm);
1081 GeoBox* OD_Tibox3 =
new GeoBox(19*CLHEP::mm,21.5*CLHEP::mm,2*CLHEP::mm);
1083 GeoTrf::Transform3D OD_Move01= GeoTrf::Translate3D(0, 75.15*CLHEP::mm, 0);
1084 GeoShapeShift * mowe01 =
new GeoShapeShift(OD_Tibox2,OD_Move01);
1085 GeoShapeUnion * OD_Tisemi01 =
new GeoShapeUnion(OD_Tibox1, mowe01);
1087 GeoTrf::Transform3D OD_Move02= GeoTrf::Translate3D(0, -19.15*CLHEP::mm, 0);
1088 GeoShapeShift * mowe02 =
new GeoShapeShift(OD_Tibox3, OD_Move02);
1089 GeoShapeSubtraction * OD_Tisemi02 =
new GeoShapeSubtraction(OD_Tisemi01, mowe02);
1091 GeoBox* OD_Tibox5 =
new GeoBox(60*CLHEP::mm,38.65*CLHEP::mm,0.3*CLHEP::mm);
1093 GeoTube* OD_Titube1 =
new GeoTube(22.5*CLHEP::mm,72.5*CLHEP::mm,0.6*CLHEP::mm);
1094 GeoBox* OD_Tibox6 =
new GeoBox(72.5*CLHEP::mm,150*CLHEP::mm,1*CLHEP::mm);
1095 GeoBox* OD_Tibox7 =
new GeoBox(150*CLHEP::mm,72.5*CLHEP::mm,1*CLHEP::mm);
1097 GeoTrf::Transform3D OD_Move04 = GeoTrf::Translate3D(72.5*CLHEP::mm, 0*CLHEP::mm, 0*CLHEP::mm);
1098 GeoShapeShift * mowe04 =
new GeoShapeShift(OD_Tibox6,OD_Move04);
1099 GeoShapeSubtraction * OD_Tisemi04 =
new GeoShapeSubtraction(OD_Titube1, mowe04);
1101 GeoTrf::Transform3D OD_Move05 = GeoTrf::Translate3D(0*CLHEP::mm, 72.5*CLHEP::mm, 0*CLHEP::mm);
1102 GeoShapeShift * mowe05 =
new GeoShapeShift(OD_Tibox7,OD_Move05);
1103 GeoShapeSubtraction * OD_Tisemi05 =
new GeoShapeSubtraction(OD_Tisemi04, mowe05);
1105 GeoBox* OD_Tibox8 =
new GeoBox(8.*CLHEP::mm,20.*CLHEP::mm,0.6*CLHEP::mm);
1106 GeoBox* OD_Tibox9 =
new GeoBox(20.*CLHEP::mm,60.*CLHEP::mm,0.6*CLHEP::mm);
1108 GeoTrf::Transform3D OD_Move06= GeoTrf::Translate3D(4*CLHEP::mm, -42.5*CLHEP::mm, 0.*CLHEP::mm);
1109 GeoShapeShift * mowe06 =
new GeoShapeShift(OD_Tibox8,OD_Move06);
1110 GeoShapeUnion * OD_Tisemi06 =
new GeoShapeUnion(OD_Tisemi05, mowe06);
1112 GeoTrf::Transform3D OD_Move07= GeoTrf::Translate3D(-42.5*CLHEP::mm, 60*CLHEP::mm, 0.*CLHEP::mm);
1113 GeoShapeShift * mowe07 =
new GeoShapeShift(OD_Tibox9,OD_Move07);
1114 GeoShapeUnion * OD_Tisemi07 =
new GeoShapeUnion(OD_Tisemi06, mowe07);
1118 GeoTrf::Transform3D OD_Move08= GeoTrf::Translate3D(-27*CLHEP::mm, (-8.183+OD_stagger[i])*CLHEP::mm, 0);
1119 GeoShapeShift * mowe08 =
new GeoShapeShift(OD_Tisemi07, OD_Move08);
1120 GeoShapeSubtraction * OD_Tisemi08 =
new GeoShapeSubtraction(OD_Tibox5, mowe08);
1122 GeoTrf::Transform3D OD_Move09= GeoTrf::Translate3D(27*CLHEP::mm, (-8.183+OD_stagger[i])*CLHEP::mm, 0)*GeoTrf::RotateY3D(180*CLHEP::deg);
1123 GeoShapeShift * mowe09 =
new GeoShapeShift(OD_Tisemi07, OD_Move09);
1124 GeoShapeSubtraction * OD_Tisemi09 =
new GeoShapeSubtraction(OD_Tisemi08, mowe09);
1126 GeoTrf::Transform3D OD_Move11= GeoTrf::Translate3D(-27*CLHEP::mm, (-0.383+OD_stagger[i])*CLHEP::mm, 0);
1127 GeoShapeShift * mowe11 =
new GeoShapeShift(OD_Tisemi07, OD_Move11);
1128 GeoShapeSubtraction * OD_Tisemi11 =
new GeoShapeSubtraction(OD_Tibox5, mowe11);
1130 GeoTrf::Transform3D OD_Move12= GeoTrf::Translate3D(27*CLHEP::mm, (-0.383+OD_stagger[i])*CLHEP::mm, 0)*GeoTrf::RotateY3D(180*CLHEP::deg);
1131 GeoShapeShift * mowe12 =
new GeoShapeShift(OD_Tisemi07, OD_Move12);
1132 GeoShapeSubtraction * OD_Tisemi12 =
new GeoShapeSubtraction(OD_Tisemi11, mowe12);
1134 GeoTrf::Transform3D OD_Move14= GeoTrf::Translate3D(0*CLHEP::mm, 0*CLHEP::mm, 0.7*CLHEP::mm);
1135 GeoShapeShift * mowe14 =
new GeoShapeShift(OD_Tisemi09,OD_Move14);
1136 GeoShapeUnion * OD_Tisemi14 =
new GeoShapeUnion(OD_Tisemi02, mowe14);
1138 GeoTrf::Transform3D OD_Move15= GeoTrf::Translate3D(0*CLHEP::mm, 0*CLHEP::mm,-0.7*CLHEP::mm);
1139 GeoShapeShift * mowe15 =
new GeoShapeShift(OD_Tisemi12,OD_Move15);
1140 GeoShapeUnion * OD_Tisemi15 =
new GeoShapeUnion(OD_Tisemi14, mowe15);
1142 GeoTrf::Transform3D OD_Move16 = GeoTrf::Translate3D(0, -19.15*CLHEP::mm, 0);
1143 GeoShapeShift * mowe16 =
new GeoShapeShift(OD_Tibox3, OD_Move16);
1144 GeoShapeSubtraction * shapeOD_TiPlate =
new GeoShapeSubtraction(OD_Tisemi15, mowe16);
1146 pMapODPlates->insert(std::pair<int,GeoShape*>(i,shapeOD_TiPlate));
1149 return pMapODPlates;
1161 GeoBox* OD_Cladbox1 =
new GeoBox(4.*CLHEP::mm,3.75*CLHEP::mm,.25*CLHEP::mm);
1162 GeoBox* OD_Cladbox2 =
new GeoBox(3.75*CLHEP::mm,15*CLHEP::mm,.25*CLHEP::mm);
1164 GeoTube* OD_Cladtube1 =
new GeoTube(22.5*CLHEP::mm,30.0*CLHEP::mm,0.25*CLHEP::mm);
1165 GeoBox* OD_Cladbox3 =
new GeoBox(30*CLHEP::mm,50*CLHEP::mm,1*CLHEP::mm);
1166 GeoBox* OD_Cladbox4 =
new GeoBox(50*CLHEP::mm,30*CLHEP::mm,1*CLHEP::mm);
1168 GeoTrf::Transform3D OD_CladMove1 = GeoTrf::Translate3D(30*CLHEP::mm, 0*CLHEP::mm, 0*CLHEP::mm);
1169 GeoShapeShift * mowe1 =
new GeoShapeShift(OD_Cladbox3, OD_CladMove1);
1170 GeoShapeSubtraction * OD_Cladsemi1 =
new GeoShapeSubtraction(OD_Cladtube1, mowe1);
1172 GeoTrf::Transform3D OD_CladMove2 = GeoTrf::Translate3D(0*CLHEP::mm, 30*CLHEP::mm, 0*CLHEP::mm);
1173 GeoShapeShift * mowe2 =
new GeoShapeShift(OD_Cladbox4, OD_CladMove2);
1174 GeoShapeSubtraction * OD_Cladsemi2 =
new GeoShapeSubtraction(OD_Cladsemi1, mowe2);
1176 GeoTrf::Transform3D OD_CladMov3= GeoTrf::Translate3D(4*CLHEP::mm, -26.25*CLHEP::mm, 0);
1177 GeoShapeShift * mowe3 =
new GeoShapeShift(OD_Cladbox1, OD_CladMov3);
1178 GeoShapeUnion * OD_Cladsemi3 =
new GeoShapeUnion(OD_Cladsemi2, mowe3);
1180 GeoTrf::Transform3D OD_CladMov4= GeoTrf::Translate3D(-26.25*CLHEP::mm, 15*CLHEP::mm, 0);
1181 GeoShapeShift * mowe4 =
new GeoShapeShift(OD_Cladbox2, OD_CladMov4);
1182 GeoShapeUnion * shapeOD_Cladding =
new GeoShapeUnion(OD_Cladsemi3, mowe4);
1185 GeoLogVol* logOD_Cladding =
new GeoLogVol(
"logOD_Cladding", shapeOD_Cladding,
m_MapMaterials[
string(
"PMMA")]);
1187 GeoFullPhysVol* physOD_CladdingU_0=NULL;
1188 GeoFullPhysVol* physOD_CladdingU_1=NULL;
1189 GeoFullPhysVol* physOD_CladdingV_0=NULL;
1190 GeoFullPhysVol* physOD_CladdingV_1=NULL;
1198 physOD_CladdingU_0 =
new GeoFullPhysVol(logOD_Cladding);
1199 HepGeom::Transform3D TransODCladdingU0 = HepGeom::Translate3D(-27.*CLHEP::mm,(-0.858+OD_stagger[i])*CLHEP::mm,(14.3500000000+i*2)*CLHEP::mm);
1202 pPhysMotherVolume->add(pDetTransform);
1204 sprintf(szLabel,
"physODclad[%d][0][%d]",eRPName,i);
1205 pPhysMotherVolume->add(
new GeoNameTag(szLabel));
1206 pPhysMotherVolume->add(physOD_CladdingU_0);
1209 physOD_CladdingU_1 =
new GeoFullPhysVol(logOD_Cladding);
1210 HepGeom::Transform3D TransODCladdingU1 = HepGeom::Translate3D( 27.*CLHEP::mm,(-0.858+OD_stagger[i])*CLHEP::mm,(14.3500000000+i*2)*CLHEP::mm)*HepGeom::RotateY3D(-180*CLHEP::deg);
1213 pPhysMotherVolume->add(pDetTransform);
1215 sprintf(szLabel,
"physODclad[%d][1][%d]",eRPName,i);
1216 pPhysMotherVolume->add(
new GeoNameTag(szLabel));
1217 pPhysMotherVolume->add(physOD_CladdingU_1);
1220 physOD_CladdingV_0 =
new GeoFullPhysVol(logOD_Cladding);
1221 HepGeom::Transform3D TransODCladdingV0=HepGeom::Translate3D(-27.*CLHEP::mm,(-8.358+OD_stagger[i])*CLHEP::mm,(15.6500000000+i*2)*CLHEP::mm);
1224 pPhysMotherVolume->add(pDetTransform);
1226 sprintf(szLabel,
"physODclad[%d][2][%d]",eRPName,i);
1227 pPhysMotherVolume->add(
new GeoNameTag(szLabel));
1228 pPhysMotherVolume->add(physOD_CladdingV_0);
1231 physOD_CladdingV_1 =
new GeoFullPhysVol(logOD_Cladding);
1232 HepGeom::Transform3D TransODCladdingV1 = HepGeom::Translate3D( 27.*CLHEP::mm,(-8.358+OD_stagger[i])*CLHEP::mm,(15.6500000000+i*2)*CLHEP::mm)*HepGeom::RotateY3D(-180*CLHEP::deg);
1235 pPhysMotherVolume->add(pDetTransform);
1237 sprintf(szLabel,
"physODclad[%d][3][%d]",eRPName,i);
1238 pPhysMotherVolume->add(
new GeoNameTag(szLabel));
1239 pPhysMotherVolume->add(physOD_CladdingV_1);
1248 char szLabel[180]{};
1249 HepGeom::Transform3D TransODFiber;
1251 GeoBox* OD_Fiberbox1 =
new GeoBox(4.*CLHEP::mm,.24*CLHEP::mm,.24*CLHEP::mm);
1252 GeoBox* OD_Fiberbox2 =
new GeoBox(.24*CLHEP::mm,15*CLHEP::mm,.24*CLHEP::mm);
1253 GeoBox* OD_Fiberbox3 =
new GeoBox(30*CLHEP::mm,50*CLHEP::mm,1*CLHEP::mm);
1254 GeoBox* OD_Fiberbox4 =
new GeoBox(50*CLHEP::mm,30*CLHEP::mm,1*CLHEP::mm);
1257 GeoTube* OD_Fibertube1 =
new GeoTube((29.51-0.5*i)*CLHEP::mm,(29.99-0.5*i)*CLHEP::mm,0.24*CLHEP::mm);
1259 GeoTrf::Transform3D OD_FiberMove1 = GeoTrf::Translate3D(30*CLHEP::mm, 0*CLHEP::mm, 0*CLHEP::mm);
1260 GeoShapeShift * mowe1 =
new GeoShapeShift(OD_Fiberbox3, OD_FiberMove1);
1261 GeoShapeSubtraction * OD_Fibersemi1 =
new GeoShapeSubtraction(OD_Fibertube1, mowe1);
1263 GeoTrf::Transform3D OD_FiberMove2 = GeoTrf::Translate3D(0*CLHEP::mm, 30*CLHEP::mm, 0*CLHEP::mm);
1264 GeoShapeShift * mowe2 =
new GeoShapeShift(OD_Fiberbox4, OD_FiberMove2);
1265 GeoShapeSubtraction * OD_Fibersemi2 =
new GeoShapeSubtraction(OD_Fibersemi1, mowe2);
1267 GeoTrf::Transform3D OD_FiberMov4= GeoTrf::Translate3D((-29.75+0.5*i)*CLHEP::mm, 15*CLHEP::mm, 0);
1268 GeoShapeShift * mowe4 =
new GeoShapeShift(OD_Fiberbox2, OD_FiberMov4);
1269 GeoShapeUnion * shapeOD_Fiber =
new GeoShapeUnion(OD_Fibersemi2, mowe4);
1271 GeoLogVol* logOD_Fiber =
new GeoLogVol(
"logOD_Fiber", shapeOD_Fiber,
m_MapMaterials[
string(
"Polystyrene")]);
1272 GeoLogVol* logOD_FiberActive =
new GeoLogVol(
"logOD_FiberActive", OD_Fiberbox1,
m_MapMaterials[
string(
"Polystyrene")]);
1275 double fAngle = 0.0;
1281 sprintf(szLabel,
"ODFiberU0Active[%d][%d][%d]",eRPName,iODPlate+1,i+1);
1287 sprintf(szLabel,
"ODFiberV0Active[%d][%d][%d]",eRPName,iODPlate+1,i+1);
1290 TransODFiber=HepGeom::Translate3D(4*CLHEP::mm, fYPos, 0.0*CLHEP::mm)*HepGeom::RotateZ3D(fAngle);
1293 GeoPhysVol* physOD_FiberActive =
new GeoPhysVol(logOD_FiberActive);
1295 pMotherVolume->add(
new GeoNameTag(szLabel));
1296 pMotherVolume->add(physOD_FiberActive);
1299 HepGeom::Transform3D TransTotal=MotherTransform*TransODCladding*TransODFiber;
1300 HepGeom::Point3D<float> TransPoint=TransTotal*HepGeom::Point3D<float>(0.0,0.0,0.0);
1301 HepGeom::Vector3D<float> TransVector=TransTotal*HepGeom::Vector3D<float>(1.0,0.0,0.0);
1302 float fSlope=tan(TransVector.phi());
1342 if (eFType==
EFT_ODFIBERU0) sprintf(szLabel,
"ODFiberU0[%d][%d][%d]",eRPName,iODPlate+1,i+1);
1343 else if (eFType==
EFT_ODFIBERV0) sprintf(szLabel,
"ODFiberV0[%d][%d][%d]",eRPName,iODPlate+1,i+1);
1344 GeoPhysVol* physOD_Fiber =
new GeoPhysVol(logOD_Fiber);
1345 pMotherVolume->add(
new GeoTransform(GeoTrf::Translate3D(0*CLHEP::mm,0*CLHEP::mm,0*CLHEP::mm)));
1346 pMotherVolume->add(
new GeoNameTag(szLabel));
1347 pMotherVolume->add(physOD_Fiber);
1354 char szLabel[180]{};
1355 HepGeom::Transform3D TransODFiber;
1357 GeoBox* OD_Fiberbox1 =
new GeoBox(4.*CLHEP::mm,.24*CLHEP::mm,.24*CLHEP::mm);
1358 GeoBox* OD_Fiberbox2 =
new GeoBox(.24*CLHEP::mm,15*CLHEP::mm,.24*CLHEP::mm);
1359 GeoBox* OD_Fiberbox3 =
new GeoBox(30*CLHEP::mm,50*CLHEP::mm,1*CLHEP::mm);
1360 GeoBox* OD_Fiberbox4 =
new GeoBox(50*CLHEP::mm,30*CLHEP::mm,1*CLHEP::mm);
1363 GeoTube* OD_Fibertube1 =
new GeoTube((22.51+0.5*i)*CLHEP::mm,(22.99+0.5*i)*CLHEP::mm,0.24*CLHEP::mm);
1365 GeoTrf::Transform3D OD_FiberMove1 = GeoTrf::Translate3D(30*CLHEP::mm, 0*CLHEP::mm, 0*CLHEP::mm);
1366 GeoShapeShift * mowe1 =
new GeoShapeShift(OD_Fiberbox3, OD_FiberMove1);
1367 GeoShapeSubtraction * OD_Fibersemi1 =
new GeoShapeSubtraction(OD_Fibertube1, mowe1);
1369 GeoTrf::Transform3D OD_FiberMove2 = GeoTrf::Translate3D(0*CLHEP::mm, 30*CLHEP::mm, 0*CLHEP::mm);
1370 GeoShapeShift * mowe2 =
new GeoShapeShift(OD_Fiberbox4, OD_FiberMove2);
1371 GeoShapeSubtraction * OD_Fibersemi2 =
new GeoShapeSubtraction(OD_Fibersemi1, mowe2);
1373 GeoTrf::Transform3D OD_FiberMov4= GeoTrf::Translate3D((-22.75-0.5*i)*CLHEP::mm, 15*CLHEP::mm, 0);
1374 GeoShapeShift * mowe4 =
new GeoShapeShift(OD_Fiberbox2, OD_FiberMov4);
1375 GeoShapeUnion * shapeOD_Fiber =
new GeoShapeUnion(OD_Fibersemi2, mowe4);
1377 GeoLogVol* logOD_Fiber =
new GeoLogVol(
"logOD_Fiber", shapeOD_Fiber,
m_MapMaterials[
string(
"Polystyrene")]);
1378 GeoLogVol* logOD_FiberActive =
new GeoLogVol(
"logOD_FiberActive", OD_Fiberbox1,
m_MapMaterials[
string(
"Polystyrene")]);
1381 double fAngle = 0.0;
1390 sprintf(szLabel,
"ODFiberU1Active[%d][%d][%d]",eRPName,iODPlate+1,i+1);
1401 sprintf(szLabel,
"ODFiberV1Active[%d][%d][%d]",eRPName,iODPlate+1,i+1);
1404 TransODFiber=HepGeom::Translate3D(4*CLHEP::mm, fYPos, 0*CLHEP::mm)*HepGeom::RotateZ3D(fAngle);
1407 GeoPhysVol* physOD_FiberActive =
new GeoPhysVol(logOD_FiberActive);
1409 pMotherVolume->add(
new GeoNameTag(szLabel));
1410 pMotherVolume->add(physOD_FiberActive);
1413 HepGeom::Transform3D TransTotal=MotherTransform*TransODCladding*TransODFiber;
1414 HepGeom::Point3D<float> TransPoint=TransTotal*HepGeom::Point3D<float>(0.0,0.0,0.0);
1415 HepGeom::Vector3D<float> TransVector=TransTotal*HepGeom::Vector3D<float>(1.0,0.0,0.0);
1416 float fSlope=tan(TransVector.phi());
1432 if (eFType==
EFT_ODFIBERU1) sprintf(szLabel,
"ODFiberU1[%d][%d][%d]",eRPName,iODPlate+1,i+1);
1433 else if (eFType==
EFT_ODFIBERV1) sprintf(szLabel,
"ODFiberV1[%d][%d][%d]",eRPName,iODPlate+1,i+1);
1434 GeoPhysVol* physOD_Fiber =
new GeoPhysVol(logOD_Fiber);
1435 pMotherVolume->add(
new GeoTransform(GeoTrf::Translate3D(0*CLHEP::mm,0*CLHEP::mm,0*CLHEP::mm)));
1436 pMotherVolume->add(
new GeoNameTag(szLabel));
1437 pMotherVolume->add(physOD_Fiber);
1447 char strLabel[32]{};
1455 GeoBox *ALFA_Cladbox1, *ALFA_Cladbox2;
1456 GeoShapeSubtraction* shapeALFA_Clad;
1463 GeoShapeShift* mowe1;
1464 GeoLogVol* pLogCladdingU;
1472 m_pGeoReader->GetPlateParams(&PlateParams,eRPName,i+1);
1474 ALFA_Cladbox1 =
new GeoBox(PlateParams.
fUCladdingSizeX/2.0,16.0*CLHEP::mm,0.25*CLHEP::mm);
1475 ALFA_Cladbox2 =
new GeoBox(16.0*CLHEP::mm,16.0*CLHEP::mm,0.5*CLHEP::mm);
1480 GeoTrf::Transform3D Clad_Move1=GeoTrf::Translate3D(-17.415*CLHEP::mm, -17.415*CLHEP::mm, 0*CLHEP::mm)*GeoTrf::RotateZ3D(-45*CLHEP::deg);
1482 mowe1=
new GeoShapeShift(ALFA_Cladbox2,Clad_Move1);
1483 shapeALFA_Clad =
new GeoShapeSubtraction(ALFA_Cladbox1,mowe1);
1484 pLogCladdingU =
new GeoLogVol(
"logALFA_CladdingU",shapeALFA_Clad,
m_MapMaterials[
string(
"PMMA")]);
1486 sprintf(strLabel,
"ALFA_CladdingU[%d][%d]",eRPName,i);
1487 TransCladdingU[i]=HepGeom::Translate3D(ALFA_stagger[i]*CLHEP::mm,-20.897*CLHEP::mm, (-18+i*2)*CLHEP::mm)*HepGeom::RotateZ3D(+45.0*CLHEP::deg);
1489 physALFA_CladdingU[i] =
new GeoFullPhysVol(pLogCladdingU);
1490 pMotherVolume->add(
new GeoNameTag(strLabel));
1491 pMotherVolume->add(pDetTransform);
1493 pMotherVolume->add(physALFA_CladdingU[i]);
1500 GeoFullPhysVol* physiFibU;
1501 GeoLogVol* logALFA_FiberU;
1504 GeoBox* CladTrim =
new GeoBox(16.*CLHEP::mm,16.*CLHEP::mm,.5*CLHEP::mm);
1505 GeoBox* Fib1 =
new GeoBox(0.24*CLHEP::mm,16.*CLHEP::mm,.24*CLHEP::mm);
1510 HepGeom::Transform3D TransFiber;
1522 double fXPos=
m_pGeoReader->GetUFiberCentreXPos(eRPName, i+1, j+1);
1523 double fAngle=
m_pGeoReader->GetUFiberAngle(eRPName, i+1, j+1);
1524 double fDx=fXPos-(+15.75-0.5*(j))*CLHEP::mm;
1526 GeoTrf::Transform3D TrimMove=GeoTrf::Translate3D((-33.165+0.5*j)*CLHEP::mm-fDx, -17.415*CLHEP::mm, 0*CLHEP::mm)*GeoTrf::RotateZ3D(+45.0*CLHEP::deg);
1527 const GeoShapeShift* Sh6=
new GeoShapeShift(CladTrim,TrimMove);
1528 const GeoShapeSubtraction* solFibU=
new GeoShapeSubtraction(Fib1,Sh6);
1529 sprintf(strLabel,
"logALFA_FiberU[%d]",j+1);
1530 logALFA_FiberU=
new GeoLogVol(strLabel,solFibU,
m_MapMaterials[
string(
"Polystyrene")]);
1532 sprintf(strLabel,
"ALFA_FiberU[%d][%d][%d]",eRPName,i+1,j+1);
1533 TransFiber=HepGeom::Translate3D(fXPos, 0*CLHEP::mm, 0*CLHEP::mm)*HepGeom::RotateZ3D(-fAngle);
1534 physiFibU=
new GeoFullPhysVol(logALFA_FiberU);
1535 physALFA_CladdingU[i]->add(
new GeoNameTag(strLabel));
1537 physALFA_CladdingU[i]->add(physiFibU);
1540 HepGeom::Transform3D TransTotal=MotherTransform*TransCladdingU[i]*TransFiber;
1541 HepGeom::Point3D<float> TransPoint=TransTotal*HepGeom::Point3D<float>(0.0,0.0,0.0);
1542 HepGeom::Vector3D<float> TransVector=TransTotal*HepGeom::Vector3D<float>(0.0,1.0,0.0);
1543 float fSlope=tan(TransVector.phi());
1545 m_pGeoReader->SetUFiberPositionToMainReference(eRPName, i+1, j+1, TransPoint, fSlope);
1559 GeoShapeShift* mowe1;
1560 GeoBox *ALFA_Cladbox1, *ALFA_Cladbox2;
1561 GeoShapeSubtraction* shapeALFA_Clad;
1568 GeoLogVol* pLogCladdingV;
1577 m_pGeoReader->GetPlateParams(&PlateParams,eRPName,i+1);
1579 ALFA_Cladbox1 =
new GeoBox(PlateParams.
fVCladdingSizeX/2.0,16.*CLHEP::mm,.25*CLHEP::mm);
1580 ALFA_Cladbox2 =
new GeoBox(16.0*CLHEP::mm,16.0*CLHEP::mm,0.5*CLHEP::mm);
1585 GeoTrf::Transform3D Clad_Move1=GeoTrf::Translate3D(+17.415*CLHEP::mm, -17.415*CLHEP::mm, 0*CLHEP::mm)*GeoTrf::RotateZ3D(-45*CLHEP::deg);
1587 mowe1=
new GeoShapeShift(ALFA_Cladbox2,Clad_Move1);
1588 shapeALFA_Clad =
new GeoShapeSubtraction(ALFA_Cladbox1,mowe1);
1589 pLogCladdingV =
new GeoLogVol(
"logALFA_CladdingV",shapeALFA_Clad,
m_MapMaterials[
string(
"PMMA")]);
1591 sprintf(strLabel,
"ALFA_CladdingV[%d][%d]",eRPName,i);
1592 TransCladdingV[i]=HepGeom::Translate3D(ALFA_stagger[i]*CLHEP::mm,-20.897*CLHEP::mm, (-17+i*2)*CLHEP::mm)*HepGeom::RotateZ3D(-45.0*CLHEP::deg);
1594 physALFA_CladdingV[i] =
new GeoFullPhysVol(pLogCladdingV);
1595 pMotherVolume->add(
new GeoNameTag(strLabel));
1596 pMotherVolume->add(pDetTransform);
1598 pMotherVolume->add(physALFA_CladdingV[i]);
1602 GeoFullPhysVol* physiFibV;
1603 GeoLogVol* logALFA_FiberV;
1606 GeoBox* CladTrim =
new GeoBox(16.*CLHEP::mm,16.*CLHEP::mm,.5*CLHEP::mm);
1607 GeoBox* Fib1 =
new GeoBox(0.24*CLHEP::mm,16.*CLHEP::mm,.24*CLHEP::mm);
1612 HepGeom::Transform3D TransFiber;
1624 double fXPos=
m_pGeoReader->GetVFiberCentreXPos(eRPName, i+1, j+1);
1625 double fAngle=
m_pGeoReader->GetVFiberAngle(eRPName, i+1, j+1);
1626 double fDx=fXPos-(+15.75-0.5*(j))*CLHEP::mm;
1628 GeoTrf::Transform3D TrimMove=GeoTrf::Translate3D((1.665+0.5*j)*CLHEP::mm-fDx, -17.415*CLHEP::mm, 0*CLHEP::mm)*GeoTrf::RotateZ3D(+45.0*CLHEP::deg);
1629 const GeoShapeShift* Sh6=
new GeoShapeShift(CladTrim,TrimMove);
1630 const GeoShapeSubtraction* solFibV=
new GeoShapeSubtraction(Fib1,Sh6);
1631 sprintf(strLabel,
"logALFA_FiberV[%d]",j+1);
1632 logALFA_FiberV=
new GeoLogVol(strLabel,solFibV,
m_MapMaterials[
string(
"Polystyrene")]);
1634 sprintf(strLabel,
"ALFA_FiberV[%d][%d][%d]",eRPName,i+1,j+1);
1635 TransFiber=HepGeom::Translate3D(fXPos, 0*CLHEP::mm, 0*CLHEP::mm)*HepGeom::RotateZ3D(-fAngle);
1637 physiFibV=
new GeoFullPhysVol(logALFA_FiberV);
1638 physALFA_CladdingV[i]->add(
new GeoNameTag(strLabel));
1640 physALFA_CladdingV[i]->add(physiFibV);
1643 HepGeom::Transform3D TransTotal=MotherTransform*TransCladdingV[i]*TransFiber;
1645 HepGeom::Point3D<float> TransPoint=TransTotal*HepGeom::Point3D<float>(0.0,0.0,0.0);
1646 HepGeom::Vector3D<float> TransVector=TransTotal*HepGeom::Vector3D<float>(0.0,1.0,0.0);
1647 float fSlope=tan(TransVector.phi());
1648 m_pGeoReader->SetVFiberPositionToMainReference(eRPName, i+1, j+1, TransPoint, fSlope);
1710 MsgStream LogStream(
Athena::getMessageSvc(),
"ALFA_DetectorFactory::UserHepGeom::Transform3DInStation(eRPotName eRPName)");
1712 CLHEP::HepRep3x3 matRotation;
1718 structUserTransform.
fAngle =
m_Config.vecTransformInStationB7L1U[0];
1719 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInStationB7L1U[1],
m_Config.vecTransformInStationB7L1U[2],
m_Config.vecTransformInStationB7L1U[3]);
1723 structUserTransform.
fAngle =
m_Config.vecTransformInStationB7L1L[0];
1724 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInStationB7L1L[1],
m_Config.vecTransformInStationB7L1L[2],
m_Config.vecTransformInStationB7L1L[3]);
1728 structUserTransform.
fAngle =
m_Config.vecTransformInStationA7L1U[0];
1729 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInStationA7L1U[1],
m_Config.vecTransformInStationA7L1U[2],
m_Config.vecTransformInStationA7L1U[3]);
1733 structUserTransform.
fAngle =
m_Config.vecTransformInStationA7L1L[0];
1734 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInStationA7L1L[1],
m_Config.vecTransformInStationA7L1L[2],
m_Config.vecTransformInStationA7L1L[3]);
1738 structUserTransform.
fAngle =
m_Config.vecTransformInStationA7R1U[0];
1739 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInStationA7R1U[1],
m_Config.vecTransformInStationA7R1U[2],
m_Config.vecTransformInStationA7R1U[3]);
1743 structUserTransform.
fAngle =
m_Config.vecTransformInStationA7R1L[0];
1744 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInStationA7R1L[1],
m_Config.vecTransformInStationA7R1L[2],
m_Config.vecTransformInStationA7R1L[3]);
1748 structUserTransform.
fAngle =
m_Config.vecTransformInStationB7R1U[0];
1749 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInStationB7R1U[1],
m_Config.vecTransformInStationB7R1U[2],
m_Config.vecTransformInStationB7R1U[3]);
1753 structUserTransform.
fAngle =
m_Config.vecTransformInStationB7R1L[0];
1754 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInStationB7R1L[1],
m_Config.vecTransformInStationB7R1L[2],
m_Config.vecTransformInStationB7R1L[3]);
1758 LogStream << MSG::WARNING <<
"Unknown Roman pot, station transformation will be set to default (zero) values" <<
endmsg;
1759 structUserTransform.
fAngle = 0.0;
1760 structUserTransform.
vecRotation = CLHEP::Hep3Vector(0.0, 0.0, 0.0);
1761 structUserTransform.
vecTranslation = CLHEP::Hep3Vector(0.0, 0.0, 0.0);
1764 double fPhi = structUserTransform.
fAngle;
1766 CLHEP::Hep3Vector vRotation = CLHEP::Hep3Vector(structUserTransform.
vecRotation);
1767 CLHEP::Hep3Vector vTranslation = CLHEP::Hep3Vector(structUserTransform.
vecTranslation);
1769 matRotation.xx_ = vRotation.x()*vRotation.x()*(1 - cos(fPhi)) + cos(fPhi);
1770 matRotation.xy_ = vRotation.x()*vRotation.y()*(1 - cos(fPhi)) - vRotation.z()*sin(fPhi);
1771 matRotation.xz_ = vRotation.x()*vRotation.z()*(1 - cos(fPhi)) + vRotation.y()*sin(fPhi);
1773 matRotation.yx_ = vRotation.y()*vRotation.x()*(1 - cos(fPhi)) + vRotation.z()*sin(fPhi);
1774 matRotation.yy_ = vRotation.y()*vRotation.y()*(1 - cos(fPhi)) + cos(fPhi);
1775 matRotation.yz_ = vRotation.y()*vRotation.z()*(1 - cos(fPhi)) - vRotation.x()*sin(fPhi);
1777 matRotation.zx_ = vRotation.z()*vRotation.x()*(1 - cos(fPhi)) - vRotation.y()*sin(fPhi);
1778 matRotation.zy_ = vRotation.z()*vRotation.y()*(1 - cos(fPhi)) + vRotation.x()*sin(fPhi);
1779 matRotation.zz_ = vRotation.z()*vRotation.z()*(1 - cos(fPhi)) + cos(fPhi);
1781 return HepGeom::Transform3D(CLHEP::HepRotation(matRotation), vTranslation);
1786 MsgStream LogStream(
Athena::getMessageSvc(),
"ALFA_DetectorFactory::UserHepGeom::Transform3DInDetector(eRPotName eRPName)");
1788 CLHEP::HepRep3x3 matRotation;
1794 structUserTransform.
fAngle =
m_Config.vecTransformInDetectorB7L1U[0];
1795 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInDetectorB7L1U[1],
m_Config.vecTransformInDetectorB7L1U[2],
m_Config.vecTransformInDetectorB7L1U[3]);
1799 structUserTransform.
fAngle =
m_Config.vecTransformInDetectorB7L1L[0];
1800 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInDetectorB7L1L[1],
m_Config.vecTransformInDetectorB7L1L[2],
m_Config.vecTransformInDetectorB7L1L[3]);
1804 structUserTransform.
fAngle =
m_Config.vecTransformInDetectorA7L1U[0];
1805 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInDetectorA7L1U[1],
m_Config.vecTransformInDetectorA7L1U[2],
m_Config.vecTransformInDetectorA7L1U[3]);
1809 structUserTransform.
fAngle =
m_Config.vecTransformInDetectorA7L1L[0];
1810 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInDetectorA7L1L[1],
m_Config.vecTransformInDetectorA7L1L[2],
m_Config.vecTransformInDetectorA7L1L[3]);
1814 structUserTransform.
fAngle =
m_Config.vecTransformInDetectorA7R1U[0];
1815 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInDetectorA7R1U[1],
m_Config.vecTransformInDetectorA7R1U[2],
m_Config.vecTransformInDetectorA7R1U[3]);
1819 structUserTransform.
fAngle =
m_Config.vecTransformInDetectorA7R1L[0];
1820 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInDetectorA7R1L[1],
m_Config.vecTransformInDetectorA7R1L[2],
m_Config.vecTransformInDetectorA7R1L[3]);
1824 structUserTransform.
fAngle =
m_Config.vecTransformInDetectorB7R1U[0];
1825 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInDetectorB7R1U[1],
m_Config.vecTransformInDetectorB7R1U[2],
m_Config.vecTransformInDetectorB7R1U[3]);
1829 structUserTransform.
fAngle =
m_Config.vecTransformInDetectorB7R1L[0];
1830 structUserTransform.
vecRotation = CLHEP::Hep3Vector(
m_Config.vecTransformInDetectorB7R1L[1],
m_Config.vecTransformInDetectorB7R1L[2],
m_Config.vecTransformInDetectorB7R1L[3]);
1834 LogStream << MSG::WARNING <<
"Unknown Roman pot, detector transformation will be set to default (zero) values" <<
endmsg;
1835 structUserTransform.
fAngle = 0.0;
1836 structUserTransform.
vecRotation = CLHEP::Hep3Vector(0.0, 0.0, 0.0);
1837 structUserTransform.
vecTranslation = CLHEP::Hep3Vector(0.0, 0.0, 0.0);
1840 double fPhi = structUserTransform.
fAngle;
1842 CLHEP::Hep3Vector vRotation = CLHEP::Hep3Vector(structUserTransform.
vecRotation);
1843 CLHEP::Hep3Vector vTranslation = CLHEP::Hep3Vector(structUserTransform.
vecTranslation);
1845 matRotation.xx_ = vRotation.x()*vRotation.x()*(1 - cos(fPhi)) + cos(fPhi);
1846 matRotation.xy_ = vRotation.x()*vRotation.y()*(1 - cos(fPhi)) - vRotation.z()*sin(fPhi);
1847 matRotation.xz_ = vRotation.x()*vRotation.z()*(1 - cos(fPhi)) + vRotation.y()*sin(fPhi);
1849 matRotation.yx_ = vRotation.y()*vRotation.x()*(1 - cos(fPhi)) + vRotation.z()*sin(fPhi);
1850 matRotation.yy_ = vRotation.y()*vRotation.y()*(1 - cos(fPhi)) + cos(fPhi);
1851 matRotation.yz_ = vRotation.y()*vRotation.z()*(1 - cos(fPhi)) - vRotation.x()*sin(fPhi);
1853 matRotation.zx_ = vRotation.z()*vRotation.x()*(1 - cos(fPhi)) - vRotation.y()*sin(fPhi);
1854 matRotation.zy_ = vRotation.z()*vRotation.y()*(1 - cos(fPhi)) + vRotation.x()*sin(fPhi);
1855 matRotation.zz_ = vRotation.z()*vRotation.z()*(1 - cos(fPhi)) + cos(fPhi);
1857 return HepGeom::Transform3D(CLHEP::HepRotation(matRotation), vTranslation);
1862 MsgStream LogStream(
Athena::getMessageSvc(),
"ALFA_DetectorFactory::Point3DInDetector(eRPotName eRPName)");
1863 HepGeom::Point3D<double>
Point;
1868 Point = HepGeom::Point3D<double>(
m_Config.pointTransformInDetectorB7L1U[0],
m_Config.pointTransformInDetectorB7L1U[1],
m_Config.pointTransformInDetectorB7L1U[2]);
1871 Point = HepGeom::Point3D<double>(
m_Config.pointTransformInDetectorB7L1L[0],
m_Config.pointTransformInDetectorB7L1L[1],
m_Config.pointTransformInDetectorB7L1L[2]);
1874 Point = HepGeom::Point3D<double>(
m_Config.pointTransformInDetectorA7L1U[0],
m_Config.pointTransformInDetectorA7L1U[1],
m_Config.pointTransformInDetectorA7L1U[2]);
1877 Point = HepGeom::Point3D<double>(
m_Config.pointTransformInDetectorA7L1L[0],
m_Config.pointTransformInDetectorA7L1L[1],
m_Config.pointTransformInDetectorA7L1L[2]);
1880 Point = HepGeom::Point3D<double>(
m_Config.pointTransformInDetectorA7R1U[0],
m_Config.pointTransformInDetectorA7R1U[1],
m_Config.pointTransformInDetectorA7R1U[2]);
1883 Point = HepGeom::Point3D<double>(
m_Config.pointTransformInDetectorA7R1L[0],
m_Config.pointTransformInDetectorA7R1L[1],
m_Config.pointTransformInDetectorA7R1L[2]);
1886 Point = HepGeom::Point3D<double>(
m_Config.pointTransformInDetectorB7R1U[0],
m_Config.pointTransformInDetectorB7R1U[1],
m_Config.pointTransformInDetectorB7R1U[2]);
1889 Point = HepGeom::Point3D<double>(
m_Config.pointTransformInDetectorB7R1L[0],
m_Config.pointTransformInDetectorB7R1L[1],
m_Config.pointTransformInDetectorB7R1L[2]);
1892 LogStream << MSG::WARNING <<
"Unknown Roman pot, transformation point will be set to default (zero) value" <<
endmsg;