CMS 3D CMS Logo

L1ExtraParticleMapProd Class Reference

L1Trigger/L1ExtraFromDigis/interface/L1ExtraParticleMapProd.h. More...

#include <L1Trigger/L1ExtraFromDigis/interface/L1ExtraParticleMapProd.h>

Inheritance diagram for L1ExtraParticleMapProd:

edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

 L1ExtraParticleMapProd (const edm::ParameterSet &)
virtual void produce (edm::Event &, const edm::EventSetup &)
 ~L1ExtraParticleMapProd ()

Private Member Functions

template<class TCollection>
void addToVectorRefs (const edm::Handle< TCollection > &handle, std::vector< edm::Ref< TCollection > > &vectorRefs)
void evaluateDoubleDifferentCaloObjectTrigger (const l1extra::L1EmParticleVectorRef &inputRefs1, const l1extra::L1JetParticleVectorRef &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, l1extra::L1EmParticleVectorRef &outputRefs1, l1extra::L1JetParticleVectorRef &outputRefs2, l1extra::L1ParticleMap::L1IndexComboVector &combos)
template<class TCollection>
void evaluateDoubleDifferentObjectSameTypeTrigger (const std::vector< edm::Ref< TCollection > > &inputRefs1, const std::vector< edm::Ref< TCollection > > &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, std::vector< edm::Ref< TCollection > > &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos)
template<class TCollection1, class TCollection2>
void evaluateDoubleDifferentObjectTrigger (const std::vector< edm::Ref< TCollection1 > > &inputRefs1, const std::vector< edm::Ref< TCollection2 > > &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, std::vector< edm::Ref< TCollection1 > > &outputRefs1, std::vector< edm::Ref< TCollection2 > > &outputRefs2, l1extra::L1ParticleMap::L1IndexComboVector &combos)
void evaluateDoubleExclusiveIsoEG (const l1extra::L1EmParticleVectorRef &inputRefs1, const l1extra::L1JetParticleVectorRef &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, l1extra::L1EmParticleVectorRef &outputRefs1, l1extra::L1ParticleMap::L1IndexComboVector &combos)
template<class TCollection1, class TCollection2>
void evaluateDoublePlusSingleObjectTrigger (const std::vector< edm::Ref< TCollection1 > > &inputRefs1, const std::vector< edm::Ref< TCollection2 > > &inputRefs2, const double &etThreshold1, const double &etThreshold2, bool &decision, std::vector< edm::Ref< TCollection1 > > &outputRefs1, std::vector< edm::Ref< TCollection2 > > &outputRefs2, l1extra::L1ParticleMap::L1IndexComboVector &combos)
template<class TCollection>
void evaluateDoubleSameObjectTrigger (const std::vector< edm::Ref< TCollection > > &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection > > &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos, bool combinedWithGlobalObject=false)
void evaluateForwardRapidityGap (const l1extra::L1JetParticleVectorRef &inputRefs, const double &etThreshold, bool &decision)
void evaluateJetGapJetTrigger (const l1extra::L1JetParticleVectorRef &inputRefs, const double &etThreshold, bool &decision, l1extra::L1JetParticleVectorRef &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos)
template<class TCollection>
void evaluateQuadSameObjectTrigger (const std::vector< edm::Ref< TCollection > > &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection > > &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos)
template<class TCollection>
void evaluateSingleObjectTrigger (const std::vector< edm::Ref< TCollection > > &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection > > &outputRefs)
template<class TCollection>
void evaluateTripleSameObjectTrigger (const std::vector< edm::Ref< TCollection > > &inputRefs, const double &etThreshold, bool &decision, std::vector< edm::Ref< TCollection > > &outputRefs, l1extra::L1ParticleMap::L1IndexComboVector &combos)

Private Attributes

