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 
20 // system include files
21 #include <memory>
22 #include <string>
23 
24 // user include files
27 
32 
34 
36 
42 
43 
44 //
45 // class declaration
46 //
47 
50  public:
52  ~CentralityBinProducer() override;
53 
54  private:
55  void beginRun(edm::Run const& run, const edm::EventSetup& iSetup) override;
56  void produce(edm::Event&, const edm::EventSetup&) override;
57 
58  // ----------member data ---------------------------
59 
60 
64 
68  unsigned int prevRun_;
69 
71  unsigned int pPbRunFlip_;
72 
73 };
74 
75 //
76 // constants, enums and typedefs
77 //
78 
79 
80 //
81 // static data member definitions
82 //
83 
84 //
85 // constructors and destructor
86 //
88  prevRun_(0),
90 {
91  using namespace edm;
92  tag_ = consumes<reco::Centrality>(iConfig.getParameter<edm::InputTag>("Centrality"));
93  centralityVariable_ = iConfig.getParameter<std::string>("centralityVariable");
94  pPbRunFlip_ = iConfig.getParameter<unsigned int>("pPbRunFlip");
95 
96  if(centralityVariable_ == "HFtowers") varType_ = HFtowers;
97  if(centralityVariable_ == "HFtowersPlus") varType_ = HFtowersPlus;
98  if(centralityVariable_ == "HFtowersMinus") varType_ = HFtowersMinus;
99  if(centralityVariable_ == "HFtowersTrunc") varType_ = HFtowersTrunc;
100  if(centralityVariable_ == "HFtowersPlusTrunc") varType_ = HFtowersPlusTrunc;
101  if(centralityVariable_ == "HFtowersMinusTrunc") varType_ = HFtowersMinusTrunc;
102  if(centralityVariable_ == "HFhits") varType_ = HFhits;
103  if(centralityVariable_ == "PixelHits") varType_ = PixelHits;
104  if(centralityVariable_ == "PixelTracks") varType_ = PixelTracks;
105  if(centralityVariable_ == "Tracks") varType_ = Tracks;
106  if(centralityVariable_ == "EB") varType_ = EB;
107  if(centralityVariable_ == "EE") varType_ = EE;
108  if(centralityVariable_ == "ZDChitsPlus") varType_ = ZDChitsPlus;
109  if(centralityVariable_ == "ZDChitsMinus") varType_ = ZDChitsMinus;
110  if(varType_ == Missing){
111  std::string errorMessage="Requested Centrality variable does not exist : "+centralityVariable_+"\n" +
112  "Supported variables are: \n" + "HFtowers HFtowersPlus HFtowersMinus HFtowersTrunc HFtowersPlusTrunc HFtowersMinusTrunc HFhits PixelHits PixelTracks Tracks EB EE" + "\n";
113  throw cms::Exception("Configuration",errorMessage);
114  }
115 
116  if(iConfig.exists("nonDefaultGlauberModel")){
117  centralityMC_ = iConfig.getParameter<std::string>("nonDefaultGlauberModel");
118  }
120 
121  produces<int>(centralityVariable_);
122 }
123 
124 
126 {
127 
128  // do anything here that needs to be done at desctruction time
129  // (e.g. close files, deallocate resources etc.)
130 
131 }
132 
133 
134 //
135 // member functions
136 //
137 
138 // ------------ method called to produce the data ------------
139 void
141 {
142 
143  iEvent.getByToken(tag_,chandle_);
144 
145  double value = 0;
146  switch(varType_){
147  case HFtowers : value = chandle_->EtHFtowerSum();break;
148  case HFtowersPlus : value = chandle_->EtHFtowerSumPlus();break;
149  case HFtowersMinus : value = chandle_->EtHFtowerSumMinus();break;
150  case HFhits : value = chandle_->EtHFhitSum();break;
151  case HFtowersTrunc : value = chandle_->EtHFtruncated();break;
152  case HFtowersPlusTrunc : value = chandle_->EtHFtruncatedPlus();break;
153  case HFtowersMinusTrunc : value = chandle_->EtHFtruncatedMinus();break;
154  case PixelHits : value = chandle_->multiplicityPixel();break;
155  case PixelTracks : value = chandle_->NpixelTracks();break;
156  case Tracks : value = chandle_->Ntracks();break;
157  case EB : value = chandle_->EtEBSum();break;
158  case EE : value = chandle_->EtEESum();break;
159  case ZDChitsPlus : value = chandle_->zdcSumPlus();break;
160  case ZDChitsMinus : value = chandle_->zdcSumMinus();break;
161  default:
162  throw cms::Exception("CentralityBinProducer","Centrality variable not recognized.");
163  }
164 
165  int bin = inputDB_->m_table.size() - 1;
166  for(unsigned int i = 0; i < inputDB_->m_table.size(); ++i){
167 
168  if(value >= inputDB_->m_table[i].bin_edge && value){
169  bin = i; break;
170  }
171 
172  }
173 
174  iEvent.put(std::make_unique<int>(bin),centralityVariable_);
175 
176 }
177 
178 
179 void
181 {
182 
183  if(prevRun_ < pPbRunFlip_ && iRun.run() >= pPbRunFlip_){
184  if(centralityVariable_ == "HFtowersPlus") varType_ = HFtowersMinus;
185  if(centralityVariable_ == "HFtowersMinus") varType_ = HFtowersPlus;
186  if(centralityVariable_ == "HFtowersPlusTrunc") varType_ = HFtowersMinusTrunc;
187  if(centralityVariable_ == "HFtowersMinusTrunc") varType_ = HFtowersPlusTrunc;
188  if(centralityVariable_ == "ZDChitsPlus") varType_ = ZDChitsMinus;
189  if(centralityVariable_ == "ZDChitsMinus") varType_ = ZDChitsPlus;
190  }
191  prevRun_ = iRun.run();
192 
193  iSetup.get<HeavyIonRcd>().get(centralityLabel_,inputDB_);
194 
195 }
196 
197 //define this as a plug-in
T getParameter(std::string const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:127
std::vector< CBin > m_table
double EtEESum() const
Definition: Centrality.h:29
RunNumber_t run() const
Definition: RunBase.h:40
double Ntracks() const
Definition: Centrality.h:40
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:508
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
double EtHFtowerSumMinus() const
Definition: Centrality.h:25
bool exists(std::string const &parameterName) const
checks if a parameter exists
CentralityBinProducer(const edm::ParameterSet &)
double EtHFtruncatedPlus() const
Definition: Centrality.h:27
edm::ESHandle< CentralityTable > inputDB_
double zdcSumMinus() const
Definition: Centrality.h:48
int iEvent
Definition: GenABIO.cc:230
double EtHFtowerSumPlus() const
Definition: Centrality.h:24
void beginRun(edm::Run const &run, const edm::EventSetup &iSetup) override
Definition: value.py:1
edm::Handle< reco::Centrality > chandle_
bin
set the eta bin as selection string.
double EtHFtruncatedMinus() const
Definition: Centrality.h:28
double multiplicityPixel() const
Definition: Centrality.h:39
double EtHFtowerSum() const
Definition: Centrality.h:23
void produce(edm::Event &, const edm::EventSetup &) override
const T & get() const
Definition: EventSetup.h:55
double EtEBSum() const
Definition: Centrality.h:35
double EtHFhitSum() const
Definition: Centrality.h:20
double EtHFtruncated() const
Definition: Centrality.h:26
HLT enums.
edm::EDGetTokenT< reco::Centrality > tag_
double NpixelTracks() const
Definition: Centrality.h:44
Definition: Run.h:43
double zdcSumPlus() const
Definition: Centrality.h:47