CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
L1TDTTFClient Class Reference

#include <L1TDTTFClient.h>

Inheritance diagram for L1TDTTFClient:
DQMEDHarvester edm::one::EDProducer< edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::EndProcessBlockProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns, edm::one::SharedResources, edm::Accumulator > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 L1TDTTFClient (const edm::ParameterSet &ps)
 Constructor. More...
 
 ~L1TDTTFClient () override
 Destructor. More...
 
- Public Member Functions inherited from DQMEDHarvester
void accumulate (edm::Event const &ev, edm::EventSetup const &es) final
 
void beginJob () override
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &) override
 
virtual void dqmAnalyze (DQMStore::IBooker &, DQMStore::IGetter &, edm::Event const &, edm::EventSetup const &)
 
 DQMEDHarvester (edm::ParameterSet const &iConfig)
 
 DQMEDHarvester ()
 
virtual void dqmEndRun (DQMStore::IBooker &, DQMStore::IGetter &, edm::Run const &, edm::EventSetup const &)
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &es) final
 
void endProcessBlockProduce (edm::ProcessBlock &) final
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 
void endRunProduce (edm::Run &run, edm::EventSetup const &es) final
 
 ~DQMEDHarvester () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::EndProcessBlockProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns, edm::one::SharedResources, edm::Accumulator >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Protected Member Functions

void book (DQMStore::IBooker &ibooker)
 
void dqmEndJob (DQMStore::IBooker &, DQMStore::IGetter &) override
 
void dqmEndLuminosityBlock (DQMStore::IBooker &ibooker, DQMStore::IGetter &, edm::LuminosityBlock const &, edm::EventSetup const &) override
 
- Protected Member Functions inherited from edm::ProducerBase
template<Transition Tr = Transition::Event>
auto produces (std::string instanceName) noexcept
 declare what type of product will make and with which optional label More...
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
template<Transition Tr = Transition::Event>
auto produces () noexcept
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

Private Member Functions

void buildHighQualityPlot (DQMStore::IGetter &igetter, TH2F *occupancySummary, MonitorElement *highQual_Summary, const std::string &path)
 
void buildPhiEtaPlotO (DQMStore::IGetter &igetter, MonitorElement *phi_eta_integ, const std::string &path, int wh)
 
void buildPhiEtaPlotOFC (DQMStore::IGetter &igetter, MonitorElement *phi_eta_fine_integ, MonitorElement *phi_eta_coarse_integ, MonitorElement *phi_eta_integ, const std::string &path_fine, const std::string &path_coarse, int wh)
 
void buildSummaries (DQMStore::IGetter &igetter)
 
TH1F * getTH1F (DQMStore::IGetter &igetter, const char *hname)
 
TH2F * getTH2F (DQMStore::IGetter &igetter, const char *hname)
 
void makeSummary (DQMStore::IGetter &igetter)
 
template<typename T >
void normalize (T *me)
 
template<typename T >
void normalize (T *me, const double &scale)
 
template<typename T >
void normalize (T *me, const double &scale, const double &entries)
 
void setGMTsummary (DQMStore::IGetter &igetter)
 
void setMapLabel (MonitorElement *me)
 
void setQualLabel (MonitorElement *me, int axis)
 
void setWheelLabel (MonitorElement *me)
 

Private Attributes

int counterLS_
 
MonitorElementdttf_2ndTrack_Summary
 
MonitorElementdttf_bx_integ
 
MonitorElementdttf_bx_integ_2ndTrack
 
MonitorElementdttf_bx_summary
 
MonitorElementdttf_bx_summary_2ndTrack
 
MonitorElementdttf_bx_wheel_integ [6]
 
MonitorElementdttf_bx_wheel_integ_2ndTrack [6]
 
MonitorElementdttf_bx_wheel_summary [6]
 
MonitorElementdttf_bx_wheel_summary_2ndTrack [6]
 
MonitorElementdttf_eta_fine_fraction
 
MonitorElementdttf_eta_fine_integ
 
MonitorElementdttf_eta_integ
 
MonitorElementdttf_eta_integ_2ndTrack
 
MonitorElementdttf_eta_wheel [6]
 
MonitorElementdttf_fine_fraction_wh [6]
 
MonitorElementdttf_gmt_matching
 
MonitorElementdttf_highQual_Summary
 
MonitorElementdttf_highQual_Summary_2ndTrack
 
MonitorElementdttf_nTracks_integ
 
MonitorElementdttf_nTracks_integ_2ndTrack
 
MonitorElementdttf_nTracks_wheel [6]
 
MonitorElementdttf_nTracks_wheel_2ndTrack [6]
 
MonitorElementdttf_occupancySummary
 
MonitorElementdttf_occupancySummary_2ndTrack
 
MonitorElementdttf_occupancySummary_test
 
MonitorElementdttf_phi_eta_coarse_integ
 
MonitorElementdttf_phi_eta_fine_integ
 
MonitorElementdttf_phi_eta_integ
 
MonitorElementdttf_phi_eta_integ_2ndTrack
 
MonitorElementdttf_phi_integ
 
MonitorElementdttf_phi_integ_2ndTrack
 
MonitorElementdttf_phi_wheel [6]
 
MonitorElementdttf_pt_integ
 
MonitorElementdttf_pt_integ_2ndTrack
 
MonitorElementdttf_pt_wheel [6]
 
MonitorElementdttf_q_integ
 
MonitorElementdttf_q_integ_2ndTrack
 
MonitorElementdttf_q_wheel [6]
 
MonitorElementdttf_quality_integ
 
MonitorElementdttf_quality_integ_2ndTrack
 
MonitorElementdttf_quality_summary
 
MonitorElementdttf_quality_summary_2ndTrack
 
MonitorElementdttf_quality_summary_wheel [6]
 
MonitorElementdttf_quality_wheel [6]
 
edm::InputTag dttfSource_
 
std::string gmtpath_
 
std::string inclusivepath_
 
std::string l1tdttffolder_
 
TH2F * occupancy_r_
 counter More...
 
bool online_
 
int resetafterlumi_
 
std::string testpath_
 
bool verbose_
 
std::string wheel_ [6]
 
std::string wheelpath_ [6]
 

Additional Inherited Members

- Public Types inherited from DQMEDHarvester
typedef dqm::harvesting::DQMStore DQMStore
 
typedef dqm::harvesting::MonitorElement MonitorElement
 
- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
template<typename T >
using BranchAliasSetterT = ProductRegistryHelper::BranchAliasSetterT< T >
 
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Attributes inherited from DQMEDHarvester
DQMStoredqmstore_
 
edm::GetterOfProducts< DQMTokenjobmegetter_
 
edm::EDPutTokenT< DQMTokenjobToken_
 
edm::GetterOfProducts< DQMTokenlumimegetter_
 
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::GetterOfProducts< DQMTokenrunmegetter_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 19 of file L1TDTTFClient.h.

Constructor & Destructor Documentation

◆ L1TDTTFClient()

L1TDTTFClient::L1TDTTFClient ( const edm::ParameterSet ps)

Constructor.

base services

Definition at line 15 of file L1TDTTFClient.cc.

16  : l1tdttffolder_(ps.getUntrackedParameter<std::string>("l1tSourceFolder", "L1T/L1TDTTF")),
17  dttfSource_(ps.getParameter<edm::InputTag>("dttfSource")),
18  online_(ps.getUntrackedParameter<bool>("online", true)),
19  resetafterlumi_(ps.getUntrackedParameter<int>("resetAfterLumi", 3)),
20  counterLS_(0),
21  occupancy_r_(nullptr) {
22  edm::LogInfo("L1TDTTFClient");
23 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
T getUntrackedParameter(std::string const &, T const &) const
TH2F * occupancy_r_
counter
Definition: L1TDTTFClient.h:43
Log< level::Info, false > LogInfo
std::string l1tdttffolder_
Definition: L1TDTTFClient.h:37
edm::InputTag dttfSource_
Definition: L1TDTTFClient.h:38

◆ ~L1TDTTFClient()

L1TDTTFClient::~L1TDTTFClient ( )
override

Destructor.

Definition at line 26 of file L1TDTTFClient.cc.

26 { edm::LogInfo("L1TDTTFClient") << "[L1TDTTFClient]: ending... "; }
Log< level::Info, false > LogInfo

Member Function Documentation

◆ book()

void L1TDTTFClient::book ( DQMStore::IBooker ibooker)
protected

occupancy summary

SUMMARY

DTTF Tracks per Wheel ditribution

DTTF Tracks distribution by Sector and Wheel

RESET 04

DTTF Tracks BX Distribution by Wheel

Fraction of DTTF Tracks BX w.r.t. Tracks with BX=0

DTTF Tracks Quality distribution

DTTF Tracks Quality distribution by Wheel

Fraction of DTTF Tracks with Quality>4 by Sector and Wheel

eta-phi Distribution of DTTF Tracks with coarse eta assignment

eta-phi Distribution of DTTF Tracks with fine eta assignment

eta-phi Distribution of DTTF Tracks

Fraction of DTTF Tracks with Fine eta Assignment

DTTF Tracks eta distribution (Packed values)

DTTF Tracks Phi distribution (Packed values)

DTTF Tracks p_{T} distribution (Packed values)

DTTF Tracks Charge distribution

DTTF 2nd Tracks Only Distribution by Sector and Wheel w.r.t. the total Number of tracks

GMT matching

TEST directory for stats comparisons

DTTF 2nd Tracks per Wheel distribution

DTTF 2nd Tracks distribution by Sector and Wheel

DTTF 2nd Tracks BX Distribution by Wheel

Fraction of DTTF Tracks BX w.r.t. Tracks with BX=0

Quality

DTTF 2nd Tracks Tracks Quality distribution by Wheel

Fraction of DTTF 2nd Tracks with Quality>4 by Sector and Wheel

eta-phi Distribution of DTTF 2nd Tracks

eta Distribution of DTTF 2nd Tracks

phi Distribution of DTTF 2nd Tracks

pt Distribution of DTTF 2nd Tracks

charge Distribution of DTTF 2nd Tracks

number of tracks per wheel

Tracks BX distribution by Sector for each wheel

bx for each wheel

quality per wheel

quality per wheel 2D

eta assigment for each wheel

DTTF Tracks eta distribution (Packed values)

DTTF Tracks Phi distribution (Packed values)

DTTF Tracks p_{T} distribution (Packed values)

DTTF Tracks Charge distribution

number of 2nd tracks per wheel

bx for each wheel

bx for each wheel

Definition at line 29 of file L1TDTTFClient.cc.

References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), dttf_2ndTrack_Summary, dttf_bx_integ, dttf_bx_integ_2ndTrack, dttf_bx_summary, dttf_bx_summary_2ndTrack, dttf_bx_wheel_integ, dttf_bx_wheel_integ_2ndTrack, dttf_bx_wheel_summary, dttf_bx_wheel_summary_2ndTrack, dttf_eta_fine_fraction, dttf_eta_integ, dttf_eta_integ_2ndTrack, dttf_eta_wheel, dttf_fine_fraction_wh, dttf_gmt_matching, dttf_highQual_Summary, dttf_highQual_Summary_2ndTrack, dttf_nTracks_integ, dttf_nTracks_integ_2ndTrack, dttf_nTracks_wheel, dttf_nTracks_wheel_2ndTrack, dttf_occupancySummary, dttf_occupancySummary_2ndTrack, dttf_occupancySummary_test, dttf_phi_eta_coarse_integ, dttf_phi_eta_fine_integ, dttf_phi_eta_integ, dttf_phi_eta_integ_2ndTrack, dttf_phi_integ, dttf_phi_integ_2ndTrack, dttf_phi_wheel, dttf_pt_integ, dttf_pt_integ_2ndTrack, dttf_pt_wheel, dttf_q_integ, dttf_q_integ_2ndTrack, dttf_q_wheel, dttf_quality_integ, dttf_quality_integ_2ndTrack, dttf_quality_summary, dttf_quality_summary_2ndTrack, dttf_quality_summary_wheel, dttf_quality_wheel, gmtpath_, inclusivepath_, l1tdttffolder_, dqm::impl::MonitorElement::setAxisTitle(), dqm::impl::MonitorElement::setBinLabel(), dqm::implementation::NavigatorBase::setCurrentFolder(), setQualLabel(), setWheelLabel(), testpath_, wheel_, and wheelpath_.

