CMS 3D CMS Logo

CentralityBinProducer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: CentralityBinProducer
4 // Class: CentralityBinProducer
5 //
13 //
14 // Original Author: Yetkin Yilmaz
15 // Created: Thu Aug 12 05:34:11 EDT 2010
16 //
17 //
18 
19 // system include files
20 #include <memory>
21 #include <string>
22 
23 // user include files
26 
31 
33 
35 
41 
42 //
43 // class declaration
44 //
45 
47  enum VariableType {
48  HFtowers = 0,
54  HFhits = 6,
55  PixelHits = 7,
57  Tracks = 9,
58  EB = 10,
59  EE = 11,
62  PFhf = 14,
63  PFhfPlus = 15,
64  PFhfMinus = 16,
65  Missing = 17
66  };
67 
68 public:
70  ~CentralityBinProducer() override;
71 
72 private:
73  void beginRun(edm::Run const& run, const edm::EventSetup& iSetup) override;
74  void produce(edm::Event&, const edm::EventSetup&) override;
75 
76  // ----------member data ---------------------------
77 
82 
86  unsigned int prevRun_;
87 
89  unsigned int pPbRunFlip_;
90 };
91 
92 //
93 // constants, enums and typedefs
94 //
95 
96 //
97 // static data member definitions
98 //
99 
100 //
101 // constructors and destructor
102 //
103 CentralityBinProducer::CentralityBinProducer(const edm::ParameterSet& iConfig) : prevRun_(0), varType_(Missing) {
104  using namespace edm;
105  tag_ = consumes<reco::Centrality>(iConfig.getParameter<edm::InputTag>("Centrality"));
106  centralityVariable_ = iConfig.getParameter<std::string>("centralityVariable");
107  pPbRunFlip_ = iConfig.getParameter<unsigned int>("pPbRunFlip");
108 
109  if (centralityVariable_ == "HFtowers")
110  varType_ = HFtowers;
111  if (centralityVariable_ == "HFtowersPlus")
113  if (centralityVariable_ == "HFtowersMinus")
115  if (centralityVariable_ == "HFtowersTrunc")
117  if (centralityVariable_ == "HFtowersPlusTrunc")
119  if (centralityVariable_ == "HFtowersMinusTrunc")
121  if (centralityVariable_ == "HFhits")
122  varType_ = HFhits;
123  if (centralityVariable_ == "PixelHits")
125  if (centralityVariable_ == "PixelTracks")
127  if (centralityVariable_ == "Tracks")
128  varType_ = Tracks;
129  if (centralityVariable_ == "EB")
130  varType_ = EB;
131  if (centralityVariable_ == "EE")
132  varType_ = EE;
133  if (centralityVariable_ == "ZDChitsPlus")
135  if (centralityVariable_ == "ZDChitsMinus")
137  if (centralityVariable_ == "PFhf")
138  varType_ = PFhf;
139  if (centralityVariable_ == "PFhfPlus")
140  varType_ = PFhfPlus;
141  if (centralityVariable_ == "PFhfMinus")
143  if (varType_ == Missing) {
144  std::string errorMessage =
145  "Requested Centrality variable does not exist : " + centralityVariable_ + "\n" + "Supported variables are: \n" +
146  "HFtowers HFtowersPlus HFtowersMinus HFtowersTrunc HFtowersPlusTrunc HFtowersMinusTrunc "
147  "HFhits PixelHits PixelTracks Tracks EB EE ZDChitsPlus ZDChitsMinus PFhf PFhfPlus PFhfMinus" +
148  "\n";
149  throw cms::Exception("Configuration", errorMessage);
150  }
151 
152  if (iConfig.exists("nonDefaultGlauberModel")) {
153  centralityMC_ = iConfig.getParameter<std::string>("nonDefaultGlauberModel");
154  }
156  inputDBToken_ =
157  esConsumes<CentralityTable, HeavyIonRcd, edm::Transition::BeginRun>(edm::ESInputTag("", centralityLabel_));
158 
159  produces<int>(centralityVariable_);
160 }
161 
163  // do anything here that needs to be done at desctruction time
164  // (e.g. close files, deallocate resources etc.)
165 }
166 
167 //
168 // member functions
169 //
170 
171 // ------------ method called to produce the data ------------
173  iEvent.getByToken(tag_, chandle_);
174 
175  double value = 0;
176  switch (varType_) {
177  case HFtowers:
179  break;
180  case HFtowersPlus:
182  break;
183  case HFtowersMinus:
185  break;
186  case HFhits:
188  break;
189  case HFtowersTrunc:
191  break;
192  case HFtowersPlusTrunc:
194  break;
195  case HFtowersMinusTrunc:
197  break;
198  case PixelHits:
200  break;
201  case PixelTracks:
203  break;
204  case Tracks:
205  value = chandle_->Ntracks();
206  break;
207  case EB:
208  value = chandle_->EtEBSum();
209  break;
210  case EE:
211  value = chandle_->EtEESum();
212  break;
213  case ZDChitsPlus:
215  break;
216  case ZDChitsMinus:
218  break;
219  case PFhf:
220  value = chandle_->EtPFhfSum();
221  break;
222  case PFhfPlus:
224  break;
225  case PFhfMinus:
227  break;
228  default:
229  throw cms::Exception("CentralityBinProducer", "Centrality variable not recognized.");
230  }
231 
232  int bin = inputDB_->m_table.size() - 1;
233  for (unsigned int i = 0; i < inputDB_->m_table.size(); ++i) {
234  if (value >= inputDB_->m_table[i].bin_edge && value) {
235  bin = i;
236  break;
237  }
238  }
239 
240  iEvent.put(std::make_unique<int>(bin), centralityVariable_);
241 }
242 
243 void CentralityBinProducer::beginRun(edm::Run const& iRun, const edm::EventSetup& iSetup) {
244  if (prevRun_ < pPbRunFlip_ && iRun.run() >= pPbRunFlip_) {
245  if (centralityVariable_ == "HFtowersPlus")
247  if (centralityVariable_ == "HFtowersMinus")
249  if (centralityVariable_ == "HFtowersPlusTrunc")
251  if (centralityVariable_ == "HFtowersMinusTrunc")
253  if (centralityVariable_ == "ZDChitsPlus")
255  if (centralityVariable_ == "ZDChitsMinus")
257  if (centralityVariable_ == "PFhfPlus")
259  if (centralityVariable_ == "PFhfMinus")
260  varType_ = PFhfPlus;
261  }
262  prevRun_ = iRun.run();
263 
264  inputDB_ = iSetup.getHandle(inputDBToken_);
265 }
266 
267 //define this as a plug-in
edm::ESGetToken< CentralityTable, HeavyIonRcd > inputDBToken_
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
std::vector< CBin > m_table
double EtHFtruncatedPlus() const
Definition: Centrality.h:31
double EtHFtowerSum() const
Definition: Centrality.h:24
bool exists(std::string const &parameterName) const
checks if a parameter exists
double EtHFtruncated() const
Definition: Centrality.h:30
double zdcSumMinus() const
Definition: Centrality.h:56
CentralityBinProducer(const edm::ParameterSet &)
double EtPFhfSumMinus() const
Definition: Centrality.h:60
double multiplicityPixel() const
Definition: Centrality.h:43
double EtPFhfSum() const
Definition: Centrality.h:58
edm::ESHandle< CentralityTable > inputDB_
int iEvent
Definition: GenABIO.cc:224
RunNumber_t run() const
Definition: RunBase.h:40
double Ntracks() const
Definition: Centrality.h:46
double EtPFhfSumPlus() const
Definition: Centrality.h:59
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
void beginRun(edm::Run const &run, const edm::EventSetup &iSetup) override
double EtHFtowerSumMinus() const
Definition: Centrality.h:26
Definition: value.py:1
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:130
double EtEESum() const
Definition: Centrality.h:33
edm::Handle< reco::Centrality > chandle_
double EtEBSum() const
Definition: Centrality.h:39
double EtHFhitSum() const
Definition: Centrality.h:21
void produce(edm::Event &, const edm::EventSetup &) override
HLT enums.
edm::EDGetTokenT< reco::Centrality > tag_
double EtHFtowerSumPlus() const
Definition: Centrality.h:25
double NpixelTracks() const
Definition: Centrality.h:50
Definition: Run.h:45
double zdcSumPlus() const
Definition: Centrality.h:55
double EtHFtruncatedMinus() const
Definition: Centrality.h:32