CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | Friends
JetCorrectorParameters Class Reference

#include <JetCorrectorParameters.h>

Classes

class  Definitions
 
class  Record
 

Public Member Functions

std::vector< float > binCenters (unsigned fVar) const
 
int binIndex (const std::vector< float > &fX) const
 
int binIndexN (const std::vector< float > &fX) const
 
const Definitionsdefinitions () const
 
void init ()
 
bool isValid () const
 
 JetCorrectorParameters ()
 
 JetCorrectorParameters (const std::string &fFile, const std::string &fSection="")
 
 JetCorrectorParameters (const JetCorrectorParameters::Definitions &fDefinitions, const std::vector< JetCorrectorParameters::Record > &fRecords)
 
int neighbourBin (unsigned fIndex, unsigned fVar, bool fNext) const
 
void printFile (const std::string &fFileName) const
 
void printScreen () const
 
const Recordrecord (unsigned fBin) const
 
unsigned size () const
 
unsigned size (unsigned fVar) const
 

Static Public Attributes

static const int MAX_SIZE_DIMENSIONALITY = 3
 

Private Member Functions

template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Private Attributes

std::shared_ptr< JetCorrectorParametersHelperhelper
 is this a valid set? More...
 
JetCorrectorParameters::Definitions mDefinitions
 
std::vector< JetCorrectorParameters::RecordmRecords
 
bool valid_
 

Friends

class boost::serialization::access
 
template<typename CondSerializationT , typename Enabled >
struct cond::serialization::access
 

Detailed Description

Definition at line 25 of file JetCorrectorParameters.h.

Constructor & Destructor Documentation

JetCorrectorParameters::JetCorrectorParameters ( )
inline

Definition at line 95 of file JetCorrectorParameters.h.

References AlCaHLTBitMon_QueryRunRegistry::string, and valid_.

JetCorrectorParameters::JetCorrectorParameters ( const std::string &  fFile,
const std::string &  fSection = "" 
)

Definition at line 109 of file JetCorrectorParameters.cc.

References trackerTree::check(), definitions(), JetCorrectorParameters::Definitions::formula(), insertMaterial::getSection(), mps_fire::i, init(), input, geometryCSVtoXML::line, MAX_SIZE_DIMENSIONALITY, mDefinitions, mRecords, JetCorrectorParameters::Definitions::nBinVar(), JetCorrectorParameters::Record::nParameters(), record(), vertexPlots::section, AlCaHLTBitMon_QueryRunRegistry::string, tmp, valid_, JetCorrectorParameters::Record::xMax(), and JetCorrectorParameters::Record::xMin().

110 {
111  std::ifstream input(fFile.c_str());
112  std::string currentSection = "";
114  std::string currentDefinitions = "";
115  while (std::getline(input,line))
116  {
118  std::string tmp = getDefinitions(line);
119  if (!section.empty() && tmp.empty())
120  {
121  currentSection = section;
122  continue;
123  }
124  if (currentSection == fSection)
125  {
126  if (!tmp.empty())
127  {
128  currentDefinitions = tmp;
129  continue;
130  }
131  Definitions definitions(currentDefinitions);
132  if (!(definitions.nBinVar()==0 && definitions.formula()==""))
135  bool check(true);
136  for(unsigned i=0;i<mDefinitions.nBinVar();++i)
137  if (record.xMin(i)==0 && record.xMax(i)==0)
138  check = false;
139  if (record.nParameters() == 0)
140  check = false;
141  if (check)
142  mRecords.push_back(record);
143  }
144  }
145  if (currentDefinitions=="")
146  handleError("JetCorrectorParameters","No definitions found!!!");
147  if (mRecords.empty() && currentSection == "") mRecords.push_back(Record());
148  if (mRecords.empty() && currentSection != "")
149  {
150  std::stringstream sserr;
151  sserr<<"the requested section "<<fSection<<" doesn't exist!";
152  handleError("JetCorrectorParameters",sserr.str());
153  }
154  std::sort(mRecords.begin(), mRecords.end());
155  valid_ = true;
156 
158  {
159  init();
160  }
161  else
162  {
163  std::stringstream sserr;
164  sserr<<"since the binned dimensionality is greater than "<<MAX_SIZE_DIMENSIONALITY
165  <<" the SimpleJetCorrector will default to using the legacy binIndex function!";
166  handleError("JetCorrectorParameters",sserr.str());
167  }
168 }
float xMin(unsigned fVar) const
const Definitions & definitions() const
std::vector< JetCorrectorParameters::Record > mRecords
const Record & record(unsigned fBin) const
static std::string const input
Definition: EdmProvDump.cc:44
static const int MAX_SIZE_DIMENSIONALITY
float xMax(unsigned fVar) const
def getSection(rootNode, name)
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
def check(config)
Definition: trackerTree.py:14
JetCorrectorParameters::Definitions mDefinitions
JetCorrectorParameters::JetCorrectorParameters ( const JetCorrectorParameters::Definitions fDefinitions,
const std::vector< JetCorrectorParameters::Record > &  fRecords 
)
inline