Referenced by dqmEndJob(), and dqmEndLuminosityBlock().

29  {
30  edm::LogInfo("L1TDTTFClient") << "[L1TDTTFClient]: Begin Job";
31 
32  wheelpath_[0] = l1tdttffolder_ + "/02-WHEEL_N2";
33  wheelpath_[1] = l1tdttffolder_ + "/03-WHEEL_N1";
34  wheelpath_[2] = l1tdttffolder_ + "/04-WHEEL_N0";
35  wheelpath_[3] = l1tdttffolder_ + "/05-WHEEL_P0";
36  wheelpath_[4] = l1tdttffolder_ + "/06-WHEEL_P1";
37  wheelpath_[5] = l1tdttffolder_ + "/07-WHEEL_P2";
38 
39  wheel_[0] = "N2";
40  wheel_[1] = "N1";
41  wheel_[2] = "N0";
42  wheel_[3] = "P0";
43  wheel_[4] = "P1";
44  wheel_[5] = "P2";
45 
46  inclusivepath_ = l1tdttffolder_ + "/01-INCLUSIVE";
47  gmtpath_ = l1tdttffolder_ + "/08-GMT_MATCH";
48  testpath_ = l1tdttffolder_ + "/09-TEST";
49 
51  char hname[100]; //histo name
52  char mename[100]; //ME name
53 
57  sprintf(hname, "dttf_02_nTracks");
58  sprintf(mename, "DTTF Tracks by Wheel");
59  dttf_nTracks_integ = ibooker.book1D(hname, mename, 6, 0, 6);
61 
63  sprintf(hname, "dttf_03_tracks_occupancy_summary");
64  sprintf(mename, "DTTF Tracks Occupancy");
65  dttf_occupancySummary = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
67  dttf_occupancySummary->setAxisTitle("Sector", 2);
68 
70 
72  sprintf(hname, "dttf_05_bx_occupancy");
73  sprintf(mename, "DTTF Tracks BX Distribution by Wheel");
74  dttf_bx_summary = ibooker.book2D(hname, mename, 6, 0, 6, 3, -1, 2);
76  dttf_bx_summary->setAxisTitle("BX", 2);
77 
79  sprintf(hname, "dttf_06_bx");
80  sprintf(mename, "DTTF Tracks BX w.r.t. Tracks with BX=0");
81  dttf_bx_integ = ibooker.book1D(hname, mename, 3, -1.5, 1.5);
82  dttf_bx_integ->setAxisTitle("BX", 1);
83 
85  sprintf(hname, "dttf_07_quality");
86  sprintf(mename, "DTTF Tracks Quality distribution");
87  dttf_quality_integ = ibooker.book1D(hname, mename, 7, 1, 8);
89 
91  sprintf(hname, "dttf_08_quality_occupancy");
92  sprintf(mename, "DTTF Tracks Quality distribution by Wheel");
93  dttf_quality_summary = ibooker.book2D(hname, mename, 6, 0, 6, 7, 1, 8);
97 
99  sprintf(hname, "dttf_09_highQuality_Tracks");
100  sprintf(mename, "Fraction of DTTF Tracks with Quality>3");
101  dttf_highQual_Summary = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
103  dttf_highQual_Summary->setAxisTitle("Sector", 2);
104 
106  sprintf(hname, "dttf_10_phi_vs_etaCoarse");
107  sprintf(mename, "#eta-#phi DTTF Tracks occupancy (coarse #eta only, packed values)");
108  dttf_phi_eta_coarse_integ = ibooker.book2D(hname, mename, 64, 0, 64, 144, -6, 138.);
111 
113  sprintf(hname, "dttf_11_phi_vs_etaFine");
114  sprintf(mename, "#eta-#phi DTTF Tracks occupancy (fine #eta only, packed values)");
115  dttf_phi_eta_fine_integ = ibooker.book2D(hname, mename, 64, 0, 64, 144, -6, 138.);
118 
120  sprintf(hname, "dttf_12_phi_vs_eta");
121  sprintf(mename, "#eta-#phi DTTF Tracks occupancy");
122  dttf_phi_eta_integ = ibooker.book2D(hname, mename, 64, -1.2, 1.2, 144, -15, 345.);
123  dttf_phi_eta_integ->setAxisTitle("#eta", 1);
124  dttf_phi_eta_integ->setAxisTitle("#phi", 2);
125 
127  sprintf(hname, "dttf_13_eta_fine_fraction");
128  sprintf(mename, "Fraction of DTTF Tracks with Fine #eta Assignment");
129  dttf_eta_fine_fraction = ibooker.book1D(hname, mename, 6, 0, 6);
132 
134 
136  sprintf(hname, "dttf_14_eta");
137  sprintf(mename, "DTTF Tracks #eta distribution (Packed values)");
138  dttf_eta_integ = ibooker.book1D(hname, mename, 64, -0.5, 63.5);
139  dttf_eta_integ->setAxisTitle("#eta", 1);
140 
142  sprintf(hname, "dttf_15_phi");
143  sprintf(mename, "DTTF Tracks Phi distribution (Packed values)");
144  dttf_phi_integ = ibooker.book1D(hname, mename, 144, -6, 138.);
145  dttf_phi_integ->setAxisTitle("#phi", 1);
146 
148  sprintf(hname, "dttf_16_pt");
149  sprintf(mename, "DTTF Tracks p_{T} distribution (Packed values)");
150  dttf_pt_integ = ibooker.book1D(hname, mename, 32, -0.5, 31.5);
151  dttf_pt_integ->setAxisTitle("p_{T}", 1);
153  sprintf(hname, "dttf_17_charge");
154  sprintf(mename, "DTTF Tracks Charge distribution");
155  dttf_q_integ = ibooker.book1D(hname, mename, 2, -0.5, 1.5);
156  dttf_q_integ->setAxisTitle("Charge", 1);
157 
159  sprintf(hname, "dttf_18_2ndTrack_occupancy_summary");
160  sprintf(mename, "DTTF 2nd Tracks occupancy w.r.t. Tracks with BX=0");
161  dttf_2ndTrack_Summary = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
163 
167  ibooker.setCurrentFolder(gmtpath_);
168  sprintf(hname, "dttf_gmt_fract_matching");
169  sprintf(mename, "Fraction of DTTF tracks matching with GMT tracks");
170  dttf_gmt_matching = ibooker.book1D(hname, mename, 3, 1, 4);
171  dttf_gmt_matching->setBinLabel(1, "GMT Only", 1);
172  dttf_gmt_matching->setBinLabel(2, "Matching", 1);
173  dttf_gmt_matching->setBinLabel(3, "DTTF Only", 1);
174 
178 
179  ibooker.setCurrentFolder(testpath_);
180  sprintf(hname, "dttf_01_tracks_occupancy_test_summary");
181  sprintf(mename, "DTTF Tracks Occupancy");
182  dttf_occupancySummary_test = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
185 
189  ibooker.setCurrentFolder(inclusivepath_ + "/2ND_TRACK_ONLY");
190 
192  sprintf(hname, "dttf_01_nTracks_2ndTrack");
193  sprintf(mename, "DTTF 2nd Tracks per Wheel distribution");
194  dttf_nTracks_integ_2ndTrack = ibooker.book1D(hname, mename, 6, 0, 6);
196 
198  sprintf(hname, "dttf_02_occupancy_summary_2ndTrack");
199  sprintf(mename, "DTTF 2nd Tracks distribution by Sector and Wheel");
200  dttf_occupancySummary_2ndTrack = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
202 
204  sprintf(hname, "dttf_03_bx_occupancy_2ndTrack");
205  sprintf(mename, "DTTF 2nd Tracks BX Distribution by Wheel");
206  dttf_bx_summary_2ndTrack = ibooker.book2D(hname, mename, 6, 0, 6, 3, -1, 2);
209 
211  sprintf(hname, "dttf_04_bx_2ndTrack");
212  sprintf(mename, "Fraction of DTTF Tracks BX w.r.t. Tracks with BX=0");
213  dttf_bx_integ_2ndTrack = ibooker.book1D(hname, mename, 3, -1.5, 1.5);
215 
217  sprintf(hname, "dttf_05_quality_2ndTrack");
218  sprintf(mename, "DTTF 2nd Tracks Quality distribution");
219  dttf_quality_integ_2ndTrack = ibooker.book1D(hname, mename, 7, 0.5, 7.5);
222 
224  sprintf(hname, "dttf_06_quality_occupancy_2ndTrack");
225  sprintf(mename, "DTTF 2nd Tracks Quality distribution by Wheel");
226  dttf_quality_summary_2ndTrack = ibooker.book2D(hname, mename, 6, 0, 6, 7, 1, 8);
230 
232  sprintf(hname, "dttf_07_highQuality_Tracks_2ndTrack");
233  sprintf(mename, "Fraction of DTTF 2nd Tracks with Quality>3");
234  dttf_highQual_Summary_2ndTrack = ibooker.book2D(hname, mename, 6, 0, 6, 12, 1, 13);
237 
239  sprintf(hname, "dttf_08_phi_vs_eta_2ndTrack");
240  sprintf(mename, "#eta-#phi DTTF Tracks occupancy for 2nd Tracks");
241  dttf_phi_eta_integ_2ndTrack = ibooker.book2D(hname, mename, 64, 0, 64, 144, -6, 138.);
244 
246  sprintf(hname, "dttf_09_eta_2ndTrack");
247  sprintf(mename, "DTTF 2nd Tracks #eta distribution (Packed values)");
248  dttf_eta_integ_2ndTrack = ibooker.book1D(hname, mename, 64, -0.5, 63.5);
250 
252  sprintf(hname, "dttf_10_phi_2ndTrack");
253  sprintf(mename, "DTTF 2nd Tracks Phi distribution (Packed values)");
254  dttf_phi_integ_2ndTrack = ibooker.book1D(hname, mename, 144, -6, 138);
256 
258  sprintf(hname, "dttf_11_pt_2ndTrack");
259  sprintf(mename, "DTTF 2nd Tracks p_{T} distribution (Packed values)");
260  dttf_pt_integ_2ndTrack = ibooker.book1D(hname, mename, 32, -0.5, 31.5);
262 
264  sprintf(hname, "dttf_12_charge_2ndTrack");
265  sprintf(mename, "DTTF 2nd Tracks Charge distribution");
266  dttf_q_integ_2ndTrack = ibooker.book1D(hname, mename, 2, -0.5, 1.5);
267  dttf_q_integ_2ndTrack->setAxisTitle("Charge", 1);
268 
269  for (unsigned int wh = 0; wh < 6; ++wh) {
270  ibooker.setCurrentFolder(wheelpath_[wh]);
271 
273  sprintf(hname, "dttf_02_nTracks_wh%s", wheel_[wh].c_str());
274  sprintf(mename, "Wheel %s - Number of Tracks", wheel_[wh].c_str());
275  dttf_nTracks_wheel[wh] = ibooker.book1D(hname, mename, 12, 1, 13);
276  dttf_nTracks_wheel[wh]->setAxisTitle("sector", 1);
277 
279  sprintf(hname, "dttf_03_bx_occupancy_wh%s", wheel_[wh].c_str());
280  sprintf(mename, "Wheel %s - DTTF Tracks BX distribution by Sector", wheel_[wh].c_str());
281  dttf_bx_wheel_summary[wh] = ibooker.book2D(hname, mename, 12, 1, 13, 3, -1, 2);
282  dttf_bx_wheel_summary[wh]->setAxisTitle("BX", 2);
283  dttf_bx_wheel_summary[wh]->setAxisTitle("Sector", 1);
284 
286  sprintf(hname, "dttf_04_bx_wh%s", wheel_[wh].c_str());
287  sprintf(mename, "Wheel %s - DTTF Tracks BX w.r.t. Tracks with BX=0", wheel_[wh].c_str());
288  dttf_bx_wheel_integ[wh] = ibooker.book1D(hname, mename, 3, -1.5, 1.5);
289  dttf_bx_wheel_integ[wh]->setAxisTitle("BX", 1);
290 
292  sprintf(hname, "dttf_05_quality_wh%s", wheel_[wh].c_str());
293  sprintf(mename, "Wheel %s - Tracks Quality Distribution", wheel_[wh].c_str());
294  dttf_quality_wheel[wh] = ibooker.book1D(hname, mename, 7, 1, 8);
295  dttf_quality_wheel[wh]->setAxisTitle("Quality", 1);
297 
299  sprintf(hname, "dttf_06_quality_summary_wh%s", wheel_[wh].c_str());
300  sprintf(mename, "Wheel %s - Tracks Quality Distribution by Sector", wheel_[wh].c_str());
301  dttf_quality_summary_wheel[wh] = ibooker.book2D(hname, mename, 12, 1, 13, 7, 1, 8);
302  dttf_quality_summary_wheel[wh]->setAxisTitle("Sector", 1);
303  // dttf_quality_summary_wheel[wh]->setAxisTitle("Quality", 2);
305 
307  sprintf(hname, "dttf_09_etaFine_fraction_wh%s", wheel_[wh].c_str());
308  sprintf(mename, "Wheel %s - Fraction of DTTF Tracks with fine #eta assignment", wheel_[wh].c_str());
309  dttf_fine_fraction_wh[wh] = ibooker.book1D(hname, mename, 12, 1, 13);
310  dttf_fine_fraction_wh[wh]->setAxisTitle("Sector", 1);
311 
313  sprintf(hname, "dttf_10_eta_wh%s", wheel_[wh].c_str());
314  sprintf(mename, "Wheel %s - DTTF Tracks #eta distribution (Packed values)", wheel_[wh].c_str());
315  dttf_eta_wheel[wh] = ibooker.book1D(hname, mename, 64, -0.5, 63.5);
316  dttf_eta_wheel[wh]->setAxisTitle("#eta", 1);
317 
319  sprintf(hname, "dttf_11_phi_wh%s", wheel_[wh].c_str());
320  sprintf(mename, "Wheel %s - DTTF Tracks Phi distribution (Packed values)", wheel_[wh].c_str());
321  dttf_phi_wheel[wh] = ibooker.book1D(hname, mename, 144, -6, 138.);
322  dttf_phi_wheel[wh]->setAxisTitle("#phi", 1);
323 
325  sprintf(hname, "dttf_12_pt_wh%s", wheel_[wh].c_str());
326  sprintf(mename, "Wheel %s - DTTF Tracks p_{T} distribution (Packed values)", wheel_[wh].c_str());
327  dttf_pt_wheel[wh] = ibooker.book1D(hname, mename, 32, -0.5, 31.5);
328  dttf_pt_wheel[wh]->setAxisTitle("p_{T}", 1);
329 
331  sprintf(hname, "dttf_13_charge_wh%s", wheel_[wh].c_str());
332  sprintf(mename, "Wheel %s - DTTF Tracks Charge distribution", wheel_[wh].c_str());
333  dttf_q_wheel[wh] = ibooker.book1D(hname, mename, 2, -0.5, 1.5);
334  dttf_q_wheel[wh]->setAxisTitle("Charge", 1);
335  }
336 
338  for (unsigned int wh = 0; wh < 6; ++wh) {
339  ibooker.setCurrentFolder(wheelpath_[wh] + "/2ND_TRACK_ONLY");
340 
342  sprintf(hname, "dttf_01_nTracks_wh%s_2ndTrack", wheel_[wh].c_str());
343  sprintf(mename, "Wheel %s - DTTF Number of 2nd Tracks with BX=0", wheel_[wh].c_str());
344  dttf_nTracks_wheel_2ndTrack[wh] = ibooker.book1D(hname, mename, 12, 1, 13);
345  dttf_nTracks_wheel_2ndTrack[wh]->setAxisTitle("sector", 1);
346 
348  sprintf(hname, "dttf_02_bx_occupancy_wh%s_2ndTrack", wheel_[wh].c_str());
349  sprintf(mename, "Wheel %s - DTTF 2nd Tracks BX distribution by Sector", wheel_[wh].c_str());
350  dttf_bx_wheel_summary_2ndTrack[wh] = ibooker.book2D(hname, mename, 12, 1, 13, 3, -1, 2);
353 
355  sprintf(hname, "dttf_03_bx_wh%s_2ndTrack", wheel_[wh].c_str());
356  sprintf(mename, "Wheel %s - 2nd Tracks BX Distribution", wheel_[wh].c_str());
357  dttf_bx_wheel_integ_2ndTrack[wh] = ibooker.book1D(hname, mename, 3, -1.5, 1.5);
359  }
360 }
MonitorElement * dttf_bx_integ_2ndTrack
Definition: L1TDTTFClient.h:76
MonitorElement * dttf_gmt_matching
Definition: L1TDTTFClient.h:68
MonitorElement * dttf_occupancySummary
Definition: L1TDTTFClient.h:52
MonitorElement * dttf_quality_summary
Definition: L1TDTTFClient.h:57
MonitorElement * dttf_q_wheel[6]
Definition: L1TDTTFClient.h:95
MonitorElement * dttf_eta_integ_2ndTrack
Definition: L1TDTTFClient.h:81
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
MonitorElement * dttf_quality_integ_2ndTrack
Definition: L1TDTTFClient.h:77
MonitorElement * dttf_eta_wheel[6]
Definition: L1TDTTFClient.h:92
MonitorElement * dttf_nTracks_integ
Definition: L1TDTTFClient.h:51
MonitorElement * dttf_quality_integ
Definition: L1TDTTFClient.h:56
std::string wheelpath_[6]
Definition: L1TDTTFClient.h:46
MonitorElement * dttf_bx_wheel_integ_2ndTrack[6]
Definition: L1TDTTFClient.h:99
MonitorElement * dttf_bx_wheel_summary[6]
Definition: L1TDTTFClient.h:87
MonitorElement * dttf_pt_integ_2ndTrack
Definition: L1TDTTFClient.h:83
MonitorElement * dttf_bx_integ
Definition: L1TDTTFClient.h:54
MonitorElement * dttf_phi_eta_fine_integ
Definition: L1TDTTFClient.h:60
MonitorElement * dttf_highQual_Summary_2ndTrack
Definition: L1TDTTFClient.h:79
MonitorElement * dttf_phi_wheel[6]
Definition: L1TDTTFClient.h:93
MonitorElement * dttf_phi_eta_integ
Definition: L1TDTTFClient.h:61
MonitorElement * dttf_quality_summary_wheel[6]
Definition: L1TDTTFClient.h:90
MonitorElement * dttf_pt_integ
Definition: L1TDTTFClient.h:64
MonitorElement * dttf_phi_eta_coarse_integ
Definition: L1TDTTFClient.h:59
MonitorElement * dttf_occupancySummary_2ndTrack
Definition: L1TDTTFClient.h:74
MonitorElement * dttf_eta_integ
Definition: L1TDTTFClient.h:65
MonitorElement * dttf_2ndTrack_Summary
Definition: L1TDTTFClient.h:69
std::string gmtpath_
Definition: L1TDTTFClient.h:48
MonitorElement * dttf_q_integ_2ndTrack
Definition: L1TDTTFClient.h:84
MonitorElement * dttf_bx_wheel_summary_2ndTrack[6]
Definition: L1TDTTFClient.h:98
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
MonitorElement * dttf_bx_summary
Definition: L1TDTTFClient.h:53
Log< level::Info, false > LogInfo
MonitorElement * dttf_quality_wheel[6]
Definition: L1TDTTFClient.h:89
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:212
MonitorElement * dttf_eta_fine_fraction
Definition: L1TDTTFClient.h:62
std::string l1tdttffolder_
Definition: L1TDTTFClient.h:37
MonitorElement * dttf_occupancySummary_test
Definition: L1TDTTFClient.h:71
MonitorElement * dttf_fine_fraction_wh[6]
Definition: L1TDTTFClient.h:91
void setQualLabel(MonitorElement *me, int axis)
MonitorElement * dttf_nTracks_wheel[6]
Definition: L1TDTTFClient.h:86
MonitorElement * dttf_bx_summary_2ndTrack
Definition: L1TDTTFClient.h:75
MonitorElement * dttf_nTracks_integ_2ndTrack
Definition: L1TDTTFClient.h:73
MonitorElement * dttf_phi_integ_2ndTrack
Definition: L1TDTTFClient.h:82
MonitorElement * dttf_pt_wheel[6]
Definition: L1TDTTFClient.h:94
MonitorElement * dttf_nTracks_wheel_2ndTrack[6]
Definition: L1TDTTFClient.h:97
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MonitorElement * dttf_phi_integ
Definition: L1TDTTFClient.h:63
MonitorElement * dttf_highQual_Summary
Definition: L1TDTTFClient.h:58
MonitorElement * dttf_q_integ
Definition: L1TDTTFClient.h:66
MonitorElement * dttf_bx_wheel_integ[6]
Definition: L1TDTTFClient.h:88
std::string inclusivepath_
Definition: L1TDTTFClient.h:47
std::string testpath_
Definition: L1TDTTFClient.h:49
void setWheelLabel(MonitorElement *me)
std::string wheel_[6]
Definition: L1TDTTFClient.h:45
MonitorElement * dttf_quality_summary_2ndTrack
Definition: L1TDTTFClient.h:78
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * dttf_phi_eta_integ_2ndTrack
Definition: L1TDTTFClient.h:80

