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 
31 
33 
35 
41 
42 
43 //
44 // class declaration
45 //
46 
49  public:
52 
53  private:
54  virtual void beginRun(edm::Run const& run, const edm::EventSetup& iSetup) override;
55  virtual void produce(edm::Event&, const edm::EventSetup&) override;
56 
57  // ----------member data ---------------------------
58 
59 
63 
67  unsigned int prevRun_;
68 
70  unsigned int pPbRunFlip_;
71 
72 };
73 
74 //
75 // constants, enums and typedefs
76 //
77 
78 
79 //
80 // static data member definitions
81 //
82 
83 //
84 // constructors and destructor
85 //
87  prevRun_(0),
88  varType_(Missing)
89 {
90  using namespace edm;
91  tag_ = consumes<reco::Centrality>(iConfig.getParameter<edm::InputTag>("Centrality"));
92  centralityVariable_ = iConfig.getParameter<std::string>("centralityVariable");
93  pPbRunFlip_ = iConfig.getParameter<unsigned int>("pPbRunFlip");
94 
95  if(centralityVariable_.compare("HFtowers") == 0) varType_ = HFtowers;
96  if(centralityVariable_.compare("HFtowersPlus") == 0) varType_ = HFtowersPlus;
97  if(centralityVariable_.compare("HFtowersMinus") == 0) varType_ = HFtowersMinus;
98  if(centralityVariable_.compare("HFtowersTrunc") == 0) varType_ = HFtowersTrunc;
99  if(centralityVariable_.compare("HFtowersPlusTrunc") == 0) varType_ = HFtowersPlusTrunc;
100  if(centralityVariable_.compare("HFtowersMinusTrunc") == 0) varType_ = HFtowersMinusTrunc;
101  if(centralityVariable_.compare("HFhits") == 0) varType_ = HFhits;
102  if(centralityVariable_.compare("PixelHits") == 0) varType_ = PixelHits;
103  if(centralityVariable_.compare("PixelTracks") == 0) varType_ = PixelTracks;
104  if(centralityVariable_.compare("Tracks") == 0) varType_ = Tracks;
105  if(centralityVariable_.compare("EB") == 0) varType_ = EB;
106  if(centralityVariable_.compare("EE") == 0) varType_ = EE;
107  if(varType_ == Missing){
108  std::string errorMessage="Requested Centrality variable does not exist : "+centralityVariable_+"\n" +
109  "Supported variables are: \n" + "HFtowers HFtowersPlus HFtowersMinus HFtowersTrunc HFtowersPlusTrunc HFtowersMinusTrunc HFhits PixelHits PixelTracks Tracks EB EE" + "\n";
110  throw cms::Exception("Configuration",errorMessage);
111  }
112 
113  if(iConfig.exists("nonDefaultGlauberModel")){
114  centralityMC_ = iConfig.getParameter<std::string>("nonDefaultGlauberModel");
115  }
117 
118  produces<int>(centralityVariable_.data());
119 }
120 
121 
123 {
124 
125  // do anything here that needs to be done at desctruction time
126  // (e.g. close files, deallocate resources etc.)
127 
128 }
129 
130 
131 //
132 // member functions
133 //
134 
135 // ------------ method called to produce the data ------------
136 void
138 {
139 
140  iEvent.getByToken(tag_,chandle_);
141 
142  double value = 0;
143  switch(varType_){
144  case HFtowers : value = chandle_->EtHFtowerSum();break;
145  case HFtowersPlus : value = chandle_->EtHFtowerSumPlus();break;
146  case HFtowersMinus : value = chandle_->EtHFtowerSumMinus();break;
147  case HFhits : value = chandle_->EtHFhitSum();break;
148  case HFtowersTrunc : value = chandle_->EtHFtruncated();break;
149  case HFtowersPlusTrunc : value = chandle_->EtHFtruncatedPlus();break;
150  case HFtowersMinusTrunc : value = chandle_->EtHFtruncatedMinus();break;
151  case PixelHits : value = chandle_->multiplicityPixel();break;
152  case PixelTracks : value = chandle_->NpixelTracks();break;
153  case Tracks : value = chandle_->Ntracks();break;
154  case EB : value = chandle_->EtEBSum();break;
155  case EE : value = chandle_->EtEESum();break;
156  default:
157  throw cms::Exception("CentralityBinProducer","Centrality variable not recognized.");
158  }
159 
160  int bin = inputDB_->m_table.size() - 1;
161  for(unsigned int i = 0; i < inputDB_->m_table.size(); ++i){
162 
163  if(value >= inputDB_->m_table[i].bin_edge && value){
164  bin = i; break;
165  }
166 
167  }
168 
169  std::auto_ptr<int> binp(new int(bin));
170  iEvent.put(binp,centralityVariable_.data());
171 
172 }
173 
174 
175 void
177 {
178 
179  if(prevRun_ < pPbRunFlip_ && iRun.run() >= pPbRunFlip_){
180  if(centralityVariable_.compare("HFtowersPlus") == 0) varType_ = HFtowersMinus;
181  if(centralityVariable_.compare("HFtowersMinus") == 0) varType_ = HFtowersPlus;
182  if(centralityVariable_.compare("HFtowersPlusTrunc") == 0) varType_ = HFtowersMinusTrunc;
183  if(centralityVariable_.compare("HFtowersMinusTrunc") == 0) varType_ = HFtowersPlusTrunc;
184  }
185  prevRun_ = iRun.run();
186 
187  iSetup.get<HeavyIonRcd>().get(centralityLabel_,inputDB_);
188 
189 }
190 
191 //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:464
#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:120
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:56
edm::EDGetTokenT< reco::Centrality > tag_
Definition: Run.h:43