CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

HLTHiggsPlotter Class Reference

#include <HLTHiggsPlotter.h>

List of all members.

Public Member Functions

void analyze (const bool &isPassTrigger, const std::string &source, const std::vector< MatchStruct > &matches)
void beginJob ()
void beginRun (const edm::Run &, const edm::EventSetup &)
const std::string gethltpath () const
 HLTHiggsPlotter (const edm::ParameterSet &pset, const std::string &hltPath, const std::vector< unsigned int > &objectsType, DQMStore *dbe)
 ~HLTHiggsPlotter ()

Private Member Functions

void bookHist (const std::string &source, const std::string &objType, const std::string &variable)
void fillHist (const bool &passTrigger, const std::string &source, const std::string &objType, const std::string &var, const float &value)

Private Attributes

std::map< unsigned int, double > _cutMaxEta
std::map< unsigned int, double > _cutMinPt
std::map< unsigned int,
unsigned int > 
_cutMotherId
std::map< unsigned int,
std::vector< double > > 
_cutsDr
DQMStore_dbe
std::map< std::string,
MonitorElement * > 
_elements
std::string _hltPath
std::string _hltProcessName
unsigned int _nObjects
std::set< unsigned int > _objectsType
std::vector< double > _parametersEta
std::vector< double > _parametersPhi
std::vector< double > _parametersTurnOn

Detailed Description

Generate histograms for trigger efficiencies Higgs related Documentation available on the CMS TWiki: https://twiki.cern.ch/twiki/bin/view/CMS/HiggsWGHLTValidate

Date:
2012/03/23 11:50:56
Revision:
1.7
Author:
J. Duarte Campderros (based and adapted on J. Klukas, M. Vander Donckt and J. Alcaraz code from the HLTriggerOffline/Muon package)
J. Klukas, M. Vander Donckt, J. Alcaraz

Definition at line 47 of file HLTHiggsPlotter.h.


Constructor & Destructor Documentation

HLTHiggsPlotter::HLTHiggsPlotter ( const edm::ParameterSet pset,
const std::string &  hltPath,
const std::vector< unsigned int > &  objectsType,
DQMStore dbe 
)

Definition at line 27 of file HLTHiggsPlotter.cc.

References _cutMaxEta, _cutMinPt, _objectsType, edm::ParameterSet::getParameter(), and EVTColContainer::getTypeString().

                                :
        _hltPath(hltPath),
        _hltProcessName(pset.getParameter<std::string>("hltProcessName")),
        _objectsType(std::set<unsigned int>(objectsType.begin(),objectsType.end())),
        _nObjects(objectsType.size()),
        _parametersEta(pset.getParameter<std::vector<double> >("parametersEta")),
        _parametersPhi(pset.getParameter<std::vector<double> >("parametersPhi")),
        _parametersTurnOn(pset.getParameter<std::vector<double> >("parametersTurnOn")),
        _dbe(dbe)
{
        for(std::set<unsigned int>::iterator it = _objectsType.begin();
                        it != _objectsType.end(); ++it)
        {
                // Some parameters extracted from the .py
                std::string objStr = EVTColContainer::getTypeString( *it );
                _cutMinPt[*it] = pset.getParameter<double>( std::string(objStr+"_cutMinPt").c_str() );
                _cutMaxEta[*it] = pset.getParameter<double>( std::string(objStr+"_cutMaxEta").c_str() );
        }
}
HLTHiggsPlotter::~HLTHiggsPlotter ( )

Definition at line 50 of file HLTHiggsPlotter.cc.

{
}

Member Function Documentation

void HLTHiggsPlotter::analyze ( const bool &  isPassTrigger,
const std::string &  source,
const std::vector< MatchStruct > &  matches 
)

Definition at line 83 of file HLTHiggsPlotter.cc.

References _objectsType, eta(), fillHist(), EVTColContainer::getTypeString(), j, and phi.