Definition at line 97 of file JetCorrectorParameters.h.

References valid_.

99  : mDefinitions(fDefinitions),mRecords(fRecords) { valid_ = true;}
std::vector< JetCorrectorParameters::Record > mRecords
JetCorrectorParameters::Definitions mDefinitions

Member Function Documentation

std::vector< float > JetCorrectorParameters::binCenters ( unsigned  fVar) const

Definition at line 287 of file JetCorrectorParameters.cc.

References mps_fire::i, record(), mps_fire::result, size(), and JetCorrectorParameters::Record::xMiddle().

Referenced by size().

288 {
289  std::vector<float> result;
290  for (unsigned i = 0; i < size(); ++i)
291  result.push_back(record(i).xMiddle(fVar));
292  return result;
293 }
const Record & record(unsigned fBin) const
int JetCorrectorParameters::binIndex ( const std::vector< float > &  fX) const

Definition at line 181 of file JetCorrectorParameters.cc.

References mps_fire::i, mDefinitions, N, JetCorrectorParameters::Definitions::nBinVar(), record(), mps_fire::result, size(), tmp, JetCorrectorParameters::Record::xMax(), and JetCorrectorParameters::Record::xMin().

Referenced by SimpleJetCorrector::correction(), JetResolution::parameterEtaEval(), size(), and SimpleJetCorrectionUncertainty::uncertainty().

182 {
183  int result = -1;
184  unsigned N = mDefinitions.nBinVar();
185  if (N != fX.size())
186  {
187  std::stringstream sserr;
188  sserr<<"# bin variables "<<N<<" doesn't correspont to requested #: "<<fX.size();
189  handleError("JetCorrectorParameters",sserr.str());
190  }
191  unsigned tmp;
192  for (unsigned i = 0; i < size(); ++i)
193  {
194  tmp = 0;
195  for (unsigned j=0;j<N;j++)
196  if (fX[j] >= record(i).xMin(j) && fX[j] < record(i).xMax(j))
197  tmp+=1;
198  if (tmp==N)
199  {
200  result = i;
201  break;
202  }
203  }
204  return result;
205 }
float xMin(unsigned fVar) const
const Record & record(unsigned fBin) const
float xMax(unsigned fVar) const
#define N
Definition: blowfish.cc:9
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
JetCorrectorParameters::Definitions mDefinitions
int JetCorrectorParameters::binIndexN ( const std::vector< float > &  fX) const

Definition at line 209 of file JetCorrectorParameters.cc.

References mRecords.

Referenced by SimpleJetCorrector::correction(), and size().

210 {
211  if(helper->size()>0)
212  {
213  return helper->binIndexN(fX,mRecords);
214  }
215  else
216  {
217  return -1;
218  }
219 }
Definition: helper.py:1
std::vector< JetCorrectorParameters::Record > mRecords
const Definitions& JetCorrectorParameters::definitions ( ) const
inline
void JetCorrectorParameters::init ( void  )

Definition at line 172 of file JetCorrectorParameters.cc.

References mDefinitions, and mRecords.

Referenced by isValid(), and JetCorrectorParameters().

173 {
174  std::sort(mRecords.begin(), mRecords.end());
175  helper = std::make_shared<JetCorrectorParametersHelper>();
176  helper->init(mDefinitions,mRecords);
177 }
Definition: helper.py:1
std::vector< JetCorrectorParameters::Record > mRecords
JetCorrectorParameters::Definitions mDefinitions
bool JetCorrectorParameters::isValid ( void  ) const
inline
int JetCorrectorParameters::neighbourBin ( unsigned  fIndex,
unsigned  fVar,
bool  fNext 
) const

Definition at line 223 of file JetCorrectorParameters.cc.

References mps_fire::i, mDefinitions, N, JetCorrectorParameters::Definitions::nBinVar(), record(), mps_fire::result, size(), tmp, JetCorrectorParameters::Record::xMax(), and JetCorrectorParameters::Record::xMin().

Referenced by SimpleJetCorrector::correction(), and size().