edm::InputTag cenJetSource_
std::pair< double, double > doubleThresholds_ [l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
edm::InputTag etMissSource_
edm::InputTag forJetSource_
edm::InputTag isoEmSource_
edm::InputTag muonSource_
edm::InputTag nonIsoEmSource_
int prescaleCounters_ [l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
int prescales_ [l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
double singleThresholds_ [l1extra::L1ParticleMap::kNumOfL1TriggerTypes]
edm::InputTag tauJetSource_


Detailed Description

L1Trigger/L1ExtraFromDigis/interface/L1ExtraParticleMapProd.h.

L1Trigger/L1ExtraParticleMapProd/src/L1ExtraParticleMapProd.cc.

Author:
Werner Sun
Description: producer of L1ParticleMap objects from GT emulator object maps.

Author:
Werner Sun

Definition at line 39 of file L1ExtraParticleMapProd.h.


Constructor & Destructor Documentation

L1ExtraParticleMapProd::L1ExtraParticleMapProd ( const edm::ParameterSet iConfig  )  [explicit]

Definition at line 42 of file L1ExtraParticleMapProd.cc.

References doubleThresholds_, edm::ParameterSet::getParameter(), i, prescaleCounters_, prescales_, and singleThresholds_.

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 {
00059    using namespace l1extra ;
00060 
00061    //register your products
00062    produces< L1ParticleMapCollection >() ;
00063    produces< L1GlobalTriggerReadoutRecord >(); 
00064 
00065    //now do what ever other initialization is needed
00066    for( int i = 0 ; i < L1ParticleMap::kNumOfL1TriggerTypes ; ++i )
00067    {
00068       singleThresholds_[ i ] = 0. ;
00069       doubleThresholds_[ i ].first = 0. ;
00070       doubleThresholds_[ i ].second = 0. ;
00071       prescaleCounters_[ i ] = 1 ;
00072       prescales_[ i ] = 1 ;
00073    }
00074 
00075    // Single object triggers, 5 thresholds each
00076 
00077    singleThresholds_[ L1ParticleMap::kSingleMu3 ] =
00078       iConfig.getParameter< double >( "L1_SingleMu3_thresh" ) ;
00079    prescales_[ L1ParticleMap::kSingleMu3 ] =
00080       iConfig.getParameter< int >( "L1_SingleMu3_prescale" ) ;
00081    singleThresholds_[ L1ParticleMap::kSingleMu5 ] =
00082       iConfig.getParameter< double >( "L1_SingleMu5_thresh" ) ;
00083    prescales_[ L1ParticleMap::kSingleMu5 ] =
00084       iConfig.getParameter< int >( "L1_SingleMu5_prescale" ) ;
00085    singleThresholds_[ L1ParticleMap::kSingleMu7 ] =
00086       iConfig.getParameter< double >( "L1_SingleMu7_thresh" ) ;
00087    prescales_[ L1ParticleMap::kSingleMu7 ] =
00088       iConfig.getParameter< int >( "L1_SingleMu7_prescale" ) ;
00089    singleThresholds_[ L1ParticleMap::kSingleMu10 ] =
00090       iConfig.getParameter< double >( "L1_SingleMu10_thresh" ) ;
00091    prescales_[ L1ParticleMap::kSingleMu10 ] =
00092       iConfig.getParameter< int >( "L1_SingleMu10_prescale" ) ;
00093    singleThresholds_[ L1ParticleMap::kSingleMu14 ] =
00094       iConfig.getParameter< double >( "L1_SingleMu14_thresh" ) ;
00095    prescales_[ L1ParticleMap::kSingleMu14 ] =
00096       iConfig.getParameter< int >( "L1_SingleMu14_prescale" ) ;
00097    singleThresholds_[ L1ParticleMap::kSingleMu20 ] =
00098       iConfig.getParameter< double >( "L1_SingleMu20_thresh" ) ;
00099    prescales_[ L1ParticleMap::kSingleMu20 ] =
00100       iConfig.getParameter< int >( "L1_SingleMu20_prescale" ) ;
00101    singleThresholds_[ L1ParticleMap::kSingleMu25 ] =
00102       iConfig.getParameter< double >( "L1_SingleMu25_thresh" ) ;
00103    prescales_[ L1ParticleMap::kSingleMu25 ] =
00104       iConfig.getParameter< int >( "L1_SingleMu25_prescale" ) ;
00105 
00106    singleThresholds_[ L1ParticleMap::kSingleIsoEG5 ] =
00107       iConfig.getParameter< double >( "L1_SingleIsoEG5_thresh" ) ;
00108    prescales_[ L1ParticleMap::kSingleIsoEG5 ] =
00109       iConfig.getParameter< int >( "L1_SingleIsoEG5_prescale" ) ;
00110    singleThresholds_[ L1ParticleMap::kSingleIsoEG8 ] =
00111       iConfig.getParameter< double >( "L1_SingleIsoEG8_thresh" ) ;
00112    prescales_[ L1ParticleMap::kSingleIsoEG8 ] =
00113       iConfig.getParameter< int >( "L1_SingleIsoEG8_prescale" ) ;
00114    singleThresholds_[ L1ParticleMap::kSingleIsoEG10 ] =
00115       iConfig.getParameter< double >( "L1_SingleIsoEG10_thresh" ) ;
00116    prescales_[ L1ParticleMap::kSingleIsoEG10 ] =
00117       iConfig.getParameter< int >( "L1_SingleIsoEG10_prescale" ) ;
00118    singleThresholds_[ L1ParticleMap::kSingleIsoEG12 ] =
00119       iConfig.getParameter< double >( "L1_SingleIsoEG12_thresh" ) ;
00120    prescales_[ L1ParticleMap::kSingleIsoEG12 ] =
00121       iConfig.getParameter< int >( "L1_SingleIsoEG12_prescale" ) ;
00122    singleThresholds_[ L1ParticleMap::kSingleIsoEG15 ] =
00123       iConfig.getParameter< double >( "L1_SingleIsoEG15_thresh" ) ;
00124    prescales_[ L1ParticleMap::kSingleIsoEG15 ] =
00125       iConfig.getParameter< int >( "L1_SingleIsoEG15_prescale" ) ;
00126    singleThresholds_[ L1ParticleMap::kSingleIsoEG20 ] =
00127       iConfig.getParameter< double >( "L1_SingleIsoEG20_thresh" ) ;
00128    prescales_[ L1ParticleMap::kSingleIsoEG20 ] =
00129       iConfig.getParameter< int >( "L1_SingleIsoEG20_prescale" ) ;
00130    singleThresholds_[ L1ParticleMap::kSingleIsoEG25 ] =
00131       iConfig.getParameter< double >( "L1_SingleIsoEG25_thresh" ) ;
00132    prescales_[ L1ParticleMap::kSingleIsoEG25 ] =
00133       iConfig.getParameter< int >( "L1_SingleIsoEG25_prescale" ) ;
00134 
00135    singleThresholds_[ L1ParticleMap::kSingleEG5 ] =
00136       iConfig.getParameter< double >( "L1_SingleEG5_thresh" ) ;
00137    prescales_[ L1ParticleMap::kSingleEG5 ] =
00138       iConfig.getParameter< int >( "L1_SingleEG5_prescale" ) ;
00139    singleThresholds_[ L1ParticleMap::kSingleEG8 ] =
00140       iConfig.getParameter< double >( "L1_SingleEG8_thresh" ) ;
00141    prescales_[ L1ParticleMap::kSingleEG8 ] =
00142       iConfig.getParameter< int >( "L1_SingleEG8_prescale" ) ;
00143    singleThresholds_[ L1ParticleMap::kSingleEG10 ] =
00144       iConfig.getParameter< double >( "L1_SingleEG10_thresh" ) ;
00145    prescales_[ L1ParticleMap::kSingleEG10 ] =
00146       iConfig.getParameter< int >( "L1_SingleEG10_prescale" ) ;
00147    singleThresholds_[ L1ParticleMap::kSingleEG12 ] =
00148       iConfig.getParameter< double >( "L1_SingleEG12_thresh" ) ;
00149    prescales_[ L1ParticleMap::kSingleEG12 ] =
00150       iConfig.getParameter< int >( "L1_SingleEG12_prescale" ) ;
00151    singleThresholds_[ L1ParticleMap::kSingleEG15 ] =
00152       iConfig.getParameter< double >( "L1_SingleEG15_thresh" ) ;
00153    prescales_[ L1ParticleMap::kSingleEG15 ] =
00154       iConfig.getParameter< int >( "L1_SingleEG15_prescale" ) ;
00155    singleThresholds_[ L1ParticleMap::kSingleEG20 ] =
00156       iConfig.getParameter< double >( "L1_SingleEG20_thresh" ) ;
00157    prescales_[ L1ParticleMap::kSingleEG20 ] =
00158       iConfig.getParameter< int >( "L1_SingleEG20_prescale" ) ;
00159    singleThresholds_[ L1ParticleMap::kSingleEG25 ] =
00160       iConfig.getParameter< double >( "L1_SingleEG25_thresh" ) ;
00161    prescales_[ L1ParticleMap::kSingleEG25 ] =
00162       iConfig.getParameter< int >( "L1_SingleEG25_prescale" ) ;
00163 
00164    singleThresholds_[ L1ParticleMap::kSingleJet15 ] =
00165       iConfig.getParameter< double >( "L1_SingleJet15_thresh" ) ;
00166    prescales_[ L1ParticleMap::kSingleJet15 ] =
00167       iConfig.getParameter< int >( "L1_SingleJet15_prescale" ) ;
00168    singleThresholds_[ L1ParticleMap::kSingleJet20 ] =
00169       iConfig.getParameter< double >( "L1_SingleJet20_thresh" ) ;
00170    prescales_[ L1ParticleMap::kSingleJet20 ] =
00171       iConfig.getParameter< int >( "L1_SingleJet20_prescale" ) ;
00172    singleThresholds_[ L1ParticleMap::kSingleJet30 ] =
00173       iConfig.getParameter< double >( "L1_SingleJet30_thresh" ) ;
00174    prescales_[ L1ParticleMap::kSingleJet30 ] =
00175       iConfig.getParameter< int >( "L1_SingleJet30_prescale" ) ;
00176    singleThresholds_[ L1ParticleMap::kSingleJet50 ] =
00177       iConfig.getParameter< double >( "L1_SingleJet50_thresh" ) ;
00178    prescales_[ L1ParticleMap::kSingleJet50 ] =
00179       iConfig.getParameter< int >( "L1_SingleJet50_prescale" ) ;
00180    singleThresholds_[ L1ParticleMap::kSingleJet70 ] =
00181       iConfig.getParameter< double >( "L1_SingleJet70_thresh" ) ;
00182    prescales_[ L1ParticleMap::kSingleJet70 ] =
00183       iConfig.getParameter< int >( "L1_SingleJet70_prescale" ) ;
00184    singleThresholds_[ L1ParticleMap::kSingleJet100 ] =
00185       iConfig.getParameter< double >( "L1_SingleJet100_thresh" ) ;
00186    prescales_[ L1ParticleMap::kSingleJet100 ] =
00187       iConfig.getParameter< int >( "L1_SingleJet100_prescale" ) ;
00188    singleThresholds_[ L1ParticleMap::kSingleJet150 ] =
00189       iConfig.getParameter< double >( "L1_SingleJet150_thresh" ) ;
00190    prescales_[ L1ParticleMap::kSingleJet150 ] =
00191       iConfig.getParameter< int >( "L1_SingleJet150_prescale" ) ;
00192    singleThresholds_[ L1ParticleMap::kSingleJet200 ] =
00193       iConfig.getParameter< double >( "L1_SingleJet200_thresh" ) ;
00194    prescales_[ L1ParticleMap::kSingleJet200 ] =
00195       iConfig.getParameter< int >( "L1_SingleJet200_prescale" ) ;
00196 
00197    singleThresholds_[ L1ParticleMap::kSingleTauJet10 ] =
00198       iConfig.getParameter< double >( "L1_SingleTauJet10_thresh" ) ;
00199    prescales_[ L1ParticleMap::kSingleTauJet10 ] =
00200       iConfig.getParameter< int >( "L1_SingleTauJet10_prescale" ) ;
00201    singleThresholds_[ L1ParticleMap::kSingleTauJet20 ] =
00202       iConfig.getParameter< double >( "L1_SingleTauJet20_thresh" ) ;
00203    prescales_[ L1ParticleMap::kSingleTauJet20 ] =
00204       iConfig.getParameter< int >( "L1_SingleTauJet20_prescale" ) ;
00205    singleThresholds_[ L1ParticleMap::kSingleTauJet30 ] =
00206       iConfig.getParameter< double >( "L1_SingleTauJet30_thresh" ) ;
00207    prescales_[ L1ParticleMap::kSingleTauJet30 ] =
00208       iConfig.getParameter< int >( "L1_SingleTauJet30_prescale" ) ;
00209    singleThresholds_[ L1ParticleMap::kSingleTauJet35 ] =
00210       iConfig.getParameter< double >( "L1_SingleTauJet35_thresh" ) ;
00211    prescales_[ L1ParticleMap::kSingleTauJet35 ] =
00212       iConfig.getParameter< int >( "L1_SingleTauJet35_prescale" ) ;
00213    singleThresholds_[ L1ParticleMap::kSingleTauJet40 ] =
00214       iConfig.getParameter< double >( "L1_SingleTauJet40_thresh" ) ;
00215    prescales_[ L1ParticleMap::kSingleTauJet40 ] =
00216       iConfig.getParameter< int >( "L1_SingleTauJet40_prescale" ) ;
00217    singleThresholds_[ L1ParticleMap::kSingleTauJet60 ] =
00218       iConfig.getParameter< double >( "L1_SingleTauJet60_thresh" ) ;
00219    prescales_[ L1ParticleMap::kSingleTauJet60 ] =
00220       iConfig.getParameter< int >( "L1_SingleTauJet60_prescale" ) ;
00221    singleThresholds_[ L1ParticleMap::kSingleTauJet80 ] =
00222       iConfig.getParameter< double >( "L1_SingleTauJet80_thresh" ) ;
00223    prescales_[ L1ParticleMap::kSingleTauJet80 ] =
00224       iConfig.getParameter< int >( "L1_SingleTauJet80_prescale" ) ;
00225    singleThresholds_[ L1ParticleMap::kSingleTauJet100 ] =
00226       iConfig.getParameter< double >( "L1_SingleTauJet100_thresh" ) ;
00227    prescales_[ L1ParticleMap::kSingleTauJet100 ] =
00228       iConfig.getParameter< int >( "L1_SingleTauJet100_prescale" ) ;
00229 
00230    singleThresholds_[ L1ParticleMap::kHTT100 ] =
00231       iConfig.getParameter< double >( "L1_HTT100_thresh" ) ;
00232    prescales_[ L1ParticleMap::kHTT100 ] =
00233       iConfig.getParameter< int >( "L1_HTT100_prescale" ) ;
00234    singleThresholds_[ L1ParticleMap::kHTT200 ] =
00235       iConfig.getParameter< double >( "L1_HTT200_thresh" ) ;
00236    prescales_[ L1ParticleMap::kHTT200 ] =
00237       iConfig.getParameter< int >( "L1_HTT200_prescale" ) ;
00238    singleThresholds_[ L1ParticleMap::kHTT250 ] =
00239       iConfig.getParameter< double >( "L1_HTT250_thresh" ) ;
00240    prescales_[ L1ParticleMap::kHTT250 ] =
00241       iConfig.getParameter< int >( "L1_HTT250_prescale" ) ;
00242    singleThresholds_[ L1ParticleMap::kHTT300 ] =
00243       iConfig.getParameter< double >( "L1_HTT300_thresh" ) ;
00244    prescales_[ L1ParticleMap::kHTT300 ] =
00245       iConfig.getParameter< int >( "L1_HTT300_prescale" ) ;
00246    singleThresholds_[ L1ParticleMap::kHTT400 ] =
00247       iConfig.getParameter< double >( "L1_HTT400_thresh" ) ;
00248    prescales_[ L1ParticleMap::kHTT400 ] =
00249       iConfig.getParameter< int >( "L1_HTT400_prescale" ) ;
00250    singleThresholds_[ L1ParticleMap::kHTT500 ] =
00251       iConfig.getParameter< double >( "L1_HTT500_thresh" ) ;
00252    prescales_[ L1ParticleMap::kHTT500 ] =
00253       iConfig.getParameter< int >( "L1_HTT500_prescale" ) ;
00254 
00255    singleThresholds_[ L1ParticleMap::kETM10 ] =
00256       iConfig.getParameter< double >( "L1_ETM10_thresh" ) ;
00257    prescales_[ L1ParticleMap::kETM10 ] =
00258       iConfig.getParameter< int >( "L1_ETM10_prescale" ) ;
00259    singleThresholds_[ L1ParticleMap::kETM15 ] =
00260       iConfig.getParameter< double >( "L1_ETM15_thresh" ) ;
00261    prescales_[ L1ParticleMap::kETM15 ] =
00262       iConfig.getParameter< int >( "L1_ETM15_prescale" ) ;
00263    singleThresholds_[ L1ParticleMap::kETM20 ] =
00264       iConfig.getParameter< double >( "L1_ETM20_thresh" ) ;
00265    prescales_[ L1ParticleMap::kETM20 ] =
00266       iConfig.getParameter< int >( "L1_ETM20_prescale" ) ;
00267    singleThresholds_[ L1ParticleMap::kETM30 ] =
00268       iConfig.getParameter< double >( "L1_ETM30_thresh" ) ;
00269    prescales_[ L1ParticleMap::kETM30 ] =
00270       iConfig.getParameter< int >( "L1_ETM30_prescale" ) ;
00271    singleThresholds_[ L1ParticleMap::kETM40 ] =
00272       iConfig.getParameter< double >( "L1_ETM40_thresh" ) ;
00273    prescales_[ L1ParticleMap::kETM40 ] =
00274       iConfig.getParameter< int >( "L1_ETM40_prescale" ) ;
00275    singleThresholds_[ L1ParticleMap::kETM50 ] =
00276       iConfig.getParameter< double >( "L1_ETM50_thresh" ) ;
00277    prescales_[ L1ParticleMap::kETM50 ] =
00278       iConfig.getParameter< int >( "L1_ETM50_prescale" ) ;
00279    singleThresholds_[ L1ParticleMap::kETM60 ] =
00280       iConfig.getParameter< double >( "L1_ETM60_thresh" ) ;
00281    prescales_[ L1ParticleMap::kETM60 ] =
00282       iConfig.getParameter< int >( "L1_ETM60_prescale" ) ;
00283 
00284    singleThresholds_[ L1ParticleMap::kETT60 ] =
00285       iConfig.getParameter< double >( "L1_ETT60_thresh" ) ;
00286    prescales_[ L1ParticleMap::kETT60 ] =
00287       iConfig.getParameter< int >( "L1_ETT60_prescale" ) ;
00288 
00289    // AA triggers
00290 
00291    singleThresholds_[ L1ParticleMap::kDoubleMu3 ] =
00292       iConfig.getParameter< double >( "L1_DoubleMu3_thresh" ) ;
00293    prescales_[ L1ParticleMap::kDoubleMu3 ] =
00294       iConfig.getParameter< int >( "L1_DoubleMu3_prescale" ) ;
00295 
00296    singleThresholds_[ L1ParticleMap::kDoubleIsoEG8 ] =
00297       iConfig.getParameter< double >( "L1_DoubleIsoEG8_thresh" ) ;
00298    prescales_[ L1ParticleMap::kDoubleIsoEG8 ] =
00299       iConfig.getParameter< int >( "L1_DoubleIsoEG8_prescale" ) ;
00300    singleThresholds_[ L1ParticleMap::kDoubleIsoEG10 ] =
00301       iConfig.getParameter< double >( "L1_DoubleIsoEG10_thresh" ) ;
00302    prescales_[ L1ParticleMap::kDoubleIsoEG10 ] =
00303       iConfig.getParameter< int >( "L1_DoubleIsoEG10_prescale" ) ;
00304 
00305    singleThresholds_[ L1ParticleMap::kDoubleEG5 ] =
00306       iConfig.getParameter< double >( "L1_DoubleEG5_thresh" ) ;
00307    prescales_[ L1ParticleMap::kDoubleEG5 ] =
00308       iConfig.getParameter< int >( "L1_DoubleEG5_prescale" ) ;
00309    singleThresholds_[ L1ParticleMap::kDoubleEG10 ] =
00310       iConfig.getParameter< double >( "L1_DoubleEG10_thresh" ) ;
00311    prescales_[ L1ParticleMap::kDoubleEG10 ] =
00312       iConfig.getParameter< int >( "L1_DoubleEG10_prescale" ) ;
00313    singleThresholds_[ L1ParticleMap::kDoubleEG15 ] =
00314       iConfig.getParameter< double >( "L1_DoubleEG15_thresh" ) ;
00315    prescales_[ L1ParticleMap::kDoubleEG15 ] =
00316       iConfig.getParameter< int >( "L1_DoubleEG15_prescale" ) ;
00317 
00318    singleThresholds_[ L1ParticleMap::kDoubleJet70 ] =
00319       iConfig.getParameter< double >( "L1_DoubleJet70_thresh" ) ;
00320    prescales_[ L1ParticleMap::kDoubleJet70 ] =
00321       iConfig.getParameter< int >( "L1_DoubleJet70_prescale" ) ;
00322    singleThresholds_[ L1ParticleMap::kDoubleJet100 ] =
00323       iConfig.getParameter< double >( "L1_DoubleJet100_thresh" ) ;
00324    prescales_[ L1ParticleMap::kDoubleJet100 ] =
00325       iConfig.getParameter< int >( "L1_DoubleJet100_prescale" ) ;
00326 
00327    singleThresholds_[ L1ParticleMap::kDoubleTauJet20 ] =
00328       iConfig.getParameter< double >( "L1_DoubleTauJet20_thresh" ) ;
00329    prescales_[ L1ParticleMap::kDoubleTauJet20 ] =
00330       iConfig.getParameter< int >( "L1_DoubleTauJet20_prescale" ) ;
00331    singleThresholds_[ L1ParticleMap::kDoubleTauJet30 ] =
00332       iConfig.getParameter< double >( "L1_DoubleTauJet30_thresh" ) ;
00333    prescales_[ L1ParticleMap::kDoubleTauJet30 ] =
00334       iConfig.getParameter< int >( "L1_DoubleTauJet30_prescale" ) ;
00335    singleThresholds_[ L1ParticleMap::kDoubleTauJet35 ] =
00336       iConfig.getParameter< double >( "L1_DoubleTauJet35_thresh" ) ;
00337    prescales_[ L1ParticleMap::kDoubleTauJet35 ] =
00338       iConfig.getParameter< int >( "L1_DoubleTauJet35_prescale" ) ;
00339    singleThresholds_[ L1ParticleMap::kDoubleTauJet40 ] =
00340       iConfig.getParameter< double >( "L1_DoubleTauJet40_thresh" ) ;
00341    prescales_[ L1ParticleMap::kDoubleTauJet40 ] =
00342       iConfig.getParameter< int >( "L1_DoubleTauJet40_prescale" ) ;
00343 
00344    // AB triggers
00345 
00346    doubleThresholds_[ L1ParticleMap::kMu3_IsoEG5 ].first =
00347       iConfig.getParameter< double >( "L1_Mu3_IsoEG5_thresh1" ) ;
00348    doubleThresholds_[ L1ParticleMap::kMu3_IsoEG5 ].second =
00349       iConfig.getParameter< double >( "L1_Mu3_IsoEG5_thresh2" ) ;
00350    prescales_[ L1ParticleMap::kMu3_IsoEG5 ] =
00351       iConfig.getParameter< int >( "L1_Mu3_IsoEG5_prescale" ) ;
00352    doubleThresholds_[ L1ParticleMap::kMu5_IsoEG10 ].first =
00353       iConfig.getParameter< double >( "L1_Mu5_IsoEG10_thresh1" ) ;
00354    doubleThresholds_[ L1ParticleMap::kMu5_IsoEG10 ].second =
00355       iConfig.getParameter< double >( "L1_Mu5_IsoEG10_thresh2" ) ;
00356    prescales_[ L1ParticleMap::kMu5_IsoEG10 ] =
00357       iConfig.getParameter< int >( "L1_Mu5_IsoEG10_prescale" ) ;
00358 
00359    doubleThresholds_[ L1ParticleMap::kMu3_EG12 ].first =
00360       iConfig.getParameter< double >( "L1_Mu3_EG12_thresh1" ) ;
00361    doubleThresholds_[ L1ParticleMap::kMu3_EG12 ].second =
00362       iConfig.getParameter< double >( "L1_Mu3_EG12_thresh2" ) ;
00363    prescales_[ L1ParticleMap::kMu3_EG12 ] =
00364       iConfig.getParameter< int >( "L1_Mu3_EG12_prescale" ) ;
00365 
00366    doubleThresholds_[ L1ParticleMap::kMu3_Jet15 ].first =
00367       iConfig.getParameter< double >( "L1_Mu3_Jet15_thresh1" ) ;
00368    doubleThresholds_[ L1ParticleMap::kMu3_Jet15 ].second =
00369       iConfig.getParameter< double >( "L1_Mu3_Jet15_thresh2" ) ;
00370    prescales_[ L1ParticleMap::kMu3_Jet15 ] =
00371       iConfig.getParameter< int >( "L1_Mu3_Jet15_prescale" ) ;
00372    doubleThresholds_[ L1ParticleMap::kMu5_Jet15 ].first =
00373       iConfig.getParameter< double >( "L1_Mu5_Jet15_thresh1" ) ;
00374    doubleThresholds_[ L1ParticleMap::kMu5_Jet15 ].second =
00375       iConfig.getParameter< double >( "L1_Mu5_Jet15_thresh2" ) ;
00376    prescales_[ L1ParticleMap::kMu5_Jet15 ] =
00377       iConfig.getParameter< int >( "L1_Mu5_Jet15_prescale" ) ;
00378    doubleThresholds_[ L1ParticleMap::kMu3_Jet70 ].first =
00379       iConfig.getParameter< double >( "L1_Mu3_Jet70_thresh1" ) ;
00380    doubleThresholds_[ L1ParticleMap::kMu3_Jet70 ].second =
00381       iConfig.getParameter< double >( "L1_Mu3_Jet70_thresh2" ) ;
00382    prescales_[ L1ParticleMap::kMu3_Jet70 ] =
00383       iConfig.getParameter< int >( "L1_Mu3_Jet70_prescale" ) ;
00384    doubleThresholds_[ L1ParticleMap::kMu5_Jet20 ].first =
00385       iConfig.getParameter< double >( "L1_Mu5_Jet20_thresh1" ) ;
00386    doubleThresholds_[ L1ParticleMap::kMu5_Jet20 ].second =
00387       iConfig.getParameter< double >( "L1_Mu5_Jet20_thresh2" ) ;
00388    prescales_[ L1ParticleMap::kMu5_Jet20 ] =
00389       iConfig.getParameter< int >( "L1_Mu5_Jet20_prescale" ) ;
00390 
00391    doubleThresholds_[ L1ParticleMap::kMu5_TauJet20 ].first =
00392       iConfig.getParameter< double >( "L1_Mu5_TauJet20_thresh1" ) ;
00393    doubleThresholds_[ L1ParticleMap::kMu5_TauJet20 ].second =
00394       iConfig.getParameter< double >( "L1_Mu5_TauJet20_thresh2" ) ;
00395    prescales_[ L1ParticleMap::kMu5_TauJet20 ] =
00396       iConfig.getParameter< int >( "L1_Mu5_TauJet20_prescale" ) ;
00397    doubleThresholds_[ L1ParticleMap::kMu5_TauJet30 ].first =
00398       iConfig.getParameter< double >( "L1_Mu5_TauJet30_thresh1" ) ;
00399    doubleThresholds_[ L1ParticleMap::kMu5_TauJet30 ].second =
00400       iConfig.getParameter< double >( "L1_Mu5_TauJet30_thresh2" ) ;
00401    prescales_[ L1ParticleMap::kMu5_TauJet30 ] =
00402       iConfig.getParameter< int >( "L1_Mu5_TauJet30_prescale" ) ;
00403 
00404    doubleThresholds_[ L1ParticleMap::kIsoEG10_EG10 ].first =
00405       iConfig.getParameter< double >( "L1_IsoEG10_EG10_thresh1" ) ;
00406    doubleThresholds_[ L1ParticleMap::kIsoEG10_EG10 ].second =
00407       iConfig.getParameter< double >( "L1_IsoEG10_EG10_thresh2" ) ;
00408    prescales_[ L1ParticleMap::kIsoEG10_EG10 ] =
00409       iConfig.getParameter< int >( "L1_IsoEG10_EG10_prescale" ) ;
00410 
00411    doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet15 ].first =
00412       iConfig.getParameter< double >( "L1_IsoEG10_Jet15_thresh1" ) ;
00413    doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet15 ].second =
00414       iConfig.getParameter< double >( "L1_IsoEG10_Jet15_thresh2" ) ;
00415    prescales_[ L1ParticleMap::kIsoEG10_Jet15 ] =
00416       iConfig.getParameter< int >( "L1_IsoEG10_Jet15_prescale" ) ;
00417    doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet30 ].first =
00418       iConfig.getParameter< double >( "L1_IsoEG10_Jet30_thresh1" ) ;
00419    doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet30 ].second =
00420       iConfig.getParameter< double >( "L1_IsoEG10_Jet30_thresh2" ) ;
00421    prescales_[ L1ParticleMap::kIsoEG10_Jet30 ] =
00422       iConfig.getParameter< int >( "L1_IsoEG10_Jet30_prescale" ) ;
00423    doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet20 ].first =
00424       iConfig.getParameter< double >( "L1_IsoEG10_Jet20_thresh1" ) ;
00425    doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet20 ].second =
00426       iConfig.getParameter< double >( "L1_IsoEG10_Jet20_thresh2" ) ;
00427    prescales_[ L1ParticleMap::kIsoEG10_Jet20 ] =
00428       iConfig.getParameter< int >( "L1_IsoEG10_Jet20_prescale" ) ;
00429    doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet70 ].first =
00430       iConfig.getParameter< double >( "L1_IsoEG10_Jet70_thresh1" ) ;
00431    doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet70 ].second =
00432       iConfig.getParameter< double >( "L1_IsoEG10_Jet70_thresh2" ) ;
00433    prescales_[ L1ParticleMap::kIsoEG10_Jet70 ] =
00434       iConfig.getParameter< int >( "L1_IsoEG10_Jet70_prescale" ) ;
00435 
00436    doubleThresholds_[ L1ParticleMap::kIsoEG10_TauJet20 ].first =
00437       iConfig.getParameter< double >( "L1_IsoEG10_TauJet20_thresh1" ) ;
00438    doubleThresholds_[ L1ParticleMap::kIsoEG10_TauJet20 ].second =
00439       iConfig.getParameter< double >( "L1_IsoEG10_TauJet20_thresh2" ) ;
00440    prescales_[ L1ParticleMap::kIsoEG10_TauJet20 ] =
00441       iConfig.getParameter< int >( "L1_IsoEG10_TauJet20_prescale" ) ;
00442    doubleThresholds_[ L1ParticleMap::kIsoEG10_TauJet30 ].first =
00443       iConfig.getParameter< double >( "L1_IsoEG10_TauJet30_thresh1" ) ;
00444    doubleThresholds_[ L1ParticleMap::kIsoEG10_TauJet30 ].second =
00445       iConfig.getParameter< double >( "L1_IsoEG10_TauJet30_thresh2" ) ;
00446    prescales_[ L1ParticleMap::kIsoEG10_TauJet30 ] =
00447       iConfig.getParameter< int >( "L1_IsoEG10_TauJet30_prescale" ) ;
00448 
00449    doubleThresholds_[ L1ParticleMap::kEG10_Jet15 ].first =
00450       iConfig.getParameter< double >( "L1_EG10_Jet15_thresh1" ) ;
00451    doubleThresholds_[ L1ParticleMap::kEG10_Jet15 ].second =
00452       iConfig.getParameter< double >( "L1_EG10_Jet15_thresh2" ) ;
00453    prescales_[ L1ParticleMap::kEG10_Jet15 ] =
00454       iConfig.getParameter< int >( "L1_EG10_Jet15_prescale" ) ;
00455    doubleThresholds_[ L1ParticleMap::kEG12_Jet20 ].first =
00456       iConfig.getParameter< double >( "L1_EG12_Jet20_thresh1" ) ;
00457    doubleThresholds_[ L1ParticleMap::kEG12_Jet20 ].second =
00458       iConfig.getParameter< double >( "L1_EG12_Jet20_thresh2" ) ;
00459    prescales_[ L1ParticleMap::kEG12_Jet20 ] =
00460       iConfig.getParameter< int >( "L1_EG12_Jet20_prescale" ) ;
00461    doubleThresholds_[ L1ParticleMap::kEG12_Jet70 ].first =
00462       iConfig.getParameter< double >( "L1_EG12_Jet70_thresh1" ) ;
00463    doubleThresholds_[ L1ParticleMap::kEG12_Jet70 ].second =
00464       iConfig.getParameter< double >( "L1_EG12_Jet70_thresh2" ) ;
00465    prescales_[ L1ParticleMap::kEG12_Jet70 ] =
00466       iConfig.getParameter< int >( "L1_EG12_Jet70_prescale" ) ;
00467 
00468    doubleThresholds_[ L1ParticleMap::kEG12_TauJet40 ].first =
00469       iConfig.getParameter< double >( "L1_EG12_TauJet40_thresh1" ) ;
00470    doubleThresholds_[ L1ParticleMap::kEG12_TauJet40 ].second =
00471       iConfig.getParameter< double >( "L1_EG12_TauJet40_thresh2" ) ;
00472    prescales_[ L1ParticleMap::kEG12_TauJet40 ] =
00473       iConfig.getParameter< int >( "L1_EG12_TauJet40_prescale" ) ;
00474 
00475    doubleThresholds_[ L1ParticleMap::kJet70_TauJet40 ].first =
00476       iConfig.getParameter< double >( "L1_Jet70_TauJet40_thresh1" ) ;
00477    doubleThresholds_[ L1ParticleMap::kJet70_TauJet40 ].second =
00478       iConfig.getParameter< double >( "L1_Jet70_TauJet40_thresh2" ) ;
00479    prescales_[ L1ParticleMap::kJet70_TauJet40 ] =
00480       iConfig.getParameter< int >( "L1_Jet70_TauJet40_prescale" ) ;
00481 
00482    doubleThresholds_[ L1ParticleMap::kMu3_HTT200 ].first =
00483       iConfig.getParameter< double >( "L1_Mu3_HTT200_thresh1" ) ;
00484    doubleThresholds_[ L1ParticleMap::kMu3_HTT200 ].second =
00485       iConfig.getParameter< double >( "L1_Mu3_HTT200_thresh2" ) ;
00486    prescales_[ L1ParticleMap::kMu3_HTT200 ] =
00487       iConfig.getParameter< int >( "L1_Mu3_HTT200_prescale" ) ;
00488    doubleThresholds_[ L1ParticleMap::kIsoEG10_HTT200 ].first =
00489       iConfig.getParameter< double >( "L1_IsoEG10_HTT200_thresh1" ) ;
00490    doubleThresholds_[ L1ParticleMap::kIsoEG10_HTT200 ].second =
00491       iConfig.getParameter< double >( "L1_IsoEG10_HTT200_thresh2" ) ;
00492    prescales_[ L1ParticleMap::kIsoEG10_HTT200 ] =
00493       iConfig.getParameter< int >( "L1_IsoEG10_HTT200_prescale" ) ;
00494    doubleThresholds_[ L1ParticleMap::kEG12_HTT200 ].first =
00495       iConfig.getParameter< double >( "L1_EG12_HTT200_thresh1" ) ;
00496    doubleThresholds_[ L1ParticleMap::kEG12_HTT200 ].second =
00497       iConfig.getParameter< double >( "L1_EG12_HTT200_thresh2" ) ;
00498    prescales_[ L1ParticleMap::kEG12_HTT200 ] =
00499       iConfig.getParameter< int >( "L1_EG12_HTT200_prescale" ) ;
00500    doubleThresholds_[ L1ParticleMap::kJet70_HTT200 ].first =
00501       iConfig.getParameter< double >( "L1_Jet70_HTT200_thresh1" ) ;
00502    doubleThresholds_[ L1ParticleMap::kJet70_HTT200 ].second =
00503       iConfig.getParameter< double >( "L1_Jet70_HTT200_thresh2" ) ;
00504    prescales_[ L1ParticleMap::kJet70_HTT200 ] =
00505       iConfig.getParameter< int >( "L1_Jet70_HTT200_prescale" ) ;
00506    doubleThresholds_[ L1ParticleMap::kTauJet40_HTT200 ].first =
00507       iConfig.getParameter< double >( "L1_TauJet40_HTT200_thresh1" ) ;
00508    doubleThresholds_[ L1ParticleMap::kTauJet40_HTT200 ].second =
00509       iConfig.getParameter< double >( "L1_TauJet40_HTT200_thresh2" ) ;
00510    prescales_[ L1ParticleMap::kTauJet40_HTT200 ] =
00511       iConfig.getParameter< int >( "L1_TauJet40_HTT200_prescale" ) ;
00512 
00513    doubleThresholds_[ L1ParticleMap::kMu3_ETM30 ].first =
00514       iConfig.getParameter< double >( "L1_Mu3_ETM30_thresh1" ) ;
00515    doubleThresholds_[ L1ParticleMap::kMu3_ETM30 ].second =
00516       iConfig.getParameter< double >( "L1_Mu3_ETM30_thresh2" ) ;
00517    prescales_[ L1ParticleMap::kMu3_ETM30 ] =
00518       iConfig.getParameter< int >( "L1_Mu3_ETM30_prescale" ) ;
00519    doubleThresholds_[ L1ParticleMap::kIsoEG10_ETM30 ].first =
00520       iConfig.getParameter< double >( "L1_IsoEG10_ETM30_thresh1" ) ;
00521    doubleThresholds_[ L1ParticleMap::kIsoEG10_ETM30 ].second =
00522       iConfig.getParameter< double >( "L1_IsoEG10_ETM30_thresh2" ) ;
00523    prescales_[ L1ParticleMap::kIsoEG10_ETM30 ] =
00524       iConfig.getParameter< int >( "L1_IsoEG10_ETM30_prescale" ) ;
00525    doubleThresholds_[ L1ParticleMap::kEG12_ETM30 ].first =
00526       iConfig.getParameter< double >( "L1_EG12_ETM30_thresh1" ) ;
00527    doubleThresholds_[ L1ParticleMap::kEG12_ETM30 ].second =
00528       iConfig.getParameter< double >( "L1_EG12_ETM30_thresh2" ) ;
00529    prescales_[ L1ParticleMap::kEG12_ETM30 ] =
00530       iConfig.getParameter< int >( "L1_EG12_ETM30_prescale" ) ;
00531    doubleThresholds_[ L1ParticleMap::kJet70_ETM40 ].first =
00532       iConfig.getParameter< double >( "L1_Jet70_ETM40_thresh1" ) ;
00533    doubleThresholds_[ L1ParticleMap::kJet70_ETM40 ].second =
00534       iConfig.getParameter< double >( "L1_Jet70_ETM40_thresh2" ) ;
00535    prescales_[ L1ParticleMap::kJet70_ETM40 ] =
00536       iConfig.getParameter< int >( "L1_Jet70_ETM40_prescale" ) ;
00537 
00538    doubleThresholds_[ L1ParticleMap::kTauJet20_ETM20 ].first =
00539       iConfig.getParameter< double >( "L1_TauJet20_ETM20_thresh1" ) ;
00540    doubleThresholds_[ L1ParticleMap::kTauJet20_ETM20 ].second =
00541       iConfig.getParameter< double >( "L1_TauJet20_ETM20_thresh2" ) ;
00542    prescales_[ L1ParticleMap::kTauJet20_ETM20 ] =
00543       iConfig.getParameter< int >( "L1_TauJet20_ETM20_prescale" ) ;
00544    doubleThresholds_[ L1ParticleMap::kTauJet30_ETM30 ].first =
00545       iConfig.getParameter< double >( "L1_TauJet30_ETM30_thresh1" ) ;
00546    doubleThresholds_[ L1ParticleMap::kTauJet30_ETM30 ].second =
00547       iConfig.getParameter< double >( "L1_TauJet30_ETM30_thresh2" ) ;
00548    prescales_[ L1ParticleMap::kTauJet30_ETM30 ] =
00549       iConfig.getParameter< int >( "L1_TauJet30_ETM30_prescale" ) ;
00550    doubleThresholds_[ L1ParticleMap::kTauJet30_ETM40 ].first =
00551       iConfig.getParameter< double >( "L1_TauJet30_ETM40_thresh1" ) ;
00552    doubleThresholds_[ L1ParticleMap::kTauJet30_ETM40 ].second =
00553       iConfig.getParameter< double >( "L1_TauJet30_ETM40_thresh2" ) ;
00554    prescales_[ L1ParticleMap::kTauJet30_ETM40 ] =
00555       iConfig.getParameter< int >( "L1_TauJet30_ETM40_prescale" ) ;
00556 
00557    doubleThresholds_[ L1ParticleMap::kHTT100_ETM30 ].first =
00558       iConfig.getParameter< double >( "L1_HTT100_ETM30_thresh1" ) ;
00559    doubleThresholds_[ L1ParticleMap::kHTT100_ETM30 ].second =
00560       iConfig.getParameter< double >( "L1_HTT100_ETM30_thresh2" ) ;
00561    prescales_[ L1ParticleMap::kHTT100_ETM30 ] =
00562       iConfig.getParameter< int >( "L1_HTT100_ETM30_prescale" ) ;
00563 
00564    // AAA triggers
00565 
00566    singleThresholds_[ L1ParticleMap::kTripleMu3 ] =
00567       iConfig.getParameter< double >( "L1_TripleMu3_thresh" ) ;
00568    prescales_[ L1ParticleMap::kTripleMu3 ] =
00569       iConfig.getParameter< int >( "L1_TripleMu3_prescale" ) ;
00570    singleThresholds_[ L1ParticleMap::kTripleIsoEG5 ] =
00571       iConfig.getParameter< double >( "L1_TripleIsoEG5_thresh" ) ;
00572    prescales_[ L1ParticleMap::kTripleIsoEG5 ] =
00573       iConfig.getParameter< int >( "L1_TripleIsoEG5_prescale" ) ;
00574    singleThresholds_[ L1ParticleMap::kTripleEG10 ] =
00575       iConfig.getParameter< double >( "L1_TripleEG10_thresh" ) ;
00576    prescales_[ L1ParticleMap::kTripleEG10 ] =
00577       iConfig.getParameter< int >( "L1_TripleEG10_prescale" ) ;
00578    singleThresholds_[ L1ParticleMap::kTripleJet50 ] =
00579       iConfig.getParameter< double >( "L1_TripleJet50_thresh" ) ;
00580    prescales_[ L1ParticleMap::kTripleJet50 ] =
00581       iConfig.getParameter< int >( "L1_TripleJet50_prescale" ) ;
00582    singleThresholds_[ L1ParticleMap::kTripleTauJet40 ] =
00583       iConfig.getParameter< double >( "L1_TripleTauJet40_thresh" ) ;
00584    prescales_[ L1ParticleMap::kTripleTauJet40 ] =
00585       iConfig.getParameter< int >( "L1_TripleTauJet40_prescale" ) ;
00586 
00587    // AAB triggers
00588 
00589    doubleThresholds_[ L1ParticleMap::kDoubleMu3_IsoEG5 ].first =
00590       iConfig.getParameter< double >( "L1_DoubleMu3_IsoEG5_thresh1" ) ;
00591    doubleThresholds_[ L1ParticleMap::kDoubleMu3_IsoEG5 ].second =
00592       iConfig.getParameter< double >( "L1_DoubleMu3_IsoEG5_thresh2" ) ;
00593    prescales_[ L1ParticleMap::kDoubleMu3_IsoEG5 ] =
00594       iConfig.getParameter< int >( "L1_DoubleMu3_IsoEG5_prescale" ) ;
00595    doubleThresholds_[ L1ParticleMap::kDoubleMu3_EG10 ].first =
00596       iConfig.getParameter< double >( "L1_DoubleMu3_EG10_thresh1" ) ;
00597    doubleThresholds_[ L1ParticleMap::kDoubleMu3_EG10 ].second =
00598       iConfig.getParameter< double >( "L1_DoubleMu3_EG10_thresh2" ) ;
00599    prescales_[ L1ParticleMap::kDoubleMu3_EG10 ] =
00600       iConfig.getParameter< int >( "L1_DoubleMu3_EG10_prescale" ) ;
00601    doubleThresholds_[ L1ParticleMap::kDoubleIsoEG5_Mu3 ].first =
00602       iConfig.getParameter< double >( "L1_DoubleIsoEG5_Mu3_thresh1" ) ;
00603    doubleThresholds_[ L1ParticleMap::kDoubleIsoEG5_Mu3 ].second =
00604       iConfig.getParameter< double >( "L1_DoubleIsoEG5_Mu3_thresh2" ) ;
00605    prescales_[ L1ParticleMap::kDoubleIsoEG5_Mu3 ] =
00606       iConfig.getParameter< int >( "L1_DoubleIsoEG5_Mu3_prescale" ) ;
00607    doubleThresholds_[ L1ParticleMap::kDoubleEG10_Mu3 ].first =
00608       iConfig.getParameter< double >( "L1_DoubleEG10_Mu3_thresh1" ) ;
00609    doubleThresholds_[ L1ParticleMap::kDoubleEG10_Mu3 ].second =
00610       iConfig.getParameter< double >( "L1_DoubleEG10_Mu3_thresh2" ) ;
00611    prescales_[ L1ParticleMap::kDoubleEG10_Mu3 ] =
00612       iConfig.getParameter< int >( "L1_DoubleEG10_Mu3_prescale" ) ;
00613 
00614    doubleThresholds_[ L1ParticleMap::kDoubleMu3_HTT200 ].first =
00615       iConfig.getParameter< double >( "L1_DoubleMu3_HTT200_thresh1" ) ;
00616    doubleThresholds_[ L1ParticleMap::kDoubleMu3_HTT200 ].second =
00617       iConfig.getParameter< double >( "L1_DoubleMu3_HTT200_thresh2" ) ;
00618    prescales_[ L1ParticleMap::kDoubleMu3_HTT200 ] =
00619       iConfig.getParameter< int >( "L1_DoubleMu3_HTT200_prescale" ) ;
00620    doubleThresholds_[ L1ParticleMap::kDoubleIsoEG5_HTT200 ].first =
00621       iConfig.getParameter< double >( "L1_DoubleIsoEG5_HTT200_thresh1" ) ;
00622    doubleThresholds_[ L1ParticleMap::kDoubleIsoEG5_HTT200 ].second =
00623       iConfig.getParameter< double >( "L1_DoubleIsoEG5_HTT200_thresh2" ) ;
00624    prescales_[ L1ParticleMap::kDoubleIsoEG5_HTT200 ] =
00625       iConfig.getParameter< int >( "L1_DoubleIsoEG5_HTT200_prescale" ) ;
00626    doubleThresholds_[ L1ParticleMap::kDoubleEG10_HTT200 ].first =
00627       iConfig.getParameter< double >( "L1_DoubleEG10_HTT200_thresh1" ) ;
00628    doubleThresholds_[ L1ParticleMap::kDoubleEG10_HTT200 ].second =
00629       iConfig.getParameter< double >( "L1_DoubleEG10_HTT200_thresh2" ) ;
00630    prescales_[ L1ParticleMap::kDoubleEG10_HTT200 ] =
00631       iConfig.getParameter< int >( "L1_DoubleEG10_HTT200_prescale" ) ;
00632    doubleThresholds_[ L1ParticleMap::kDoubleJet50_HTT200 ].first =
00633       iConfig.getParameter< double >( "L1_DoubleJet50_HTT200_thresh1" ) ;
00634    doubleThresholds_[ L1ParticleMap::kDoubleJet50_HTT200 ].second =
00635       iConfig.getParameter< double >( "L1_DoubleJet50_HTT200_thresh2" ) ;
00636    prescales_[ L1ParticleMap::kDoubleJet50_HTT200 ] =
00637       iConfig.getParameter< int >( "L1_DoubleJet50_HTT200_prescale" ) ;
00638    doubleThresholds_[ L1ParticleMap::kDoubleTauJet40_HTT200 ].first =
00639       iConfig.getParameter< double >( "L1_DoubleTauJet40_HTT200_thresh1" ) ;
00640    doubleThresholds_[ L1ParticleMap::kDoubleTauJet40_HTT200 ].second =
00641       iConfig.getParameter< double >( "L1_DoubleTauJet40_HTT200_thresh2" ) ;
00642    prescales_[ L1ParticleMap::kDoubleTauJet40_HTT200 ] =
00643       iConfig.getParameter< int >( "L1_DoubleTauJet40_HTT200_prescale" ) ;
00644 
00645    doubleThresholds_[ L1ParticleMap::kDoubleMu3_ETM20 ].first =
00646       iConfig.getParameter< double >( "L1_DoubleMu3_ETM20_thresh1" ) ;
00647    doubleThresholds_[ L1ParticleMap::kDoubleMu3_ETM20 ].second =
00648       iConfig.getParameter< double >( "L1_DoubleMu3_ETM20_thresh2" ) ;
00649    prescales_[ L1ParticleMap::kDoubleMu3_ETM20 ] =
00650       iConfig.getParameter< int >( "L1_DoubleMu3_ETM20_prescale" ) ;
00651    doubleThresholds_[ L1ParticleMap::kDoubleIsoEG5_ETM20 ].first =
00652       iConfig.getParameter< double >( "L1_DoubleIsoEG5_ETM20_thresh1" ) ;
00653    doubleThresholds_[ L1ParticleMap::kDoubleIsoEG5_ETM20 ].second =
00654       iConfig.getParameter< double >( "L1_DoubleIsoEG5_ETM20_thresh2" ) ;
00655    prescales_[ L1ParticleMap::kDoubleIsoEG5_ETM20 ] =
00656       iConfig.getParameter< int >( "L1_DoubleIsoEG5_ETM20_prescale" ) ;
00657    doubleThresholds_[ L1ParticleMap::kDoubleEG10_ETM20 ].first =
00658       iConfig.getParameter< double >( "L1_DoubleEG10_ETM20_thresh1" ) ;
00659    doubleThresholds_[ L1ParticleMap::kDoubleEG10_ETM20 ].second =
00660       iConfig.getParameter< double >( "L1_DoubleEG10_ETM20_thresh2" ) ;
00661    prescales_[ L1ParticleMap::kDoubleEG10_ETM20 ] =
00662       iConfig.getParameter< int >( "L1_DoubleEG10_ETM20_prescale" ) ;
00663    doubleThresholds_[ L1ParticleMap::kDoubleJet50_ETM20 ].first =
00664       iConfig.getParameter< double >( "L1_DoubleJet50_ETM20_thresh1" ) ;
00665    doubleThresholds_[ L1ParticleMap::kDoubleJet50_ETM20 ].second =
00666       iConfig.getParameter< double >( "L1_DoubleJet50_ETM20_thresh2" ) ;
00667    prescales_[ L1ParticleMap::kDoubleJet50_ETM20 ] =
00668       iConfig.getParameter< int >( "L1_DoubleJet50_ETM20_prescale" ) ;
00669    doubleThresholds_[ L1ParticleMap::kDoubleTauJet40_ETM20 ].first =
00670       iConfig.getParameter< double >( "L1_DoubleTauJet40_ETM20_thresh1" ) ;
00671    doubleThresholds_[ L1ParticleMap::kDoubleTauJet40_ETM20 ].second =
00672       iConfig.getParameter< double >( "L1_DoubleTauJet40_ETM20_thresh2" ) ;
00673    prescales_[ L1ParticleMap::kDoubleTauJet40_ETM20 ] =
00674       iConfig.getParameter< int >( "L1_DoubleTauJet40_ETM20_prescale" ) ;
00675 
00676    singleThresholds_[ L1ParticleMap::kQuadJet30 ] =
00677       iConfig.getParameter< double >( "L1_QuadJet30_thresh" ) ;
00678    prescales_[ L1ParticleMap::kQuadJet30 ] =
00679       iConfig.getParameter< int >( "L1_QuadJet30_prescale" ) ;
00680 
00681    // Diffractive triggers
00682    doubleThresholds_[ L1ParticleMap::kExclusiveDoubleIsoEG4 ].first =
00683         iConfig.getParameter< double >( "L1_ExclusiveDoubleIsoEG4_thresh1" );
00684    doubleThresholds_[ L1ParticleMap::kExclusiveDoubleIsoEG4 ].second =
00685         iConfig.getParameter< double >( "L1_ExclusiveDoubleIsoEG4_thresh2" ); // for jet rejection
00686    prescales_[ L1ParticleMap::kExclusiveDoubleIsoEG4 ] =
00687         iConfig.getParameter< int >( "L1_ExclusiveDoubleIsoEG4_prescale" ) ;
00688    singleThresholds_[ L1ParticleMap::kExclusiveDoubleJet60 ] =
00689         iConfig.getParameter< double >( "L1_ExclusiveDoubleJet60_thresh"  ); 
00690    prescales_[ L1ParticleMap::kExclusiveDoubleJet60 ] =
00691         iConfig.getParameter< int >( "L1_ExclusiveDoubleJet60_prescale" ) ;
00692    singleThresholds_[ L1ParticleMap::kExclusiveJet25_Gap_Jet25 ] =
00693         iConfig.getParameter< double >( "L1_ExclusiveJet25_Gap_Jet25_thresh" );
00694    prescales_[ L1ParticleMap::kExclusiveJet25_Gap_Jet25 ] =
00695       iConfig.getParameter< int >( "L1_ExclusiveJet25_Gap_Jet25_prescale" ) ;
00696    doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet20_ForJet10 ].first =
00697       iConfig.getParameter< double >( "L1_IsoEG10_Jet20_ForJet10_thresh1" ) ;
00698    doubleThresholds_[ L1ParticleMap::kIsoEG10_Jet20_ForJet10 ].second =
00699       iConfig.getParameter< double >( "L1_IsoEG10_Jet20_ForJet10_thresh2" ) ;
00700    singleThresholds_[ L1ParticleMap::kIsoEG10_Jet20_ForJet10 ] =
00701       iConfig.getParameter< double >( "L1_IsoEG10_Jet20_ForJet10_thresh3" ) ;
00702    prescales_[ L1ParticleMap::kIsoEG10_Jet20_ForJet10 ] =
00703       iConfig.getParameter< int >( "L1_IsoEG10_Jet20_ForJet10_prescale" ) ;
00704 
00705    prescales_[ L1ParticleMap::kMinBias_HTT10 ] =
00706       iConfig.getParameter< int >( "L1_MinBias_HTT10_prescale" ) ;
00707    prescales_[ L1ParticleMap::kZeroBias ] =
00708       iConfig.getParameter< int >( "L1_ZeroBias_prescale" ) ;
00709 
00710 //    // Print trigger table in Twiki table format.
00711 //    std::cout << "|  *Trigger Index*  |  *Trigger Name*  |  *E<sub>T</sub> Threshold (!GeV)*  |  *Prescale*  |"
00712 //           << std::endl ;
00713 
00714 //    for( int i = 0 ; i < L1ParticleMap::kNumOfL1TriggerTypes ; ++i )
00715 //    {
00716 //       std::cout
00717 //       << "|  "
00718 //       << i
00719 //       << "  |  " ;
00720 //       if( prescales_[ i ] == 999999999 ) std::cout << "<strike>" ;
00721 //       std::cout
00722 //       << L1ParticleMap::triggerName( ( L1ParticleMap::L1TriggerType ) i ) ;
00723 //       if( prescales_[ i ] == 999999999 ) std::cout << "</strike>" ;
00724 //       std::cout << "  |  " ;
00725 
00726 //       if( singleThresholds_[ i ] > 0 )
00727 //       {
00728 //       if( doubleThresholds_[ i ].first > 0 )
00729 //       {
00730 //          std::cout << doubleThresholds_[ i ].first << ", "
00731 //                    << doubleThresholds_[ i ].second << ", " ;
00732 //       }
00733 
00734 //       std::cout << singleThresholds_[ i ] ;
00735 //       }
00736 //       else if( doubleThresholds_[ i ].first > 0 )
00737 //       {
00738 //       std::cout << doubleThresholds_[ i ].first << ", "
00739 //                 << doubleThresholds_[ i ].second ;
00740 //       }
00741 //       else
00742 //       {
00743 //       std::cout << "---" ;
00744 //       }
00745 
00746 //       std::cout << "  |  " ;
00747 //       if( prescales_[ i ] != 999999999 ) std::cout << prescales_[ i ] ;
00748 //       std::cout << "  |"
00749 //              << std::endl ;
00750 //    }
00751 }