{
        if( ! isPassTrigger )
        {
                return;
        }
        std::map<unsigned int,int> countobjects;
        // Initializing the count of the used object
        for(std::set<unsigned int>::iterator co = _objectsType.begin();
                        co != _objectsType.end(); ++co)
        {
                countobjects[*co] = 0;
        }
        
        int counttotal = 0;
        const int totalobjectssize2 = 2*countobjects.size();
        // Fill the histos if pass the trigger (just the two with higher pt)
        for(size_t j = 0; j < matches.size(); ++j)
        {
                // Is this object owned by this trigger? If not we are not interested...
                if( _objectsType.find( matches[j].objType) == _objectsType.end() )
                {
                         continue;
                }

                const unsigned int objType = matches[j].objType;
                const std::string objTypeStr = EVTColContainer::getTypeString(matches[j].objType);
                
                float pt  = matches[j].pt;
                float eta = matches[j].eta;
                float phi = matches[j].phi;
                this->fillHist(isPassTrigger,source,objTypeStr,"Eta",eta);
                this->fillHist(isPassTrigger,source,objTypeStr,"Phi",phi);
                if( countobjects[objType] == 0 )
                {
                        this->fillHist(isPassTrigger,source,objTypeStr,"MaxPt1",pt);
                        // Filled the high pt ...
                        ++(countobjects[objType]);
                        ++counttotal;
                }
                else if( countobjects[objType] == 1 )
                {
                        this->fillHist(isPassTrigger,source,objTypeStr,"MaxPt2",pt);
                        // Filled the second high pt ...
                        ++(countobjects[objType]);
                        ++counttotal;
                }
                else
                {
                        if( counttotal == totalobjectssize2 ) 
                        {
                                break;
                        }
                }                               
        }
}
void HLTHiggsPlotter::beginJob ( void  )

Definition at line 55 of file HLTHiggsPlotter.cc.

{
}
void HLTHiggsPlotter::beginRun ( const edm::Run iRun,
const edm::EventSetup iSetup 
)

Definition at line 61 of file HLTHiggsPlotter.cc.

References _objectsType, bookHist(), EVTColContainer::getTypeString(), i, and LaserTracksInput_cfi::source.

{
        for(std::set<unsigned int>::iterator it = _objectsType.begin(); 
                        it != _objectsType.end(); ++it)
        {
                std::vector<std::string> sources(2);
                sources[0] = "gen";
                sources[1] = "rec";

                const std::string objTypeStr = EVTColContainer::getTypeString(*it);
          
                for(size_t i = 0; i < sources.size(); i++) 
                {
                        std::string source = sources[i];
                        bookHist(source, objTypeStr, "Eta");
                        bookHist(source, objTypeStr, "Phi");
                        bookHist(source, objTypeStr, "MaxPt1");
                        bookHist(source, objTypeStr, "MaxPt2");
                }
        }
}
void HLTHiggsPlotter::bookHist ( const std::string &  source,
const std::string &  objType,
const std::string &  variable 
) [private]

Definition at line 142 of file HLTHiggsPlotter.cc.

References _dbe, _elements, _hltPath, _parametersEta, _parametersPhi, _parametersTurnOn, DQMStore::book1D(), prof2calltree::edges, h, i, max(), min, mergeVDriftHistosByStation::name, LaserTracksInput_cfi::source, and indexGen::title.

Referenced by beginRun().

