Detector geometry and addressing related imformation and routines. More...
#include <CSCDQM_Detector.h>
Public Member Functions | |
const bool | AddressFromString (const std::string &str_address, Address &adr) const |
Construct address from string. | |
const float | Area (const unsigned int station) const |
Calculate station area in eta/phi space. | |
const float | Area (const Address &adr) const |
Calculate address area in eta/phi space. | |
Detector (const unsigned int p_partitions_x=0, const unsigned int p_partitions_y=0) | |
Constructor. | |
unsigned int | GlobalChamberIndex (unsigned int side, unsigned int station, unsigned int ring, unsigned int chamber) const |
Return global chamber index on his geometric location. | |
const bool | NextAddress (unsigned int &i, const Address *&adr, const Address &mask) const |
Address iterator by mask. | |
const bool | NextAddressBox (unsigned int &i, const AddressBox *&box, const Address &mask) const |
Address box iterator by mask. | |
const bool | NextAddressBoxByPartition (unsigned int &i, const unsigned int px, const unsigned int py, AddressBox *&box) |
Address box iterator by partition. | |
const unsigned int | NumberOfChamberCFEBs (const unsigned int station, const unsigned int ring) const |
Returns the number of CFEBs per Chamber on given Station/Ring. | |
const unsigned int | NumberOfChamberHVs (const unsigned int station, const unsigned int ring) const |
Returns the number of HVs per Chamber on given Station/Ring. | |
const unsigned int | NumberOfChambers (const unsigned int station, const unsigned int ring) const |
Returns the number of chambers for the given station and ring. | |
const unsigned int | NumberOfRings (const unsigned int station) const |
Returns the number of rings for the given station. | |
void | PrintAddress (const Address &adr) const |
Prints address for debugging. | |
Private Member Functions | |
const float | Eta (const float r, const float z) const |
const float | EtaToX (const float eta) const |
Transform eta coordinate to local canvas coordinate. | |
const float | PhiMaxCFEB (const int station, const int ring, const int chamber, const int cfeb) const |
Get Max phi boundary for particular CFEB. | |
const float | PhiMinCFEB (const int station, const int ring, const int chamber, const int cfeb) const |
Get Min phi boundary for particular CFEB. | |
const float | PhiToY (const float phi) const |
Transform phi coordinate to local canvas coordinate. | |
const float | RMaxHV (const int station, const int ring, const int n_hv) const |
Get R max parameter (used in address eta/phi calculation) | |
const float | RMinHV (const int station, const int ring, const int n_hv) const |
Get R min parameter (used in address eta/phi calculation) | |
const float | Z (const int station, const int ring) const |
Get Z parameter (used in address eta/phi calculation) | |
Private Attributes | |
AddressBox | boxes [N_ELEMENTS] |
PartitionMap | partitions |
unsigned int | partitions_x |
unsigned int | partitions_y |
float | station_area [N_STATIONS] |
Detector geometry and addressing related imformation and routines.
Definition at line 183 of file CSCDQM_Detector.h.
cscdqm::Detector::Detector | ( | const unsigned int | p_partitions_x = 0 , |
const unsigned int | p_partitions_y = 0 |
||
) |
Constructor.
p_partition_x | Number of efficiency partitions on X axis |
p_partition_y | Number of efficiency partitions on Y axis |
Creating real eta/phi boxes for available addresses
Address box calculated successfully. Now lets cache its partition elements for performace.
Cached the most frequently used areas
Definition at line 33 of file CSCDQM_Detector.cc.
References cscdqm::AddressBox::adr, Area(), boxes, cscdqm::Address::cfeb, cscdqm::AddressMask::cfeb, cscdqm::Address::chamber, cscdqm::AddressMask::chamber, Eta(), EtaToX(), cscdqm::AddressMask::hv, cscdqm::Address::hv, i, getHLTprescales::index, cscdqm::AddressMask::layer, cscdqm::Address::mask, N_SIDES, N_STATIONS, NumberOfChamberCFEBs(), NumberOfChamberHVs(), NumberOfChambers(), NumberOfRings(), PARTITION_INDEX, PARTITION_STEP_X, PARTITION_STEP_Y, partitions, partitions_x, partitions_y, PhiMaxCFEB(), PhiMinCFEB(), PhiToY(), cscdqm::AddressMask::ring, cscdqm::Address::ring, RMaxHV(), RMinHV(), cscdqm::Address::side, cscdqm::AddressMask::side, cscdqm::Address::station, cscdqm::AddressMask::station, station_area, v, x, cscdqm::AddressBox::xmax, cscdqm::AddressBox::xmin, detailsBasic3DVector::y, cscdqm::AddressBox::ymax, cscdqm::AddressBox::ymin, Z(), and z.
{ partitions_x = p_partitions_x; partitions_y = p_partitions_y; unsigned int i = 0; Address adr; adr.mask.layer = false; adr.mask.side = adr.mask.station = adr.mask.ring = adr.mask.chamber = adr.mask.cfeb = adr.mask.hv = true; for (adr.side = 1; adr.side <= N_SIDES; adr.side++) { float sign = +1.0; if(adr.side == 2) sign = -1.0; for (adr.station = 1; adr.station <= N_STATIONS; adr.station++) { for (adr.ring = 1; adr.ring <= NumberOfRings(adr.station); adr.ring++) { for (adr.chamber = 1; adr.chamber <= NumberOfChambers(adr.station, adr.ring); adr.chamber++) { for (adr.cfeb = 1; adr.cfeb <= NumberOfChamberCFEBs(adr.station, adr.ring); adr.cfeb++) { for (adr.hv = 1; adr.hv <= NumberOfChamberHVs(adr.station, adr.ring); adr.hv++) { float z = Z(adr.station, adr.ring); float r_min = RMinHV(adr.station, adr.ring, adr.hv); float r_max = RMaxHV(adr.station, adr.ring, adr.hv); float eta_min = sign * Eta(r_min, z); float eta_max = sign * Eta(r_max, z); float x_min = EtaToX(eta_min); float x_max = EtaToX(eta_max); float phi_min = 0; float phi_max = 0; if(adr.station == 1 && adr.ring == 1 && adr.hv == 1) { phi_min = PhiMinCFEB(adr.station, adr.ring, adr.chamber, 1); phi_max = PhiMaxCFEB(adr.station, adr.ring, adr.chamber, NumberOfChamberCFEBs(adr.station, adr.ring)); } else { phi_min = PhiMinCFEB(adr.station, adr.ring, adr.chamber, adr.cfeb); phi_max = PhiMaxCFEB(adr.station, adr.ring, adr.chamber, adr.cfeb); } float y_min = PhiToY(phi_min); float y_max = PhiToY(phi_max); boxes[i].adr = adr; float xboxmin = (x_min < x_max ? x_min : x_max); float xboxmax = (x_max > x_min ? x_max : x_min); float yboxmin = (y_min < y_max ? y_min : y_max); float yboxmax = (y_max > y_min ? y_max : y_min); boxes[i].xmin = xboxmin; boxes[i].xmax = xboxmax; boxes[i].ymin = yboxmin; boxes[i].ymax = yboxmax; unsigned int x1 = int(floor(xboxmin / PARTITION_STEP_X)) + int(partitions_x / 2); unsigned int x2 = int( ceil(xboxmax / PARTITION_STEP_X)) + int(partitions_x / 2); unsigned int y1 = int(floor(yboxmin / PARTITION_STEP_Y)); unsigned int y2 = int( ceil(yboxmax / PARTITION_STEP_Y)); for (unsigned int x = x1; x < x2; x++) { for (unsigned int y = y1; y < y2; y++) { unsigned int index = PARTITION_INDEX(x, y); PartitionMapIterator iter = partitions.find(index); if (iter == partitions.end()) { std::vector<unsigned int> v; partitions.insert(std::make_pair(index, v)); } partitions[index].push_back(i); } } i++; } } } } } } adr.mask.side = adr.mask.ring = adr.mask.chamber = adr.mask.layer = adr.mask.cfeb = adr.mask.hv = false; adr.mask.station = true; adr.station = 1; station_area[0] = Area(adr); adr.station = 2; station_area[1] = Area(adr); adr.station = 3; station_area[2] = Area(adr); adr.station = 4; station_area[3] = Area(adr); }
const bool cscdqm::Detector::AddressFromString | ( | const std::string & | str_address, |
Address & | adr | ||
) | const |
Construct address from string.
Definition at line 572 of file CSCDQM_Detector.cc.
References ADDR_SIZE, cscdqm::Address::cfeb, cscdqm::AddressMask::cfeb, cscdqm::Address::chamber, cscdqm::AddressMask::chamber, cscdqm::AddressMask::hv, cscdqm::Address::hv, cscdqm::AddressMask::layer, cscdqm::Address::layer, cscdqm::Address::mask, alignCSCRings::r, cscdqm::AddressMask::ring, cscdqm::Address::ring, cscdqm::Address::side, cscdqm::AddressMask::side, splitString(), cscdqm::Address::station, cscdqm::AddressMask::station, and cscdqm::Utility::trimString().
Referenced by cscdqm::Summary::setMaskedHWElements().
{ std::vector<std::string> tokens; Utility::splitString(str_address, ",", tokens); if (tokens.size() != ADDR_SIZE) return false; for (unsigned int r = 0; r < ADDR_SIZE; r++) { std::string token = tokens.at(r); Utility::trimString(token); bool mask = false; unsigned int num = 0; if (token.compare("*") != 0) { if(stringToNumber<unsigned int>(num, token, std::dec)) { mask = true; } else { return false; } } switch (r) { case 0: adr.mask.side = mask; adr.side = num; break; case 1: adr.mask.station = mask; adr.station = num; break; case 2: adr.mask.ring = mask; adr.ring = num; break; case 3: adr.mask.chamber = mask; adr.chamber = num; break; case 4: adr.mask.layer = mask; adr.layer = num; break; case 5: adr.mask.cfeb = mask; adr.cfeb = num; break; case 6: adr.mask.hv = mask; adr.hv = num; } } return true; }
const float cscdqm::Detector::Area | ( | const Address & | adr | ) | const |
Calculate address area in eta/phi space.
adr | Address |
Definition at line 184 of file CSCDQM_Detector.cc.
References a, boxes, i, and N_ELEMENTS.
const float cscdqm::Detector::Area | ( | const unsigned int | station | ) | const |
Calculate station area in eta/phi space.
station | Station number |
Definition at line 138 of file CSCDQM_Detector.cc.
References N_STATIONS, and station_area.
Referenced by Detector(), cscdqm::Summary::GetEfficiencyArea(), and cscdqm::Summary::GetReportingArea().
{ if (station > 0 && station <= N_STATIONS) { return station_area[station - 1]; } return 0; }
const float cscdqm::Detector::Eta | ( | const float | r, |
const float | z | ||
) | const [private] |
Definition at line 356 of file CSCDQM_Detector.cc.
References create_public_lumi_plots::log, and mathSSE::sqrt().
Referenced by Detector().
const float cscdqm::Detector::EtaToX | ( | const float | eta | ) | const [private] |
Transform eta coordinate to local canvas coordinate.
eta | Eta coordinate |
Definition at line 372 of file CSCDQM_Detector.cc.
Referenced by Detector().
unsigned int cscdqm::Detector::GlobalChamberIndex | ( | unsigned int | side, |
unsigned int | station, | ||
unsigned int | ring, | ||
unsigned int | chamber | ||
) | const |
Return global chamber index on his geometric location.
side | Side (1,2) |
station | Station |
ring | Ring\ |
chamber | Chamber position |
Definition at line 153 of file CSCDQM_Detector.cc.
References cscdqm::AddressMask::cfeb, cscdqm::Address::chamber, cscdqm::AddressMask::chamber, cscdqm::AddressMask::hv, i, cscdqm::AddressMask::layer, cscdqm::Address::mask, N_SIDES, N_STATIONS, NumberOfChambers(), NumberOfRings(), cscdqm::AddressMask::ring, cscdqm::Address::ring, relativeConstraints::ring, cscdqm::Address::side, cscdqm::AddressMask::side, cscdqm::Address::station, relativeConstraints::station, and cscdqm::AddressMask::station.
Referenced by cscdqm::EventProcessor::processCSC().
{ Address adr, iadr; adr.mask.side = adr.mask.station = adr.mask.ring = adr.mask.chamber = true; adr.mask.layer = adr.mask.cfeb = adr.mask.hv = false; adr.side = side; adr.station = station; adr.ring = ring; adr.chamber = chamber; iadr = adr; unsigned int i = 1; for (iadr.side = 1; iadr.side <= N_SIDES; iadr.side++) { for (iadr.station = 1; iadr.station <= N_STATIONS; iadr.station++) { for (iadr.ring = 1; iadr.ring <= NumberOfRings(iadr.station); iadr.ring++) { for (iadr.chamber = 1; iadr.chamber <= NumberOfChambers(iadr.station, iadr.ring); iadr.chamber++) { if (iadr == adr) { return i; } i += 1; } } } } return 0; }
const bool cscdqm::Detector::NextAddress | ( | unsigned int & | i, |
const Address *& | adr, | ||
const Address & | mask | ||
) | const |
Address iterator by mask.
Definition at line 302 of file CSCDQM_Detector.cc.
References cscdqm::AddressBox::adr, boxes, i, and N_ELEMENTS.
const bool cscdqm::Detector::NextAddressBox | ( | unsigned int & | i, |
const AddressBox *& | box, | ||
const Address & | mask | ||
) | const |
Address box iterator by mask.
i | Iterator |
adr | AddressBox to return |
mask | for addresses |
Definition at line 320 of file CSCDQM_Detector.cc.
References boxes, i, and N_ELEMENTS.
Referenced by cscdqm::Summary::Write().
const bool cscdqm::Detector::NextAddressBoxByPartition | ( | unsigned int & | i, |
const unsigned int | px, | ||
const unsigned int | py, | ||
AddressBox *& | box | ||
) |
Address box iterator by partition.
i | Iterator |
px | Partition x index |
py | Partition y index |
box | AddressBox to return |
Definition at line 340 of file CSCDQM_Detector.cc.
References boxes, getHLTprescales::index, PARTITION_INDEX, partitions, and findQualityFiles::size.
Referenced by cscdqm::Summary::IsPhysicsReady().
{ unsigned int index = PARTITION_INDEX(px, py); PartitionMapIterator iter = partitions.find(index); if (iter != partitions.end()) { if (i < partitions[index].size()) { box = &boxes[partitions[index].at(i)]; i++; return true; } } return false; }
const unsigned int cscdqm::Detector::NumberOfChamberCFEBs | ( | const unsigned int | station, |
const unsigned int | ring | ||
) | const |
Returns the number of CFEBs per Chamber on given Station/Ring.
station | Station number (1...4) |
ring | Ring number (1...3) |
Definition at line 232 of file CSCDQM_Detector.cc.
Referenced by Detector(), cscdqm::Summary::GetEfficiencyHW(), cscdqm::Summary::GetReportingArea(), cscdqm::Summary::GetValue(), PhiMaxCFEB(), PhiMinCFEB(), and cscdqm::Summary::SetValue().
{ if(station == 1 && ring == 1) return 4; if(station == 1 && ring == 2) return 5; if(station == 1 && ring == 3) return 4; if(station == 2 && ring == 1) return 5; if(station == 2 && ring == 2) return 5; if(station == 3 && ring == 1) return 5; if(station == 3 && ring == 2) return 5; if(station == 4 && ring == 1) return 5; if(station == 4 && ring == 2) return 5; return 0; }
const unsigned int cscdqm::Detector::NumberOfChamberHVs | ( | const unsigned int | station, |
const unsigned int | ring | ||
) | const |
Returns the number of HVs per Chamber on given Station/Ring.
station | Station number (1...4) |
ring | Ring number (1...3) |
Definition at line 251 of file CSCDQM_Detector.cc.
Referenced by Detector(), cscdqm::Summary::GetEfficiencyHW(), cscdqm::Summary::GetReportingArea(), cscdqm::Summary::GetValue(), and cscdqm::Summary::SetValue().
{ if(station == 1 && ring == 1) return 2; if(station == 1 && ring == 2) return 3; if(station == 1 && ring == 3) return 3; if(station == 2 && ring == 1) return 3; if(station == 2 && ring == 2) return 5; if(station == 3 && ring == 1) return 3; if(station == 3 && ring == 2) return 5; if(station == 4 && ring == 1) return 3; if(station == 4 && ring == 2) return 5; return 0; }
const unsigned int cscdqm::Detector::NumberOfChambers | ( | const unsigned int | station, |
const unsigned int | ring | ||
) | const |
Returns the number of chambers for the given station and ring.
station | Station number (1...4) |
ring | Ring number (1...3) |
Definition at line 213 of file CSCDQM_Detector.cc.
Referenced by Detector(), cscdqm::Summary::GetEfficiencyHW(), cscdqm::Summary::GetReportingArea(), cscdqm::Summary::GetValue(), GlobalChamberIndex(), PhiMaxCFEB(), PhiMinCFEB(), cscdqm::Summary::SetValue(), cscdqm::EventProcessor::updateEfficiencyHistos(), and cscdqm::Summary::WriteChamberState().
{ if(station == 1 && ring == 1) return 36; if(station == 1 && ring == 2) return 36; if(station == 1 && ring == 3) return 36; if(station == 2 && ring == 1) return 18; if(station == 2 && ring == 2) return 36; if(station == 3 && ring == 1) return 18; if(station == 3 && ring == 2) return 36; if(station == 4 && ring == 1) return 18; if(station == 4 && ring == 2) return 36; return 0; }
const unsigned int cscdqm::Detector::NumberOfRings | ( | const unsigned int | station | ) | const |
Returns the number of rings for the given station.
station | Station number (1, 2, 3, 4) |
Definition at line 199 of file CSCDQM_Detector.cc.
Referenced by Detector(), cscdqm::Summary::GetEfficiencyHW(), cscdqm::Summary::GetReportingArea(), cscdqm::Summary::GetValue(), GlobalChamberIndex(), cscdqm::Summary::SetValue(), cscdqm::EventProcessor::updateEfficiencyHistos(), and cscdqm::Summary::WriteChamberState().
const float cscdqm::Detector::PhiMaxCFEB | ( | const int | station, |
const int | ring, | ||
const int | chamber, | ||
const int | cfeb | ||
) | const [private] |
Get Max phi boundary for particular CFEB.
station | Station number |
ring | Ring number |
chamber | Chamber number |
cfeb | CFEB number |
Definition at line 555 of file CSCDQM_Detector.cc.
References NumberOfChamberCFEBs(), and NumberOfChambers().
Referenced by Detector().
{ float phi_max_cfeb; int n_cfeb = NumberOfChamberCFEBs(station, ring); int n_chambers = NumberOfChambers(station, ring); phi_max_cfeb = 0.0 + 2.0 * 3.14159 / (float) n_chambers * ((float) (chamber - 1) + (float) (cfeb) / (float) n_cfeb); return phi_max_cfeb; }
const float cscdqm::Detector::PhiMinCFEB | ( | const int | station, |
const int | ring, | ||
const int | chamber, | ||
const int | cfeb | ||
) | const [private] |
Get Min phi boundary for particular CFEB.
station | Station number |
ring | Ring number |
chamber | Chamber number |
cfeb | CFEB number |
Definition at line 536 of file CSCDQM_Detector.cc.
References NumberOfChamberCFEBs(), and NumberOfChambers().
Referenced by Detector().
{ float phi_min_cfeb; int n_cfeb = NumberOfChamberCFEBs(station, ring); int n_chambers = NumberOfChambers(station, ring); phi_min_cfeb = 0.0 + 2.0 * 3.14159 / ((float) (n_chambers)) * ((float) (chamber - 1) + (float) (cfeb - 1) / (float) (n_cfeb)); return phi_min_cfeb; }
const float cscdqm::Detector::PhiToY | ( | const float | phi | ) | const [private] |
Transform phi coordinate to local canvas coordinate.
phi | Phi coordinate |
Definition at line 387 of file CSCDQM_Detector.cc.
Referenced by Detector().
void cscdqm::Detector::PrintAddress | ( | const Address & | adr | ) | const |
Prints address for debugging.
adr | Address to print |
Definition at line 269 of file CSCDQM_Detector.cc.
References cscdqm::Address::cfeb, cscdqm::AddressMask::cfeb, cscdqm::Address::chamber, cscdqm::AddressMask::chamber, gather_cfg::cout, cscdqm::AddressMask::hv, cscdqm::Address::hv, cscdqm::AddressMask::layer, cscdqm::Address::layer, cscdqm::Address::mask, cscdqm::AddressMask::ring, cscdqm::Address::ring, cscdqm::Address::side, cscdqm::AddressMask::side, cscdqm::Address::station, and cscdqm::AddressMask::station.
{ std::cout << "Side (" << std::boolalpha << adr.mask.side << ")"; if (adr.mask.side) std::cout << " = " << adr.side; std::cout << ", Station (" << std::boolalpha << adr.mask.station << ")"; if (adr.mask.station) std::cout << " = " << adr.station; std::cout << ", Ring (" << std::boolalpha << adr.mask.ring << ")"; if (adr.mask.ring) std::cout << " = " << adr.ring; std::cout << ", Chamber (" << std::boolalpha << adr.mask.chamber << ")"; if (adr.mask.chamber) std::cout << " = " << adr.chamber; std::cout << ", Layer (" << std::boolalpha << adr.mask.layer << ")"; if (adr.mask.layer) std::cout << " = " << adr.layer; std::cout << ", CFEB (" << std::boolalpha << adr.mask.cfeb << ")"; if (adr.mask.cfeb) std::cout << " = " << adr.cfeb; std::cout << ", HV (" << std::boolalpha << adr.mask.hv << ")"; if (adr.mask.hv) std::cout << " = " << adr.hv; std::cout << std::endl; }
const float cscdqm::Detector::RMaxHV | ( | const int | station, |
const int | ring, | ||
const int | n_hv | ||
) | const [private] |
Get R max parameter (used in address eta/phi calculation)
station | Station Id |
ring | Ring Id |
n_hv | HV number |
Definition at line 479 of file CSCDQM_Detector.cc.
Referenced by Detector().
{ float r_max_hv = 0; if(station == 1 && ring == 1) { if(n_hv == 1) r_max_hv = 1500.0; if(n_hv == 2) r_max_hv = 2565.0; } if(station == 1 && ring == 2) { if(n_hv == 1) r_max_hv = 3368.2; if(n_hv == 2) r_max_hv = 4025.7; if(n_hv == 3) r_max_hv = 4559.9; } if(station == 1 && ring == 3) { if(n_hv == 1) r_max_hv = 5724.1; if(n_hv == 2) r_max_hv = 6230.2; if(n_hv == 3) r_max_hv = 6761.5; } if(station == 2 && ring == 1) { if(n_hv == 1) r_max_hv = 2152.3; if(n_hv == 2) r_max_hv = 2763.7; if(n_hv == 3) r_max_hv = 3365.8; } if(station == 3 && ring == 1) { if(n_hv == 1) r_max_hv = 2164.9; if(n_hv == 2) r_max_hv = 2763.8; if(n_hv == 3) r_max_hv = 3365.8; } if(station == 4 && ring == 1) { if(n_hv == 1) r_max_hv = 2365.9; if(n_hv == 2) r_max_hv = 2865.0; if(n_hv == 3) r_max_hv = 3356.3; } if((station == 2 || station == 3 || station == 4) && ring == 2) { if(n_hv == 1) r_max_hv = 4446.3; if(n_hv == 2) r_max_hv = 5053.2; if(n_hv == 3) r_max_hv = 5660.1; if(n_hv == 4) r_max_hv = 6267.0; if(n_hv == 5) r_max_hv = 6870.8; } return r_max_hv; }
const float cscdqm::Detector::RMinHV | ( | const int | station, |
const int | ring, | ||
const int | n_hv | ||
) | const [private] |
Get R min parameter (used in address eta/phi calculation)
station | Station Id |
ring | Ring Id |
n_hv | HV number |
Definition at line 423 of file CSCDQM_Detector.cc.
Referenced by Detector().
{ float r_min_hv = 0; if(station == 1 && ring == 1) { if(n_hv == 1) r_min_hv = 1060.0; if(n_hv == 2) r_min_hv = 1500.0; } if(station == 1 && ring == 2) { if(n_hv == 1) r_min_hv = 2815.0; if(n_hv == 2) r_min_hv = 3368.2; if(n_hv == 3) r_min_hv = 4025.7; } if(station == 1 && ring == 3) { if(n_hv == 1) r_min_hv = 5120.0; if(n_hv == 2) r_min_hv = 5724.1; if(n_hv == 3) r_min_hv = 6230.2; } if(station == 2 && ring == 1) { if(n_hv == 1) r_min_hv = 1469.2; if(n_hv == 2) r_min_hv = 2152.3; if(n_hv == 3) r_min_hv = 2763.7; } if(station == 3 && ring == 1) { if(n_hv == 1) r_min_hv = 1668.9; if(n_hv == 2) r_min_hv = 2164.9; if(n_hv == 3) r_min_hv = 2763.8; } if(station == 4 && ring == 1) { if(n_hv == 1) r_min_hv = 1876.1; if(n_hv == 2) r_min_hv = 2365.9; if(n_hv == 3) r_min_hv = 2865.0; } if((station == 2 || station == 3 || station == 4) && ring == 2) { if(n_hv == 1) r_min_hv = 3640.2; if(n_hv == 2) r_min_hv = 4446.3; if(n_hv == 3) r_min_hv = 5053.2; if(n_hv == 4) r_min_hv = 5660.1; if(n_hv == 5) r_min_hv = 6267.0; } return r_min_hv; }
const float cscdqm::Detector::Z | ( | const int | station, |
const int | ring | ||
) | const [private] |
Get Z parameter (used in address eta/phi calculation)
station | Station Id |
ring | Ring Id |
Definition at line 403 of file CSCDQM_Detector.cc.
Referenced by Detector().
{ float z_csc = 0; if(station == 1 && ring == 1) z_csc = (5834.5 + 6101.5) / 2.0; if(station == 1 && ring == 2) z_csc = (6790.0 + 7064.3) / 2.0; if(station == 1 && ring == 3) z_csc = 6888.0; if(station == 2) z_csc = (8098.0 + 8346.0) / 2.0; if(station == 3) z_csc = (9414.8 + 9166.8) / 2.0; if(station == 4) z_csc = 10630.0; // has to be corrected return z_csc; }
AddressBox cscdqm::Detector::boxes[N_ELEMENTS] [private] |
Address boxes in epa/phi space
Definition at line 218 of file CSCDQM_Detector.h.
Referenced by Area(), Detector(), NextAddress(), NextAddressBox(), and NextAddressBoxByPartition().
PartitionMap cscdqm::Detector::partitions [private] |
Map of partitions and list of it covering addresses indexes
Definition at line 230 of file CSCDQM_Detector.h.
Referenced by Detector(), and NextAddressBoxByPartition().
unsigned int cscdqm::Detector::partitions_x [private] |
Number of partitions in X axis
Definition at line 224 of file CSCDQM_Detector.h.
Referenced by Detector().
unsigned int cscdqm::Detector::partitions_y [private] |
Number of partitions in Y axis
Definition at line 227 of file CSCDQM_Detector.h.
Referenced by Detector().
float cscdqm::Detector::station_area[N_STATIONS] [private] |
Station areas precalculated
Definition at line 221 of file CSCDQM_Detector.h.
Referenced by Area(), and Detector().