Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:20:04

0001 #ifndef DE_TRAIT_H
0002 #define DE_TRAIT_H
0003 
0004 /*\class template DEtrait
0005  *\description data|emulation auxiliary template
0006                type associator trait struct 
0007  *\author Nuno Leonardo (CERN)
0008  *\date 07.03
0009  */
0010 
0011 // L1 dataformats includes
0012 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"
0013 #include "DataFormats/HcalDigi/interface/HcalDigiCollections.h"
0014 #include "DataFormats/L1CaloTrigger/interface/L1CaloCollections.h"
0015 #include "DataFormats/L1GlobalCaloTrigger/interface/L1GctCollections.h"
0016 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambPhContainer.h"
0017 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambThContainer.h"
0018 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTTrackContainer.h"
0019 #include "DataFormats/CSCDigi/interface/CSCALCTDigiCollection.h"
0020 #include "DataFormats/CSCDigi/interface/CSCCLCTDigiCollection.h"
0021 #include "DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigiCollection.h"
0022 #include "DataFormats/L1CSCTrackFinder/interface/L1CSCTrackCollection.h"
0023 #include "DataFormats/L1CSCTrackFinder/interface/L1CSCStatusDigiCollection.h"
0024 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTTrackCand.h"
0025 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuRegionalCand.h"
0026 #include "DataFormats/LTCDigi/interface/LTCDigi.h"
0027 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTCand.h"
0028 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTReadoutCollection.h"
0029 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h"
0030 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerEvmReadoutRecord.h"
0031 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerObjectMapRecord.h"
0032 
0033 //d|e record
0034 #include "DataFormats/L1Trigger/interface/L1DataEmulRecord.h"
0035 
0036 namespace dedefs {
0037 
0038   const int DEnsys = 12;
0039 
0040   enum SysList { ETP, HTP, RCT, GCT, DTP, DTF, CTP, CTF, RPC, LTC, GMT, GLT };
0041 
0042   const std::string SystLabel[DEnsys] = {
0043       "ETP", "HTP", "RCT", "GCT", "DTP", "DTF", "CTP", "CTF", "RPC", "LTC", "GMT", "GLT"};
0044 
0045   const std::string SystLabelExt[DEnsys] = {
0046       "ECAL", "HCAL", "RCT", "GCT", "DTTPG", "DTTF", "CSCTPG", "CSCTF", "RPC", "LTC", "GMT", "GT"};
0047 
0048   enum ColList {
0049     ECALtp,
0050     HCALtp,
0051     RCTem,
0052     RCTrgn,
0053     GCTem,
0054     GCTjet,
0055     GCTisolaem,
0056     GCTnoisoem,
0057     GCTcenjets,
0058     GCTforjets,
0059     GCTtaujets,
0060     GCTethad,
0061     GCTetmiss,
0062     GCTettot,
0063     GCThtmiss,
0064     GCThfring,
0065     GCThfbit,
0066     GCTisotaujets,
0067     GCTjetcnt,
0068     DTtpPh,
0069     DTtpTh,
0070     DTtf,
0071     DTtftrk,
0072     CSCtpa,
0073     CSCtpc,
0074     CSCtpl,
0075     CSCsta,
0076     CSCtf,
0077     CSCtftrk,
0078     CSCtftrc,
0079     CSCtfsta,
0080     MUrtf,
0081     RPCcen,
0082     RPCfor,
0083     LTCi,
0084     GMTmain,
0085     GMTcnd,
0086     GMTrdt,
0087     GTdword
0088   };
0089 
0090 }  // namespace dedefs
0091 
0092 typedef std::vector<L1MuDTChambPhDigi> L1MuDTChambPhDigiCollection;
0093 typedef std::vector<L1MuDTChambThDigi> L1MuDTChambThDigiCollection;
0094 typedef std::vector<L1MuRegionalCand> L1MuRegionalCandCollection;
0095 typedef std::vector<CSCALCTDigi> CSCALCTDigiCollection_;
0096 typedef std::vector<CSCCLCTDigi> CSCCLCTDigiCollection_;
0097 typedef std::vector<CSCCorrelatedLCTDigi> CSCCorrelatedLCTDigiCollection_;
0098 typedef std::vector<L1CSCSPStatusDigi> L1CSCSPStatusDigiCollection_;
0099 typedef std::vector<L1MuGMTCand> L1MuGMTCandCollection;
0100 typedef std::vector<L1MuGMTReadoutRecord> L1MuGMTReadoutRecordCollection;
0101 typedef std::vector<L1DataEmulDigi> L1DEDigiCollection;
0102 
0103 template <typename T>
0104 struct DEtrait {};
0105 
0106 template <>
0107 struct DEtrait<EcalTrigPrimDigiCollection> {
0108   typedef EcalTrigPrimDigiCollection coll_type;
0109   typedef EcalTriggerPrimitiveDigi cand_type;
0110   static inline int de_type() { return dedefs::ECALtp; }
0111 };
0112 
0113 template <>
0114 struct DEtrait<HcalTrigPrimDigiCollection> {
0115   typedef HcalTrigPrimDigiCollection coll_type;
0116   typedef HcalTriggerPrimitiveDigi cand_type;
0117   static inline int de_type() { return dedefs::HCALtp; }
0118 };
0119 
0120 template <>
0121 struct DEtrait<L1CaloEmCollection> {
0122   typedef L1CaloEmCollection coll_type;
0123   typedef L1CaloEmCand cand_type;
0124   static inline int de_type() { return dedefs::RCTem; }
0125 };
0126 
0127 template <>
0128 struct DEtrait<L1CaloRegionCollection> {
0129   typedef L1CaloRegionCollection coll_type;
0130   typedef L1CaloRegion cand_type;
0131   static inline int de_type() { return dedefs::RCTrgn; }
0132 };
0133 
0134 template <>
0135 struct DEtrait<L1GctEmCandCollection> {
0136   typedef L1GctEmCandCollection coll_type;
0137   typedef L1GctEmCand cand_type;
0138   static inline int de_type() { return dedefs::GCTem; }
0139 };
0140 
0141 template <>
0142 struct DEtrait<L1GctJetCandCollection> {
0143   typedef L1GctJetCandCollection coll_type;
0144   typedef L1GctJetCand cand_type;
0145   static inline int de_type() { return dedefs::GCTjet; }
0146 };
0147 
0148 template <>
0149 struct DEtrait<L1GctEtHadCollection> {
0150   typedef L1GctEtHadCollection coll_type;
0151   typedef L1GctEtHad cand_type;
0152   static inline int de_type() { return dedefs::GCTethad; }
0153 };
0154 template <>
0155 struct DEtrait<L1GctEtMissCollection> {
0156   typedef L1GctEtMissCollection coll_type;
0157   typedef L1GctEtMiss cand_type;
0158   static inline int de_type() { return dedefs::GCTetmiss; }
0159 };
0160 template <>
0161 struct DEtrait<L1GctEtTotalCollection> {
0162   typedef L1GctEtTotalCollection coll_type;
0163   typedef L1GctEtTotal cand_type;
0164   static inline int de_type() { return dedefs::GCTettot; }
0165 };
0166 template <>
0167 struct DEtrait<L1GctHtMissCollection> {
0168   typedef L1GctHtMissCollection coll_type;
0169   typedef L1GctHtMiss cand_type;
0170   static inline int de_type() { return dedefs::GCThtmiss; }
0171 };
0172 template <>
0173 struct DEtrait<L1GctHFRingEtSumsCollection> {
0174   typedef L1GctHFRingEtSumsCollection coll_type;
0175   typedef L1GctHFRingEtSums cand_type;
0176   static inline int de_type() { return dedefs::GCThfring; }
0177 };
0178 template <>
0179 struct DEtrait<L1GctHFBitCountsCollection> {
0180   typedef L1GctHFBitCountsCollection coll_type;
0181   typedef L1GctHFBitCounts cand_type;
0182   static inline int de_type() { return dedefs::GCThfbit; }
0183 };
0184 template <>
0185 struct DEtrait<L1GctJetCountsCollection> {
0186   typedef L1GctJetCountsCollection coll_type;
0187   typedef L1GctJetCounts cand_type;
0188   static inline int de_type() { return dedefs::GCTjetcnt; }
0189 };
0190 
0191 template <>
0192 struct DEtrait<L1MuDTChambPhDigiCollection> {
0193   typedef L1MuDTChambPhDigiCollection coll_type;
0194   typedef L1MuDTChambPhDigi cand_type;
0195   static inline int de_type() { return dedefs::DTtpPh; }
0196 };
0197 template <>
0198 struct DEtrait<L1MuDTChambThDigiCollection> {
0199   typedef L1MuDTChambThDigiCollection coll_type;
0200   typedef L1MuDTChambThDigi cand_type;
0201   static inline int de_type() { return dedefs::DTtpTh; }
0202 };
0203 
0204 template <>
0205 struct DEtrait<L1MuRegionalCandCollection> {
0206   typedef L1MuRegionalCandCollection coll_type;
0207   typedef L1MuRegionalCand cand_type;
0208   static inline int de_type() { return dedefs::MUrtf; }
0209 };
0210 
0211 template <>
0212 struct DEtrait<CSCALCTDigiCollection_> {
0213   typedef CSCALCTDigiCollection_ coll_type;
0214   typedef CSCALCTDigi cand_type;
0215   static inline int de_type() { return dedefs::CSCtpa; }
0216 };
0217 template <>
0218 struct DEtrait<CSCCLCTDigiCollection_> {
0219   typedef CSCCLCTDigiCollection_ coll_type;
0220   typedef CSCCLCTDigi cand_type;
0221   static inline int de_type() { return dedefs::CSCtpc; }
0222 };
0223 
0224 template <>
0225 struct DEtrait<CSCCorrelatedLCTDigiCollection_> {
0226   typedef CSCCorrelatedLCTDigiCollection_ coll_type;
0227   typedef CSCCorrelatedLCTDigi cand_type;
0228   static inline int de_type() { return dedefs::CSCtpl; }
0229 };
0230 
0231 template <>
0232 struct DEtrait<L1CSCSPStatusDigiCollection_> {
0233   typedef L1CSCSPStatusDigiCollection_ coll_type;
0234   typedef L1CSCSPStatusDigi cand_type;
0235   static inline int de_type() { return dedefs::CSCsta; }
0236 };
0237 
0238 template <>
0239 struct DEtrait<LTCDigiCollection> {
0240   typedef LTCDigiCollection coll_type;
0241   typedef LTCDigi cand_type;
0242   static inline int de_type() { return dedefs::LTCi; }
0243 };
0244 
0245 template <>
0246 struct DEtrait<L1MuGMTCandCollection> {
0247   typedef L1MuGMTCandCollection coll_type;
0248   typedef L1MuGMTCand cand_type;
0249   static inline int de_type() { return dedefs::GMTcnd; }
0250 };
0251 
0252 template <>
0253 struct DEtrait<L1MuGMTReadoutRecordCollection> {
0254   typedef L1MuGMTReadoutRecordCollection coll_type;
0255   typedef L1MuGMTReadoutRecord cand_type;
0256   static inline int de_type() { return dedefs::GMTrdt; }
0257 };
0258 
0259 template <>
0260 struct DEtrait<DecisionWord> {
0261   typedef DecisionWord coll_type;
0262   typedef bool cand_type;
0263   static inline int de_type() { return dedefs::GTdword; }
0264 };
0265 
0266 #endif