00001
00002
00003
00004
00005
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include <memory>
00018
00019
00020 #include "L1Trigger/L1ExtraFromDigis/interface/L1ExtraParticleMapProd.h"
00021
00022
00023
00024 #include "DataFormats/Common/interface/Handle.h"
00025 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00026
00027 #include "CLHEP/Random/RandFlat.h"
00028
00029 static const int kDefault = -1 ;
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 L1ExtraParticleMapProd::L1ExtraParticleMapProd(
00043 const edm::ParameterSet& iConfig)
00044 : muonSource_( iConfig.getParameter< edm::InputTag >(
00045 "muonSource" ) ),
00046 isoEmSource_( iConfig.getParameter< edm::InputTag >(
00047 "isolatedEmSource" ) ),
00048 nonIsoEmSource_( iConfig.getParameter< edm::InputTag >(
00049 "nonIsolatedEmSource" ) ),
00050 cenJetSource_( iConfig.getParameter< edm::InputTag >(
00051 "centralJetSource" ) ),
00052 forJetSource_( iConfig.getParameter< edm::InputTag >(
00053 "forwardJetSource" ) ),
00054 tauJetSource_( iConfig.getParameter< edm::InputTag >(
00055 "tauJetSource" ) ),
00056 etMissSource_( iConfig.getParameter< edm::InputTag >(
00057 "etMissSource" ) ),
00058 htMissSource_( iConfig.getParameter< edm::InputTag >(
00059 "htMissSource" ) )
00060 {
00061 using namespace l1extra ;
00062
00063
00064 produces< L1ParticleMapCollection >() ;
00065 produces< L1GlobalTriggerReadoutRecord >();
00066
00067
00068 for( int i = 0 ; i < L1ParticleMap::kNumOfL1TriggerTypes ; ++i )
00069 {
00070 singleThresholds_[ i ] = 0. ;
00071 doubleThresholds_[ i ].first = 0. ;
00072 doubleThresholds_[ i ].second = 0. ;
00073 prescaleCounters_[ i ] = 1 ;
00074 prescales_[ i ] = 1 ;
00075 }
00076
00077
00078
00079 singleThresholds_[ L1ParticleMap::kSingleMu3 ] =
00080 iConfig.getParameter< double >( "L1_SingleMu3_thresh" ) ;
00081 prescales_[ L1ParticleMap::kSingleMu3 ] =
00082 iConfig.getParameter< int >( "L1_SingleMu3_prescale" ) ;
00083 singleThresholds_[ L1ParticleMap::kSingleMu5 ] =
00084 iConfig.getParameter< double >( "L1_SingleMu5_thresh" ) ;
00085 prescales_[ L1ParticleMap::kSingleMu5 ] =
00086 iConfig.getParameter< int >( "L1_SingleMu5_prescale" ) ;
00087 singleThresholds_[ L1ParticleMap::kSingleMu7 ] =
00088 iConfig.getParameter< double >( "L1_SingleMu7_thresh" ) ;
00089 prescales_[ L1ParticleMap::kSingleMu7 ] =
00090 iConfig.getParameter< int >( "L1_SingleMu7_prescale" ) ;
00091 singleThresholds_[ L1ParticleMap::kSingleMu10 ] =
00092 iConfig.getParameter< double >( "L1_SingleMu10_thresh" ) ;
00093 prescales_[ L1ParticleMap::kSingleMu10 ] =
00094 iConfig.getParameter< int >( "L1_SingleMu10_prescale" ) ;
00095 singleThresholds_[ L1ParticleMap::kSingleMu14 ] =
00096 iConfig.getParameter< double >( "L1_SingleMu14_thresh" ) ;
00097 prescales_[ L1ParticleMap::kSingleMu14 ] =
00098 iConfig.getParameter< int >( "L1_SingleMu14_prescale" ) ;
00099 singleThresholds_[ L1ParticleMap::kSingleMu20 ] =
00100 iConfig.getParameter< double >( "L1_SingleMu20_thresh" ) ;
00101 prescales_[ L1ParticleMap::kSingleMu20 ] =
00102 iConfig.getParameter< int >( "L1_SingleMu20_prescale" ) ;
00103 singleThresholds_[ L1ParticleMap::kSingleMu25 ] =
00104 iConfig.getParameter< double >( "L1_SingleMu25_thresh" ) ;
00105 prescales_[ L1ParticleMap::kSingleMu25 ] =
00106 iConfig.getParameter< int >( "L1_SingleMu25_prescale" ) ;
00107
00108 singleThresholds_[ L1ParticleMap::kSingleIsoEG5 ] =
00109 iConfig.getParameter< double >( "L1_SingleIsoEG5_thresh" ) ;
00110 prescales_[ L1ParticleMap::kSingleIsoEG5 ] =
00111 iConfig.getParameter< int >( "L1_SingleIsoEG5_prescale" ) ;
00112 singleThresholds_[ L1ParticleMap::kSingleIsoEG8 ] =
00113 iConfig.getParameter< double >( "L1_SingleIsoEG8_thresh" ) ;
00114 prescales_[ L1ParticleMap::kSingleIsoEG8 ] =
00115 iConfig.getParameter< int >( "L1_SingleIsoEG8_prescale" ) ;
00116 singleThresholds_[ L1ParticleMap::kSingleIsoEG10 ] =
00117 iConfig.getParameter< double >( "L1_SingleIsoEG10_thresh" ) ;
00118 prescales_[ L1ParticleMap::kSingleIsoEG10 ] =
00119 iConfig.getParameter< int >( "L1_SingleIsoEG10_prescale" ) ;
00120 singleThresholds_[ L1ParticleMap::kSingleIsoEG12 ] =
00121 iConfig.getParameter< double >( "L1_SingleIsoEG12_thresh" ) ;
00122 prescales_[ L1ParticleMap::kSingleIsoEG12 ] =
00123 iConfig.getParameter< int >( "L1_SingleIsoEG12_prescale" ) ;
00124 singleThresholds_[ L1ParticleMap::kSingleIsoEG15 ] =
00125 iConfig.getParameter< double >( "L1_SingleIsoEG15_thresh" ) ;
00126 prescales_[ L1ParticleMap::kSingleIsoEG15 ] =
00127 iConfig.getParameter< int >( "L1_SingleIsoEG15_prescale" ) ;
00128 singleThresholds_[ L1ParticleMap::kSingleIsoEG20 ] =
00129 iConfig.getParameter< double >( "L1_SingleIsoEG20_thresh" ) ;
00130 prescales_[ L1ParticleMap::kSingleIsoEG20 ] =
00131 iConfig.getParameter< int >( "L1_SingleIsoEG20_prescale" ) ;
00132 singleThresholds_[ L1ParticleMap::kSingleIsoEG25 ] =
00133 iConfig.getParameter< double >( "L1_SingleIsoEG25_thresh" ) ;
00134 prescales_[ L1ParticleMap::kSingleIsoEG25 ] =
00135 iConfig.getParameter< int >( "L1_SingleIsoEG25_prescale" ) ;
00136
00137 singleThresholds_[ L1ParticleMap::kSingleEG5 ] =
00138 iConfig.getParameter< double >( "L1_SingleEG5_thresh" ) ;
00139 prescales_[ L1ParticleMap::kSingleEG5 ] =
00140 iConfig.getParameter< int >( "L1_SingleEG5_prescale" ) ;
00141 singleThresholds_[ L1ParticleMap::kSingleEG8 ] =
00142 iConfig.getParameter< double >( "L1_SingleEG8_thresh" ) ;
00143 prescales_[ L1ParticleMap::kSingleEG8 ] =
00144 iConfig.getParameter< int >( "L1_SingleEG8_prescale" ) ;
00145 singleThresholds_[ L1ParticleMap::kSingleEG10 ] =
00146 iConfig.getParameter< double >( "L1_SingleEG10_thresh" ) ;
00147 prescales_[ L1ParticleMap::kSingleEG10 ] =
00148 iConfig.getParameter< int >( "L1_SingleEG10_prescale" ) ;
00149 singleThresholds_[ L1ParticleMap::kSingleEG12 ] =
00150 iConfig.getParameter< double >( "L1_SingleEG12_thresh" ) ;
00151 prescales_[ L1ParticleMap::kSingleEG12 ] =
00152 iConfig.getParameter< int >( "L1_SingleEG12_prescale" ) ;
00153 singleThresholds_[ L1ParticleMap::kSingleEG15 ] =
00154 iConfig.getParameter< double >( "L1_SingleEG15_thresh" ) ;
00155 prescales_[ L1ParticleMap::kSingleEG15 ] =
00156 iConfig.getParameter< int >( "L1_SingleEG15_prescale" ) ;
00157 singleThresholds_[ L1ParticleMap::kSingleEG20 ] =
00158 iConfig.getParameter< double >( "L1_SingleEG20_thresh" ) ;
00159 prescales_[ L1ParticleMap::kSingleEG20 ] =
00160 iConfig.getParameter< int >( "L1_SingleEG20_prescale" ) ;
00161 singleThresholds_[ L1ParticleMap::kSingleEG25 ] =
00162 iConfig.getParameter< double >( "L1_SingleEG25_thresh" ) ;
00163 prescales_[ L1ParticleMap::kSingleEG25 ] =
00164 iConfig.getParameter< int >( "L1_SingleEG25_prescale" ) ;
00165
00166 singleThresholds_[ L1ParticleMap::kSingleJet15 ] =
00167 iConfig.getParameter< double >( "L1_SingleJet15_thresh" ) ;
00168 prescales_[ L1ParticleMap::kSingleJet15 ] =
00169 iConfig.getParameter< int >( "L1_SingleJet15_prescale" ) ;
00170 singleThresholds_[ L1ParticleMap::kSingleJet20 ] =
00171 iConfig.getParameter< double >( "L1_SingleJet20_thresh" ) ;
00172 prescales_[ L1ParticleMap::kSingleJet20 ] =
00173 iConfig.getParameter< int >( "L1_SingleJet20_prescale" ) ;
00174 singleThresholds_[ L1ParticleMap::kSingleJet30 ] =
00175 iConfig.getParameter< double >( "L1_SingleJet30_thresh" ) ;
00176 prescales_[ L1ParticleMap::kSingleJet30 ] =
00177 iConfig.getParameter< int >( "L1_SingleJet30_prescale" ) ;
00178 singleThresholds_[ L1ParticleMap::kSingleJet50 ] =
00179 iConfig.getParameter< double >( "L1_SingleJet50_thresh" ) ;
00180 prescales_[ L1ParticleMap::kSingleJet50 ] =
00181 iConfig.getParameter< int >( "L1_SingleJet50_prescale" ) ;
00182 singleThresholds_[ L1ParticleMap::kSingleJet70 ] =
00183 iConfig.getParameter< double >( "L1_SingleJet70_thresh" ) ;
00184 prescales_[ L1ParticleMap::kSingleJet70 ] =
00185 iConfig.getParameter< int >( "L1_SingleJet70_prescale" ) ;
00186 singleThresholds_[ L1ParticleMap::kSingleJet100 ] =
00187 iConfig.getParameter< double >( "L1_SingleJet100_thresh" ) ;
00188 prescales_[ L1ParticleMap::kSingleJet100 ] =
00189 iConfig.getParameter< int >( "L1_SingleJet100_prescale" ) ;
00190 singleThresholds_[ L1ParticleMap::kSingleJet150 ] =
00191 iConfig.getParameter< double >( "L1_SingleJet150_thresh" ) ;
00192 prescales_[ L1ParticleMap::kSingleJet150 ] =
00193 iConfig.getParameter< int >( "L1_SingleJet150_prescale" ) ;
00194 singleThresholds_[ L1ParticleMap::kSingleJet200 ] =
00195 iConfig.getParameter< double >( "L1_SingleJet200_thresh" ) ;
00196 prescales_[ L1ParticleMap::kSingleJet200 ] =
00197 iConfig.getParameter< int >( "L1_SingleJet200_prescale" ) ;
00198
00199 singleThresholds_[ L1ParticleMap::kSingleTauJet10 ] =
00200 iConfig.getParameter< double >( "L1_SingleTauJet10_thresh" ) ;
00201 prescales_[ L1ParticleMap::kSingleTauJet10 ] =
00202 iConfig.getParameter< int >( "L1_SingleTauJet10_prescale" ) ;
00203 singleThresholds_[ L1ParticleMap::kSingleTauJet20 ] =
00204 iConfig.getParameter< double >( "L1_SingleTauJet20_thresh" ) ;
00205 prescales_[ L1ParticleMap::kSingleTauJet20 ] =
00206 iConfig.getParameter< int >( "L1_SingleTauJet20_prescale" ) ;
00207 singleThresholds_[ L1ParticleMap::kSingleTauJet30 ] =
00208 iConfig.getParameter< double >( "L1_SingleTauJet30_thresh" ) ;
00209 prescales_[ L1ParticleMap::kSingleTauJet30 ] =
00210 iConfig.getParameter< int >( "L1_SingleTauJet30_prescale" ) ;
00211 singleThresholds_[ L1ParticleMap::kSingleTauJet35 ] =
00212 iConfig.getParameter< double >( "L1_SingleTauJet35_thresh" ) ;
00213 prescales_[ L1ParticleMap::kSingleTauJet35 ] =
00214 iConfig.getParameter< int >( "L1_SingleTauJet35_prescale" ) ;
00215 singleThresholds_[ L1ParticleMap::kSingleTauJet40 ] =
00216 iConfig.getParameter< double >( "L1_SingleTauJet40_thresh" ) ;
00217 prescales_[ L1ParticleMap::kSingleTauJet40 ] =
00218 iConfig.getParameter< int >( "L1_SingleTauJet40_prescale" ) ;
00219 singleThresholds_[ L1ParticleMap::kSingleTauJet60 ] =
00220 iConfig.getParameter< double >( "L1_SingleTauJet60_thresh" ) ;
00221 prescales_[ L1ParticleMap::kSingleTauJet60 ] =
00222 iConfig.getParameter< int >( "L1_SingleTauJet60_prescale" ) ;
00223 singleThresholds_[ L1ParticleMap::kSingleTauJet80 ] =
00224 iConfig.getParameter< double >( "L1_SingleTauJet80_thresh" ) ;
00225 prescales_[ L1ParticleMap::kSingleTauJet80 ] =
00226 iConfig.getParameter< int >( "L1_SingleTauJet80_prescale" ) ;
00227 singleThresholds_[ L1ParticleMap::kSingleTauJet100 ] =
00228 iConfig.getParameter< double >( "L1_SingleTauJet100_thresh" ) ;
00229 prescales_[ L1ParticleMap::kSingleTauJet100 ] =
00230 iConfig.getParameter< int >( "L1_SingleTauJet100_prescale" ) ;
00231
00232 singleThresholds_[ L1ParticleMap::kHTT100 ] =
00233 iConfig.getParameter< double >( "L1_HTT100_thresh" ) ;
00234 prescales_[ L1ParticleMap::kHTT100 ] =
00235 iConfig.getParameter< int >( "L1_HTT100_prescale" ) ;
00236 singleThresholds_[ L1ParticleMap::kHTT200 ] =
00237 iConfig.getParameter< double >( "L1_HTT200_thresh" ) ;
00238 prescales_[ L1ParticleMap::kHTT200 ] =
00239 iConfig.getParameter< int >( "L1_HTT200_prescale" ) ;
00240 singleThresholds_[ L1ParticleMap::kHTT250 ] =
00241 iConfig.getParameter< double >( "L1_HTT250_thresh" ) ;
00242 prescales_[ L1ParticleMap::kHTT250 ] =
00243 iConfig.getParameter< int >( "L1_HTT250_prescale" ) ;
00244 singleThresholds_[ L1ParticleMap::kHTT300 ] =
00245 iConfig.getParameter< double >( "L1_HTT300_thresh" ) ;
00246 prescales_[ L1ParticleMap::kHTT300 ] =
00247 iConfig.getParameter< int >( "L1_HTT300_prescale" ) ;
00248 singleThresholds_[ L1ParticleMap::kHTT400 ] =
00249 iConfig.getParameter< double >( "L1_HTT400_thresh" ) ;
00250 prescales_[ L1ParticleMap::kHTT400 ] =
00251 iConfig.getParameter< int >( "L1_HTT400_prescale" ) ;
00252 singleThresholds_[ L1ParticleMap::kHTT500 ] =
00253 iConfig.getParameter< double >( "L1_HTT500_thresh" ) ;
00254 prescales_[ L1ParticleMap::kHTT500 ] =
00255 iConfig.getParameter< int >( "L1_HTT500_prescale" ) ;
00256
00257 singleThresholds_[ L1ParticleMap::kETM10 ] =
00258 iConfig.getParameter< double >( "L1_ETM10_thresh" ) ;
00259 prescales_[ L1ParticleMap::kETM10 ] =
00260 iConfig.getParameter< int >( "L1_ETM10_prescale" ) ;
00261 singleThresholds_[ L1ParticleMap::kETM15 ] =
00262 iConfig.getParameter< double >( "L1_ETM15_thresh" ) ;
00263 prescales_[ L1ParticleMap::kETM15 ] =
00264 iConfig.getParameter< int >( "L1_ETM15_prescale" ) ;
00265 singleThresholds_[ L1ParticleMap::kETM20 ] =
00266 iConfig.getParameter< double >( "L1_ETM20_thresh" ) ;
00267 prescales_[ L1ParticleMap::kETM20 ] =
00268 iConfig.getParameter< int >( "L1_ETM20_prescale" ) ;
00269 singleThresholds_[ L1ParticleMap::kETM30 ] =
00270 iConfig.getParameter< double >( "L1_ETM30_thresh" ) ;
00271 prescales_[ L1ParticleMap::kETM30 ] =
00272 iConfig.getParameter< int >( "L1_ETM30_prescale" ) ;
00273 singleThresholds_[ L1ParticleMap::kETM40 ] =
00274 iConfig.getParameter< double >( "L1_ETM40_thresh" ) ;
00275 prescales_[ L1ParticleMap::kETM40 ] =
00276 iConfig.getParameter< int >( "L1_ETM40_prescale" ) ;
00277 singleThresholds_[ L1ParticleMap::kETM50 ] =
00278 iConfig.getParameter< double >( "L1_ETM50_thresh" ) ;
00279 prescales_[ L1ParticleMap::kETM50 ] =
00280 iConfig.getParameter< int >( "L1_ETM50_prescale" ) ;
00281 singleThresholds_[ L1ParticleMap::kETM60 ] =
00282 iConfig.getParameter< double >( "L1_ETM60_thresh" ) ;
00283 prescales_[ L1ParticleMap::kETM60 ] =
00284 iConfig.getParameter< int >( "L1_ETM60_prescale" ) ;
00285
00286 singleThresholds_[ L1ParticleMap::kETT60 ] =
00287 iConfig.getParameter< double >( "L1_ETT60_thresh" ) ;
00288 prescales_[ L1ParticleMap::kETT60 ] =
00289 iConfig.getParameter< int >( "L1_ETT60_prescale" ) ;
00290
00291
00292
00293 singleThresholds_[ L1ParticleMap::kDoubleMu3 ] =
00294 iConfig.getParameter< double >( "L1_DoubleMu3_thresh" ) ;
00295 prescales_[ L1ParticleMap::kDoubleMu3 ] =
00296 iConfig.getParameter< int >( "L1_DoubleMu3_prescale" ) ;
00297
00298 singleThresholds_[ L1ParticleMap::kDoubleIsoEG8 ] =
00299 iConfig.getParameter< double >( "L1_DoubleIsoEG8_thresh" ) ;
00300 prescales_[ L1ParticleMap::kDoubleIsoEG8 ] =
00301 iConfig.getParameter< int >( "L1_DoubleIsoEG8_prescale" ) ;
00302 singleThresholds_[ L1ParticleMap::kDoubleIsoEG10 ] =
00303 iConfig.getParameter< double >( "L1_DoubleIsoEG10_thresh" ) ;
00304 prescales_[ L1ParticleMap::kDoubleIsoEG10 ] =
00305 iConfig.getParameter< int >( "L1_DoubleIsoEG10_prescale" ) ;
00306
00307 singleThresholds_[ L1ParticleMap::kDoubleEG5 ] =
00308 iConfig.getParameter< double >( "L1_DoubleEG5_thresh" ) ;
00309 prescales_[ L1ParticleMap::kDoubleEG5 ] =
00310 iConfig.getParameter< int >( "L1_DoubleEG5_prescale" ) ;
00311 singleThresholds_[ L1ParticleMap::kDoubleEG10 ] =
00312 iConfig.getParameter< double >( "L1_DoubleEG10_thresh" ) ;
00313 prescales_[ L1ParticleMap::kDoubleEG10 ] =
00314 iConfig.getParameter< int >( "L1_DoubleEG10_prescale" ) ;
00315 singleThresholds_[ L1ParticleMap::kDoubleEG15 ] =
00316 iConfig.getParameter< double >( "L1_DoubleEG15_thresh" ) ;
00317 prescales_[ L1ParticleMap::kDoubleEG15 ] =
00318 iConfig.getParameter< int >( "L1_DoubleEG15_prescale" ) ;
00319
00320 singleThresholds_[ L1ParticleMap::kDoubleJet70 ] =
00321 iConfig.getParameter< double >( "L1_DoubleJet70_thresh" ) ;
00322 prescales_[ L1ParticleMap::kDoubleJet70 ] =
00323 iConfig.getParameter< int >( "L1_DoubleJet70_prescale" ) ;
00324 singleThresholds_[ L1ParticleMap::kDoubleJet100 ] =
00325 iConfig.getParameter< double >( "L1_DoubleJet100_thresh" ) ;
00326 prescales_[ L1ParticleMap::kDoubleJet100 ] =
00327 iConfig.getParameter< int >( "L1_DoubleJet100_prescale" ) ;
00328
00329 singleThresholds_[ L1ParticleMap::kDoubleTauJet20 ] =
00330 iConfig.getParameter< double >( "L1_DoubleTauJet20_thresh" ) ;
00331 prescales_[ L1ParticleMap::kDoubleTauJet20 ] =
00332 iConfig.getParameter< int >( "L1_DoubleTauJet20_prescale" ) ;
00333 singleThresholds_[ L1ParticleMap::kDoubleTauJet30 ] =
00334 iConfig.getParameter< double >( "L1_DoubleTauJet30_thresh" ) ;
00335 prescales_[ L1ParticleMap::kDoubleTauJet30 ] =
00336 iConfig.getParameter< int >( "L1_DoubleTauJet30_prescale" ) ;
00337 singleThresholds_[ L1ParticleMap::kDoubleTauJet35 ] =
00338 iConfig.getParameter< double >( "L1_DoubleTauJet35_thresh" ) ;
00339 prescales_[ L1ParticleMap::kDoubleTauJet35 ] =
00340 iConfig.getParameter< int >( "L1_DoubleTauJet35_prescale" ) ;
00341 singleThresholds_[ L1ParticleMap::kDoubleTauJet40 ] =
00342 iConfig.getParameter< double >( "L1_DoubleTauJet40_thresh" ) ;
00343 prescales_[ L1ParticleMap::kDoubleTauJet40 ] =
00344 iConfig.getParameter< int >( "L1_DoubleTauJet40_prescale" ) ;
00345
00346
00347
00348 doubleThresholds_[ L1ParticleMap::kMu3_IsoEG5 ].first =
00349 iConfig.getParameter< double >( "L1_Mu3_IsoEG5_thresh1" ) ;
00350 doubleThresholds_[ L1ParticleMap::kMu3_IsoEG5 ].second =
00351 iConfig.getParameter< double >( "L1_Mu3_IsoEG5_thresh2" ) ;
00352 prescales_[ L1ParticleMap::kMu3_IsoEG5 ] =
00353 iConfig.getParameter< int >( "L1_Mu3_IsoEG5_prescale" ) ;
00354 doubleThresholds_[ L1ParticleMap::kMu5_IsoEG10 ].first =
00355 iConfig.getParameter< double >( "L1_Mu5_IsoEG10_thresh1" ) ;
00356 doubleThresholds_[ L1ParticleMap::kMu5_IsoEG10 ].second =
00357 iConfig.getParameter< double >( "L1_Mu5_IsoEG10_thresh2" ) ;
00358 prescales_[ L1ParticleMap::kMu5_IsoEG10 ] =
00359 iConfig.getParameter< int >( "L1_Mu5_IsoEG10_prescale" ) ;
00360
00361 doubleThresholds_[ L1ParticleMap::kMu3_EG12 ].first =
00362 iConfig.getParameter< double >( "L1_Mu3_EG12_thresh1" ) ;
00363 doubleThresholds_[ L1ParticleMap::kMu3_EG12 ].second =
00364 iConfig.getParameter< double >( "L1_Mu3_EG12_thresh2" ) ;
00365 prescales_[ L1ParticleMap::kMu3_EG12 ] =
00366 iConfig.getParameter< int >( "L1_Mu3_EG12_prescale" ) ;
00367
00368 doubleThresholds_[ L1ParticleMap::kMu3_Jet15 ].first =
00369 iConfig.getParameter< double >( "L1_Mu3_Jet15_thresh1" ) ;
00370 doubleThresholds_[ L1ParticleMap::kMu3_Jet15 ].second =
00371 iConfig.getParameter< double >( "L1_Mu3_Jet15_thresh2" ) ;
00372 prescales_[ L1ParticleMap::kMu3_Jet15 ] =
00373 iConfig.getParameter< int >( "L1_Mu3_Jet15_prescale" ) ;
00374 doubleThresholds_[ L1ParticleMap::kMu5_Jet15 ].first =
00375 iConfig.getParameter< double >( "L1_Mu5_Jet15_thresh1" ) ;
00376 doubleThresholds_[ L1ParticleMap::kMu5_Jet15 ].second =
00377 iConfig.getParameter< double >( "L1_Mu5_Jet15_thresh2" ) ;
00378 prescales_[ L1ParticleMap::kMu5_Jet15 ] =
00379 iConfig.getParameter< int >( "L1_Mu5_Jet15_prescale" ) ;
00380 doubleThresholds_[ L1ParticleMap::kMu3_Jet70 ].first =
00381 iConfig.getParameter< double >( "L1_Mu3_Jet70_thresh1" ) ;
00382 doubleThresholds_[ L1ParticleMap::kMu3_Jet70 ].second =
00383 iConfig.getParameter< double >( "L1_Mu3_Jet70_thresh2" ) ;
00384 prescales_[ L1ParticleMap::kMu3_Jet70 ] =
00385 iConfig.getParameter< int >( "L1_Mu3_Jet70_prescale" ) ;
00386 doubleThresholds_[ L1ParticleMap::kMu5_Jet20 ].first =
00387 iConfig.getParameter< double >( "L1_Mu5_Jet20_thresh1" ) ;
00388 doubleThresholds_[ L1ParticleMap::kMu5_Jet20 ].second =
00389 iConfig.getParameter< double >( "L1_Mu5_Jet20_thresh2" ) ;
00390 prescales_[ L1ParticleMap::kMu5_Jet20 ] =
00391 iConfig.getParameter< int >( "L1_Mu5_Jet20_prescale" ) ;
00392
00393 doubleThresholds_[ L1ParticleMap::kMu5_TauJet20 ].first =
00394 iConfig.getParameter< double >( "L1_Mu5_TauJet20_thresh1" ) ;
00395 doubleThresholds_[ L1ParticleMap::kMu5_TauJet20 ].second =
00396 iConfig.getParameter< double >( "L1_Mu5_TauJet20_thresh2" ) ;
00397 prescales_[ L1ParticleMap::kMu5_TauJet20 ] =
00398 iConfig.getParameter< int >( "L1_Mu5_TauJet20_prescale" ) ;
00399 doubleThresholds_[ L1ParticleMap::kMu5_TauJet30 ].first =
00400 iConfig.getParameter< double >( "L1_Mu5_TauJet30_thresh1" ) ;
00401 doubleThresholds_[ L1ParticleMap::kMu5_TauJet30 ].second =
00402 iConfig.getParameter< double >( "L1_Mu5_TauJet30_thresh2" ) ;
00403 prescales_[ L1ParticleMap::kMu5_TauJet30 ] =
00404 iConfig.getParameter< int >( "L1_Mu5_TauJet30_prescale" ) ;
00405
00406 doubleThresholds_[ L1ParticleMap::kIsoEG10_EG10 ].first =
00407 iConfig.getParameter< double >( "L1_IsoEG10_EG10_thresh1" ) ;
00408 doubleThresholds_[ L1ParticleMap::kIsoEG10_EG10 ].second =
00409 iConfig.getParameter< double >( "L1_IsoEG10_EG10_thresh2" ) ;
00410 prescales_[ L1ParticleMap::kIsoEG10_EG10 ] =
00411 iConfig.getParameter< int >( "L1_IsoEG10_EG10_prescale" ) ;
00412
00413 doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet15 ].first =
00414 iConfig.getParameter< double >( "L1_IsoEG10_Jet15_thresh1" ) ;
00415 doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet15 ].second =
00416 iConfig.getParameter< double >( "L1_IsoEG10_Jet15_thresh2" ) ;
00417 prescales_[ L1ParticleMap::kIsoEG10_Jet15 ] =
00418 iConfig.getParameter< int >( "L1_IsoEG10_Jet15_prescale" ) ;
00419 doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet30 ].first =
00420 iConfig.getParameter< double >( "L1_IsoEG10_Jet30_thresh1" ) ;
00421 doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet30 ].second =
00422 iConfig.getParameter< double >( "L1_IsoEG10_Jet30_thresh2" ) ;
00423 prescales_[ L1ParticleMap::kIsoEG10_Jet30 ] =
00424 iConfig.getParameter< int >( "L1_IsoEG10_Jet30_prescale" ) ;
00425 doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet20 ].first =
00426 iConfig.getParameter< double >( "L1_IsoEG10_Jet20_thresh1" ) ;
00427 doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet20 ].second =
00428 iConfig.getParameter< double >( "L1_IsoEG10_Jet20_thresh2" ) ;
00429 prescales_[ L1ParticleMap::kIsoEG10_Jet20 ] =
00430 iConfig.getParameter< int >( "L1_IsoEG10_Jet20_prescale" ) ;
00431 doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet70 ].first =
00432 iConfig.getParameter< double >( "L1_IsoEG10_Jet70_thresh1" ) ;
00433 doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet70 ].second =
00434 iConfig.getParameter< double >( "L1_IsoEG10_Jet70_thresh2" ) ;
00435 prescales_[ L1ParticleMap::kIsoEG10_Jet70 ] =
00436 iConfig.getParameter< int >( "L1_IsoEG10_Jet70_prescale" ) ;
00437
00438 doubleThresholds_[ L1ParticleMap::kIsoEG10_TauJet20 ].first =
00439 iConfig.getParameter< double >( "L1_IsoEG10_TauJet20_thresh1" ) ;
00440 doubleThresholds_[ L1ParticleMap::kIsoEG10_TauJet20 ].second =
00441 iConfig.getParameter< double >( "L1_IsoEG10_TauJet20_thresh2" ) ;
00442 prescales_[ L1ParticleMap::kIsoEG10_TauJet20 ] =
00443 iConfig.getParameter< int >( "L1_IsoEG10_TauJet20_prescale" ) ;
00444 doubleThresholds_[ L1ParticleMap::kIsoEG10_TauJet30 ].first =
00445 iConfig.getParameter< double >( "L1_IsoEG10_TauJet30_thresh1" ) ;
00446 doubleThresholds_[ L1ParticleMap::kIsoEG10_TauJet30 ].second =
00447 iConfig.getParameter< double >( "L1_IsoEG10_TauJet30_thresh2" ) ;
00448 prescales_[ L1ParticleMap::kIsoEG10_TauJet30 ] =
00449 iConfig.getParameter< int >( "L1_IsoEG10_TauJet30_prescale" ) ;
00450
00451 doubleThresholds_[ L1ParticleMap::kEG10_Jet15 ].first =
00452 iConfig.getParameter< double >( "L1_EG10_Jet15_thresh1" ) ;
00453 doubleThresholds_[ L1ParticleMap::kEG10_Jet15 ].second =
00454 iConfig.getParameter< double >( "L1_EG10_Jet15_thresh2" ) ;
00455 prescales_[ L1ParticleMap::kEG10_Jet15 ] =
00456 iConfig.getParameter< int >( "L1_EG10_Jet15_prescale" ) ;
00457 doubleThresholds_[ L1ParticleMap::kEG12_Jet20 ].first =
00458 iConfig.getParameter< double >( "L1_EG12_Jet20_thresh1" ) ;
00459 doubleThresholds_[ L1ParticleMap::kEG12_Jet20 ].second =
00460 iConfig.getParameter< double >( "L1_EG12_Jet20_thresh2" ) ;
00461 prescales_[ L1ParticleMap::kEG12_Jet20 ] =
00462 iConfig.getParameter< int >( "L1_EG12_Jet20_prescale" ) ;
00463 doubleThresholds_[ L1ParticleMap::kEG12_Jet70 ].first =
00464 iConfig.getParameter< double >( "L1_EG12_Jet70_thresh1" ) ;
00465 doubleThresholds_[ L1ParticleMap::kEG12_Jet70 ].second =
00466 iConfig.getParameter< double >( "L1_EG12_Jet70_thresh2" ) ;
00467 prescales_[ L1ParticleMap::kEG12_Jet70 ] =
00468 iConfig.getParameter< int >( "L1_EG12_Jet70_prescale" ) ;
00469
00470 doubleThresholds_[ L1ParticleMap::kEG12_TauJet40 ].first =
00471 iConfig.getParameter< double >( "L1_EG12_TauJet40_thresh1" ) ;
00472 doubleThresholds_[ L1ParticleMap::kEG12_TauJet40 ].second =
00473 iConfig.getParameter< double >( "L1_EG12_TauJet40_thresh2" ) ;
00474 prescales_[ L1ParticleMap::kEG12_TauJet40 ] =
00475 iConfig.getParameter< int >( "L1_EG12_TauJet40_prescale" ) ;
00476
00477 doubleThresholds_[ L1ParticleMap::kJet70_TauJet40 ].first =
00478 iConfig.getParameter< double >( "L1_Jet70_TauJet40_thresh1" ) ;
00479 doubleThresholds_[ L1ParticleMap::kJet70_TauJet40 ].second =
00480 iConfig.getParameter< double >( "L1_Jet70_TauJet40_thresh2" ) ;
00481 prescales_[ L1ParticleMap::kJet70_TauJet40 ] =
00482 iConfig.getParameter< int >( "L1_Jet70_TauJet40_prescale" ) ;
00483
00484 doubleThresholds_[ L1ParticleMap::kMu3_HTT200 ].first =
00485 iConfig.getParameter< double >( "L1_Mu3_HTT200_thresh1" ) ;
00486 doubleThresholds_[ L1ParticleMap::kMu3_HTT200 ].second =
00487 iConfig.getParameter< double >( "L1_Mu3_HTT200_thresh2" ) ;
00488 prescales_[ L1ParticleMap::kMu3_HTT200 ] =
00489 iConfig.getParameter< int >( "L1_Mu3_HTT200_prescale" ) ;
00490 doubleThresholds_[ L1ParticleMap::kIsoEG10_HTT200 ].first =
00491 iConfig.getParameter< double >( "L1_IsoEG10_HTT200_thresh1" ) ;
00492 doubleThresholds_[ L1ParticleMap::kIsoEG10_HTT200 ].second =
00493 iConfig.getParameter< double >( "L1_IsoEG10_HTT200_thresh2" ) ;
00494 prescales_[ L1ParticleMap::kIsoEG10_HTT200 ] =
00495 iConfig.getParameter< int >( "L1_IsoEG10_HTT200_prescale" ) ;
00496 doubleThresholds_[ L1ParticleMap::kEG12_HTT200 ].first =
00497 iConfig.getParameter< double >( "L1_EG12_HTT200_thresh1" ) ;
00498 doubleThresholds_[ L1ParticleMap::kEG12_HTT200 ].second =
00499 iConfig.getParameter< double >( "L1_EG12_HTT200_thresh2" ) ;
00500 prescales_[ L1ParticleMap::kEG12_HTT200 ] =
00501 iConfig.getParameter< int >( "L1_EG12_HTT200_prescale" ) ;
00502 doubleThresholds_[ L1ParticleMap::kJet70_HTT200 ].first =
00503 iConfig.getParameter< double >( "L1_Jet70_HTT200_thresh1" ) ;
00504 doubleThresholds_[ L1ParticleMap::kJet70_HTT200 ].second =
00505 iConfig.getParameter< double >( "L1_Jet70_HTT200_thresh2" ) ;
00506 prescales_[ L1ParticleMap::kJet70_HTT200 ] =
00507 iConfig.getParameter< int >( "L1_Jet70_HTT200_prescale" ) ;
00508 doubleThresholds_[ L1ParticleMap::kTauJet40_HTT200 ].first =
00509 iConfig.getParameter< double >( "L1_TauJet40_HTT200_thresh1" ) ;
00510 doubleThresholds_[ L1ParticleMap::kTauJet40_HTT200 ].second =
00511 iConfig.getParameter< double >( "L1_TauJet40_HTT200_thresh2" ) ;
00512 prescales_[ L1ParticleMap::kTauJet40_HTT200 ] =
00513 iConfig.getParameter< int >( "L1_TauJet40_HTT200_prescale" ) ;
00514
00515 doubleThresholds_[ L1ParticleMap::kMu3_ETM30 ].first =
00516 iConfig.getParameter< double >( "L1_Mu3_ETM30_thresh1" ) ;
00517 doubleThresholds_[ L1ParticleMap::kMu3_ETM30 ].second =
00518 iConfig.getParameter< double >( "L1_Mu3_ETM30_thresh2" ) ;
00519 prescales_[ L1ParticleMap::kMu3_ETM30 ] =
00520 iConfig.getParameter< int >( "L1_Mu3_ETM30_prescale" ) ;
00521 doubleThresholds_[ L1ParticleMap::kIsoEG10_ETM30 ].first =
00522 iConfig.getParameter< double >( "L1_IsoEG10_ETM30_thresh1" ) ;
00523 doubleThresholds_[ L1ParticleMap::kIsoEG10_ETM30 ].second =
00524 iConfig.getParameter< double >( "L1_IsoEG10_ETM30_thresh2" ) ;
00525 prescales_[ L1ParticleMap::kIsoEG10_ETM30 ] =
00526 iConfig.getParameter< int >( "L1_IsoEG10_ETM30_prescale" ) ;
00527 doubleThresholds_[ L1ParticleMap::kEG12_ETM30 ].first =
00528 iConfig.getParameter< double >( "L1_EG12_ETM30_thresh1" ) ;
00529 doubleThresholds_[ L1ParticleMap::kEG12_ETM30 ].second =
00530 iConfig.getParameter< double >( "L1_EG12_ETM30_thresh2" ) ;
00531 prescales_[ L1ParticleMap::kEG12_ETM30 ] =
00532 iConfig.getParameter< int >( "L1_EG12_ETM30_prescale" ) ;
00533 doubleThresholds_[ L1ParticleMap::kJet70_ETM40 ].first =
00534 iConfig.getParameter< double >( "L1_Jet70_ETM40_thresh1" ) ;
00535 doubleThresholds_[ L1ParticleMap::kJet70_ETM40 ].second =
00536 iConfig.getParameter< double >( "L1_Jet70_ETM40_thresh2" ) ;
00537 prescales_[ L1ParticleMap::kJet70_ETM40 ] =
00538 iConfig.getParameter< int >( "L1_Jet70_ETM40_prescale" ) ;
00539
00540 doubleThresholds_[ L1ParticleMap::kTauJet20_ETM20 ].first =
00541 iConfig.getParameter< double >( "L1_TauJet20_ETM20_thresh1" ) ;
00542 doubleThresholds_[ L1ParticleMap::kTauJet20_ETM20 ].second =
00543 iConfig.getParameter< double >( "L1_TauJet20_ETM20_thresh2" ) ;
00544 prescales_[ L1ParticleMap::kTauJet20_ETM20 ] =
00545 iConfig.getParameter< int >( "L1_TauJet20_ETM20_prescale" ) ;
00546 doubleThresholds_[ L1ParticleMap::kTauJet30_ETM30 ].first =
00547 iConfig.getParameter< double >( "L1_TauJet30_ETM30_thresh1" ) ;
00548 doubleThresholds_[ L1ParticleMap::kTauJet30_ETM30 ].second =
00549 iConfig.getParameter< double >( "L1_TauJet30_ETM30_thresh2" ) ;
00550 prescales_[ L1ParticleMap::kTauJet30_ETM30 ] =
00551 iConfig.getParameter< int >( "L1_TauJet30_ETM30_prescale" ) ;
00552 doubleThresholds_[ L1ParticleMap::kTauJet30_ETM40 ].first =
00553 iConfig.getParameter< double >( "L1_TauJet30_ETM40_thresh1" ) ;
00554 doubleThresholds_[ L1ParticleMap::kTauJet30_ETM40 ].second =
00555 iConfig.getParameter< double >( "L1_TauJet30_ETM40_thresh2" ) ;
00556 prescales_[ L1ParticleMap::kTauJet30_ETM40 ] =
00557 iConfig.getParameter< int >( "L1_TauJet30_ETM40_prescale" ) ;
00558
00559 doubleThresholds_[ L1ParticleMap::kHTT100_ETM30 ].first =
00560 iConfig.getParameter< double >( "L1_HTT100_ETM30_thresh1" ) ;
00561 doubleThresholds_[ L1ParticleMap::kHTT100_ETM30 ].second =
00562 iConfig.getParameter< double >( "L1_HTT100_ETM30_thresh2" ) ;
00563 prescales_[ L1ParticleMap::kHTT100_ETM30 ] =
00564 iConfig.getParameter< int >( "L1_HTT100_ETM30_prescale" ) ;
00565
00566
00567
00568 singleThresholds_[ L1ParticleMap::kTripleMu3 ] =
00569 iConfig.getParameter< double >( "L1_TripleMu3_thresh" ) ;
00570 prescales_[ L1ParticleMap::kTripleMu3 ] =
00571 iConfig.getParameter< int >( "L1_TripleMu3_prescale" ) ;
00572 singleThresholds_[ L1ParticleMap::kTripleIsoEG5 ] =
00573 iConfig.getParameter< double >( "L1_TripleIsoEG5_thresh" ) ;
00574 prescales_[ L1ParticleMap::kTripleIsoEG5 ] =
00575 iConfig.getParameter< int >( "L1_TripleIsoEG5_prescale" ) ;
00576 singleThresholds_[ L1ParticleMap::kTripleEG10 ] =
00577 iConfig.getParameter< double >( "L1_TripleEG10_thresh" ) ;
00578 prescales_[ L1ParticleMap::kTripleEG10 ] =
00579 iConfig.getParameter< int >( "L1_TripleEG10_prescale" ) ;
00580 singleThresholds_[ L1ParticleMap::kTripleJet50 ] =
00581 iConfig.getParameter< double >( "L1_TripleJet50_thresh" ) ;
00582 prescales_[ L1ParticleMap::kTripleJet50 ] =
00583 iConfig.getParameter< int >( "L1_TripleJet50_prescale" ) ;
00584 singleThresholds_[ L1ParticleMap::kTripleTauJet40 ] =
00585 iConfig.getParameter< double >( "L1_TripleTauJet40_thresh" ) ;
00586 prescales_[ L1ParticleMap::kTripleTauJet40 ] =
00587 iConfig.getParameter< int >( "L1_TripleTauJet40_prescale" ) ;
00588
00589
00590
00591 doubleThresholds_[ L1ParticleMap::kDoubleMu3_IsoEG5 ].first =
00592 iConfig.getParameter< double >( "L1_DoubleMu3_IsoEG5_thresh1" ) ;
00593 doubleThresholds_[ L1ParticleMap::kDoubleMu3_IsoEG5 ].second =
00594 iConfig.getParameter< double >( "L1_DoubleMu3_IsoEG5_thresh2" ) ;
00595 prescales_[ L1ParticleMap::kDoubleMu3_IsoEG5 ] =
00596 iConfig.getParameter< int >( "L1_DoubleMu3_IsoEG5_prescale" ) ;
00597 doubleThresholds_[ L1ParticleMap::kDoubleMu3_EG10 ].first =
00598 iConfig.getParameter< double >( "L1_DoubleMu3_EG10_thresh1" ) ;
00599 doubleThresholds_[ L1ParticleMap::kDoubleMu3_EG10 ].second =
00600 iConfig.getParameter< double >( "L1_DoubleMu3_EG10_thresh2" ) ;
00601 prescales_[ L1ParticleMap::kDoubleMu3_EG10 ] =
00602 iConfig.getParameter< int >( "L1_DoubleMu3_EG10_prescale" ) ;
00603 doubleThresholds_[ L1ParticleMap::kDoubleIsoEG5_Mu3 ].first =
00604 iConfig.getParameter< double >( "L1_DoubleIsoEG5_Mu3_thresh1" ) ;
00605 doubleThresholds_[ L1ParticleMap::kDoubleIsoEG5_Mu3 ].second =
00606 iConfig.getParameter< double >( "L1_DoubleIsoEG5_Mu3_thresh2" ) ;
00607 prescales_[ L1ParticleMap::kDoubleIsoEG5_Mu3 ] =
00608 iConfig.getParameter< int >( "L1_DoubleIsoEG5_Mu3_prescale" ) ;
00609 doubleThresholds_[ L1ParticleMap::kDoubleEG10_Mu3 ].first =
00610 iConfig.getParameter< double >( "L1_DoubleEG10_Mu3_thresh1" ) ;
00611 doubleThresholds_[ L1ParticleMap::kDoubleEG10_Mu3 ].second =
00612 iConfig.getParameter< double >( "L1_DoubleEG10_Mu3_thresh2" ) ;
00613 prescales_[ L1ParticleMap::kDoubleEG10_Mu3 ] =
00614 iConfig.getParameter< int >( "L1_DoubleEG10_Mu3_prescale" ) ;
00615
00616 doubleThresholds_[ L1ParticleMap::kDoubleMu3_HTT200 ].first =
00617 iConfig.getParameter< double >( "L1_DoubleMu3_HTT200_thresh1" ) ;
00618 doubleThresholds_[ L1ParticleMap::kDoubleMu3_HTT200 ].second =
00619 iConfig.getParameter< double >( "L1_DoubleMu3_HTT200_thresh2" ) ;
00620 prescales_[ L1ParticleMap::kDoubleMu3_HTT200 ] =
00621 iConfig.getParameter< int >( "L1_DoubleMu3_HTT200_prescale" ) ;
00622 doubleThresholds_[ L1ParticleMap::kDoubleIsoEG5_HTT200 ].first =
00623 iConfig.getParameter< double >( "L1_DoubleIsoEG5_HTT200_thresh1" ) ;
00624 doubleThresholds_[ L1ParticleMap::kDoubleIsoEG5_HTT200 ].second =
00625 iConfig.getParameter< double >( "L1_DoubleIsoEG5_HTT200_thresh2" ) ;
00626 prescales_[ L1ParticleMap::kDoubleIsoEG5_HTT200 ] =
00627 iConfig.getParameter< int >( "L1_DoubleIsoEG5_HTT200_prescale" ) ;
00628 doubleThresholds_[ L1ParticleMap::kDoubleEG10_HTT200 ].first =
00629 iConfig.getParameter< double >( "L1_DoubleEG10_HTT200_thresh1" ) ;
00630 doubleThresholds_[ L1ParticleMap::kDoubleEG10_HTT200 ].second =
00631 iConfig.getParameter< double >( "L1_DoubleEG10_HTT200_thresh2" ) ;
00632 prescales_[ L1ParticleMap::kDoubleEG10_HTT200 ] =
00633 iConfig.getParameter< int >( "L1_DoubleEG10_HTT200_prescale" ) ;
00634 doubleThresholds_[ L1ParticleMap::kDoubleJet50_HTT200 ].first =
00635 iConfig.getParameter< double >( "L1_DoubleJet50_HTT200_thresh1" ) ;
00636 doubleThresholds_[ L1ParticleMap::kDoubleJet50_HTT200 ].second =
00637 iConfig.getParameter< double >( "L1_DoubleJet50_HTT200_thresh2" ) ;
00638 prescales_[ L1ParticleMap::kDoubleJet50_HTT200 ] =
00639 iConfig.getParameter< int >( "L1_DoubleJet50_HTT200_prescale" ) ;
00640 doubleThresholds_[ L1ParticleMap::kDoubleTauJet40_HTT200 ].first =
00641 iConfig.getParameter< double >( "L1_DoubleTauJet40_HTT200_thresh1" ) ;
00642 doubleThresholds_[ L1ParticleMap::kDoubleTauJet40_HTT200 ].second =
00643 iConfig.getParameter< double >( "L1_DoubleTauJet40_HTT200_thresh2" ) ;
00644 prescales_[ L1ParticleMap::kDoubleTauJet40_HTT200 ] =
00645 iConfig.getParameter< int >( "L1_DoubleTauJet40_HTT200_prescale" ) ;
00646
00647 doubleThresholds_[ L1ParticleMap::kDoubleMu3_ETM20 ].first =
00648 iConfig.getParameter< double >( "L1_DoubleMu3_ETM20_thresh1" ) ;
00649 doubleThresholds_[ L1ParticleMap::kDoubleMu3_ETM20 ].second =
00650 iConfig.getParameter< double >( "L1_DoubleMu3_ETM20_thresh2" ) ;
00651 prescales_[ L1ParticleMap::kDoubleMu3_ETM20 ] =
00652 iConfig.getParameter< int >( "L1_DoubleMu3_ETM20_prescale" ) ;
00653 doubleThresholds_[ L1ParticleMap::kDoubleIsoEG5_ETM20 ].first =
00654 iConfig.getParameter< double >( "L1_DoubleIsoEG5_ETM20_thresh1" ) ;
00655 doubleThresholds_[ L1ParticleMap::kDoubleIsoEG5_ETM20 ].second =
00656 iConfig.getParameter< double >( "L1_DoubleIsoEG5_ETM20_thresh2" ) ;
00657 prescales_[ L1ParticleMap::kDoubleIsoEG5_ETM20 ] =
00658 iConfig.getParameter< int >( "L1_DoubleIsoEG5_ETM20_prescale" ) ;
00659 doubleThresholds_[ L1ParticleMap::kDoubleEG10_ETM20 ].first =
00660 iConfig.getParameter< double >( "L1_DoubleEG10_ETM20_thresh1" ) ;
00661 doubleThresholds_[ L1ParticleMap::kDoubleEG10_ETM20 ].second =
00662 iConfig.getParameter< double >( "L1_DoubleEG10_ETM20_thresh2" ) ;
00663 prescales_[ L1ParticleMap::kDoubleEG10_ETM20 ] =
00664 iConfig.getParameter< int >( "L1_DoubleEG10_ETM20_prescale" ) ;
00665 doubleThresholds_[ L1ParticleMap::kDoubleJet50_ETM20 ].first =
00666 iConfig.getParameter< double >( "L1_DoubleJet50_ETM20_thresh1" ) ;
00667 doubleThresholds_[ L1ParticleMap::kDoubleJet50_ETM20 ].second =
00668 iConfig.getParameter< double >( "L1_DoubleJet50_ETM20_thresh2" ) ;
00669 prescales_[ L1ParticleMap::kDoubleJet50_ETM20 ] =
00670 iConfig.getParameter< int >( "L1_DoubleJet50_ETM20_prescale" ) ;
00671 doubleThresholds_[ L1ParticleMap::kDoubleTauJet40_ETM20 ].first =
00672 iConfig.getParameter< double >( "L1_DoubleTauJet40_ETM20_thresh1" ) ;
00673 doubleThresholds_[ L1ParticleMap::kDoubleTauJet40_ETM20 ].second =
00674 iConfig.getParameter< double >( "L1_DoubleTauJet40_ETM20_thresh2" ) ;
00675 prescales_[ L1ParticleMap::kDoubleTauJet40_ETM20 ] =
00676 iConfig.getParameter< int >( "L1_DoubleTauJet40_ETM20_prescale" ) ;
00677
00678 singleThresholds_[ L1ParticleMap::kQuadJet30 ] =
00679 iConfig.getParameter< double >( "L1_QuadJet30_thresh" ) ;
00680 prescales_[ L1ParticleMap::kQuadJet30 ] =
00681 iConfig.getParameter< int >( "L1_QuadJet30_prescale" ) ;
00682
00683
00684 doubleThresholds_[ L1ParticleMap::kExclusiveDoubleIsoEG4 ].first =
00685 iConfig.getParameter< double >( "L1_ExclusiveDoubleIsoEG4_thresh1" );
00686 doubleThresholds_[ L1ParticleMap::kExclusiveDoubleIsoEG4 ].second =
00687 iConfig.getParameter< double >( "L1_ExclusiveDoubleIsoEG4_thresh2" );
00688 prescales_[ L1ParticleMap::kExclusiveDoubleIsoEG4 ] =
00689 iConfig.getParameter< int >( "L1_ExclusiveDoubleIsoEG4_prescale" ) ;
00690 singleThresholds_[ L1ParticleMap::kExclusiveDoubleJet60 ] =
00691 iConfig.getParameter< double >( "L1_ExclusiveDoubleJet60_thresh" );
00692 prescales_[ L1ParticleMap::kExclusiveDoubleJet60 ] =
00693 iConfig.getParameter< int >( "L1_ExclusiveDoubleJet60_prescale" ) ;
00694 singleThresholds_[ L1ParticleMap::kExclusiveJet25_Gap_Jet25 ] =
00695 iConfig.getParameter< double >( "L1_ExclusiveJet25_Gap_Jet25_thresh" );
00696 prescales_[ L1ParticleMap::kExclusiveJet25_Gap_Jet25 ] =
00697 iConfig.getParameter< int >( "L1_ExclusiveJet25_Gap_Jet25_prescale" ) ;
00698 doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet20_ForJet10 ].first =
00699 iConfig.getParameter< double >( "L1_IsoEG10_Jet20_ForJet10_thresh1" ) ;
00700 doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet20_ForJet10 ].second =
00701 iConfig.getParameter< double >( "L1_IsoEG10_Jet20_ForJet10_thresh2" ) ;
00702 singleThresholds_[ L1ParticleMap::kIsoEG10_Jet20_ForJet10 ] =
00703 iConfig.getParameter< double >( "L1_IsoEG10_Jet20_ForJet10_thresh3" ) ;
00704 prescales_[ L1ParticleMap::kIsoEG10_Jet20_ForJet10 ] =
00705 iConfig.getParameter< int >( "L1_IsoEG10_Jet20_ForJet10_prescale" ) ;
00706
00707 prescales_[ L1ParticleMap::kMinBias_HTT10 ] =
00708 iConfig.getParameter< int >( "L1_MinBias_HTT10_prescale" ) ;
00709 prescales_[ L1ParticleMap::kZeroBias ] =
00710 iConfig.getParameter< int >( "L1_ZeroBias_prescale" ) ;
00711
00712
00713
00714
00715
00716
00717
00718
00719
00720
00721
00722
00723
00724
00725
00726
00727
00728
00729
00730
00731
00732
00733
00734
00735
00736
00737
00738
00739
00740
00741
00742
00743
00744
00745
00746
00747
00748
00749
00750
00751
00752
00753 }
00754
00755
00756 L1ExtraParticleMapProd::~L1ExtraParticleMapProd()
00757 {
00758
00759
00760 }
00761
00762
00763
00764
00765
00766
00767
00768 void
00769 L1ExtraParticleMapProd::produce(edm::Event& iEvent,
00770 const edm::EventSetup& iSetup)
00771 {
00772 using namespace edm;
00773 using namespace std;
00774 using namespace reco;
00775 using namespace l1extra ;
00776
00777
00778
00779
00780
00781
00782 Handle< L1EmParticleCollection > isoEmHandle ;
00783 iEvent.getByLabel( isoEmSource_, isoEmHandle ) ;
00784
00785 Handle< L1EmParticleCollection > nonIsoEmHandle ;
00786 iEvent.getByLabel( nonIsoEmSource_, nonIsoEmHandle ) ;
00787
00788 Handle< L1JetParticleCollection > cenJetHandle ;
00789 iEvent.getByLabel( cenJetSource_, cenJetHandle ) ;
00790
00791 Handle< L1JetParticleCollection > forJetHandle ;
00792 iEvent.getByLabel( forJetSource_, forJetHandle ) ;
00793
00794 Handle< L1JetParticleCollection > tauJetHandle ;
00795 iEvent.getByLabel( tauJetSource_, tauJetHandle ) ;
00796
00797 Handle< L1MuonParticleCollection > muHandle ;
00798 iEvent.getByLabel( muonSource_, muHandle ) ;
00799
00800 Handle< L1EtMissParticle > metHandle ;
00801 iEvent.getByLabel( etMissSource_, metHandle ) ;
00802
00803 Handle< L1EtMissParticle > mhtHandle ;
00804 iEvent.getByLabel( htMissSource_, mhtHandle ) ;
00805
00806 double met = metHandle->etMiss() ;
00807 double ht = mhtHandle->etTotal() ;
00808 double ett = metHandle->etTotal() ;
00809
00810
00811
00812
00813
00814
00815 L1EmParticleVectorRef inputIsoEmRefs ;
00816 addToVectorRefs( isoEmHandle, inputIsoEmRefs ) ;
00817
00818 L1EmParticleVectorRef inputRelaxedEmRefs ;
00819 addToVectorRefs( isoEmHandle, inputRelaxedEmRefs ) ;
00820 addToVectorRefs( nonIsoEmHandle, inputRelaxedEmRefs ) ;
00821
00822 L1JetParticleVectorRef inputTauRefs ;
00823 addToVectorRefs( tauJetHandle, inputTauRefs ) ;
00824
00825 L1JetParticleVectorRef inputJetRefs ;
00826 addToVectorRefs( forJetHandle, inputJetRefs ) ;
00827 addToVectorRefs( cenJetHandle, inputJetRefs ) ;
00828 addToVectorRefs( tauJetHandle, inputJetRefs ) ;
00829
00830 L1JetParticleVectorRef inputForJetRefs ;
00831 addToVectorRefs( forJetHandle, inputForJetRefs ) ;
00832
00833 L1JetParticleVectorRef inputCenJetTauJetRefs ;
00834 addToVectorRefs( cenJetHandle, inputCenJetTauJetRefs ) ;
00835 addToVectorRefs( tauJetHandle, inputCenJetTauJetRefs ) ;
00836
00837 L1MuonParticleVectorRef inputMuonRefsSingle ;
00838 L1MuonParticleVectorRef inputMuonRefsDouble ;
00839 L1MuonParticleCollection::const_iterator muItr = muHandle->begin() ;
00840 L1MuonParticleCollection::const_iterator muEnd = muHandle->end() ;
00841
00842 for( size_t i = 0 ; muItr != muEnd ; ++muItr, ++i )
00843 {
00844 if( !muItr->gmtMuonCand().empty() )
00845 {
00846 unsigned int qual = muItr->gmtMuonCand().quality() ;
00847
00848 if( qual == 4 ||
00849 qual == 5 ||
00850 qual == 6 ||
00851 qual == 7 )
00852 {
00853 inputMuonRefsSingle.push_back(
00854 edm::Ref< L1MuonParticleCollection >( muHandle, i ) ) ;
00855 }
00856
00857 if( qual == 3 ||
00858 qual == 5 ||
00859 qual == 6 ||
00860 qual == 7 )
00861 {
00862 inputMuonRefsDouble.push_back(
00863 edm::Ref< L1MuonParticleCollection >( muHandle, i ) ) ;
00864 }
00865 }
00866 }
00867
00868 auto_ptr< L1ParticleMapCollection > mapColl( new L1ParticleMapCollection ) ;
00869 bool globalDecision = false ;
00870 std::vector< bool > decisionWord ;
00871
00872 for( int itrig = 0 ; itrig < L1ParticleMap::kNumOfL1TriggerTypes; ++itrig )
00873 {
00874 bool decision = false ;
00875 std::vector< L1ParticleMap::L1ObjectType > objectTypes ;
00876 L1EmParticleVectorRef outputEmRefsTmp ;
00877 L1JetParticleVectorRef outputJetRefsTmp ;
00878 L1MuonParticleVectorRef outputMuonRefsTmp ;
00879 L1EtMissParticleRefProd metRefTmp ;
00880 L1ParticleMap::L1IndexComboVector combosTmp ;
00881
00882 if( itrig == L1ParticleMap::kSingleMu3 ||
00883 itrig == L1ParticleMap::kSingleMu5 ||
00884 itrig == L1ParticleMap::kSingleMu7 ||
00885 itrig == L1ParticleMap::kSingleMu10 ||
00886 itrig == L1ParticleMap::kSingleMu14 ||
00887 itrig == L1ParticleMap::kSingleMu20 ||
00888 itrig == L1ParticleMap::kSingleMu25 )
00889 {
00890 objectTypes.push_back( L1ParticleMap::kMuon ) ;
00891
00892 evaluateSingleObjectTrigger( inputMuonRefsSingle,
00893 singleThresholds_[ itrig ],
00894 decision,
00895 outputMuonRefsTmp ) ;
00896 }
00897 else if( itrig == L1ParticleMap::kSingleIsoEG5 ||
00898 itrig == L1ParticleMap::kSingleIsoEG8 ||
00899 itrig == L1ParticleMap::kSingleIsoEG10 ||
00900 itrig == L1ParticleMap::kSingleIsoEG12 ||
00901 itrig == L1ParticleMap::kSingleIsoEG15 ||
00902 itrig == L1ParticleMap::kSingleIsoEG20 ||
00903 itrig == L1ParticleMap::kSingleIsoEG25 )
00904 {
00905 objectTypes.push_back( L1ParticleMap::kEM ) ;
00906
00907 evaluateSingleObjectTrigger( inputIsoEmRefs,
00908 singleThresholds_[ itrig ],
00909 decision,
00910 outputEmRefsTmp ) ;
00911 }
00912 else if( itrig == L1ParticleMap::kSingleEG5 ||
00913 itrig == L1ParticleMap::kSingleEG8 ||
00914 itrig == L1ParticleMap::kSingleEG10 ||
00915 itrig == L1ParticleMap::kSingleEG12 ||
00916 itrig == L1ParticleMap::kSingleEG15 ||
00917 itrig == L1ParticleMap::kSingleEG20 ||
00918 itrig == L1ParticleMap::kSingleEG25 )
00919 {
00920 objectTypes.push_back( L1ParticleMap::kEM ) ;
00921
00922 evaluateSingleObjectTrigger( inputRelaxedEmRefs,
00923 singleThresholds_[ itrig ],
00924 decision,
00925 outputEmRefsTmp ) ;
00926 }
00927 else if( itrig == L1ParticleMap::kSingleJet15 ||
00928 itrig == L1ParticleMap::kSingleJet20 ||
00929 itrig == L1ParticleMap::kSingleJet30 ||
00930 itrig == L1ParticleMap::kSingleJet50 ||
00931 itrig == L1ParticleMap::kSingleJet70 ||
00932 itrig == L1ParticleMap::kSingleJet100 ||
00933 itrig == L1ParticleMap::kSingleJet150 ||
00934 itrig == L1ParticleMap::kSingleJet200 )
00935 {
00936 objectTypes.push_back( L1ParticleMap::kJet ) ;
00937
00938 evaluateSingleObjectTrigger( inputJetRefs,
00939 singleThresholds_[ itrig ],
00940 decision,
00941 outputJetRefsTmp ) ;
00942 }
00943 else if( itrig == L1ParticleMap::kSingleTauJet10 ||
00944 itrig == L1ParticleMap::kSingleTauJet20 ||
00945 itrig == L1ParticleMap::kSingleTauJet30 ||
00946 itrig == L1ParticleMap::kSingleTauJet35 ||
00947 itrig == L1ParticleMap::kSingleTauJet40 ||
00948 itrig == L1ParticleMap::kSingleTauJet60 ||
00949 itrig == L1ParticleMap::kSingleTauJet80 ||
00950 itrig == L1ParticleMap::kSingleTauJet100 )
00951 {
00952 objectTypes.push_back( L1ParticleMap::kJet ) ;
00953
00954 evaluateSingleObjectTrigger( inputTauRefs,
00955 singleThresholds_[ itrig ],
00956 decision,
00957 outputJetRefsTmp ) ;
00958 }
00959 else if( itrig == L1ParticleMap::kHTT100 ||
00960 itrig == L1ParticleMap::kHTT200 ||
00961 itrig == L1ParticleMap::kHTT250 ||
00962 itrig == L1ParticleMap::kHTT300 ||
00963 itrig == L1ParticleMap::kHTT400 ||
00964 itrig == L1ParticleMap::kHTT500 )
00965 {
00966 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
00967
00968 if( ht >= singleThresholds_[ itrig ] )
00969 {
00970 decision = true ;
00971 metRefTmp = L1EtMissParticleRefProd( mhtHandle ) ;
00972 }
00973 }
00974 else if( itrig == L1ParticleMap::kETM10 ||
00975 itrig == L1ParticleMap::kETM15 ||
00976 itrig == L1ParticleMap::kETM20 ||
00977 itrig == L1ParticleMap::kETM30 ||
00978 itrig == L1ParticleMap::kETM40 ||
00979 itrig == L1ParticleMap::kETM50 ||
00980 itrig == L1ParticleMap::kETM60 )
00981 {
00982 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
00983
00984 if( met >= singleThresholds_[ itrig ] )
00985 {
00986 decision = true ;
00987 metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
00988 }
00989 }
00990 else if( itrig == L1ParticleMap::kETT60 )
00991 {
00992 objectTypes.push_back( L1ParticleMap::kEtTotal ) ;
00993
00994 if( ett >= singleThresholds_[ itrig ] )
00995 {
00996 decision = true ;
00997 metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
00998 }
00999 }
01000 else if( itrig == L1ParticleMap::kDoubleMu3 )
01001 {
01002 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01003 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01004
01005 evaluateDoubleSameObjectTrigger( inputMuonRefsDouble,
01006 singleThresholds_[ itrig ],
01007 decision,
01008 outputMuonRefsTmp,
01009 combosTmp ) ;
01010 }
01011 else if( itrig == L1ParticleMap::kDoubleIsoEG8 ||
01012 itrig == L1ParticleMap::kDoubleIsoEG10 )
01013 {
01014 objectTypes.push_back( L1ParticleMap::kEM ) ;
01015 objectTypes.push_back( L1ParticleMap::kEM ) ;
01016
01017 evaluateDoubleSameObjectTrigger( inputIsoEmRefs,
01018 singleThresholds_[ itrig ],
01019 decision,
01020 outputEmRefsTmp,
01021 combosTmp ) ;
01022 }
01023 else if( itrig == L1ParticleMap::kDoubleEG5 ||
01024 itrig == L1ParticleMap::kDoubleEG10 ||
01025 itrig == L1ParticleMap::kDoubleEG15 )
01026 {
01027 objectTypes.push_back( L1ParticleMap::kEM ) ;
01028 objectTypes.push_back( L1ParticleMap::kEM ) ;
01029
01030 evaluateDoubleSameObjectTrigger( inputRelaxedEmRefs,
01031 singleThresholds_[ itrig ],
01032 decision,
01033 outputEmRefsTmp,
01034 combosTmp ) ;
01035 }
01036 else if( itrig == L1ParticleMap::kDoubleJet70 ||
01037 itrig == L1ParticleMap::kDoubleJet100 )
01038 {
01039 objectTypes.push_back( L1ParticleMap::kJet ) ;
01040 objectTypes.push_back( L1ParticleMap::kJet ) ;
01041
01042 evaluateDoubleSameObjectTrigger( inputJetRefs,
01043 singleThresholds_[ itrig ],
01044 decision,
01045 outputJetRefsTmp,
01046 combosTmp ) ;
01047 }
01048 else if( itrig == L1ParticleMap::kDoubleTauJet20 ||
01049 itrig == L1ParticleMap::kDoubleTauJet30 ||
01050 itrig == L1ParticleMap::kDoubleTauJet35 ||
01051 itrig == L1ParticleMap::kDoubleTauJet40 )
01052 {
01053 objectTypes.push_back( L1ParticleMap::kJet ) ;
01054 objectTypes.push_back( L1ParticleMap::kJet ) ;
01055
01056 evaluateDoubleSameObjectTrigger( inputTauRefs,
01057 singleThresholds_[ itrig ],
01058 decision,
01059 outputJetRefsTmp,
01060 combosTmp ) ;
01061 }
01062 else if( itrig == L1ParticleMap::kMu3_IsoEG5 ||
01063 itrig == L1ParticleMap::kMu5_IsoEG10 )
01064 {
01065 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01066 objectTypes.push_back( L1ParticleMap::kEM ) ;
01067
01068 evaluateDoubleDifferentObjectTrigger(
01069 inputMuonRefsSingle,
01070 inputIsoEmRefs,
01071 doubleThresholds_[ itrig ].first,
01072 doubleThresholds_[ itrig ].second,
01073 decision,
01074 outputMuonRefsTmp,
01075 outputEmRefsTmp,
01076 combosTmp ) ;
01077 }
01078 else if( itrig == L1ParticleMap::kMu3_EG12 )
01079 {
01080 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01081 objectTypes.push_back( L1ParticleMap::kEM ) ;
01082
01083 evaluateDoubleDifferentObjectTrigger(
01084 inputMuonRefsSingle,
01085 inputRelaxedEmRefs,
01086 doubleThresholds_[ itrig ].first,
01087 doubleThresholds_[ itrig ].second,
01088 decision,
01089 outputMuonRefsTmp,
01090 outputEmRefsTmp,
01091 combosTmp ) ;
01092 }
01093 else if( itrig == L1ParticleMap::kMu3_Jet15 ||
01094 itrig == L1ParticleMap::kMu5_Jet15 ||
01095 itrig == L1ParticleMap::kMu3_Jet70 ||
01096 itrig == L1ParticleMap::kMu5_Jet20 )
01097 {
01098 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01099 objectTypes.push_back( L1ParticleMap::kJet ) ;
01100
01101 evaluateDoubleDifferentObjectTrigger(
01102 inputMuonRefsSingle,
01103 inputJetRefs,
01104 doubleThresholds_[ itrig ].first,
01105 doubleThresholds_[ itrig ].second,
01106 decision,
01107 outputMuonRefsTmp,
01108 outputJetRefsTmp,
01109 combosTmp ) ;
01110 }
01111 else if( itrig == L1ParticleMap::kMu5_TauJet20 ||
01112 itrig == L1ParticleMap::kMu5_TauJet30 )
01113 {
01114 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01115 objectTypes.push_back( L1ParticleMap::kJet ) ;
01116
01117 evaluateDoubleDifferentObjectTrigger(
01118 inputMuonRefsSingle,
01119 inputTauRefs,
01120 doubleThresholds_[ itrig ].first,
01121 doubleThresholds_[ itrig ].second,
01122 decision,
01123 outputMuonRefsTmp,
01124 outputJetRefsTmp,
01125 combosTmp ) ;
01126 }
01127 else if( itrig == L1ParticleMap::kIsoEG10_EG10 )
01128 {
01129 objectTypes.push_back( L1ParticleMap::kEM ) ;
01130 objectTypes.push_back( L1ParticleMap::kEM ) ;
01131
01132 evaluateDoubleDifferentObjectSameTypeTrigger(
01133 inputIsoEmRefs,
01134 inputRelaxedEmRefs,
01135 doubleThresholds_[ itrig ].first,
01136 doubleThresholds_[ itrig ].second,
01137 decision,
01138 outputEmRefsTmp,
01139 combosTmp ) ;
01140 }
01141 else if( itrig == L1ParticleMap::kIsoEG10_Jet15 ||
01142 itrig == L1ParticleMap::kIsoEG10_Jet30 ||
01143 itrig == L1ParticleMap::kIsoEG10_Jet20 ||
01144 itrig == L1ParticleMap::kIsoEG10_Jet70 )
01145 {
01146 objectTypes.push_back( L1ParticleMap::kEM ) ;
01147 objectTypes.push_back( L1ParticleMap::kJet ) ;
01148
01149 evaluateDoubleDifferentCaloObjectTrigger(
01150 inputIsoEmRefs,
01151 inputJetRefs,
01152 doubleThresholds_[ itrig ].first,
01153 doubleThresholds_[ itrig ].second,
01154 decision,
01155 outputEmRefsTmp,
01156 outputJetRefsTmp,
01157 combosTmp ) ;
01158 }
01159 else if( itrig == L1ParticleMap::kIsoEG10_TauJet20 ||
01160 itrig == L1ParticleMap::kIsoEG10_TauJet30 )
01161 {
01162 objectTypes.push_back( L1ParticleMap::kEM ) ;
01163 objectTypes.push_back( L1ParticleMap::kJet ) ;
01164
01165 evaluateDoubleDifferentCaloObjectTrigger(
01166 inputIsoEmRefs,
01167 inputTauRefs,
01168 doubleThresholds_[ itrig ].first,
01169 doubleThresholds_[ itrig ].second,
01170 decision,
01171 outputEmRefsTmp,
01172 outputJetRefsTmp,
01173 combosTmp ) ;
01174 }
01175 else if( itrig == L1ParticleMap::kEG10_Jet15 ||
01176 itrig == L1ParticleMap::kEG12_Jet20 ||
01177 itrig == L1ParticleMap::kEG12_Jet70 )
01178 {
01179 objectTypes.push_back( L1ParticleMap::kEM ) ;
01180 objectTypes.push_back( L1ParticleMap::kJet ) ;
01181
01182 evaluateDoubleDifferentCaloObjectTrigger(
01183 inputRelaxedEmRefs,
01184 inputJetRefs,
01185 doubleThresholds_[ itrig ].first,
01186 doubleThresholds_[ itrig ].second,
01187 decision,
01188 outputEmRefsTmp,
01189 outputJetRefsTmp,
01190 combosTmp ) ;
01191 }
01192 else if( itrig == L1ParticleMap::kEG12_TauJet40 )
01193 {
01194 objectTypes.push_back( L1ParticleMap::kEM ) ;
01195 objectTypes.push_back( L1ParticleMap::kJet ) ;
01196
01197 evaluateDoubleDifferentCaloObjectTrigger(
01198 inputRelaxedEmRefs,
01199 inputTauRefs,
01200 doubleThresholds_[ itrig ].first,
01201 doubleThresholds_[ itrig ].second,
01202 decision,
01203 outputEmRefsTmp,
01204 outputJetRefsTmp,
01205 combosTmp ) ;
01206 }
01207 else if( itrig == L1ParticleMap::kJet70_TauJet40 )
01208 {
01209 objectTypes.push_back( L1ParticleMap::kJet ) ;
01210 objectTypes.push_back( L1ParticleMap::kJet ) ;
01211
01212 evaluateDoubleDifferentObjectSameTypeTrigger(
01213 inputJetRefs,
01214 inputTauRefs,
01215 doubleThresholds_[ itrig ].first,
01216 doubleThresholds_[ itrig ].second,
01217 decision,
01218 outputJetRefsTmp,
01219 combosTmp ) ;
01220 }
01221 else if( itrig == L1ParticleMap::kMu3_HTT200 )
01222 {
01223 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01224 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01225
01226 if( ht >= doubleThresholds_[ itrig ].second )
01227 {
01228 evaluateSingleObjectTrigger( inputMuonRefsSingle,
01229 doubleThresholds_[ itrig ].first,
01230 decision,
01231 outputMuonRefsTmp ) ;
01232
01233 if( decision )
01234 {
01235 metRefTmp = L1EtMissParticleRefProd( mhtHandle ) ;
01236 }
01237 }
01238 }
01239 else if( itrig == L1ParticleMap::kIsoEG10_HTT200 )
01240 {
01241 objectTypes.push_back( L1ParticleMap::kEM ) ;
01242 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01243
01244 if( ht >= doubleThresholds_[ itrig ].second )
01245 {
01246 evaluateSingleObjectTrigger( inputIsoEmRefs,
01247 doubleThresholds_[ itrig ].first,
01248 decision,
01249 outputEmRefsTmp ) ;
01250
01251 if( decision )
01252 {
01253 metRefTmp = L1EtMissParticleRefProd( mhtHandle ) ;
01254 }
01255 }
01256 }
01257 else if( itrig == L1ParticleMap::kEG12_HTT200 )
01258 {
01259 objectTypes.push_back( L1ParticleMap::kEM ) ;
01260 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01261
01262 if( ht >= doubleThresholds_[ itrig ].second )
01263 {
01264 evaluateSingleObjectTrigger( inputRelaxedEmRefs,
01265 doubleThresholds_[ itrig ].first,
01266 decision,
01267 outputEmRefsTmp ) ;
01268
01269 if( decision )
01270 {
01271 metRefTmp = L1EtMissParticleRefProd( mhtHandle ) ;
01272 }
01273 }
01274 }
01275 else if( itrig == L1ParticleMap::kJet70_HTT200 )
01276 {
01277 objectTypes.push_back( L1ParticleMap::kJet ) ;
01278 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01279
01280 if( ht >= doubleThresholds_[ itrig ].second )
01281 {
01282 evaluateSingleObjectTrigger( inputJetRefs,
01283 doubleThresholds_[ itrig ].first,
01284 decision,
01285 outputJetRefsTmp ) ;
01286
01287 if( decision )
01288 {
01289 metRefTmp = L1EtMissParticleRefProd( mhtHandle ) ;
01290 }
01291 }
01292 }
01293 else if( itrig == L1ParticleMap::kTauJet40_HTT200 )
01294 {
01295 objectTypes.push_back( L1ParticleMap::kJet ) ;
01296 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01297
01298 if( ht >= doubleThresholds_[ itrig ].second )
01299 {
01300 evaluateSingleObjectTrigger( inputTauRefs,
01301 doubleThresholds_[ itrig ].first,
01302 decision,
01303 outputJetRefsTmp ) ;
01304
01305 if( decision )
01306 {
01307 metRefTmp = L1EtMissParticleRefProd( mhtHandle ) ;
01308 }
01309 }
01310 }
01311 else if( itrig == L1ParticleMap::kMu3_ETM30 )
01312 {
01313 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01314 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01315
01316 if( met >= doubleThresholds_[ itrig ].second )
01317 {
01318 evaluateSingleObjectTrigger( inputMuonRefsSingle,
01319 doubleThresholds_[ itrig ].first,
01320 decision,
01321 outputMuonRefsTmp ) ;
01322
01323 if( decision )
01324 {
01325 metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01326 }
01327 }
01328 }
01329 else if( itrig == L1ParticleMap::kIsoEG10_ETM30 )
01330 {
01331 objectTypes.push_back( L1ParticleMap::kEM ) ;
01332 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01333
01334 if( met >= doubleThresholds_[ itrig ].second )
01335 {
01336 evaluateSingleObjectTrigger( inputIsoEmRefs,
01337 doubleThresholds_[ itrig ].first,
01338 decision,
01339 outputEmRefsTmp ) ;
01340
01341 if( decision )
01342 {
01343 metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01344 }
01345 }
01346 }
01347 else if( itrig == L1ParticleMap::kEG12_ETM30 )
01348 {
01349 objectTypes.push_back( L1ParticleMap::kEM ) ;
01350 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01351
01352 if( met >= doubleThresholds_[ itrig ].second )
01353 {
01354 evaluateSingleObjectTrigger( inputRelaxedEmRefs,
01355 doubleThresholds_[ itrig ].first,
01356 decision,
01357 outputEmRefsTmp ) ;
01358
01359 if( decision )
01360 {
01361 metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01362 }
01363 }
01364 }
01365 else if( itrig == L1ParticleMap::kJet70_ETM40 )
01366 {
01367 objectTypes.push_back( L1ParticleMap::kJet ) ;
01368 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01369
01370 if( met >= doubleThresholds_[ itrig ].second )
01371 {
01372 evaluateSingleObjectTrigger( inputJetRefs,
01373 doubleThresholds_[ itrig ].first,
01374 decision,
01375 outputJetRefsTmp ) ;
01376
01377 if( decision )
01378 {
01379 metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01380 }
01381 }
01382 }
01383 else if( itrig == L1ParticleMap::kTauJet20_ETM20 ||
01384 itrig == L1ParticleMap::kTauJet30_ETM30 ||
01385 itrig == L1ParticleMap::kTauJet30_ETM40 )
01386 {
01387 objectTypes.push_back( L1ParticleMap::kJet ) ;
01388 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01389
01390 if( met >= doubleThresholds_[ itrig ].second )
01391 {
01392 evaluateSingleObjectTrigger( inputTauRefs,
01393 doubleThresholds_[ itrig ].first,
01394 decision,
01395 outputJetRefsTmp ) ;
01396
01397 if( decision )
01398 {
01399 metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01400 }
01401 }
01402 }
01403 else if( itrig == L1ParticleMap::kHTT100_ETM30 )
01404 {
01405 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01406 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01407
01408 if( ht >= doubleThresholds_[ itrig ].first &&
01409 met >= doubleThresholds_[ itrig ].second )
01410 {
01411 decision = true ;
01412 metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01413 }
01414 }
01415 else if( itrig == L1ParticleMap::kTripleMu3 )
01416 {
01417 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01418 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01419 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01420
01421 evaluateTripleSameObjectTrigger( inputMuonRefsDouble,
01422 singleThresholds_[ itrig ],
01423 decision,
01424 outputMuonRefsTmp,
01425 combosTmp ) ;
01426 }
01427 else if( itrig == L1ParticleMap::kTripleIsoEG5 )
01428 {
01429 objectTypes.push_back( L1ParticleMap::kEM ) ;
01430 objectTypes.push_back( L1ParticleMap::kEM ) ;
01431 objectTypes.push_back( L1ParticleMap::kEM ) ;
01432
01433 evaluateTripleSameObjectTrigger( inputIsoEmRefs,
01434 singleThresholds_[ itrig ],
01435 decision,
01436 outputEmRefsTmp,
01437 combosTmp ) ;
01438 }
01439 else if( itrig == L1ParticleMap::kTripleEG10 )
01440 {
01441 objectTypes.push_back( L1ParticleMap::kEM ) ;
01442 objectTypes.push_back( L1ParticleMap::kEM ) ;
01443 objectTypes.push_back( L1ParticleMap::kEM ) ;
01444
01445 evaluateTripleSameObjectTrigger( inputRelaxedEmRefs,
01446 singleThresholds_[ itrig ],
01447 decision,
01448 outputEmRefsTmp,
01449 combosTmp ) ;
01450 }
01451 else if( itrig == L1ParticleMap::kTripleJet50 )
01452 {
01453 objectTypes.push_back( L1ParticleMap::kJet ) ;
01454 objectTypes.push_back( L1ParticleMap::kJet ) ;
01455 objectTypes.push_back( L1ParticleMap::kJet ) ;
01456
01457 evaluateTripleSameObjectTrigger( inputJetRefs,
01458 singleThresholds_[ itrig ],
01459 decision,
01460 outputJetRefsTmp,
01461 combosTmp ) ;
01462 }
01463 else if( itrig == L1ParticleMap::kTripleTauJet40 )
01464 {
01465 objectTypes.push_back( L1ParticleMap::kJet ) ;
01466 objectTypes.push_back( L1ParticleMap::kJet ) ;
01467 objectTypes.push_back( L1ParticleMap::kJet ) ;
01468
01469 evaluateTripleSameObjectTrigger( inputTauRefs,
01470 singleThresholds_[ itrig ],
01471 decision,
01472 outputJetRefsTmp,
01473 combosTmp ) ;
01474 }
01475 else if( itrig == L1ParticleMap::kDoubleMu3_IsoEG5 )
01476 {
01477 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01478 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01479 objectTypes.push_back( L1ParticleMap::kEM ) ;
01480
01481 evaluateDoublePlusSingleObjectTrigger(
01482 inputMuonRefsDouble,
01483 inputIsoEmRefs,
01484 doubleThresholds_[ itrig ].first,
01485 doubleThresholds_[ itrig ].second,
01486 decision,
01487 outputMuonRefsTmp,
01488 outputEmRefsTmp,
01489 combosTmp ) ;
01490 }
01491 else if( itrig == L1ParticleMap::kDoubleMu3_EG10 )
01492 {
01493 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01494 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01495 objectTypes.push_back( L1ParticleMap::kEM ) ;
01496
01497 evaluateDoublePlusSingleObjectTrigger(
01498 inputMuonRefsDouble,
01499 inputRelaxedEmRefs,
01500 doubleThresholds_[ itrig ].first,
01501 doubleThresholds_[ itrig ].second,
01502 decision,
01503 outputMuonRefsTmp,
01504 outputEmRefsTmp,
01505 combosTmp ) ;
01506 }
01507 else if( itrig == L1ParticleMap::kDoubleIsoEG5_Mu3 )
01508 {
01509 objectTypes.push_back( L1ParticleMap::kEM ) ;
01510 objectTypes.push_back( L1ParticleMap::kEM ) ;
01511 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01512
01513 evaluateDoublePlusSingleObjectTrigger(
01514 inputIsoEmRefs,
01515 inputMuonRefsSingle,
01516 doubleThresholds_[ itrig ].first,
01517 doubleThresholds_[ itrig ].second,
01518 decision,
01519 outputEmRefsTmp,
01520 outputMuonRefsTmp,
01521 combosTmp ) ;
01522 }
01523 else if( itrig == L1ParticleMap::kDoubleEG10_Mu3 )
01524 {
01525 objectTypes.push_back( L1ParticleMap::kEM ) ;
01526 objectTypes.push_back( L1ParticleMap::kEM ) ;
01527 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01528
01529 evaluateDoublePlusSingleObjectTrigger(
01530 inputRelaxedEmRefs,
01531 inputMuonRefsSingle,
01532 doubleThresholds_[ itrig ].first,
01533 doubleThresholds_[ itrig ].second,
01534 decision,
01535 outputEmRefsTmp,
01536 outputMuonRefsTmp,
01537 combosTmp ) ;
01538 }
01539 else if( itrig == L1ParticleMap::kDoubleMu3_HTT200 )
01540 {
01541 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01542 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01543 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01544
01545 if( ht >= doubleThresholds_[ itrig ].second )
01546 {
01547 evaluateDoubleSameObjectTrigger( inputMuonRefsDouble,
01548 doubleThresholds_[ itrig ].first,
01549 decision,
01550 outputMuonRefsTmp,
01551 combosTmp,
01552 true ) ;
01553
01554 if( decision )
01555 {
01556 metRefTmp = L1EtMissParticleRefProd( mhtHandle ) ;
01557 }
01558 }
01559 }
01560 else if( itrig == L1ParticleMap::kDoubleIsoEG5_HTT200 )
01561 {
01562 objectTypes.push_back( L1ParticleMap::kEM ) ;
01563 objectTypes.push_back( L1ParticleMap::kEM ) ;
01564 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01565
01566 if( ht >= doubleThresholds_[ itrig ].second )
01567 {
01568 evaluateDoubleSameObjectTrigger( inputIsoEmRefs,
01569 doubleThresholds_[ itrig ].first,
01570 decision,
01571 outputEmRefsTmp,
01572 combosTmp,
01573 true ) ;
01574
01575 if( decision )
01576 {
01577 metRefTmp = L1EtMissParticleRefProd( mhtHandle ) ;
01578 }
01579 }
01580 }
01581 else if( itrig == L1ParticleMap::kDoubleEG10_HTT200 )
01582 {
01583 objectTypes.push_back( L1ParticleMap::kEM ) ;
01584 objectTypes.push_back( L1ParticleMap::kEM ) ;
01585 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01586
01587 if( ht >= doubleThresholds_[ itrig ].second )
01588 {
01589 evaluateDoubleSameObjectTrigger( inputRelaxedEmRefs,
01590 doubleThresholds_[ itrig ].first,
01591 decision,
01592 outputEmRefsTmp,
01593 combosTmp,
01594 true ) ;
01595
01596 if( decision )
01597 {
01598 metRefTmp = L1EtMissParticleRefProd( mhtHandle ) ;
01599 }
01600 }
01601 }
01602 else if( itrig == L1ParticleMap::kDoubleJet50_HTT200 )
01603 {
01604 objectTypes.push_back( L1ParticleMap::kJet ) ;
01605 objectTypes.push_back( L1ParticleMap::kJet ) ;
01606 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01607
01608 if( ht >= doubleThresholds_[ itrig ].second )
01609 {
01610 evaluateDoubleSameObjectTrigger( inputJetRefs,
01611 doubleThresholds_[ itrig ].first,
01612 decision,
01613 outputJetRefsTmp,
01614 combosTmp,
01615 true ) ;
01616
01617 if( decision )
01618 {
01619 metRefTmp = L1EtMissParticleRefProd( mhtHandle ) ;
01620 }
01621 }
01622 }
01623 else if( itrig == L1ParticleMap::kDoubleTauJet40_HTT200 )
01624 {
01625 objectTypes.push_back( L1ParticleMap::kJet ) ;
01626 objectTypes.push_back( L1ParticleMap::kJet ) ;
01627 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01628
01629 if( ht >= doubleThresholds_[ itrig ].second )
01630 {
01631 evaluateDoubleSameObjectTrigger( inputTauRefs,
01632 doubleThresholds_[ itrig ].first,
01633 decision,
01634 outputJetRefsTmp,
01635 combosTmp,
01636 true ) ;
01637
01638 if( decision )
01639 {
01640 metRefTmp = L1EtMissParticleRefProd( mhtHandle ) ;
01641 }
01642 }
01643 }
01644 else if( itrig == L1ParticleMap::kDoubleMu3_ETM20 )
01645 {
01646 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01647 objectTypes.push_back( L1ParticleMap::kMuon ) ;
01648 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01649
01650 if( met >= doubleThresholds_[ itrig ].second )
01651 {
01652 evaluateDoubleSameObjectTrigger( inputMuonRefsDouble,
01653 doubleThresholds_[ itrig ].first,
01654 decision,
01655 outputMuonRefsTmp,
01656 combosTmp,
01657 true ) ;
01658
01659 if( decision )
01660 {
01661 metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01662 }
01663 }
01664 }
01665 else if( itrig == L1ParticleMap::kDoubleIsoEG5_ETM20 )
01666 {
01667 objectTypes.push_back( L1ParticleMap::kEM ) ;
01668 objectTypes.push_back( L1ParticleMap::kEM ) ;
01669 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01670
01671 if( met >= doubleThresholds_[ itrig ].second )
01672 {
01673 evaluateDoubleSameObjectTrigger( inputIsoEmRefs,
01674 doubleThresholds_[ itrig ].first,
01675 decision,
01676 outputEmRefsTmp,
01677 combosTmp,
01678 true ) ;
01679
01680 if( decision )
01681 {
01682 metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01683 }
01684 }
01685 }
01686 else if( itrig == L1ParticleMap::kDoubleEG10_ETM20 )
01687 {
01688 objectTypes.push_back( L1ParticleMap::kEM ) ;
01689 objectTypes.push_back( L1ParticleMap::kEM ) ;
01690 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01691
01692 if( met >= doubleThresholds_[ itrig ].second )
01693 {
01694 evaluateDoubleSameObjectTrigger( inputRelaxedEmRefs,
01695 doubleThresholds_[ itrig ].first,
01696 decision,
01697 outputEmRefsTmp,
01698 combosTmp,
01699 true ) ;
01700
01701 if( decision )
01702 {
01703 metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01704 }
01705 }
01706 }
01707 else if( itrig == L1ParticleMap::kDoubleJet50_ETM20 )
01708 {
01709 objectTypes.push_back( L1ParticleMap::kJet ) ;
01710 objectTypes.push_back( L1ParticleMap::kJet ) ;
01711 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01712
01713 if( met >= doubleThresholds_[ itrig ].second )
01714 {
01715 evaluateDoubleSameObjectTrigger( inputJetRefs,
01716 doubleThresholds_[ itrig ].first,
01717 decision,
01718 outputJetRefsTmp,
01719 combosTmp,
01720 true ) ;
01721
01722 if( decision )
01723 {
01724 metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01725 }
01726 }
01727 }
01728 else if( itrig == L1ParticleMap::kDoubleTauJet40_ETM20 )
01729 {
01730 objectTypes.push_back( L1ParticleMap::kJet ) ;
01731 objectTypes.push_back( L1ParticleMap::kJet ) ;
01732 objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01733
01734 if( met >= doubleThresholds_[ itrig ].second )
01735 {
01736 evaluateDoubleSameObjectTrigger( inputTauRefs,
01737 doubleThresholds_[ itrig ].first,
01738 decision,
01739 outputJetRefsTmp,
01740 combosTmp,
01741 true ) ;
01742
01743 if( decision )
01744 {
01745 metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01746 }
01747 }
01748 }
01749 else if( itrig == L1ParticleMap::kQuadJet30 )
01750 {
01751 objectTypes.push_back( L1ParticleMap::kJet ) ;
01752 objectTypes.push_back( L1ParticleMap::kJet ) ;
01753 objectTypes.push_back( L1ParticleMap::kJet ) ;
01754 objectTypes.push_back( L1ParticleMap::kJet ) ;
01755
01756 evaluateQuadSameObjectTrigger( inputJetRefs,
01757 singleThresholds_[ itrig ],
01758 decision,
01759 outputJetRefsTmp,
01760 combosTmp ) ;
01761 }
01762 else if( itrig == L1ParticleMap::kExclusiveDoubleIsoEG4 )
01763 {
01764 objectTypes.push_back( L1ParticleMap::kEM ) ;
01765 objectTypes.push_back( L1ParticleMap::kEM ) ;
01766
01767 evaluateDoubleExclusiveIsoEG(inputIsoEmRefs,
01768 inputJetRefs,
01769 doubleThresholds_[ itrig ].first,
01770 doubleThresholds_[ itrig ].second,
01771 decision,
01772 outputEmRefsTmp,
01773 combosTmp);
01774
01775 }
01776 else if( itrig == L1ParticleMap::kExclusiveDoubleJet60 )
01777 {
01778 objectTypes.push_back( L1ParticleMap::kJet ) ;
01779 objectTypes.push_back( L1ParticleMap::kJet ) ;
01780
01781 if( inputJetRefs.size() == 2 )
01782 {
01783 evaluateDoubleSameObjectTrigger( inputJetRefs,
01784 singleThresholds_[ itrig ],
01785 decision,
01786 outputJetRefsTmp,
01787 combosTmp ) ;
01788 }
01789 }
01790 else if( itrig == L1ParticleMap::kExclusiveJet25_Gap_Jet25 )
01791 {
01792 objectTypes.push_back( L1ParticleMap::kJet ) ;
01793 objectTypes.push_back( L1ParticleMap::kJet ) ;
01794
01795 if( inputJetRefs.size() == 2 )
01796 {
01797 evaluateJetGapJetTrigger( inputForJetRefs,
01798 singleThresholds_[ itrig ],
01799 decision,
01800 outputJetRefsTmp,
01801 combosTmp ) ;
01802 }
01803 }
01804 else if( itrig == L1ParticleMap::kIsoEG10_Jet20_ForJet10 )
01805 {
01806 objectTypes.push_back( L1ParticleMap::kEM ) ;
01807 objectTypes.push_back( L1ParticleMap::kJet ) ;
01808
01809 evaluateForwardRapidityGap(inputForJetRefs,
01810 singleThresholds_[ itrig ],
01811 decision);
01812
01813 if(decision){
01814 decision = false;
01815 evaluateDoubleDifferentCaloObjectTrigger(
01816 inputIsoEmRefs,
01817 inputCenJetTauJetRefs,
01818 doubleThresholds_[ itrig ].first,
01819 doubleThresholds_[ itrig ].second,
01820 decision,
01821 outputEmRefsTmp,
01822 outputJetRefsTmp,
01823 combosTmp );
01824 }
01825 }
01826 else if( itrig == L1ParticleMap::kMinBias_HTT10 )
01827 {
01828 objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01829
01830 if( ht >= 10. )
01831 {
01832 decision = true ;
01833 metRefTmp = L1EtMissParticleRefProd( mhtHandle ) ;
01834 }
01835 }
01836 else if( itrig == L1ParticleMap::kZeroBias )
01837 {
01838 decision = true ;
01839 }
01840
01841 L1EmParticleVectorRef outputEmRefs ;
01842 L1JetParticleVectorRef outputJetRefs ;
01843 L1MuonParticleVectorRef outputMuonRefs ;
01844 L1EtMissParticleRefProd metRef ;
01845 L1ParticleMap::L1IndexComboVector combos ;
01846
01847 if( decision )
01848 {
01849
01850
01851 double rand = CLHEP::RandFlat::shoot() * ( double ) prescales_[ itrig ] ;
01852 if( rand > 1. )
01853 {
01854 decision = false ;
01855 }
01856 else
01857 {
01858 outputEmRefs = outputEmRefsTmp ;
01859 outputJetRefs = outputJetRefsTmp ;
01860 outputMuonRefs = outputMuonRefsTmp ;
01861 metRef = metRefTmp ;
01862 combos = combosTmp ;
01863 }
01864
01865 ++prescaleCounters_[ itrig ] ;
01866 }
01867
01868
01869 mapColl->push_back( L1ParticleMap(
01870 ( L1ParticleMap::L1TriggerType ) itrig,
01871 decision,
01872 objectTypes,
01873 outputEmRefs,
01874 outputJetRefs,
01875 outputMuonRefs,
01876 metRef,
01877 combos ) ) ;
01878
01879 globalDecision = globalDecision || decision ;
01880 decisionWord.push_back( decision ) ;
01881 }
01882
01883
01884 iEvent.put( mapColl ) ;
01885
01886
01887 auto_ptr< L1GlobalTriggerReadoutRecord > gtRecord(
01888 new L1GlobalTriggerReadoutRecord() ) ;
01889 gtRecord->setDecision( globalDecision ) ;
01890 gtRecord->setDecisionWord( decisionWord ) ;
01891 iEvent.put( gtRecord ) ;
01892
01893 return ;
01894 }
01895
01896
01897 template< class TCollection >
01898 void
01899 L1ExtraParticleMapProd::addToVectorRefs(
01900 const edm::Handle< TCollection >& handle,
01901 std::vector< edm::Ref< TCollection > >& vectorRefs )
01902 {
01903 for( size_t i = 0 ; i < handle->size() ; ++i )
01904 {
01905 vectorRefs.push_back( edm::Ref< TCollection >( handle, i ) ) ;
01906 }
01907 }
01908
01909 template< class TCollection >
01910 void
01911 L1ExtraParticleMapProd::evaluateSingleObjectTrigger(
01912 const std::vector< edm::Ref< TCollection > >& inputRefs,
01913 const double& etThreshold,
01914 bool& decision,
01915 std::vector< edm::Ref< TCollection > >& outputRefs )
01916 {
01917 for( size_t i = 0 ; i < inputRefs.size() ; ++i )
01918 {
01919 if( inputRefs[ i ].get()->et() >= etThreshold )
01920 {
01921 decision = true ;
01922 outputRefs.push_back( inputRefs[ i ] ) ;
01923 }
01924 }
01925 }
01926
01927 template< class TCollection >
01928 void
01929 L1ExtraParticleMapProd::evaluateDoubleSameObjectTrigger(
01930 const std::vector< edm::Ref< TCollection > >& inputRefs,
01931 const double& etThreshold,
01932 bool& decision,
01933 std::vector< edm::Ref< TCollection > >& outputRefs,
01934 l1extra::L1ParticleMap::L1IndexComboVector& combos,
01935 bool combinedWithGlobalObject )
01936 {
01937
01938
01939 for( size_t i = 0 ; i+1 < inputRefs.size() ; ++i )
01940 {
01941 const edm::Ref< TCollection >& refi = inputRefs[ i ] ;
01942 if( refi.get()->et() >= etThreshold )
01943 {
01944 for( size_t j = i+1 ; j < inputRefs.size() ; ++j )
01945 {
01946 const edm::Ref< TCollection >& refj = inputRefs[ j ] ;
01947 if( refj.get()->et() >= etThreshold )
01948 {
01949 decision = true ;
01950
01951
01952
01953 int iInList = kDefault ;
01954 int jInList = kDefault ;
01955 for( size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
01956 {
01957 if( refi == outputRefs[ iout ] )
01958 {
01959 iInList = iout ;
01960 }
01961
01962 if( refj == outputRefs[ iout ] )
01963 {
01964 jInList = iout ;
01965 }
01966 }
01967
01968
01969
01970 if( iInList == kDefault )
01971 {
01972 iInList = outputRefs.size() ;
01973 outputRefs.push_back( refi ) ;
01974 }
01975
01976 if( jInList == kDefault )
01977 {
01978 jInList = outputRefs.size() ;
01979 outputRefs.push_back( refj ) ;
01980 }
01981
01982
01983 l1extra::L1ParticleMap::L1IndexCombo combo ;
01984 combo.push_back( iInList ) ;
01985 combo.push_back( jInList ) ;
01986 if( combinedWithGlobalObject ) combo.push_back( 0 ) ;
01987 combos.push_back( combo ) ;
01988 }
01989 }
01990 }
01991 }
01992 }
01993
01994
01995 template< class TCollection >
01996 void
01997 L1ExtraParticleMapProd::evaluateTripleSameObjectTrigger(
01998 const std::vector< edm::Ref< TCollection > >& inputRefs,
01999 const double& etThreshold,
02000 bool& decision,
02001 std::vector< edm::Ref< TCollection > >& outputRefs,
02002 l1extra::L1ParticleMap::L1IndexComboVector& combos )
02003 {
02004
02005
02006 for( size_t i = 0 ; i+2 < inputRefs.size() ; ++i )
02007 {
02008 const edm::Ref< TCollection >& refi = inputRefs[ i ] ;
02009 if( refi.get()->et() >= etThreshold )
02010 {
02011 for( size_t j = i+1 ; j+1 < inputRefs.size() ; ++j )
02012 {
02013 const edm::Ref< TCollection >& refj = inputRefs[ j ] ;
02014 if( refj.get()->et() >= etThreshold )
02015 {
02016 for( size_t k = j+1 ; k < inputRefs.size() ; ++k )
02017 {
02018 const edm::Ref< TCollection >& refk = inputRefs[ k ] ;
02019 if( refk.get()->et() >= etThreshold )
02020 {
02021 decision = true ;
02022
02023
02024
02025 int iInList = kDefault ;
02026 int jInList = kDefault ;
02027 int kInList = kDefault ;
02028 for( size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
02029 {
02030 if( refi == outputRefs[ iout ] )
02031 {
02032 iInList = iout ;
02033 }
02034
02035 if( refj == outputRefs[ iout ] )
02036 {
02037 jInList = iout ;
02038 }
02039
02040 if( refk == outputRefs[ iout ] )
02041 {
02042 kInList = iout ;
02043 }
02044 }
02045
02046
02047
02048 if( iInList == kDefault )
02049 {
02050 iInList = outputRefs.size() ;
02051 outputRefs.push_back( refi );
02052 }
02053
02054 if( jInList == kDefault )
02055 {
02056 jInList = outputRefs.size() ;
02057 outputRefs.push_back( refj );
02058 }
02059
02060 if( kInList == kDefault )
02061 {
02062 kInList = outputRefs.size() ;
02063 outputRefs.push_back( refk );
02064 }
02065
02066
02067 l1extra::L1ParticleMap::L1IndexCombo combo ;
02068 combo.push_back( iInList ) ;
02069 combo.push_back( jInList ) ;
02070 combo.push_back( kInList ) ;
02071 combos.push_back( combo ) ;
02072 }
02073 }
02074 }
02075 }
02076 }
02077 }
02078 }
02079
02080
02081 template< class TCollection1, class TCollection2 >
02082 void
02083 L1ExtraParticleMapProd::evaluateDoublePlusSingleObjectTrigger(
02084 const std::vector< edm::Ref< TCollection1 > >& inputRefs1,
02085 const std::vector< edm::Ref< TCollection2 > >& inputRefs2,
02086 const double& etThreshold1,
02087 const double& etThreshold2,
02088 bool& decision,
02089 std::vector< edm::Ref< TCollection1 > >& outputRefs1,
02090 std::vector< edm::Ref< TCollection2 > >& outputRefs2,
02091 l1extra::L1ParticleMap::L1IndexComboVector& combos )
02092 {
02093
02094
02095 for( size_t i = 0 ; i+1 < inputRefs1.size() ; ++i )
02096 {
02097 const edm::Ref< TCollection1 >& refi = inputRefs1[ i ] ;
02098 if( refi.get()->et() >= etThreshold1 )
02099 {
02100 for( size_t j = i+1 ; j < inputRefs1.size() ; ++j )
02101 {
02102 const edm::Ref< TCollection1 >& refj = inputRefs1[ j ] ;
02103 if( refj.get()->et() >= etThreshold1 )
02104 {
02105 for( size_t k = 0 ; k < inputRefs2.size() ; ++k )
02106 {
02107 const edm::Ref< TCollection2 >& refk = inputRefs2[ k ] ;
02108 if( refk.get()->et() >= etThreshold2 )
02109 {
02110 decision = true ;
02111
02112
02113
02114 int iInList = kDefault ;
02115 int jInList = kDefault ;
02116
02117 for( size_t iout = 0 ;
02118 iout < outputRefs1.size() ; ++iout )
02119 {
02120 if( refi == outputRefs1[ iout ] )
02121 {
02122 iInList = iout ;
02123 }
02124
02125 if( refj == outputRefs1[ iout ] )
02126 {
02127 jInList = iout ;
02128 }
02129 }
02130
02131 int kInList = kDefault ;
02132 for( size_t kout = 0 ;
02133 kout < outputRefs2.size() ; ++kout )
02134 {
02135 if( refk == outputRefs2[ kout ] )
02136 {
02137 kInList = kout ;
02138 }
02139 }
02140
02141
02142
02143 if( iInList == kDefault )
02144 {
02145 iInList = outputRefs1.size() ;
02146 outputRefs1.push_back( refi );
02147 }
02148
02149 if( jInList == kDefault )
02150 {
02151 jInList = outputRefs1.size() ;
02152 outputRefs1.push_back( refj );
02153 }
02154
02155 if( kInList == kDefault )
02156 {
02157 kInList = outputRefs2.size() ;
02158 outputRefs2.push_back( refk );
02159 }
02160
02161
02162 l1extra::L1ParticleMap::L1IndexCombo combo ;
02163 combo.push_back( iInList ) ;
02164 combo.push_back( jInList ) ;
02165 combo.push_back( kInList ) ;
02166 combos.push_back( combo ) ;
02167 }
02168 }
02169 }
02170 }
02171 }
02172 }
02173 }
02174
02175
02176 template< class TCollection >
02177 void
02178 L1ExtraParticleMapProd::evaluateQuadSameObjectTrigger(
02179 const std::vector< edm::Ref< TCollection > >& inputRefs,
02180 const double& etThreshold,
02181 bool& decision,
02182 std::vector< edm::Ref< TCollection > >& outputRefs,
02183 l1extra::L1ParticleMap::L1IndexComboVector& combos )
02184 {
02185
02186
02187 for( size_t i = 0 ; i+3 < inputRefs.size() ; ++i )
02188 {
02189 const edm::Ref< TCollection >& refi = inputRefs[ i ] ;
02190 if( refi.get()->et() >= etThreshold )
02191 {
02192 for( size_t j = i+1 ; j+2 < inputRefs.size() ; ++j )
02193 {
02194 const edm::Ref< TCollection >& refj = inputRefs[ j ] ;
02195 if( refj.get()->et() >= etThreshold )
02196 {
02197 for( size_t k = j+1 ; k+1 < inputRefs.size() ; ++k )
02198 {
02199 const edm::Ref< TCollection >& refk = inputRefs[ k ] ;
02200 if( refk.get()->et() >= etThreshold )
02201 {
02202 for( size_t p = k+1 ; p < inputRefs.size() ; ++p )
02203 {
02204 const edm::Ref< TCollection >& refp = inputRefs[ p ] ;
02205 if( refp.get()->et() >= etThreshold )
02206 {
02207 decision = true ;
02208
02209
02210
02211 int iInList = kDefault ;
02212 int jInList = kDefault ;
02213 int kInList = kDefault ;
02214 int pInList = kDefault ;
02215 for( size_t iout = 0 ;
02216 iout < outputRefs.size() ; ++iout )
02217 {
02218 if( refi == outputRefs[ iout ] )
02219 {
02220 iInList = iout ;
02221 }
02222
02223 if( refj == outputRefs[ iout ] )
02224 {
02225 jInList = iout ;
02226 }
02227
02228 if( refk == outputRefs[ iout ] )
02229 {
02230 kInList = iout ;
02231 }
02232
02233 if( refp == outputRefs[ iout ] )
02234 {
02235 pInList = iout ;
02236 }
02237 }
02238
02239
02240
02241 if( iInList == kDefault )
02242 {
02243 iInList = outputRefs.size() ;
02244 outputRefs.push_back( refi ) ;
02245 }
02246
02247 if( jInList == kDefault )
02248 {
02249 jInList = outputRefs.size() ;
02250 outputRefs.push_back( refj ) ;
02251 }
02252
02253 if( kInList == kDefault )
02254 {
02255 kInList = outputRefs.size() ;
02256 outputRefs.push_back( refk ) ;
02257 }
02258
02259 if( pInList == kDefault )
02260 {
02261 pInList = outputRefs.size() ;
02262 outputRefs.push_back( refp ) ;
02263 }
02264
02265
02266 l1extra::L1ParticleMap::L1IndexCombo combo ;
02267 combo.push_back( iInList ) ;
02268 combo.push_back( jInList ) ;
02269 combo.push_back( kInList ) ;
02270 combo.push_back( pInList ) ;
02271 combos.push_back( combo ) ;
02272 }
02273 }
02274 }
02275 }
02276 }
02277 }
02278 }
02279 }
02280 }
02281
02282
02283 template< class TCollection1, class TCollection2 >
02284 void
02285 L1ExtraParticleMapProd::evaluateDoubleDifferentObjectTrigger(
02286 const std::vector< edm::Ref< TCollection1 > >& inputRefs1,
02287 const std::vector< edm::Ref< TCollection2 > >& inputRefs2,
02288 const double& etThreshold1,
02289 const double& etThreshold2,
02290 bool& decision,
02291 std::vector< edm::Ref< TCollection1 > >& outputRefs1,
02292 std::vector< edm::Ref< TCollection2 > >& outputRefs2,
02293 l1extra::L1ParticleMap::L1IndexComboVector& combos )
02294 {
02295 for( size_t i = 0 ; i < inputRefs1.size() ; ++i )
02296 {
02297 const edm::Ref< TCollection1 >& refi = inputRefs1[ i ] ;
02298 if( refi.get()->et() >= etThreshold1 )
02299 {
02300 for( size_t j = 0 ; j < inputRefs2.size() ; ++j )
02301 {
02302 const edm::Ref< TCollection2 >& refj = inputRefs2[ j ] ;
02303
02304 if( refj.get()->et() >= etThreshold2 )
02305 {
02306 decision = true ;
02307
02308
02309
02310 int iInList = kDefault ;
02311 for( size_t iout = 0 ; iout < outputRefs1.size() ; ++iout )
02312 {
02313 if( refi == outputRefs1[ iout ] )
02314 {
02315 iInList = iout ;
02316 }
02317 }
02318
02319 int jInList = kDefault ;
02320 for( size_t jout = 0 ; jout < outputRefs2.size() ; ++jout )
02321 {
02322 if( refj == outputRefs2[ jout ] )
02323 {
02324 jInList = jout ;
02325 }
02326 }
02327
02328
02329
02330 if( iInList == kDefault )
02331 {
02332 iInList = outputRefs1.size() ;
02333 outputRefs1.push_back( refi ) ;
02334 }
02335
02336 if( jInList == kDefault )
02337 {
02338 jInList = outputRefs2.size() ;
02339 outputRefs2.push_back( refj ) ;
02340 }
02341
02342
02343 l1extra::L1ParticleMap::L1IndexCombo combo ;
02344 combo.push_back( iInList ) ;
02345 combo.push_back( jInList ) ;
02346 combos.push_back( combo ) ;
02347 }
02348 }
02349 }
02350 }
02351 }
02352
02353
02354 template< class TCollection >
02355 void
02356 L1ExtraParticleMapProd::evaluateDoubleDifferentObjectSameTypeTrigger(
02357 const std::vector< edm::Ref< TCollection > >& inputRefs1,
02358 const std::vector< edm::Ref< TCollection > >& inputRefs2,
02359 const double& etThreshold1,
02360 const double& etThreshold2,
02361 bool& decision,
02362 std::vector< edm::Ref< TCollection > >& outputRefs,
02363 l1extra::L1ParticleMap::L1IndexComboVector& combos )
02364 {
02365 for( size_t i = 0 ; i < inputRefs1.size() ; ++i )
02366 {
02367 const edm::Ref< TCollection >& refi = inputRefs1[ i ] ;
02368 if( refi.get()->et() >= etThreshold1 )
02369 {
02370 for( size_t j = 0 ; j < inputRefs2.size() ; ++j )
02371 {
02372 const edm::Ref< TCollection >& refj = inputRefs2[ j ] ;
02373
02374 if( refj.get()->et() >= etThreshold2 &&
02375 refi != refj )
02376 {
02377 decision = true ;
02378
02379
02380
02381 int iInList = kDefault ;
02382 for( size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
02383 {
02384 if( refi == outputRefs[ iout ] )
02385 {
02386 iInList = iout ;
02387 }
02388 }
02389
02390 int jInList = kDefault ;
02391 for( size_t jout = 0 ; jout < outputRefs.size() ; ++jout )
02392 {
02393 if( refj == outputRefs[ jout ] )
02394 {
02395 jInList = jout ;
02396 }
02397 }
02398
02399
02400
02401 if( iInList == kDefault )
02402 {
02403 iInList = outputRefs.size() ;
02404 outputRefs.push_back( refi ) ;
02405 }
02406
02407 if( jInList == kDefault )
02408 {
02409 jInList = outputRefs.size() ;
02410 outputRefs.push_back( refj ) ;
02411 }
02412
02413
02414 l1extra::L1ParticleMap::L1IndexCombo combo ;
02415 combo.push_back( iInList ) ;
02416 combo.push_back( jInList ) ;
02417 combos.push_back( combo ) ;
02418 }
02419 }
02420 }
02421 }
02422 }
02423
02424 void
02425 L1ExtraParticleMapProd::evaluateDoubleDifferentCaloObjectTrigger(
02426 const l1extra::L1EmParticleVectorRef& inputRefs1,
02427 const l1extra::L1JetParticleVectorRef& inputRefs2,
02428 const double& etThreshold1,
02429 const double& etThreshold2,
02430 bool& decision,
02431 l1extra::L1EmParticleVectorRef& outputRefs1,
02432 l1extra::L1JetParticleVectorRef& outputRefs2,
02433 l1extra::L1ParticleMap::L1IndexComboVector& combos )
02434 {
02435 for( size_t i = 0 ; i < inputRefs1.size() ; ++i )
02436 {
02437 const l1extra::L1EmParticleRef& refi = inputRefs1[ i ] ;
02438 if( refi.get()->et() >= etThreshold1 )
02439 {
02440 for( size_t j = 0 ; j < inputRefs2.size() ; ++j )
02441 {
02442 const l1extra::L1JetParticleRef& refj = inputRefs2[ j ] ;
02443
02444
02445 if( refj.get()->et() >= etThreshold2 &&
02446 ( refi.get()->gctEmCand() == 0 ||
02447 refj.get()->gctJetCand() == 0 ||
02448 refi.get()->gctEmCand()->regionId() !=
02449 refj.get()->gctJetCand()->regionId() ) )
02450 {
02451 decision = true ;
02452
02453
02454
02455 int iInList = kDefault ;
02456 for( size_t iout = 0 ; iout < outputRefs1.size() ; ++iout )
02457 {
02458 if( refi == outputRefs1[ iout ] )
02459 {
02460 iInList = iout ;
02461 }
02462 }
02463
02464 int jInList = kDefault ;
02465 for( size_t jout = 0 ; jout < outputRefs2.size() ; ++jout )
02466 {
02467 if( refj == outputRefs2[ jout ] )
02468 {
02469 jInList = jout ;
02470 }
02471 }
02472
02473
02474
02475 if( iInList == kDefault )
02476 {
02477 iInList = outputRefs1.size() ;
02478 outputRefs1.push_back( refi ) ;
02479 }
02480
02481 if( jInList == kDefault )
02482 {
02483 jInList = outputRefs2.size() ;
02484 outputRefs2.push_back( refj ) ;
02485 }
02486
02487
02488 l1extra::L1ParticleMap::L1IndexCombo combo ;
02489 combo.push_back( iInList ) ;
02490 combo.push_back( jInList ) ;
02491 combos.push_back( combo ) ;
02492 }
02493 }
02494 }
02495 }
02496 }
02497
02498
02499 void L1ExtraParticleMapProd::evaluateJetGapJetTrigger(
02500 const l1extra::L1JetParticleVectorRef& inputRefs,
02501 const double& etThreshold,
02502 bool& decision,
02503 l1extra::L1JetParticleVectorRef& outputRefs,
02504 l1extra::L1ParticleMap::L1IndexComboVector& combos )
02505 {
02506
02507
02508 for( size_t i = 0 ; i+1 < inputRefs.size() ; ++i )
02509 {
02510 const l1extra::L1JetParticleRef& refi = inputRefs[ i ] ;
02511 if( refi.get()->et() >= etThreshold )
02512 {
02513 for( size_t j = i+1 ; j < inputRefs.size() ; ++j )
02514 {
02515 const l1extra::L1JetParticleRef& refj = inputRefs[ j ] ;
02516 if( ( refj.get()->et() >= etThreshold ) &&
02517 ( ( ( refi.get()->eta() < 0. ) && ( refj.get()->eta() > 0. ) )
02518 ||
02519 ( ( refi.get()->eta() > 0. ) && ( refj.get()->eta() < 0. ) )
02520 )
02521 )
02522 {
02523 decision = true ;
02524
02525
02526
02527 int iInList = kDefault ;
02528 int jInList = kDefault ;
02529 for( size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
02530 {
02531 if( refi == outputRefs[ iout ] )
02532 {
02533 iInList = iout ;
02534 }
02535
02536 if( refj == outputRefs[ iout ] )
02537 {
02538 jInList = iout ;
02539 }
02540 }
02541
02542
02543
02544 if( iInList == kDefault )
02545 {
02546 iInList = outputRefs.size() ;
02547 outputRefs.push_back( refi ) ;
02548 }
02549
02550 if( jInList == kDefault )
02551 {
02552 jInList = outputRefs.size() ;
02553 outputRefs.push_back( refj ) ;
02554 }
02555
02556
02557 l1extra::L1ParticleMap::L1IndexCombo combo ;
02558 combo.push_back( iInList ) ;
02559 combo.push_back( jInList ) ;
02560 combos.push_back( combo ) ;
02561 }
02562 }
02563 }
02564 }
02565 }
02566
02567
02568
02569 void
02570 L1ExtraParticleMapProd::evaluateForwardRapidityGap(
02571 const l1extra::L1JetParticleVectorRef& inputRefs,
02572 const double& etThreshold,
02573 bool& decision
02574 )
02575 {
02576 decision = true;
02577
02578
02579 for( size_t k = 0 ; k+1 < inputRefs.size() ; ++k )
02580 {
02581 const l1extra::L1JetParticleRef& refk = inputRefs[ k ] ;
02582 double etak = refk.get()->eta();
02583 if( ( refk.get()->type() == l1extra::L1JetParticle::kForward ) &&
02584 ( refk.get()->et() >= etThreshold ) )
02585 {
02586 for( size_t l = k+1 ; l < inputRefs.size() ; ++l )
02587 {
02588 const l1extra::L1JetParticleRef& refl = inputRefs[ l ] ;
02589 double etal = refl.get()->eta();
02590 if( (refl.get()->type()==l1extra::L1JetParticle::kForward) &&
02591 (refl.get()->et() >= etThreshold ) &&
02592 ((etak>0 && etal<0) || (etak<0 && etal>0)) )
02593 {
02594 decision = false ;
02595 return ;
02596 }
02597 }
02598 }
02599 }
02600 }
02601
02602 void
02603 L1ExtraParticleMapProd::evaluateDoubleExclusiveIsoEG(
02604 const l1extra::L1EmParticleVectorRef& inputRefs1,
02605 const l1extra::L1JetParticleVectorRef& inputRefs2,
02606 const double& etThreshold1,
02607 const double& etThreshold2,
02608 bool& decision,
02609 l1extra::L1EmParticleVectorRef& outputRefs1,
02610 l1extra::L1ParticleMap::L1IndexComboVector& combos )
02611 {
02612 if ( inputRefs1.size() ==2 )
02613 {
02614 decision=true;
02615 if (inputRefs2.size()>0)
02616 {
02617 for( size_t j = 0 ; j < inputRefs2.size() ; ++j )
02618 {
02619 if(inputRefs2[j].get()->gctJetCand()->regionId() ==
02620 inputRefs1[0].get()->gctEmCand()->regionId())continue;
02621 if(inputRefs2[j].get()->gctJetCand()->regionId() ==
02622 inputRefs1[1].get()->gctEmCand()->regionId())continue;
02623 if(inputRefs2[j].get()->et( )> etThreshold2 ) {
02624 decision=false; break; }
02625
02626 }
02627 }
02628 if(decision)
02629 {
02630 decision = false;
02631 evaluateDoubleSameObjectTrigger( inputRefs1,
02632 etThreshold1,
02633 decision,
02634 outputRefs1,
02635 combos ) ;
02636 }
02637 }
02638 }
02639
02640
02641
02642