CMS 3D CMS Logo

DEtrait.h

Go to the documentation of this file.
00001 #ifndef DE_TRAIT_H
00002 #define DE_TRAIT_H
00003 
00004 /*\class template DEtrait
00005  *\description data|emulation auxiliary template
00006                type associator trait struct 
00007  *\author Nuno Leonardo (CERN)
00008  *\date 07.03
00009  */
00010 
00011 // L1 dataformats includes
00012 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"
00013 #include "DataFormats/HcalDigi/interface/HcalDigiCollections.h"
00014 #include "DataFormats/L1CaloTrigger/interface/L1CaloCollections.h"
00015 #include "DataFormats/L1GlobalCaloTrigger/interface/L1GctCollections.h"
00016 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambPhContainer.h"
00017 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambThContainer.h"
00018 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTTrackContainer.h"
00019 #include "DataFormats/CSCDigi/interface/CSCALCTDigiCollection.h"
00020 #include "DataFormats/CSCDigi/interface/CSCCLCTDigiCollection.h"
00021 #include "DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigiCollection.h"
00022 #include "DataFormats/L1CSCTrackFinder/interface/L1CSCTrackCollection.h"
00023 #include "DataFormats/L1CSCTrackFinder/interface/L1CSCStatusDigiCollection.h"
00024 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTTrackCand.h"
00025 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuRegionalCand.h"
00026 #include "DataFormats/LTCDigi/interface/LTCDigi.h"
00027 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTCand.h"
00028 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTReadoutCollection.h"
00029 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h"
00030 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerEvmReadoutRecord.h"
00031 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerObjectMapRecord.h"
00032 
00033 //d|e record
00034 #include "DataFormats/L1Trigger/interface/L1DataEmulRecord.h"
00035 
00036 namespace dedefs {
00037 
00038   const int DEnsys = 12; 
00039 
00040   enum SysList {
00041     ETP, HTP, RCT, GCT, DTP, DTF, 
00042     CTP, CTF, RPC, LTC, GMT, GLT
00043   };
00044 
00045   const std::string SystLabel[DEnsys] = {
00046     "ETP", "HTP", "RCT", "GCT", "DTP", "DTF", 
00047     "CTP", "CTF", "RPC", "LTC", "GMT", "GLT"
00048   };
00049 
00050   const std::string SystLabelExt[DEnsys] = {
00051     "ECAL", "HCAL", "RCT", "GCT", "DTTPG", "DTTF", 
00052     "CSCTPG", "CSCTF", "RPC", "LTC", "GMT", "GT"
00053   };
00054 
00055   enum ColList {
00056     ECALtp, HCALtp, 
00057     RCTem, RCTrgn, 
00058     GCTem, GCTjet, GCTisolaem, GCTnoisoem, GCTcenjets, GCTforjets, GCTtaujets, 
00059     DTtpPh, DTtpTh, DTtf, DTtftrk,  
00060     CSCtpa, CSCtpc, CSCtpl, CSCsta, CSCtf, CSCtftrk, CSCtftrc, CSCtfsta, 
00061     MUrtf,     RPCcen, RPCfor, 
00062     LTCi, 
00063     GMTmain, GMTcnd, GMTrdt, 
00064     GTdword
00065   };
00066 
00067 }
00068 
00069 typedef std::vector<L1MuDTChambPhDigi>    L1MuDTChambPhDigiCollection; 
00070 typedef std::vector<L1MuDTChambThDigi>    L1MuDTChambThDigiCollection; 
00071 typedef std::vector<L1MuRegionalCand>     L1MuRegionalCandCollection;
00072 typedef std::vector<CSCALCTDigi>          CSCALCTDigiCollection_;
00073 typedef std::vector<CSCCLCTDigi>          CSCCLCTDigiCollection_;
00074 typedef std::vector<CSCCorrelatedLCTDigi> CSCCorrelatedLCTDigiCollection_;
00075 typedef std::vector<L1CSCSPStatusDigi>    L1CSCSPStatusDigiCollection_;
00076 typedef std::vector<L1MuGMTCand>          L1MuGMTCandCollection;
00077 typedef std::vector<L1MuGMTReadoutRecord> L1MuGMTReadoutRecordCollection;
00078 typedef std::vector<L1DataEmulDigi>       L1DEDigiCollection;
00079 
00080 template <typename T> 
00081 struct DEtrait {};
00082 
00083 template<> 
00084 struct DEtrait<EcalTrigPrimDigiCollection> {
00085   typedef EcalTrigPrimDigiCollection coll_type;
00086   typedef EcalTriggerPrimitiveDigi   cand_type;
00087   static inline int de_type() {return dedefs::ECALtp;}
00088 };
00089 
00090 template<> 
00091 struct DEtrait<HcalTrigPrimDigiCollection> {
00092   typedef HcalTrigPrimDigiCollection coll_type;
00093   typedef HcalTriggerPrimitiveDigi   cand_type;
00094   static inline int de_type() {return dedefs::HCALtp;}
00095 };
00096 
00097 template<> 
00098 struct DEtrait<L1CaloEmCollection> {
00099   typedef L1CaloEmCollection     coll_type;
00100   typedef L1CaloEmCand           cand_type;
00101   static inline int de_type() {return dedefs::RCTem;}
00102 };
00103 
00104 template<> 
00105 struct DEtrait<L1CaloRegionCollection> {
00106   typedef L1CaloRegionCollection coll_type;
00107   typedef L1CaloRegion           cand_type;
00108   static inline int de_type() {return dedefs::RCTrgn;}
00109 };
00110 
00111 template<> 
00112 struct DEtrait<L1GctEmCandCollection> {
00113   typedef L1GctEmCandCollection  coll_type;
00114   typedef L1GctEmCand            cand_type;
00115   static inline int de_type() {return dedefs::GCTem;}
00116 };
00117 
00118 template<> 
00119 struct DEtrait<L1GctJetCandCollection> {
00120   typedef L1GctJetCandCollection coll_type;
00121   typedef L1GctJetCand           cand_type;
00122   static inline int de_type() {return dedefs::GCTjet;}
00123 };
00124 
00125 template<> 
00126 struct DEtrait<L1MuDTChambPhDigiCollection> {
00127   typedef L1MuDTChambPhDigiCollection coll_type;
00128   typedef L1MuDTChambPhDigi           cand_type;
00129   static inline int de_type() {return dedefs::DTtpPh;}
00130 };
00131 template<> 
00132 struct DEtrait<L1MuDTChambThDigiCollection> {
00133   typedef L1MuDTChambThDigiCollection coll_type;
00134   typedef L1MuDTChambThDigi           cand_type;
00135   static inline int de_type() {return dedefs::DTtpTh;}
00136 };
00137 
00138 template<> 
00139 struct DEtrait<L1MuRegionalCandCollection> {
00140   typedef L1MuRegionalCandCollection coll_type;
00141   typedef L1MuRegionalCand           cand_type;
00142   static inline int de_type() {return dedefs::MUrtf;}
00143 };
00144 
00145 template<> 
00146 struct DEtrait<CSCALCTDigiCollection_> {
00147   typedef CSCALCTDigiCollection_ coll_type;
00148   typedef CSCALCTDigi            cand_type;
00149   static inline int de_type() {return dedefs::CSCtpa;}
00150 };
00151 template<> 
00152 struct DEtrait<CSCCLCTDigiCollection_> {
00153   typedef CSCCLCTDigiCollection_ coll_type;
00154   typedef CSCCLCTDigi            cand_type;
00155   static inline int de_type() {return dedefs::CSCtpc;}
00156 };
00157 
00158 template<> 
00159 struct DEtrait<CSCCorrelatedLCTDigiCollection_> {
00160   typedef CSCCorrelatedLCTDigiCollection_ coll_type;
00161   typedef CSCCorrelatedLCTDigi            cand_type;
00162   static inline int de_type() {return dedefs::CSCtpl;}
00163 };
00164 
00165 template<> 
00166 struct DEtrait<L1CSCSPStatusDigiCollection_> {
00167   typedef L1CSCSPStatusDigiCollection_ coll_type;
00168   typedef L1CSCSPStatusDigi            cand_type;
00169   static inline int de_type() {return dedefs::CSCsta;}
00170 };
00171 
00172 template<> 
00173 struct DEtrait<LTCDigiCollection> {
00174   typedef LTCDigiCollection coll_type;
00175   typedef LTCDigi           cand_type;
00176   static inline int de_type() {return dedefs::LTCi;}
00177 };
00178 
00179 template<> 
00180 struct DEtrait<L1MuGMTCandCollection> {
00181   typedef L1MuGMTCandCollection coll_type;
00182   typedef L1MuGMTCand           cand_type;
00183   static inline int de_type() {return dedefs::GMTcnd;}
00184 };
00185 
00186 template<> 
00187 struct DEtrait<L1MuGMTReadoutRecordCollection> {
00188   typedef L1MuGMTReadoutRecordCollection coll_type;
00189   typedef L1MuGMTReadoutRecord           cand_type;
00190   static inline int de_type() {return dedefs::GMTrdt;}
00191 };
00192 
00193 template<> 
00194 struct DEtrait<DecisionWord> {
00195   typedef DecisionWord coll_type;
00196   typedef bool         cand_type;
00197   static inline int de_type() {return dedefs::GTdword;}
00198 };
00199 
00200 #endif

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