224 {
225  int result = -1;
226  unsigned N = mDefinitions.nBinVar();
227  if (fVar >= N)
228  {
229  std::stringstream sserr;
230  sserr<<"# of bin variables "<<N<<" doesn't correspond to requested #: "<<fVar;
231  handleError("JetCorrectorParameters",sserr.str());
232  }
233  unsigned tmp;
234  for (unsigned i = 0; i < size(); ++i)
235  {
236  tmp = 0;
237  for (unsigned j=0;j<fVar;j++)
238  if (fabs(record(i).xMin(j)-record(fIndex).xMin(j))<0.0001)
239  tmp+=1;
240  for (unsigned j=fVar+1;j<N;j++)
241  if (fabs(record(i).xMin(j)-record(fIndex).xMin(j))<0.0001)
242  tmp+=1;
243  if (tmp<N-1)
244  continue;
245  if (tmp==N-1)
246  {
247  if (fNext)
248  if (fabs(record(i).xMin(fVar)-record(fIndex).xMax(fVar))<0.0001)
249  tmp+=1;
250  if (!fNext)
251  if (fabs(record(i).xMax(fVar)-record(fIndex).xMin(fVar))<0.0001)
252  tmp+=1;
253  }
254  if (tmp==N)
255  {
256  result = i;
257  break;
258  }
259  }
260  return result;
261 }
const Record & record(unsigned fBin) const
#define N
Definition: blowfish.cc:9
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
JetCorrectorParameters::Definitions mDefinitions
void JetCorrectorParameters::printFile ( const std::string &  fFileName) const

Definition at line 335 of file JetCorrectorParameters.cc.

References JetCorrectorParameters::Definitions::binVar(), definitions(), EcalElecEmulTccOnlyExample_cfg::formula, JetCorrectorParameters::Definitions::formula(), mps_fire::i, JetCorrectorParameters::Definitions::level(), JetCorrectorParameters::Definitions::nBinVar(), JetCorrectorParameters::Record::nParameters(), JetCorrectorParameters::Definitions::nParVar(), JetCorrectorParameters::Record::parameter(), JetCorrectorParameters::Definitions::parVar(), record(), size(), AlCaHLTBitMon_QueryRunRegistry::string, JetCorrectorParameters::Record::xMax(), and JetCorrectorParameters::Record::xMin().

Referenced by JetCorrectorDBReader::analyze(), and size().

336 {
337  std::ofstream txtFile;
338  txtFile.open(fFileName.c_str());
339  txtFile.setf(std::ios::right);
340  txtFile<<"{"<<definitions().nBinVar()<<std::setw(15);
341  for(unsigned i=0;i<definitions().nBinVar();i++)
342  txtFile<<definitions().binVar(i)<<std::setw(15);
343  txtFile<<definitions().nParVar()<<std::setw(15);
344  for(unsigned i=0;i<definitions().nParVar();i++)
345  txtFile<<definitions().parVar(i)<<std::setw(15);
346  txtFile<<std::setw(definitions().formula().size()+15)<<definitions().formula()<<std::setw(15);
347  if (definitions().isResponse())
348  txtFile<<"Response"<<std::setw(15);
349  else
350  txtFile<<"Correction"<<std::setw(15);
351  txtFile<<definitions().level()<<"}"<<"\n";
352  for(unsigned i=0;i<size();i++)
353  {
354  for(unsigned j=0;j<definitions().nBinVar();j++)
355  txtFile<<record(i).xMin(j)<<std::setw(15)<<record(i).xMax(j)<<std::setw(15);
356  txtFile<<record(i).nParameters()<<std::setw(15);
357  for(unsigned j=0;j<record(i).nParameters();j++)
358  txtFile<<record(i).parameter(j)<<std::setw(15);
359  txtFile<<"\n";
360  }
361  txtFile.close();
362 }
float xMin(unsigned fVar) const
const Definitions & definitions() const
const Record & record(unsigned fBin) const
std::vector< std::string > parVar() const
float parameter(unsigned fIndex) const
float xMax(unsigned fVar) const
std::vector< std::string > binVar() const
void JetCorrectorParameters::printScreen ( ) const

Definition at line 297 of file JetCorrectorParameters.cc.

References JetCorrectorParameters::Definitions::binVar(), gather_cfg::cout, definitions(), JetCorrectorParameters::Definitions::formula(), mps_fire::i, JetCorrectorParameters::Definitions::level(), JetCorrectorParameters::Definitions::nBinVar(), JetCorrectorParameters::Record::nParameters(), JetCorrectorParameters::Definitions::nParVar(), JetCorrectorParameters::Record::parameter(), JetCorrectorParameters::Definitions::parVar(), record(), size(), JetCorrectorParameters::Record::xMax(), and JetCorrectorParameters::Record::xMin().

Referenced by JetCorrectorDBReader::analyze(), and size().

