51 LogDebug(
"CaloGeometryTools") <<
" No preshower present" << std::endl;
69 float deltaeta2 = ip.
eta() - cc.eta();
70 deltaeta2 *= deltaeta2;
71 float deltaphi2 = acos(
cos(ip.
phi() - cc.
phi()));
72 deltaphi2 *= deltaphi2;
94 if (fabs(point.Z()) > 1132.) {
137 float deltaeta2 = ip.
eta() - cc.eta();
138 deltaeta2 *= deltaeta2;
139 float deltaphi2 = acos(
cos(ip.
phi() - cc.
phi()));
140 deltaphi2 *= deltaphi2;
154 sort(vec.begin(), vec.end(),
distance);
179 unsigned size = vec.size();
180 for (
unsigned ic = 0; ic <
size; ++ic) {
184 unsigned nneighbours = neighbours.size();
187 if (hashedindex >= nbarrel) {
188 LogDebug(
"CaloGeometryTools") <<
" Array overflow " << std::endl;
196 if (nneighbours == 9) {
199 for (
unsigned in = 0;
in < nneighbours; ++
in) {
201 if (neighbours[
in] != vec[ic]) {
210 for (
unsigned idir = 0; idir < 8; ++idir) {
212 bool status =
move(testid, orderedDir[idir],
false);
231 for (
unsigned ic = 0; ic <
size; ++ic) {
234 unsigned nneighbours = neighbours.size();
238 if (hashedindex >= nendcap) {
239 LogDebug(
"CaloGeometryTools") <<
" Array overflow " << std::endl;
242 if (nneighbours == 9) {
245 for (
unsigned in = 0;
in < nneighbours; ++
in) {
247 if (neighbours[
in] != vece[ic]) {
255 for (
unsigned idir = 0; idir < 8; ++idir) {
257 bool status =
move(testid, orderedDir[idir],
false);
273 DetId originalcell = cell;
280 static const int calodirections[9] = {-1, 1, 2, 0, 4, 3, 7, 5, 6};
303 std::vector<DetId> neighbours;
309 if ((!neighbours.empty()) && (!neighbours[0].null())) {
310 cell = neighbours[0];
379 return (cc1.
im() != cc2.
im() || cc1.
ism() != cc2.
ism());
397 unsigned size = vec.size();
398 for (
unsigned ic = 0; ic <
size; ++ic) {
416 for (
unsigned ic = 0; ic <
size; ++ic) {
int hashedIndex() const
get a compact index for arrays
void setCorners(const CaloCellGeometry::CornersVec &vec, const GlobalPoint &pos)
virtual std::vector< DetId > getNeighbours(const DetId &id, const CaloDirection &dir) const
void buildCrystal(const DetId &id, Crystal &) const
constexpr bool null() const
is this a null id ?
const EcalEndcapGeometry * EcalEndcapGeometry_
Geom::Phi< T > phi() const
Global3DPoint GlobalPoint
const EcalPreshowerGeometry * getEcalPreshowerGeometry() const
std::vector< NeiVect > barrelNeighbours_
const CaloSubdetectorTopology * EcalEndcapTopology_
std::array< DetId, 8 > NeiVect
std::vector< NeiVect > endcapNeighbours_
bool borderCrossing(const DetId &, const DetId &) const
int ism() const
get the ECAL/SM id
virtual const std::vector< DetId > & getValidDetIds(DetId::Detector det=DetId::Detector(0), int subdet=0) const
Get a list of valid detector ids (for the given subdetector)
const CaloSubdetectorGeometry * getEcalGeometry(int subdetn) const
bool neighbourmapcalculated_
static const CaloDirection orderedDir[8]
int im() const
get the number of module inside the SM (1-4)
int hashedIndex(int ieta, int iphi)
void fill(const std::string &name, float val1, float val2=1., float val3=1.)
Fill an histogram.
constexpr int iphi() const
get the cell iphi
void buildNeighbourArray()
Cos< T >::type cos(const T &t)
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
std::vector< BaseCrystal > endcapCrystals_
static Histos * instance()
constexpr int ieta() const
get the cell ieta
const EcalBarrelGeometry * EcalBarrelGeometry_
const CaloSubdetectorTopology * getEcalTopology(int subdetn) const
bool diagonalmove(DetId &cell, const CaloDirection &dir) const
virtual std::vector< DetId > getWindow(const DetId &id, const int &northSouthSize, const int &eastWestSize) const
virtual std::shared_ptr< const CaloCellGeometry > getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
void getWindow(const DetId &pivot, int s1, int s2, std::vector< DetId > &) const
const CaloSubdetectorGeometry * HcalGeometry_
DetId getClosestCell(const GlobalPoint &r) const override
DetId getClosestCell(const GlobalPoint &r) const override
T perp() const
Magnitude of transverse component.
const CaloSubdetectorTopology * EcalBarrelTopology_
std::vector< BaseCrystal > barrelCrystals_
CaloDirection
Codes the local directions in the cell lattice.
DetId getClosestCell(const XYZPoint &point, bool ecal, bool central) const
void initialize(double bField)
tuple size
Write out results.
bool simplemove(DetId &cell, const CaloDirection &dir) const
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
const NeiVect & getNeighbours(const DetId &det) const
bool move(DetId &cell, const CaloDirection &dir, bool fast=true) const