![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
Go to the documentation of this file.
6 #include "GaudiKernel/Algorithm.h"
7 #include "GaudiKernel/MsgStream.h"
11 #include "CLHEP/Units/SystemOfUnits.h"
15 #include "CaloGeoHelpers/CaloSampling.h"
17 #include "CaloEvent/CaloTower.h"
18 #include "CaloEvent/CaloTowerContainer.h"
36 auto book1 = [&] (
const std::string&
name,
37 const std::string&
title,
44 std::make_unique<TH1F> (
name.c_str(),
title.c_str(),
48 auto book2 = [&] (
const std::string&
name,
49 const std::string&
title,
59 std::make_unique<TH2F> (
name.c_str(),
title.c_str(),
66 ATH_CHECK( book1 (
"nTowersVsEta",
"Number of CaloTowers vs Eta",
69 ATH_CHECK( book1 (
"nTowersVsPhi",
"Number of CaloTowers vs Phi [deg]",
74 ATH_CHECK( book1 (
"eTowers",
"CaloTower E [GeV]",
77 ATH_CHECK( book2 (
"eTowersVsEta",
"CaloTower E [GeV] vs Eta",
81 ATH_CHECK( book2 (
"eTowersVsPhi",
"CaloTower E [Gev] vs Phi [deg]",
85 ATH_CHECK( book1 (
"eLogTowers",
"CaloTower log(E/GeV)",
90 ATH_CHECK( book1 (
"etTowers",
"CaloTower Et [GeV]",
93 ATH_CHECK( book2 (
"etTowersVsEta",
"CaloTower Et [GeV] vs Eta",
97 ATH_CHECK( book2 (
"etTowersVsPhi",
"CaloTower Et [Gev] vs Phi [deg]",
101 ATH_CHECK( book1 (
"etLogTowers",
"CaloTower log(Et/GeV)",
106 ATH_CHECK( book2 (
"cellsInEtaVsPhi",
"CaloTower Shape",
110 ATH_CHECK( book1 (
"nCellsInTower",
"Number of Cells in CaloTower",
113 ATH_CHECK( book2 (
"nCellsInTowerVsEta",
"Number of Cells vs Eta",
117 ATH_CHECK( book2 (
"nCellsInTowerVsPhi",
"Number of Cells vs Phi [deg]",
123 ATH_CHECK( book2 (
"etaTowerVsCell",
"Cell Eta vs TowerEta",
127 ATH_CHECK( book2 (
"etaTowerVsCellCalosPreSamplerB",
128 "Cell Eta vs Tower Eta PreSampB",
132 ATH_CHECK( book2 (
"etaTowerVsCellCalosEMB1",
133 "Cell Eta vs Tower Eta EMB1",
137 ATH_CHECK( book2 (
"etaTowerVsCellCalosPreSamplerE",
138 "Cell Eta vs Tower Eta PreSampE",
142 ATH_CHECK( book2 (
"etaTowerVsCellCalosEME1",
143 "Cell Eta vs Tower Eta EME1",
147 ATH_CHECK( book2 (
"etaTowerVsCellCalosHEC0",
148 "Cell Eta vs Tower Eta HEC0",
152 ATH_CHECK( book2 (
"etaTowerVsCellCalosTileBar0",
153 "Cell Eta vs Tower Eta TileBar0",
157 ATH_CHECK( book2 (
"etaTowerVsCellCalosTileExt0",
158 "Cell Eta vs Tower Eta TileExt0",
162 ATH_CHECK( book2 (
"etaTowerVsCellCalosFCAL0",
163 "Cell Eta vs Tower Eta FCAL0",
167 ATH_CHECK( book2 (
"etaTowerVsCellCalosFCAL1",
168 "Cell Eta vs Tower Eta FCAL1",
172 ATH_CHECK( book2 (
"etaTowerVsCellCalosFCAL2",
173 "Cell Eta vs Tower Eta FCAL2",
179 ATH_CHECK( book2 (
"phiTowerVsCell",
"Cell Phi vs TowerPhi",
183 ATH_CHECK( book2 (
"phiTowerVsCellCalosPreSamplerB",
184 "Cell Phi vs Tower Phi PreSampB",
188 ATH_CHECK( book2 (
"phiTowerVsCellCalosEMB1",
189 "Cell Phi vs Tower Phi EMB1",
193 ATH_CHECK( book2 (
"phiTowerVsCellCalosPreSamplerE",
194 "Cell Phi vs Tower Phi PreSampE",
198 ATH_CHECK( book2 (
"phiTowerVsCellCalosEME1",
199 "Cell Phi vs Tower Phi EME1",
203 ATH_CHECK( book2 (
"phiTowerVsCellCalosHEC0",
204 "Cell Phi vs Tower Phi HEC0",
208 ATH_CHECK( book2 (
"phiTowerVsCellCalosTileBar0",
209 "Cell Phi vs Tower Phi TileBar0",
213 ATH_CHECK( book2 (
"phiTowerVsCellCalosTileExt0",
214 "Cell Phi vs Tower Phi TileExt0",
218 ATH_CHECK( book2 (
"phiTowerVsCellCalosFCAL0",
219 "Cell Phi vs Tower Phi FCAL0",
223 ATH_CHECK( book2 (
"phiTowerVsCellCalosFCAL1",
224 "Cell Phi vs Tower Phi FCAL1",
228 ATH_CHECK( book2 (
"phiTowerVsCellCalosFCAL2",
229 "Cell Phi vs Tower Phi FCAL2",
236 return StatusCode::SUCCESS;
242 const EventContext& ctx = getContext();
247 for (
const CaloTower* aTower : *theTowers) {
265 if ( aTower->getNumberOfCells() != 0 )
268 double e = aTower->e() * (1./
GeV);
269 double et = aTower->et() * (1./
GeV);
270 double eta = aTower->eta();
271 double phi = aTower->phi();
273 double cells = (
double) aTower->getNumberOfCells();
277 <<
e <<
" GeV (eta,phi) = ("
278 <<
eta <<
"," <<
phi <<
")" );
303 for (
const CaloCell* aCell : *aTower)
306 double cellEta = aCell->eta();
307 double cellPhi = aCell->phi();
359 return StatusCode::SUCCESS;
Extra patterns decribing particle interation process.
Scalar phi() const
phi method
Scalar eta() const
pseudorapidity method
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
StringProperty m_streamName
TH2 * m_nCellsInTowerVsEta
std::map< CaloSampling::CaloSample, TH2 * > m_phiTowerVsCellCalos
virtual StatusCode execute() override
double deltaEta(const I4Momentum &p1, const I4Momentum &p2)
Computes efficiently .
::StatusCode StatusCode
StatusCode definition for legacy code.
TH2 * m_nCellsInTowerVsPhi
CaloPhiRange class declaration.
Data class for calorimeter cell towers.
std::map< CaloSampling::CaloSample, TH2 * > m_etaTowerVsCellCalos
Data object for each calorimeter readout cell.
virtual StatusCode initialize() override
SG::ReadHandleKeyArray< CaloTowerContainer > m_collectionNames
ServiceHandle< ITHistSvc > m_histSvc
Handle class for reading from StoreGate.
static double diff(double phi1, double phi2)
simple phi1 - phi2 calculation, but result is fixed to respect range.