9 #include "HGCal/TBStandaloneSimulator/interface/HGCSSGeometryConversion.hh"
12 HGCSSGeometryConversion::HGCSSGeometryConversion(
const int model,
14 const double cellsize)
21 HGCSSGeometryConversion::~HGCSSGeometryConversion()
27 void HGCSSGeometryConversion::initialiseSquareMap(
const double xymin,
30 initialiseSquareMap(squareMap(), xymin, side,
true);
31 fillXY(squareMap(), squareGeom);
34 void HGCSSGeometryConversion::initialiseSquareMap(TH2Poly *map,
39 unsigned nx =
static_cast<unsigned>(xymin * 2. / side);
42 Double_t x1, y1, x2, y2;
43 Double_t dx = side, dy = side;
47 for (i = 0; i < nx; i++) {
50 for (j = 0; j < ny; j++) {
51 map->AddBin(x1, y1, x2, y2);
60 std::cout <<
" -- Initialising squareMap with parameters: " << std::endl
61 <<
" ---- xymin = " << -1.*xymin <<
", side = " << side
62 <<
", nx = " << nx <<
", ny=" << ny
68 void HGCSSGeometryConversion::initialiseHoneyComb(
const double width,
71 initialiseHoneyComb(hexagonMap(), width, side,
true);
72 fillXY(hexagonMap(), hexaGeom);
75 void HGCSSGeometryConversion::initialiseHoneyComb(TH2Poly *map,
84 unsigned ncellwide = 11;
85 unsigned ny = ncellwide + 1;
86 unsigned nx = ncellwide + 4;
87 double xstart = -((double)ncellwide + 0.5) * side;
88 double ystart = -((double)ncellwide + 1) * side * sqrt(3) / 2;
90 std::cout <<
" -- Initialising HoneyComb with parameters: " << std::endl
91 <<
" ---- (xstart,ystart) = (" << xstart <<
"," << ystart <<
")"
92 <<
", side = " << side <<
", nx = " << nx <<
", ny=" << ny << std::endl;
94 myHoneycomb(map, xstart, ystart, side, ny, nx);
102 void HGCSSGeometryConversion::myHoneycomb(TH2Poly* map,
103 Double_t xstart, Double_t ystart,
109 Double_t numberOfHexagonsInAColumn;
111 Double_t xloop, yloop, ytemp;
113 yloop = ystart + a * TMath::Sqrt(3) / 2.0;
114 for (
int sCounter = 0; sCounter < s; sCounter++) {
119 if(sCounter % 2 == 0) {
120 numberOfHexagonsInAColumn = k;
122 numberOfHexagonsInAColumn = k - 1;
125 for (
int kCounter = 0; kCounter < numberOfHexagonsInAColumn; kCounter++) {
130 x[1] = x[0] + a / 2.0;
131 y[1] = y[0] + a * TMath::Sqrt(3) / 2.0;
134 x[3] = x[2] + a / 2.0;
135 y[3] = y[1] - a * TMath::Sqrt(3) / 2.0;;
137 y[4] = y[3] - a * TMath::Sqrt(3) / 2.0;;
141 map->AddBin(6, x, y);
144 ytemp += a * TMath::Sqrt(3);
148 if (sCounter % 2 == 0) yloop += a * TMath::Sqrt(3) / 2.0;
149 else yloop -= a * TMath::Sqrt(3) / 2.0;
155 void HGCSSGeometryConversion::fillXY(TH2Poly* hist,
156 std::map<
int, std::pair<double, double> >&
159 TIter next(hist->GetBins());
161 TH2PolyBin *polyBin = 0;
164 while ((obj = next())) {
165 polyBin = (TH2PolyBin*)obj;
166 int id = polyBin->GetBinNumber();
167 std::pair<double, double> xy = std::pair<double, double>((polyBin->GetXMax() + polyBin->GetXMin()) / 2., (polyBin->GetYMax() + polyBin->GetYMin()) / 2.);
168 geom.insert(std::pair<
unsigned, std::pair<double, double> >(
id, xy));
170 std::cout <<
" -- Check geomMap: size = " << geom.size() << std::endl;