L1ExtraParticleMapProd::~L1ExtraParticleMapProd (  ) 

Definition at line 754 of file L1ExtraParticleMapProd.cc.

00755 {
00756    // do anything here that needs to be done at desctruction time
00757    // (e.g. close files, deallocate resources etc.)
00758 }


Member Function Documentation

template<class TCollection>
void L1ExtraParticleMapProd::addToVectorRefs ( const edm::Handle< TCollection > &  handle,
std::vector< edm::Ref< TCollection > > &  vectorRefs 
) [inline, private]

Definition at line 1894 of file L1ExtraParticleMapProd.cc.

References i.

Referenced by produce().

01897 {
01898    for( size_t i = 0 ; i < handle->size() ; ++i )
01899    {
01900       vectorRefs.push_back( edm::Ref< TCollection >( handle, i ) ) ;
01901    }
01902 }

void L1ExtraParticleMapProd::evaluateDoubleDifferentCaloObjectTrigger ( const l1extra::L1EmParticleVectorRef inputRefs1,
const l1extra::L1JetParticleVectorRef inputRefs2,
const double &  etThreshold1,
const double &  etThreshold2,
bool decision,
l1extra::L1EmParticleVectorRef outputRefs1,
l1extra::L1JetParticleVectorRef outputRefs2,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) [private]

