00001
00017
00018 #include "L1TriggerConfig/L1GtConfigProducers/interface/L1GtTriggerMenuXmlProducer.h"
00019
00020
00021 #include <memory>
00022
00023 #include "boost/shared_ptr.hpp"
00024
00025
00026
00027
00028 #include "FWCore/Framework/interface/ESProducer.h"
00029
00030 #include "FWCore/Framework/interface/ModuleFactory.h"
00031 #include "FWCore/Framework/interface/ESHandle.h"
00032
00033 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00034 #include "FWCore/MessageLogger/interface/MessageDrop.h"
00035
00036 #include "CondFormats/L1TObjects/interface/L1GtTriggerMenu.h"
00037 #include "CondFormats/DataRecord/interface/L1GtTriggerMenuRcd.h"
00038
00039 #include "CondFormats/L1TObjects/interface/L1GtStableParameters.h"
00040 #include "CondFormats/DataRecord/interface/L1GtStableParametersRcd.h"
00041
00042 #include "L1TriggerConfig/L1GtConfigProducers/interface/L1GtTriggerMenuXmlParser.h"
00043
00044
00045
00046
00047
00048
00049 L1GtTriggerMenuXmlProducer::L1GtTriggerMenuXmlProducer(
00050 const edm::ParameterSet& parSet)
00051 {
00052
00053 setWhatProduced(this, &L1GtTriggerMenuXmlProducer::produceGtTriggerMenu);
00054
00055
00056
00057
00058
00059
00060 std::string menuDir = parSet.getParameter<std::string>("TriggerMenuLuminosity");
00061
00062
00063
00064 std::string defXmlFileName = parSet.getParameter<std::string>("DefXmlFile");
00065
00066 edm::FileInPath f1("L1TriggerConfig/L1GtConfigProducers/data/Luminosity/" +
00067 menuDir + "/" + defXmlFileName);
00068
00069 m_defXmlFile = f1.fullPath();
00070
00071
00072
00073 std::string vmeXmlFileName = parSet.getParameter<std::string>("VmeXmlFile");
00074
00075 if (vmeXmlFileName != "") {
00076 edm::FileInPath f2("L1TriggerConfig/L1GtConfigProducers/data/Luminosity/" +
00077 menuDir + "/" + vmeXmlFileName);
00078
00079 m_vmeXmlFile = f2.fullPath();
00080
00081 }
00082
00083 edm::LogInfo("L1GtConfigProducers")
00084 << "\n\nL1 Trigger Menu: "
00085 << "\n\n def.xml file: \n " << m_defXmlFile
00086 << "\n\n vme.xml file: \n " << m_vmeXmlFile
00087 << "\n\n"
00088 << std::endl;
00089
00090 }
00091
00092
00093 L1GtTriggerMenuXmlProducer::~L1GtTriggerMenuXmlProducer()
00094 {
00095
00096
00097
00098 }
00099
00100
00101
00102
00103
00104 boost::shared_ptr<L1GtTriggerMenu> L1GtTriggerMenuXmlProducer::produceGtTriggerMenu(
00105 const L1GtTriggerMenuRcd& l1MenuRecord)
00106 {
00107
00108
00109 const L1GtStableParametersRcd& stableParametersRcd =
00110 l1MenuRecord.getRecord<L1GtStableParametersRcd>();
00111
00112 edm::ESHandle<L1GtStableParameters> stableParameters;
00113 stableParametersRcd.get(stableParameters);
00114
00115 unsigned int numberConditionChips = stableParameters->gtNumberConditionChips();
00116 unsigned int pinsOnConditionChip = stableParameters->gtPinsOnConditionChip();
00117 std::vector<int> orderConditionChip = stableParameters->gtOrderConditionChip();
00118 unsigned int numberPhysTriggers = stableParameters->gtNumberPhysTriggers();
00119 unsigned int numberTechTriggers = stableParameters->gtNumberTechnicalTriggers();
00120 unsigned int numberL1JetCounts = stableParameters->gtNumberL1JetCounts();
00121
00122 L1GtTriggerMenuXmlParser gtXmlParser = L1GtTriggerMenuXmlParser();
00123
00124 gtXmlParser.setGtNumberConditionChips(numberConditionChips);
00125 gtXmlParser.setGtPinsOnConditionChip(pinsOnConditionChip);
00126 gtXmlParser.setGtOrderConditionChip(orderConditionChip);
00127 gtXmlParser.setGtNumberPhysTriggers(numberPhysTriggers);
00128 gtXmlParser.setGtNumberTechTriggers(numberTechTriggers);
00129 gtXmlParser.setGtNumberL1JetCounts(numberL1JetCounts);
00130
00131 gtXmlParser.parseXmlFile(m_defXmlFile, m_vmeXmlFile);
00132
00133
00134
00135 boost::shared_ptr<L1GtTriggerMenu> pL1GtTriggerMenu = boost::shared_ptr<L1GtTriggerMenu>(
00136 new L1GtTriggerMenu(gtXmlParser.gtTriggerMenuName(), numberConditionChips,
00137 gtXmlParser.vecMuonTemplate(),
00138 gtXmlParser.vecCaloTemplate(),
00139 gtXmlParser.vecEnergySumTemplate(),
00140 gtXmlParser.vecJetCountsTemplate(),
00141 gtXmlParser.vecCastorTemplate(),
00142 gtXmlParser.vecHfBitCountsTemplate(),
00143 gtXmlParser.vecHfRingEtSumsTemplate(),
00144 gtXmlParser.vecCorrelationTemplate(),
00145 gtXmlParser.corMuonTemplate(),
00146 gtXmlParser.corCaloTemplate(),
00147 gtXmlParser.corEnergySumTemplate()) );
00148
00149
00150 pL1GtTriggerMenu->setGtAlgorithmMap(gtXmlParser.gtAlgorithmMap());
00151 pL1GtTriggerMenu->setGtTechnicalTriggerMap(gtXmlParser.gtTechnicalTriggerMap());
00152
00153
00154
00155
00156
00157
00158 return pL1GtTriggerMenu ;
00159 }
00160