{
        std::string sourceUpper = source; 
        sourceUpper[0] = std::toupper(sourceUpper[0]);
        std::string name = source + objType + variable + "_" + _hltPath;
        TH1F * h = 0;

        if(variable.find("MaxPt") != std::string::npos) 
        {
                std::string desc = (variable == "MaxPt1") ? "Leading" : "Next-to-Leading";
                std::string title = "pT of " + desc + " " + sourceUpper + " " + objType + " "
                   "where event pass the "+ _hltPath;
                const size_t nBins = _parametersTurnOn.size() - 1;
                float * edges = new float[nBins + 1];
                for(size_t i = 0; i < nBins + 1; i++)
                {
                        edges[i] = _parametersTurnOn[i];
                }
                h = new TH1F(name.c_str(), title.c_str(), nBins, edges);
                delete edges;
        }
        else 
        {
                std::string symbol = (variable == "Eta") ? "#eta" : "#phi";
                std::string title  = symbol + " of " + sourceUpper + " " + objType + " "+
                        "where event pass the "+ _hltPath;
                std::vector<double> params = (variable == "Eta") ? _parametersEta : _parametersPhi;

                int    nBins = (int)params[0];
                double min   = params[1];
                double max   = params[2];
                h = new TH1F(name.c_str(), title.c_str(), nBins, min, max);
        }
        h->Sumw2();
        _elements[name] = _dbe->book1D(name, h);
        delete h;
}
void HLTHiggsPlotter::fillHist ( const bool &  passTrigger,
const std::string &  source,
const std::string &  objType,
const std::string &  var,
const float &  value 
) [private]

Definition at line 181 of file HLTHiggsPlotter.cc.

References _elements, _hltPath, mergeVDriftHistosByStation::name, and LaserTracksInput_cfi::source.

Referenced by analyze().

{
        std::string sourceUpper = source; 
        sourceUpper[0] = toupper(sourceUpper[0]);
        std::string name = source + objType + variable + "_" + _hltPath;

        _elements[name]->Fill(value);
}
const std::string HLTHiggsPlotter::gethltpath ( ) const [inline]

Definition at line 60 of file HLTHiggsPlotter.h.

References _hltPath.

{ return _hltPath; }

Member Data Documentation

std::map<unsigned int,double> HLTHiggsPlotter::_cutMaxEta [private]

Definition at line 81 of file HLTHiggsPlotter.h.

Referenced by HLTHiggsPlotter().

std::map<unsigned int,double> HLTHiggsPlotter::_cutMinPt [private]

Definition at line 80 of file HLTHiggsPlotter.h.

Referenced by HLTHiggsPlotter().

std::map<unsigned int,unsigned int> HLTHiggsPlotter::_cutMotherId [private]

Definition at line 82 of file HLTHiggsPlotter.h.

std::map<unsigned int,std::vector<double> > HLTHiggsPlotter::_cutsDr [private]

Definition at line 83 of file HLTHiggsPlotter.h.

Definition at line 86 of file HLTHiggsPlotter.h.

Referenced by bookHist().

std::map<std::string, MonitorElement *> HLTHiggsPlotter::_elements [private]

Definition at line 87 of file HLTHiggsPlotter.h.

Referenced by bookHist(), and fillHist().

std::string HLTHiggsPlotter::_hltPath [private]

Definition at line 68 of file HLTHiggsPlotter.h.

Referenced by bookHist(), fillHist(), and gethltpath().

std::string HLTHiggsPlotter::_hltProcessName [private]

Definition at line 70 of file HLTHiggsPlotter.h.

unsigned int HLTHiggsPlotter::_nObjects [private]

Definition at line 74 of file HLTHiggsPlotter.h.

std::set<unsigned int> HLTHiggsPlotter::_objectsType [private]

Definition at line 72 of file HLTHiggsPlotter.h.

Referenced by analyze(), beginRun(), and HLTHiggsPlotter().

std::vector<double> HLTHiggsPlotter::_parametersEta [private]

Definition at line 76 of file HLTHiggsPlotter.h.

Referenced by bookHist().

std::vector<double> HLTHiggsPlotter::_parametersPhi [private]

Definition at line 77 of file HLTHiggsPlotter.h.

Referenced by bookHist().

std::vector<double> HLTHiggsPlotter::_parametersTurnOn [private]

Definition at line 78 of file HLTHiggsPlotter.h.

Referenced by bookHist().