5 #include "GeoModelKernel/GeoMaterial.h"   
    7 #include "GeoModelKernel/GeoBox.h" 
    8 #include "GeoModelKernel/GeoTube.h" 
    9 #include "GeoModelKernel/GeoTrd.h" 
   10 #include "GeoModelKernel/GeoShape.h" 
   11 #include "GeoModelKernel/GeoShapeUnion.h"  
   12 #include "GeoModelKernel/GeoShapeShift.h" 
   13 #include "GeoModelKernel/GeoShapeSubtraction.h" 
   14 #include "GeoModelKernel/GeoLogVol.h"   
   15 #include "GeoModelKernel/GeoNameTag.h"   
   16 #include "GeoModelKernel/GeoDefinitions.h" 
   18 #include "GeoModelKernel/GeoPhysVol.h"  
   19 #include "GeoModelKernel/GeoFullPhysVol.h" 
   20 #include "GeoModelKernel/GeoTransform.h" 
   28 #include "GaudiKernel/MsgStream.h" 
   48 const double ALFA_stagger[10] = {0.0, 0.283, -0.141, 0.141, -0.283, 0.354, -0.071, 0.212, -0.212, 0.071};
 
   49 const double OD_stagger[3] = {0.0, -0.167, -0.334};
 
   52 #define BEAMPIPEINNERRADIUS (0.5*80.0*CLHEP::mm) 
   53 #define BEAMPIPEOUTERRADIUS (0.5*84.0*CLHEP::mm) 
   57     GeometryConfig.clear();
 
   59     bConstructBeampipe=
false;
 
   62     bIsTransformInStation.assign(8, 
false);
 
   63     bIsTransformInDetector.assign(8, 
false);
 
   65     pointTransformInDetectorB7L1U.assign(3, 0.0);
 
   66     pointTransformInDetectorB7L1L.assign(3, 0.0);
 
   67     pointTransformInDetectorA7L1U.assign(3, 0.0);
 
   68     pointTransformInDetectorA7L1L.assign(3, 0.0);
 
   69     pointTransformInDetectorB7R1U.assign(3, 0.0);
 
   70     pointTransformInDetectorB7R1L.assign(3, 0.0);
 
   71     pointTransformInDetectorA7R1U.assign(3, 0.0);
 
   72     pointTransformInDetectorA7R1L.assign(3, 0.0);
 
   74     vecTransformInDetectorB7L1U.assign(7, 0.0);
 
   75     vecTransformInDetectorB7L1L.assign(7, 0.0);
 
   76     vecTransformInDetectorA7L1U.assign(7, 0.0);
 
   77     vecTransformInDetectorA7L1L.assign(7, 0.0);
 
   78     vecTransformInDetectorB7R1U.assign(7, 0.0);
 
   79     vecTransformInDetectorB7R1L.assign(7, 0.0);
 
   80     vecTransformInDetectorA7R1U.assign(7, 0.0);
 
   81     vecTransformInDetectorA7R1L.assign(7, 0.0);
 
   83     vecTransformInStationB7L1U.assign(7, 0.0);
 
   84     vecTransformInStationB7L1L.assign(7, 0.0);
 
   85     vecTransformInStationA7L1U.assign(7, 0.0);
 
   86     vecTransformInStationA7L1L.assign(7, 0.0);
 
   87     vecTransformInStationB7R1U.assign(7, 0.0);
 
   88     vecTransformInStationB7R1L.assign(7, 0.0);
 
   89     vecTransformInStationA7R1U.assign(7, 0.0);
 
   90     vecTransformInStationA7R1L.assign(7, 0.0);
 
   94   :m_pDetectorManager(NULL),
 
   95    m_pDetectorStore(pDetStore),
 
   96    m_pIRDBAccess(pAccess),
 
   97    m_eRequestedMetrologyType((
eMetrologyType)(pConfig->GeometryConfig.eRPMetrologyGeoType)),
 
  113     list<eRPotName>::const_iterator iterRPName;
 
  145         throw GaudiException(
" Could not load geometry ", 
"ALFA_DetectorFactory::ReadGeometry", StatusCode::FAILURE);
 
  170                         strcpy(szPrefix,
"ideal");
 
  173                         strcpy(szPrefix,
"real");
 
  176                         strcpy(szPrefix,
"realdb");
 
  182                 sprintf(szFilename,
"%sgeometry_MD_RP-%s.txt",szPrefix,
m_pGeoReader->GetRPotLabel(eRPName));
 
  184                 LogStream<<
MSG::INFO<<
"The MD fiber geometry was stored in the "<<szFilename<<
" file"<<
endmsg;
 
  195                         strcpy(szPrefix,
"ideal");
 
  198                         strcpy(szPrefix,
"real");
 
  201                         strcpy(szPrefix,
"realdb");
 
  207                 sprintf(szFilename,
"%sgeometry_OD_RP-%s.txt",szPrefix,
m_pGeoReader->GetRPotLabel(eRPName));
 
  209                 LogStream<<
MSG::INFO<<
"The OD fiber geometry was stored in the "<<szFilename<<
" file"<<
endmsg;
 
  217         sprintf(szFilename,
"geometryinfo_MD_RP-%s.txt",
m_pGeoReader->GetRPotLabel(eRPName));
 
  218         m_pGeoReader->SaveRPGeometryParams(eRPName, szFilename);
 
  219         LogStream<<
MSG::INFO<<
"RP geometry info was stored in the "<<szFilename<<
" file"<<
endmsg;
 
  226     GeoMaterial* pMaterial;
 
  230     double aH,aB,aC,aN,aO,aNa,aMg,aAl,aSi,aP,aS,aK,aCa,aTi,aCr,aMn,aFe,aNi,aMo,Atot;
 
  232     const GeoElement* 
H  = pMaterialManager->
getElement(
"Hydrogen");
 
  233     const GeoElement* 
B  = pMaterialManager->
getElement(
"Boron");
 
  234     const GeoElement* 
C  = pMaterialManager->
getElement(
"Carbon");
 
  235     const GeoElement* 
N  = pMaterialManager->
getElement(
"Nitrogen");
 
  236     const GeoElement* O  = pMaterialManager->
getElement(
"Oxygen");
 
  237     const GeoElement* Na = pMaterialManager->
getElement(
"Sodium");
 
  238     const GeoElement* Mg = pMaterialManager->
getElement(
"Magnesium");
 
  239     const GeoElement* Al = pMaterialManager->
getElement(
"Aluminium");
 
  240     const GeoElement* Si = pMaterialManager->
getElement(
"Silicon");
 
  241     const GeoElement* 
P  = pMaterialManager->
getElement(
"Phosphorus");
 
  242     const GeoElement* 
S  = pMaterialManager->
getElement(
"Sulfur");
 
  243     const GeoElement* K  = pMaterialManager->
getElement(
"Potassium");
 
  244     const GeoElement* Ca = pMaterialManager->
getElement(
"Calcium");
 
  245     const GeoElement* Ti = pMaterialManager->
getElement(
"Titanium");
 
  246     const GeoElement* Cr = pMaterialManager->
getElement(
"Chromium");
 
  247     const GeoElement* Mn = pMaterialManager->
getElement(
"Manganese");
 
  248     const GeoElement* Fe = pMaterialManager->
getElement(
"Iron");
 
  249     const GeoElement* Ni = pMaterialManager->
getElement(
"Nickel");
 
  250     const GeoElement* Mo = pMaterialManager->
