CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
L1TPUM.cc
Go to the documentation of this file.
1 /*
2  * \file L1TPUM.cc
3  *
4  * N. Smith <nick.smith@cern.ch>
5  */
6 
7 
9 
12 
15 
16 // TODO: move to configuration?
17 namespace {
18  const unsigned int R10BINS = 1024;
19  const float R10MIN = -0.5;
20  const float R10MAX = 1023.5;
21 
22  const unsigned int PUMETABINS = 22;
23  const unsigned int PUMNORMALIZE = 22;
24 
25  const unsigned int PUMBINS = 18;
26  const float PUMMIN = -0.5;
27  const float PUMMAX = 17.5;
28 }
29 
31  regionSource_(consumes<L1CaloRegionCollection>(ps.getParameter<edm::InputTag>("regionSource"))),
32  histFolder_(ps.getParameter<std::string>("histFolder"))
33 {
34 }
35 
37 {
38 }
39 
41 {
42 }
43 
45 {
46  edm::Handle<L1CaloRegionCollection> regionCollection;
47  event.getByToken(regionSource_, regionCollection);
48 
49  int nonzeroRegionsBxP2{0};
50  int nonzeroRegionsBx0{0};
51  int nonzeroRegionsBxM2{0};
52 
53  float regionsTotalEtBxP2{0.};
54  float regionsTotalEtBx0{0.};
55  float regionsTotalEtBxM2{0.};
56 
57  for (const auto& region : *regionCollection) {
58  if ( region.et() > 0 ) {
59  if ( region.bx() == 0 ) {
60  nonzeroRegionsBx0++;
61  regionsTotalEtBx0 += region.et();
62  }
63  else if ( region.bx() == 2 ) {
64  nonzeroRegionsBxP2++;
65  regionsTotalEtBxP2 += region.et();
66  }
67  else if ( region.bx() == -2 ) {
68  nonzeroRegionsBxM2++;
69  regionsTotalEtBxM2 += region.et();
70  }
71  }
72  }
73 
74  regionsTotalEtBxP2_->Fill(regionsTotalEtBxP2);
75  regionsTotalEtBx0_->Fill(regionsTotalEtBx0);
76  regionsTotalEtBxM2_->Fill(regionsTotalEtBxM2);
77 
78  regionsAvgEtBxP2_->Fill(regionsTotalEtBxP2/396.);
79  regionsAvgEtBx0_->Fill(regionsTotalEtBx0/396.);
80  regionsAvgEtBxM2_->Fill(regionsTotalEtBxM2/396.);
81 
82  regionsAvgNonZeroEtBxP2_->Fill(regionsTotalEtBxP2/nonzeroRegionsBxP2);
83  regionsAvgNonZeroEtBx0_->Fill(regionsTotalEtBx0/nonzeroRegionsBx0);
84  regionsAvgNonZeroEtBxM2_->Fill(regionsTotalEtBxM2/nonzeroRegionsBxM2);
85 
86  nonZeroRegionsBxP2_->Fill(nonzeroRegionsBxP2);
87  nonZeroRegionsBx0_->Fill(nonzeroRegionsBx0);
88  nonZeroRegionsBxM2_->Fill(nonzeroRegionsBxM2);
89 
90  for (const auto& region : *regionCollection) {
91  size_t etaBin = region.gctEta();
92  regionBxPopulation_->Fill(etaBin*18+region.gctPhi(), region.bx());
93  regionBxEtSum_->Fill(etaBin*18+region.gctPhi(), region.bx(), region.et());
94  if ( region.bx() == 0 )
95  regionsPUMEtaBx0_[etaBin]->Fill(nonzeroRegionsBx0/PUMNORMALIZE, region.et());
96  else if ( region.bx() == 2 )
97  regionsPUMEtaBxP2_[etaBin]->Fill(nonzeroRegionsBxP2/PUMNORMALIZE, region.et());
98  else if ( region.bx() == -2 )
99  regionsPUMEtaBxM2_[etaBin]->Fill(nonzeroRegionsBxM2/PUMNORMALIZE, region.et());
100  }
101 }
102 
104 {
105  ibooker.setCurrentFolder(histFolder_+"/BX0");
106  regionsPUMEtaBx0_.resize(PUMETABINS);
107  for (size_t ieta=0; ieta<PUMETABINS; ++ieta) {
108  regionsTotalEtBx0_ = ibooker.book1D("regionsTotalEt", "Total ET distribution;Sum Rank;Counts", 200, 0, 2000);
109  regionsAvgEtBx0_ = ibooker.book1D("regionsAvgEt", "Average Rank;Average Rank;Counts", R10BINS, R10MIN, R10MAX);
110  regionsAvgNonZeroEtBx0_ = ibooker.book1D("regionsAvgNonZeroEt", "Average Rank >0;Average Rank Regions>0;Counts", R10BINS, R10MIN, R10MAX);
111  nonZeroRegionsBx0_ = ibooker.book1D("nonZeroRegions", "Nonzero regions;Number Regions >0;Counts", 397, -0.5, 396.5);
112  regionsPUMEtaBx0_[ieta] = ibooker.book2D("regionsPUMEta"+std::to_string(ieta), "PUM Bin rank distribution;PU bin;Rank", PUMBINS, PUMMIN, PUMMAX, R10BINS, R10MIN, R10MAX);
113  }
114 
115  ibooker.setCurrentFolder(histFolder_+"/BXP2");
116  regionsPUMEtaBxP2_.resize(PUMETABINS);
117  for (size_t ieta=0; ieta<PUMETABINS; ++ieta) {
118  regionsTotalEtBxP2_ = ibooker.book1D("regionsTotalEt", "Total ET distribution;Sum Rank;Counts", 200, 0, 2000);
119  regionsAvgEtBxP2_ = ibooker.book1D("regionsAvgEt", "Average Rank;Average Rank;Counts", R10BINS, R10MIN, R10MAX);
120  regionsAvgNonZeroEtBxP2_ = ibooker.book1D("regionsAvgNonZeroEt", "Average Rank >0;Average Rank Regions>0;Counts", R10BINS, R10MIN, R10MAX);
121  nonZeroRegionsBxP2_ = ibooker.book1D("nonZeroRegions", "Nonzero regions;Number Regions >0;Counts", 397, -0.5, 396.5);
122  regionsPUMEtaBxP2_[ieta] = ibooker.book2D("regionsPUMEta"+std::to_string(ieta), "PUM Bin rank distribution;PU bin;Rank", PUMBINS, PUMMIN, PUMMAX, R10BINS, R10MIN, R10MAX);
123  }
124 
125  ibooker.setCurrentFolder(histFolder_+"/BXM2");
126  regionsPUMEtaBxM2_.resize(PUMETABINS);
127  for (size_t ieta=0; ieta<PUMETABINS; ++ieta) {
128  regionsTotalEtBxM2_ = ibooker.book1D("regionsTotalEt", "Total ET distribution;Sum Rank;Counts", 200, 0, 2000);
129  regionsAvgEtBxM2_ = ibooker.book1D("regionsAvgEt", "Average Rank;Average Rank;Counts", R10BINS, R10MIN, R10MAX);
130  regionsAvgNonZeroEtBxM2_ = ibooker.book1D("regionsAvgNonZeroEt", "Average Rank >0;Average Rank Regions>0;Counts", R10BINS, R10MIN, R10MAX);
131  nonZeroRegionsBxM2_ = ibooker.book1D("nonZeroRegions", "Nonzero regions;Number Regions >0;Counts", 397, -0.5, 396.5);
132  regionsPUMEtaBxM2_[ieta] = ibooker.book2D("regionsPUMEta"+std::to_string(ieta), "PUM Bin rank distribution;PU bin;Rank", PUMBINS, PUMMIN, PUMMAX, R10BINS, R10MIN, R10MAX);
133  }
134 
135  ibooker.setCurrentFolder(histFolder_+"/RegionBxInfo");
136  regionBxPopulation_ = ibooker.book2D("regionBxPopulation", "Event counts per region per bunch crossing;Region index (18*eta+phi);BX index;Counts", 396, -0.5, 395.5, 5, -2.5, 2.5);
137  regionBxEtSum_ = ibooker.book2D("regionBxEtSum", "Et per region per bunch crossing;Region index (18*eta+phi);BX index;Counts*et", 396, -0.5, 395.5, 5, -2.5, 2.5);
138 }
139 
141 {
142 }
143 
virtual ~L1TPUM()
Definition: L1TPUM.cc:36
MonitorElement * regionsTotalEtBxP2_
Definition: L1TPUM.h:40
MonitorElement * regionsAvgNonZeroEtBxM2_
Definition: L1TPUM.h:50
MonitorElement * regionsAvgEtBxM2_
Definition: L1TPUM.h:46
L1TPUM(const edm::ParameterSet &ps)
Definition: L1TPUM.cc:30
const unsigned int R10BINS
Definition: L1TRCT.cc:27
edm::EDGetTokenT< L1CaloRegionCollection > regionSource_
Definition: L1TPUM.h:37
virtual void dqmBeginRun(const edm::Run &, const edm::EventSetup &)
Definition: L1TPUM.cc:40
const float R10MIN
Definition: L1TRCT.cc:28
MonitorElement * regionsAvgEtBxP2_
Definition: L1TPUM.h:44
std::vector< MonitorElement * > regionsPUMEtaBxP2_
Definition: L1TPUM.h:59
MonitorElement * nonZeroRegionsBxM2_
Definition: L1TPUM.h:54
MonitorElement * regionBxPopulation_
Definition: L1TPUM.h:56
void Fill(long long x)
std::string to_string(const T &t)
Definition: Logger.cc:26
MonitorElement * nonZeroRegionsBx0_
Definition: L1TPUM.h:53
void beginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &)
Definition: L1TPUM.cc:140
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
MonitorElement * nonZeroRegionsBxP2_
Definition: L1TPUM.h:52
MonitorElement * regionsAvgNonZeroEtBxP2_
Definition: L1TPUM.h:48
std::vector< MonitorElement * > regionsPUMEtaBxM2_
Definition: L1TPUM.h:61
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
std::vector< MonitorElement * > regionsPUMEtaBx0_
Definition: L1TPUM.h:60
std::string histFolder_
Definition: L1TPUM.h:38
virtual void bookHistograms(DQMStore::IBooker &ibooker, const edm::Run &, const edm::EventSetup &) override
Definition: L1TPUM.cc:103
MonitorElement * regionsAvgEtBx0_
Definition: L1TPUM.h:45
MonitorElement * regionsTotalEtBx0_
Definition: L1TPUM.h:41
void analyze(const edm::Event &e, const edm::EventSetup &c)
Definition: L1TPUM.cc:44
MonitorElement * regionsAvgNonZeroEtBx0_
Definition: L1TPUM.h:49
std::vector< L1CaloRegion > L1CaloRegionCollection
const float R10MAX
Definition: L1TRCT.cc:29
MonitorElement * regionsTotalEtBxM2_
Definition: L1TPUM.h:42
MonitorElement * regionBxEtSum_
Definition: L1TPUM.h:57
Definition: Run.h:41