298 {
299  std::cout<<"--------------------------------------------"<<std::endl;
300  std::cout<<"//////// PARAMETERS: //////////////////////"<<std::endl;
301  std::cout<<"--------------------------------------------"<<std::endl;
302  std::cout<<"Number of binning variables: "<<definitions().nBinVar()<<std::endl;
303  std::cout<<"Names of binning variables: ";
304  for(unsigned i=0;i<definitions().nBinVar();i++)
305  std::cout<<definitions().binVar(i)<<" ";
306  std::cout<<std::endl;
307  std::cout<<"--------------------------------------------"<<std::endl;
308  std::cout<<"Number of parameter variables: "<<definitions().nParVar()<<std::endl;
309  std::cout<<"Names of parameter variables: ";
310  for(unsigned i=0;i<definitions().nParVar();i++)
311  std::cout<<definitions().parVar(i)<<" ";
312  std::cout<<std::endl;
313  std::cout<<"--------------------------------------------"<<std::endl;
314  std::cout<<"Parametrization Formula: "<<definitions().formula()<<std::endl;
315  if (definitions().isResponse())
316  std::cout<<"Type (Response or Correction): "<<"Response"<<std::endl;
317  else
318  std::cout<<"Type (Response or Correction): "<<"Correction"<<std::endl;
319  std::cout<<"Correction Level: "<<definitions().level()<<std::endl;
320  std::cout<<"--------------------------------------------"<<std::endl;
321  std::cout<<"------- Bin contents -----------------------"<<std::endl;
322  for(unsigned i=0;i<size();i++)
323  {
324  for(unsigned j=0;j<definitions().nBinVar();j++)
325  std::cout<<record(i).xMin(j)<<" "<<record(i).xMax(j)<<" ";
326  std::cout<<record(i).nParameters()<<" ";
327  for(unsigned j=0;j<record(i).nParameters();j++)
328  std::cout<<record(i).parameter(j)<<" ";
329  std::cout<<std::endl;
330  }
331 }
float xMin(unsigned fVar) const
const Definitions & definitions() const
const Record & record(unsigned fBin) const
std::vector< std::string > parVar() const
float parameter(unsigned fIndex) const
float xMax(unsigned fVar) const
std::vector< std::string > binVar() const
const Record& JetCorrectorParameters::record ( unsigned  fBin) const
inline
template<class Archive >
void JetCorrectorParameters::serialize ( Archive &  ar,
const unsigned int  version 
)
private
unsigned JetCorrectorParameters::size ( void  ) const
inline
unsigned JetCorrectorParameters::size ( unsigned  fVar) const

Definition at line 265 of file JetCorrectorParameters.cc.

References mps_fire::i, mDefinitions, JetCorrectorParameters::Definitions::nBinVar(), record(), mps_fire::result, size(), JetCorrectorParameters::Record::xMax(), and JetCorrectorParameters::Record::xMin().

Referenced by ntupleDataFormat._Collection::__iter__(), and ntupleDataFormat._Collection::__len__().

266 {
267  if (fVar >= mDefinitions.nBinVar())
268  {
269  std::stringstream sserr;
270  sserr<<"requested bin variable index "<<fVar<<" is greater than number of variables "<<mDefinitions.nBinVar();
271  handleError("JetCorrectorParameters",sserr.str());
272  }
273  unsigned result = 0;
274  float tmpMin(-9999),tmpMax(-9999);
275  for (unsigned i = 0; i < size(); ++i)
276  if (record(i).xMin(fVar) > tmpMin && record(i).xMax(fVar) > tmpMax)
277  {
278  result++;
279  tmpMin = record(i).xMin(fVar);
280  tmpMax = record(i).xMax(fVar);
281  }
282  return result;
283 }
float xMin(unsigned fVar) const
const Record & record(unsigned fBin) const
float xMax(unsigned fVar) const
JetCorrectorParameters::Definitions mDefinitions

Friends And Related Function Documentation

friend class boost::serialization::access
friend

Definition at line 124 of file JetCorrectorParameters.h.

template<typename CondSerializationT , typename Enabled >
friend struct cond::serialization::access
friend

Definition at line 124 of file JetCorrectorParameters.h.

Member Data Documentation

std::shared_ptr<JetCorrectorParametersHelper> JetCorrectorParameters::helper
private

is this a valid set?

Definition at line 122 of file JetCorrectorParameters.h.

const int JetCorrectorParameters::MAX_SIZE_DIMENSIONALITY = 3
static
JetCorrectorParameters::Definitions JetCorrectorParameters::mDefinitions
private
std::vector<JetCorrectorParameters::Record> JetCorrectorParameters::mRecords
private

Definition at line 119 of file JetCorrectorParameters.h.

Referenced by binIndexN(), init(), JetCorrectorParameters(), record(), and size().

bool JetCorrectorParameters::valid_
private

Definition at line 120 of file JetCorrectorParameters.h.

Referenced by isValid(), and JetCorrectorParameters().