CMS 3D CMS Logo

Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes

PerformancePayloadFromTFormula Class Reference

#include <PerformancePayloadFromTFormula.h>

Inheritance diagram for PerformancePayloadFromTFormula:
PerformancePayload

List of all members.

Public Member Functions

const PhysicsTFormulaPayloadformulaPayload () const
float getResult (PerformanceResult::ResultType, BinningPointByMap) const
virtual bool isInPayload (PerformanceResult::ResultType, BinningPointByMap) const
virtual bool isParametrizedInVariable (const BinningVariables::BinningVariablesType p) const
 PerformancePayloadFromTFormula ()
 PerformancePayloadFromTFormula (std::vector< PerformanceResult::ResultType > r, std::vector< BinningVariables::BinningVariablesType > b, PhysicsTFormulaPayload &in)
virtual ~PerformancePayloadFromTFormula ()

Static Public Attributes

static int InvalidPos = -1

Protected Member Functions

void check () const
bool isOk (BinningPointByMap p) const
virtual int limitPos (const BinningVariables::BinningVariablesType b) const
virtual std::vector
< BinningVariables::BinningVariablesType
myBinning () const
virtual int resultPos (PerformanceResult::ResultType r) const

Protected Attributes

std::vector< TFormula * > compiledFormulas_
PhysicsTFormulaPayload pl
std::vector
< PerformanceResult::ResultType
results_
std::vector
< BinningVariables::BinningVariablesType
variables_

Detailed Description

Definition at line 14 of file PerformancePayloadFromTFormula.h.


Constructor & Destructor Documentation

PerformancePayloadFromTFormula::PerformancePayloadFromTFormula ( std::vector< PerformanceResult::ResultType r,
std::vector< BinningVariables::BinningVariablesType b,
PhysicsTFormulaPayload in 
) [inline]

Definition at line 20 of file PerformancePayloadFromTFormula.h.

: pl(in), results_(r), variables_(b) {}
PerformancePayloadFromTFormula::PerformancePayloadFromTFormula ( ) [inline]

Definition at line 22 of file PerformancePayloadFromTFormula.h.

{}
virtual PerformancePayloadFromTFormula::~PerformancePayloadFromTFormula ( ) [inline, virtual]

Definition at line 23 of file PerformancePayloadFromTFormula.h.

References compiledFormulas_, and i.

                                           {
    for (unsigned int i=0; i< compiledFormulas_.size(); ++i){
      delete compiledFormulas_[i];
    }
    compiledFormulas_.clear();
  }

Member Function Documentation

void PerformancePayloadFromTFormula::check ( ) const [protected]

Definition at line 56 of file PerformancePayloadFromTFormula.cc.

References compiledFormulas_, PhysicsTFormulaPayload::formulas(), i, pl, and matplotRender::t.

Referenced by getResult(), and isInPayload().

                                                 {
  if (pl.formulas().size() == compiledFormulas_.size()) return;
  //
  // otherwise, compile!
  //
  for (unsigned int i=0; i< pl.formulas().size(); ++i){
    TFormula* t = new TFormula("rr",(pl.formulas()[i]).c_str());
    t->Compile();
    compiledFormulas_.push_back(t);
  }
}
const PhysicsTFormulaPayload& PerformancePayloadFromTFormula::formulaPayload ( ) const [inline]

Definition at line 38 of file PerformancePayloadFromTFormula.h.

References pl.

{return pl;}
float PerformancePayloadFromTFormula::getResult ( PerformanceResult::ResultType  r,
BinningPointByMap  p 
) const [virtual]

Implements PerformancePayload.

Definition at line 8 of file PerformancePayloadFromTFormula.cc.