Definition at line 2420 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), i, j, kDefault, and true.

Referenced by produce().

02429 {
02430    for( size_t i = 0 ; i < inputRefs1.size() ; ++i )
02431    {
02432       const l1extra::L1EmParticleRef& refi = inputRefs1[ i ] ;
02433       if( refi.get()->et() >= etThreshold1 )
02434       {
02435          for( size_t j = 0 ; j < inputRefs2.size() ; ++j )
02436          {
02437             const l1extra::L1JetParticleRef& refj = inputRefs2[ j ] ;
02438 
02439             // Check for identical region only if both HW objects are non-null.
02440             if( refj.get()->et() >= etThreshold2 &&
02441                 ( refi.get()->gctEmCand() == 0 ||
02442                   refj.get()->gctJetCand() == 0 ||
02443                   refi.get()->gctEmCand()->regionId() !=
02444                   refj.get()->gctJetCand()->regionId() ) )
02445             {
02446                decision = true ;
02447 
02448                // If the two objects are already in their respective lists,
02449                // find their indices.
02450                int iInList = kDefault ;
02451                for( size_t iout = 0 ; iout < outputRefs1.size() ; ++iout )
02452                {
02453                   if( refi == outputRefs1[ iout ] )
02454                   {
02455                      iInList = iout ;
02456                   }
02457                }
02458 
02459                int jInList = kDefault ;
02460                for( size_t jout = 0 ; jout < outputRefs2.size() ; ++jout )
02461                {
02462                   if( refj == outputRefs2[ jout ] )
02463                   {
02464                      jInList = jout ;
02465                   }
02466                }
02467 
02468                // If either object is not in the list, add it, and
02469                // record its index.
02470                if( iInList == kDefault )
02471                {
02472                   iInList = outputRefs1.size() ;
02473                   outputRefs1.push_back( refi ) ;
02474                }
02475                      
02476                if( jInList == kDefault )
02477                {
02478                   jInList = outputRefs2.size() ;
02479                   outputRefs2.push_back( refj ) ;
02480                }
02481 
02482                // Record this object combination.
02483                l1extra::L1ParticleMap::L1IndexCombo combo ;
02484                combo.push_back( iInList ) ;
02485                combo.push_back( jInList ) ;
02486                combos.push_back( combo ) ;
02487             }
02488          }
02489       }
02490    }
02491 }

template<class TCollection>
void L1ExtraParticleMapProd::evaluateDoubleDifferentObjectSameTypeTrigger ( const std::vector< edm::Ref< TCollection > > &  inputRefs1,
const std::vector< edm::Ref< TCollection > > &  inputRefs2,
const double &  etThreshold1,
const double &  etThreshold2,
bool decision,
std::vector< edm::Ref< TCollection > > &  outputRefs,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) [inline, private]

Definition at line 2351 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), i, j, kDefault, and true.

Referenced by produce().

02359 {
02360    for( size_t i = 0 ; i < inputRefs1.size() ; ++i )
02361    {
02362       const edm::Ref< TCollection >& refi = inputRefs1[ i ] ;
02363       if( refi.get()->et() >= etThreshold1 )
02364       {
02365          for( size_t j = 0 ; j < inputRefs2.size() ; ++j )
02366          {
02367             const edm::Ref< TCollection >& refj = inputRefs2[ j ] ;
02368 
02369             if( refj.get()->et() >= etThreshold2 &&
02370                 refi != refj )
02371             {
02372                decision = true ;
02373 
02374                // If the two objects are already in their respective lists,
02375                // find their indices.
02376                int iInList = kDefault ;
02377                for( size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
02378                {
02379                   if( refi == outputRefs[ iout ] )
02380                   {
02381                      iInList = iout ;
02382                   }
02383                }
02384 
02385                int jInList = kDefault ;
02386                for( size_t jout = 0 ; jout < outputRefs.size() ; ++jout )
02387                {
02388                   if( refj == outputRefs[ jout ] )
02389                   {
02390                      jInList = jout ;
02391                   }
02392                }
02393 
02394                // If either object is not in the list, add it, and
02395                // record its index.
02396                if( iInList == kDefault )
02397                {
02398                   iInList = outputRefs.size() ;
02399                   outputRefs.push_back( refi ) ;
02400                }
02401                      
02402                if( jInList == kDefault )
02403                {
02404                   jInList = outputRefs.size() ;
02405                   outputRefs.push_back( refj ) ;
02406                }
02407 
02408                // Record this object combination.
02409                l1extra::L1ParticleMap::L1IndexCombo combo ;
02410                combo.push_back( iInList ) ;
02411                combo.push_back( jInList ) ;
02412                combos.push_back( combo ) ;
02413             }
02414          }
02415       }
02416    }
02417 }

template<class TCollection1, class TCollection2>
void L1ExtraParticleMapProd::evaluateDoubleDifferentObjectTrigger ( const std::vector< edm::Ref< TCollection1 > > &  inputRefs1,
const std::vector< edm::Ref< TCollection2 > > &  inputRefs2,
const double &  etThreshold1,
const double &  etThreshold2,
bool decision,
std::vector< edm::Ref< TCollection1 > > &  outputRefs1,
std::vector< edm::Ref< TCollection2 > > &  outputRefs2,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) [inline, private]

Definition at line 2280 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), i, j, kDefault, and true.

Referenced by produce().

