|
ATLAS Offline Software
|
Go to the documentation of this file.
41 Tile::MAX_ROS, nL1Triggers);
72 int nClusters = caloClusterContainer->
size();
73 ATH_MSG_DEBUG(
"Number of clusters in the event: " << nClusters );
76 for (
int l1TriggerIdx : l1TriggersIndices) {
81 return StatusCode::SUCCESS;
85 caloClusterContainer->
begin(), caloClusterContainer->
end(),
87 return cluster1->e() < cluster2->e();
90 const CaloCell* mostEnCell =
nullptr;
91 double mostEnClusterPhi = 0.0;
93 if (mostEnCluster->
e() > 0.0) {
94 mostEnClusterPhi = mostEnCluster->
phi();
101 for (
int l1TriggerIdx : l1TriggersIndices) {
108 mostEnCell = *std::max_element(mostEnCluster->
begin(), mostEnCluster->
end(),
110 return cell1->energy() < cell2->energy();
116 for (
int l1TriggerIdx : l1TriggersIndices) {
129 double correlClusterEnergy = 0.0;
133 float energy = cluster->e();
134 float phi = cluster->phi();
135 float pt = cluster->pt();
142 if (phi * mostEnClusterPhi < 0.0
143 &&
energy > correlClusterEnergy) {
144 correlCluster = cluster;
145 correlClusterEnergy =
energy;
150 <<
", Et()= " << cluster->et()
151 <<
", Eta= " << cluster->eta()
152 <<
", Phi= " << cluster->phi() );
158 return cluster->
eta();
163 return cluster->
phi();
171 float sumEt = sqrt(sumPx * sumPx + sumPy * sumPy);
176 for (
int l1TriggerIdx : l1TriggersIndices) {
187 if (mostEnCluster->
e() > 0.0 && correlCluster) {
189 float energyDiff = (mostEnClusterPhi > 0.0) ? mostEnCluster->
e() - correlCluster->
e()
190 : correlCluster->
e() - mostEnCluster->
e();
192 float etaDelta = std::abs(correlCluster->
eta()) - std::abs(mostEnCluster->
eta());
193 float phiDelta = std::abs(correlCluster->
phi() - mostEnCluster->
phi());
198 for (
int l1TriggerIdx : l1TriggersIndices) {
203 const CaloCell* correlCell =
nullptr;
205 correlCell = *std::max_element( correlCluster->
begin(), correlCluster->
end(),
207 return cell1->energy() < cell2->energy();
211 if (mostEnCell && correlCell) {
212 float timeDiff = mostEnCell->
time() - correlCell->
time();
214 for (
int l1TriggerIdx : l1TriggersIndices) {
225 std::set<Identifier> usedCells;
226 std::vector<float> partitionTime[
MAX_PART];
236 || usedCells.find(
id) != usedCells.end() )
continue;
238 usedCells.insert(
id);
247 bool single_PMT = single_PMT_C10 || single_PMT_scin;
270 fill(
"TileClusterMonExecuteTime",
timer);
272 return StatusCode::SUCCESS;
def retrieve(aClass, aKey=None)
virtual double phi() const
The azimuthal angle ( ) of the particle.
std::vector< int > getL1TriggerIndices(uint32_t lvl1TriggerType) const
Return indices of histograms to be filled according fired L1 trigger type.
ServiceHandle< TileCablingSvc > m_cablingSvc
Name of Tile cabling service.
std::vector< int > m_clusterEtaPhiGroups
std::vector< int > m_clusterSumPxGroups
std::vector< int > m_clusterEtaPhiDiffGroups
int sample(const Identifier &id) const
int tower(const Identifier &id) const
#define ATH_MSG_VERBOSE(x)
std::vector< int > m_clusterEneDiffGroups
float time() const
get time (data member)
std::vector< int > m_clusterTimeDiffGroups
def timer(name, disabled=False)
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
@ Error
The sub-detector issued an error.
std::vector< int > m_nClustersGroups
virtual StatusCode initialize() override
initialize
Gaudi::Property< float > m_cellEnergyThresholdForTiming
std::vector< int > m_allClusterEneEtaPhiGroups
Description of a calorimeter cluster.
int module(const Identifier &id) const
virtual double eta() const
The pseudorapidity ( ) of the particle.
Generic monitoring tool for athena components.
const TileCablingService * m_cabling
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
::StatusCode StatusCode
StatusCode definition for legacy code.
std::vector< int > m_allClusterEnergyGroups
size_t size() const
size method (forwarded from CaloClusterCellLink obj)
std::vector< int > m_clusterEtGroups
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable >> &&variables) const
Fills a vector of variables to a group by reference.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
uint32_t lumiBlock() const
The current event's luminosity block number.
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version)
std::vector< int > m_clusterSumPyGroups
virtual bool isValid() override final
Can the handle be successfully dereferenced?
Gaudi::Property< bool > m_fillTimingHistograms
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
const_iterator begin() const
Wrapper to avoid constant divisions when using units.
std::vector< int > m_clusterNCellsGroups
Class describing the basic event information.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
@ Tile
The Tile calorimeter.
static bool C10_connected(int module)
const_iterator end() const
Data object for each calorimeter readout cell.
int getNumberOfL1Triggers(void) const
Return number of L1 triggers for which histograms should be filled.
virtual StatusCode initialize() override
initialize
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_caloClusterContainerKey
std::vector< int > m_partitionTimeLBGroups
uint16_t level1TriggerType() const
The Level-1 trigger type.
EventFlagErrorState errorState(EventFlagSubDet subDet) const
Get the error state for a particular sub-detector.
std::vector< std::vector< int > > m_clusterEnergyGroups
int section(const Identifier &id) const
Declare a monitored scalar variable.
Handle class for reading from StoreGate.
std::vector< int > m_allClusterEtaPhiGroups
size_type size() const noexcept
Returns the number of elements in the collection.
virtual double e() const
The total energy of the particle.
Partition getPartition(const CaloCell *cell, const TileID *tileID) const
Return Partition for Tile cell or MAX_PART otherwise.
std::vector< int > m_clusterSumEtGroups
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.