◆ buildHighQualityPlot()

void L1TDTTFClient::buildHighQualityPlot ( DQMStore::IGetter igetter,
TH2F *  occupancySummary,
MonitorElement highQual_Summary,
const std::string &  path 
)
private

high quality TOBE IMPROVED

Definition at line 907 of file L1TDTTFClient.cc.

References getTH2F(), castor_dqm_sourceclient_file_cfg::path, quality, fileinputsource_cfi::sec, dqm::impl::MonitorElement::setBinContent(), AlCaHLTBitMon_QueryRunRegistry::string, heppy_batch::val, wheel_, and wheelpath_.

Referenced by makeSummary().

910  {
911  char hname[150];
912 
916  for (unsigned int wh = 0; wh < 6; ++wh) {
917  sprintf(hname, path.c_str(), wheelpath_[wh].c_str(), wheel_[wh].c_str());
918 
919  TH2F *quality = getTH2F(igetter, hname);
920  if (!quality) {
921  edm::LogError("L1TDTTFClient::buildHighQualityPlot") << "Failed to get TH2F " << std::string(hname);
922  } else {
923  for (unsigned int sec = 1; sec < 13; ++sec) {
924  double denHighQual = occupancySummary->GetBinContent(wh + 1, sec);
925  double val = 0;
926  if (denHighQual > 0) {
927  for (unsigned int qual = 4; qual < 8; ++qual) {
928  val += quality->GetBinContent(qual, sec);
929  }
930  val /= denHighQual;
931  }
932  highQual_Summary->setBinContent(wh + 1, sec, val);
933  }
934  }
935  }
936 }
std::string wheelpath_[6]
Definition: L1TDTTFClient.h:46
Log< level::Error, false > LogError
TH2F * getTH2F(DQMStore::IGetter &igetter, const char *hname)
string quality
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
std::string wheel_[6]
Definition: L1TDTTFClient.h:45