02289 {
02290    for( size_t i = 0 ; i < inputRefs1.size() ; ++i )
02291    {
02292       const edm::Ref< TCollection1 >& refi = inputRefs1[ i ] ;
02293       if( refi.get()->et() >= etThreshold1 )
02294       {
02295          for( size_t j = 0 ; j < inputRefs2.size() ; ++j )
02296          {
02297             const edm::Ref< TCollection2 >& refj = inputRefs2[ j ] ;
02298 
02299             if( refj.get()->et() >= etThreshold2 )
02300             {
02301                decision = true ;
02302 
02303                // If the two objects are already in their respective lists,
02304                // find their indices.
02305                int iInList = kDefault ;
02306                for( size_t iout = 0 ; iout < outputRefs1.size() ; ++iout )
02307                {
02308                   if( refi == outputRefs1[ iout ] )
02309                   {
02310                      iInList = iout ;
02311                   }
02312                }
02313 
02314                int jInList = kDefault ;
02315                for( size_t jout = 0 ; jout < outputRefs2.size() ; ++jout )
02316                {
02317                   if( refj == outputRefs2[ jout ] )
02318                   {
02319                      jInList = jout ;
02320                   }
02321                }
02322 
02323                // If either object is not in the list, add it, and
02324                // record its index.
02325                if( iInList == kDefault )
02326                {
02327                   iInList = outputRefs1.size() ;
02328                   outputRefs1.push_back( refi ) ;
02329                }
02330                      
02331                if( jInList == kDefault )
02332                {
02333                   jInList = outputRefs2.size() ;
02334                   outputRefs2.push_back( refj ) ;
02335                }
02336 
02337                // Record this object combination.
02338                l1extra::L1ParticleMap::L1IndexCombo combo ;
02339                combo.push_back( iInList ) ;
02340                combo.push_back( jInList ) ;
02341                combos.push_back( combo ) ;
02342             }
02343          }
02344       }
02345    }
02346 }

void L1ExtraParticleMapProd::evaluateDoubleExclusiveIsoEG ( const l1extra::L1EmParticleVectorRef inputRefs1,
const l1extra::L1JetParticleVectorRef inputRefs2,
const double &  etThreshold1,
const double &  etThreshold2,
bool decision,
l1extra::L1EmParticleVectorRef outputRefs1,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) [private]

Definition at line 2598 of file L1ExtraParticleMapProd.cc.

References evaluateDoubleSameObjectTrigger(), and j.

Referenced by produce().

02606 {
02607    if ( inputRefs1.size() ==2 )
02608       {  // 2 iso EG
02609          decision=true;
02610          if (inputRefs2.size()>0)
02611             {   // should veto if there are jets, with pt>thresh
02612                for( size_t j = 0 ; j < inputRefs2.size() ; ++j )
02613                   {
02614                      if(inputRefs2[j].get()->gctJetCand()->regionId() ==
02615                         inputRefs1[0].get()->gctEmCand()->regionId())continue;
02616                      if(inputRefs2[j].get()->gctJetCand()->regionId() ==
02617                         inputRefs1[1].get()->gctEmCand()->regionId())continue;
02618                      if(inputRefs2[j].get()->et( )> etThreshold2  ) {
02619                        decision=false; break; }
02620                      // break : for a faster algorithm
02621                   }
02622             }
02623          if(decision)
02624            {   // threshold evaluation for the Exclusive double isoEG
02625               decision = false;
02626               evaluateDoubleSameObjectTrigger( inputRefs1,
02627                                                etThreshold1,
02628                                                decision,
02629                                                outputRefs1,
02630                                                combos ) ;
02631            }
02632       }
02633 }

template<class TCollection1, class TCollection2>
void L1ExtraParticleMapProd::evaluateDoublePlusSingleObjectTrigger ( const std::vector< edm::Ref< TCollection1 > > &  inputRefs1,
const std::vector< edm::Ref< TCollection2 > > &  inputRefs2,
const double &  etThreshold1,
const double &  etThreshold2,
bool decision,
std::vector< edm::Ref< TCollection1 > > &  outputRefs1,
std::vector< edm::Ref< TCollection2 > > &  outputRefs2,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) [inline, private]

Definition at line 2078 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), i, j, k, kDefault, and true.

Referenced by produce().

02087 {
02088    // Use i+1 < inputRefs.size() instead of i < inputRefs.size()-1
02089    // because i is unsigned, and if size() is 0, then RHS undefined.
02090    for( size_t i = 0 ; i+1 < inputRefs1.size() ; ++i )
02091    {
02092       const edm::Ref< TCollection1 >& refi = inputRefs1[ i ] ;
02093       if( refi.get()->et() >= etThreshold1 )
02094       {
02095          for( size_t j = i+1 ; j < inputRefs1.size() ; ++j )
02096          {
02097             const edm::Ref< TCollection1 >& refj = inputRefs1[ j ] ;
02098             if( refj.get()->et() >= etThreshold1 )
02099             {
02100                for( size_t k = 0 ; k < inputRefs2.size() ; ++k )
02101                {
02102                   const edm::Ref< TCollection2 >& refk = inputRefs2[ k ] ;
02103                   if( refk.get()->et() >= etThreshold2 )
02104                   {
02105                      decision = true ;
02106 
02107                      // If the three objects are already in the list, find
02108                      // their indices.
02109                      int iInList = kDefault ;
02110                      int jInList = kDefault ;
02111 
02112                      for( size_t iout = 0 ;
02113                           iout < outputRefs1.size() ; ++iout )
02114                      {
02115                         if( refi == outputRefs1[ iout ] )
02116                         {
02117                            iInList = iout ;
02118                         }
02119 
02120                         if( refj == outputRefs1[ iout ] )
02121                         {
02122                            jInList = iout ;
02123                         }
02124                      }
02125 
02126                      int kInList = kDefault ;
02127                      for( size_t kout = 0 ;
02128                           kout < outputRefs2.size() ; ++kout )
02129                      {
02130                         if( refk == outputRefs2[ kout ] )
02131                         {
02132                            kInList = kout ;
02133                         }
02134                      }
02135 
02136                      // If any object is not in the list, add it, and
02137                      // record its index.
02138                      if( iInList == kDefault )
02139                      {
02140                         iInList = outputRefs1.size() ;
02141                         outputRefs1.push_back( refi );
02142                      }
02143                      
02144                      if( jInList == kDefault )
02145                      {
02146                         jInList = outputRefs1.size() ;
02147                         outputRefs1.push_back( refj );
02148                      }
02149 
02150                      if( kInList == kDefault )
02151                      {
02152                         kInList = outputRefs2.size() ;
02153                         outputRefs2.push_back( refk );
02154                      }
02155 
02156                      // Record this object combination.
02157                      l1extra::L1ParticleMap::L1IndexCombo combo ;
02158                      combo.push_back( iInList ) ;
02159                      combo.push_back( jInList ) ;
02160                      combo.push_back( kInList ) ;
02161                      combos.push_back( combo ) ;
02162                   }
02163                }
02164             }
02165          }
02166       }
02167    }
02168 }

template<class TCollection>
void L1ExtraParticleMapProd::evaluateDoubleSameObjectTrigger ( const std::vector< edm::Ref< TCollection > > &  inputRefs,
const double &  etThreshold,
bool decision,
std::vector< edm::Ref< TCollection > > &  outputRefs,
l1extra::L1ParticleMap::L1IndexComboVector combos,
bool  combinedWithGlobalObject = false 
) [inline, private]

Definition at line 1924 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), i, j, kDefault, and true.

Referenced by evaluateDoubleExclusiveIsoEG(), and produce().

01931 {
01932    // Use i+1 < inputRefs.size() instead of i < inputRefs.size()-1
01933    // because i is unsigned, and if size() is 0, then RHS undefined.
01934    for( size_t i = 0 ; i+1 < inputRefs.size() ; ++i )
01935    {
01936       const edm::Ref< TCollection >& refi = inputRefs[ i ] ;
01937       if( refi.get()->et() >= etThreshold )
01938       {
01939          for( size_t j = i+1 ; j < inputRefs.size() ; ++j )
01940          {
01941             const edm::Ref< TCollection >& refj = inputRefs[ j ] ;
01942             if( refj.get()->et() >= etThreshold )
01943             {
01944                decision = true ;
01945 
01946                // If the two objects are already in the list, find
01947                // their indices.
01948                int iInList = kDefault ;
01949                int jInList = kDefault ;
01950                for( size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
01951                {
01952                   if( refi == outputRefs[ iout ] )
01953                   {
01954                      iInList = iout ;
01955                   }
01956 
01957                   if( refj == outputRefs[ iout ] )
01958                   {
01959                      jInList = iout ;
01960                   }
01961                }
01962 
01963                // If either object is not in the list, add it, and
01964                // record its index.
01965                if( iInList == kDefault )
01966                {
01967                   iInList = outputRefs.size() ;
01968                   outputRefs.push_back( refi ) ;
01969                }
01970                      
01971                if( jInList == kDefault )
01972                {
01973                   jInList = outputRefs.size() ;
01974                   outputRefs.push_back( refj ) ;
01975                }
01976 
01977                // Record this object combination.
01978                l1extra::L1ParticleMap::L1IndexCombo combo ;
01979                combo.push_back( iInList ) ;
01980                combo.push_back( jInList ) ;
01981                if( combinedWithGlobalObject ) combo.push_back( 0 ) ;
01982                combos.push_back( combo ) ;
01983             }
01984          }
01985       }
01986    }
01987 }

void L1ExtraParticleMapProd::evaluateForwardRapidityGap ( const l1extra::L1JetParticleVectorRef inputRefs,
const double &  etThreshold,
bool decision 
) [private]

Definition at line 2565 of file L1ExtraParticleMapProd.cc.

References false, edm::Ref< C, T, F >::get(), k, l1extra::L1JetParticle::kForward, and edm::es::l().

Referenced by produce().

02570 {
02571    decision = true;
02572 
02573    // search for forward pair
02574    for( size_t k = 0 ; k+1 < inputRefs.size() ; ++k )
02575    {
02576       const l1extra::L1JetParticleRef& refk = inputRefs[ k ] ;
02577       double etak = refk.get()->eta();
02578       if( ( refk.get()->type() == l1extra::L1JetParticle::kForward ) &&
02579           ( refk.get()->et()   >= etThreshold ) )
02580       {
02581           for( size_t l = k+1 ; l < inputRefs.size() ; ++l )
02582           {
02583              const l1extra::L1JetParticleRef& refl = inputRefs[ l ] ;
02584              double etal = refl.get()->eta();
02585              if( (refl.get()->type()==l1extra::L1JetParticle::kForward) &&
02586                  (refl.get()->et()  >= etThreshold    ) &&
02587                  ((etak>0 && etal<0) || (etak<0 && etal>0))    )
02588              {
02589                  decision = false ;
02590                  return ;// no need for going further -- for a faster algorithm
02591              }
02592           }
02593       }
02594    }
02595 }

void L1ExtraParticleMapProd::evaluateJetGapJetTrigger ( const l1extra::L1JetParticleVectorRef inputRefs,
const double &  etThreshold,
bool decision,
l1extra::L1JetParticleVectorRef outputRefs,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) [private]

Definition at line 2494 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), i, j, kDefault, and true.

Referenced by produce().

02500 {
02501    // Use i+1 < inputRefs.size() instead of i < inputRefs.size()-1
02502    // because i is unsigned, and if size() is 0, then RHS undefined.
02503    for( size_t i = 0 ; i+1 < inputRefs.size() ; ++i )
02504    {
02505       const l1extra::L1JetParticleRef& refi = inputRefs[ i ] ;
02506       if( refi.get()->et() >= etThreshold )
02507       {
02508          for( size_t j = i+1 ; j < inputRefs.size() ; ++j )
02509          {
02510             const l1extra::L1JetParticleRef& refj = inputRefs[ j ] ;
02511             if( ( refj.get()->et() >= etThreshold ) &&
02512                 ( ( ( refi.get()->eta() < 0. ) && ( refj.get()->eta() > 0. ) )
02513                   ||
02514                   ( ( refi.get()->eta() > 0. ) && ( refj.get()->eta() < 0. ) )
02515                   )
02516                 )
02517             {
02518                decision = true ;
02519 
02520                // If the two objects are already in the list, find
02521                // their indices.
02522                int iInList = kDefault ;
02523                int jInList = kDefault ;
02524                for( size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
02525                {
02526                   if( refi == outputRefs[ iout ] )
02527                   {
02528                      iInList = iout ;
02529                   }
02530 
02531                   if( refj == outputRefs[ iout ] )
02532                   {
02533                      jInList = iout ;
02534                   }
02535                }
02536 
02537                // If either object is not in the list, add it, and
02538                // record its index.
02539                if( iInList == kDefault )
02540                {
02541                   iInList = outputRefs.size() ;
02542                   outputRefs.push_back( refi ) ;
02543                }
02544 
02545                if( jInList == kDefault )
02546                {
02547                   jInList = outputRefs.size() ;
02548                   outputRefs.push_back( refj ) ;
02549                }
02550 
02551                // Record this object combination.
02552                l1extra::L1ParticleMap::L1IndexCombo combo ;
02553                combo.push_back( iInList ) ;
02554                combo.push_back( jInList ) ;
02555                combos.push_back( combo ) ;
02556             }
02557          }
02558       }
02559    }
02560 }

template<class TCollection>
void L1ExtraParticleMapProd::evaluateQuadSameObjectTrigger ( const std::vector< edm::Ref< TCollection > > &  inputRefs,
const double &  etThreshold,
bool decision,
std::vector< edm::Ref< TCollection > > &  outputRefs,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) [inline, private]

Definition at line 2173 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), i, j, k, kDefault, p, and true.

Referenced by produce().

02179 {
02180    // Use i+3 < inputRefs.size() instead of i < inputRefs.size()-3
02181    // because i is unsigned, and if size() is 0, then RHS undefined.
02182    for( size_t i = 0 ; i+3 < inputRefs.size() ; ++i )
02183    {
02184       const edm::Ref< TCollection >& refi = inputRefs[ i ] ;
02185       if( refi.get()->et() >= etThreshold )
02186       {
02187          for( size_t j = i+1 ; j+2 < inputRefs.size() ; ++j )
02188          {
02189             const edm::Ref< TCollection >& refj = inputRefs[ j ] ;
02190             if( refj.get()->et() >= etThreshold )
02191             {
02192                for( size_t k = j+1 ; k+1 < inputRefs.size() ; ++k )
02193                {
02194                   const edm::Ref< TCollection >& refk = inputRefs[ k ] ;
02195                   if( refk.get()->et() >= etThreshold )
02196                   {
02197                      for( size_t p = k+1 ; p < inputRefs.size() ; ++p )
02198                      {
02199                         const edm::Ref< TCollection >& refp = inputRefs[ p ] ;
02200                         if( refp.get()->et() >= etThreshold )
02201                         {
02202                            decision = true ;
02203 
02204                            // If the objects are already in the list, find
02205                            // their indices.
02206                            int iInList = kDefault ;
02207                            int jInList = kDefault ;
02208                            int kInList = kDefault ;
02209                            int pInList = kDefault ;
02210                            for( size_t iout = 0 ;
02211                                 iout < outputRefs.size() ; ++iout )
02212                            {
02213                               if( refi == outputRefs[ iout ] )
02214                               {
02215                                  iInList = iout ;
02216                               }
02217 
02218                               if( refj == outputRefs[ iout ] )
02219                               {
02220                                  jInList = iout ;
02221                               }
02222 
02223                               if( refk == outputRefs[ iout ] )
02224                               {
02225                                  kInList = iout ;
02226                               }
02227 
02228                               if( refp == outputRefs[ iout ] )
02229                               {
02230                                  pInList = iout ;
02231                               }
02232                            }
02233 
02234                            // If any object is not in the list, add it, and
02235                            // record its index.
02236                            if( iInList == kDefault )
02237                            {
02238                               iInList = outputRefs.size() ;
02239                               outputRefs.push_back( refi ) ;
02240                            }
02241                      
02242                            if( jInList == kDefault )
02243                            {
02244                               jInList = outputRefs.size() ;
02245                               outputRefs.push_back( refj ) ;
02246                            }
02247 
02248                            if( kInList == kDefault )
02249                            {
02250                               kInList = outputRefs.size() ;
02251                               outputRefs.push_back( refk ) ;
02252                            }
02253 
02254                            if( pInList == kDefault )
02255                            {
02256                               pInList = outputRefs.size() ;
02257                               outputRefs.push_back( refp ) ;
02258                            }
02259 
02260                            // Record this object combination.
02261                            l1extra::L1ParticleMap::L1IndexCombo combo ;
02262                            combo.push_back( iInList ) ;
02263                            combo.push_back( jInList ) ;
02264                            combo.push_back( kInList ) ;
02265                            combo.push_back( pInList ) ;
02266                            combos.push_back( combo ) ;
02267                         }
02268                      }
02269                   }
02270                }
02271             }
02272          }
02273       }
02274    }
02275 }

