Skip to content

Commit 1b3747b

Browse files
author
Sunanda
committed
Apply radial retracttion for tiles
1 parent 64de6d4 commit 1b3747b

File tree

3 files changed

+60
-14
lines changed

3 files changed

+60
-14
lines changed

Geometry/HGCalCommonData/interface/HGCalCassette.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ class HGCalCassette {
1212

1313
void setParameter(int cassette, const std::vector<double>& shifts, bool both = true);
1414
void setParameterScint(const std::vector<double>& shifts);
15+
void setParameterRetract(const std::vector<double>& shifts);
1516
std::pair<double, double> getShift(int layer, int zside, int cassette, bool scnt = false) const;
17+
std::pair<double, double> getShiftScnt(int layer, int zside, double phi) const;
1618
static int cassetteIndex(int det, int layer, int zside, int cassette);
1719
static int cassetteType(int det, int zside, int cassette);
1820

@@ -21,7 +23,7 @@ class HGCalCassette {
2123
static constexpr int positHE_[12] = {5, 4, 3, 2, 1, 0, 11, 10, 9, 8, 7, 6};
2224
int cassette_;
2325
bool typeHE_;
24-
std::vector<double> shifts_, shiftsScnt_;
26+
std::vector<double> shifts_, shiftsScnt_, retractScnt_;
2527
static constexpr int32_t factor_ = 100;
2628
};
2729

Geometry/HGCalCommonData/plugins/DDHGCalMixRotatedFineCassette.cc

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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;

Geometry/HGCalCommonData/src/HGCalCassette.cc

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ void HGCalCassette::setParameter(int cassette, const std::vector<double>& shifts
3939
}
4040

4141
void HGCalCassette::setParameterScint(const std::vector<double>& shifts) {
42-
// shifts_.insert(shifts_.end(), shifts.begin(), shifts.end());
4342
shiftsScnt_.insert(shiftsScnt_.end(), shifts.begin(), shifts.end());
4443
#ifdef EDM_ML_DEBUG
4544
edm::LogVerbatim("HGCalGeom") << "HGCalCassette::setParameterScint with Size " << shifts.size();
@@ -58,6 +57,25 @@ void HGCalCassette::setParameterScint(const std::vector<double>& shifts) {
5857
#endif
5958
}
6059

60+
void HGCalCassette::setParameterRetract(const std::vector<double>& shifts) {
61+
retractScnt_.insert(retractScnt_.end(), shifts.begin(), shifts.end());
62+
#ifdef EDM_ML_DEBUG
63+
edm::LogVerbatim("HGCalGeom") << "HGCalCassette::setParameterRetract with Size " << shifts.size();
64+
for (uint32_t j1 = 0; j1 < shifts.size(); j1 += 12) {
65+
std::ostringstream st1;
66+
if (j1 == 0) {
67+
st1 << " RetractScnt:";
68+
} else {
69+
st1 << " ";
70+
}
71+
uint32_t j2 = std::min((j1 + 12), static_cast<uint32_t>(shifts.size()));
72+
for (uint32_t j = j1; j < j2; ++j)
73+
st1 << ":" << shifts[j];
74+
edm::LogVerbatim("HGCalGeom") << st1.str();
75+
}
76+
#endif
77+
}
78+
6179
std::pair<double, double> HGCalCassette::getShift(int layer, int zside, int cassette, bool scnt) const {
6280
int locc = (zside < 0) ? (cassette - 1) : (typeHE_ ? positHE_[cassette - 1] : positEE_[cassette - 1]);
6381
int loc = 2 * (cassette_ * (layer - 1) + locc);
@@ -76,6 +94,19 @@ std::pair<double, double> HGCalCassette::getShift(int layer, int zside, int cass
7694
return xy;
7795
}
7896

97+
std::pair<double, double> HGCalCassette::getShiftScnt(int layer, int zside, double phi) const {
98+
int loc = (layer - 1);
99+
double fac = (zside < 0) ? 1.0 : -1.0;
100+
#ifdef EDM_ML_DEBUG
101+
edm::LogVerbatim("HGCalGeom") << "HGCalCassette::getShiftScnt: layer|zside|phi " << layer << ":" << zside << ":" << phi << " loc " << loc << " size " << retractScnt_.size();
102+
#endif
103+
std::pair<double, double> xy = std::make_pair(fac * retractScnt_[loc] * cos(phi), retractScnt_[loc] * sin(phi));
104+
#ifdef EDM_ML_DEBUG
105+
edm::LogVerbatim("HGCalGeom") << "HGCalCassette::getShiftScnt: Layer " << layer << " zside " << zside << " Loc " << loc << " fac " << fac << " shift " << xy.first << ":" << xy.second;
106+
#endif
107+
return xy;
108+
}
109+
79110
int HGCalCassette::cassetteIndex(int det, int layer, int side, int cassette) {
80111
int zs = (side > 0) ? factor_ : 0;
81112
return (((zs + det) * factor_ + layer) * factor_ + cassette);

0 commit comments

Comments
 (0)