Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Phase2-hgx310 Correct cassette positioning in view of modified flat file format for HGCal silicon #37662

Merged
merged 1 commit into from Apr 27, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 0 additions & 1 deletion Geometry/HGCalCommonData/interface/HGCalCassette.h
Expand Up @@ -19,7 +19,6 @@ class HGCalCassette {
int cassette_;
bool typeHE_;
std::vector<double> shifts_;
std::vector<double> cos_, sin_;
};

#endif
20 changes: 4 additions & 16 deletions Geometry/HGCalCommonData/src/HGCalCassette.cc
@@ -1,39 +1,27 @@
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "Geometry/HGCalCommonData/interface/HGCalCassette.h"
#include "DataFormats/Math/interface/angle_units.h"
#include <sstream>

#define EDM_ML_DEBUG
//#define EDM_ML_DEBUG

void HGCalCassette::setParameter(int cassette, const std::vector<double>& shifts) {
cassette_ = cassette;
typeHE_ = (cassette_ >= 12);
shifts_.insert(shifts_.end(), shifts.begin(), shifts.end());
double dphi = angle_units::piRadians / cassette_;
for (int k = 0; k < cassette_; ++k) {
double angle = (2 * k - 1) * dphi;
cos_.emplace_back(std::cos(angle));
sin_.emplace_back(std::sin(angle));
}
#ifdef EDM_ML_DEBUG
edm::LogVerbatim("HGCalGeom") << "# of cassettes = " << cassette_ << " Type " << typeHE_ << " dPhi " << dphi;
edm::LogVerbatim("HGCalGeom") << "# of cassettes = " << cassette_ << " Type " << typeHE_;
std::ostringstream st1;
st1 << " Shifts:";
for (const auto& s : shifts_)
st1 << ":" << s;
edm::LogVerbatim("HGCalGeom") << st1.str();
std::ostringstream st2;
st2 << " Cos|Sin:";
for (int k = 0; k < cassette_; ++k)
st2 << " " << cos_[k] << ":" << sin_[k];
edm::LogVerbatim("HGCalGeom") << st2.str();
#endif
}

std::pair<double, double> HGCalCassette::getShift(int layer, int zside, int cassette) {
int locc = (zside < 0) ? (cassette - 1) : (typeHE_ ? positHE_[cassette - 1] : positEE_[cassette - 1]);
int loc = cassette_ * (layer - 1) + locc;
std::pair<double, double> xy = std::make_pair(shifts_[loc] * cos_[locc], shifts_[loc] * sin_[locc]);
int loc = 2 * cassette_ * (layer - 1) + locc;
std::pair<double, double> xy = std::make_pair(shifts_[loc], shifts_[loc + 1]);
#ifdef EDM_ML_DEBUG
edm::LogVerbatim("HGCalGeom") << "HGCalCassette::getShift: Layer " << layer << " zside " << zside << " cassette "
<< cassette << " Loc " << locc << ":" << loc << " shift " << xy.first << ":"
Expand Down
10 changes: 4 additions & 6 deletions Geometry/HGCalCommonData/test/HGCalConvert.cpp
Expand Up @@ -605,7 +605,7 @@ void ConvertSiliconV2::convert(
HGCalTypes::WaferLDRight,
HGCalTypes::WaferLDFive,
HGCalTypes::WaferLDThree};
const unsigned int cassetteEE(6), cassetteHE(12);
const unsigned int cassetteEE(12), cassetteHE(24);
std::map<int, wafer> module1, module2, module3;
unsigned int all(0), comments(0), others(0), bad(0), good(0);
unsigned int layers(layMax3_);
Expand Down Expand Up @@ -814,24 +814,22 @@ void ConvertSiliconV2::writeSilicon(const char* outfile,
fOut << std::setw(5) << layerStart[k3] << last;
}
fOut << "\n" << blank << "</Vector>\n";
unsigned int csize = cassettes * layers.size() + 1;
unsigned int csize = cassettes * layers.size();
if (mode) {
fOut << blank << "<Vector name=" << apost << "CassetteShift" << tag << apost << " type=" << apost << "numeric"
<< apost << " nEntries=" << apost << csize << apost << ">";
} else {
fOut << blank << "<Vector name=" << apost << "CastteShift" << apost << " type=" << apost << "numeric" << apost
<< " nEntries=" << apost << csize << apost << ">";
}
std::string last = (layers.size() == 0) ? " " : ",";
fOut << "\n " << blank << std::setw(2) << cassettes << last;
for (const auto& l : layers) {
++k3;
for (unsigned int k = 0; k < cassettes; ++k) {
std::string last = ((k3 == layers.size()) && ((k + 1) == cassettes)) ? " " : ",";
if ((k == 0) || (k == 6))
fOut << "\n " << blank << std::setw(8) << l.deltaR[k] << last;
fOut << "\n " << blank << std::setw(9) << l.deltaR[k] << last;
else
fOut << std::setw(8) << l.deltaR[k] << last;
fOut << std::setw(9) << l.deltaR[k] << last;
}
}
fOut << "\n" << blank << "</Vector>\n";
Expand Down