getElement(
"Molybdenum");
 
  266     Atot=aFe+aC+aMn+aSi+aP+aS+aCr+aMo+aNi+aN;
 
  268     pMaterial->add(
const_cast<GeoElement*
> (Fe),aFe/Atot);
 
  269     pMaterial->add(
const_cast<GeoElement*
> (
C),  aC/Atot);
 
  270     pMaterial->add(
const_cast<GeoElement*
> (Mn),aMn/Atot);
 
  271     pMaterial->add(
const_cast<GeoElement*
> (Si),aSi/Atot);
 
  272     pMaterial->add(
const_cast<GeoElement*
> (
P),  aP/Atot);
 
  273     pMaterial->add(
const_cast<GeoElement*
> (
S),  aS/Atot);
 
  274     pMaterial->add(
const_cast<GeoElement*
> (Cr),aCr/Atot);
 
  275     pMaterial->add(
const_cast<GeoElement*
> (Mo),aMo/Atot);
 
  276     pMaterial->add(
const_cast<GeoElement*
> (Ni),aNi/Atot);
 
  277     pMaterial->add(
const_cast<GeoElement*
> (
N),  aN/Atot);
 
  279     m_MapMaterials.insert(pair<string,GeoMaterial*>(MatName,pMaterial));
 
  286     pMaterial->add(
const_cast<GeoElement*
> (Ti), 1);
 
  288     m_MapMaterials.insert(pair<string,GeoMaterial*>(MatName,pMaterial));
 
  298     pMaterial->add(
const_cast<GeoElement*
> (
H), aH/Atot);
 
  299     pMaterial->add(
const_cast<GeoElement*
> (
C), aC/Atot);
 
  301     m_MapMaterials.insert(pair<string,GeoMaterial*>(MatName,pMaterial));
 
  323     Atot=aH+aB+aC+aN+aO+aNa+aMg+aAl+aSi+aP+aK+aCa+aTi+aFe;
 
  325     pMaterial->add(
const_cast<GeoElement*
> (
H), aH/Atot);
 
  326     pMaterial->add(
const_cast<GeoElement*
> (
B), aB/Atot);
 
  327     pMaterial->add(
const_cast<GeoElement*
> (
C), aC/Atot);
 
  328     pMaterial->add(
const_cast<GeoElement*
> (
N), aN/Atot);
 
  329     pMaterial->add(
const_cast<GeoElement*
> (O), aO/Atot);
 
  330     pMaterial->add(
const_cast<GeoElement*
> (Na),aNa/Atot);
 
  331     pMaterial->add(
const_cast<GeoElement*
> (Mg),aMg/Atot);
 
  332     pMaterial->add(
const_cast<GeoElement*
> (Al),aAl/Atot);
 
  333     pMaterial->add(
const_cast<GeoElement*
> (Si),aSi/Atot);
 
  334     pMaterial->add(
const_cast<GeoElement*
> (
P), aP/Atot);
 
  335     pMaterial->add(
const_cast<GeoElement*
> (K), aK/Atot);
 
  336     pMaterial->add(
const_cast<GeoElement*
> (Ca),aCa/Atot);
 
  337     pMaterial->add(
const_cast<GeoElement*
> (Ti),aTi/Atot);
 
  338     pMaterial->add(
const_cast<GeoElement*
> (Fe),aFe/Atot);
 
  340     m_MapMaterials.insert(pair<string,GeoMaterial*>(MatName,pMaterial));
 
  343     MatName=
"Polystyrene";
 
  350     pMaterial->add(
const_cast<GeoElement*
> (
H), aH/Atot);
 
  351     pMaterial->add(
const_cast<GeoElement*
> (
C), aC/Atot);
 
  353     m_MapMaterials.insert(pair<string,GeoMaterial*>(MatName,pMaterial));
 
  364     pMaterial->add(
const_cast<GeoElement*
> (
H), aH/Atot);
 
  365     pMaterial->add(
const_cast<GeoElement*
> (
C), aC/Atot);
 
  366     pMaterial->add(
const_cast<GeoElement*
> (O), aO/Atot);
 
  368     m_MapMaterials.insert(pair<string,GeoMaterial*>(MatName,pMaterial));
 
  375     MatName=
"std::Vacuum";
 
  386     GeoLogVol* pLogBoxX=
new GeoLogVol(
"BoxX",pSolBoxX,
m_MapMaterials[
string(
"PMMA")]);
 
  387     GeoLogVol* pLogBoxY=
new GeoLogVol(
"BoxY",pSolBoxY,
m_MapMaterials[
string(
"PMMA")]);
 
  388     GeoLogVol* pLogBoxZ=
new GeoLogVol(
"BoxZ",pSolBoxZ,
m_MapMaterials[
string(
"PMMA")]);
 
  390     GeoFullPhysVol* pPhysBoxX=
new GeoFullPhysVol(pLogBoxX);
 
  391     GeoFullPhysVol* pPhysBoxY=
new GeoFullPhysVol(pLogBoxY);
 
  392     GeoFullPhysVol* pPhysBoxZ=
new GeoFullPhysVol(pLogBoxZ);
 
  394     pMotherVolume->add(
new GeoNameTag(
"BoxX"));
 
  395     pMotherVolume->add(
new GeoTransform(GeoTrf::Transform3D::Identity()));
 
  396     pMotherVolume->add(pPhysBoxX);
 
  398     pMotherVolume->add(
new GeoNameTag(
"BoxY"));
 
  399     pMotherVolume->add(
new GeoTransform(GeoTrf::Transform3D::Identity()));
 
  400     pMotherVolume->add(pPhysBoxY);
 
  402     pMotherVolume->add(
new GeoNameTag(
"BoxZ"));
 
  403     pMotherVolume->add(
new GeoTransform(GeoTrf::Transform3D::Identity()));
 
  404     pMotherVolume->add(pPhysBoxZ);
 
  422     double fZLength=0.5*(fzs-fzd);
 
  423     double fZPos=0.5*fzd+0.5*fZLength;
 
  425     sprintf(szLabel,
"%s_LogIBP",pszStationLabel);
 
  427     GeoLogVol* pLogTube=
new GeoLogVol(szLabel,pTube,
m_MapMaterials[
string(
"Steel")]);
 
  428     GeoFullPhysVol* pPhysTube=
new GeoFullPhysVol(pLogTube);
 
  430     sprintf(szLabel,
"%s_IBP01",pszStationLabel);
 
  431     pPhysStation->add(
new GeoNameTag(szLabel));
 
  432     pPhysStation->add(
new GeoTransform(GeoTrf::TranslateZ3D(fZPos)));
 
  433     pPhysStation->add(pPhysTube);
 
  435     sprintf(szLabel,
"%s_IBP02",pszStationLabel);
 
  436     pPhysStation->add(
new GeoNameTag(szLabel));
 
  437     pPhysStation->add(
new GeoTransform(GeoTrf::TranslateZ3D(-fZPos)));
 
  438     pPhysStation->add(pPhysTube);
 
  449     sprintf(szLabel,
"%s_GVS",
m_pGeoReader->GetAStationLabel(eStatName));
 
  452     GeoLogVol* pLogGVS=
new GeoLogVol(szLabel,pSolGVS,
m_MapMaterials[
string(
"std::Vacuum")]);
 
  453     GeoFullPhysVol* pPhysGVS=
new GeoFullPhysVol(pLogGVS);
 
  455     GeoTrf::TranslateZ3D TransGVS(fZOffset);
 
  456     pPhysStation->add(
new GeoNameTag(szLabel));
 
  457     pPhysStation->add(
new GeoTransform(TransGVS));
 
  458     pPhysStation->add(pPhysGVS);
 
  470     GeoFullPhysVol* pPhysAlfaBox=NULL;
 
  473     GeoLogVol* pLogAlfaBox=
new GeoLogVol(
"ALFA",pSolidAlfaBox,
m_MapMaterials[
string(
"std::Vacuum")]);
 
  477     m_pGeoReader->GetASPosParams(&AStationParams,eAStation);
 
  478     sprintf(szLabel,
"ALFA_%s",AStationParams.
szLabel);
 
  480     pPhysAlfaBox=