◆ buildPhiEtaPlotO()

void L1TDTTFClient::buildPhiEtaPlotO ( DQMStore::IGetter igetter,
MonitorElement phi_eta_integ,
const std::string &  path,
int  wh 
)
private

Definition at line 1035 of file L1TDTTFClient.cc.

References PVValHelper::eta, dqm::impl::MonitorElement::getBinContent(), getTH2F(), LaserClient_cfi::nbins, castor_dqm_sourceclient_file_cfg::path, phi, dqm::impl::MonitorElement::setBinContent(), command_line::start, AlCaHLTBitMon_QueryRunRegistry::string, heppy_batch::val, wheel_, and wheelpath_.

Referenced by buildSummaries().

1038  {
1039  char hname[100];
1040  sprintf(hname, path.c_str(), wheelpath_[wh].c_str(), wheel_[wh].c_str());
1041 
1042  TH2F *phi_vs_eta = getTH2F(igetter, hname);
1043  if (!phi_vs_eta) {
1044  edm::LogError("L1TDTTFClient::buildPhiEtaPlotO:ME") << "Failed to get TH1D " << std::string(hname);
1045  } else {
1046  for (unsigned int phi = 1; phi < 145; ++phi) {
1047  float start = 0;
1048  int nbins = 0;
1049  switch (wh) {
1050  case 0:
1051  start = 0;
1052  nbins = 18;
1053  break; // N2
1054  case 1:
1055  start = 8;
1056  nbins = 20;
1057  break; // N1
1058  case 2:
1059  start = 22;
1060  nbins = 10;
1061  break; // N0
1062  case 3:
1063  start = 22;
1064  nbins = 20;
1065  break; // P0
1066  case 4:
1067  start = 36;
1068  nbins = 20;
1069  break; // P1
1070  case 5:
1071  start = 46;
1072  nbins = 18;
1073  break; // P2
1074  default:
1075  start = 0;
1076  nbins = 0;
1077  break; // BOH
1078  }
1079 
1080  for (int eta = 1; eta <= nbins; ++eta) {
1081  double setbin = eta + start;
1082  double val = phi_vs_eta->GetBinContent(eta, phi) + phi_eta_integ->getBinContent(setbin, phi);
1083  phi_eta_integ->setBinContent(setbin, phi, val);
1084  }
1085 
1086  double underflow = phi_vs_eta->GetBinContent(0, phi) + phi_eta_integ->getBinContent(1, phi);
1087  phi_eta_integ->setBinContent(1, phi, underflow);
1088 
1089  double overflow = phi_vs_eta->GetBinContent(nbins + 1, phi) + phi_eta_integ->getBinContent(64);
1090  phi_eta_integ->setBinContent(64, phi, overflow);
1091  }
1092  }
1093 }
Definition: start.py:1
std::string wheelpath_[6]
Definition: L1TDTTFClient.h:46
Log< level::Error, false > LogError
TH2F * getTH2F(DQMStore::IGetter &igetter, const char *hname)
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
std::string wheel_[6]
Definition: L1TDTTFClient.h:45
virtual double getBinContent(int binx) const
get content of bin (1-D)

◆ buildPhiEtaPlotOFC()

void L1TDTTFClient::buildPhiEtaPlotOFC ( DQMStore::IGetter igetter,
MonitorElement phi_eta_fine_integ,
MonitorElement phi_eta_coarse_integ,
MonitorElement phi_eta_integ,
const std::string &  path_fine,
const std::string &  path_coarse,
int  wh 
)
private

Definition at line 939 of file L1TDTTFClient.cc.

References PVValHelper::eta, dqm::impl::MonitorElement::getBinContent(), getTH2F(), LaserClient_cfi::nbins, phi, dqm::impl::MonitorElement::setBinContent(), command_line::start, AlCaHLTBitMon_QueryRunRegistry::string, wheel_, and wheelpath_.

Referenced by buildSummaries().

