CMS 3D CMS Logo

L1GtTriggerMenuTester.cc

Go to the documentation of this file.
00001 
00017 // this class header
00018 #include "L1TriggerConfig/L1GtConfigProducers/interface/L1GtTriggerMenuTester.h"
00019 
00020 // system include files
00021 #include <iomanip>
00022 
00023 // user include files
00024 //   base class
00025 #include "FWCore/Framework/interface/EDAnalyzer.h"
00026 
00027 #include "FWCore/Framework/interface/Event.h"
00028 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00029 
00030 #include "FWCore/Framework/interface/EventSetup.h"
00031 #include "FWCore/Framework/interface/ESHandle.h"
00032 
00033 #include "CondFormats/L1TObjects/interface/L1GtTriggerMenu.h"
00034 #include "CondFormats/DataRecord/interface/L1GtTriggerMenuRcd.h"
00035 
00036 #include "CondFormats/L1TObjects/interface/L1GtPrescaleFactors.h"
00037 
00038 #include "CondFormats/DataRecord/interface/L1GtPrescaleFactorsAlgoTrigRcd.h"
00039 #include "CondFormats/DataRecord/interface/L1GtPrescaleFactorsTechTrigRcd.h"
00040 
00041 #include "CondFormats/L1TObjects/interface/L1GtTriggerMask.h"
00042 
00043 #include "CondFormats/DataRecord/interface/L1GtTriggerMaskAlgoTrigRcd.h"
00044 #include "CondFormats/DataRecord/interface/L1GtTriggerMaskTechTrigRcd.h"
00045 
00046 #include "CondFormats/DataRecord/interface/L1GtTriggerMaskVetoAlgoTrigRcd.h"
00047 #include "CondFormats/DataRecord/interface/L1GtTriggerMaskVetoTechTrigRcd.h"
00048 
00049 // forward declarations
00050 
00051 // constructor(s)
00052 L1GtTriggerMenuTester::L1GtTriggerMenuTester(const edm::ParameterSet& parSet) {
00053     // empty
00054 }
00055 
00056 // destructor
00057 L1GtTriggerMenuTester::~L1GtTriggerMenuTester() {
00058     // empty
00059 }
00060 
00061 // loop over events
00062 void L1GtTriggerMenuTester::analyze(const edm::Event& iEvent,
00063         const edm::EventSetup& evSetup) {
00064 
00065     edm::ESHandle< L1GtTriggerMenu> l1GtMenu;
00066     evSetup.get< L1GtTriggerMenuRcd>().get(l1GtMenu);
00067 
00068     // print with various level of verbosities
00069 
00070     int printVerbosity = 0;
00071     l1GtMenu->print(std::cout, printVerbosity); 
00072     std::cout << std::flush << std::endl;
00073 
00074     printVerbosity = 1;
00075     l1GtMenu->print(std::cout, printVerbosity);
00076     std::cout << std::flush << std::endl;
00077 
00078     printVerbosity = 2;
00079     l1GtMenu->print(std::cout, printVerbosity);
00080     std::cout << std::flush << std::endl;
00081 
00082     //
00083     // print menu, prescale factors and trigger mask in wiki format
00084     //
00085 
00086     // L1 GT prescale factors for algorithm triggers
00087     edm::ESHandle< L1GtPrescaleFactors> l1GtPfAlgo;
00088     evSetup.get< L1GtPrescaleFactorsAlgoTrigRcd>().get(l1GtPfAlgo);
00089     
00090     int indexPfSet = 0; // FIXME
00091 
00092     std::vector<int> prescaleFactorsAlgoTrig = 
00093         (l1GtPfAlgo->gtPrescaleFactors()).at(indexPfSet);
00094 
00095 
00096     // L1 GT prescale factors for technical triggers
00097     edm::ESHandle< L1GtPrescaleFactors> l1GtPfTech;
00098     evSetup.get< L1GtPrescaleFactorsTechTrigRcd>().get(l1GtPfTech);
00099 
00100     std::vector<int> prescaleFactorsTechTrig = 
00101         (l1GtPfTech->gtPrescaleFactors()).at(indexPfSet);
00102 
00103 
00104     // L1 GT trigger masks for algorithm triggers
00105     edm::ESHandle< L1GtTriggerMask> l1GtTmAlgo;
00106     evSetup.get< L1GtTriggerMaskAlgoTrigRcd>().get(l1GtTmAlgo);
00107 
00108     std::vector<unsigned int> triggerMaskAlgoTrig = l1GtTmAlgo->gtTriggerMask();
00109 
00110 
00111     // L1 GT trigger masks for technical triggers
00112     edm::ESHandle< L1GtTriggerMask> l1GtTmTech;
00113     evSetup.get< L1GtTriggerMaskTechTrigRcd>().get(l1GtTmTech);
00114 
00115     std::vector<unsigned int> triggerMaskTechTrig = l1GtTmTech->gtTriggerMask();
00116 
00117 
00118     // L1 GT trigger veto masks for algorithm triggers
00119     edm::ESHandle< L1GtTriggerMask> l1GtTmVetoAlgo;
00120     evSetup.get< L1GtTriggerMaskVetoAlgoTrigRcd>().get(l1GtTmVetoAlgo);
00121     
00122     std::vector<unsigned int> triggerMaskVetoAlgoTrig = l1GtTmVetoAlgo->gtTriggerMask();
00123     
00124 
00125     // L1 GT trigger veto masks for technical triggers
00126     edm::ESHandle< L1GtTriggerMask> l1GtTmVetoTech;
00127     evSetup.get< L1GtTriggerMaskVetoTechTrigRcd>().get(l1GtTmVetoTech);
00128 
00129     std::vector<unsigned int> triggerMaskVetoTechTrig = l1GtTmVetoTech->gtTriggerMask();
00130    
00131     // set the index of physics DAQ partition TODO EventSetup?
00132     int physicsDaqPartition = 0;
00133     
00134     // use another map <int, L1GtAlgorithm> to get the menu sorted after bit number
00135     // both algorithm and bit numbers are unique
00136     std::map<int, const L1GtAlgorithm*> algoBitToAlgo;
00137     typedef std::map<int, const L1GtAlgorithm*>::const_iterator CItBit;
00138 
00139     const AlgorithmMap& algorithmMap = l1GtMenu->gtAlgorithmMap();
00140 
00141     for (CItAlgo itAlgo = algorithmMap.begin(); itAlgo != algorithmMap.end(); itAlgo++) {
00142 
00143         int bitNumber = (itAlgo->second).algoBitNumber();
00144         algoBitToAlgo[bitNumber] = &(itAlgo->second);
00145     }
00146 
00147     // header for printing algorithms
00148 
00149     std::cout 
00150     << "\n   ********** L1 Trigger Menu - printing   ********** \n\n"
00151     << "L1 Trigger Menu Name: " << l1GtMenu->gtTriggerMenuName() << "\n\n" << std::flush 
00152     << std::endl;
00153     
00154     std::cout 
00155     << "| *Algorithm* | *Bit number* | *Prescale factor* | *Mask* |"
00156     << std::endl;
00157 
00158     for (CItBit itBit = algoBitToAlgo.begin(); itBit != algoBitToAlgo.end(); itBit++) {
00159 
00160         int bitNumber = itBit->first;
00161         std::string aName = (itBit->second)->algoName();
00162 
00163         unsigned int triggerMaskAlgo = 
00164             (triggerMaskAlgoTrig.at(bitNumber)) & (1 << physicsDaqPartition);
00165 
00166         std::cout 
00167         << "|" << std::left << aName << "  |  " << std::right << bitNumber 
00168         << "|  " << prescaleFactorsAlgoTrig.at(bitNumber) 
00169         << "|  " << triggerMaskAlgo
00170         << " |"
00171         << std::endl;
00172     }
00173     
00174     std::cout 
00175     << "\nNOTE: only the prescale factors from set index zero are printed!"
00176     << std::endl;
00177 
00178 }

Generated on Tue Jun 9 17:40:28 2009 for CMSSW by  doxygen 1.5.4