new GeoFullPhysVol(pLogAlfaBox);
 
  482     pWorld->add(
new GeoNameTag(szLabel));
 
  484     pWorld->add(pPhysAlfaBox);
 
  491     pmapActiveStations->insert(pair<eAStationName,ALFAPHYSVOLUME>(eAStation,APhysVolume));
 
  495     m_pGeoReader->GetASPosParams(&AStationParams,eAStation);
 
  496     sprintf(szLabel,
"ALFA_%s",AStationParams.
szLabel);
 
  498     pPhysAlfaBox=
new GeoFullPhysVol(pLogAlfaBox);
 
  500     pWorld->add(
new GeoNameTag(szLabel));
 
  502     pWorld->add(pPhysAlfaBox);
 
  509     pmapActiveStations->insert(pair<eAStationName,ALFAPHYSVOLUME>(eAStation,APhysVolume));
 
  513     m_pGeoReader->GetASPosParams(&AStationParams,eAStation);
 
  514     sprintf(szLabel,
"ALFA_%s",AStationParams.
szLabel);
 
  516     pPhysAlfaBox=
new GeoFullPhysVol(pLogAlfaBox);
 
  518     pWorld->add(
new GeoNameTag(szLabel));
 
  520     pWorld->add(pPhysAlfaBox);
 
  527     pmapActiveStations->insert(pair<eAStationName,ALFAPHYSVOLUME>(eAStation,APhysVolume));
 
  531     m_pGeoReader->GetASPosParams(&AStationParams,eAStation);
 
  532     sprintf(szLabel,
"ALFA_%s",AStationParams.
szLabel);
 
  534     pPhysAlfaBox=
new GeoFullPhysVol(pLogAlfaBox);
 
  536     pWorld->add(
new GeoNameTag(szLabel));
 
  538     pWorld->add(pPhysAlfaBox);
 
  545     pmapActiveStations->insert(pair<eAStationName,ALFAPHYSVOLUME>(eAStation,APhysVolume));
 
  550     char szLabel[32]{}, szLabel2[32]{};
 
  551     double fInnerTubeHLength;
 
  552     GeoTube* pTube, *pTube2;
 
  553     GeoLogVol* pLogTube, *pLogTube2;
 
  554     GeoFullPhysVol* pPhysTube, *pPhysTube2;
 
  560     strcpy(szLabel,
"ALFA_Beampipe01");
 
  561     strcpy(szLabel2,
"ALFA_Beampipe01Fill");
 
  565     pLogTube=
new GeoLogVol(szLabel,pTube,
m_MapMaterials[
string(
"Steel")]);
 
  566     pLogTube2=
new GeoLogVol(szLabel2,pTube2,
m_MapMaterials[
string(
"std::Vacuum")]);
 
  567     pPhysTube=
new GeoFullPhysVol(pLogTube);
 
  568     pPhysTube2=
new GeoFullPhysVol(pLogTube2);
 
  571     pWorld->add(
new GeoNameTag(szLabel));
 
  573     pWorld->add(pPhysTube);
 
  575     pWorld->add(
new GeoNameTag(szLabel2));
 
  577     pWorld->add(pPhysTube2);
 
  581     strcpy(szLabel,
"ALFA_Beampipe02");
 
  582     strcpy(szLabel2,
"ALFA_Beampipe02Fill");
 
  588     pLogTube=
new GeoLogVol(szLabel,pTube,
m_MapMaterials[
string(
"Steel")]);
 
  589     pLogTube2=
new GeoLogVol(szLabel2,pTube2,
m_MapMaterials[
string(
"std::Vacuum")]);
 
  590     pPhysTube=
new GeoFullPhysVol(pLogTube);
 
  591     pPhysTube2=
new GeoFullPhysVol(pLogTube2);
 
  594     pWorld->add(
new GeoNameTag(szLabel));
 
  596     pWorld->add(pPhysTube);
 
  598     pWorld->add(
new GeoNameTag(szLabel2));
 
  600     pWorld->add(pPhysTube2);
 
  604     strcpy(szLabel,
"ALFA_Beampipe03");
 
  605     strcpy(szLabel2,
"ALFA_Beampipe03Fill");
 
  609     pLogTube=
new GeoLogVol(szLabel,pTube,
m_MapMaterials[
string(
"Steel")]);
 
  610     pLogTube2=
new GeoLogVol(szLabel2,pTube2,
m_MapMaterials[
string(
"std::Vacuum")]);
 
  611     pPhysTube=
new GeoFullPhysVol(pLogTube);
 
  612     pPhysTube2=
new GeoFullPhysVol(pLogTube2);
 
  615     pWorld->add(
new GeoNameTag(szLabel));
 
  617     pWorld->add(pPhysTube);
 
  619     pWorld->add(
new GeoNameTag(szLabel2));
 
  621     pWorld->add(pPhysTube2);
 
  625     strcpy(szLabel,
"ALFA_Beampipe04");
 
  626     strcpy(szLabel2,
"ALFA_Beampipe04Fill");
 
  630     pLogTube=
new GeoLogVol(szLabel,pTube,
m_MapMaterials[
string(
"Steel")]);
 
  631     pLogTube2=
new GeoLogVol(szLabel2,pTube2,
m_MapMaterials[
string(
"std::Vacuum")]);
 
  632     pPhysTube=
new GeoFullPhysVol(pLogTube);
 
  633     pPhysTube2=
new GeoFullPhysVol(pLogTube2);
 
  636     pWorld->add(
new GeoNameTag(szLabel));
 
  638     pWorld->add(pPhysTube);
 
  640     pWorld->add(
new GeoNameTag(szLabel2));
 
  642     pWorld->add(pPhysTube2);
 
  646     strcpy(szLabel,
"ALFA_Beampipe05");
 
  647     strcpy(szLabel2,
"ALFA_Beampipe05Fill");
 
  653     pLogTube=
new GeoLogVol(szLabel,pTube,
m_MapMaterials[
string(
"Steel")]);
 
  654     pLogTube2=
new GeoLogVol(szLabel2,pTube2,
m_MapMaterials[
string(
"std::Vacuum")]);
 
  655     pPhysTube=
new GeoFullPhysVol(pLogTube);
 
  656     pPhysTube2=
new GeoFullPhysVol(pLogTube2);
 
  659     pWorld->add(
new GeoNameTag(szLabel));
 
  661     pWorld->add(pPhysTube);
 
  663     pWorld->add(
new GeoNameTag(szLabel2));
 
  665     pWorld->add(pPhysTube2);
 
  669     strcpy(szLabel,
"ALFA_Beampipe06");
 
  670     strcpy(szLabel2,
"ALFA_Beampipe06Fill");
 
  674     pLogTube=
new GeoLogVol(szLabel,pTube,
m_MapMaterials[
string(
"Steel")]);
 
  675     pLogTube2=
new GeoLogVol(szLabel2,pTube2,
m_MapMaterials[
string(
"std::Vacuum")]);
 
  676     pPhysTube=
new GeoFullPhysVol(pLogTube);
 
  677     pPhysTube2=