945  {
946  char hname[150];
947  sprintf(hname, path_fine.c_str(), wheelpath_[wh].c_str(), wheel_[wh].c_str());
948 
949  TH2F *phi_vs_eta_fine = getTH2F(igetter, hname);
950  if (!phi_vs_eta_fine) {
951  edm::LogError("L1TDTTFClient::buildPhiEtaPloOtFC") << "Failed to get TH1D " << std::string(hname);
952  }
953 
954  sprintf(hname, path_coarse.c_str(), wheelpath_[wh].c_str(), wheel_[wh].c_str());
955  TH2F *phi_vs_eta_coarse = getTH2F(igetter, hname);
956  if (!phi_vs_eta_coarse) {
957  edm::LogError("L1TDTTFClient::buildPhiEtaPlotOFC") << "Failed to get TH1D " << std::string(hname);
958  }
959 
960  if (!phi_vs_eta_fine || !phi_vs_eta_coarse) {
961  return;
962  }
963 
964  for (unsigned int phi = 1; phi < 145; ++phi) {
965  float start = 0;
966  int nbins = 0;
967  switch (wh) {
968  case 0:
969  start = 0;
970  nbins = 18;
971  break; // N2
972  case 1:
973  start = 8;
974  nbins = 20;
975  break; // N1
976  case 2:
977  start = 22;
978  nbins = 10;
979  break; // N0
980  case 3:
981  start = 22;
982  nbins = 20;
983  break; // P0
984  case 4:
985  start = 36;
986  nbins = 20;
987  break; // P1
988  case 5:
989  start = 46;
990  nbins = 18;
991  break; // P2
992  default:
993  start = 0;
994  nbins = 0;
995  break; // BOH
996  }
997 
998  for (int eta = 1; eta <= nbins; ++eta) {
999  double setbin = eta + start;
1000 
1001  double valfine = phi_vs_eta_fine->GetBinContent(eta, phi) + phi_eta_fine_integ->getBinContent(setbin, phi);
1002 
1003  double valcoarse = phi_vs_eta_coarse->GetBinContent(eta, phi) + phi_eta_coarse_integ->getBinContent(setbin, phi);
1004 
1005  phi_eta_fine_integ->setBinContent(setbin, phi, valfine);
1006  phi_eta_coarse_integ->setBinContent(setbin, phi, valcoarse);
1007  phi_eta_integ->setBinContent(setbin, phi, valfine + valcoarse);
1008  }
1009 
1010  // double underflow_f = phi_vs_eta_fine->GetBinContent( 0, phi )
1011  // + phi_eta_fine_integ->getBinContent( 1, phi );
1012  // phi_eta_fine_integ->setBinContent( 1, phi, underflow_f );
1013  //
1014  // double underflow_c = phi_vs_eta_coarse->GetBinContent( 0, phi )
1015  // + phi_eta_coarse_integ->getBinContent( 1, phi );
1016  // phi_eta_coarse_integ->setBinContent( 1, phi, underflow_c );
1017  //
1018  // double overflow_f = phi_vs_eta_fine->GetBinContent( nbins+1, phi )
1019  // + phi_eta_fine_integ->getBinContent( 64 );
1020  // phi_eta_fine_integ->setBinContent( 64, phi, overflow_f );
1021  //
1022  // double overflow_c = phi_vs_eta_coarse->GetBinContent( nbins+1, phi )
1023  // + phi_eta_coarse_integ->getBinContent( 64, phi );
1024  // phi_eta_coarse_integ->setBinContent( 64, phi, overflow_c );
1025  //
1026  // double underflow = underflow_f + underflow_c;
1027  // phi_eta_integ->setBinContent( 1, phi, underflow );
1028  //
1029  // double overflow = overflow_f + overflow_c;
1030  // phi_eta_integ->setBinContent( 64, phi, overflow );
1031  }
1032 }
Definition: start.py:1
std::string wheelpath_[6]
Definition: L1TDTTFClient.h:46
Log< level::Error, false > LogError
TH2F * getTH2F(DQMStore::IGetter &igetter, const char *hname)
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
std::string wheel_[6]
Definition: L1TDTTFClient.h:45
virtual double getBinContent(int binx) const
get content of bin (1-D)

◆ buildSummaries()

void L1TDTTFClient::buildSummaries ( DQMStore::IGetter igetter)
private

needed for bx_integ

needed for bx_summary 2nd

needed for bx_integ

needed for bx_summary 2nd

needed for by wheel qualities

reset histograms

????

needed for fine fraction

needed for fine fraction

for quality

PHI vs Eta

Loop over sectors

Charge by sector

PT by sector

Phi by sector

Quality by sector

needed for high quality plot

needed for high quality plot (denominator)

eta fine by sector

eta fine fraction by sector

still eta: fraction by wheel

integ summary

still bx: wheel summary & inclusive

by wheel quality: integ summary

by wheel rescaling bx by wheel and number of tracks distribution

by wheel rescaling bx distributions

MORE ON 2ND TRACKS

eta by sector

Phi by wheel 2nd Tracks

PT by wheel 2nd Tracks

Charge by wheel 2nd Tracks

Quality by wheel 2nd Tracks

still bx: scaling integrals

rescaling bx distributions

Definition at line 474 of file L1TDTTFClient.cc.

References buildPhiEtaPlotO(), buildPhiEtaPlotOFC(), simKBmtfDigis_cfi::bx, dttf_2ndTrack_Summary, dttf_bx_integ, dttf_bx_integ_2ndTrack, dttf_bx_summary, dttf_bx_summary_2ndTrack, dttf_bx_wheel_integ, dttf_bx_wheel_integ_2ndTrack, dttf_bx_wheel_summary, dttf_bx_wheel_summary_2ndTrack, dttf_eta_fine_fraction, dttf_eta_integ, dttf_eta_integ_2ndTrack, dttf_eta_wheel, dttf_fine_fraction_wh, dttf_highQual_Summary, dttf_nTracks_integ, dttf_nTracks_integ_2ndTrack, dttf_nTracks_wheel, dttf_nTracks_wheel_2ndTrack, dttf_occupancySummary, dttf_occupancySummary_2ndTrack, dttf_occupancySummary_test, dttf_phi_eta_coarse_integ, dttf_phi_eta_fine_integ, dttf_phi_eta_integ, dttf_phi_eta_integ_2ndTrack, dttf_phi_integ, dttf_phi_integ_2ndTrack, dttf_phi_wheel, dttf_pt_integ, dttf_pt_integ_2ndTrack, dttf_pt_wheel, dttf_q_integ, dttf_q_integ_2ndTrack, dttf_q_wheel, dttf_quality_integ, dttf_quality_integ_2ndTrack, dttf_quality_summary, dttf_quality_summary_2ndTrack, dttf_quality_summary_wheel, dttf_quality_wheel, getTH1F(), dqm::legacy::MonitorElement::getTH1F(), getTH2F(), normalize(), qualities, dqm::impl::MonitorElement::Reset(), L1EGammaClusterEmuProducer_cfi::scale, hgcalTBTopologyTester_cfi::sector, dqm::impl::MonitorElement::setBinContent(), AlCaHLTBitMon_QueryRunRegistry::string, createJobs::tmp, compareTotals::tot, wheel_, and wheelpath_.

Referenced by makeSummary().

