FastSimulation
CaloGeometryTools
src
CrystalWindowMap.cc
Go to the documentation of this file.
1
//FAMOS headers
2
#include "
FastSimulation/CaloGeometryTools/interface/CrystalWindowMap.h
"
3
#include "
FastSimulation/CaloGeometryTools/interface/CaloGeometryHelper.h
"
4
5
#include <algorithm>
6
7
CrystalWindowMap::CrystalWindowMap
(
const
CaloGeometryHelper
*
calo
,
const
std::vector<Crystal>& cw)
8
: myCalorimeter_(
calo
), originalVector_(cw) {
9
size_
= cw.size();
10
if
(
size_
== 0)
11
return
;
12
13
// Loop over the crystals in the grid and stores the index number of the 8 neighbours
14
myNeighbours_
.resize(
size_
);
15
16
for
(
unsigned
ic = 0; ic <
size_
; ++ic) {
17
const
CaloGeometryHelper::NeiVect
& neighbours =
myCalorimeter_
->
getNeighbours
(cw[ic].getDetId());
18
myNeighbours_
[ic].reserve(8);
19
for
(
unsigned
in
= 0;
in
< 8; ++
in
) {
20
// Check that the crystal is in the grid
21
22
Crystal::crystalEqual
myCrystal(neighbours[
in
]);
23
std::vector<Crystal>::const_iterator itcheck;
24
itcheck = find_if(cw.begin(), cw.end(), myCrystal);
25
// The neighbour might not be in the grid
26
if
(itcheck == cw.end()) {
27
// std::cout << " Ouh la " << std::endl;
28
// for(unsigned ic=0;ic<size_;++ic)
29
// {
30
// std::cout << cw[ic].getDetId().rawId()<< " " ;
31
// }
32
// std::cout << std::endl ;
33
// std::cout << " We are looking for " << neighbours[in].rawId() << std::endl;
34
// edm::LogWarning("CrystalWindowMap") << " Inconsistency in the CellWindow " << std::endl;
35
}
else
{
36
myNeighbours_
[ic].push_back(itcheck - cw.begin());
37
// std::cout << " index " << itcheck-cw.begin() << std::endl;
38
}
39
}
40
}
41
}
42
43
bool
CrystalWindowMap::getCrystalWindow
(
unsigned
iq, std::vector<unsigned>& cw)
const
{
44
if
(iq <
size_
)
// iq >= 0, since iq is unsigned
45
{
46
cw =
myNeighbours_
[iq];
47
return
true
;
48
}
else
49
return
false
;
50
}
51
52
bool
CrystalWindowMap::getCrystalWindow
(
unsigned
iq,
const
std::vector<unsigned>* cw)
const
{
53
if
(iq <
size_
)
// iq >= 0, since iq is unsigned
54
{
55
cw = &
myNeighbours_
[iq];
56
return
true
;
57
}
else
58
return
false
;
59
// std::map<CrystalID,CrystalWindow>::const_iterator itcheck=myMap.find(cell);
60
}
61
62
const
std::vector<unsigned>&
CrystalWindowMap::getCrystalWindow
(
unsigned
iq,
bool
&
status
)
const
{
63
return
myNeighbours_
[iq];
64
}
L1TowerCalibrationProducer_cfi.calo
calo
Definition:
L1TowerCalibrationProducer_cfi.py:59
CrystalWindowMap::getCrystalWindow
bool getCrystalWindow(unsigned, std::vector< unsigned > &) const
get the ordered list of the crystals around the crystal given as a first argument
Definition:
CrystalWindowMap.cc:43
mps_update.status
status
Definition:
mps_update.py:69
CrystalWindowMap::CrystalWindowMap
CrystalWindowMap(const CaloGeometryHelper *, const std::vector< Crystal > &cw)
Constructor from vector of Crystal.
Definition:
CrystalWindowMap.cc:7
CrystalWindowMap::myNeighbours_
std::vector< std::vector< unsigned > > myNeighbours_
Definition:
CrystalWindowMap.h:43
Crystal::crystalEqual
Definition:
Crystal.h:119
CaloGeometryHelper.h
recoMuon::in
Definition:
RecoMuonEnumerators.h:6
CaloGeometryHelper::NeiVect
std::array< DetId, 8 > NeiVect
Definition:
CaloGeometryHelper.h:41
CaloGeometryHelper::getNeighbours
const NeiVect & getNeighbours(const DetId &det) const
Definition:
CaloGeometryHelper.cc:267
CaloGeometryHelper
Definition:
CaloGeometryHelper.h:18
CrystalWindowMap.h
CrystalWindowMap::myCalorimeter_
const CaloGeometryHelper * myCalorimeter_
Definition:
CrystalWindowMap.h:38
CrystalWindowMap::size_
unsigned size_
Definition:
CrystalWindowMap.h:40
Generated for CMSSW Reference Manual by
1.8.16