CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 
30 
32 
34 
40 
41 
42 //
43 // class declaration
44 //
45 
48  public:
51 
52  private:
53  virtual void beginRun(edm::Run const& run, const edm::EventSetup& iSetup) override;
54  virtual void produce(edm::Event&, const edm::EventSetup&) override;
55 
56  // ----------member data ---------------------------
57 
58 
62 
66  unsigned int prevRun_;
67 
69  unsigned int pPbRunFlip_;
70 
71 };
72 
73 //
74 // constants, enums and typedefs
75 //
76 
77 
78 //
79 // static data member definitions
80 //
81 
82 //
83 // constructors and destructor
84 //
86  prevRun_(0),
87  varType_(Missing)
88 {
89  using namespace edm;
90  tag_ = consumes<reco::Centrality>(iConfig.getParameter<edm::InputTag>("Centrality"));
91  centralityVariable_ = iConfig.getParameter<std::string>("centralityVariable");
92  pPbRunFlip_ = iConfig.getParameter<unsigned int>("pPbRunFlip");
93 
94  if(centralityVariable_.compare("HFtowers") == 0) varType_ = HFtowers;
95  if(centralityVariable_.compare("HFtowersPlus") == 0) varType_ = HFtowersPlus;
96  if(centralityVariable_.compare("HFtowersMinus") == 0) varType_ = HFtowersMinus;
97  if(centralityVariable_.compare("HFtowersTrunc") == 0) varType_ = HFtowersTrunc;
98  if(centralityVariable_.compare("HFtowersPlusTrunc") == 0) varType_ = HFtowersPlusTrunc;
99  if(centralityVariable_.compare("HFtowersMinusTrunc") == 0) varType_ = HFtowersMinusTrunc;
100  if(centralityVariable_.compare("HFhits") == 0) varType_ = HFhits;
101  if(centralityVariable_.compare("PixelHits") == 0) varType_ = PixelHits;
102  if(centralityVariable_.compare("PixelTracks") == 0) varType_ = PixelTracks;
103  if(centralityVariable_.compare("Tracks") == 0) varType_ = Tracks;
104  if(centralityVariable_.compare("EB") == 0) varType_ = EB;
105  if(centralityVariable_.compare("EE") == 0) varType_ = EE;
106  if(varType_ == Missing){
107  std::string errorMessage="Requested Centrality variable does not exist : "+centralityVariable_+"\n" +
108  "Supported variables are: \n" + "HFtowers HFtowersPlus HFtowersMinus HFtowersTrunc HFtowersPlusTrunc HFtowersMinusTrunc HFhits PixelHits PixelTracks Tracks EB EE" + "\n";
109  throw cms::Exception("Configuration",errorMessage);
110  }
111 
112  if(iConfig.exists("nonDefaultGlauberModel")){
113  centralityMC_ = iConfig.getParameter<std::string>("nonDefaultGlauberModel");
114  }
116 
117  produces<int>(centralityVariable_.data());
118 }
119 
120 
122 {
123 
124  // do anything here that needs to be done at desctruction time
125  // (e.g. close files, deallocate resources etc.)
126 
127 }
128 
129 
130 //
131 // member functions
132 //
133 
134 // ------------ method called to produce the data ------------
135 void
137 {
138 
139  iEvent.getByToken(tag_,chandle_);
140 
141  double value = 0;
142  switch(varType_){
143  case HFtowers : value = chandle_->EtHFtowerSum();break;
144  case HFtowersPlus : value = chandle_->EtHFtowerSumPlus();break;
145  case HFtowersMinus : value = chandle_->EtHFtowerSumMinus();break;
146  case HFhits : value = chandle_->EtHFhitSum();break;
147  case HFtowersTrunc : value = chandle_->EtHFtruncated();break;
148  case HFtowersPlusTrunc : value = chandle_->EtHFtruncatedPlus();break;
149  case HFtowersMinusTrunc : value = chandle_->EtHFtruncatedMinus();break;
150  case PixelHits : value = chandle_->multiplicityPixel();break;
151  case PixelTracks : value = chandle_->NpixelTracks();break;
152  case Tracks : value = chandle_->Ntracks();break;
153  case EB : value = chandle_->EtEBSum();break;
154  case EE : value = chandle_->EtEESum();break;
155  default:
156  throw cms::Exception("CentralityBinProducer","Centrality variable not recognized.");
157  }
158 
159  int bin = inputDB_->m_table.size() - 1;
160  for(unsigned int i = 0; i < inputDB_->m_table.size(); ++i){
161 
162  if(value >= inputDB_->m_table[i].bin_edge && value){
163  bin = i; break;
164  }
165 
166  }
167 
168  std::auto_ptr<int> binp(new int(bin));
169  iEvent.put(binp,centralityVariable_.data());
170 
171 }
172 
173 
174 void
176 {
177 
178  if(prevRun_ < pPbRunFlip_ && iRun.run() >= pPbRunFlip_){
179  if(centralityVariable_.compare("HFtowersPlus") == 0) varType_ = HFtowersMinus;
180  if(centralityVariable_.compare("HFtowersMinus") == 0) varType_ = HFtowersPlus;
181  if(centralityVariable_.compare("HFtowersPlusTrunc") == 0) varType_ = HFtowersMinusTrunc;
182  if(centralityVariable_.compare("HFtowersMinusTrunc") == 0) varType_ = HFtowersPlusTrunc;
183  }
184  prevRun_ = iRun.run();
185 
186  iSetup.get<HeavyIonRcd>().get(centralityLabel_,inputDB_);
187 
188 }
189 
190 //define this as a plug-in
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
RunNumber_t run() const
Definition: RunBase.h:42
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
bool exists(std::string const &parameterName) const
checks if a parameter exists
CentralityBinProducer(const edm::ParameterSet &)
edm::ESHandle< CentralityTable > inputDB_
int iEvent
Definition: GenABIO.cc:230
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:113
virtual void beginRun(edm::Run const &run, const edm::EventSetup &iSetup) override
edm::Handle< reco::Centrality > chandle_
virtual void produce(edm::Event &, const edm::EventSetup &) override
const T & get() const
Definition: EventSetup.h:55
edm::EDGetTokenT< reco::Centrality > tag_
Definition: Run.h:41