83   (*m_log) << 
MSG::DEBUG <<
" TileGeoSectionBuilder::fillSection ModuleNcp= "<<ModuleNcp<< 
endmsg;
 
   93   const GeoMaterial* matAluminium{
nullptr};
 
   98   double dX1 =0., dX2 =0., dY1 =0., dY2 =0., dZ1 =0., dZ2 =0.;
 
   99   std::string volname =
"";
 
  102   float PosXcut =0., PosYcut =0., PosY =0., Rmore =0.;
 
  103   float Radius =0., YcorA =0., YcorB =0., lenPla =0., Blia =0.;
 
  110   if (ModuleNcp>=35 && ModuleNcp<=37) SideFl = -1;
 
  116   GeoIntrusivePtr<const GeoShapeUnion> CutA{
nullptr};
 
  117   GeoIntrusivePtr<GeoShape> CutB{
nullptr};
 
  120   if (sec_number==2 && 
m_dbManager->
BoolCuts() && ((ModuleNcp>=35 && ModuleNcp<=37) || (ModuleNcp>=60 && ModuleNcp<=62))) {
 
  133     checking(
"CutB1", 
false, 1, dX1,dX2,dY1,dY2,dZ1);
 
  134     GeoTrd* CutB1 = 
new GeoTrd(dX1,dX2,dY1,dY2,dZ1);
 
  148     checking(
"Cut1up", 
false, 1, dX1,dX2,dY1,dY2,dZ1);
 
  149     GeoTrd* Cut1up = 
new GeoTrd(dX1,dX2,dY1,dY2,dZ1);
 
  158     checking(
"Cut2down", 
false, 1, dX1,dX2,dY1,dY2,dZ2);
 
  159     GeoTrd* Cut1down = 
new GeoTrd(dX1,dX2,dY1,dY2,dZ2);
 
  161     GeoTrf::Translate3D yPosA(0.,0.,-dZ1-dZ2);
 
  163     const GeoShapeUnion& CutA1 = Cut1up->add(*Cut1down<<yPosA);
 
  172     TransCut2 = GeoTrf::TranslateZ3D(-Radius)
 
  180       TransCut2 = GeoTrf::TranslateX3D(2*ptTmp.x())*GeoTrf::RotateZ3D(180*
Gaudi::Units::deg)*TransCut2;
 
  183     if (ModuleNcp>=60 && ModuleNcp<=62) {
 
  184       TransCutL = GeoTrf::TranslateZ3D(-Radius)
 
  191         TransCutL = GeoTrf::TranslateX3D(2*ptTmp.x())*GeoTrf::RotateZ3D(180*
Gaudi::Units::deg)*TransCutL;
 
  194     } 
else if (ModuleNcp>=35 && ModuleNcp<=37) {
 
  195       TransCutR = GeoTrf::TranslateZ3D(-Radius)
 
  202         TransCutR = GeoTrf::TranslateX3D(2*ptTmp.x())*GeoTrf::RotateZ3D(180*
Gaudi::Units::deg)*TransCutR;
 
  213   double thicknessGirderMother = 0.0;
 
  214   double specialModuleZShift = 0.0;
 
  220     if ((Id4 == 7) && (sec_number == 3))
 
  230     if  ((Id4 == 7) && (sec_number == 3)) {
 
  235              thicknessGirderMother/2,thicknessGirderMother/2,dy1GirderMother,dy2GirderMother,heightGirderMother/2);
 
  237     GeoTrd* girderMother = 
new GeoTrd(thicknessGirderMother/2,
 
  238                                       thicknessGirderMother/2,
 
  241                                       heightGirderMother/2);
 
  243     GeoLogVol* lvGirderMother = 
new GeoLogVol(
"GirderMother",girderMother,matAir);
 
  244     PVLink  pvGirderMother = 
new GeoPhysVol(lvGirderMother);
 
  252     GeoTransform* tfGirderMother{
nullptr};
 
  261     mother->add(tfGirderMother);
 
  262     mother->add(pvGirderMother);
 
  270   double thicknessFrontPlate, heightFrontPlate, dy1FrontPlate, dy2FrontPlate;
 
  279       if (thicknessFrontPlate > rless) {
 
  285           (*
m_log) << 
MSG::DEBUG <<
"   FrontPlateSh dX1,dX2= "<<thicknessFrontPlate/2<<
", "<<thicknessFrontPlate/2
 
  286                    <<
" dY1,dY2= "<<dy1FrontPlate<<
" "<<dy2FrontPlate<<
" dZ= "<<heightFrontPlate/2
 
  289         GeoTrd* frontPlateSh = 
new GeoTrd(thicknessFrontPlate/2,
 
  290                                           thicknessFrontPlate/2,
 
  295         GeoLogVol* lvFrontPlateSh = 
new GeoLogVol(
"FrontPlateSh",frontPlateSh,matIron);
 
  296         PVLink  pvFrontPlateSh = 
new GeoPhysVol(lvFrontPlateSh);
 
  297         GeoTransform* tfFrontPlateSh = 
new GeoTransform(GeoTrf::Translate3D(
 
  301         mother->add(tfFrontPlateSh);
 
  302         mother->add(pvFrontPlateSh);
 
  310                                  ((ModuleNcp>=35 && ModuleNcp<=37)||(ModuleNcp>=60 && ModuleNcp<=62)) )) {
 
  312       std::string volname =
"";
 
  313       double dXCutA = 0, dXCutB = 0;
 
  326       GeoTrd* frontPlate = 
new GeoTrd(thicknessFrontPlate/2 -(dXCutA+dXCutB),
 
  327                                       thicknessFrontPlate/2 -(dXCutA+dXCutB),
 
  342       GeoLogVol* lvFrontPlate = 
new GeoLogVol(
"FrontPlate",frontPlate,matIron);
 
  343       PVLink  pvFrontPlate = 
new GeoPhysVol(lvFrontPlate);
 
  344       GeoTransform* tfFrontPlate = 
new GeoTransform(GeoTrf::Translate3D(
 
  348       mother->add(tfFrontPlate);
 
  349       mother->add(pvFrontPlate);
 
  361       GeoTrd* frontPlate = 
new GeoTrd(thicknessFrontPlate/2,
 
  362                                       thicknessFrontPlate/2,
 
  367       GeoLogVol* lvFrontPlate = 
new GeoLogVol(
"FrontPlate",frontPlate,matIron);
 
  368       PVLink  pvFrontPlate = 
new GeoPhysVol(lvFrontPlate);
 
  369       GeoTransform* tfFrontPlate = 
new GeoTransform(GeoTrf::Translate3D(
 
  373       mother->add(tfFrontPlate);
 
  374       mother->add(pvFrontPlate);
 
  379   double dy1EndPlate, dy2EndPlate, thicknessEndPlate, heightEndPlate;
 
  388   GeoIntrusivePtr<GeoTransform> tfEndPlateSh{
nullptr};
 
  402       GeoTrd* endPlateSh = 
new GeoTrd(thicknessEndPlate/2,
 
  407       GeoLogVol* lvEndPlateSh{
nullptr};
 
  410       if (sec_number==2 && ((ModuleNcp>=35 && ModuleNcp<=37)||(ModuleNcp>=60 && ModuleNcp<=62)) ) { 
 
  415         GeoTrd* endPlateShCut = 
new GeoTrd(thicknessEndPlate,
 
  422         double rotationAngle ;
 
  423         double shiftCutPlate ;
 
  424         int rotationSign = 1;
 
  425         if (ModuleNcp > 50) rotationSign *= -1;
 
  426         if ( neg ) rotationSign *= -1;
 
  429         if ( ( ModuleNcp == 37 ) || ( ModuleNcp == 60 ) ) {
 
  433           cutOutTransformation =
 
  434               GeoTrf::Translate3D(0,0, -heightEndPlate/2.) *
 
  436               GeoTrf::Translate3D(0.,0., -rotationSign * (dy2EndPlate + shiftCutPlate ) ) *
 
  437               GeoTrf::RotateX3D( rotationSign * rotationAngle ) ;
 
  439           const GeoShape & endPlateShCutted3760 = (endPlateSh->subtract( (*endPlateShCut)<< cutOutTransformation ) ) ;
 
  440           lvEndPlateSh = 
new GeoLogVol(
"EndPlateSh", &(endPlateShCutted3760) , matIron);
 
  442         } 
else if ( ( ModuleNcp == 36 ) || ( ModuleNcp == 61 ) ) {
 
  446           cutOutTransformation =
 
  447               GeoTrf::Translate3D( 0, 0, -heightEndPlate/2. ) *
 
  448               GeoTrf::Translate3D( 0, 0,  - (dy2EndPlate  - shiftCutPlate + 0.5*dy2EndPlate*(1.- 
std::cos(rotationAngle*
Gaudi::Units::rad)))  ) *
 
  449               GeoTrf::RotateX3D( rotationSign * rotationAngle ) ;
 
  451           const GeoShape & endPlateShCutted3661 = (endPlateSh->subtract( (*endPlateShCut)<< cutOutTransformation ) ) ;
 
  452           lvEndPlateSh = 
new GeoLogVol(
"EndPlateSh", &(endPlateShCutted3661) , matIron);
 
  454         } 
else if ( ( ModuleNcp == 35 ) || ( ModuleNcp == 62 ) ) {
 
  458           cutOutTransformation =
 
  459               GeoTrf::Translate3D( 0, 0, -heightEndPlate/2. ) *
 
  460               GeoTrf::Translate3D( 0, 0,  - (dy2EndPlate  - shiftCutPlate) ) *
 
  461               GeoTrf::RotateX3D( rotationSign * rotationAngle ) ;
 
  463           const GeoShape & endPlateShCutted3562 = (endPlateSh->subtract( (*endPlateShCut)<< cutOutTransformation ) ) ;
 
  464           lvEndPlateSh = 
new GeoLogVol(
"EndPlateSh", &(endPlateShCutted3562) , matIron);
 
  467           (*m_log) << MSG::ERROR <<
" TileGeoSectionBuilder::fillSection . Wrong Module in cut-out region. ModuleNcp= "<<ModuleNcp<< 
endmsg;
 
  468           lvEndPlateSh = 
new GeoLogVol(
"EndPlateSh", endPlateSh , matIron);
 
  472         lvEndPlateSh = 
new GeoLogVol(
"EndPlateSh", endPlateSh , matIron);
 
  481       PVLink  pvEndPlateSh = 
new GeoPhysVol(lvEndPlateSh);
 
  483       tfEndPlateSh = 
new GeoTransform(GeoTrf::Translate3D(
 
  484                                           specialModuleZShift +
 
  488       mother->add(tfEndPlateSh);
 
  489       mother->add(pvEndPlateSh);
 
  492         (*m_log) << 
MSG::DEBUG <<
" _fillSection: ext.barrel EndPlateSh Ok "<< 
endmsg;
 
  501       GeoTrd* endPlate1 = 
new GeoTrd(thicknessEndPlate/2,
 
  507       GeoLogVol* lvEndPlate1 = 
new GeoLogVol(
"EndPlate1",endPlate1,matIron);
 
  508       PVLink  pvEndPlate1 = 
new GeoPhysVol(lvEndPlate1);
 
  512         GeoTrd* epHole1 = 
new GeoTrd (thicknessEndPlate/2,
 
  518         GeoLogVol* lvEPHole1 = 
new GeoLogVol(
"EPHole1",epHole1,matAir);
 
  519         PVLink  pvEPHole1 = 
new GeoPhysVol(lvEPHole1);
 
  520         GeoTransform* tfEPHole1 = 
new GeoTransform(GeoTrf::Translate3D(0.,0.,
 
  522         pvEndPlate1->add(tfEPHole1);
 
  523         pvEndPlate1->add(pvEPHole1);
 
  526       GeoTransform* tfEndPlate1 = 
new GeoTransform(GeoTrf::Translate3D(
 
  528       mother->add(tfEndPlate1);
 
  529       mother->add(pvEndPlate1);
 
  537   GeoIntrusivePtr<GeoTransform> tfEndPlate2{
nullptr};
 
  541     double radShift =lenPla;
 
  542     double rminbT=rminb + radShift;
 
  550     GeoLogVol* lvEndPlate2{
nullptr};
 
  551     GeoTrd* endPlate2 = 
new GeoTrd(thicknessEndPlate/2,
 
  557     tfEndPlate2 = 
new GeoTransform(GeoTrf::Translate3D(
 
  560     if (sec_number==2 && ((ModuleNcp>=35 && ModuleNcp<=37)||(ModuleNcp>=60 && ModuleNcp<=62)) ) { 
 
  562       GeoTrd* endPlate2Cut = 
new GeoTrd(thicknessEndPlate,
 
  567       double rotationAngle ;
 
  568       double shiftCutPlate ;
 
  569       int rotationSign = 1;
 
  570       if (ModuleNcp > 50) rotationSign *= -1;
 
  571       if ( neg ) rotationSign *= -1;
 
  573       if ( ( ModuleNcp == 37 ) || ( ModuleNcp == 60 ) ) {
 
  577         cutOutTransformation =
 
  578             GeoTrf::Translate3D( 0, 0, -heightEndPlate/2. ) *
 
  579             GeoTrf::Translate3D( 0, 0,  - (dy2EndPlate  - shiftCutPlate) ) *
 
  580             GeoTrf::RotateX3D( rotationSign * rotationAngle ) ;
 
  582         const GeoShape & endPlate2Cutted3760 = (endPlate2->subtract( (*endPlate2Cut)<< cutOutTransformation ) ) ;
 
  583         lvEndPlate2 = 
new GeoLogVol(
"EndPlate2", &(endPlate2Cutted3760) , matIron);
 
  585       } 
else if ( ( ModuleNcp == 36 ) || ( ModuleNcp == 61 ) ) {
 
  589         cutOutTransformation =
 
  590             GeoTrf::Translate3D( 0, 0, -heightEndPlate/2. ) *
 
  591             GeoTrf::Translate3D( 0, 0,  - (dy2EndPlate  - shiftCutPlate) ) *
 
  592             GeoTrf::RotateX3D( rotationSign * rotationAngle ) ;
 
  594         const GeoShape & endPlate2Cutted3661 = (endPlate2->subtract( (*endPlate2Cut)<< cutOutTransformation ) ) ;
 
  595         lvEndPlate2 = 
new GeoLogVol(
"EndPlate2", &(endPlate2Cutted3661) , matIron);
 
  597       } 
else if ( ( ModuleNcp == 35 ) || ( ModuleNcp == 62 ) ) {
 
  601         cutOutTransformation =
 
  602             GeoTrf::Translate3D( 0, 0, -heightEndPlate/2. ) *
 
  603             GeoTrf::Translate3D( 0, 0,  - (dy2EndPlate  - shiftCutPlate) ) *
 
  604             GeoTrf::RotateX3D( rotationSign * rotationAngle ) ;
 
  606         const GeoShape & endPlate2Cutted3562 = (endPlate2->subtract( (*endPlate2Cut)<< cutOutTransformation ) ) ;
 
  607         lvEndPlate2 = 
new GeoLogVol(
"EndPlate2", &(endPlate2Cutted3562) , matIron);
 
  619       lvEndPlate2 = 
new GeoLogVol(
"EndPlate2",endPlate2,matIron);
 
  622     PVLink  pvEndPlate2 = 
new GeoPhysVol(lvEndPlate2);
 
  628       GeoTrd* epHole2 = 
new GeoTrd (thicknessEndPlate/2,
 
  634       GeoLogVol* lvEPHole2 = 
new GeoLogVol(
"EPHole2",epHole2,matAir);
 
  635       PVLink  pvEPHole2 = 
new GeoPhysVol(lvEPHole2);
 
  636       GeoTransform* tfEPHole2 = 
new GeoTransform(GeoTrf::Translate3D(0.,0.,
 
  638       pvEndPlate2->add(tfEPHole2);
 
  639       pvEndPlate2->add(pvEPHole2);
 
  642     mother->add(tfEndPlate2);
 
  643     mother->add(pvEndPlate2);
 
  657            thicknessAbsorber/2,thicknessAbsorber/2,dy1Absorber,dy2Absorber,heightAbsorber/2);
 
  660   double thicknessPeriod =0, thicknessAbsorber1 =0, thicknessAbsorber2 =0, thicknessAbsorber3 =0;
 
  661   double PosAbsor1 =0, PosAbsor2 =0, PosAbsor3 =0;
 
  662   int nA1 =32, nA2 = 0, nA3 =16;
 
  664   GeoTrd *absorber{
nullptr}, *absorber1{
nullptr}, *absorber3{
nullptr};
 
  665   GeoLogVol *lvAbsorber{
nullptr}, *lvAbsorber1{
nullptr}, *lvAbsorber3{
nullptr};
 
  666   PVLink pvAbsorber{
nullptr}, pvAbsorber1{
nullptr}, pvAbsorber3{
nullptr},
 
  667          pvTmp_Absorber1{
nullptr}, pvTmp_Absorber3{
nullptr};
 
  670   switch (sec_number) {
 
  679       thicknessAbsorber1 = nA1*thicknessPeriod;
 
  680       PosAbsor1 = thicknessAbsorber/2 - thicknessAbsorber1/2;
 
  682       thicknessAbsorber2 = nA2*thicknessPeriod;
 
  683       PosAbsor2 = thicknessAbsorber/2 - thicknessAbsorber1 - thicknessAbsorber2/2;
 
  685       thicknessAbsorber3 = nA3*thicknessPeriod;
 
  686       PosAbsor3 = thicknessAbsorber/2 - thicknessAbsorber1 - thicknessAbsorber2 - thicknessAbsorber3/2;
 
  689         (*
m_log) << 
MSG::DEBUG <<
" Number of periods per Module: N= "<<nA1+nA2+nA3
 
  690                  << 
" Middle absorber, numbers of periods = "<<nA2
 
  694       absorber1 = 
new GeoTrd(thicknessAbsorber1/2, thicknessAbsorber1/2,
 
  695                              dy1Absorber, dy2Absorber,
 
  698       lvAbsorber1 = 
new GeoLogVol(
"Absorber",absorber1,matIron);
 
  699       pvAbsorber1 = 
new GeoPhysVol(lvAbsorber1);
 
  702       absorber = 
new GeoTrd(thicknessAbsorber2/2, thicknessAbsorber2/2,
 
  703                             dy1Absorber, dy2Absorber,
 
  706       lvAbsorber = 
new GeoLogVol(
"Absorber",absorber,matIron);
 
  707       pvAbsorber = 
new GeoPhysVol(lvAbsorber);
 
  711       absorber3 = 
new GeoTrd(thicknessAbsorber3/2, thicknessAbsorber3/2,
 
  712                              dy1Absorber, dy2Absorber,
 
  715       lvAbsorber3 = 
new GeoLogVol(
"Absorber",absorber3,matIron);
 
  716       pvAbsorber3 = 
new GeoPhysVol(lvAbsorber3);
 
  720         (*m_log) << 
MSG::DEBUG <<
" _fillSection: Ex.Barrel pvAbsorber 1,3 Ok "<< 
endmsg;
 
  726       absorber = 
new GeoTrd(thicknessAbsorber/2, thicknessAbsorber/2,
 
  727                             dy1Absorber, dy2Absorber,
 
  731         lvAbsorber = 
new GeoLogVol(
"Absorber",absorber,matIron);
 
  734         lvAbsorber = 
new GeoLogVol(
"Absorber",absorber,matAir);
 
  736       pvAbsorber = 
new GeoPhysVol(lvAbsorber);
 
  742           (*m_log) << 
MSG::DEBUG <<
" _fillSection: special pvAbsorber made from Air  Ok "<< 
endmsg;
 
  750   double thicknessAbsorberChild;
 
  754   GeoLogVol* lvPeriod{
nullptr};
 
  755   PVLink  pvPeriod{
nullptr};
 
  756   GeoTransform* tfPeriod{
nullptr};
 
  757   GeoSerialTransformer* stPeriod{
nullptr};
 
  759   GeoTrd* absorberChild{
nullptr};
 
  760   GeoLogVol* lvAbsorberChild{
nullptr};
 
  761   PVLink  pvAbsorberChild{
nullptr};
 
  762   GeoTransform* tfAbsorberChild{
nullptr};
 
  765   switch (sec_number) {
 
  775                   << 
", dzglue: " << dzglue << 
" ==> thicknessPeriod: " << thicknessPeriod << 
endmsg;
 
  781                thicknessPeriod/2,thicknessPeriod/2,dy1Absorber,dy2Absorber,heightAbsorber/2);
 
  783       period = 
new GeoTrd(thicknessPeriod/2,
 
  789       lvPeriod = 
new GeoLogVol(
"Period",
period,matIron);
 
  790       pvPeriod = 
new GeoPhysVol(lvPeriod);
 
  800       absorberChild = 
new GeoTrd(thicknessAbsorberChild/2,
 
  801                                  thicknessAbsorberChild/2,
 
  805       lvAbsorberChild = 
new GeoLogVol(
"AbsorberChild",absorberChild,matAir);
 
  806       pvAbsorberChild = 
new GeoPhysVol(lvAbsorberChild);
 
  809       GENFUNCTION periodPos1 = (thicknessPeriod*(2*periodInd+1)-thicknessAbsorberChild)/2;
 
  810       TRANSFUNCTION xfReplica1 = Pow(GeoTrf::TranslateX3D(1.),periodPos1);
 
  812                                     (thicknessAbsorberChild - thicknessAbsorber)/2);
 
  814       stPeriod = 
new GeoSerialTransformer(pvPeriod,
 
  818       pvAbsorberChild->add(
new GeoSerialIdentifier(0));
 
  819       pvAbsorberChild->add(stPeriod);
 
  822       tfAbsorberChild = 
new GeoTransform(GeoTrf::Translate3D((thicknessAbsorberChild - thicknessAbsorber)/2,0.,0.));
 
  823       pvAbsorber->add(tfAbsorberChild);
 
  824       pvAbsorber->add(pvAbsorberChild);
 
  830                thicknessPeriod/2,thicknessPeriod/2,dy1Absorber,dy2Absorber,heightAbsorber/2);
 
  832       period = 
new GeoTrd(thicknessPeriod/2,
 
  837       lvPeriod = 
new GeoLogVol(
"Period",
period,matIron);
 
  838       pvPeriod = 
new GeoPhysVol(lvPeriod);
 
  847       thicknessAbsorberChild = thicknessPeriod;
 
  848       absorberChild = 
new GeoTrd(thicknessAbsorberChild/2,
 
  849                                  thicknessAbsorberChild/2,
 
  853       lvAbsorberChild = 
new GeoLogVol(
"AbsorberChild",absorberChild,matAir);
 
  854       pvAbsorberChild = 
new GeoPhysVol(lvAbsorberChild);
 
  857                                     (-thicknessAbsorberChild + thicknessAbsorber)/2);
 
  860       tfPeriod = 
new GeoTransform(GeoTrf::Translate3D(0.,0.,0.));
 
  863       pvAbsorberChild->add(tfPeriod);
 
  864       pvAbsorberChild->add(pvPeriod);
 
  867       tfAbsorberChild = 
new GeoTransform(GeoTrf::Translate3D((-thicknessAbsorberChild + thicknessAbsorber)/2,0.,0.));
 
  868       pvAbsorber->add(tfAbsorberChild);
 
  869       pvAbsorber->add(pvAbsorberChild);
 
  878                   << 
", dzglue: " << dzglue << 
" ==> thicknessPeriod: " << thicknessPeriod << 
endmsg;
 
  881                thicknessPeriod/2,thicknessPeriod/2,dy1Absorber,dy2Absorber,heightAbsorber/2);
 
  883       period = 
new GeoTrd(thicknessPeriod/2,
 
  888       lvPeriod = 
new GeoLogVol(
"Period",
period,matIron);
 
  889       pvPeriod = 
new GeoPhysVol(lvPeriod);
 
  902       GENFUNCTION periodPos1 = (thicknessPeriod*(2*periodInd+1)-thicknessAbsorber1)/2;
 
  903       TRANSFUNCTION xfReplica1 = Pow(GeoTrf::TranslateX3D(1.),periodPos1);
 
  905                                     (-thicknessAbsorber+thicknessAbsorber1)/2.);
 
  907       stPeriod = 
new GeoSerialTransformer(pvPeriod,&xfReplica1,nA1); 
 
  909       pvAbsorber1->add(
new GeoSerialIdentifier(0));
 
  910       pvAbsorber1->add(stPeriod);
 
  914         if ((ModuleNcp>=35 && ModuleNcp<=37) || (ModuleNcp>=60 && ModuleNcp<=62)) {
 
  916           GeoCutVolAction action1(*CutA, TransCut2);
 
  917           pvAbsorber1->apply(&action1);
 
  918           pvTmp_Absorber1 = action1.getPV();
 
  928       GENFUNCTION periodPos2 = (thicknessPeriod*(2*periodInd+1)-thicknessAbsorber2)/2;
 
  929       TRANSFUNCTION xfReplica2 = Pow(GeoTrf::TranslateX3D(1.),periodPos2);
 
  931                                     (-thicknessAbsorber+thicknessAbsorber2)/2.+thicknessAbsorber1);
 
  933       stPeriod = 
new GeoSerialTransformer(pvPeriod,&xfReplica2,nA2); 
 
  935       pvAbsorber->add(
new GeoSerialIdentifier(nA1));
 
  936       pvAbsorber->add(stPeriod);
 
  943       GENFUNCTION periodPos3 = (thicknessPeriod*(2*periodInd+1)-thicknessAbsorber3)/2;
 
  944       TRANSFUNCTION xfReplica3 = Pow(GeoTrf::TranslateX3D(1.),periodPos3);
 
  946                                     (-thicknessAbsorber+thicknessAbsorber3)/2.+thicknessAbsorber2+thicknessAbsorber1);
 
  948       stPeriod = 
new GeoSerialTransformer(pvPeriod,&xfReplica3,nA3); 
 
  950       pvAbsorber3->add(
new GeoSerialIdentifier(nA1+nA2));
 
  951       pvAbsorber3->add(stPeriod);
 
  954         if (ModuleNcp>=60 && ModuleNcp<=62) {
 
  957           GeoCutVolAction action2(*CutB, TransCutL);
 
  958           pvAbsorber3->apply(&action2);
 
  959           pvTmp_Absorber3 = action2.getPV();
 
  963         } 
else if (ModuleNcp>=35 && ModuleNcp<=37) {
 
  966           GeoCutVolAction action3(*CutB, TransCutR);
 
  967           pvAbsorber3->apply(&action3);
 
  968           pvTmp_Absorber3 = action3.getPV();
 
  990                     << 
", dzglue: " << dzglue << 
" ==> thicknessPeriod: " << thicknessPeriod << 
endmsg;
 
  992         checking(
"Period 3 (ITC1 special)", 
true, 4,
 
  993                  thicknessPeriod/2,thicknessPeriod/2,dy1Absorber,dy2Absorber,heightAbsorber/2);
 
  995         period = 
new GeoTrd(thicknessPeriod/2,
 
 1000         lvPeriod = 
new GeoLogVol(
"Period",
period,matIron);
 
 1001         pvPeriod = 
new GeoPhysVol(lvPeriod);
 
 1011         absorberChild = 
new GeoTrd(thicknessAbsorberChild/2,
 
 1012                                    thicknessAbsorberChild/2,
 
 1016         lvAbsorberChild = 
new GeoLogVol(
"AbsorberChild",absorberChild,matAir);
 
 1017         pvAbsorberChild = 
new GeoPhysVol(lvAbsorberChild);
 
 1020         GENFUNCTION periodPosITC1sp = (thicknessPeriod*(2*periodInd+1)-thicknessAbsorberChild)/2;
 
 1021         TRANSFUNCTION xfReplicaITC1sp = Pow(GeoTrf::TranslateX3D(1.),periodPosITC1sp);
 
 1023                                       (thicknessAbsorberChild - thicknessAbsorber)/2);
 
 1025         stPeriod = 
new GeoSerialTransformer(pvPeriod,
 
 1029         pvAbsorberChild->add(
new GeoSerialIdentifier(0));
 
 1030         pvAbsorberChild->add(stPeriod);
 
 1033         tfAbsorberChild = 
new GeoTransform(GeoTrf::Translate3D((thicknessAbsorberChild - thicknessAbsorber)/2,0.,0.));
 
 1034         pvAbsorber->add(tfAbsorberChild);
 
 1035         pvAbsorber->add(pvAbsorberChild);
 
 1041         checking(
"Period 5 (ITC1 special)", 
true, 4,
 
 1042                  thicknessPeriod/2,thicknessPeriod/2,dy1Absorber,dy2Absorber,heightAbsorber/2);
 
 1044         period = 
new GeoTrd(thicknessPeriod/2,
 
 1049         lvPeriod = 
new GeoLogVol(
"Period",
period,matIron);
 
 1050         pvPeriod = 
new GeoPhysVol(lvPeriod);
 
 1058         thicknessAbsorberChild = thicknessPeriod;
 
 1059         absorberChild = 
new GeoTrd(thicknessAbsorberChild/2,
 
 1060                                    thicknessAbsorberChild/2,
 
 1064         lvAbsorberChild = 
new GeoLogVol(
"AbsorberChild",absorberChild,matAir);
 
 1065         pvAbsorberChild = 
new GeoPhysVol(lvAbsorberChild);
 
 1068                                       (-thicknessAbsorberChild + thicknessAbsorber)/2);
 
 1071         tfPeriod = 
new GeoTransform(GeoTrf::Translate3D(0.,0.,0.));
 
 1073         pvAbsorberChild->add(tfPeriod);
 
 1074         pvAbsorberChild->add(pvPeriod);
 
 1077         tfAbsorberChild = 
new GeoTransform(GeoTrf::Translate3D((-thicknessAbsorberChild + thicknessAbsorber)/2,0.,0.));
 
 1078         pvAbsorber->add(tfAbsorberChild);
 
 1079         pvAbsorber->add(pvAbsorberChild);
 
 1082           (*m_log) << 
MSG::DEBUG <<
" _fillSection: Absorber (ITC plug special) Ok "<< 
endmsg;
 
 1088                  thicknessPeriod/2,thicknessPeriod/2,dy1Absorber,dy2Absorber,heightAbsorber/2);
 
 1090         period = 
new GeoTrd(thicknessPeriod/2,
 
 1095         lvPeriod = 
new GeoLogVol(
"Period",
period,matIron);
 
 1096         pvPeriod = 
new GeoPhysVol(lvPeriod);
 
 1105         GENFUNCTION periodPos3 = (thicknessPeriod*(2*periodInd+1)-thicknessAbsorber)/2;
 
 1106         TRANSFUNCTION xfReplica3 = Pow(GeoTrf::TranslateX3D(1.),periodPos3);
 
 1117         stPeriod = 
new GeoSerialTransformer(pvPeriod,
 
 1121         pvAbsorber->add(
new GeoSerialIdentifier(0));
 
 1122         pvAbsorber->add(stPeriod);
 
 1137                   << 
", dzglue: " << dzglue << 
" ==> thicknessPeriod: " << thicknessPeriod << 
endmsg;
 
 1140                thicknessPeriod/2,thicknessPeriod/2,dy1Absorber,dy2Absorber,heightAbsorber/2);
 
 1142       period = 
new GeoTrd(thicknessPeriod/2,
 
 1147       lvPeriod = 
new GeoLogVol(
"Period",
period,matIron);
 
 1148       pvPeriod = 
new GeoPhysVol(lvPeriod);
 
 1158       absorberChild = 
new GeoTrd(thicknessAbsorberChild/2,
 
 1159                                  thicknessAbsorberChild/2,
 
 1163       lvAbsorberChild = 
new GeoLogVol(
"AbsorberChild",absorberChild,matAir);
 
 1164       pvAbsorberChild = 
new GeoPhysVol(lvAbsorberChild);
 
 1167       GENFUNCTION periodPos1 = (thicknessPeriod*(2*periodInd+1)-thicknessAbsorberChild)/2;
 
 1168       TRANSFUNCTION xfReplica1 = Pow(GeoTrf::TranslateX3D(1.),periodPos1);
 
 1170                                     (thicknessAbsorberChild - thicknessAbsorber)/2);
 
 1172       stPeriod = 
new GeoSerialTransformer(pvPeriod,
 
 1176       pvAbsorberChild->add(
new GeoSerialIdentifier(0));
 
 1177       pvAbsorberChild->add(stPeriod);
 
 1180       tfAbsorberChild = 
new GeoTransform(GeoTrf::Translate3D((thicknessAbsorberChild - thicknessAbsorber)/2,0.,0.));
 
 1181       pvAbsorber->add(tfAbsorberChild);
 
 1182       pvAbsorber->add(pvAbsorberChild);
 
 1188                thicknessPeriod/2,thicknessPeriod/2,dy1Absorber,dy2Absorber,heightAbsorber/2);
 
 1190       period = 
new GeoTrd(thicknessPeriod/2,
 
 1195       lvPeriod = 
new GeoLogVol(
"Period",
period,matIron);
 
 1196       pvPeriod = 
new GeoPhysVol(lvPeriod);
 
 1204       thicknessAbsorberChild = thicknessPeriod;
 
 1205       absorberChild = 
new GeoTrd(thicknessAbsorberChild/2,
 
 1206                                  thicknessAbsorberChild/2,
 
 1210       lvAbsorberChild = 
new GeoLogVol(
"AbsorberChild",absorberChild,matAir);
 
 1211       pvAbsorberChild = 
new GeoPhysVol(lvAbsorberChild);
 
 1214                                     (-thicknessAbsorberChild + thicknessAbsorber)/2);
 
 1217       tfPeriod = 
new GeoTransform(GeoTrf::Translate3D(0.,0.,0.));
 
 1219       pvAbsorberChild->add(tfPeriod);
 
 1220       pvAbsorberChild->add(pvPeriod);
 
 1223       tfAbsorberChild = 
new GeoTransform(GeoTrf::Translate3D((-thicknessAbsorberChild + thicknessAbsorber)/2,0.,0.));
 
 1224       pvAbsorber->add(tfAbsorberChild);
 
 1225       pvAbsorber->add(pvAbsorberChild);
 
 1242         (*m_log) << MSG::ERROR << 
"TileGeoSectionBuilder::fillSection: Unexpected section = " 
 1247       thicknessPeriod = thicknessAbsorber; 
 
 1248       MLOG(
DEBUG) << 
"DEFAULT Section -- thicknessAbsorber: " << thicknessAbsorber << 
" ==> thicknessPeriod: " << thicknessPeriod << 
endmsg;
 
 1251                thicknessPeriod/2,thicknessPeriod/2,dy1Absorber,dy2Absorber,heightAbsorber/2);
 
 1255       if (dy1Period <= 0.0 || dy2Period <= 0.0 || dy1Period > dy1Absorber || dy2Period > dy2Absorber || dy1Period >= dy2Period ) {
 
 1256         dy1Period = dy1Absorber;
 
 1257         dy2Period = dy2Absorber;
 
 1260       period = 
new GeoTrd(thicknessPeriod/2,
 
 1266       lvPeriod = 
new GeoLogVol(
"Period",
period,matAluminium); 
 
 1267       pvPeriod = 
new GeoPhysVol(lvPeriod);
 
 1278       tfPeriod = 
new GeoTransform(GeoTrf::Translate3D(0.,0.,0.));
 
 1279       pvAbsorber->add(
new GeoIdentifierTag(0));
 
 1280       pvAbsorber->add(tfPeriod);
 
 1281       pvAbsorber->add(pvPeriod);
 
 1284         (*m_log) << 
MSG::DEBUG <<
" _fillSection: Absorber (case default) Ok "<< 
endmsg;
 
 1290   GeoTransform *tfAbsorber{
nullptr}, *tfAbsorber1{
nullptr}, *tfAbsorber3{
nullptr};
 
 1295   if (sec_number==3) {
 
 1298     mother->add(tfAbsorber);
 
 1299     mother->add(pvAbsorber);
 
 1301   } 
else if (sec_number==2) {
 
 1305     tfAbsorber1 = 
new GeoTransform(GeoTrf::Translate3D(dXAbsorber*
Gaudi::Units::cm/2 - PosAbsor1, 0.,
 
 1307     mother->add(tfAbsorber1);
 
 1308     if (
m_dbManager->
BoolCuts() && ((ModuleNcp>=35 && ModuleNcp<=37) || (ModuleNcp>=60 && ModuleNcp<=62)) ) {
 
 1309       mother->add(pvTmp_Absorber1);
 
 1311       mother->add(pvAbsorber1);
 
 1315       (*m_log) << 
MSG::DEBUG << 
" _fillsection  ext.barrel pvAbsorber1 Ok"<< 
endmsg;
 
 1317     tfAbsorber  = 
new GeoTransform(GeoTrf::Translate3D(dXAbsorber*
Gaudi::Units::cm/2 - PosAbsor2, 0.,
 
 1319     mother->add(tfAbsorber);
 
 1320     mother->add(pvAbsorber);
 
 1323       (*m_log) << 
MSG::DEBUG << 
" _fillsection  ext.barrel pvAbsorber Ok"<< 
endmsg;
 
 1325     tfAbsorber3 = 
new GeoTransform(GeoTrf::Translate3D(dXAbsorber*
Gaudi::Units::cm/2 - PosAbsor3, 0.,
 
 1327     mother->add(tfAbsorber3);
 
 1328     if (
m_dbManager->
BoolCuts() && ((ModuleNcp>=35 && ModuleNcp<=37) || (ModuleNcp>=60 && ModuleNcp<=62)) ) {
 
 1329       mother->add(pvTmp_Absorber3);
 
 1331       mother->add(pvAbsorber3);
 
 1335       (*m_log) << 
MSG::DEBUG << 
" _fillsection  ext.barrel pvAbsorber3 Ok"<< 
endmsg;
 
 1338     tfAbsorber = 
new GeoTransform(GeoTrf::Translate3D(dXAbsorber*
Gaudi::Units::cm/2, 0.,
 
 1340     mother->add(tfAbsorber);
 
 1341     mother->add(pvAbsorber);