474  {
475  char hname[100];
476  int wheelBx[4];
477  int wheelBx2nd[4];
478  int wheelSumBx[4];
479  int wheelSumBx2nd[4];
480  int qualities[8];
481 
482  memset(wheelSumBx, 0, 4 * sizeof(int));
483  memset(wheelSumBx2nd, 0, 4 * sizeof(int));
484 
487  dttf_q_integ->Reset();
488  dttf_pt_integ->Reset();
498 
502 
503  for (unsigned int wh = 0; wh < 6; ++wh) {
504  dttf_eta_wheel[wh]->Reset();
505  dttf_q_wheel[wh]->Reset();
506  dttf_pt_wheel[wh]->Reset();
507  dttf_phi_wheel[wh]->Reset();
508  dttf_quality_wheel[wh]->Reset();
510 
511  double wheelEtaAll = 0;
512  double wheelEtaFine = 0;
513  memset(wheelBx, 0, 4 * sizeof(int));
514  memset(wheelBx2nd, 0, 4 * sizeof(int));
515 
517  memset(qualities, 0, 8 * sizeof(int));
518 
522  buildPhiEtaPlotOFC(igetter,
526  "%s/dttf_07_phi_vs_etaFine_wh%s",
527  "%s/dttf_08_phi_vs_etaCoarse_wh%s",
528  wh);
529 
530  buildPhiEtaPlotO(igetter, dttf_phi_eta_integ_2ndTrack, "%s/2ND_TRACK_ONLY/dttf_06_phi_vs_eta_wh%s_2ndTrack", wh);
531 
535  for (unsigned int sector = 1; sector < 13; ++sector) {
539  sprintf(hname, "%s/BX_BySector/dttf_bx_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
540 
541  TH1F *bxsector = getTH1F(igetter, hname);
542  if (!bxsector) {
543  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
544  } else {
545  for (unsigned int bx = 1; bx < 4; ++bx) {
546  int bxval = bxsector->GetBinContent(bx);
547 
548  if (bx == 2) {
549  // if ( wh == 2 )
550  // dttf_occupancySummary->setBinContent( wh+1, sector, bxval*14 );
551  // else
552  // dttf_occupancySummary->setBinContent( wh+1, sector, bxval );
553  dttf_occupancySummary->setBinContent(wh + 1, sector, bxval);
556  }
557  wheelBx[bx] += bxval;
559  }
560  }
561 
565  sprintf(hname,
566  "%s/BX_BySector/2ND_TRACK_ONLY/dttf_bx_2ndTrack_wh%s_se%d",
567  wheelpath_[wh].c_str(),
568  wheel_[wh].c_str(),
569  sector);
570 
571  TH1F *bxsector2nd = getTH1F(igetter, hname);
572  if (!bxsector2nd) {
573  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
574  } else {
575  for (unsigned int bx = 1; bx < 4; ++bx) {
576  int bxval = bxsector2nd->GetBinContent(bx);
577 
578  if (bx == 2) {
579  dttf_2ndTrack_Summary->setBinContent(wh + 1, sector, bxval);
582  }
583  wheelBx2nd[bx] += bxval;
585  }
586  }
587 
591  sprintf(hname, "%s/Charge/dttf_charge_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
592  TH1F *tmp = getTH1F(igetter, hname);
593  if (!tmp) {
594  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
595  } else {
596  dttf_q_integ->getTH1F()->Add(tmp);
597  dttf_q_wheel[wh]->getTH1F()->Add(tmp);
598  }
599 
603  sprintf(hname, "%s/PT/dttf_pt_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
604  tmp = getTH1F(igetter, hname);
605  if (!tmp) {
606  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
607  } else {
608  dttf_pt_integ->getTH1F()->Add(tmp);
609  dttf_pt_wheel[wh]->getTH1F()->Add(tmp);
610  }
611 
615  sprintf(hname, "%s/Phi/dttf_phi_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
616  tmp = getTH1F(igetter, hname);
617  if (!tmp) {
618  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
619  } else {
620  dttf_phi_integ->getTH1F()->Add(tmp);
621  dttf_phi_wheel[wh]->getTH1F()->Add(tmp);
622  }
623 
627  double highQual = 0;
628  double denHighQual = 0;
629  sprintf(hname, "%s/Quality/dttf_qual_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
630  tmp = getTH1F(igetter, hname);
631  if (!tmp) {
632  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
633  } else {
634  dttf_quality_wheel[wh]->getTH1F()->Add(tmp);
635 
636  for (unsigned int qual = 1; qual < 4; ++qual) {
637  double bincontent = tmp->GetBinContent(qual);
638  qualities[qual] += bincontent;
639  denHighQual += bincontent;
640  dttf_quality_summary_wheel[wh]->setBinContent(sector, qual, bincontent);
641  }
642 
643  for (unsigned int qual = 4; qual < 8; ++qual) {
644  double bincontent = tmp->GetBinContent(qual);
645  qualities[qual] += bincontent;
646  dttf_quality_summary_wheel[wh]->setBinContent(sector, qual, bincontent);
647  denHighQual += bincontent;
648  highQual += bincontent;
649  }
650  }
651  if (denHighQual > 0)
652  highQual /= denHighQual;
653  dttf_highQual_Summary->setBinContent(wh + 1, sector, highQual);
654 
658  sprintf(hname, "%s/Eta/dttf_eta_wh%s_se%d", wheelpath_[wh].c_str(), wheel_[wh].c_str(), sector);
659  tmp = getTH1F(igetter, hname);
660  if (!tmp) {
661  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
662  } else {
663  dttf_eta_integ->getTH1F()->Add(tmp);
664  dttf_eta_wheel[wh]->getTH1F()->Add(tmp);
665  }
666 
670  sprintf(hname,
671  "%s/EtaFineFraction/dttf_etaFine_fraction_wh%s_se%d",
672  wheelpath_[wh].c_str(),
673  wheel_[wh].c_str(),
674  sector);
675  tmp = getTH1F(igetter, hname);
676  if (!tmp) {
677  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
678  } else {
679  double fine = tmp->GetBinContent(1);
680  double coarse = tmp->GetBinContent(2);
681  double tot = fine + coarse;
682  wheelEtaAll += tot;
683  wheelEtaFine += fine;
684  if (tot > 0) {
686  }
687  }
688  }
689 
693  if (wheelEtaAll > 0) {
694  dttf_eta_fine_fraction->setBinContent(wh + 1, wheelEtaFine / wheelEtaAll);
695  }
696 
700  dttf_nTracks_integ->setBinContent(wh + 1, wheelBx[2]);
701  dttf_nTracks_integ_2ndTrack->setBinContent(wh + 1, wheelBx2nd[2]);
702 
706  for (unsigned int bx = 1; bx < 4; ++bx) {
707  dttf_bx_wheel_integ[wh]->setBinContent(bx, wheelBx[bx]);
708  dttf_bx_summary->setBinContent(wh + 1, bx, wheelBx[bx]);
709  wheelSumBx[bx] += wheelBx[bx];
710 
711  dttf_bx_wheel_integ_2ndTrack[wh]->setBinContent(bx, wheelBx2nd[bx]);
712  dttf_bx_summary_2ndTrack->setBinContent(wh + 1, bx, wheelBx2nd[bx]);
713  wheelSumBx2nd[bx] += wheelBx2nd[bx];
714  }
715 
719  for (unsigned int qual = 1; qual < 8; ++qual) {
720  dttf_quality_summary->setBinContent(wh + 1, qual, qualities[qual]);
721  dttf_quality_integ->getTH1F()->AddBinContent(qual, qualities[qual]);
722  }
723 
737 
741  double scale = wheelBx[2];
742  if (scale > 0) {
743  scale = 1 / scale;
745  }
746 
747  scale = wheelBx2nd[2];
748  if (scale > 0) {
749  scale = 1 / scale;
751  }
752 
758 
762  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_07_eta_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
763 
764  TH1F *tmp = getTH1F(igetter, hname);
765  if (!tmp) {
766  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
767  } else {
769  }
770 
774  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_08_phi_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
775  tmp = getTH1F(igetter, hname);
776  if (!tmp) {
777  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
778  } else {
780  }
781 
785  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_09_pt_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
786  tmp = getTH1F(igetter, hname);
787  if (!tmp) {
788  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
789  } else {
791  }
792 
796  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_10_charge_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
797  tmp = getTH1F(igetter, hname);
798  if (!tmp) {
799  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
800  } else {
802  }
803 
807  sprintf(hname, "%s/2ND_TRACK_ONLY/dttf_04_quality_wh%s_2ndTrack", wheelpath_[wh].c_str(), wheel_[wh].c_str());
808  tmp = getTH1F(igetter, hname);
809  if (!tmp) {
810  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
811  } else {
812  for (unsigned int qual = 1; qual < 8; ++qual) {
813  double binqual = tmp->GetBinContent(qual);
814  dttf_quality_integ_2ndTrack->getTH1F()->AddBinContent(qual, binqual);
815  dttf_quality_summary_2ndTrack->setBinContent(wh + 1, qual, binqual);
816  }
817  }
818  }
819 
823  for (unsigned int bx = 1; bx < 4; ++bx) {
824  dttf_bx_integ->setBinContent(bx, wheelSumBx[bx]);
825  dttf_bx_integ_2ndTrack->setBinContent(bx, wheelSumBx2nd[bx]);
826  }
827 
831  double scale = wheelSumBx[2];
832  if (scale > 0) {
833  scale = 1. / scale;
835  }
836 
837  scale = wheelSumBx2nd[2];
838  if (scale > 0) {
839  scale = 1. / scale;
841  }
842 }
MonitorElement * dttf_bx_integ_2ndTrack
Definition: L1TDTTFClient.h:76
MonitorElement * dttf_occupancySummary
Definition: L1TDTTFClient.h:52
MonitorElement * dttf_quality_summary
Definition: L1TDTTFClient.h:57
MonitorElement * dttf_q_wheel[6]
Definition: L1TDTTFClient.h:95
MonitorElement * dttf_eta_integ_2ndTrack
Definition: L1TDTTFClient.h:81
MonitorElement * dttf_quality_integ_2ndTrack
Definition: L1TDTTFClient.h:77
MonitorElement * dttf_eta_wheel[6]
Definition: L1TDTTFClient.h:92
MonitorElement * dttf_nTracks_integ
Definition: L1TDTTFClient.h:51
MonitorElement * dttf_quality_integ
Definition: L1TDTTFClient.h:56
TH1F * getTH1F(DQMStore::IGetter &igetter, const char *hname)
std::string wheelpath_[6]
Definition: L1TDTTFClient.h:46
void buildPhiEtaPlotO(DQMStore::IGetter &igetter, MonitorElement *phi_eta_integ, const std::string &path, int wh)
MonitorElement * dttf_bx_wheel_integ_2ndTrack[6]
Definition: L1TDTTFClient.h:99
MonitorElement * dttf_bx_wheel_summary[6]
Definition: L1TDTTFClient.h:87
Log< level::Error, false > LogError
MonitorElement * dttf_pt_integ_2ndTrack
Definition: L1TDTTFClient.h:83
MonitorElement * dttf_bx_integ
Definition: L1TDTTFClient.h:54
TH2F * getTH2F(DQMStore::IGetter &igetter, const char *hname)
MonitorElement * dttf_phi_eta_fine_integ
Definition: L1TDTTFClient.h:60
virtual void Reset()
Remove all data from the ME, keept the empty histogram with all its settings.
MonitorElement * dttf_phi_wheel[6]
Definition: L1TDTTFClient.h:93
MonitorElement * dttf_phi_eta_integ
Definition: L1TDTTFClient.h:61
MonitorElement * dttf_quality_summary_wheel[6]
Definition: L1TDTTFClient.h:90
MonitorElement * dttf_pt_integ
Definition: L1TDTTFClient.h:64
MonitorElement * dttf_phi_eta_coarse_integ
Definition: L1TDTTFClient.h:59
MonitorElement * dttf_occupancySummary_2ndTrack
Definition: L1TDTTFClient.h:74
MonitorElement * dttf_eta_integ
Definition: L1TDTTFClient.h:65
MonitorElement * dttf_2ndTrack_Summary
Definition: L1TDTTFClient.h:69
MonitorElement * dttf_q_integ_2ndTrack
Definition: L1TDTTFClient.h:84
MonitorElement * dttf_bx_wheel_summary_2ndTrack[6]
Definition: L1TDTTFClient.h:98
const char * qualities[3]
MonitorElement * dttf_bx_summary
Definition: L1TDTTFClient.h:53
MonitorElement * dttf_quality_wheel[6]
Definition: L1TDTTFClient.h:89
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
virtual TH1F * getTH1F() const
MonitorElement * dttf_eta_fine_fraction
Definition: L1TDTTFClient.h:62
MonitorElement * dttf_occupancySummary_test
Definition: L1TDTTFClient.h:71
MonitorElement * dttf_fine_fraction_wh[6]
Definition: L1TDTTFClient.h:91
MonitorElement * dttf_nTracks_wheel[6]
Definition: L1TDTTFClient.h:86
MonitorElement * dttf_bx_summary_2ndTrack
Definition: L1TDTTFClient.h:75
MonitorElement * dttf_nTracks_integ_2ndTrack
Definition: L1TDTTFClient.h:73
void buildPhiEtaPlotOFC(DQMStore::IGetter &igetter, MonitorElement *phi_eta_fine_integ, MonitorElement *phi_eta_coarse_integ, MonitorElement *phi_eta_integ, const std::string &path_fine, const std::string &path_coarse, int wh)
MonitorElement * dttf_phi_integ_2ndTrack
Definition: L1TDTTFClient.h:82
MonitorElement * dttf_pt_wheel[6]
Definition: L1TDTTFClient.h:94
MonitorElement * dttf_nTracks_wheel_2ndTrack[6]
Definition: L1TDTTFClient.h:97
MonitorElement * dttf_phi_integ
Definition: L1TDTTFClient.h:63
tmp
align.sh
Definition: createJobs.py:716
MonitorElement * dttf_highQual_Summary
Definition: L1TDTTFClient.h:58
MonitorElement * dttf_q_integ
Definition: L1TDTTFClient.h:66
MonitorElement * dttf_bx_wheel_integ[6]
Definition: L1TDTTFClient.h:88
void normalize(T *me)
std::string wheel_[6]
Definition: L1TDTTFClient.h:45
MonitorElement * dttf_quality_summary_2ndTrack
Definition: L1TDTTFClient.h:78
MonitorElement * dttf_phi_eta_integ_2ndTrack
Definition: L1TDTTFClient.h:80

◆ dqmEndJob()

void L1TDTTFClient::dqmEndJob ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter 
)
overrideprotectedvirtual

Implements DQMEDHarvester.

Definition at line 364 of file L1TDTTFClient.cc.

References book(), and makeSummary().

364  {
365  //Processing by run ID
366  book(ibooker);
367  makeSummary(igetter);
368 }
void book(DQMStore::IBooker &ibooker)
void makeSummary(DQMStore::IGetter &igetter)

◆ dqmEndLuminosityBlock()

void L1TDTTFClient::dqmEndLuminosityBlock ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter,
edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  c 
)
overrideprotectedvirtual

Processing by Luminosity Block

Reimplemented from DQMEDHarvester.

Definition at line 371 of file L1TDTTFClient.cc.

References book(), counterLS_, getTH2F(), inclusivepath_, makeSummary(), normalize(), occupancy_r_, online_, resetafterlumi_, and AlCaHLTBitMon_QueryRunRegistry::string.

374  {
376  if (online_ && !(counterLS_ % resetafterlumi_)) {
377  book(ibooker);
378  char hname[60];
379  sprintf(hname, "%s/dttf_04_tracks_occupancy_by_lumi", inclusivepath_.c_str());
380 
381  occupancy_r_ = getTH2F(igetter, hname);
382  if (!occupancy_r_) {
383  edm::LogError("L1TDTTFClient::beginLuminosityBlock:ME") << "Failed to get TH2D " << std::string(hname);
384  } else {
385  edm::LogInfo("L1TDTTFClient::beginLuminosityBlock:RESET") << "Reseting plots by lumi!";
386  occupancy_r_->Reset();
387  }
388  }
389 
390  if (online_) {
391  makeSummary(igetter);
392  if (occupancy_r_)
394  }
395 }
void book(DQMStore::IBooker &ibooker)
Log< level::Error, false > LogError
TH2F * getTH2F(DQMStore::IGetter &igetter, const char *hname)
TH2F * occupancy_r_
counter
Definition: L1TDTTFClient.h:43
Log< level::Info, false > LogInfo
void makeSummary(DQMStore::IGetter &igetter)
void normalize(T *me)
std::string inclusivepath_
Definition: L1TDTTFClient.h:47

◆ getTH1F()

TH1F * L1TDTTFClient::getTH1F ( DQMStore::IGetter igetter,
const char *  hname 
)
private

Definition at line 883 of file L1TDTTFClient.cc.

References dqm::implementation::IGetter::get(), hlt_dqm_clientPB-live_cfg::me, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by buildSummaries().

883  {
884  MonitorElement *me = igetter.get(hname);
885  if (!me) {
886  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get ME " << std::string(hname);
887  return nullptr;
888  }
889 
890  return me->getTH1F();
891 }
Log< level::Error, false > LogError
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:712

◆ getTH2F()

TH2F * L1TDTTFClient::getTH2F ( DQMStore::IGetter igetter,
const char *  hname 
)
private

Definition at line 894 of file L1TDTTFClient.cc.

References dqm::implementation::IGetter::get(), hlt_dqm_clientPB-live_cfg::me, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by buildHighQualityPlot(), buildPhiEtaPlotO(), buildPhiEtaPlotOFC(), buildSummaries(), dqmEndLuminosityBlock(), and setGMTsummary().

894  {
895  MonitorElement *me = igetter.get(hname);
896  if (!me) {
897  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get ME " << std::string(hname);
898  return nullptr;
899  }
900 
901  return me->getTH2F();
902 }
Log< level::Error, false > LogError
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:712

◆ makeSummary()

void L1TDTTFClient::makeSummary ( DQMStore::IGetter igetter)
private

Build Summariy plots

RESCALE PLOTS

BX has simply all entries

Scale plots with all entries

Scale plots with only physical entries (no N0 duplicates)

RESCALE PLOTS FOR 2nd tracks

BX has simply all entries

buildHigh Quality Summary Plot

Scale plots with all entries

Scale plots with only physical entries (no N0 duplicates)

GMT

Definition at line 398 of file L1TDTTFClient.cc.

References buildHighQualityPlot(), buildSummaries(), dttf_2ndTrack_Summary, dttf_bx_summary, dttf_bx_summary_2ndTrack, dttf_eta_integ, dttf_eta_integ_2ndTrack, dttf_highQual_Summary_2ndTrack, dttf_nTracks_integ, dttf_nTracks_integ_2ndTrack, dttf_occupancySummary, dttf_occupancySummary_2ndTrack, dttf_phi_eta_coarse_integ, dttf_phi_eta_fine_integ, dttf_phi_eta_integ, dttf_phi_eta_integ_2ndTrack, dttf_phi_integ, dttf_phi_integ_2ndTrack, dttf_pt_integ, dttf_pt_integ_2ndTrack, dttf_q_integ, dttf_q_integ_2ndTrack, dttf_quality_integ, dttf_quality_integ_2ndTrack, dttf_quality_summary, dttf_quality_summary_2ndTrack, dqm::legacy::MonitorElement::getTH1F(), dqm::legacy::MonitorElement::getTH2F(), normalize(), particleFlowDisplacedVertex_cfi::ratio, L1EGammaClusterEmuProducer_cfi::scale, and setGMTsummary().

Referenced by dqmEndJob(), and dqmEndLuminosityBlock().

398  {
402  buildSummaries(igetter);
403 
407  double scale = 0;
408  double entries = dttf_occupancySummary->getTH2F()->Integral();
409 
410  if (entries) {
413 
415  scale = 1 / entries;
418 
420  double physEntries = dttf_eta_integ->getTH1F()->Integral();
421  if (physEntries > 0) {
422  double physScale = 1 / physEntries;
423 
424  normalize(dttf_phi_eta_integ->getTH2F(), physScale);
425 
428  normalize(dttf_quality_summary->getTH2F(), physScale);
429 
430  normalize(dttf_eta_integ->getTH1F(), physScale);
431  normalize(dttf_q_integ->getTH1F(), physScale);
432  normalize(dttf_pt_integ->getTH1F(), physScale);
433  normalize(dttf_phi_integ->getTH1F(), physScale);
434  normalize(dttf_quality_integ->getTH1F(), physScale);
435  }
436  }
437 
441 
442  double entries2ndTrack = dttf_occupancySummary_2ndTrack->getTH2F()->Integral();
443  if (entries2ndTrack > 0) {
446 
450  igetter, ratio, dttf_highQual_Summary_2ndTrack, "%s/2ND_TRACK_ONLY/dttf_05_quality_summary_wh%s_2ndTrack");
451 
453 
455  double scale2nd = 1 / entries2ndTrack;
458 
467  }
468 
470  setGMTsummary(igetter);
471 }
MonitorElement * dttf_occupancySummary
Definition: L1TDTTFClient.h:52
MonitorElement * dttf_quality_summary
Definition: L1TDTTFClient.h:57
MonitorElement * dttf_eta_integ_2ndTrack
Definition: L1TDTTFClient.h:81
MonitorElement * dttf_quality_integ_2ndTrack
Definition: L1TDTTFClient.h:77
void buildSummaries(DQMStore::IGetter &igetter)
MonitorElement * dttf_nTracks_integ
Definition: L1TDTTFClient.h:51
MonitorElement * dttf_quality_integ
Definition: L1TDTTFClient.h:56
void buildHighQualityPlot(DQMStore::IGetter &igetter, TH2F *occupancySummary, MonitorElement *highQual_Summary, const std::string &path)
MonitorElement * dttf_pt_integ_2ndTrack
Definition: L1TDTTFClient.h:83
MonitorElement * dttf_phi_eta_fine_integ
Definition: L1TDTTFClient.h:60
virtual TH2F * getTH2F() const
MonitorElement * dttf_highQual_Summary_2ndTrack
Definition: L1TDTTFClient.h:79
MonitorElement * dttf_phi_eta_integ
Definition: L1TDTTFClient.h:61
MonitorElement * dttf_pt_integ
Definition: L1TDTTFClient.h:64
MonitorElement * dttf_phi_eta_coarse_integ
Definition: L1TDTTFClient.h:59
MonitorElement * dttf_occupancySummary_2ndTrack
Definition: L1TDTTFClient.h:74
MonitorElement * dttf_eta_integ
Definition: L1TDTTFClient.h:65
MonitorElement * dttf_2ndTrack_Summary
Definition: L1TDTTFClient.h:69
MonitorElement * dttf_q_integ_2ndTrack
Definition: L1TDTTFClient.h:84
MonitorElement * dttf_bx_summary
Definition: L1TDTTFClient.h:53
virtual TH1F * getTH1F() const
MonitorElement * dttf_bx_summary_2ndTrack
Definition: L1TDTTFClient.h:75
MonitorElement * dttf_nTracks_integ_2ndTrack
Definition: L1TDTTFClient.h:73
void setGMTsummary(DQMStore::IGetter &igetter)
MonitorElement * dttf_phi_integ_2ndTrack
Definition: L1TDTTFClient.h:82
MonitorElement * dttf_phi_integ
Definition: L1TDTTFClient.h:63
MonitorElement * dttf_q_integ
Definition: L1TDTTFClient.h:66
void normalize(T *me)
MonitorElement * dttf_quality_summary_2ndTrack
Definition: L1TDTTFClient.h:78
MonitorElement * dttf_phi_eta_integ_2ndTrack
Definition: L1TDTTFClient.h:80

◆ normalize() [1/3]

template<typename T >
void L1TDTTFClient::normalize ( T me)
inlineprivate

◆ normalize() [2/3]

template<typename T >
void L1TDTTFClient::normalize ( T me,
const double &  scale 
)
inlineprivate

◆ normalize() [3/3]

template<typename T >
void L1TDTTFClient::normalize ( T me,
const double &  scale,
const double &  entries 
)
inlineprivate

◆ setGMTsummary()

void L1TDTTFClient::setGMTsummary ( DQMStore::IGetter igetter)
private

Definition at line 845 of file L1TDTTFClient.cc.

References dttf_gmt_matching, getTH2F(), gmtpath_, match(), dqm::impl::MonitorElement::setBinContent(), AlCaHLTBitMon_QueryRunRegistry::string, compareTotals::tot, and heppy_batch::val.

Referenced by makeSummary().

845  {
846  char hname[60];
847  sprintf(hname, "%s/dttf_tracks_with_gmt_match", gmtpath_.c_str());
848  TH2F *gmt_match = getTH2F(igetter, hname);
849  if (!gmt_match) {
850  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
851  return;
852  }
853 
854  sprintf(hname, "%s/dttf_tracks_without_gmt_match", gmtpath_.c_str());
855  TH2F *gmt_missed = getTH2F(igetter, hname);
856  if (!gmt_missed) {
857  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
858  return;
859  }
860 
861  sprintf(hname, "%s/dttf_missing_tracks_in_gmt", gmtpath_.c_str());
862  TH2F *gmt_ghost = getTH2F(igetter, hname);
863  if (!gmt_ghost) {
864  edm::LogError("L1TDTTFClient::makeSummary:ME") << "Failed to get TH1D " << std::string(hname);
865  return;
866  }
867 
868  int match = gmt_match->Integral();
869  int missed = gmt_missed->Integral();
870  int ghost = gmt_ghost->Integral();
871  float tot = match + missed + ghost;
872  if (tot > 0) {
873  double val = ghost / tot;
875  val = match / tot;
877  val = missed / tot;
879  }
880 }
MonitorElement * dttf_gmt_matching
Definition: L1TDTTFClient.h:68
Log< level::Error, false > LogError
TH2F * getTH2F(DQMStore::IGetter &igetter, const char *hname)
std::string gmtpath_
Definition: L1TDTTFClient.h:48
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10

◆ setMapLabel()

void L1TDTTFClient::setMapLabel ( MonitorElement me)
private

◆ setQualLabel()

void L1TDTTFClient::setQualLabel ( MonitorElement me,
int  axis 
)
private

Definition at line 1184 of file L1TDTTFClient.cc.

References hlt_dqm_clientPB-live_cfg::me.

Referenced by book().

1184  {
1185  if (axis == 1)
1186  me->setAxisTitle("Quality", axis);
1187  me->setBinLabel(1, "T34", axis);
1188  me->setBinLabel(2, "T23/24", axis);
1189  me->setBinLabel(3, "T12/13/14", axis);
1190  me->setBinLabel(4, "T234", axis);
1191  me->setBinLabel(5, "T134", axis);
1192  me->setBinLabel(6, "T123/124", axis);
1193  me->setBinLabel(7, "T1234", axis);
1194 }

◆ setWheelLabel()

void L1TDTTFClient::setWheelLabel ( MonitorElement me)
private

Definition at line 1173 of file L1TDTTFClient.cc.

References hlt_dqm_clientPB-live_cfg::me.

Referenced by book().

1173  {
1174  me->setAxisTitle("Wheel", 1);
1175  me->setBinLabel(1, "N2", 1);
1176  me->setBinLabel(2, "N1", 1);
1177  me->setBinLabel(3, "N0", 1);
1178  me->setBinLabel(4, "P0", 1);
1179  me->setBinLabel(5, "P1", 1);
1180  me->setBinLabel(6, "P2", 1);
1181 }

Member Data Documentation

◆ counterLS_

int L1TDTTFClient::counterLS_
private

Definition at line 42 of file L1TDTTFClient.h.

Referenced by dqmEndLuminosityBlock().

◆ dttf_2ndTrack_Summary

MonitorElement* L1TDTTFClient::dttf_2ndTrack_Summary
private

Definition at line 69 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_bx_integ

MonitorElement* L1TDTTFClient::dttf_bx_integ
private

Definition at line 54 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_bx_integ_2ndTrack

MonitorElement* L1TDTTFClient::dttf_bx_integ_2ndTrack
private

Definition at line 76 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_bx_summary

MonitorElement* L1TDTTFClient::dttf_bx_summary
private

Definition at line 53 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_bx_summary_2ndTrack

MonitorElement* L1TDTTFClient::dttf_bx_summary_2ndTrack
private

Definition at line 75 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_bx_wheel_integ

MonitorElement* L1TDTTFClient::dttf_bx_wheel_integ[6]
private

Definition at line 88 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_bx_wheel_integ_2ndTrack

MonitorElement* L1TDTTFClient::dttf_bx_wheel_integ_2ndTrack[6]
private

Definition at line 99 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_bx_wheel_summary

MonitorElement* L1TDTTFClient::dttf_bx_wheel_summary[6]
private

Definition at line 87 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_bx_wheel_summary_2ndTrack

MonitorElement* L1TDTTFClient::dttf_bx_wheel_summary_2ndTrack[6]
private

Definition at line 98 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_eta_fine_fraction

MonitorElement* L1TDTTFClient::dttf_eta_fine_fraction
private

Definition at line 62 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_eta_fine_integ

MonitorElement* L1TDTTFClient::dttf_eta_fine_integ
private

Definition at line 55 of file L1TDTTFClient.h.

◆ dttf_eta_integ

MonitorElement* L1TDTTFClient::dttf_eta_integ
private

Definition at line 65 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_eta_integ_2ndTrack

MonitorElement* L1TDTTFClient::dttf_eta_integ_2ndTrack
private

Definition at line 81 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_eta_wheel

MonitorElement* L1TDTTFClient::dttf_eta_wheel[6]
private

Definition at line 92 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_fine_fraction_wh

MonitorElement* L1TDTTFClient::dttf_fine_fraction_wh[6]
private

Definition at line 91 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_gmt_matching

MonitorElement* L1TDTTFClient::dttf_gmt_matching
private

Definition at line 68 of file L1TDTTFClient.h.

Referenced by book(), and setGMTsummary().

◆ dttf_highQual_Summary

MonitorElement* L1TDTTFClient::dttf_highQual_Summary
private

Definition at line 58 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_highQual_Summary_2ndTrack

MonitorElement* L1TDTTFClient::dttf_highQual_Summary_2ndTrack
private

Definition at line 79 of file L1TDTTFClient.h.

Referenced by book(), and makeSummary().

◆ dttf_nTracks_integ

MonitorElement* L1TDTTFClient::dttf_nTracks_integ
private

Definition at line 51 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_nTracks_integ_2ndTrack

MonitorElement* L1TDTTFClient::dttf_nTracks_integ_2ndTrack
private

Definition at line 73 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_nTracks_wheel

MonitorElement* L1TDTTFClient::dttf_nTracks_wheel[6]
private

Definition at line 86 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_nTracks_wheel_2ndTrack

MonitorElement* L1TDTTFClient::dttf_nTracks_wheel_2ndTrack[6]
private

Definition at line 97 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_occupancySummary

MonitorElement* L1TDTTFClient::dttf_occupancySummary
private

Definition at line 52 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_occupancySummary_2ndTrack

MonitorElement* L1TDTTFClient::dttf_occupancySummary_2ndTrack
private

Definition at line 74 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_occupancySummary_test

MonitorElement* L1TDTTFClient::dttf_occupancySummary_test
private

Definition at line 71 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_phi_eta_coarse_integ

MonitorElement* L1TDTTFClient::dttf_phi_eta_coarse_integ
private

Definition at line 59 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_phi_eta_fine_integ

MonitorElement* L1TDTTFClient::dttf_phi_eta_fine_integ
private

Definition at line 60 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_phi_eta_integ

MonitorElement* L1TDTTFClient::dttf_phi_eta_integ
private

Definition at line 61 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_phi_eta_integ_2ndTrack

MonitorElement* L1TDTTFClient::dttf_phi_eta_integ_2ndTrack
private

Definition at line 80 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_phi_integ

MonitorElement* L1TDTTFClient::dttf_phi_integ
private

Definition at line 63 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_phi_integ_2ndTrack

MonitorElement* L1TDTTFClient::dttf_phi_integ_2ndTrack
private

Definition at line 82 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_phi_wheel

MonitorElement* L1TDTTFClient::dttf_phi_wheel[6]
private

Definition at line 93 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_pt_integ

MonitorElement* L1TDTTFClient::dttf_pt_integ
private

Definition at line 64 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_pt_integ_2ndTrack

MonitorElement* L1TDTTFClient::dttf_pt_integ_2ndTrack
private

Definition at line 83 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_pt_wheel

MonitorElement* L1TDTTFClient::dttf_pt_wheel[6]
private

Definition at line 94 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_q_integ

MonitorElement* L1TDTTFClient::dttf_q_integ
private

Definition at line 66 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_q_integ_2ndTrack

MonitorElement* L1TDTTFClient::dttf_q_integ_2ndTrack
private

Definition at line 84 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_q_wheel

MonitorElement* L1TDTTFClient::dttf_q_wheel[6]
private

Definition at line 95 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_quality_integ

MonitorElement* L1TDTTFClient::dttf_quality_integ
private

Definition at line 56 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_quality_integ_2ndTrack

MonitorElement* L1TDTTFClient::dttf_quality_integ_2ndTrack
private

Definition at line 77 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_quality_summary

MonitorElement* L1TDTTFClient::dttf_quality_summary
private

Definition at line 57 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_quality_summary_2ndTrack

MonitorElement* L1TDTTFClient::dttf_quality_summary_2ndTrack
private

Definition at line 78 of file L1TDTTFClient.h.

Referenced by book(), buildSummaries(), and makeSummary().

◆ dttf_quality_summary_wheel

MonitorElement* L1TDTTFClient::dttf_quality_summary_wheel[6]
private

Definition at line 90 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttf_quality_wheel

MonitorElement* L1TDTTFClient::dttf_quality_wheel[6]
private

Definition at line 89 of file L1TDTTFClient.h.

Referenced by book(), and buildSummaries().

◆ dttfSource_

edm::InputTag L1TDTTFClient::dttfSource_
private

Definition at line 38 of file L1TDTTFClient.h.

◆ gmtpath_

std::string L1TDTTFClient::gmtpath_
private

Definition at line 48 of file L1TDTTFClient.h.

Referenced by book(), and setGMTsummary().

◆ inclusivepath_

std::string L1TDTTFClient::inclusivepath_
private

Definition at line 47 of file L1TDTTFClient.h.

Referenced by book(), and dqmEndLuminosityBlock().

◆ l1tdttffolder_

std::string L1TDTTFClient::l1tdttffolder_
private

Definition at line 37 of file L1TDTTFClient.h.

Referenced by book().

◆ occupancy_r_

TH2F* L1TDTTFClient::occupancy_r_
private

counter

Definition at line 43 of file L1TDTTFClient.h.

Referenced by dqmEndLuminosityBlock().

◆ online_

bool L1TDTTFClient::online_
private

Definition at line 39 of file L1TDTTFClient.h.

Referenced by dqmEndLuminosityBlock().

◆ resetafterlumi_

int L1TDTTFClient::resetafterlumi_
private

Definition at line 41 of file L1TDTTFClient.h.

Referenced by dqmEndLuminosityBlock().

◆ testpath_

std::string L1TDTTFClient::testpath_
private

Definition at line 49 of file L1TDTTFClient.h.

Referenced by book().

◆ verbose_

bool L1TDTTFClient::verbose_
private

Definition at line 40 of file L1TDTTFClient.h.

◆ wheel_

std::string L1TDTTFClient::wheel_[6]
private

◆ wheelpath_

std::string L1TDTTFClient::wheelpath_[6]
private