template<class TCollection>
void L1ExtraParticleMapProd::evaluateSingleObjectTrigger ( const std::vector< edm::Ref< TCollection > > &  inputRefs,
const double &  etThreshold,
bool decision,
std::vector< edm::Ref< TCollection > > &  outputRefs 
) [inline, private]

Definition at line 1906 of file L1ExtraParticleMapProd.cc.

References i, and true.

Referenced by produce().

01911 {
01912    for( size_t i = 0 ; i < inputRefs.size() ; ++i )
01913    {
01914       if( inputRefs[ i ].get()->et() >= etThreshold )
01915       {
01916          decision = true ;
01917          outputRefs.push_back( inputRefs[ i ] ) ;
01918       }
01919    }
01920 }

template<class TCollection>
void L1ExtraParticleMapProd::evaluateTripleSameObjectTrigger ( const std::vector< edm::Ref< TCollection > > &  inputRefs,
const double &  etThreshold,
bool decision,
std::vector< edm::Ref< TCollection > > &  outputRefs,
l1extra::L1ParticleMap::L1IndexComboVector combos 
) [inline, private]

Definition at line 1992 of file L1ExtraParticleMapProd.cc.

References edm::Ref< C, T, F >::get(), i, j, k, kDefault, and true.

Referenced by produce().

01998 {
01999    // Use i+2 < inputRefs.size() instead of i < inputRefs.size()-2
02000    // because i is unsigned, and if size() is 0, then RHS undefined.
02001    for( size_t i = 0 ; i+2 < inputRefs.size() ; ++i )
02002    {
02003       const edm::Ref< TCollection >& refi = inputRefs[ i ] ;
02004       if( refi.get()->et() >= etThreshold )
02005       {
02006          for( size_t j = i+1 ; j+1 < inputRefs.size() ; ++j )
02007          {
02008             const edm::Ref< TCollection >& refj = inputRefs[ j ] ;
02009             if( refj.get()->et() >= etThreshold )
02010             {
02011                for( size_t k = j+1 ; k < inputRefs.size() ; ++k )
02012                {
02013                   const edm::Ref< TCollection >& refk = inputRefs[ k ] ;
02014                   if( refk.get()->et() >= etThreshold )
02015                   {
02016                      decision = true ;
02017 
02018                      // If the three objects are already in the list, find
02019                      // their indices.
02020                      int iInList = kDefault ;
02021                      int jInList = kDefault ;
02022                      int kInList = kDefault ;
02023                      for( size_t iout = 0 ; iout < outputRefs.size() ; ++iout )
02024                      {
02025                         if( refi == outputRefs[ iout ] )
02026                         {
02027                            iInList = iout ;
02028                         }
02029 
02030                         if( refj == outputRefs[ iout ] )
02031                         {
02032                            jInList = iout ;
02033                         }
02034 
02035                         if( refk == outputRefs[ iout ] )
02036                         {
02037                            kInList = iout ;
02038                         }
02039                      }
02040 
02041                      // If any object is not in the list, add it, and
02042                      // record its index.
02043                      if( iInList == kDefault )
02044                      {
02045                         iInList = outputRefs.size() ;
02046                         outputRefs.push_back( refi );
02047                      }
02048                      
02049                      if( jInList == kDefault )
02050                      {
02051                         jInList = outputRefs.size() ;
02052                         outputRefs.push_back( refj );
02053                      }
02054 
02055                      if( kInList == kDefault )
02056                      {
02057                         kInList = outputRefs.size() ;
02058                         outputRefs.push_back( refk );
02059                      }
02060 
02061                      // Record this object combination.
02062                      l1extra::L1ParticleMap::L1IndexCombo combo ;
02063                      combo.push_back( iInList ) ;
02064                      combo.push_back( jInList ) ;
02065                      combo.push_back( kInList ) ;
02066                      combos.push_back( combo ) ;
02067                   }
02068                }
02069             }
02070          }
02071       }
02072    }
02073 }

void L1ExtraParticleMapProd::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [virtual]

Implements edm::EDProducer.

Definition at line 767 of file L1ExtraParticleMapProd.cc.

References addToVectorRefs(), cenJetSource_, doubleThresholds_, etMissSource_, evaluateDoubleDifferentCaloObjectTrigger(), evaluateDoubleDifferentObjectSameTypeTrigger(), evaluateDoubleDifferentObjectTrigger(), evaluateDoubleExclusiveIsoEG(), evaluateDoublePlusSingleObjectTrigger(), evaluateDoubleSameObjectTrigger(), evaluateForwardRapidityGap(), evaluateJetGapJetTrigger(), evaluateQuadSameObjectTrigger(), evaluateSingleObjectTrigger(), evaluateTripleSameObjectTrigger(), false, first, forJetSource_, edm::Event::getByLabel(), i, isoEmSource_, kMuon, mapColl, CaloMET_cfi::met, muonSource_, nonIsoEmSource_, prescaleCounters_, prescales_, edm::Event::put(), HcalSimpleRecAlgoImpl::reco(), edm::second(), singleThresholds_, std, tauJetSource_, and true.

