00001 #ifndef L1Trigger_L1ParticleMap_h
00002 #define L1Trigger_L1ParticleMap_h
00003
00004
00005
00006
00007
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107 #include <string>
00108
00109
00110 #include "DataFormats/L1Trigger/interface/L1EmParticleFwd.h"
00111 #include "DataFormats/L1Trigger/interface/L1JetParticleFwd.h"
00112 #include "DataFormats/L1Trigger/interface/L1MuonParticleFwd.h"
00113 #include "DataFormats/L1Trigger/interface/L1EtMissParticle.h"
00114 #include "DataFormats/L1Trigger/interface/L1EtMissParticleFwd.h"
00115
00116
00117
00118 namespace l1extra {
00119
00120 class L1ParticleMap
00121 {
00122
00123 public:
00124 enum L1ObjectType
00125 {
00126 kEM,
00127 kJet,
00128 kMuon,
00129 kEtMiss,
00130 kEtTotal,
00131 kEtHad,
00132 kNumOfL1ObjectTypes
00133 } ;
00134
00135
00136
00137
00138
00139
00140
00141 enum L1TriggerType
00142 {
00143 kSingleMu3,
00144 kSingleMu5,
00145 kSingleMu7,
00146 kSingleMu10,
00147 kSingleMu14,
00148 kSingleMu20,
00149 kSingleMu25,
00150 kSingleIsoEG5,
00151 kSingleIsoEG8,
00152 kSingleIsoEG10,
00153 kSingleIsoEG12,
00154 kSingleIsoEG15,
00155 kSingleIsoEG20,
00156 kSingleIsoEG25,
00157 kSingleEG5,
00158 kSingleEG8,
00159 kSingleEG10,
00160 kSingleEG12,
00161 kSingleEG15,
00162 kSingleEG20,
00163 kSingleEG25,
00164 kSingleJet15,
00165 kSingleJet20,
00166 kSingleJet30,
00167 kSingleJet50,
00168 kSingleJet70,
00169 kSingleJet100,
00170 kSingleJet150,
00171 kSingleJet200,
00172 kSingleTauJet10,
00173 kSingleTauJet20,
00174 kSingleTauJet30,
00175 kSingleTauJet35,
00176 kSingleTauJet40,
00177 kSingleTauJet60,
00178 kSingleTauJet80,
00179 kSingleTauJet100,
00180 kHTT100,
00181 kHTT200,
00182 kHTT250,
00183 kHTT300,
00184 kHTT400,
00185 kHTT500,
00186 kETM10,
00187 kETM15,
00188 kETM20,
00189 kETM30,
00190 kETM40,
00191 kETM50,
00192 kETM60,
00193 kETT60,
00194 kDoubleMu3,
00195 kDoubleIsoEG8,
00196 kDoubleIsoEG10,
00197 kDoubleEG5,
00198 kDoubleEG10,
00199 kDoubleEG15,
00200 kDoubleJet70,
00201 kDoubleJet100,
00202 kDoubleTauJet20,
00203 kDoubleTauJet30,
00204 kDoubleTauJet35,
00205 kDoubleTauJet40,
00206 kMu3_IsoEG5,
00207 kMu5_IsoEG10,
00208 kMu3_EG12,
00209 kMu3_Jet15,
00210 kMu5_Jet15,
00211 kMu3_Jet70,
00212 kMu5_Jet20,
00213 kMu5_TauJet20,
00214 kMu5_TauJet30,
00215 kIsoEG10_EG10,
00216 kIsoEG10_Jet15,
00217 kIsoEG10_Jet20,
00218 kIsoEG10_Jet30,
00219 kIsoEG10_Jet70,
00220 kIsoEG10_TauJet20,
00221 kIsoEG10_TauJet30,
00222 kEG10_Jet15,
00223 kEG12_Jet20,
00224 kEG12_Jet70,
00225 kEG12_TauJet40,
00226 kJet70_TauJet40,
00227 kMu3_HTT200,
00228 kIsoEG10_HTT200,
00229 kEG12_HTT200,
00230 kJet70_HTT200,
00231 kTauJet40_HTT200,
00232 kMu3_ETM30,
00233 kIsoEG10_ETM30,
00234 kEG12_ETM30,
00235 kJet70_ETM40,
00236 kTauJet20_ETM20,
00237 kTauJet30_ETM30,
00238 kTauJet30_ETM40,
00239 kHTT100_ETM30,
00240 kTripleMu3,
00241 kTripleIsoEG5,
00242 kTripleEG10,
00243 kTripleJet50,
00244 kTripleTauJet40,
00245 kDoubleMu3_IsoEG5,
00246 kDoubleMu3_EG10,
00247 kDoubleIsoEG5_Mu3,
00248 kDoubleEG10_Mu3,
00249 kDoubleMu3_HTT200,
00250 kDoubleIsoEG5_HTT200,
00251 kDoubleEG10_HTT200,
00252 kDoubleJet50_HTT200,
00253 kDoubleTauJet40_HTT200,
00254 kDoubleMu3_ETM20,
00255 kDoubleIsoEG5_ETM20,
00256 kDoubleEG10_ETM20,
00257 kDoubleJet50_ETM20,
00258 kDoubleTauJet40_ETM20,
00259 kQuadJet30,
00260 kExclusiveDoubleIsoEG4,
00261 kExclusiveDoubleJet60,
00262 kExclusiveJet25_Gap_Jet25,
00263 kIsoEG10_Jet20_ForJet10,
00264 kMinBias_HTT10,
00265 kZeroBias,
00266 kNumOfL1TriggerTypes
00267 } ;
00268
00269 typedef std::vector< unsigned int > L1IndexCombo ;
00270 typedef std::vector< L1IndexCombo > L1IndexComboVector ;
00271 typedef std::vector< L1ObjectType > L1ObjectTypeVector ;
00272
00273 L1ParticleMap();
00274 L1ParticleMap(
00275 L1TriggerType triggerType,
00276 bool triggerDecision,
00277 const L1ObjectTypeVector& objectTypes,
00278 const L1EmParticleVectorRef& emParticles =
00279 L1EmParticleVectorRef(),
00280 const L1JetParticleVectorRef& jetParticles =
00281 L1JetParticleVectorRef(),
00282 const L1MuonParticleVectorRef& muonParticles =
00283 L1MuonParticleVectorRef(),
00284 const L1EtMissParticleRefProd& etMissParticle =
00285 L1EtMissParticleRefProd(),
00286 const L1IndexComboVector& indexCombos =
00287 L1IndexComboVector()
00288 ) ;
00289
00290 virtual ~L1ParticleMap();
00291
00292
00293 L1TriggerType triggerType() const
00294 { return triggerType_ ; }
00295
00296 const std::string& triggerName() const
00297 { return triggerName( triggerType_ ) ; }
00298
00299 bool triggerDecision() const
00300 { return triggerDecision_ ; }
00301
00302
00303
00304
00305 const L1ObjectTypeVector& objectTypes() const
00306 { return objectTypes_ ; }
00307
00308
00309 int numOfObjects() const
00310 { return objectTypes_.size() ; }
00311
00312 const L1EmParticleVectorRef& emParticles() const
00313 { return emParticles_ ; }
00314
00315 const L1JetParticleVectorRef& jetParticles() const
00316 { return jetParticles_ ; }
00317
00318 const L1MuonParticleVectorRef& muonParticles() const
00319 { return muonParticles_ ; }
00320
00321 const L1EtMissParticleRefProd& etMissParticle() const
00322 { return etMissParticle_ ; }
00323
00324
00325
00326
00327
00328 const L1IndexComboVector& indexCombos() const ;
00329
00330
00331
00332
00333
00334 const reco::LeafCandidate* candidateInCombo(
00335 int aIndexInCombo, const L1IndexCombo& aCombo ) const ;
00336
00337 const L1EmParticle* emParticleInCombo(
00338 int aIndexInCombo, const L1IndexCombo& aCombo ) const ;
00339
00340 const L1JetParticle* jetParticleInCombo(
00341 int aIndexInCombo, const L1IndexCombo& aCombo ) const ;
00342
00343 const L1MuonParticle* muonParticleInCombo(
00344 int aIndexInCombo, const L1IndexCombo& aCombo ) const ;
00345
00346
00347 const L1EtMissParticle* etMissParticleInCombo(
00348 int aIndexInCombo, const L1IndexCombo& aCombo ) const ;
00349
00350
00351
00352 std::vector< const reco::LeafCandidate* > candidateCombo(
00353 const L1IndexCombo& aCombo ) const ;
00354
00355
00356 static const std::string& triggerName( L1TriggerType type ) ;
00357 static L1TriggerType triggerType( const std::string& name ) ;
00358 static bool objectTypeIsGlobal( L1ObjectType type ) ;
00359
00360
00361
00362 private:
00363
00364
00365
00366
00367
00368
00369
00370 L1TriggerType triggerType_ ;
00371
00372 bool triggerDecision_ ;
00373
00374
00375
00376 L1ObjectTypeVector objectTypes_ ;
00377
00378
00379
00380 L1EmParticleVectorRef emParticles_ ;
00381 L1JetParticleVectorRef jetParticles_ ;
00382 L1MuonParticleVectorRef muonParticles_ ;
00383
00384
00385
00386 L1EtMissParticleRefProd etMissParticle_ ;
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397 mutable L1IndexComboVector indexCombos_ ;
00398
00399
00400 static std::string triggerNames_[ kNumOfL1TriggerTypes ] ;
00401 };
00402
00403 }
00404
00405 #endif