Skip to content
Snippets Groups Projects

Draft: ECal saturation versus ECalTot

Open Samuel Belin requested to merge sbelin_correlation_sat_ecal into master
1 file
+ 26
7
Compare changes
  • Side-by-side
  • Inline
@@ -17,6 +17,10 @@
@@ -17,6 +17,10 @@
#include <Gaudi/Accumulators/Histogram.h>
#include <Gaudi/Accumulators/Histogram.h>
#include <LHCbAlgs/Consumer.h>
#include <LHCbAlgs/Consumer.h>
#include <PrKernel/UTHitHandler.h>
#include <PrKernel/UTHitHandler.h>
 
#include "CaloDet/DeCalorimeter.h"
 
#include "CaloFutureUtils/TrackUtils.h"
 
#include "CaloFutureUtils/CaloFutureAlgUtils.h"
 
//#include "DetDesc/GenericConditionAccessorHolder.h"
meta_enum_class( CollisionType, int, Unknown = 0, pp = 1, PbPb = 2 );
meta_enum_class( CollisionType, int, Unknown = 0, pp = 1, PbPb = 2 );
@@ -24,13 +28,14 @@ class MonitorDetectorCorrelations
@@ -24,13 +28,14 @@ class MonitorDetectorCorrelations
: public LHCb::Algorithm::Consumer<void(
: public LHCb::Algorithm::Consumer<void(
LHCb::Pr::VP::Hits const&, LHCb::Pr::FT::Hits const&, UT::HitHandler const&, MuonHitContainer const&,
LHCb::Pr::VP::Hits const&, LHCb::Pr::FT::Hits const&, UT::HitHandler const&, MuonHitContainer const&,
LHCb::Event::Calo::v2::Clusters const&, LHCb::Event::Calo::Digits const&, LHCb::Event::Calo::Digits const&,
LHCb::Event::Calo::v2::Clusters const&, LHCb::Event::Calo::Digits const&, LHCb::Event::Calo::Digits const&,
Rich::Future::DAQ::DecodedData const& )> {
Rich::Future::DAQ::DecodedData const&, const DeCalorimeter&),
 
LHCb::Algorithm::Traits::usesConditions<DeCalorimeter>> {
public:
public:
MonitorDetectorCorrelations( const std::string& name, ISvcLocator* pSvcLocator )
MonitorDetectorCorrelations( const std::string& name, ISvcLocator* pSvcLocator)
: Consumer( name, pSvcLocator,
: Consumer( name, pSvcLocator,
{ KeyValue{ "VeloHits", "" }, KeyValue{ "SciFiHits", "" }, KeyValue{ "UTHits", "" },
{ KeyValue{ "VeloHits", "" }, KeyValue{ "SciFiHits", "" }, KeyValue{ "UTHits", "" },
KeyValue{ "MuonHits", "" }, KeyValue{ "ECALClusters", "" }, KeyValue{ "ECALDigits", "" },
KeyValue{ "MuonHits", "" }, KeyValue{ "ECALClusters", "" }, KeyValue{ "ECALDigits", "" },
KeyValue{ "HCALDigits", "" }, KeyValue{ "RichPixels", "" } } ) {}
KeyValue{ "HCALDigits", "" }, KeyValue{ "RichPixels", "" }, KeyValue{"Detector",{LHCb::CaloFutureAlgUtils::DeCaloFutureLocation("Ecal")}} } ) {}
StatusCode initialize() override {
StatusCode initialize() override {
return Consumer::initialize().andThen( [&] {
return Consumer::initialize().andThen( [&] {
@@ -73,8 +78,8 @@ public:
@@ -73,8 +78,8 @@ public:
axis1D{ 400, 0, m_ecalenergy_max, "ECAL energy" },
axis1D{ 400, 0, m_ecalenergy_max, "ECAL energy" },
axis1D{ 400, 0, m_hcalcounts_max, "Total HCAL ADC counts" } );
axis1D{ 400, 0, m_hcalcounts_max, "Total HCAL ADC counts" } );
m_ECAL_energy_ECAL_clusters_correlation.emplace( this, "ECALECALCorrelation", "ECALECALCorrelation",
m_ECAL_energy_ECAL_clusters_correlation.emplace( this, "ECALECALCorrelation", "ECALECALCorrelation",
axis1D{ 400, 0, m_ecalenergy_max, "ECAL energy" },
axis1D{ 1000, 0, m_ecalenergy_max, "ECAL energy" },
axis1D{ 400, 0, 700, "ECAL Clusters" } );
axis1D{ 1000, 0, 7000, "ECAL Clusters" } );
m_scifi_rich1_hits_correlation.emplace( this, "ScifiRICH1HitsCorrelation", "ScifiRICH1HitsCorrelation",
m_scifi_rich1_hits_correlation.emplace( this, "ScifiRICH1HitsCorrelation", "ScifiRICH1HitsCorrelation",
axis1D{ 400, 0, m_scifi_max, "SciFi Hits" },
axis1D{ 400, 0, m_scifi_max, "SciFi Hits" },
axis1D{ 400, 0, m_rich1_max, "RICH1 Hits" } );
axis1D{ 400, 0, m_rich1_max, "RICH1 Hits" } );
@@ -84,13 +89,16 @@ public:
@@ -84,13 +89,16 @@ public:
m_scifi_rich2_hits_correlation.emplace( this, "ScifiRICH2HitsCorrelation", "ScifiRICH2HitsCorrelation",
m_scifi_rich2_hits_correlation.emplace( this, "ScifiRICH2HitsCorrelation", "ScifiRICH2HitsCorrelation",
axis1D{ 400, 0, m_scifi_max, "SciFi Hits" },
axis1D{ 400, 0, m_scifi_max, "SciFi Hits" },
axis1D{ 400, 0, m_rich2_max, "RICH1 Hits" } );
axis1D{ 400, 0, m_rich2_max, "RICH1 Hits" } );
 
m_ECAL_energy_ECAL_SAT_correlation.emplace( this, "ECALECALSATCorrelation", "ECALECALSATCorrelation",
 
axis1D{ 1000, 0, m_ecalenergy_max, "ECAL energy" },
 
axis1D{ 500, 0, 7000, "ECAL SAT" } );
} );
} );
}
}
void operator()( LHCb::Pr::VP::Hits const& velo_hits, LHCb::Pr::FT::Hits const& scifi_hits,
void operator()( LHCb::Pr::VP::Hits const& velo_hits, LHCb::Pr::FT::Hits const& scifi_hits,
UT::HitHandler const& ut_hits, MuonHitContainer const& muon_hits,
UT::HitHandler const& ut_hits, MuonHitContainer const& muon_hits,
LHCb::Event::Calo::v2::Clusters const& calo_clusters, LHCb::Event::Calo::Digits const& ecal_digits,
LHCb::Event::Calo::v2::Clusters const& calo_clusters, LHCb::Event::Calo::Digits const& ecal_digits,
LHCb::Event::Calo::Digits const& hcal_digits,
LHCb::Event::Calo::Digits const& hcal_digits,
Rich::Future::DAQ::DecodedData const& rich_hits ) const override {
Rich::Future::DAQ::DecodedData const& rich_hits, const DeCalorimeter& caloDet) const override {
auto n_muon_hits = muon_hits.hits( 0 ).size() + muon_hits.hits( 1 ).size() + muon_hits.hits( 2 ).size() +
auto n_muon_hits = muon_hits.hits( 0 ).size() + muon_hits.hits( 1 ).size() + muon_hits.hits( 2 ).size() +
muon_hits.hits( 3 ).size();
muon_hits.hits( 3 ).size();
@@ -108,6 +116,14 @@ public:
@@ -108,6 +116,14 @@ public:
const auto ecaltot = std::accumulate( ecal_digits.begin(), ecal_digits.end(), 0.,
const auto ecaltot = std::accumulate( ecal_digits.begin(), ecal_digits.end(), 0.,
[]( auto init, const auto& digit ) { return init + digit.energy(); } );
[]( auto init, const auto& digit ) { return init + digit.energy(); } );
 
const auto ecal_cell_sat = std::accumulate(
 
ecal_digits.begin(), ecal_digits.end(), 0.,
 
[&caloDet](auto init, const auto& digit) { // Capture caloDet by reference
 
return init + (digit.adc() >= caloDet.adcMax());
 
}
 
);
 
 
++m_velo_scifi_hits_correlation.value()[{ velo_hits.size(), scifi_hits.size() }];
++m_velo_scifi_hits_correlation.value()[{ velo_hits.size(), scifi_hits.size() }];
++m_velo_ut_hits_correlation.value()[{ velo_hits.size(), ut_hits.nbHits() }];
++m_velo_ut_hits_correlation.value()[{ velo_hits.size(), ut_hits.nbHits() }];
++m_scifi_ut_hits_correlation.value()[{ scifi_hits.size(), ut_hits.nbHits() }];
++m_scifi_ut_hits_correlation.value()[{ scifi_hits.size(), ut_hits.nbHits() }];
@@ -121,9 +137,11 @@ public:
@@ -121,9 +137,11 @@ public:
++m_scifi_hits_HCAL_energy_correlation.value()[{ scifi_hits.size(), hcal_adc_abovethreshold }];
++m_scifi_hits_HCAL_energy_correlation.value()[{ scifi_hits.size(), hcal_adc_abovethreshold }];
++m_ECAL_energy_HCAL_energy_correlation.value()[{ ecaltot, hcal_adc_abovethreshold }];
++m_ECAL_energy_HCAL_energy_correlation.value()[{ ecaltot, hcal_adc_abovethreshold }];
++m_ECAL_energy_ECAL_clusters_correlation.value()[{ ecaltot, nClusters }];
++m_ECAL_energy_ECAL_clusters_correlation.value()[{ ecaltot, nClusters }];
 
++m_ECAL_energy_ECAL_clusters_correlation.value()[{ ecaltot, nClusters }];
++m_velo_rich1_hits_correlation.value()[{ velo_hits.size(), rich_hits.nTotalHits( Rich::Rich1 ) }];
++m_velo_rich1_hits_correlation.value()[{ velo_hits.size(), rich_hits.nTotalHits( Rich::Rich1 ) }];
++m_scifi_rich1_hits_correlation.value()[{ scifi_hits.size(), rich_hits.nTotalHits( Rich::Rich1 ) }];
++m_scifi_rich1_hits_correlation.value()[{ scifi_hits.size(), rich_hits.nTotalHits( Rich::Rich1 ) }];
++m_scifi_rich2_hits_correlation.value()[{ scifi_hits.size(), rich_hits.nTotalHits( Rich::Rich2 ) }];
++m_scifi_rich2_hits_correlation.value()[{ scifi_hits.size(), rich_hits.nTotalHits( Rich::Rich2 ) }];
 
++m_ECAL_energy_ECAL_SAT_correlation.value()[{ ecaltot, ecal_cell_sat}];
}
}
private:
private:
@@ -157,7 +175,7 @@ private:
@@ -157,7 +175,7 @@ private:
m_muon_max = 18000;
m_muon_max = 18000;
m_rich1_max = 80000;
m_rich1_max = 80000;
m_rich2_max = 65000;
m_rich2_max = 65000;
m_ecalenergy_max = 6000000;
m_ecalenergy_max = 70000000;
m_hcalcounts_max = 450000;
m_hcalcounts_max = 450000;
return;
return;
case CollisionType::Unknown:
case CollisionType::Unknown:
@@ -189,6 +207,7 @@ private:
@@ -189,6 +207,7 @@ private:
mutable std::optional<Gaudi::Accumulators::Histogram<2>> m_scifi_rich1_hits_correlation;
mutable std::optional<Gaudi::Accumulators::Histogram<2>> m_scifi_rich1_hits_correlation;
mutable std::optional<Gaudi::Accumulators::Histogram<2>> m_velo_rich1_hits_correlation;
mutable std::optional<Gaudi::Accumulators::Histogram<2>> m_velo_rich1_hits_correlation;
mutable std::optional<Gaudi::Accumulators::Histogram<2>> m_scifi_rich2_hits_correlation;
mutable std::optional<Gaudi::Accumulators::Histogram<2>> m_scifi_rich2_hits_correlation;
 
mutable std::optional<Gaudi::Accumulators::Histogram<2>> m_ECAL_energy_ECAL_SAT_correlation;
};
};
DECLARE_COMPONENT( MonitorDetectorCorrelations )
DECLARE_COMPONENT( MonitorDetectorCorrelations )
Loading