54 #ifndef ZeeCandidateFilter_H
55 #define ZeeCandidateFilter_H
252 Double_t dist1_D = 0.02 ;
253 Double_t dcot1_D = 0.02 ;
259 Double_t dist2_D = 0.02 ;
260 Double_t dcot2_D = 0.02 ;
272 if ( dataMagneticFieldSetUp_ ) {
281 Double_t BarrelMaxEta_D = 1.4442 ;
282 Double_t EndCapMinEta_D = 1.5660 ;
283 Double_t EndCapMaxEta_D = 2.5000 ;
300 if ( useHLTObjectETCut_ ) {
312 if ( Int_t(
vHltpathExtra_.size()) != Int_t(vHltpathFilterExtra_.size()) ) {
313 std::cout <<
"ZeeCandidateFilter: ERROR IN Configuration: vHltpathExtra and vHltpathFilterExtra" <<
" should have the same dimensions " << std::endl;
349 if ( useSpikeRejection_ ) {
361 std::cout <<
"ZeeCandidateFilter: Running Zee Filter..." << std::endl;
364 std::cout <<
"ZeeCandidateFilter: HLT Path " << hltpath_ << std::endl;
365 std::cout <<
"ZeeCandidateFilter: HLT Filter " << hltpathFilter_ << std::endl;
368 for (Int_t itrig=0; itrig < (Int_t)
vHltpathExtra_.size(); ++itrig ) {
375 std::cout <<
"ZeeCandidateFilter: Trigger info will not be used here" << std::endl;
379 std::cout <<
"ZeeCandidateFilter: MET > " << METCut_ << std::endl;
382 if ( useEcalDrivenElectrons_ ) {
383 std::cout <<
"ZeeCandidateFilter: Electron Candidate(s) is required to be ecal driven" << std::endl;
387 std::cout <<
"ZeeCandidateFilter: At least one electron is required to match an HLT object with DR < " << electronMatched2HLT_DR_ << std::endl;
390 std::cout <<
"ZeeCandidateFilter: Electron Candidates NOT required to match HLT object " << std::endl;
393 if ( useValidFirstPXBHit1_ ) {
394 std::cout <<
"ZeeCandidateFilter: Electron Candidate #1 required to have a valid hit in 1st PXB layer " << std::endl;
397 if ( useValidFirstPXBHit2_ ) {
398 std::cout <<
"ZeeCandidateFilter: Electron Candidate #2 required to have a valid hit in 1st PXB layer " << std::endl;
401 if ( calculateValidFirstPXBHit1_ ) {
402 std::cout <<
"ZeeCandidateFilter: Info about whether there is a valid 1st layer PXB hit for electron candidate #1 will be stored: you can access that later by myElec.userInt(\"PassValidFirstPXBHit\")==1" << std::endl;
405 if ( calculateValidFirstPXBHit2_ ) {
406 std::cout <<
"ZeeCandidateFilter: Info about whether there is a valid 1st layer PXB hit for electron candidate #2 will be stored: you can access that later by myElec.userInt(\"PassValidFirstPXBHit\")==1" << std::endl;
409 if ( useExpectedMissingHits1_ ) {
410 std::cout <<
"ZeeCandidateFilter: Electron Candidate #1 is required to have less than " << maxNumberOfExpectedMissingHits1_ <<
" expected hits missing " << std::endl;
413 if ( useExpectedMissingHits2_ ) {
414 std::cout <<
"ZeeCandidateFilter: Electron Candidate #2 is required to have less than " << maxNumberOfExpectedMissingHits2_ <<
" expected hits missing " << std::endl;
417 if ( calculateExpectedMissingHits1_ ) {
418 std::cout <<
"ZeeCandidateFilter: Missing Hits from expected inner layers for electron candidate #1 will be calculated and stored: you can access them later by myElec.userInt(\"NumberOfExpectedMissingHits\")" << std::endl;
421 if ( calculateExpectedMissingHits2_ ) {
422 std::cout <<
"ZeeCandidateFilter: Missing Hits from expected inner layers for electron candidate #2 will be calculated and stored: you can access them later by myElec.userInt(\"NumberOfExpectedMissingHits\")" << std::endl;
425 if ( useConversionRejection1_ ) {
426 std::cout <<
"ZeeCandidateFilter: Electron Candidate #1 is required to pass EGAMMA Conversion Rejection criteria" << std::endl;
429 if ( useConversionRejection2_ ) {
430 std::cout <<
"ZeeCandidateFilter: Electron Candidate #2 is required to pass EGAMMA Conversion Rejection criteria" << std::endl;
433 if ( calculateConversionRejection1_ ) {
434 std::cout <<
"ZeeCandidateFilter: EGAMMA Conversion Rejection criteria for electron candidate #1 will be calculated and stored: you can access them later by demanding for a successful electron myElec.userInt(\"PassConversionRejection\")==1" << std::endl;
437 if ( calculateConversionRejection2_ ) {
438 std::cout <<
"ZeeCandidateFilter: EGAMMA Conversion Rejection criteria for electron candidate #2 will be calculated and stored: you can access them later by demanding for a successful electron myElec.userInt(\"PassConversionRejection\")==1" << std::endl;
441 if ( dataMagneticFieldSetUp_ ) {
442 std::cout <<
"ZeeCandidateFilter: Data Configuration for Magnetic Field DCS tag " <<
dcsTag_ << std::endl;
445 if ( useSpikeRejection_ ) {
449 std::cout <<
"ZeeCandidateFilter: Fiducial Cut: " << std::endl;
451 std::cout <<
"ZeeCandidateFilter: EndcapMin: " << EndCapMinEta_ <<
" EndcapMax: " << EndCapMaxEta_ << std::endl;
458 produces<pat::CompositeCandidateCollection>(
"selectedZeeCandidates").setBranchAlias(
"selectedZeeCandidates");
482 std::cout <<
"FILTER-MSG: Begin Processing ... "
483 <<
"Run = " << iEvent.
run() <<
" "
494 Int_t passTrigger = 0;
496 if ( HLTResults.isValid() ) {
500 UInt_t trigger_size = HLTResults->size();
502 UInt_t trigger_position_extra;
504 if ( trigger_position < trigger_size ) {
505 passTrigger = (Int_t)HLTResults->accept(trigger_position);
510 <<
" | " <<
"trigger_size = " << trigger_size
511 <<
" | " <<
"hltpath_ = " <<
hltpath_
512 <<
" | " <<
"trigger_position = " << trigger_position
513 <<
" | " <<
"passTrigger = " << passTrigger
517 for (Int_t itrig=0; itrig < (Int_t)
vHltpathExtra_.size(); ++itrig ) {
520 if ( trigger_position_extra < trigger_size ) {
521 passTrigger = (Int_t)HLTResults->accept(trigger_position_extra);
526 <<
" | " <<
"vHltpathExtra_[" << itrig <<
"] = " <<
vHltpathExtra_[itrig]
527 <<
" | " <<
"trigger_position_extra = " << trigger_position_extra
528 <<
" | " <<
"passTrigger = " << passTrigger
532 if ( passTrigger > 0 ) { break ; }
539 else {
std::cout <<
"TriggerResults are missing from this event.." << std::endl;
553 const Int_t nF(pHLT->sizeFilters());
556 std::vector<Int_t> filterIndExtra;
564 Bool_t finalpathfound =
false;
566 if ( nF != filterInd ) {
567 finalpathfound =
true;
570 for (Int_t itrig=0; itrig < (Int_t)filterIndExtra.size(); ++itrig ) {
std::cout <<
"working on #" << itrig << std::endl;
std::cout <<
" ---> " << filterIndExtra[itrig] << std::endl;
571 if ( nF != filterIndExtra[itrig] ) {
572 finalpathfound =
true;
578 if ( ! finalpathfound ) {
std::cout <<
"No HLT Filter was not found in this event..." << std::endl;
617 const Int_t Nelecs = pElecs->size();
619 if ( Nelecs <= 1 ) {
std::cout <<
"No more than 1 electrons found in this event" << std::endl;
626 std::vector<Double_t> ETs;
629 for (pat::ElectronCollection::const_iterator elec = pElecs->begin(); elec != pElecs->end(); ++elec) {
630 Double_t sc_et = elec->caloEnergy()/TMath::CosH(elec->gsfTrack()->eta());
632 ETs.push_back(sc_et);
633 myElectrons.push_back(*elec);
637 const Int_t event_elec_number = (Int_t)
indices.size();
639 if ( event_elec_number <= 1 ) {
std::cout <<
"No more than 1 electrons in fiducial were found" << std::endl;
644 Int_t *sorted =
new Int_t[event_elec_number];
645 Double_t *et =
new Double_t[event_elec_number];
647 for (Int_t
i=0;
i<event_elec_number; ++
i ) {
652 TMath::Sort(event_elec_number, et, sorted,
true);
655 Int_t max_et_index1 = sorted[0];
656 Int_t max_et_index2 = sorted[1];
658 if ( ( ETs[max_et_index1] <
ETCut_ ) || ( ETs[max_et_index2] <
ETCut_ ) ) {
669 if ( !
isInFiducial(maxETelec1.caloPosition().eta()) ) {
675 if ( !
isInFiducial(maxETelec2.caloPosition().eta()) ) {
683 if ( ( ! maxETelec1.ecalDrivenSeed() ) || ( ! maxETelec2.ecalDrivenSeed() ) ) {
705 const DetId seedId = maxETelec1.superCluster()->seed()->seed();
730 const DetId seedId = maxETelec2.superCluster()->seed()->seed();
745 const std::vector<reco::Vertex> Vtx = *(pVtx.product());
747 Double_t pv_x = -999999.;
748 Double_t pv_y = -999999.;
749 Double_t pv_z = -999999.;
751 Double_t ele_tip_pv1 = -999999.;
752 Double_t ele_tip_pv2 = -999999.;
754 if ( Vtx.size() >=1 ) {
755 pv_x = Vtx[0].position().x();
756 pv_y = Vtx[0].position().y();
757 pv_z = Vtx[0].position().z();
758 ele_tip_pv1 = (-1.0) * ( maxETelec1.gsfTrack()->dxy(Vtx[0].
position()) ) ;
759 ele_tip_pv2 = (-1.0) * ( maxETelec2.gsfTrack()->dxy(Vtx[0].
position()) ) ;
762 maxETelec1.addUserFloat(
"pv_x", Float_t(pv_x));
763 maxETelec1.addUserFloat(
"pv_x", Float_t(pv_y));
764 maxETelec1.addUserFloat(
"pv_z", Float_t(pv_z));
765 maxETelec1.addUserFloat(
"ele_tip_pv", Float_t(ele_tip_pv1));
767 maxETelec2.addUserFloat(
"pv_x", Float_t(pv_x));
768 maxETelec2.addUserFloat(
"pv_x", Float_t(pv_y));
769 maxETelec2.addUserFloat(
"pv_z", Float_t(pv_z));
770 maxETelec2.addUserFloat(
"ele_tip_pv", Float_t(ele_tip_pv2));
816 Bool_t
fail = ( ! maxETelec1.gsfTrack()->hitPattern().hasValidHitInFirstPixelBarrel() ) ;
826 std::string vfpx(
"PassValidFirstPXBHit");
829 maxETelec1.addUserInt(vfpx,0);
832 maxETelec1.addUserInt(vfpx,1);
841 Bool_t
fail = ( ! maxETelec2.gsfTrack()->hitPattern().hasValidHitInFirstPixelBarrel() );
851 std::string vfpx(
"PassValidFirstPXBHit");
854 maxETelec2.addUserInt(vfpx,0);
857 maxETelec2.addUserInt(vfpx,1);
866 Int_t numberOfInnerHits = (Int_t)( maxETelec1.gsfTrack()->trackerExpectedHitsInner().numberOfHits() );
875 maxETelec1.addUserInt(
"NumberOfExpectedMissingHits",numberOfInnerHits);
882 Int_t numberOfInnerHits = (Int_t)( maxETelec2.gsfTrack()->trackerExpectedHitsInner().numberOfHits() );
891 maxETelec2.addUserInt(
"NumberOfExpectedMissingHits",numberOfInnerHits);
910 Double_t currentToBFieldScaleFactor = 2.09237036221512717e-04;
911 Double_t
current = (*dcsHandle)[0].magnetCurrent();
912 bfield = current*currentToBFieldScaleFactor;
925 if ( iEvent.
getByLabel(
"generalTracks", ctfTracks) ) {
930 Float_t dist = convInfo.
dist();
931 Float_t dcot = convInfo.
dcot();
933 Bool_t isConv = ( ( TMath::Abs(dist) <
dist1_ ) && ( TMath::Abs(dcot) <
dcot1_ ) ) ;
935 std::cout <<
"Filter: for electron #1 the conversion says " << isConv << std::endl;
945 maxETelec1.addUserFloat(
"Dist", Float_t(dist));
946 maxETelec1.addUserFloat(
"Dcot", Float_t(dcot));
949 maxETelec1.addUserInt(
"PassConversionRejection",0);
952 maxETelec1.addUserInt(
"PassConversionRejection",1);
959 std::cout <<
"WARNING! Track Collection with input name: generalTracks was not found. Conversion Rejection for electron #1 is not going to be applied!!!" << std::endl;
981 Double_t currentToBFieldScaleFactor = 2.09237036221512717e-04;
982 Double_t
current = (*dcsHandle)[0].magnetCurrent();
983 bfield = current*currentToBFieldScaleFactor;
996 if ( iEvent.
getByLabel(
"generalTracks", ctfTracks) ) {
1001 Float_t dist = convInfo.
dist();
1002 Float_t dcot = convInfo.
dcot();
1004 Bool_t isConv = ( ( TMath::Abs(dist) <
dist2_ ) && ( TMath::Abs(dcot) <
dcot2_ ) ) ;
1006 std::cout <<
"Filter: for electron #2 the conversion says " << isConv << std::endl;
1016 maxETelec2.addUserFloat(
"Dist", Float_t(dist));
1017 maxETelec2.addUserFloat(
"Dcot", Float_t(dcot));
1020 maxETelec2.addUserInt(
"PassConversionRejection",0);
1023 maxETelec2.addUserInt(
"PassConversionRejection",1);
1030 std::cout <<
"WARNING! Track Collection with input name: generalTracks was not found. Conversion Rejection for electron #2 is not going to be applied!!!" << std::endl;
1035 std::cout <<
"HLT matching starts" << std::endl;
1039 Double_t matched_dr_distance1 = 999999.;
1040 Int_t trigger_int_probe1 = 0;
1042 Double_t matched_dr_distance2 = 999999.;
1043 Int_t trigger_int_probe2 = 0;
1045 if ( finalpathfound ) {
1047 if ( nF != filterInd ) {
1050 const Int_t nK(KEYS.size());
1052 std::cout <<
"Found trig objects #" << nK << std::endl;
1054 for ( Int_t iTrig = 0; iTrig < nK; ++iTrig ) {
1064 Double_t dr_ele_HLT1 =
reco::deltaR(maxETelec1.superCluster()->eta(),maxETelec1.superCluster()->phi(),TO.
eta(),TO.
phi());
1065 Double_t dr_ele_HLT2 =
reco::deltaR(maxETelec2.superCluster()->eta(),maxETelec2.superCluster()->phi(),TO.
eta(),TO.
phi());
1069 if ( TMath::Abs(dr_ele_HLT1) < matched_dr_distance1 ) {
1070 matched_dr_distance1 = dr_ele_HLT1;
1073 if ( TMath::Abs(dr_ele_HLT2) < matched_dr_distance2 ) {
1074 matched_dr_distance2 = dr_ele_HLT2;
1083 for (Int_t itrig=0; itrig < (Int_t) filterIndExtra.size(); ++itrig ) {
1085 if ( filterIndExtra[itrig] == nF ) {
1089 std::cout <<
"working on #" << itrig << std::endl;
std::cout <<
" ---> " << filterIndExtra[itrig] << std::endl;
1091 const trigger::Keys& KEYS(pHLT->filterKeys(filterIndExtra[itrig]));
1092 const Int_t nK(KEYS.size());
1094 std::cout <<
"Found trig objects #" << nK << std::endl;
1096 for (Int_t iTrig = 0; iTrig <nK; ++iTrig ) {
1100 Double_t dr_ele_HLT1 =
reco::deltaR(maxETelec1.eta(),maxETelec1.phi(),TO.
eta(),TO.
phi());
1101 Double_t dr_ele_HLT2 =
reco::deltaR(maxETelec2.eta(),maxETelec2.phi(),TO.
eta(),TO.
phi());
1105 if ( TMath::Abs(dr_ele_HLT1) < matched_dr_distance1 ) {
1106 matched_dr_distance1 = dr_ele_HLT1;
1109 if ( TMath::Abs(dr_ele_HLT2) < matched_dr_distance2 ) {
1110 matched_dr_distance2 = dr_ele_HLT2;
1117 ++trigger_int_probe1;
1121 ++trigger_int_probe2;
1124 if ( ( trigger_int_probe1 == 0 ) && ( trigger_int_probe2 == 0 ) ) {
std::cout <<
"No electron could be matched to an HLT object with " << std::endl;
1132 maxETelec1.addUserFloat(
"HLTMatchingDR", Float_t(matched_dr_distance1));
1133 maxETelec2.addUserFloat(
"HLTMatchingDR", Float_t(matched_dr_distance2));
1145 std::cout <<
"HLT matching has finished" << std::endl;
1153 if ( HLTResults.isValid() ) {
1158 HLTPath[0 ] =
"HLT_Photon10_L1R" ;
1159 HLTPath[1 ] =
"HLT_Photon15_L1R" ;
1160 HLTPath[2 ] =
"HLT_Photon20_L1R" ;
1161 HLTPath[3 ] =
"HLT_Photon15_TrackIso_L1R" ;
1162 HLTPath[4 ] =
"HLT_Photon15_LooseEcalIso_L1R" ;
1163 HLTPath[5 ] =
"HLT_Photon30_L1R_8E29" ;
1164 HLTPath[6 ] =
"HLT_Photon30_L1R_8E29" ;
1165 HLTPath[7 ] =
"HLT_Ele10_LW_L1R" ;
1166 HLTPath[8 ] =
"HLT_Ele15_LW_L1R" ;
1167 HLTPath[9 ] =
"HLT_Ele20_LW_L1R" ;
1168 HLTPath[10] =
"HLT_Ele10_LW_EleId_L1R" ;
1169 HLTPath[11] =
"HLT_Ele15_SiStrip_L1R" ;
1170 HLTPath[12] =
"HLT_IsoTrackHB_8E29" ;
1171 HLTPath[13] =
"HLT_IsoTrackHE_8E29" ;
1172 HLTPath[14] =
"HLT_DiJetAve15U_8E29" ;
1173 HLTPath[15] =
"HLT_MET45" ;
1174 HLTPath[16] =
"HLT_L1MET20" ;
1175 HLTPath[17] =
"HLT_MET100" ;
1178 HLTFilterType[0 ]=
edm::InputTag(
"hltL1NonIsoHLTNonIsoSinglePhotonEt10HcalIsolFilter",
"",process) ;
1179 HLTFilterType[1 ]=
edm::InputTag(
"hltL1NonIsoHLTNonIsoSinglePhotonEt15HcalIsolFilter" ,
"",process) ;
1180 HLTFilterType[2 ]=
edm::InputTag(
"hltL1NonIsoHLTNonIsoSinglePhotonEt20HcalIsolFilter" ,
"",process) ;
1181 HLTFilterType[3 ]=
edm::InputTag(
"hltL1NonIsoSinglePhotonEt15HTITrackIsolFilter",
"",process) ;
1182 HLTFilterType[4 ]=
edm::InputTag(
"hltL1NonIsoSinglePhotonEt15LEIHcalIsolFilter",
"",process) ;
1183 HLTFilterType[5 ]=
edm::InputTag(
"hltL1NonIsoHLTNonIsoSinglePhotonEt15EtFilterESet308E29",
"",process) ;
1184 HLTFilterType[6 ]=
edm::InputTag(
"hltL1NonIsoHLTNonIsoSinglePhotonEt15HcalIsolFilter",
"",process) ;
1185 HLTFilterType[7 ]=
edm::InputTag(
"hltL1NonIsoHLTNonIsoSingleElectronLWEt10PixelMatchFilter",
"",process) ;
1186 HLTFilterType[8 ]=
edm::InputTag(
"hltL1NonIsoHLTNonIsoSingleElectronLWEt15PixelMatchFilter",
"",process) ;
1187 HLTFilterType[9 ]=
edm::InputTag(
"hltL1NonIsoHLTNonIsoSingleElectronLWEt15EtFilterESet20",
"",process) ;
1188 HLTFilterType[10]=
edm::InputTag(
"hltL1NonIsoHLTNonIsoSingleElectronLWEt10EleIdDphiFilter",
"",process) ;
1189 HLTFilterType[11]=
edm::InputTag(
"hltL1NonIsoHLTNonIsoSingleElectronSiStripEt15PixelMatchFilter",
"",process) ;
1190 HLTFilterType[12]=
edm::InputTag(
"hltIsolPixelTrackL3FilterHB8E29",
"",process) ;
1191 HLTFilterType[13]=
edm::InputTag(
"hltIsolPixelTrackL2FilterHE8E29",
"",process) ;
1192 HLTFilterType[14]=
edm::InputTag(
"hltL1sDiJetAve15U8E29",
"",process) ;
1194 Int_t triggerDecision = 0;
1195 UInt_t trigger_size = HLTResults->size();
1197 for (Int_t
i=0;
i<18; ++
i ) {
1201 Int_t passTrigger = 0;
1203 if ( trigger_position < trigger_size ) {
1204 passTrigger = (Int_t)HLTResults->accept(trigger_position);
1207 if ( passTrigger > 0 ) {
1209 triggerDecision += (Int_t)(TMath::Power(2,i));
1212 const Int_t myfilterInd = pHLT->filterIndex(HLTFilterType[i]);
1213 if ( myfilterInd != nF ) {
1214 triggerDecision += (Int_t)(TMath::Power(2,i));
1221 maxETelec1.addUserInt(
"triggerDecision",triggerDecision);
1222 maxETelec2.addUserInt(
"triggerDecision",triggerDecision);
1239 const pat::METCollection::const_iterator
met = pMet->begin();
1243 const pat::METCollection::const_iterator pfmet = pPfMet->begin();
1247 const pat::METCollection::const_iterator tcmet = pTcMet->
begin();
1250 Double_t metEt =
met->et();
1271 zeeCandidate.
addDaughter(maxETelec1,
"electron1");
1272 zeeCandidate.addDaughter(maxETelec2,
"electron2");
1274 zeeCandidate.addDaughter(theMET,
"met");
1275 zeeCandidate.addDaughter(thePfMET,
"pfmet");
1276 zeeCandidate.addDaughter(theTcMET,
"tcmet");
1280 selectedZeeCandidates->push_back(zeeCandidate);
1282 iEvent.
put(selectedZeeCandidates,
"selectedZeeCandidates");
1291 <<
"FILTER-MSG: Event Accepted for Z Candidate"
Analysis-level particle class.
Analysis-level MET class.
Bool_t useConversionRejection1_
Bool_t calculateValidFirstPXBHit1_
T getUntrackedParameter(std::string const &, T const &) const
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
edm::InputTag tcMetCollectionTag_
Bool_t electronMatched2HLT_
edm::InputTag PrimaryVerticesCollection_
Int_t maxNumberOfExpectedMissingHits2_
Bool_t calculateConversionRejection2_
edm::InputTag triggerCollectionTag_
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
#define DEFINE_FWK_MODULE(type)
ConversionInfo getConversionInfo(const reco::GsfElectronCore &, const edm::Handle< reco::TrackCollection > &ctftracks_h, const edm::Handle< reco::GsfTrackCollection > &gsftracks_h, const double bFieldAtOrigin, const double minFracSharedHits=0.45)
Bool_t useValidFirstPXBHit2_
std::vector< MET > METCollection
Global3DPoint GlobalPoint
edm::LuminosityBlockNumber_t luminosityBlock() const
Bool_t useExpectedMissingHits1_
std::vector< edm::InputTag > vHltpathFilterExtra_
Bool_t useExpectedMissingHits2_
double deltaR(double eta1, double phi1, double eta2, double phi2)
ZeeCandidateFilter(const edm::ParameterSet &)
Single trigger physics object (e.g., an isolated muon)
Bool_t useValidFirstPXBHit1_
std::vector< Electron > ElectronCollection
unsigned int triggerIndex(std::string const &name) const
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Bool_t calculateExpectedMissingHits1_
edm::InputTag pfMetCollectionTag_
Double_t electronMatched2HLT_DR_
Bool_t calculateValidFirstPXBHit2_
Bool_t isInFiducial(Double_t eta)
edm::InputTag metCollectionTag_
Int_t maxNumberOfExpectedMissingHits1_
virtual const_iterator begin() const
first daughter const_iterator
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Bool_t useSpikeRejection_
void addDaughter(const Candidate &, const std::string &s="")
add a clone of the passed candidate as daughter
Bool_t useConversionRejection2_
edm::InputTag electronCollectionTag_
Double_t spikeCleaningSwissCrossCut_
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
EventAuxiliary const & eventAuxiliary() const
std::vector< CompositeCandidate > CompositeCandidateCollection
std::vector< size_type > Keys
Bool_t dataMagneticFieldSetUp_
Bool_t useEcalDrivenElectrons_
T const * product() const
std::vector< std::string > vHltpathExtra_
Analysis-level electron class.
T const * product() const
Bool_t useHLTObjectETCut_
edm::InputTag hltpathFilter_
static int position[264][3]
Bool_t calculateExpectedMissingHits2_
Bool_t calculateConversionRejection1_
EventNumber_t event() const
edm::InputTag triggerEventTag_
virtual Bool_t filter(edm::Event &, const edm::EventSetup &)