@@ -570,6 +570,7 @@ void DDHGCalMixRotatedFineCassette::positionMix(const DDLogicalPart& glog,
570570 int ii = layerTypeTop_[ly];
571571 int copy = copyNumberTop_[ii];
572572 int layer = (fine) ? (copy - firstFineLayer_) : (copy - firstCoarseLayer_);
573+ int layer0 = (copy - std::min (firstFineLayer_, firstCoarseLayer_) + 1 );
573574 double hthickl = 0.5 * layerThickTop_[ii];
574575 thickTot += layerThickTop_[ii];
575576 zpos += hthickl;
@@ -584,7 +585,7 @@ void DDHGCalMixRotatedFineCassette::positionMix(const DDLogicalPart& glog,
584585 ? tileCoarseLayerStart_[layer + 1 ]
585586 : static_cast <int >(tileCoarseIndex_.size ()));
586587#ifdef EDM_ML_DEBUG
587- edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette: Layer " << ly << " :" << ii << " :" << layer
588+ edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette: Layer " << ly << " :" << ii << " :" << layer << " : " << layer0
588589 << " Copy " << copy << " Tiles " << firstTile << " :" << lastTile << " Size "
589590 << tileFineIndex_.size () << " :" << tileCoarseIndex_.size () << " Fine " << fine
590591 << " absType " << absType;
@@ -616,16 +617,16 @@ void DDHGCalMixRotatedFineCassette::positionMix(const DDLogicalPart& glog,
616617#endif
617618 double phi1 = dphi * (fimin - 1 );
618619 double phi2 = dphi * (fimax - fimin + 1 ) - tol0_;
619- auto cshift = cassette_.getShift (layer + 1 , 1 , cassette, true );
620+ auto cshift = cassette_.getShift (layer0, - 1 , cassette, true );
620621#ifdef EDM_ML_DEBUG
621- edm::LogVerbatim (" HGCalGeom" ) << " 1Layer " << ly << " :" << ii << " :" << copy << " :" << layer << " Cassette "
622+ edm::LogVerbatim (" HGCalGeom" ) << " 1Layer " << ly << " :" << ii << " :" << copy << " :" << layer0 << " Cassette "
622623 << cassette << " shift " << cshift.first << " :" << cshift.second ;
623624 int cassette0 = HGCalCassette::cassetteType (2 , 1 , cassette); //
624625 int ir1 = (fine) ? std::get<1 >(HGCalTileIndex::tileUnpack (tileFineIndex_[ti]))
625626 : std::get<1 >(HGCalTileIndex::tileUnpack (tileCoarseIndex_[ti]));
626627 int ir2 = (fine) ? std::get<2 >(HGCalTileIndex::tileUnpack (tileFineIndex_[ti]))
627628 : std::get<2 >(HGCalTileIndex::tileUnpack (tileCoarseIndex_[ti]));
628- edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette: Layer " << copy << " :" << (layer + 1 ) << " iR "
629+ edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette: Layer " << copy << " :" << layer0 << " iR "
629630 << ir1 << " :" << ir2 << " R " << r1 << " :" << r2 << " Thick " << (2.0 * hthickl)
630631 << " phi " << fimin << " :" << fimax << " :" << convertRadToDeg (phi1) << " :"
631632 << convertRadToDeg (phi2) << " cassette " << cassette << " :" << cassette0
@@ -664,6 +665,7 @@ void DDHGCalMixRotatedFineCassette::positionMix(const DDLogicalPart& glog,
664665 int ii = coverTypeTop_;
665666 int copy = copyNumberCoverTop_[absType - 1 ];
666667 int layer = (fine) ? (copy - firstFineLayer_) : (copy - firstCoarseLayer_);
668+ int layer0 = (copy - std::min (firstFineLayer_, firstCoarseLayer_) + 1 );
667669 double hthickl = 0.5 * layerThickTop_[ii];
668670 zpos += hthickl;
669671 DDName matName (DDSplit (materialTop_[ii]).first , DDSplit (materialTop_[ii]).second );
@@ -677,7 +679,7 @@ void DDHGCalMixRotatedFineCassette::positionMix(const DDLogicalPart& glog,
677679 ? tileCoarseLayerStart_[layer + 1 ]
678680 : static_cast <int >(tileCoarseIndex_.size ()));
679681#ifdef EDM_ML_DEBUG
680- edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette: TOP Layer " << ii << " :" << layer << " Copy "
682+ edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette: TOP Layer " << ii << " :" << layer << " : " << layer0 << " Copy "
681683 << copy << " Tiles " << firstTile << " :" << lastTile << " Size "
682684 << tileFineIndex_.size () << " :" << tileCoarseIndex_.size () << " Fine " << fine
683685 << " absType " << absType;
@@ -709,16 +711,16 @@ void DDHGCalMixRotatedFineCassette::positionMix(const DDLogicalPart& glog,
709711#endif
710712 double phi1 = dphi * (fimin - 1 );
711713 double phi2 = dphi * (fimax - fimin + 1 );
712- auto cshift = cassette_.getShift (layer + 1 , 1 , cassette, true );
714+ auto cshift = cassette_.getShift (layer0, - 1 , cassette, true );
713715#ifdef EDM_ML_DEBUG
714- edm::LogVerbatim (" HGCalGeom" ) << " 2Layer " << ii << " :" << copy << " :" << layer << " Cassette " << cassette
716+ edm::LogVerbatim (" HGCalGeom" ) << " 2Layer " << ii << " :" << copy << " :" << layer << " : " << layer0 << " Cassette " << cassette
715717 << " shift " << cshift.first << " :" << cshift.second ;
716718 int cassette0 = HGCalCassette::cassetteType (2 , 1 , cassette); //
717719 int ir1 = (fine) ? std::get<1 >(HGCalTileIndex::tileUnpack (tileFineIndex_[ti]))
718720 : std::get<1 >(HGCalTileIndex::tileUnpack (tileCoarseIndex_[ti]));
719721 int ir2 = (fine) ? std::get<2 >(HGCalTileIndex::tileUnpack (tileFineIndex_[ti]))
720722 : std::get<2 >(HGCalTileIndex::tileUnpack (tileCoarseIndex_[ti]));
721- edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette: Layer " << copy << " :" << (layer + 1 ) << " iR "
723+ edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette: Layer " << copy << " :" << (layer + 1 ) << " : " << layer0 << " iR "
722724 << ir1 << " :" << ir2 << " R " << r1 << " :" << r2 << " Thick " << (2.0 * hthickl)
723725 << " phi " << fimin << " :" << fimax << " :" << convertRadToDeg (phi1) << " :"
724726 << convertRadToDeg (phi2) << " cassette " << cassette << " :" << cassette0
@@ -745,20 +747,19 @@ void DDHGCalMixRotatedFineCassette::positionMix(const DDLogicalPart& glog,
745747
746748 // Make the bottom part next
747749 int layer = (copyM - firstFineLayer_);
750+ int layer0 = (copyM - std::min (firstFineLayer_, firstCoarseLayer_) + 1 );
748751#ifdef EDM_ML_DEBUG
749- edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette: Start bottom section for layer " << layer
750- << " absType " << absType;
752+ edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette: Start bottom section for layer " << (layer + 1 ) << " :" << layer0 << " absType " << absType;
751753#endif
752754 if (absType > 0 ) {
753755#ifdef EDM_ML_DEBUG
754756 int kount (0 );
755757#endif
756758 for (int k = 0 ; k < cassettes_; ++k) {
757759 int cassette = k + 1 ;
758- auto cshift = cassette_.getShift (layer + 1 , 1 , cassette);
760+ auto cshift = cassette_.getShift (layer0, - 1 , cassette);
759761#ifdef EDM_ML_DEBUG
760- edm::LogVerbatim (" HGCalGeom" ) << " 3Layer " << layer << " Cassette " << cassette << " shift " << cshift.first
761- << " :" << cshift.second ;
762+ edm::LogVerbatim (" HGCalGeom" ) << " 3Layer " << layer << " :" << layer0 << " Cassette " << cassette << " shift " << cshift.first << " :" << cshift.second ;
762763#endif
763764 double xpos = -cshift.first ;
764765 double ypos = cshift.second ;
@@ -827,18 +828,17 @@ void DDHGCalMixRotatedFineCassette::positionMix(const DDLogicalPart& glog,
827828 << " :" << waferProperty_[k] << " :" << layertype << " :" << type << " :" << part << " :" << orien << " :"
828829 << cassette << " :" << place;
829830#endif
830- auto cshift = cassette_.getShift (layer + 1 , 1 , cassette, false );
831+ auto cshift = cassette_.getShift (layer0, - 1 , cassette, false );
831832#ifdef EDM_ML_DEBUG
832- edm::LogVerbatim (" HGCalGeom" ) << " Layer " << layer << " Cassette " << cassette << " shift " << cshift.first << " :"
833- << cshift.second ;
833+ edm::LogVerbatim (" HGCalGeom" ) << " Layer " << (layer + 1 ) << " :" << layer0 << " Cassette " << cassette << " shift " << cshift.first << " :" << cshift.second ;
834834#endif
835835 double xpos = xyoff.first - cshift.first + nc * delx;
836836 double ypos = xyoff.second + cshift.second + nr * dy;
837837#ifdef EDM_ML_DEBUG
838838 double xorig = xyoff.first + nc * delx;
839839 double yorig = xyoff.second + nr * dy;
840840 double angle = std::atan2 (yorig, xorig);
841- edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette::Wafer: layer " << layer + 1 << " cassette "
841+ edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette::Wafer: layer " << layer + 1 << " : " << layer0 << " cassette "
842842 << cassette << " Shift " << cshift.first << " :" << cshift.second << " Original "
843843 << xorig << " :" << yorig << " :" << convertRadToDeg (angle) << " Final " << xpos
844844 << " :" << ypos;
0 commit comments