@@ -404,6 +404,7 @@ void DDHGCalMixRotatedFineCassette::initialize(const DDNumericArguments& nArgs,
404404#endif
405405 cassette_.setParameter (cassettes_, cassetteShift_, false );
406406 cassette_.setParameterScint (cassetteShiftScnt_);
407+ cassette_.setParameterRetract (retract);
407408
408409 int testCassette = static_cast <int >(nArgs[" TestCassetteShift" ]);
409410 if (testCassette != 0 )
@@ -589,10 +590,11 @@ void DDHGCalMixRotatedFineCassette::positionMix(const DDLogicalPart& glog,
589590 << layer0 << " Copy " << copy << " Tiles " << firstTile << " :" << lastTile
590591 << " Size " << tileFineIndex_.size () << " :" << tileCoarseIndex_.size () << " Fine "
591592 << fine << " absType " << absType;
593+ int cassette;
592594#endif
593595 for (int ti = firstTile; ti < lastTile; ++ti) {
594596 double r1, r2;
595- int cassette, fimin, fimax;
597+ int fimin, fimax;
596598#ifdef EDM_ML_DEBUG
597599 edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette: ti " << ti << " :" << fine << " index "
598600 << tileFineIndex_.size () << " :" << tileCoarseIndex_.size () << " Phis "
@@ -601,26 +603,31 @@ void DDHGCalMixRotatedFineCassette::positionMix(const DDLogicalPart& glog,
601603 if (fine) {
602604 r1 = tileFineRMin_[std::get<1 >(HGCalTileIndex::tileUnpack (tileFineIndex_[ti])) - 1 ];
603605 r2 = tileFineRMax_[std::get<2 >(HGCalTileIndex::tileUnpack (tileFineIndex_[ti])) - 1 ];
606+ #ifdef EDM_ML_DEBUG
604607 cassette = std::get<0 >(HGCalTileIndex::tileUnpack (tileFinePhis_[ti]));
608+ #endif
605609 fimin = std::get<1 >(HGCalTileIndex::tileUnpack (tileFinePhis_[ti]));
606610 fimax = std::get<2 >(HGCalTileIndex::tileUnpack (tileFinePhis_[ti]));
607611 } else {
608612 r1 = tileCoarseRMin_[std::get<1 >(HGCalTileIndex::tileUnpack (tileCoarseIndex_[ti])) - 1 ];
609613 r2 = tileCoarseRMax_[std::get<2 >(HGCalTileIndex::tileUnpack (tileCoarseIndex_[ti])) - 1 ];
614+ #ifdef EDM_ML_DEBUG
610615 cassette = std::get<0 >(HGCalTileIndex::tileUnpack (tileCoarsePhis_[ti]));
616+ #endif
611617 fimin = std::get<1 >(HGCalTileIndex::tileUnpack (tileCoarsePhis_[ti]));
612618 fimax = std::get<2 >(HGCalTileIndex::tileUnpack (tileCoarsePhis_[ti]));
613619 }
614620#ifdef EDM_ML_DEBUG
615621 edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette: Casstee|Fimin|Fimax " << cassette << " :"
616622 << fimin << " :" << fimax;
617623#endif
618- double phi1 = dphi * (fimin - 1 );
624+ double phi1 = dphi * (fimin - 1 ) + 0.5 * tol0_ ;
619625 double phi2 = dphi * (fimax - fimin + 1 ) - tol0_;
620- auto cshift = cassette_.getShift (layer0, -1 , cassette, true );
626+ double phi = phi1 + 0.5 * phi2;
627+ auto cshift = cassette_.getShiftScnt (layer0, -1 , phi);
621628#ifdef EDM_ML_DEBUG
622- edm::LogVerbatim (" HGCalGeom" ) << " 1Layer " << ly << " :" << ii << " :" << copy << " :" << layer0 << " Cassette "
623- << cassette << " shift " << cshift.first << " :" << cshift.second ;
629+ edm::LogVerbatim (" HGCalGeom" ) << " 1Layer " << ly << " :" << ii << " :" << copy << " :" << layer0 << " phi "
630+ << phi << " shift " << cshift.first << " :" << cshift.second ;
624631 int cassette0 = HGCalCassette::cassetteType (2 , 1 , cassette); //
625632 int ir1 = (fine) ? std::get<1 >(HGCalTileIndex::tileUnpack (tileFineIndex_[ti]))
626633 : std::get<1 >(HGCalTileIndex::tileUnpack (tileCoarseIndex_[ti]));
@@ -686,35 +693,41 @@ void DDHGCalMixRotatedFineCassette::positionMix(const DDLogicalPart& glog,
686693#endif
687694 for (int ti = firstTile; ti < lastTile; ++ti) {
688695 double r1, r2;
689- int cassette, fimin, fimax;
696+ int fimin, fimax;
690697#ifdef EDM_ML_DEBUG
691698 edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette: ti " << ti << " :" << fine << " index "
692699 << tileFineIndex_.size () << " :" << tileCoarseIndex_.size () << " Phis "
693700 << tileFinePhis_.size () << " :" << tileCoarsePhis_.size ();
701+ int cassette;
694702#endif
695703 if (fine) {
696704 r1 = tileFineRMin_[std::get<1 >(HGCalTileIndex::tileUnpack (tileFineIndex_[ti])) - 1 ];
697705 r2 = tileFineRMax_[std::get<2 >(HGCalTileIndex::tileUnpack (tileFineIndex_[ti])) - 1 ];
706+ #ifdef EDM_ML_DEBUG
698707 cassette = std::get<0 >(HGCalTileIndex::tileUnpack (tileFinePhis_[ti]));
708+ #endif
699709 fimin = std::get<1 >(HGCalTileIndex::tileUnpack (tileFinePhis_[ti]));
700710 fimax = std::get<2 >(HGCalTileIndex::tileUnpack (tileFinePhis_[ti]));
701711 } else {
702712 r1 = tileCoarseRMin_[std::get<1 >(HGCalTileIndex::tileUnpack (tileCoarseIndex_[ti])) - 1 ];
703713 r2 = tileCoarseRMax_[std::get<2 >(HGCalTileIndex::tileUnpack (tileCoarseIndex_[ti])) - 1 ];
714+ #ifdef EDM_ML_DEBUG
704715 cassette = std::get<0 >(HGCalTileIndex::tileUnpack (tileCoarsePhis_[ti]));
716+ #endif
705717 fimin = std::get<1 >(HGCalTileIndex::tileUnpack (tileCoarsePhis_[ti]));
706718 fimax = std::get<2 >(HGCalTileIndex::tileUnpack (tileCoarsePhis_[ti]));
707719 }
708720#ifdef EDM_ML_DEBUG
709721 edm::LogVerbatim (" HGCalGeom" ) << " DDHGCalMixRotatedFineCassette: Casstee|Fimin|Fimax " << cassette << " :" << fimin
710722 << " :" << fimax;
711723#endif
712- double phi1 = dphi * (fimin - 1 );
713- double phi2 = dphi * (fimax - fimin + 1 );
714- auto cshift = cassette_.getShift (layer0, -1 , cassette, true );
724+ double phi1 = dphi * (fimin - 1 ) + 0.5 * tol0_;
725+ double phi2 = dphi * (fimax - fimin + 1 ) - tol0_;
726+ double phi = phi1 + 0.5 * phi2;
727+ auto cshift = cassette_.getShiftScnt (layer0, -1 , phi);
715728#ifdef EDM_ML_DEBUG
716- edm::LogVerbatim (" HGCalGeom" ) << " 2Layer " << ii << " :" << copy << " :" << layer << " :" << layer0 << " Cassette "
717- << cassette << " shift " << cshift.first << " :" << cshift.second ;
729+ edm::LogVerbatim (" HGCalGeom" ) << " 2Layer " << ii << " :" << copy << " :" << layer << " :" << layer0 << " phi "
730+ << phi << " shift " << cshift.first << " :" << cshift.second ;
718731 int cassette0 = HGCalCassette::cassetteType (2 , 1 , cassette); //
719732 int ir1 = (fine) ? std::get<1 >(HGCalTileIndex::tileUnpack (tileFineIndex_[ti]))
720733 : std::get<1 >(HGCalTileIndex::tileUnpack (tileCoarseIndex_[ti]));
@@ -758,7 +771,7 @@ void DDHGCalMixRotatedFineCassette::positionMix(const DDLogicalPart& glog,
758771#endif
759772 for (int k = 0 ; k < cassettes_; ++k) {
760773 int cassette = k + 1 ;
761- auto cshift = cassette_.getShift (layer0, -1 , cassette);
774+ auto cshift = cassette_.getShift (layer0, -1 , cassette, false );
762775#ifdef EDM_ML_DEBUG
763776 edm::LogVerbatim (" HGCalGeom" ) << " 3Layer " << layer << " :" << layer0 << " Cassette " << cassette << " shift "
764777 << cshift.first << " :" << cshift.second ;
0 commit comments