55 LogDebug(
"CaloGeometryTools") <<
" No preshower present" << std::endl;
75 if(result.
null())
return result;
78 float deltaeta2 = ip.
eta()-cc.eta();
79 deltaeta2 *= deltaeta2;
80 float deltaphi2 = acos(
cos(ip.
phi()-cc.phi()));
81 deltaphi2 *= deltaphi2;
107 if ( fabs(point.Z()) > 1132. ) {
120 if(myDetId.
depth()==3)
return result;
127 else if(ieta>=18 && ieta<=26)
133 bool layer2=(fabs(point.Z())>azmin);
150 float deltaeta2 = ip.
eta()-cc.eta();
151 deltaeta2 *= deltaeta2;
152 float deltaphi2 = acos(
cos(ip.
phi()-cc.phi()));
153 deltaphi2 *= deltaphi2;
169 sort(vec.begin(),vec.end(),distance);
200 unsigned size=vec.size();
201 for(
unsigned ic=0; ic<
size; ++ic)
206 unsigned nneighbours=neighbours.size();
209 if(hashedindex>=nbarrel)
211 LogDebug(
"CaloGeometryTools") <<
" Array overflow " << std::endl;
223 for(
unsigned in=0;
in<nneighbours;++
in)
226 if(neighbours[
in]!=vec[ic])
235 DetId central(vec[ic]);
237 for(
unsigned idir=0;idir<8;++idir)
239 DetId testid=central;
240 bool status=
move(testid,orderedDir[idir],
false);
260 for(
unsigned ic=0; ic<
size; ++ic)
264 unsigned nneighbours=neighbours.size();
268 if(hashedindex>=nendcap)
270 LogDebug(
"CaloGeometryTools") <<
" Array overflow " << std::endl;
276 for(
unsigned in=0;
in<nneighbours;++
in)
279 if(neighbours[
in]!=vece[ic])
287 DetId central(vece[ic]);
289 for(
unsigned idir=0;idir<8;++idir)
291 DetId testid=central;
292 bool status=
move(testid,orderedDir[idir],
false);
310 DetId originalcell = cell;
311 if(dir==
NONE || cell==
DetId(0))
return false;
316 static const int calodirections[9]={-1,1,2,0,4,3,7,5,6};
345 std::vector<DetId> neighbours;
351 if(neighbours.size()>0 && !neighbours[0].null())
353 cell = neighbours[0];
437 return (cc1.
im()!=cc2.
im()||cc1.
ism()!=cc2.
ism() );
457 unsigned size=vec.size();
459 for(
unsigned ic=0; ic<
size; ++ic)
479 for(
unsigned ic=0; ic<
size; ++ic)
virtual DetId getClosestCell(const GlobalPoint &r) const
int hashedIndex() const
get a compact index for arrays
void setCorners(const CaloCellGeometry::CornersVec &vec, const GlobalPoint &pos)
const std::vector< DetId > & getNeighbours(const DetId &det) const
virtual std::vector< DetId > getNeighbours(const DetId &id, const CaloDirection &dir) const
void buildCrystal(const DetId &id, Crystal &) const
virtual DetId getClosestCell(const GlobalPoint &r) const
const EcalEndcapGeometry * EcalEndcapGeometry_
Geom::Phi< T > phi() const
Global3DPoint GlobalPoint
const EcalPreshowerGeometry * getEcalPreshowerGeometry() const
std::vector< std::vector< DetId > > endcapNeighbours_
const CaloSubdetectorTopology * EcalEndcapTopology_
const GlobalPoint & getPosition() const
Returns the position of reference for this cell.
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)
virtual const CaloCellGeometry * getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
const CaloSubdetectorGeometry * getEcalGeometry(int subdetn) const
bool neighbourmapcalculated_
U second(std::pair< T, U > const &p)
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.
int depth() const
get the tower depth
void buildNeighbourArray()
Cos< T >::type cos(const T &t)
int ieta() const
get the cell ieta
std::vector< BaseCrystal > endcapCrystals_
static Histos * instance()
const EcalBarrelGeometry * EcalBarrelGeometry_
const CaloSubdetectorTopology * getEcalTopology(int subdetn) const
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
int ietaAbs() const
get the absolute value of the cell ieta
virtual DetId getClosestCell(const GlobalPoint &r) const
int iphi() const
get the cell iphi
bool diagonalmove(DetId &cell, const CaloDirection &dir) const
virtual std::vector< DetId > getWindow(const DetId &id, const int &northSouthSize, const int &eastWestSize) const
void getWindow(const DetId &pivot, int s1, int s2, std::vector< DetId > &) const
bool null() const
is this a null id ?
const CaloSubdetectorGeometry * HcalGeometry_
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)
std::vector< std::vector< DetId > > barrelNeighbours_
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
virtual const CornersVec & getCorners() const =0
Returns the corner points of this cell's volume.
bool move(DetId &cell, const CaloDirection &dir, bool fast=true) const