00769 {
00770    using namespace edm;
00771    using namespace std;
00772    using namespace reco;
00773    using namespace l1extra ;
00774 
00775 
00776    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00777    // ~~~~~~~~ Get L1Extra particles ~~~~~~~~
00778    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00779 
00780    Handle< L1EmParticleCollection > isoEmHandle ;
00781    iEvent.getByLabel( isoEmSource_, isoEmHandle ) ;
00782 
00783    Handle< L1EmParticleCollection > nonIsoEmHandle ;
00784    iEvent.getByLabel( nonIsoEmSource_, nonIsoEmHandle ) ;
00785 
00786    Handle< L1JetParticleCollection > cenJetHandle ;
00787    iEvent.getByLabel( cenJetSource_, cenJetHandle ) ;
00788 
00789    Handle< L1JetParticleCollection > forJetHandle ;
00790    iEvent.getByLabel( forJetSource_, forJetHandle ) ;
00791 
00792    Handle< L1JetParticleCollection > tauJetHandle ;
00793    iEvent.getByLabel( tauJetSource_, tauJetHandle ) ;
00794 
00795    Handle< L1MuonParticleCollection > muHandle ;
00796    iEvent.getByLabel( muonSource_, muHandle ) ;
00797 
00798    Handle< L1EtMissParticle > metHandle ;
00799    iEvent.getByLabel( etMissSource_, metHandle ) ;
00800 
00801    double met = metHandle->etMiss() ;
00802    double ht = metHandle->etHad() ;
00803    double ett = metHandle->etTotal() ;
00804 
00805    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00806    // ~~~ Evaluate trigger conditions and make a L1ParticleMapCollection. ~~~
00807    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00808 
00809    // First, form the input vector<Ref>s that will be needed.
00810    L1EmParticleVectorRef inputIsoEmRefs ;
00811    addToVectorRefs( isoEmHandle, inputIsoEmRefs ) ;
00812 
00813    L1EmParticleVectorRef inputRelaxedEmRefs ;
00814    addToVectorRefs( isoEmHandle, inputRelaxedEmRefs ) ;
00815    addToVectorRefs( nonIsoEmHandle, inputRelaxedEmRefs ) ;
00816 
00817    L1JetParticleVectorRef inputTauRefs ;
00818    addToVectorRefs( tauJetHandle, inputTauRefs ) ;
00819 
00820    L1JetParticleVectorRef inputJetRefs ;
00821    addToVectorRefs( forJetHandle, inputJetRefs ) ;
00822    addToVectorRefs( cenJetHandle, inputJetRefs ) ;
00823    addToVectorRefs( tauJetHandle, inputJetRefs ) ;
00824 
00825    L1JetParticleVectorRef inputForJetRefs ;
00826    addToVectorRefs( forJetHandle, inputForJetRefs ) ;
00827 
00828    L1JetParticleVectorRef inputCenJetTauJetRefs ;
00829    addToVectorRefs( cenJetHandle, inputCenJetTauJetRefs ) ;
00830    addToVectorRefs( tauJetHandle, inputCenJetTauJetRefs ) ;
00831 
00832    L1MuonParticleVectorRef inputMuonRefsSingle ;
00833    L1MuonParticleVectorRef inputMuonRefsDouble ;
00834    L1MuonParticleCollection::const_iterator muItr = muHandle->begin() ;
00835    L1MuonParticleCollection::const_iterator muEnd = muHandle->end() ;
00836 
00837    for( size_t i = 0 ; muItr != muEnd ; ++muItr, ++i )
00838    {
00839       if( !muItr->gmtMuonCand().empty() )
00840       {
00841          unsigned int qual = muItr->gmtMuonCand().quality() ;
00842 
00843          if( qual == 4 ||
00844              qual == 5 ||
00845              qual == 6 ||
00846              qual == 7 )
00847          {
00848             inputMuonRefsSingle.push_back(
00849                edm::Ref< L1MuonParticleCollection >( muHandle, i ) ) ;
00850          }
00851 
00852          if( qual == 3 ||
00853              qual == 5 ||
00854              qual == 6 ||
00855              qual == 7 )
00856          {
00857             inputMuonRefsDouble.push_back(
00858                edm::Ref< L1MuonParticleCollection >( muHandle, i ) ) ;
00859          }
00860       }
00861    }
00862 
00863    auto_ptr< L1ParticleMapCollection > mapColl( new L1ParticleMapCollection ) ;
00864    bool globalDecision = false ;
00865    std::vector< bool > decisionWord ;
00866 
00867    for( int itrig = 0 ; itrig < L1ParticleMap::kNumOfL1TriggerTypes; ++itrig )
00868    {
00869       bool decision = false ;
00870       std::vector< L1ParticleMap::L1ObjectType > objectTypes ;
00871       L1EmParticleVectorRef outputEmRefsTmp ;
00872       L1JetParticleVectorRef outputJetRefsTmp ;
00873       L1MuonParticleVectorRef outputMuonRefsTmp ;
00874       L1EtMissParticleRefProd metRefTmp ;
00875       L1ParticleMap::L1IndexComboVector combosTmp ; // unfilled for single objs
00876 
00877       if( itrig == L1ParticleMap::kSingleMu3 ||
00878           itrig == L1ParticleMap::kSingleMu5 ||
00879           itrig == L1ParticleMap::kSingleMu7 ||
00880           itrig == L1ParticleMap::kSingleMu10 ||
00881           itrig == L1ParticleMap::kSingleMu14 ||
00882           itrig == L1ParticleMap::kSingleMu20 ||
00883           itrig == L1ParticleMap::kSingleMu25 )
00884       {
00885          objectTypes.push_back( L1ParticleMap::kMuon ) ;
00886 
00887          evaluateSingleObjectTrigger( inputMuonRefsSingle,
00888                                       singleThresholds_[ itrig ],
00889                                       decision,
00890                                       outputMuonRefsTmp ) ;
00891       }
00892       else if( itrig == L1ParticleMap::kSingleIsoEG5 ||
00893                itrig == L1ParticleMap::kSingleIsoEG8 ||
00894                itrig == L1ParticleMap::kSingleIsoEG10 ||
00895                itrig == L1ParticleMap::kSingleIsoEG12 ||
00896                itrig == L1ParticleMap::kSingleIsoEG15 ||
00897                itrig == L1ParticleMap::kSingleIsoEG20 ||
00898                itrig == L1ParticleMap::kSingleIsoEG25 )
00899       {
00900          objectTypes.push_back( L1ParticleMap::kEM ) ;
00901 
00902          evaluateSingleObjectTrigger( inputIsoEmRefs,
00903                                       singleThresholds_[ itrig ],
00904                                       decision,
00905                                       outputEmRefsTmp ) ;
00906       }
00907       else if( itrig == L1ParticleMap::kSingleEG5 ||
00908                itrig == L1ParticleMap::kSingleEG8 ||
00909                itrig == L1ParticleMap::kSingleEG10 ||
00910                itrig == L1ParticleMap::kSingleEG12 ||
00911                itrig == L1ParticleMap::kSingleEG15 ||
00912                itrig == L1ParticleMap::kSingleEG20 ||
00913                itrig == L1ParticleMap::kSingleEG25 )
00914       {
00915          objectTypes.push_back( L1ParticleMap::kEM ) ;
00916 
00917          evaluateSingleObjectTrigger( inputRelaxedEmRefs,
00918                                       singleThresholds_[ itrig ],
00919                                       decision,
00920                                       outputEmRefsTmp ) ;
00921       }
00922       else if( itrig == L1ParticleMap::kSingleJet15 ||
00923                itrig == L1ParticleMap::kSingleJet20 ||
00924                itrig == L1ParticleMap::kSingleJet30 ||
00925                itrig == L1ParticleMap::kSingleJet50 ||
00926                itrig == L1ParticleMap::kSingleJet70 ||
00927                itrig == L1ParticleMap::kSingleJet100 ||
00928                itrig == L1ParticleMap::kSingleJet150 ||
00929                itrig == L1ParticleMap::kSingleJet200 )
00930       {
00931          objectTypes.push_back( L1ParticleMap::kJet ) ;
00932 
00933          evaluateSingleObjectTrigger( inputJetRefs,
00934                                       singleThresholds_[ itrig ],
00935                                       decision,
00936                                       outputJetRefsTmp ) ;
00937       }
00938       else if( itrig == L1ParticleMap::kSingleTauJet10 ||
00939                itrig == L1ParticleMap::kSingleTauJet20 ||
00940                itrig == L1ParticleMap::kSingleTauJet30 ||
00941                itrig == L1ParticleMap::kSingleTauJet35 ||
00942                itrig == L1ParticleMap::kSingleTauJet40 ||
00943                itrig == L1ParticleMap::kSingleTauJet60 ||
00944                itrig == L1ParticleMap::kSingleTauJet80 ||
00945                itrig == L1ParticleMap::kSingleTauJet100 )
00946       {
00947          objectTypes.push_back( L1ParticleMap::kJet ) ;
00948 
00949          evaluateSingleObjectTrigger( inputTauRefs,
00950                                       singleThresholds_[ itrig ],
00951                                       decision,
00952                                       outputJetRefsTmp ) ;
00953       }
00954       else if( itrig == L1ParticleMap::kHTT100 ||
00955                itrig == L1ParticleMap::kHTT200 ||
00956                itrig == L1ParticleMap::kHTT250 ||
00957                itrig == L1ParticleMap::kHTT300 ||
00958                itrig == L1ParticleMap::kHTT400 ||
00959                itrig == L1ParticleMap::kHTT500 )
00960       {
00961          objectTypes.push_back( L1ParticleMap::kEtHad ) ;
00962 
00963          if( ht >= singleThresholds_[ itrig ] )
00964          {
00965             decision = true ;
00966             metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
00967          }
00968       }
00969       else if( itrig == L1ParticleMap::kETM10 ||
00970                itrig == L1ParticleMap::kETM15 ||
00971                itrig == L1ParticleMap::kETM20 ||
00972                itrig == L1ParticleMap::kETM30 ||
00973                itrig == L1ParticleMap::kETM40 ||
00974                itrig == L1ParticleMap::kETM50 ||
00975                itrig == L1ParticleMap::kETM60 )
00976       {
00977          objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
00978 
00979          if( met >= singleThresholds_[ itrig ] )
00980          {
00981             decision = true ;
00982             metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
00983          }
00984       }
00985       else if( itrig == L1ParticleMap::kETT60 )
00986       {
00987          objectTypes.push_back( L1ParticleMap::kEtTotal ) ;
00988 
00989          if( ett >= singleThresholds_[ itrig ] )
00990          {
00991             decision = true ;
00992             metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
00993          }
00994       }
00995       else if( itrig == L1ParticleMap::kDoubleMu3 )
00996       {
00997          objectTypes.push_back( L1ParticleMap::kMuon ) ;
00998          objectTypes.push_back( L1ParticleMap::kMuon ) ;
00999 
01000          evaluateDoubleSameObjectTrigger( inputMuonRefsDouble,
01001                                           singleThresholds_[ itrig ],
01002                                           decision,
01003                                           outputMuonRefsTmp,
01004                                           combosTmp ) ;
01005       }
01006       else if( itrig == L1ParticleMap::kDoubleIsoEG8 ||
01007                itrig == L1ParticleMap::kDoubleIsoEG10 )
01008       {
01009          objectTypes.push_back( L1ParticleMap::kEM ) ;
01010          objectTypes.push_back( L1ParticleMap::kEM ) ;
01011 
01012          evaluateDoubleSameObjectTrigger( inputIsoEmRefs,
01013                                           singleThresholds_[ itrig ],
01014                                           decision,
01015                                           outputEmRefsTmp,
01016                                           combosTmp ) ;
01017       }
01018       else if( itrig == L1ParticleMap::kDoubleEG5 ||
01019                itrig == L1ParticleMap::kDoubleEG10 ||
01020                itrig == L1ParticleMap::kDoubleEG15 )
01021       {
01022          objectTypes.push_back( L1ParticleMap::kEM ) ;
01023          objectTypes.push_back( L1ParticleMap::kEM ) ;
01024 
01025          evaluateDoubleSameObjectTrigger( inputRelaxedEmRefs,
01026                                           singleThresholds_[ itrig ],
01027                                           decision,
01028                                           outputEmRefsTmp,
01029                                           combosTmp ) ;
01030       }
01031       else if( itrig == L1ParticleMap::kDoubleJet70 ||
01032                itrig == L1ParticleMap::kDoubleJet100 )
01033       {
01034          objectTypes.push_back( L1ParticleMap::kJet ) ;
01035          objectTypes.push_back( L1ParticleMap::kJet ) ;
01036 
01037          evaluateDoubleSameObjectTrigger( inputJetRefs,
01038                                           singleThresholds_[ itrig ],
01039                                           decision,
01040                                           outputJetRefsTmp,
01041                                           combosTmp ) ;
01042       }
01043       else if( itrig == L1ParticleMap::kDoubleTauJet20 ||
01044                itrig == L1ParticleMap::kDoubleTauJet30 ||
01045                itrig == L1ParticleMap::kDoubleTauJet35 ||
01046                itrig == L1ParticleMap::kDoubleTauJet40 )
01047       {
01048          objectTypes.push_back( L1ParticleMap::kJet ) ;
01049          objectTypes.push_back( L1ParticleMap::kJet ) ;
01050 
01051          evaluateDoubleSameObjectTrigger( inputTauRefs,
01052                                           singleThresholds_[ itrig ],
01053                                           decision,
01054                                           outputJetRefsTmp,
01055                                           combosTmp ) ;
01056       }
01057       else if( itrig == L1ParticleMap::kMu3_IsoEG5 ||
01058                itrig == L1ParticleMap::kMu5_IsoEG10 )
01059       {
01060          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01061          objectTypes.push_back( L1ParticleMap::kEM ) ;
01062 
01063          evaluateDoubleDifferentObjectTrigger(
01064             inputMuonRefsSingle,
01065             inputIsoEmRefs,
01066             doubleThresholds_[ itrig ].first,
01067             doubleThresholds_[ itrig ].second,
01068             decision,
01069             outputMuonRefsTmp,
01070             outputEmRefsTmp,
01071             combosTmp ) ;
01072       }
01073       else if( itrig == L1ParticleMap::kMu3_EG12 )
01074       {
01075          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01076          objectTypes.push_back( L1ParticleMap::kEM ) ;
01077 
01078          evaluateDoubleDifferentObjectTrigger(
01079             inputMuonRefsSingle,
01080             inputRelaxedEmRefs,
01081             doubleThresholds_[ itrig ].first,
01082             doubleThresholds_[ itrig ].second,
01083             decision,
01084             outputMuonRefsTmp,
01085             outputEmRefsTmp,
01086             combosTmp ) ;
01087       }
01088       else if( itrig == L1ParticleMap::kMu3_Jet15 ||
01089                itrig == L1ParticleMap::kMu5_Jet15 ||
01090                itrig == L1ParticleMap::kMu3_Jet70 ||
01091                itrig == L1ParticleMap::kMu5_Jet20 )
01092       {
01093          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01094          objectTypes.push_back( L1ParticleMap::kJet ) ;
01095 
01096          evaluateDoubleDifferentObjectTrigger(
01097             inputMuonRefsSingle,
01098             inputJetRefs,
01099             doubleThresholds_[ itrig ].first,
01100             doubleThresholds_[ itrig ].second,
01101             decision,
01102             outputMuonRefsTmp,
01103             outputJetRefsTmp,
01104             combosTmp ) ;
01105       }
01106       else if( itrig == L1ParticleMap::kMu5_TauJet20 ||
01107                itrig == L1ParticleMap::kMu5_TauJet30 )
01108       {
01109          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01110          objectTypes.push_back( L1ParticleMap::kJet ) ;
01111 
01112          evaluateDoubleDifferentObjectTrigger(
01113             inputMuonRefsSingle,
01114             inputTauRefs,
01115             doubleThresholds_[ itrig ].first,
01116             doubleThresholds_[ itrig ].second,
01117             decision,
01118             outputMuonRefsTmp,
01119             outputJetRefsTmp,
01120             combosTmp ) ;
01121       }
01122       else if( itrig == L1ParticleMap::kIsoEG10_EG10 )
01123       {
01124          objectTypes.push_back( L1ParticleMap::kEM ) ;
01125          objectTypes.push_back( L1ParticleMap::kEM ) ;
01126 
01127          evaluateDoubleDifferentObjectSameTypeTrigger(
01128             inputIsoEmRefs,
01129             inputRelaxedEmRefs,
01130             doubleThresholds_[ itrig ].first,
01131             doubleThresholds_[ itrig ].second,
01132             decision,
01133             outputEmRefsTmp,
01134             combosTmp ) ;
01135       }
01136       else if( itrig == L1ParticleMap::kIsoEG10_Jet15 ||
01137                itrig == L1ParticleMap::kIsoEG10_Jet30 ||
01138                itrig == L1ParticleMap::kIsoEG10_Jet20 ||
01139                itrig == L1ParticleMap::kIsoEG10_Jet70 )
01140       {
01141          objectTypes.push_back( L1ParticleMap::kEM ) ;
01142          objectTypes.push_back( L1ParticleMap::kJet ) ;
01143 
01144          evaluateDoubleDifferentCaloObjectTrigger(
01145             inputIsoEmRefs,
01146             inputJetRefs,
01147             doubleThresholds_[ itrig ].first,
01148             doubleThresholds_[ itrig ].second,
01149             decision,
01150             outputEmRefsTmp,
01151             outputJetRefsTmp,
01152             combosTmp ) ;
01153       }
01154       else if( itrig == L1ParticleMap::kIsoEG10_TauJet20 ||
01155                itrig == L1ParticleMap::kIsoEG10_TauJet30 )
01156       {
01157          objectTypes.push_back( L1ParticleMap::kEM ) ;
01158          objectTypes.push_back( L1ParticleMap::kJet ) ;
01159 
01160          evaluateDoubleDifferentCaloObjectTrigger(
01161             inputIsoEmRefs,
01162             inputTauRefs,
01163             doubleThresholds_[ itrig ].first,
01164             doubleThresholds_[ itrig ].second,
01165             decision,
01166             outputEmRefsTmp,
01167             outputJetRefsTmp,
01168             combosTmp ) ;
01169       }
01170       else if( itrig == L1ParticleMap::kEG10_Jet15 ||
01171                itrig == L1ParticleMap::kEG12_Jet20 ||
01172                itrig == L1ParticleMap::kEG12_Jet70 )
01173       {
01174          objectTypes.push_back( L1ParticleMap::kEM ) ;
01175          objectTypes.push_back( L1ParticleMap::kJet ) ;
01176 
01177          evaluateDoubleDifferentCaloObjectTrigger(
01178             inputRelaxedEmRefs,
01179             inputJetRefs,
01180             doubleThresholds_[ itrig ].first,
01181             doubleThresholds_[ itrig ].second,
01182             decision,
01183             outputEmRefsTmp,
01184             outputJetRefsTmp,
01185             combosTmp ) ;
01186       }
01187       else if( itrig == L1ParticleMap::kEG12_TauJet40 )
01188       {
01189          objectTypes.push_back( L1ParticleMap::kEM ) ;
01190          objectTypes.push_back( L1ParticleMap::kJet ) ;
01191 
01192          evaluateDoubleDifferentCaloObjectTrigger(
01193             inputRelaxedEmRefs,
01194             inputTauRefs,
01195             doubleThresholds_[ itrig ].first,
01196             doubleThresholds_[ itrig ].second,
01197             decision,
01198             outputEmRefsTmp,
01199             outputJetRefsTmp,
01200             combosTmp ) ;
01201       }
01202       else if( itrig == L1ParticleMap::kJet70_TauJet40 )
01203       {
01204          objectTypes.push_back( L1ParticleMap::kJet ) ;
01205          objectTypes.push_back( L1ParticleMap::kJet ) ;
01206 
01207          evaluateDoubleDifferentObjectSameTypeTrigger(
01208             inputJetRefs,
01209             inputTauRefs,
01210             doubleThresholds_[ itrig ].first,
01211             doubleThresholds_[ itrig ].second,
01212             decision,
01213             outputJetRefsTmp,
01214             combosTmp ) ;
01215       }
01216       else if( itrig == L1ParticleMap::kMu3_HTT200 )
01217       {
01218          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01219          objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01220 
01221          if( ht >= doubleThresholds_[ itrig ].second )
01222          {
01223             evaluateSingleObjectTrigger( inputMuonRefsSingle,
01224                                          doubleThresholds_[ itrig ].first,
01225                                          decision,
01226                                          outputMuonRefsTmp ) ;
01227 
01228             if( decision )
01229             {
01230                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01231             }
01232          }
01233       }
01234       else if( itrig == L1ParticleMap::kIsoEG10_HTT200 )
01235       {
01236          objectTypes.push_back( L1ParticleMap::kEM ) ;
01237          objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01238 
01239          if( ht >= doubleThresholds_[ itrig ].second )
01240          {
01241             evaluateSingleObjectTrigger( inputIsoEmRefs,
01242                                          doubleThresholds_[ itrig ].first,
01243                                          decision,
01244                                          outputEmRefsTmp ) ;
01245 
01246             if( decision )
01247             {
01248                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01249             }
01250          }
01251       }
01252       else if( itrig == L1ParticleMap::kEG12_HTT200 )
01253       {
01254          objectTypes.push_back( L1ParticleMap::kEM ) ;
01255          objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01256 
01257          if( ht >= doubleThresholds_[ itrig ].second )
01258          {
01259             evaluateSingleObjectTrigger( inputRelaxedEmRefs,
01260                                          doubleThresholds_[ itrig ].first,
01261                                          decision,
01262                                          outputEmRefsTmp ) ;
01263 
01264             if( decision )
01265             {
01266                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01267             }
01268          }
01269       }
01270       else if( itrig == L1ParticleMap::kJet70_HTT200 )
01271       {
01272          objectTypes.push_back( L1ParticleMap::kJet ) ;
01273          objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01274 
01275          if( ht >= doubleThresholds_[ itrig ].second )
01276          {
01277             evaluateSingleObjectTrigger( inputJetRefs,
01278                                          doubleThresholds_[ itrig ].first,
01279                                          decision,
01280                                          outputJetRefsTmp ) ;
01281 
01282             if( decision )
01283             {
01284                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01285             }
01286          }
01287       }
01288       else if( itrig == L1ParticleMap::kTauJet40_HTT200 )
01289       {
01290          objectTypes.push_back( L1ParticleMap::kJet ) ;
01291          objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01292 
01293          if( ht >= doubleThresholds_[ itrig ].second )
01294          {
01295             evaluateSingleObjectTrigger( inputTauRefs,
01296                                          doubleThresholds_[ itrig ].first,
01297                                          decision,
01298                                          outputJetRefsTmp ) ;
01299 
01300             if( decision )
01301             {
01302                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01303             }
01304          }
01305       }
01306       else if( itrig == L1ParticleMap::kMu3_ETM30 )
01307       {
01308          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01309          objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01310 
01311          if( met >= doubleThresholds_[ itrig ].second )
01312          {
01313             evaluateSingleObjectTrigger( inputMuonRefsSingle,
01314                                          doubleThresholds_[ itrig ].first,
01315                                          decision,
01316                                          outputMuonRefsTmp ) ;
01317 
01318             if( decision )
01319             {
01320                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01321             }
01322          }
01323       }
01324       else if( itrig == L1ParticleMap::kIsoEG10_ETM30 )
01325       {
01326          objectTypes.push_back( L1ParticleMap::kEM ) ;
01327          objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01328 
01329          if( met >= doubleThresholds_[ itrig ].second )
01330          {
01331             evaluateSingleObjectTrigger( inputIsoEmRefs,
01332                                          doubleThresholds_[ itrig ].first,
01333                                          decision,
01334                                          outputEmRefsTmp ) ;
01335 
01336             if( decision )
01337             {
01338                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01339             }
01340          }
01341       }
01342       else if( itrig == L1ParticleMap::kEG12_ETM30 )
01343       {
01344          objectTypes.push_back( L1ParticleMap::kEM ) ;
01345          objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01346 
01347          if( met >= doubleThresholds_[ itrig ].second )
01348          {
01349             evaluateSingleObjectTrigger( inputRelaxedEmRefs,
01350                                          doubleThresholds_[ itrig ].first,
01351                                          decision,
01352                                          outputEmRefsTmp ) ;
01353 
01354             if( decision )
01355             {
01356                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01357             }
01358          }
01359       }
01360       else if( itrig == L1ParticleMap::kJet70_ETM40 )
01361       {
01362          objectTypes.push_back( L1ParticleMap::kJet ) ;
01363          objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01364 
01365          if( met >= doubleThresholds_[ itrig ].second )
01366          {
01367             evaluateSingleObjectTrigger( inputJetRefs,
01368                                          doubleThresholds_[ itrig ].first,
01369                                          decision,
01370                                          outputJetRefsTmp ) ;
01371 
01372             if( decision )
01373             {
01374                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01375             }
01376          }
01377       }
01378       else if( itrig == L1ParticleMap::kTauJet20_ETM20 ||
01379                itrig == L1ParticleMap::kTauJet30_ETM30 ||
01380                itrig == L1ParticleMap::kTauJet30_ETM40 )
01381       {
01382          objectTypes.push_back( L1ParticleMap::kJet ) ;
01383          objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01384 
01385          if( met >= doubleThresholds_[ itrig ].second )
01386          {
01387             evaluateSingleObjectTrigger( inputTauRefs,
01388                                          doubleThresholds_[ itrig ].first,
01389                                          decision,
01390                                          outputJetRefsTmp ) ;
01391 
01392             if( decision )
01393             {
01394                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01395             }
01396          }
01397       }
01398       else if( itrig == L1ParticleMap::kHTT100_ETM30 )
01399       {
01400          objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01401          objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01402 
01403          if( ht >= doubleThresholds_[ itrig ].first &&
01404              met >= doubleThresholds_[ itrig ].second )
01405          {
01406             decision = true ;
01407             metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01408          }
01409       }
01410       else if( itrig == L1ParticleMap::kTripleMu3 )
01411       {
01412          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01413          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01414          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01415 
01416          evaluateTripleSameObjectTrigger( inputMuonRefsDouble,
01417                                           singleThresholds_[ itrig ],
01418                                           decision,
01419                                           outputMuonRefsTmp,
01420                                           combosTmp ) ;
01421       }
01422       else if( itrig == L1ParticleMap::kTripleIsoEG5 )
01423       {
01424          objectTypes.push_back( L1ParticleMap::kEM ) ;
01425          objectTypes.push_back( L1ParticleMap::kEM ) ;
01426          objectTypes.push_back( L1ParticleMap::kEM ) ;
01427 
01428          evaluateTripleSameObjectTrigger( inputIsoEmRefs,
01429                                           singleThresholds_[ itrig ],
01430                                           decision,
01431                                           outputEmRefsTmp,
01432                                           combosTmp ) ;
01433       }
01434       else if( itrig == L1ParticleMap::kTripleEG10 )
01435       {
01436          objectTypes.push_back( L1ParticleMap::kEM ) ;
01437          objectTypes.push_back( L1ParticleMap::kEM ) ;
01438          objectTypes.push_back( L1ParticleMap::kEM ) ;
01439 
01440          evaluateTripleSameObjectTrigger( inputRelaxedEmRefs,
01441                                           singleThresholds_[ itrig ],
01442                                           decision,
01443                                           outputEmRefsTmp,
01444                                           combosTmp ) ;
01445       }
01446       else if( itrig == L1ParticleMap::kTripleJet50 )
01447       {
01448          objectTypes.push_back( L1ParticleMap::kJet ) ;
01449          objectTypes.push_back( L1ParticleMap::kJet ) ;
01450          objectTypes.push_back( L1ParticleMap::kJet ) ;
01451 
01452          evaluateTripleSameObjectTrigger( inputJetRefs,
01453                                           singleThresholds_[ itrig ],
01454                                           decision,
01455                                           outputJetRefsTmp,
01456                                           combosTmp ) ;
01457       }
01458       else if( itrig == L1ParticleMap::kTripleTauJet40 )
01459       {
01460          objectTypes.push_back( L1ParticleMap::kJet ) ;
01461          objectTypes.push_back( L1ParticleMap::kJet ) ;
01462          objectTypes.push_back( L1ParticleMap::kJet ) ;
01463 
01464          evaluateTripleSameObjectTrigger( inputTauRefs,
01465                                           singleThresholds_[ itrig ],
01466                                           decision,
01467                                           outputJetRefsTmp,
01468                                           combosTmp ) ;
01469       }
01470       else if( itrig == L1ParticleMap::kDoubleMu3_IsoEG5 )
01471       {
01472          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01473          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01474          objectTypes.push_back( L1ParticleMap::kEM ) ;
01475 
01476          evaluateDoublePlusSingleObjectTrigger(
01477             inputMuonRefsDouble,
01478             inputIsoEmRefs,
01479             doubleThresholds_[ itrig ].first,
01480             doubleThresholds_[ itrig ].second,
01481             decision,
01482             outputMuonRefsTmp,
01483             outputEmRefsTmp,
01484             combosTmp ) ;
01485       }
01486       else if( itrig == L1ParticleMap::kDoubleMu3_EG10 )
01487       {
01488          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01489          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01490          objectTypes.push_back( L1ParticleMap::kEM ) ;
01491 
01492          evaluateDoublePlusSingleObjectTrigger(
01493             inputMuonRefsDouble,
01494             inputRelaxedEmRefs,
01495             doubleThresholds_[ itrig ].first,
01496             doubleThresholds_[ itrig ].second,
01497             decision,
01498             outputMuonRefsTmp,
01499             outputEmRefsTmp,
01500             combosTmp ) ;
01501       }
01502       else if( itrig == L1ParticleMap::kDoubleIsoEG5_Mu3 )
01503       {
01504          objectTypes.push_back( L1ParticleMap::kEM ) ;
01505          objectTypes.push_back( L1ParticleMap::kEM ) ;
01506          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01507 
01508          evaluateDoublePlusSingleObjectTrigger(
01509             inputIsoEmRefs,
01510             inputMuonRefsSingle,
01511             doubleThresholds_[ itrig ].first,
01512             doubleThresholds_[ itrig ].second,
01513             decision,
01514             outputEmRefsTmp,
01515             outputMuonRefsTmp,
01516             combosTmp ) ;
01517       }
01518       else if( itrig == L1ParticleMap::kDoubleEG10_Mu3 )
01519       {
01520          objectTypes.push_back( L1ParticleMap::kEM ) ;
01521          objectTypes.push_back( L1ParticleMap::kEM ) ;
01522          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01523 
01524          evaluateDoublePlusSingleObjectTrigger(
01525             inputRelaxedEmRefs,
01526             inputMuonRefsSingle,
01527             doubleThresholds_[ itrig ].first,
01528             doubleThresholds_[ itrig ].second,
01529             decision,
01530             outputEmRefsTmp,
01531             outputMuonRefsTmp,
01532             combosTmp ) ;
01533       }
01534       else if( itrig == L1ParticleMap::kDoubleMu3_HTT200 )
01535       {
01536          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01537          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01538          objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01539 
01540          if( ht >= doubleThresholds_[ itrig ].second )
01541          {
01542             evaluateDoubleSameObjectTrigger( inputMuonRefsDouble,
01543                                              doubleThresholds_[ itrig ].first,
01544                                              decision,
01545                                              outputMuonRefsTmp,
01546                                              combosTmp,
01547                                              true ) ;
01548 
01549             if( decision )
01550             {
01551                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01552             }
01553          }
01554       }
01555       else if( itrig == L1ParticleMap::kDoubleIsoEG5_HTT200 )
01556       {
01557          objectTypes.push_back( L1ParticleMap::kEM ) ;
01558          objectTypes.push_back( L1ParticleMap::kEM ) ;
01559          objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01560 
01561          if( ht >= doubleThresholds_[ itrig ].second )
01562          {
01563             evaluateDoubleSameObjectTrigger( inputIsoEmRefs,
01564                                              doubleThresholds_[ itrig ].first,
01565                                              decision,
01566                                              outputEmRefsTmp,
01567                                              combosTmp,
01568                                              true ) ;
01569 
01570             if( decision )
01571             {
01572                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01573             }
01574          }
01575       }
01576       else if( itrig == L1ParticleMap::kDoubleEG10_HTT200 )
01577       {
01578          objectTypes.push_back( L1ParticleMap::kEM ) ;
01579          objectTypes.push_back( L1ParticleMap::kEM ) ;
01580          objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01581 
01582          if( ht >= doubleThresholds_[ itrig ].second )
01583          {
01584             evaluateDoubleSameObjectTrigger( inputRelaxedEmRefs,
01585                                              doubleThresholds_[ itrig ].first,
01586                                              decision,
01587                                              outputEmRefsTmp,
01588                                              combosTmp,
01589                                              true ) ;
01590 
01591             if( decision )
01592             {
01593                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01594             }
01595          }
01596       }
01597       else if( itrig == L1ParticleMap::kDoubleJet50_HTT200 )
01598       {
01599          objectTypes.push_back( L1ParticleMap::kJet ) ;
01600          objectTypes.push_back( L1ParticleMap::kJet ) ;
01601          objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01602 
01603          if( ht >= doubleThresholds_[ itrig ].second )
01604          {
01605             evaluateDoubleSameObjectTrigger( inputJetRefs,
01606                                              doubleThresholds_[ itrig ].first,
01607                                              decision,
01608                                              outputJetRefsTmp,
01609                                              combosTmp,
01610                                              true ) ;
01611 
01612             if( decision )
01613             {
01614                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01615             }
01616          }
01617       }
01618       else if( itrig == L1ParticleMap::kDoubleTauJet40_HTT200 )
01619       {
01620          objectTypes.push_back( L1ParticleMap::kJet ) ;
01621          objectTypes.push_back( L1ParticleMap::kJet ) ;
01622          objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01623 
01624          if( ht >= doubleThresholds_[ itrig ].second )
01625          {
01626             evaluateDoubleSameObjectTrigger( inputTauRefs,
01627                                              doubleThresholds_[ itrig ].first,
01628                                              decision,
01629                                              outputJetRefsTmp,
01630                                              combosTmp,
01631                                              true ) ;
01632 
01633             if( decision )
01634             {
01635                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01636             }
01637          }
01638       }
01639       else if( itrig == L1ParticleMap::kDoubleMu3_ETM20 )
01640       {
01641          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01642          objectTypes.push_back( L1ParticleMap::kMuon ) ;
01643          objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01644 
01645          if( met >= doubleThresholds_[ itrig ].second )
01646          {
01647             evaluateDoubleSameObjectTrigger( inputMuonRefsDouble,
01648                                              doubleThresholds_[ itrig ].first,
01649                                              decision,
01650                                              outputMuonRefsTmp,
01651                                              combosTmp,
01652                                              true ) ;
01653 
01654             if( decision )
01655             {
01656                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01657             }
01658          }
01659       }
01660       else if( itrig == L1ParticleMap::kDoubleIsoEG5_ETM20 )
01661       {
01662          objectTypes.push_back( L1ParticleMap::kEM ) ;
01663          objectTypes.push_back( L1ParticleMap::kEM ) ;
01664          objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01665 
01666          if( met >= doubleThresholds_[ itrig ].second )
01667          {
01668             evaluateDoubleSameObjectTrigger( inputIsoEmRefs,
01669                                              doubleThresholds_[ itrig ].first,
01670                                              decision,
01671                                              outputEmRefsTmp,
01672                                              combosTmp,
01673                                              true ) ;
01674 
01675             if( decision )
01676             {
01677                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01678             }
01679          }
01680       }
01681       else if( itrig == L1ParticleMap::kDoubleEG10_ETM20 )
01682       {
01683          objectTypes.push_back( L1ParticleMap::kEM ) ;
01684          objectTypes.push_back( L1ParticleMap::kEM ) ;
01685          objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01686 
01687          if( met >= doubleThresholds_[ itrig ].second )
01688          {
01689             evaluateDoubleSameObjectTrigger( inputRelaxedEmRefs,
01690                                              doubleThresholds_[ itrig ].first,
01691                                              decision,
01692                                              outputEmRefsTmp,
01693                                              combosTmp,
01694                                              true ) ;
01695 
01696             if( decision )
01697             {
01698                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01699             }
01700          }
01701       }
01702       else if( itrig == L1ParticleMap::kDoubleJet50_ETM20 )
01703       {
01704          objectTypes.push_back( L1ParticleMap::kJet ) ;
01705          objectTypes.push_back( L1ParticleMap::kJet ) ;
01706          objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01707 
01708          if( met >= doubleThresholds_[ itrig ].second )
01709          {
01710             evaluateDoubleSameObjectTrigger( inputJetRefs,
01711                                              doubleThresholds_[ itrig ].first,
01712                                              decision,
01713                                              outputJetRefsTmp,
01714                                              combosTmp,
01715                                              true ) ;
01716 
01717             if( decision )
01718             {
01719                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01720             }
01721          }
01722       }
01723       else if( itrig == L1ParticleMap::kDoubleTauJet40_ETM20 )
01724       {
01725          objectTypes.push_back( L1ParticleMap::kJet ) ;
01726          objectTypes.push_back( L1ParticleMap::kJet ) ;
01727          objectTypes.push_back( L1ParticleMap::kEtMiss ) ;
01728 
01729          if( met >= doubleThresholds_[ itrig ].second )
01730          {
01731             evaluateDoubleSameObjectTrigger( inputTauRefs,
01732                                              doubleThresholds_[ itrig ].first,
01733                                              decision,
01734                                              outputJetRefsTmp,
01735                                              combosTmp,
01736                                              true ) ;
01737 
01738             if( decision )
01739             {
01740                metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01741             }
01742          }
01743       }
01744       else if( itrig == L1ParticleMap::kQuadJet30 )
01745       {
01746          objectTypes.push_back( L1ParticleMap::kJet ) ;
01747          objectTypes.push_back( L1ParticleMap::kJet ) ;
01748          objectTypes.push_back( L1ParticleMap::kJet ) ;
01749          objectTypes.push_back( L1ParticleMap::kJet ) ;
01750 
01751          evaluateQuadSameObjectTrigger( inputJetRefs,
01752                                         singleThresholds_[ itrig ],
01753                                         decision,
01754                                         outputJetRefsTmp,
01755                                         combosTmp ) ;
01756       }
01757       else if( itrig == L1ParticleMap::kExclusiveDoubleIsoEG4 )
01758       {
01759          objectTypes.push_back( L1ParticleMap::kEM ) ;
01760          objectTypes.push_back( L1ParticleMap::kEM ) ;
01761 
01762          evaluateDoubleExclusiveIsoEG(inputIsoEmRefs,
01763                                       inputJetRefs,
01764                                       doubleThresholds_[ itrig ].first,
01765                                       doubleThresholds_[ itrig ].second,
01766                                       decision,
01767                                       outputEmRefsTmp,
01768                                       combosTmp);
01769 
01770       }
01771       else if( itrig == L1ParticleMap::kExclusiveDoubleJet60 )
01772       {
01773          objectTypes.push_back( L1ParticleMap::kJet ) ;
01774          objectTypes.push_back( L1ParticleMap::kJet ) ;
01775 
01776          if( inputJetRefs.size() == 2 )
01777          {
01778             evaluateDoubleSameObjectTrigger( inputJetRefs,
01779                                              singleThresholds_[ itrig ],
01780                                              decision,
01781                                              outputJetRefsTmp,
01782                                              combosTmp ) ;
01783          }
01784       }
01785       else if( itrig == L1ParticleMap::kExclusiveJet25_Gap_Jet25 )
01786       {
01787          objectTypes.push_back( L1ParticleMap::kJet ) ;
01788          objectTypes.push_back( L1ParticleMap::kJet ) ;
01789 
01790          if( inputJetRefs.size() == 2 )
01791          {
01792             evaluateJetGapJetTrigger( inputForJetRefs,  
01793                                       singleThresholds_[ itrig ],
01794                                       decision,
01795                                       outputJetRefsTmp,
01796                                       combosTmp ) ;
01797          }
01798       }
01799       else if( itrig == L1ParticleMap::kIsoEG10_Jet20_ForJet10  )
01800       {
01801          objectTypes.push_back( L1ParticleMap::kEM ) ;
01802          objectTypes.push_back( L1ParticleMap::kJet ) ;
01803 
01804          evaluateForwardRapidityGap(inputForJetRefs,
01805                                     singleThresholds_[ itrig ],
01806                                     decision);
01807 
01808          if(decision){
01809            decision = false;
01810            evaluateDoubleDifferentCaloObjectTrigger(
01811               inputIsoEmRefs,
01812               inputCenJetTauJetRefs,
01813               doubleThresholds_[ itrig ].first,
01814               doubleThresholds_[ itrig ].second,
01815               decision,
01816               outputEmRefsTmp,
01817               outputJetRefsTmp,
01818               combosTmp );
01819          }
01820       }
01821       else if( itrig == L1ParticleMap::kMinBias_HTT10 )
01822       {
01823          objectTypes.push_back( L1ParticleMap::kEtHad ) ;
01824 
01825          if( ht >= 10. )
01826          {
01827             decision = true ;
01828             metRefTmp = L1EtMissParticleRefProd( metHandle ) ;
01829          }
01830       }
01831       else if( itrig == L1ParticleMap::kZeroBias )
01832       {
01833          decision = true ;
01834       }
01835 
01836       L1EmParticleVectorRef outputEmRefs ;
01837       L1JetParticleVectorRef outputJetRefs ;
01838       L1MuonParticleVectorRef outputMuonRefs ;
01839       L1EtMissParticleRefProd metRef ;
01840       L1ParticleMap::L1IndexComboVector combos ; // unfilled for single objs
01841 
01842       if( decision )
01843       {
01844 //       if( prescaleCounters_[ itrig ] % prescales_[ itrig ] )
01845 
01846          double rand = RandFlat::shoot() * ( double ) prescales_[ itrig ] ;
01847          if( rand > 1. )
01848          {
01849             decision = false ;
01850          }
01851          else
01852          {
01853             outputEmRefs = outputEmRefsTmp ;
01854             outputJetRefs = outputJetRefsTmp ;
01855             outputMuonRefs = outputMuonRefsTmp ;
01856             metRef = metRefTmp ;
01857             combos = combosTmp ;
01858          }
01859 
01860          ++prescaleCounters_[ itrig ] ;
01861       }
01862 
01863       // Construct a L1ParticleMap and add it to the collection.
01864       mapColl->push_back( L1ParticleMap(
01865          ( L1ParticleMap::L1TriggerType ) itrig,
01866          decision,
01867          objectTypes,
01868          outputEmRefs,
01869          outputJetRefs,
01870          outputMuonRefs,
01871          metRef,
01872          combos ) ) ;
01873 
01874       globalDecision = globalDecision || decision ;
01875       decisionWord.push_back( decision ) ;
01876    }
01877 
01878    // Put the L1ParticleMapCollection into the event.
01879    iEvent.put( mapColl ) ;
01880 
01881    // Make a L1GlobalTriggerReadoutRecord and put it into the event.
01882    auto_ptr< L1GlobalTriggerReadoutRecord > gtRecord(
01883       new L1GlobalTriggerReadoutRecord() ) ;
01884    gtRecord->setDecision( globalDecision ) ;
01885    gtRecord->setDecisionWord( decisionWord ) ;
01886    iEvent.put( gtRecord ) ;
01887 
01888    return ;
01889 }


