Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-06-28 02:36:27

0001 #ifndef L1Trigger_L1TGlobal_TriggerMenu_h
0002 #define L1Trigger_L1TGlobal_TriggerMenu_h
0003 
0004 /**
0005  * \class TriggerMenu
0006  *
0007  *
0008  * Description: L1 trigger menu.
0009  *
0010  * Implementation:
0011  *    <TODO: enter implementation details>
0012  *
0013  * \author: Vasile Mihai Ghete - HEPHY Vienna
0014  *          Vladimir Rekovic - extend for overlap removal
0015  *          Elisa Fontanesi - extended for three-body correlation conditions
0016  *
0017  * $Date$
0018  * $Revision$
0019  *
0020  */
0021 
0022 // system include files
0023 #include <string>
0024 #include <vector>
0025 #include <map>
0026 
0027 #include <iosfwd>
0028 
0029 // user include files
0030 #include "L1Trigger/L1TGlobal/interface/TriggerMenuFwd.h"
0031 
0032 #include "L1Trigger/L1TGlobal/interface/GlobalScales.h"
0033 
0034 #include "L1Trigger/L1TGlobal/interface/MuonTemplate.h"
0035 #include "L1Trigger/L1TGlobal/interface/MuonShowerTemplate.h"
0036 #include "L1Trigger/L1TGlobal/interface/CaloTemplate.h"
0037 #include "L1Trigger/L1TGlobal/interface/EnergySumTemplate.h"
0038 #include "L1Trigger/L1TGlobal/interface/EnergySumZdcTemplate.h"
0039 #include "L1Trigger/L1TGlobal/interface/AXOL1TLTemplate.h"
0040 #include "L1Trigger/L1TGlobal/interface/CICADATemplate.h"
0041 #include "L1Trigger/L1TGlobal/interface/ExternalTemplate.h"
0042 #include "L1Trigger/L1TGlobal/interface/CorrelationTemplate.h"
0043 #include "L1Trigger/L1TGlobal/interface/CorrelationThreeBodyTemplate.h"
0044 #include "L1Trigger/L1TGlobal/interface/CorrelationWithOverlapRemovalTemplate.h"
0045 
0046 // forward declarations
0047 class GlobalCondition;
0048 class L1GtAlgorithm;
0049 class GlobalScales;
0050 
0051 // class declaration
0052 class TriggerMenu {
0053 public:
0054   // constructor
0055   TriggerMenu();
0056 
0057   TriggerMenu(const std::string&,
0058               const unsigned int numberConditionChips,
0059               const std::vector<std::vector<MuonTemplate> >&,
0060               const std::vector<std::vector<MuonShowerTemplate> >&,
0061               const std::vector<std::vector<CaloTemplate> >&,
0062               const std::vector<std::vector<EnergySumTemplate> >&,
0063               const std::vector<std::vector<EnergySumZdcTemplate> >&,
0064               const std::vector<std::vector<AXOL1TLTemplate> >&,
0065               const std::vector<std::vector<CICADATemplate> >&,
0066               const std::vector<std::vector<ExternalTemplate> >&,
0067               const std::vector<std::vector<CorrelationTemplate> >&,
0068               const std::vector<std::vector<CorrelationThreeBodyTemplate> >&,
0069               const std::vector<std::vector<CorrelationWithOverlapRemovalTemplate> >&,
0070               const std::vector<std::vector<MuonTemplate> >&,
0071               const std::vector<std::vector<CaloTemplate> >&,
0072               const std::vector<std::vector<EnergySumTemplate> >&);
0073 
0074   // copy constructor
0075   TriggerMenu(const TriggerMenu&);
0076 
0077   // destructor
0078   virtual ~TriggerMenu();
0079 
0080   // assignment operator
0081   TriggerMenu& operator=(const TriggerMenu&);
0082 
0083 public:
0084   /// get / set / build the condition maps
0085   inline const std::vector<l1t::ConditionMap>& gtConditionMap() const { return m_conditionMap; }
0086 
0087   void setGtConditionMap(const std::vector<l1t::ConditionMap>&);
0088   void buildGtConditionMap();
0089 
0090   /// get / set the trigger menu names
0091   inline const std::string& gtTriggerMenuInterface() const { return m_triggerMenuInterface; }
0092 
0093   void setGtTriggerMenuInterface(const std::string&);
0094 
0095   //
0096   inline const std::string& gtTriggerMenuName() const { return m_triggerMenuName; }
0097 
0098   void setGtTriggerMenuName(const std::string&);
0099 
0100   //
0101   inline const unsigned long gtTriggerMenuUUID() const { return m_triggerMenuUUID; }
0102 
0103   void setGtTriggerMenuUUID(const unsigned long uuid);
0104 
0105   //
0106   inline const unsigned long gtTriggerMenuImplementation() const { return m_triggerMenuImplementation; }
0107 
0108   void setGtTriggerMenuImplementation(const unsigned long);
0109 
0110   /// menu associated scale key
0111   inline const std::string& gtScaleDbKey() const { return m_scaleDbKey; }
0112 
0113   void setGtScaleDbKey(const std::string&);
0114 
0115   /// get / set the vectors containing the conditions
0116   inline const std::vector<std::vector<MuonTemplate> >& vecMuonTemplate() const { return m_vecMuonTemplate; }
0117 
0118   void setVecMuonTemplate(const std::vector<std::vector<MuonTemplate> >&);
0119 
0120   //
0121   inline const std::vector<std::vector<MuonShowerTemplate> >& vecMuonShowerTemplate() const {
0122     return m_vecMuonShowerTemplate;
0123   }
0124 
0125   void setVecMuonShowerTemplate(const std::vector<std::vector<MuonShowerTemplate> >&);
0126 
0127   //
0128   inline const std::vector<std::vector<CaloTemplate> >& vecCaloTemplate() const { return m_vecCaloTemplate; }
0129 
0130   void setVecCaloTemplate(const std::vector<std::vector<CaloTemplate> >&);
0131 
0132   //
0133   inline const std::vector<std::vector<EnergySumTemplate> >& vecEnergySumTemplate() const {
0134     return m_vecEnergySumTemplate;
0135   }
0136 
0137   void setVecEnergySumTemplate(const std::vector<std::vector<EnergySumTemplate> >&);
0138 
0139   //
0140   inline const std::vector<std::vector<EnergySumZdcTemplate> >& vecEnergySumZdcTemplate() const {
0141     return m_vecEnergySumZdcTemplate;
0142   }
0143 
0144   void setVecEnergySumZdcTemplate(const std::vector<std::vector<EnergySumZdcTemplate> >&);
0145 
0146   //
0147   inline const std::vector<std::vector<AXOL1TLTemplate> >& vecAXOL1TLTemplate() const { return m_vecAXOL1TLTemplate; }
0148 
0149   void setVecAXOL1TLTemplate(const std::vector<std::vector<AXOL1TLTemplate> >&);
0150 
0151   //
0152   inline const std::vector<std::vector<CICADATemplate> >& vecCICADATemplate() const { return m_vecCICADATemplate; }
0153 
0154   void setVecCICADATemplate(const std::vector<std::vector<CICADATemplate> >&);
0155 
0156   //
0157   inline const std::vector<std::vector<ExternalTemplate> >& vecExternalTemplate() const {
0158     return m_vecExternalTemplate;
0159   }
0160 
0161   void setVecExternalTemplate(const std::vector<std::vector<ExternalTemplate> >&);
0162 
0163   //
0164   inline const std::vector<std::vector<CorrelationTemplate> >& vecCorrelationTemplate() const {
0165     return m_vecCorrelationTemplate;
0166   }
0167 
0168   void setVecCorrelationTemplate(const std::vector<std::vector<CorrelationTemplate> >&);
0169 
0170   //
0171   inline const std::vector<std::vector<CorrelationThreeBodyTemplate> >& vecCorrelationThreeBodyTemplate() const {
0172     return m_vecCorrelationThreeBodyTemplate;
0173   }
0174 
0175   void setVecCorrelationThreeBodyTemplate(const std::vector<std::vector<CorrelationThreeBodyTemplate> >&);
0176 
0177   //
0178   inline const std::vector<std::vector<CorrelationWithOverlapRemovalTemplate> >&
0179   vecCorrelationWithOverlapRemovalTemplate() const {
0180     return m_vecCorrelationWithOverlapRemovalTemplate;
0181   }
0182 
0183   void setVecCorrelationWithOverlapRemovalTemplate(
0184       const std::vector<std::vector<CorrelationWithOverlapRemovalTemplate> >&);
0185 
0186   //
0187   inline const std::vector<std::vector<MuonTemplate> >& corMuonTemplate() const { return m_corMuonTemplate; }
0188 
0189   void setCorMuonTemplate(const std::vector<std::vector<MuonTemplate> >&);
0190 
0191   //
0192   inline const std::vector<std::vector<CaloTemplate> >& corCaloTemplate() const { return m_corCaloTemplate; }
0193 
0194   void setCorCaloTemplate(const std::vector<std::vector<CaloTemplate> >&);
0195 
0196   // get / set the vectors containing the conditions for correlation templates
0197   //
0198   inline const std::vector<std::vector<EnergySumTemplate> >& corEnergySumTemplate() const {
0199     return m_corEnergySumTemplate;
0200   }
0201 
0202   void setCorEnergySumTemplate(const std::vector<std::vector<EnergySumTemplate> >&);
0203 
0204   /// get / set the algorithm map (by name)
0205   inline const l1t::AlgorithmMap& gtAlgorithmMap() const { return m_algorithmMap; }
0206 
0207   void setGtAlgorithmMap(const l1t::AlgorithmMap&);
0208 
0209   /// get / set the algorithm map (by alias)
0210   inline const l1t::AlgorithmMap& gtAlgorithmAliasMap() const { return m_algorithmAliasMap; }
0211 
0212   void setGtAlgorithmAliasMap(const l1t::AlgorithmMap&);
0213 
0214   /// get the scales
0215   inline const l1t::GlobalScales& gtScales() const { return m_gtScales; }
0216 
0217   void setGtScales(const l1t::GlobalScales&);
0218 
0219   /*
0220     /// get / set the technical trigger map
0221     inline const l1t::AlgorithmMap& gtTechnicalTriggerMap() const {
0222         return m_technicalTriggerMap;
0223     }
0224 
0225 //    void setGtTechnicalTriggerMap(const l1t::AlgorithmMap&);
0226 */
0227   /// print the trigger menu
0228   /// allow various verbosity levels
0229   void print(std::ostream&, int&) const;
0230 
0231 public:
0232   /// get the result for algorithm with name algName
0233   /// use directly the format of decisionWord (no typedef)
0234   const bool gtAlgorithmResult(const std::string& algName, const std::vector<bool>& decWord) const;
0235 
0236 private:
0237   /// map containing the conditions (per condition chip) - transient
0238   std::vector<l1t::ConditionMap> m_conditionMap;
0239 
0240 private:
0241   /// menu names
0242   std::string m_triggerMenuInterface;
0243   std::string m_triggerMenuName;
0244   unsigned long m_triggerMenuImplementation;
0245 
0246   unsigned long m_triggerMenuUUID;
0247 
0248   /// menu associated scale key
0249   std::string m_scaleDbKey;
0250 
0251   /// vectors containing the conditions
0252   /// explicit, due to persistency...
0253   std::vector<std::vector<MuonTemplate> > m_vecMuonTemplate;
0254   std::vector<std::vector<MuonShowerTemplate> > m_vecMuonShowerTemplate;
0255   std::vector<std::vector<CaloTemplate> > m_vecCaloTemplate;
0256   std::vector<std::vector<EnergySumTemplate> > m_vecEnergySumTemplate;
0257   std::vector<std::vector<EnergySumZdcTemplate> > m_vecEnergySumZdcTemplate;
0258   std::vector<std::vector<AXOL1TLTemplate> > m_vecAXOL1TLTemplate;
0259   std::vector<std::vector<CICADATemplate> > m_vecCICADATemplate;
0260 
0261   std::vector<std::vector<ExternalTemplate> > m_vecExternalTemplate;
0262 
0263   std::vector<std::vector<CorrelationTemplate> > m_vecCorrelationTemplate;
0264   std::vector<std::vector<CorrelationThreeBodyTemplate> > m_vecCorrelationThreeBodyTemplate;
0265   std::vector<std::vector<CorrelationWithOverlapRemovalTemplate> > m_vecCorrelationWithOverlapRemovalTemplate;
0266   std::vector<std::vector<MuonTemplate> > m_corMuonTemplate;
0267   std::vector<std::vector<CaloTemplate> > m_corCaloTemplate;
0268   std::vector<std::vector<EnergySumTemplate> > m_corEnergySumTemplate;
0269 
0270   /// map containing the physics algorithms (by name)
0271   l1t::AlgorithmMap m_algorithmMap;
0272 
0273   /// map containing the physics algorithms (by alias)
0274   l1t::AlgorithmMap m_algorithmAliasMap;
0275 
0276   /// map containing the technical triggers
0277   //    l1t::AlgorithmMap m_technicalTriggerMap;
0278 
0279   // class containing the scales from the L1 Menu XML
0280   l1t::GlobalScales m_gtScales;
0281 };
0282 
0283 #endif /*L1Trigger_L1TGlobal_TriggerMenu_h*/