References check(), compiledFormulas_, EcalElecEmulExample_cfg::formula, i, PerformancePayload::InvalidResult, isInPayload(), myBinning(), resultPos(), matplotRender::t, BinningPointByMap::value(), and makeHLTPrescaleTable::values.

                                                                                                        {
  check();
  //
  // which formula to use?
  //
  if (! isInPayload(r,p)) return PerformancePayload::InvalidResult;

  // nice, what to do here???
  TFormula * formula = compiledFormulas_[resultPos(r)];
  //
  // prepare the vector to pass, order counts!!!
  //
  std::vector<BinningVariables::BinningVariablesType> t = myBinning();
  
  // sorry, TFormulas just work up to dimension==4
  Double_t values[4];
  int i=0;
  for (std::vector<BinningVariables::BinningVariablesType>::const_iterator it = t.begin(); it != t.end();++it, ++i){
    values[i] = p.value(*it);    
  }
  //
  // i need a non const version #$%^
  return formula->EvalPar(values);
}
bool PerformancePayloadFromTFormula::isInPayload ( PerformanceResult::ResultType  res,
BinningPointByMap  point 
) const [virtual]

Implements PerformancePayload.

Definition at line 47 of file PerformancePayloadFromTFormula.cc.

References check(), InvalidPos, isOk(), and resultPos().

Referenced by getResult().

                                                                                                              {
  check();
  // first, let's see if it is available at all
  if (resultPos(res) == PerformancePayloadFromTFormula::InvalidPos) return false;
  if ( ! isOk(point)) return false;
  return true;
}
bool PerformancePayloadFromTFormula::isOk ( BinningPointByMap  p) const [protected]

Definition at line 33 of file PerformancePayloadFromTFormula.cc.

References BinningPointByMap::isKeyAvailable(), limitPos(), PhysicsTFormulaPayload::limits(), myBinning(), pl, pos, matplotRender::t, v, and BinningPointByMap::value().

Referenced by isInPayload().

                                                                   {
  
  std::vector<BinningVariables::BinningVariablesType> t = myBinning();
  
  for (std::vector<BinningVariables::BinningVariablesType>::const_iterator it = t.begin(); it != t.end();++it){
    if (!   p.isKeyAvailable(*it)) return false;
    float v = p.value(*it);
    int pos = limitPos(*it);
    std::pair<float, float> limits = (pl.limits())[pos];
    if (v<limits.first || v>limits.second) return false;
  }
  return true;
}
virtual bool PerformancePayloadFromTFormula::isParametrizedInVariable ( const BinningVariables::BinningVariablesType  p) const [inline, virtual]

Definition at line 32 of file PerformancePayloadFromTFormula.h.

References InvalidPos, and limitPos().

virtual int PerformancePayloadFromTFormula::limitPos ( const BinningVariables::BinningVariablesType  b) const [inline, protected, virtual]

Definition at line 44 of file PerformancePayloadFromTFormula.h.

References b, spr::find(), InvalidPos, L1TEmulatorMonitor_cff::p, and variables_.

Referenced by isOk(), and isParametrizedInVariable().

                                                                           {
    std::vector<BinningVariables::BinningVariablesType>::const_iterator p;
    p = find(variables_.begin(), variables_.end(), b);
    if (p == variables_.end()) return PerformancePayloadFromTFormula::InvalidPos;
    return ((p-variables_.begin()));
    
  }
virtual std::vector<BinningVariables::BinningVariablesType> PerformancePayloadFromTFormula::myBinning ( ) const [inline, protected, virtual]

Definition at line 42 of file PerformancePayloadFromTFormula.h.

References variables_.

Referenced by getResult(), and isOk().

{return variables_;}
virtual int PerformancePayloadFromTFormula::resultPos ( PerformanceResult::ResultType  r) const [inline, protected, virtual]

Definition at line 52 of file PerformancePayloadFromTFormula.h.

References spr::find(), InvalidPos, L1TEmulatorMonitor_cff::p, csvReporter::r, and results_.

Referenced by getResult(), and isInPayload().

                                                             {
    std::vector<PerformanceResult::ResultType>::const_iterator p;
    p = find (results_.begin(), results_.end(), r);
    if ( p == results_.end()) return PerformancePayloadFromTFormula::InvalidPos;
      return ((p-results_.begin()));
  }

Member Data Documentation

std::vector<TFormula *> PerformancePayloadFromTFormula::compiledFormulas_ [mutable, protected]

Definition at line 64 of file PerformancePayloadFromTFormula.h.

Referenced by check(), formulaPayload(), and isOk().

Definition at line 68 of file PerformancePayloadFromTFormula.h.

Referenced by resultPos().

Definition at line 69 of file PerformancePayloadFromTFormula.h.

Referenced by limitPos(), and myBinning().