Member Data Documentation

edm::InputTag L1ExtraParticleMapProd::cenJetSource_ [private]

Definition at line 154 of file L1ExtraParticleMapProd.h.

Referenced by produce().

std::pair< double, double > L1ExtraParticleMapProd::doubleThresholds_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes] [private]

Definition at line 164 of file L1ExtraParticleMapProd.h.

Referenced by L1ExtraParticleMapProd(), and produce().

edm::InputTag L1ExtraParticleMapProd::etMissSource_ [private]

Definition at line 157 of file L1ExtraParticleMapProd.h.

Referenced by produce().

edm::InputTag L1ExtraParticleMapProd::forJetSource_ [private]

Definition at line 155 of file L1ExtraParticleMapProd.h.

Referenced by produce().

edm::InputTag L1ExtraParticleMapProd::isoEmSource_ [private]

Definition at line 152 of file L1ExtraParticleMapProd.h.

Referenced by produce().

edm::InputTag L1ExtraParticleMapProd::muonSource_ [private]

Definition at line 151 of file L1ExtraParticleMapProd.h.

Referenced by produce().

edm::InputTag L1ExtraParticleMapProd::nonIsoEmSource_ [private]

Definition at line 153 of file L1ExtraParticleMapProd.h.

Referenced by produce().

int L1ExtraParticleMapProd::prescaleCounters_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes] [private]

Definition at line 162 of file L1ExtraParticleMapProd.h.

Referenced by L1ExtraParticleMapProd(), and produce().

int L1ExtraParticleMapProd::prescales_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes] [private]

Definition at line 160 of file L1ExtraParticleMapProd.h.

Referenced by L1ExtraParticleMapProd(), and produce().

double L1ExtraParticleMapProd::singleThresholds_[l1extra::L1ParticleMap::kNumOfL1TriggerTypes] [private]

Definition at line 159 of file L1ExtraParticleMapProd.h.

Referenced by L1ExtraParticleMapProd(), and produce().

edm::InputTag L1ExtraParticleMapProd::tauJetSource_ [private]

Definition at line 156 of file L1ExtraParticleMapProd.h.

Referenced by produce().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:26:28 2009 for CMSSW by  doxygen 1.5.4