new GeoFullPhysVol(pLogTube2);
 
  680     pWorld->add(
new GeoNameTag(szLabel));
 
  682     pWorld->add(pPhysTube);
 
  684     pWorld->add(
new GeoNameTag(szLabel2));
 
  686     pWorld->add(pPhysTube2);
 
  704     if (
m_pDetectorStore->retrieve(pMaterialManager, std::string(
"MATERIALS"))!=StatusCode::SUCCESS){
 
  736     GeoLogVol* pLogRPBox=NULL;
 
  737     GeoLogVol* pLogRPAir=NULL;
 
  738     GeoFullPhysVol* pPhysAlfaBox=NULL;
 
  739     GeoFullPhysVol* pPhysRPBox=NULL;
 
  740     GeoFullPhysVol* pPhysRPAir=NULL;
 
  741     HepGeom::Translate3D ObjTranslate;
 
  742     HepGeom::Rotate3D ObjRotate;
 
  744     GeoLogVol* pLogObj=NULL;
 
  745     GeoFullPhysVol* pPhysObj=NULL;
 
  751     GeoAlignableTransform* pAlTransRPBox;
 
  752     GeoAlignableTransform* pAlTransDetInRPMainPoint;
 
  756     map<eAStationName,ALFAPHYSVOLUME> mapActiveStations;
 
  765         pPhysAlfaBox=mapActiveStations[RPosParams.
eASName].pPhysVolume;
 
  766         TransAlfaBox=mapActiveStations[RPosParams.
eASName].Transform;
 
  772         sprintf(szLabel,
"LogRPBox[%02d]",eRPName);
 
  773         pLogRPBox=
new GeoLogVol(szLabel,pSolidRP,
m_MapMaterials[
string(
"Steel")]);
 
  774         pPhysRPBox=
new GeoFullPhysVol(pLogRPBox);
 
  776         sprintf(szLabel,
"RPBox[%02d]",eRPName);
 
  777         pPhysAlfaBox->add(
new GeoNameTag(szLabel));
 
  778         pPhysAlfaBox->add(pAlTransRPBox);
 
  779         pPhysAlfaBox->add(pPhysRPBox);
 
  783         sprintf(szLabel,
"LogRPAir[%02d]",eRPName);
 
  784         pLogRPAir=
new GeoLogVol(szLabel,pSolidAir,
m_MapMaterials[
string(
"std::Vacuum")]);
 
  785         pPhysRPAir=
new GeoFullPhysVol(pLogRPAir);
 
  787         sprintf(szLabel,
"RPAir[%02d]",eRPName);
 
  788         TransRPAir=HepGeom::Translate3D(0.0,0.0,0.0);
 
  789         pPhysRPBox->add(
new GeoNameTag(szLabel));
 
  791         pPhysRPBox->add(pPhysRPAir);
 
  795         sprintf(szLabel,
"LogTrigger[%02d]",eRPName);
 
  796         pLogObj=
new GeoLogVol(szLabel,pSolidTrigger,
m_MapMaterials[
string(
"PVT")]);
 
  797         pPhysObj=
new GeoFullPhysVol(pLogObj);
 
  798         sprintf(szLabel,
"Trigger[%02d]",eRPName);
 
  799         pPhysRPAir->add(
new GeoNameTag(szLabel));
 
  800         pPhysRPAir->add(pAlTransDetInRPMainPoint);
 
  802         pPhysRPAir->add(pPhysObj);
 
  806         sprintf(szLabel,
"LogRPSupport[%02d]",eRPName);
 
  807         pLogObj=
new GeoLogVol(szLabel,pSolidRPSupport,
m_MapMaterials[
string(
"Steel")]);
 
  808         pPhysObj=
new GeoFullPhysVol(pLogObj);
 
  809         sprintf(szLabel,
"RPSupport[%02d]",eRPName);
 
  810         pPhysRPAir->add(
new GeoNameTag(szLabel));
 
  811         pPhysRPAir->add(pAlTransDetInRPMainPoint);
 
  813         pPhysRPAir->add(pPhysObj);
 
  817         sprintf(szLabel,
"LogG10Substrate[%02d]",eRPName);
 
  818         pLogObj=
new GeoLogVol(szLabel,pSolidG10Shapes,
m_MapMaterials[
string(
"PMMA")]);
 
  820             pPhysObj=
new GeoFullPhysVol(pLogObj);
 
  821             sprintf(szLabel,
"G10Substrate[%02d][%d]",eRPName,
i);
 
  822             pPhysRPAir->add(
new GeoNameTag(szLabel));
 
  823             pPhysRPAir->add(pAlTransDetInRPMainPoint);
 
  825             pPhysRPAir->add(pPhysObj);
 
  830             sprintf(szLabel,
"LogRPSupport[%02d][%d]",eRPName,
i);
 
  831             pLogObj=
new GeoLogVol(szLabel,(*pMapSolidTiPlates)[
i],
m_MapMaterials[
string(
"Titanium")]);
 
  832             pPhysObj=
new GeoFullPhysVol(pLogObj);
 
  833             sprintf(szLabel,
"RPSupport[%02d][%d]",eRPName,
i);
 
  834             pPhysRPAir->add(
new GeoNameTag(szLabel));
 
  835             pPhysRPAir->add(pAlTransDetInRPMainPoint);
 
  837             pPhysRPAir->add(pPhysObj);
 
  850             sprintf(szLabel,
"LogODPlate[%02d][%d]",eRPName,
i);
 
  851             pLogObj=
new GeoLogVol(szLabel,(*pMapSolidOdPlates)[
i],
m_MapMaterials[
string(
"Titanium")]);
 
  852             pPhysObj=
new GeoFullPhysVol(pLogObj);
 
  853             sprintf(szLabel,
"ODPlate[%02d][%d]",eRPName,
i);
 
  854             pPhysRPAir->add(
new GeoNameTag(szLabel));
 
  855             pPhysRPAir->add(pAlTransDetInRPMainPoint);
 
  857             pPhysRPAir->add(pPhysObj);
 
  866         sprintf(szLabel,
"StRPBox[%02d]",eRPName);
 
  869         if(!
sc.isSuccess()) 
throw std::runtime_error(
"Cannot store alignable record");
 
  871         sprintf(szLabel,
"AlTransRPBox[%02d]",eRPName);
 
  874         if(!
sc.isSuccess()) 
throw std::runtime_error(
"Cannot store alignable record");
 
  876         sprintf(szLabel,
"AlTransDetInRPMainPoint[%02d]",eRPName);
 
  879         if(!
sc.isSuccess()) 
throw std::runtime_error(
"Cannot store alignable record");
 
  889     if(pMapSolidOdPlates) 
delete pMapSolidOdPlates;
 
  890     if(pMapSolidTiPlates) 
delete pMapSolidTiPlates;
 
  903     GeoShapeShift * mowe1 = 
new GeoShapeShift(RPbox3,RP_Move1);
 
  904     GeoShapeUnion * RPsemi1 = 
new GeoShapeUnion(RPbox2, mowe1);
 
  907     GeoShapeShift * mowe2 = 
new GeoShapeShift(RPsemi1,RP_Move2);
 
  908     GeoShapeUnion * RPsemi2 = 
new GeoShapeUnion(RPbox1, mowe2);
 
  911     GeoShapeShift * mowe3 = 
new GeoShapeShift(RPsemi1,RP_Move3);
 
  912     GeoShapeUnion * RPsemi3 = 
new GeoShapeUnion(RPsemi2, mowe3);
 
  918     GeoShapeShift * mowe4 = 
new GeoShapeShift(RPtube2,RP_Move4);
 
  919     GeoShapeUnion * RPsemi4 = 
new GeoShapeUnion(RPtube1, mowe4);
 
  925     GeoShapeShift * mowe5 = 
new GeoShapeShift(RPbox4,RP_Move5);
 
  926     GeoShapeUnion * RPsemi5 = 
new GeoShapeUnion(RPsemi4, mowe5);
 
  929     GeoShapeShift * mowe6 = 
new GeoShapeShift(RPbox5,RP_Move6);
 
  930     GeoShapeUnion * RPsemi6 = 
new GeoShapeUnion(RPsemi5, mowe6);
 
  933     GeoShapeShift * mowe7 = 
new GeoShapeShift(RPsemi6,RP_MoveRot7);
 
  934     GeoShapeUnion * RPsemi7 = 
new GeoShapeUnion(RPsemi3, mowe7);
 
  939     GeoShapeShift * mowe8 = 
new GeoShapeShift(RPbox6,RP_MoveRot8);
 
  940     GeoShapeSubtraction * RPsemi8 = 
new GeoShapeSubtraction(RPsemi7, mowe8);
 
  943     GeoShapeShift * mowe9 = 
new GeoShapeShift(RPbox6,RP_MoveRot9);
 
  944     GeoShapeSubtraction * shapeRP = 
new GeoShapeSubtraction(RPsemi8, mowe9);
 
  958     GeoShapeShift * mowe1 = 
new GeoShapeShift(RP_Airbox2,RP_Air_Move1);
 
  959     GeoShapeUnion * RP_Airsemi1 = 
new GeoShapeUnion(RP_Airbox1, mowe1);
 
  962     GeoShapeShift * mowe2 = 
new GeoShapeShift(RP_Airbox3,RP_Air_Move2);
 
  963     GeoShapeUnion * RP_Airsemi2 = 
new GeoShapeUnion(RP_Airsemi1, mowe2);
 
  966     GeoShapeShift * mowe3 = 
new GeoShapeShift(RP_Airbox4,RP_Air_Move3);
 
  967     GeoShapeUnion * RP_Airsemi3 = 
new GeoShapeUnion(RP_Airsemi2, mowe3);
 
  970     GeoShapeShift * mowe4 = 
new GeoShapeShift(RP_Airbox4,RP_Air_Move4);
 
  971     GeoShapeUnion * RP_Airsemi4 = 
new GeoShapeUnion(RP_Airsemi3, mowe4);
 
  974     GeoShapeShift * mowe5 = 
new GeoShapeShift(RP_Airtube1,RP_Air_MoveRot5);
 
  975     GeoShapeUnion * shapeRP_Air = 
new GeoShapeUnion(RP_Airsemi4, mowe5);
 
  987     GeoShapeShift * mowe1 = 
new GeoShapeShift(ALFA_Trigbox2, ALFA_Trig_MoveRot1);
 
  988     GeoShapeSubtraction * ALFA_Trigsemi1 = 
new GeoShapeSubtraction(ALFA_Trigbox1, mowe1);
 
  991     GeoShapeShift * mowe2 = 
new GeoShapeShift(ALFA_Trigsemi1,ALFA_Trig_Move2);
 
  992     GeoShapeUnion * ALFA_Trigsemi2 = 
new GeoShapeUnion(ALFA_Trigsemi1, mowe2);
 
  995     GeoShapeShift * mowe3 = 
new GeoShapeShift(ALFA_Trigbox3,ALFA_Trig_Move3);
 
  996     GeoShapeUnion * ALFA_Trigsemi3 = 
new GeoShapeUnion(ALFA_Trigbox3, mowe3);
 
  999     GeoShapeShift * mowe4 = 
new GeoShapeShift(ALFA_Trigsemi2,ALFA_Trig_MoveRot4);
 
 1000     GeoShapeUnion * shapeALFA_Trigger = 
new GeoShapeUnion(ALFA_Trigsemi3, mowe4);
 
 1002     return shapeALFA_Trigger;
 
 1013     GeoShapeShift * mowe1 = 
new GeoShapeShift(RP_Supbox2, RP_Sup_Move1);
 
 1014     GeoShapeUnion * RP_Supsemi1 = 
new GeoShapeUnion(RP_Supbox1, mowe1);
 
 1017     GeoShapeShift * mowe2 = 
new GeoShapeShift(RP_Supbox3, RP_Sup_Move2);
 
 1018     GeoShapeUnion * RP_Supsemi2 = 
new GeoShapeUnion(RP_Supsemi1, mowe2);
 
 1021     GeoShapeShift * mowe3 = 
new GeoShapeShift(RP_Supbox4, RP_Sup_Move3);
 
 1022     GeoShapeUnion * shapeRP_Support = 
new GeoShapeUnion(RP_Supsemi2, mowe3);
 
 1024     return shapeRP_Support;
 
 1034     GeoShapeShift* mowe1 = 
new GeoShapeShift(G10box1, G10_Move1);
 
 1035     GeoShapeUnion* G10_Subsemi1 = 
new GeoShapeUnion(G10trd1, mowe1);
 
 1038     GeoShapeShift* mowe2 = 
new GeoShapeShift(G10trd2, G10_Move2);
 
 1039     GeoShapeUnion* shapeG10_Substrate = 
new GeoShapeUnion(G10_Subsemi1, mowe2);
 
 1041     return shapeG10_Substrate;
 
 1047     std::map<int,GeoShape*>* pMapTiPlates=
new std::map<int,GeoShape*>();
 
 1055     GeoShapeShift * mowe1 = 
new GeoShapeShift(TiPlate_Holder,TiPlate_Move1);
 
 1056     GeoShapeUnion * TiPlatesemi1 = 
new GeoShapeUnion(TiPlate_Substr, mowe1);
 
 1062         GeoShapeShift * mowe2 = 
new GeoShapeShift(TiPlate_box1, TiPlate_MoveRot2);
 
 1063         GeoShapeShift * mowe3 = 
new GeoShapeShift(TiPlate_box1, TiPlate_MoveRot3);
 
 1064         GeoShapeSubtraction * TiPlatesemi2 = 
new GeoShapeSubtraction(TiPlatesemi1,mowe2);
 
 1065         GeoShapeSubtraction * TiPlatesemi3 = 
new GeoShapeSubtraction(TiPlatesemi2,mowe3);
 
 1068         GeoShapeShift * mowe4 = 
new GeoShapeShift(TiPlate_box2, TiPlate_MoveRot4);
 
 1069         GeoShapeSubtraction* shapeTi_Plate = 
new GeoShapeSubtraction(TiPlatesemi3, mowe4);
 
 1071         pMapTiPlates->insert(std::pair<int,GeoShape*>(
i,shapeTi_Plate));
 
 1074     return pMapTiPlates;
 
 1080     std::map<int,GeoShape*>* pMapODPlates=
new std::map<int,GeoShape*>();
 
 1087     GeoShapeShift * mowe01 = 
new GeoShapeShift(OD_Tibox2,OD_Move01);
 
 1088     GeoShapeUnion * OD_Tisemi01 = 
new GeoShapeUnion(OD_Tibox1, mowe01);
 
 1091     GeoShapeShift * mowe02 = 
new GeoShapeShift(OD_Tibox3, OD_Move02);
 
 1092     GeoShapeSubtraction * OD_Tisemi02 = 
new GeoShapeSubtraction(OD_Tisemi01, mowe02);
 
 1101     GeoShapeShift * mowe04 = 
new GeoShapeShift(OD_Tibox6,OD_Move04);
 
 1102     GeoShapeSubtraction * OD_Tisemi04 = 
new GeoShapeSubtraction(OD_Titube1, mowe04);
 
 1105     GeoShapeShift * mowe05 = 
new GeoShapeShift(OD_Tibox7,OD_Move05);
 
 1106     GeoShapeSubtraction * OD_Tisemi05 = 
new GeoShapeSubtraction(OD_Tisemi04, mowe05);
 
 1112     GeoShapeShift * mowe06 = 
new GeoShapeShift(OD_Tibox8,OD_Move06);
 
 1113     GeoShapeUnion * OD_Tisemi06 = 
new GeoShapeUnion(OD_Tisemi05, mowe06);
 
 1116     GeoShapeShift * mowe07 = 
new GeoShapeShift(OD_Tibox9,OD_Move07);
 
 1117     GeoShapeUnion * OD_Tisemi07 = 
new GeoShapeUnion(OD_Tisemi06, mowe07);
 
 1122         GeoShapeShift * mowe08 = 
new GeoShapeShift(OD_Tisemi07, OD_Move08);
 
 1123         GeoShapeSubtraction * OD_Tisemi08 = 
new GeoShapeSubtraction(OD_Tibox5, mowe08);
 
 1126         GeoShapeShift * mowe09 = 
new GeoShapeShift(OD_Tisemi07, OD_Move09);
 
 1127         GeoShapeSubtraction * OD_Tisemi09 = 
new GeoShapeSubtraction(OD_Tisemi08, mowe09);
 
 1130         GeoShapeShift * mowe11 = 
new GeoShapeShift(OD_Tisemi07, OD_Move11);
 
 1131         GeoShapeSubtraction * OD_Tisemi11 = 
new GeoShapeSubtraction(OD_Tibox5, mowe11);
 
 1134         GeoShapeShift * mowe12 = 
new GeoShapeShift(OD_Tisemi07, OD_Move12);
 
 1135         GeoShapeSubtraction * OD_Tisemi12 = 
new GeoShapeSubtraction(OD_Tisemi11, mowe12);
 
 1138         GeoShapeShift * mowe14 = 
new GeoShapeShift(OD_Tisemi09,OD_Move14);
 
 1139         GeoShapeUnion * OD_Tisemi14 = 
new GeoShapeUnion(OD_Tisemi02, mowe14);
 
 1142         GeoShapeShift * mowe15 = 
new GeoShapeShift(OD_Tisemi12,OD_Move15);
 
 1143         GeoShapeUnion * OD_Tisemi15 = 
new GeoShapeUnion(OD_Tisemi14, mowe15);
 
 1146         GeoShapeShift * mowe16 = 
new GeoShapeShift(OD_Tibox3, OD_Move16);
 
 1147         GeoShapeSubtraction * shapeOD_TiPlate = 
new GeoShapeSubtraction(OD_Tisemi15, mowe16);
 
 1149         pMapODPlates->insert(std::pair<int,GeoShape*>(
i,shapeOD_TiPlate));
 
 1152     return pMapODPlates;
 
 1172     GeoShapeShift * mowe1 = 
new GeoShapeShift(OD_Cladbox3, OD_CladMove1);
 
 1173     GeoShapeSubtraction * OD_Cladsemi1 = 
new GeoShapeSubtraction(OD_Cladtube1, mowe1);
 
 1176     GeoShapeShift * mowe2 = 
new GeoShapeShift(OD_Cladbox4, OD_CladMove2);
 
 1177     GeoShapeSubtraction * OD_Cladsemi2 = 
new GeoShapeSubtraction(OD_Cladsemi1, mowe2);
 
 1180     GeoShapeShift * mowe3 = 
new GeoShapeShift(OD_Cladbox1, OD_CladMov3);
 
 1181     GeoShapeUnion * OD_Cladsemi3 = 
new GeoShapeUnion(OD_Cladsemi2, mowe3);
 
 1184     GeoShapeShift * mowe4 = 
new GeoShapeShift(OD_Cladbox2, OD_CladMov4);
 
 1185     GeoShapeUnion * shapeOD_Cladding = 
new GeoShapeUnion(OD_Cladsemi3, mowe4);
 
 1188     GeoLogVol* logOD_Cladding = 
new GeoLogVol(
"logOD_Cladding", shapeOD_Cladding, 
m_MapMaterials[
string(
"PMMA")]);
 
 1190     GeoFullPhysVol* physOD_CladdingU_0=NULL;
 
 1191     GeoFullPhysVol* physOD_CladdingU_1=NULL;
 
 1192     GeoFullPhysVol* physOD_CladdingV_0=NULL;
 
 1193     GeoFullPhysVol* physOD_CladdingV_1=NULL;
 
 1201         physOD_CladdingU_0 = 
new GeoFullPhysVol(logOD_Cladding);
 
 1205         pPhysMotherVolume->add(pDetTransform);
 
 1207         sprintf(szLabel,
"physODclad[%d][0][%d]",eRPName,
i);
 
 1208         pPhysMotherVolume->add(
new GeoNameTag(szLabel));
 
 1209         pPhysMotherVolume->add(physOD_CladdingU_0);
 
 1212         physOD_CladdingU_1 = 
new GeoFullPhysVol(logOD_Cladding);
 
 1216         pPhysMotherVolume->add(pDetTransform);
 
 1218         sprintf(szLabel,
"physODclad[%d][1][%d]",eRPName,
i);
 
 1219         pPhysMotherVolume->add(
new GeoNameTag(szLabel));
 
 1220         pPhysMotherVolume->add(physOD_CladdingU_1);
 
 1223         physOD_CladdingV_0 = 
new GeoFullPhysVol(logOD_Cladding);
 
 1227         pPhysMotherVolume->add(pDetTransform);
 
 1229         sprintf(szLabel,
"physODclad[%d][2][%d]",eRPName,
i);
 
 1230         pPhysMotherVolume->add(
new GeoNameTag(szLabel));
 
 1231         pPhysMotherVolume->add(physOD_CladdingV_0);
 
 1234         physOD_CladdingV_1 = 
new GeoFullPhysVol(logOD_Cladding);
 
 1238         pPhysMotherVolume->add(pDetTransform);
 
 1240         sprintf(szLabel,
"physODclad[%d][3][%d]",eRPName,
i);
 
 1241         pPhysMotherVolume->add(
new GeoNameTag(szLabel));
 
 1242         pPhysMotherVolume->add(physOD_CladdingV_1);
 
 1263         GeoShapeShift * mowe1 = 
new GeoShapeShift(OD_Fiberbox3, OD_FiberMove1);
 
 1264         GeoShapeSubtraction * OD_Fibersemi1 = 
new GeoShapeSubtraction(OD_Fibertube1, mowe1);
 
 1267         GeoShapeShift * mowe2 = 
new GeoShapeShift(OD_Fiberbox4, OD_FiberMove2);
 
 1268         GeoShapeSubtraction * OD_Fibersemi2 = 
new GeoShapeSubtraction(OD_Fibersemi1, mowe2);
 
 1271         GeoShapeShift * mowe4 = 
new GeoShapeShift(OD_Fiberbox2, OD_FiberMov4);
 
 1272         GeoShapeUnion * shapeOD_Fiber = 
new GeoShapeUnion(OD_Fibersemi2, mowe4);
 
 1274         GeoLogVol* logOD_Fiber = 
new GeoLogVol(
"logOD_Fiber", shapeOD_Fiber, 
m_MapMaterials[
string(
"Polystyrene")]);
 
 1275         GeoLogVol* logOD_FiberActive = 
new GeoLogVol(
"logOD_FiberActive", OD_Fiberbox1, 
m_MapMaterials[
string(
"Polystyrene")]);
 
 1278         double fAngle = 0.0;
 
 1284             sprintf(szLabel,
"ODFiberU0Active[%d][%d][%d]",eRPName,iODPlate+1,
i+1);
 
 1290             sprintf(szLabel,
"ODFiberV0Active[%d][%d][%d]",eRPName,iODPlate+1,
i+1);
 
 1293         TransODFiber=HepGeom::Translate3D(4*
CLHEP::mm, fYPos, 0.0*
CLHEP::mm)*HepGeom::RotateZ3D(fAngle);
 
 1296         GeoPhysVol* physOD_FiberActive = 
new GeoPhysVol(logOD_FiberActive);
 
 1298         pMotherVolume->add(
new GeoNameTag(szLabel));
 
 1299         pMotherVolume->add(physOD_FiberActive);
 
 1303         HepGeom::Point3D<float> TransPoint=TransTotal*HepGeom::Point3D<float>(0.0,0.0,0.0);
 
 1304         HepGeom::Vector3D<float> TransVector=TransTotal*HepGeom::Vector3D<float>(1.0,0.0,0.0);
 
 1305         float fSlope=
tan(TransVector.phi());
 
 1345         if (eFType==
EFT_ODFIBERU0) sprintf(szLabel,
"ODFiberU0[%d][%d][%d]",eRPName,iODPlate+1,
i+1);
 
 1346         else if (eFType==
EFT_ODFIBERV0) sprintf(szLabel,
"ODFiberV0[%d][%d][%d]",eRPName,iODPlate+1,
i+1);
 
 1347         GeoPhysVol* physOD_Fiber = 
new GeoPhysVol(logOD_Fiber);
 
 1349         pMotherVolume->add(
new GeoNameTag(szLabel));
 
 1350         pMotherVolume->add(physOD_Fiber);
 
 1369         GeoShapeShift * mowe1 = 
new GeoShapeShift(OD_Fiberbox3, OD_FiberMove1);
 
 1370         GeoShapeSubtraction * OD_Fibersemi1 = 
new GeoShapeSubtraction(OD_Fibertube1, mowe1);
 
 1373         GeoShapeShift * mowe2 = 
new GeoShapeShift(OD_Fiberbox4, OD_FiberMove2);
 
 1374         GeoShapeSubtraction * OD_Fibersemi2 = 
new GeoShapeSubtraction(OD_Fibersemi1, mowe2);
 
 1377         GeoShapeShift * mowe4 = 
new GeoShapeShift(OD_Fiberbox2, OD_FiberMov4);
 
 1378         GeoShapeUnion * shapeOD_Fiber = 
new GeoShapeUnion(OD_Fibersemi2, mowe4);
 
 1380         GeoLogVol* logOD_Fiber = 
new GeoLogVol(
"logOD_Fiber", shapeOD_Fiber, 
m_MapMaterials[
string(
"Polystyrene")]);
 
 1381         GeoLogVol* logOD_FiberActive = 
new GeoLogVol(
"logOD_FiberActive", OD_Fiberbox1, 
m_MapMaterials[
string(
"Polystyrene")]);
 
 1384         double fAngle = 0.0;
 
 1393             sprintf(szLabel,
"ODFiberU1Active[%d][%d][%d]",eRPName,iODPlate+1,
i+1);
 
 1404             sprintf(szLabel,
"ODFiberV1Active[%d][%d][%d]",eRPName,iODPlate+1,
i+1);
 
 1407         TransODFiber=HepGeom::Translate3D(4*
CLHEP::mm, fYPos, 0*
CLHEP::mm)*HepGeom::RotateZ3D(fAngle);
 
 1410         GeoPhysVol* physOD_FiberActive = 
new GeoPhysVol(logOD_FiberActive);
 
 1412         pMotherVolume->add(
new GeoNameTag(szLabel));
 
 1413         pMotherVolume->add(physOD_FiberActive);
 
 1417         HepGeom::Point3D<float> TransPoint=TransTotal*HepGeom::Point3D<float>(0.0,0.0,0.0);
 
 1418         HepGeom::Vector3D<float> TransVector=TransTotal*HepGeom::Vector3D<float>(1.0,0.0,0.0);
 
 1419         float fSlope=
tan(TransVector.phi());
 
 1435         if (eFType==
EFT_ODFIBERU1) sprintf(szLabel,
"ODFiberU1[%d][%d][%d]",eRPName,iODPlate+1,
i+1);
 
 1436         else if (eFType==
EFT_ODFIBERV1) sprintf(szLabel,
"ODFiberV1[%d][%d][%d]",eRPName,iODPlate+1,
i+1);
 
 1437         GeoPhysVol* physOD_Fiber = 
new GeoPhysVol(logOD_Fiber);
 
 1439         pMotherVolume->add(
new GeoNameTag(szLabel));
 
 1440         pMotherVolume->add(physOD_Fiber);
 
 1458     GeoBox *ALFA_Cladbox1, *ALFA_Cladbox2;
 
 1459     GeoShapeSubtraction* shapeALFA_Clad;
 
 1466     GeoShapeShift* mowe1;
 
 1467     GeoLogVol* pLogCladdingU;
 
 1488         mowe1=
new GeoShapeShift(ALFA_Cladbox2,Clad_Move1);
 
 1489         shapeALFA_Clad = 
new GeoShapeSubtraction(ALFA_Cladbox1,mowe1);
 
 1490         pLogCladdingU = 
new GeoLogVol(
"logALFA_CladdingU",shapeALFA_Clad, 
m_MapMaterials[
string(
"PMMA")]);
 
 1492         sprintf(strLabel,
"ALFA_CladdingU[%d][%d]",eRPName,
i);
 
 1495         physALFA_CladdingU[
i] = 
new GeoFullPhysVol(pLogCladdingU);
 
 1496         pMotherVolume->add(
new GeoNameTag(strLabel));
 
 1497         pMotherVolume->add(pDetTransform);
 
 1499         pMotherVolume->add(physALFA_CladdingU[
i]);
 
 1512     GeoFullPhysVol* physiFibU;
 
 1513     GeoLogVol* logALFA_FiberU;
 
 1534             double fXPos=
m_pGeoReader->GetUFiberCentreXPos(eRPName, 
i+1, j+1);
 
 1535             double fAngle=
m_pGeoReader->GetUFiberAngle(eRPName, 
i+1, j+1);
 
 1536             double fDx=fXPos-(+15.75-0.5*(j))*
CLHEP::mm;
 
 1539             const GeoShapeShift* Sh6=
new GeoShapeShift(CladTrim,TrimMove);
 
 1540             const GeoShapeSubtraction* solFibU=
new GeoShapeSubtraction(Fib1,Sh6);
 
 1541             sprintf(strLabel,
"logALFA_FiberU[%d]",j+1);
 
 1542             logALFA_FiberU=
new GeoLogVol(strLabel,solFibU,
m_MapMaterials[
string(
"Polystyrene")]);
 
 1544             sprintf(strLabel,
"ALFA_FiberU[%d][%d][%d]",eRPName,
i+1,j+1);
 
 1545             TransFiber=HepGeom::Translate3D(fXPos, 0*
CLHEP::mm, 0*
CLHEP::mm)*HepGeom::RotateZ3D(-fAngle);
 
 1546             physiFibU=
new GeoFullPhysVol(logALFA_FiberU);
 
 1547             physALFA_CladdingU[
i]->add(
new GeoNameTag(strLabel));
 
 1549             physALFA_CladdingU[
i]->add(physiFibU);
 
 1553             HepGeom::Point3D<float> TransPoint=TransTotal*HepGeom::Point3D<float>(0.0,0.0,0.0);
 
 1554             HepGeom::Vector3D<float> TransVector=TransTotal*HepGeom::Vector3D<float>(0.0,1.0,0.0);
 
 1555             float fSlope=
tan(TransVector.phi());
 
 1557             m_pGeoReader->SetUFiberPositionToMainReference(eRPName, 
i+1, j+1, TransPoint, fSlope);
 
 1571     GeoShapeShift* mowe1;
 
 1572     GeoBox *ALFA_Cladbox1, *ALFA_Cladbox2;
 
 1573     GeoShapeSubtraction* shapeALFA_Clad;
 
 1580     GeoLogVol* pLogCladdingV;
 
 1599         mowe1=
new GeoShapeShift(ALFA_Cladbox2,Clad_Move1);
 
 1600         shapeALFA_Clad = 
new GeoShapeSubtraction(ALFA_Cladbox1,mowe1);
 
 1601         pLogCladdingV = 
new GeoLogVol(
"logALFA_CladdingV",shapeALFA_Clad, 
m_MapMaterials[
string(
"PMMA")]);
 
 1603         sprintf(strLabel,
"ALFA_CladdingV[%d][%d]",eRPName,
i);
 
 1606         physALFA_CladdingV[
i] = 
new GeoFullPhysVol(pLogCladdingV);
 
 1607         pMotherVolume->add(
new GeoNameTag(strLabel));
 
 1608         pMotherVolume->add(pDetTransform);
 
 1610         pMotherVolume->add(physALFA_CladdingV[
i]);
 
 1614     GeoFullPhysVol* physiFibV;
 
 1615     GeoLogVol* logALFA_FiberV;
 
 1636             double fXPos=
m_pGeoReader->GetVFiberCentreXPos(eRPName, 
i+1, j+1);
 
 1637             double fAngle=
m_pGeoReader->GetVFiberAngle(eRPName, 
i+1, j+1);
 
 1638             double fDx=fXPos-(+15.75-0.5*(j))*
CLHEP::mm;
 
 1641             const GeoShapeShift* Sh6=
new GeoShapeShift(CladTrim,TrimMove);
 
 1642             const GeoShapeSubtraction* solFibV=
new GeoShapeSubtraction(Fib1,Sh6);
 
 1643             sprintf(strLabel,
"logALFA_FiberV[%d]",j+1);
 
 1644             logALFA_FiberV=
new GeoLogVol(strLabel,solFibV,
m_MapMaterials[
string(
"Polystyrene")]);
 
 1646             sprintf(strLabel,
"ALFA_FiberV[%d][%d][%d]",eRPName,
i+1,j+1);
 
 1647             TransFiber=HepGeom::Translate3D(fXPos, 0*
CLHEP::mm, 0*
CLHEP::mm)*HepGeom::RotateZ3D(-fAngle);
 
 1649             physiFibV=
new GeoFullPhysVol(logALFA_FiberV);
 
 1650             physALFA_CladdingV[
i]->add(
new GeoNameTag(strLabel));
 
 1652             physALFA_CladdingV[
i]->add(physiFibV);
 
 1657             HepGeom::Point3D<float> TransPoint=TransTotal*HepGeom::Point3D<float>(0.0,0.0,0.0);
 
 1658             HepGeom::Vector3D<float> TransVector=TransTotal*HepGeom::Vector3D<float>(0.0,1.0,0.0);
 
 1659             float fSlope=
tan(TransVector.phi());
 
 1660             m_pGeoReader->SetVFiberPositionToMainReference(eRPName, 
i+1, j+1, TransPoint, fSlope);
 
 1722     MsgStream LogStream(
Athena::getMessageSvc(), 
"ALFA_DetectorFactory::UserHepGeom::Transform3DInStation(eRPotName eRPName)");
 
 1724     CLHEP::HepRep3x3 matRotation;
 
 1770             LogStream << MSG::WARNING << 
"Unknown Roman pot, station transformation will be set to default (zero) values" << 
endmsg;
 
 1771             structUserTransform.
fAngle = 0.0;
 
 1772             structUserTransform.
vecRotation = CLHEP::Hep3Vector(0.0, 0.0, 0.0);
 
 1773             structUserTransform.
vecTranslation = CLHEP::Hep3Vector(0.0, 0.0, 0.0);
 
 1776     double fPhi = structUserTransform.
fAngle;
 
 1778     CLHEP::Hep3Vector vRotation = CLHEP::Hep3Vector(structUserTransform.
vecRotation);
 
 1779     CLHEP::Hep3Vector vTranslation = CLHEP::Hep3Vector(structUserTransform.
vecTranslation);
 
 1781     matRotation.xx_ = vRotation.x()*vRotation.x()*(1 - 
cos(fPhi)) + 
cos(fPhi);
 
 1782     matRotation.xy_ = vRotation.x()*vRotation.y()*(1 - 
cos(fPhi)) - vRotation.z()*
sin(fPhi);
 
 1783     matRotation.xz_ = vRotation.x()*vRotation.z()*(1 - 
cos(fPhi)) + vRotation.y()*
sin(fPhi);
 
 1785     matRotation.yx_ = vRotation.y()*vRotation.x()*(1 - 
cos(fPhi)) + vRotation.z()*
sin(fPhi);
 
 1786     matRotation.yy_ = vRotation.y()*vRotation.y()*(1 - 
cos(fPhi)) + 
cos(fPhi);
 
 1787     matRotation.yz_ = vRotation.y()*vRotation.z()*(1 - 
cos(fPhi)) - vRotation.x()*
sin(fPhi);
 
 1789     matRotation.zx_ = vRotation.z()*vRotation.x()*(1 - 
cos(fPhi)) - vRotation.y()*
sin(fPhi);
 
 1790     matRotation.zy_ = vRotation.z()*vRotation.y()*(1 - 
cos(fPhi)) + vRotation.x()*
sin(fPhi);
 
 1791     matRotation.zz_ = vRotation.z()*vRotation.z()*(1 - 
cos(fPhi)) + 
cos(fPhi);
 
 1798     MsgStream LogStream(
Athena::getMessageSvc(), 
"ALFA_DetectorFactory::UserHepGeom::Transform3DInDetector(eRPotName eRPName)");
 
 1800     CLHEP::HepRep3x3 matRotation;
 
 1846             LogStream << MSG::WARNING << 
"Unknown Roman pot, detector transformation will be set to default (zero) values" << 
endmsg;
 
 1847             structUserTransform.
fAngle = 0.0;
 
 1848             structUserTransform.
vecRotation = CLHEP::Hep3Vector(0.0, 0.0, 0.0);
 
 1849             structUserTransform.
vecTranslation = CLHEP::Hep3Vector(0.0, 0.0, 0.0);
 
 1852     double fPhi = structUserTransform.
fAngle;
 
 1854     CLHEP::Hep3Vector vRotation = CLHEP::Hep3Vector(structUserTransform.
vecRotation);
 
 1855     CLHEP::Hep3Vector vTranslation = CLHEP::Hep3Vector(structUserTransform.
vecTranslation);
 
 1857     matRotation.xx_ = vRotation.x()*vRotation.x()*(1 - 
cos(fPhi)) + 
cos(fPhi);
 
 1858     matRotation.xy_ = vRotation.x()*vRotation.y()*(1 - 
cos(fPhi)) - vRotation.z()*
sin(fPhi);
 
 1859     matRotation.xz_ = vRotation.x()*vRotation.z()*(1 - 
cos(fPhi)) + vRotation.y()*
sin(fPhi);
 
 1861     matRotation.yx_ = vRotation.y()*vRotation.x()*(1 - 
cos(fPhi)) + vRotation.z()*
sin(fPhi);
 
 1862     matRotation.yy_ = vRotation.y()*vRotation.y()*(1 - 
cos(fPhi)) + 
cos(fPhi);
 
 1863     matRotation.yz_ = vRotation.y()*vRotation.z()*(1 - 
cos(fPhi)) - vRotation.x()*
sin(fPhi);
 
 1865     matRotation.zx_ = vRotation.z()*vRotation.x()*(1 - 
cos(fPhi)) - vRotation.y()*
sin(fPhi);
 
 1866     matRotation.zy_ = vRotation.z()*vRotation.y()*(1 - 
cos(fPhi)) + vRotation.x()*
sin(fPhi);
 
 1867     matRotation.zz_ = vRotation.z()*vRotation.z()*(1 - 
cos(fPhi)) + 
cos(fPhi);
 
 1874     MsgStream LogStream(
Athena::getMessageSvc(), 
"ALFA_DetectorFactory::Point3DInDetector(eRPotName eRPName)");
 
 1875     HepGeom::Point3D<double> 
Point;
 
 1904             LogStream << MSG::WARNING << 
"Unknown Roman pot, transformation point will be set to default (zero) value" << 
endmsg;
 
 1917     GeoAlignableTransform* pAlTrans;
 
 1932                 sprintf(szLabel,
"AlTransRPBox[%02d]",eRPName);
 
 1934                 if(
sc==StatusCode::SUCCESS){
 
 1940                 sprintf(szLabel,
"AlTransDetInRPMainPoint[%02d]",eRPName);
 
 1942                 if(
sc==StatusCode::SUCCESS){