00001 #ifndef DE_TRAIT_H
00002 #define DE_TRAIT_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
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
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