CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
GenPurposeSkimmerData Class Reference

#include <GenPurposeSkimmerData.h>

Inheritance diagram for GenPurposeSkimmerData:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 GenPurposeSkimmerData (const edm::ParameterSet &)
 
 ~GenPurposeSkimmerData () override
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginJob () override
 
void endJob () override
 

Private Attributes

double BarrelMaxEta
 
edm::EDGetTokenT< reco::SuperClusterCollectioncorHybridscToken_
 
double ctf_track_eta [20]
 
double ctf_track_phi [20]
 
double ctf_track_pt [20]
 
double ctf_track_tip [20]
 
double ctf_track_tip_bs [20]
 
double ctf_track_vx [20]
 
double ctf_track_vy [20]
 
double ctf_track_vz [20]
 
edm::EDGetTokenT< reco::TrackCollectionctfTracksToken_
 
int elec_1_duplicate_removal
 
int elec_number_in_event
 
edm::EDGetTokenT< pat::ElectronCollectionElectronCollectionToken_
 
double EndcapMaxEta
 
double EndcapMinEta
 
int event_HLTPath [25]
 
double event_mcMET
 
double event_mcMET_phi
 
double event_mcMET_sig
 
double event_MET
 
double event_MET_phi
 
double event_MET_sig
 
double event_pfMET
 
double event_pfMET_phi
 
double event_pfMET_sig
 
double event_t1MET
 
double event_t1MET_phi
 
double event_t1MET_sig
 
double event_tcMET
 
double event_tcMET_phi
 
double event_tcMET_sig
 
edm::EDGetTokenT< reco::GenMETCollectiongenMetCollectionToken_
 
double GsfTrackMinInnerPt
 
TFile * histofile
 
edm::InputTag HLTCollectionE29_
 
edm::EDGetTokenT< trigger::TriggerEventHLTCollectionE29Token_
 
edm::InputTag HLTCollectionE31_
 
edm::EDGetTokenT< trigger::TriggerEventHLTCollectionE31Token_
 
edm::InputTag HLTFilterType_ [25]
 
edm::InputTag HLTTriggerResultsE29_
 
edm::EDGetTokenT< edm::TriggerResultsHLTTriggerResultsE29Token_
 
edm::InputTag HLTTriggerResultsE31_
 
edm::EDGetTokenT< edm::TriggerResultsHLTTriggerResultsE31Token_
 
edm::InputTag MCCollection_
 
edm::EDGetTokenT< reco::GenParticleCollectionMCCollectionToken_
 
double MCMatch_Deta_
 
double MCMatch_Dphi_
 
edm::EDGetTokenT< pat::METCollectionmcMetCollectionToken_
 
edm::InputTag MetCollectionTag_
 
edm::EDGetTokenT< reco::CaloMETCollectionMetCollectionToken_
 
edm::EDGetTokenT< reco::SuperClusterCollectionmulti5x5scToken_
 
double muon_eta [4]
 
double muon_phi [4]
 
double muon_pt [4]
 
double muon_tip [4]
 
double muon_tip_bs [4]
 
double muon_vx [4]
 
double muon_vy [4]
 
double muon_vz [4]
 
int numberOfHLTFilterObjects [25]
 
edm::EDGetTokenT< reco::BeamSpotofflineBeamSpotToken_
 
std::string outputFile_
 
edm::EDGetTokenT< reco::PFMETCollectionpfMetCollectionToken_
 
edm::EDGetTokenT< pat::MuonCollectionpMuonsToken_
 
int probe_charge_for_tree [4]
 
int probe_classification_index_for_tree [4]
 
double probe_ecal_iso_user [4]
 
double probe_ecal_isolation_value [4]
 
double probe_ele_dfi [4]
 
double probe_ele_dhi [4]
 
double probe_ele_e1x5 [4]
 
double probe_ele_e2x5 [4]
 
double probe_ele_e5x5 [4]
 
double probe_ele_eop [4]
 
double probe_ele_et_for_tree [4]
 
double probe_ele_eta_for_tree [4]
 
double probe_ele_hoe [4]
 
int probe_ele_pass_et_cut [4]
 
int probe_ele_pass_fiducial_cut [4]
 
double probe_ele_phi_for_tree [4]
 
double probe_ele_pin [4]
 
double probe_ele_pout [4]
 
double probe_ele_shh [4]
 
double probe_ele_sihih [4]
 
double probe_ele_tip [4]
 
double probe_ele_Xvertex_for_tree [4]
 
double probe_ele_Yvertex_for_tree [4]
 
double probe_ele_Zvertex_for_tree [4]
 
double probe_hcal_iso_user [4]
 
double probe_hcal_isolation_value [4]
 
double probe_hlt_matched_dr [4]
 
int probe_index_for_tree [4]
 
double probe_iso_user [4]
 
double probe_isolation_value [4]
 
int probe_mc_matched [4]
 
double probe_mc_matched_denergy [4]
 
double probe_mc_matched_deta [4]
 
double probe_mc_matched_dphi [4]
 
int probe_mc_matched_mother [4]
 
int probe_pass_id_loose [4]
 
int probe_pass_id_robust_loose [4]
 
int probe_pass_id_robust_tight [4]
 
int probe_pass_id_tight [4]
 
int probe_pass_iso_cut [4]
 
int probe_pass_recoEle_cut [4]
 
int probe_pass_tip_cut [4]
 
int probe_pass_trigger_cut [4][25]
 
double probe_sc_et_for_tree [4]
 
double probe_sc_eta_for_tree [4]
 
int probe_sc_pass_et_cut [4]
 
int probe_sc_pass_fiducial_cut [4]
 
double probe_sc_phi_for_tree [4]
 
TTree * probe_tree
 
double ProbeHLTObjMaxDR
 
double ProbeRecoEleSCMaxDE
 
double ProbeSCMinEt
 
double RecoEleSeedBCMaxDE
 
double sc_hybrid_et [5]
 
double sc_hybrid_eta [5]
 
double sc_hybrid_phi [5]
 
double sc_multi5x5_et [5]
 
double sc_multi5x5_eta [5]
 
double sc_multi5x5_phi [5]
 
edm::EDGetTokenT< pat::METCollectiont1MetCollectionToken_
 
edm::EDGetTokenT< reco::METCollectiontcMetCollectionToken_
 
int tree_fills_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description:

Implementation:

This is a general purpose Skimmer ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ It reads datasets and keeps only the analysis-relevant information and stores it in a simple TTree. Code Inspired by the T&P code by Claire Timlin Note: a similar code to read PAT tuples is already available

History: 16.10.08: first version 24.10.08: added ECAL/HCAL isolation + sigma ieta ieta (S. Harper) 30.10.08: all isolations use isodeposits all parameters are untracked 18.03.09: modified to store just the 4 highest ET gsf electrons in the event 02.04.09: version for redigi including particle flow MET + gen level MET 04.04.09: version for redigi including tcMET, MET eta dropped 22.04.09: version for redigi including MET Type1 corrections 23.04.09: version completely changes to read from PAT....................... 07.09.09: version for 3_1_2 version 08.09.09: version for 3_1_2 that keeps all the trigger info and reduced number of the other collections

Further Information/Inquiries: Nikos Rompotis - Imperial College London Nikol.nosp@m.aos..nosp@m.Rompo.nosp@m.tis@.nosp@m.Cern..nosp@m.ch

Definition at line 70 of file GenPurposeSkimmerData.h.

Constructor & Destructor Documentation

GenPurposeSkimmerData::GenPurposeSkimmerData ( const edm::ParameterSet ps)
explicit

Definition at line 54 of file GenPurposeSkimmerData.cc.

References BarrelMaxEta, corHybridscToken_, ctfTracksToken_, ElectronCollectionToken_, EndcapMaxEta, EndcapMinEta, edm::ParameterSet::getUntrackedParameter(), HLTCollectionE29_, HLTCollectionE29Token_, HLTCollectionE31_, HLTCollectionE31Token_, HLTTriggerResultsE29_, HLTTriggerResultsE29Token_, HLTTriggerResultsE31_, HLTTriggerResultsE31Token_, HLT_2018_cff::InputTag, mcMetCollectionToken_, MetCollectionTag_, MetCollectionToken_, multi5x5scToken_, offlineBeamSpotToken_, outputFile_, pfMetCollectionToken_, pMuonsToken_, ProbeHLTObjMaxDR, AlCaHLTBitMon_QueryRunRegistry::string, t1MetCollectionToken_, and tcMetCollectionToken_.

56 {
57  //
58  // I N P U T P A R A M E T E R S
59  //
60  // output file name
61  outputFile_ = ps.getUntrackedParameter<std::string>("outputfile");
62  //
63  // Electron Collection
65  consumes<pat::ElectronCollection>(ps.getUntrackedParameter<edm::InputTag>("ElectronCollection"));
66  //
67  // MC:
68  //MCCollection_ = ps.getUntrackedParameter<edm::InputTag>("MCCollection");
69  //MCCollectionToken_ = consumes<reco::GenParticleCollection>(MCCollection_);
70  //MCMatch_Deta_ = ps.getUntrackedParameter<double>("MCMatch_Deta",0.1);
71  //MCMatch_Dphi_ = ps.getUntrackedParameter<double>("MCMatch_Dphi",0.35);
72  //
73  // MET Collections:
74  MetCollectionTag_ = ps.getUntrackedParameter<edm::InputTag>("MetCollectionTag");
75  MetCollectionToken_ = consumes<reco::CaloMETCollection>(MetCollectionTag_);
76  mcMetCollectionToken_ = consumes<pat::METCollection>(ps.getUntrackedParameter<edm::InputTag>("mcMetCollectionTag"));
77  t1MetCollectionToken_ = consumes<pat::METCollection>(ps.getUntrackedParameter<edm::InputTag>("t1MetCollectionTag"));
79  consumes<reco::PFMETCollection>(ps.getUntrackedParameter<edm::InputTag>("pfMetCollectionTag"));
80  tcMetCollectionToken_ = consumes<reco::METCollection>(ps.getUntrackedParameter<edm::InputTag>("tcMetCollectionTag"));
81  // genMetCollectionToken_ = consumes<reco::GenMETCollection>(ps.getUntrackedParameter<edm::InputTag>("genMetCollectionTag"));
82  //
83  // HLT parameters:
84  // allow info for 2 paths and 2 filters
85  // ---------------------------------------------------------------------------
86  HLTCollectionE29_ = ps.getUntrackedParameter<edm::InputTag>("HLTCollectionE29");
87  HLTCollectionE29Token_ = consumes<trigger::TriggerEvent>(HLTCollectionE29_);
88  HLTCollectionE31_ = ps.getUntrackedParameter<edm::InputTag>("HLTCollectionE31");
89  HLTCollectionE31Token_ = consumes<trigger::TriggerEvent>(HLTCollectionE31_);
90  HLTTriggerResultsE29_ = ps.getUntrackedParameter<edm::InputTag>("HLTTriggerResultsE29");
91  HLTTriggerResultsE29Token_ = consumes<edm::TriggerResults>(HLTTriggerResultsE29_);
92  HLTTriggerResultsE31_ = ps.getUntrackedParameter<edm::InputTag>("HLTTriggerResultsE31");
93  HLTTriggerResultsE31Token_ = consumes<edm::TriggerResults>(HLTTriggerResultsE31_);
94  //HLTPath_ = ps.getUntrackedParameter<std::string>("HLTPath","HLT_Ele15_LW_L1R");
95  //HLTFilterType_ =ps.getUntrackedParameter<edm::InputTag>("HLTFilterType");
96  //
97  // matching HLT objects to electrons
98  ProbeHLTObjMaxDR = ps.getUntrackedParameter<double>("ProbeHLTObjMaxDR", 0.2);
99  //
100  // ----------------------------------------------------------------------------
101  //
102  // detector geometry
103  //
104  BarrelMaxEta = ps.getUntrackedParameter<double>("BarrelMaxEta");
105  EndcapMinEta = ps.getUntrackedParameter<double>("EndcapMinEta");
106  EndcapMaxEta = ps.getUntrackedParameter<double>("EndcapMaxEta");
107  //
108  ctfTracksToken_ = consumes<reco::TrackCollection>(ps.getUntrackedParameter<edm::InputTag>("ctfTracksTag"));
109  corHybridscToken_ = consumes<reco::SuperClusterCollection>(ps.getUntrackedParameter<edm::InputTag>("corHybridsc"));
110  multi5x5scToken_ = consumes<reco::SuperClusterCollection>(ps.getUntrackedParameter<edm::InputTag>("multi5x5sc"));
111  offlineBeamSpotToken_ = consumes<reco::BeamSpot>(edm::InputTag("offlineBeamSpot"));
112  pMuonsToken_ = consumes<pat::MuonCollection>(edm::InputTag("selectedLayer1Muons"));
113 }
edm::EDGetTokenT< pat::MuonCollection > pMuonsToken_
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< trigger::TriggerEvent > HLTCollectionE31Token_
edm::EDGetTokenT< reco::CaloMETCollection > MetCollectionToken_
edm::EDGetTokenT< edm::TriggerResults > HLTTriggerResultsE29Token_
edm::EDGetTokenT< reco::METCollection > tcMetCollectionToken_
edm::EDGetTokenT< pat::ElectronCollection > ElectronCollectionToken_
edm::EDGetTokenT< reco::SuperClusterCollection > corHybridscToken_
edm::EDGetTokenT< reco::TrackCollection > ctfTracksToken_
edm::EDGetTokenT< reco::SuperClusterCollection > multi5x5scToken_
edm::EDGetTokenT< reco::BeamSpot > offlineBeamSpotToken_
edm::EDGetTokenT< edm::TriggerResults > HLTTriggerResultsE31Token_
edm::EDGetTokenT< reco::PFMETCollection > pfMetCollectionToken_
edm::EDGetTokenT< trigger::TriggerEvent > HLTCollectionE29Token_
edm::EDGetTokenT< pat::METCollection > t1MetCollectionToken_
edm::EDGetTokenT< pat::METCollection > mcMetCollectionToken_
GenPurposeSkimmerData::~GenPurposeSkimmerData ( )
override

Definition at line 115 of file GenPurposeSkimmerData.cc.

115  {
116  // do anything here that needs to be done at desctruction time
117  // (e.g. close files, deallocate resources etc.)
118 }

Member Function Documentation

void GenPurposeSkimmerData::analyze ( const edm::Event evt,
const edm::EventSetup es 
)
overrideprivate

-*-*-*-*-*–*-*-*-*-*-*-*-*-*-*-*-*–*-*-*-*-*-*-*-*-*-*-*-*-*-*-*–*-*-*

Definition at line 125 of file GenPurposeSkimmerData.cc.

References BarrelMaxEta, slimmedMETs_cfi::caloMET, corHybridscToken_, gather_cfg::cout, ntupleEnum::ctf, ctf_track_eta, ctf_track_phi, ctf_track_pt, ctf_track_tip, ctf_track_tip_bs, ctf_track_vx, ctf_track_vy, ctf_track_vz, lowPtGsfElectronCores_cff::ctfTracks, ctfTracksToken_, electronIdCutBasedExt_cfi::deltaEtaIn, electronIdCutBasedExt_cfi::deltaPhiIn, reco::TrackBase::dxy(), EgHLTOffHistBins_cfi::e1x5, EgHLTOffHistBins_cfi::e2x5, elec_1_duplicate_removal, elec_number_in_event, ElectronCollectionToken_, pwdgSkimBPark_cfi::electrons, EndcapMaxEta, EndcapMinEta, reco::CaloCluster::energy(), EgHLTOffHistBins_cfi::eOverP, EgHLTOffHistBins_cfi::et, reco::CaloCluster::eta(), reco::TrackBase::eta(), event_mcMET, event_mcMET_phi, event_mcMET_sig, event_MET, event_MET_phi, event_MET_sig, event_pfMET, event_pfMET_phi, event_pfMET_sig, event_t1MET, event_t1MET_phi, event_t1MET_sig, event_tcMET, event_tcMET_phi, event_tcMET_sig, edm::Event::getByToken(), HLTCollectionE29Token_, EgHLTOffHistBins_cfi::hOverE, mps_fire::i, edm::HandleBase::isValid(), mcMetCollectionToken_, HLTTauDQMOffline_cfi::MET, MetCollectionTag_, MetCollectionToken_, multi5x5scToken_, HLT_2018_cff::muon, muon_eta, muon_phi, muon_pt, muon_tip, muon_tip_bs, muon_vx, muon_vy, muon_vz, B2GMonitoring_cff::nmuons, offlineBeamSpotToken_, pfMETBenchmark_cfi::pfMET, pfMetCollectionToken_, reco::CaloCluster::phi(), reco::TrackBase::phi(), pMuonsToken_, reco::BeamSpot::position(), probe_charge_for_tree, probe_classification_index_for_tree, probe_ecal_iso_user, probe_ecal_isolation_value, probe_ele_dfi, probe_ele_dhi, probe_ele_e1x5, probe_ele_e2x5, probe_ele_e5x5, probe_ele_eop, probe_ele_et_for_tree, probe_ele_eta_for_tree, probe_ele_hoe, probe_ele_phi_for_tree, probe_ele_pin, probe_ele_pout, probe_ele_shh, probe_ele_sihih, probe_ele_tip, probe_ele_Xvertex_for_tree, probe_ele_Yvertex_for_tree, probe_ele_Zvertex_for_tree, probe_hcal_iso_user, probe_hcal_isolation_value, probe_iso_user, probe_isolation_value, probe_sc_et_for_tree, probe_sc_eta_for_tree, probe_sc_pass_fiducial_cut, probe_sc_phi_for_tree, probe_tree, EgHLTOfflineSource_cfi::probeEle, edm::Handle< T >::product(), reco::TrackBase::pt(), SimDataFormats::CaloAnalysis::sc, sc_hybrid_et, sc_hybrid_eta, sc_hybrid_phi, sc_multi5x5_et, sc_multi5x5_eta, sc_multi5x5_phi, t1MetCollectionToken_, tcMetCollectionToken_, pat::Muon::track(), tree_fills_, reco::TrackBase::vx(), reco::TrackBase::vy(), and reco::TrackBase::vz().

125  {
126  // MC Collection ------------------------------------------------
127 
128  // edm::Handle<reco::GenParticleCollection> pGenPart;
129  // evt.getByToken(MCCollectionToken_, pGenPart);
130  // if ( not pGenPart.isValid() ) {
131  // std::cout <<"Error! Can't get "<<MCCollection_.label() << std::endl;
132  // return;
133  // }
134 
135  // const reco::GenParticleCollection *McCand = pGenPart.product();
136 
137  // GsF Electron Collection ---------------------------------------
139 
140  try {
141  evt.getByToken(ElectronCollectionToken_, pElectrons);
142  } catch (cms::Exception const &) {
143  edm::LogError("") << "Error! Can't get ElectronCollection by label. ";
144  }
145  // ***********************************************************************
146  // check which trigger has accepted the event ****************************
147  // ***********************************************************************
148  //
149  // path allocation: first 10 paths belong to the low lum menu, the rest
150  // in the high lum one
151  //
152  // Low Luminosity Menu (8e29)
153  //
154  /*
155  edm::Handle<edm::TriggerResults> HLTResultsE29;
156  evt.getByToken(HLTTriggerResultsE29Token_, HLTResultsE29);
157  if (not HLTResultsE29.isValid()) {
158  std::cout << "HLT Results with label: " << HLTTriggerResultsE29_
159  << " not found" << std::endl;
160  return;
161  }
162  //
163  edm::Handle<trigger::TriggerEvent> pHLTe29;
164  evt.getByToken(HLTCollectionE29Token_, pHLTe29);
165  if (not pHLTe29.isValid()) {
166  std::cout << "HLT Results with label: " << HLTCollectionE29_
167  << " not found" << std::endl;
168  return;
169  }
170  //
171  int sum = 0;
172  //
173  for (int iT=0; iT<10; ++iT) {
174  event_HLTPath[iT] = 0;
175  numberOfHLTFilterObjects[iT] =0;
176  //
177  const edm::TriggerNames & triggerNames = evt.triggerNames(*HLTResultsE29);
178  unsigned int trigger_size = HLTResultsE29->size();
179  unsigned int trigger_position = triggerNames.triggerIndex(HLTPath_[iT]);
180  if (trigger_position < trigger_size )
181  event_HLTPath[iT] = (int) HLTResultsE29->accept(trigger_position);
182  //
183  numberOfHLTFilterObjects[iT] = 0;
184  // check explicitly that the filter is there
185  const int nF(pHLTe29->sizeFilters());
186  const int filterInd = pHLTe29->filterIndex(HLTFilterType_[iT]);
187  if (nF != filterInd) {
188  const trigger::Vids& VIDS (pHLTe29->filterIds(filterInd));
189  const trigger::Keys& KEYS(pHLTe29->filterKeys(filterInd));
190  const int nI(VIDS.size());
191  const int nK(KEYS.size());
192  numberOfHLTFilterObjects[iT] = (nI>nK)? nI:nK;
193  }
194  //if (iT==2) // HLT_Ele15_LW_L1R only this trigger is required
195  sum += numberOfHLTFilterObjects[iT];
196  }
197  //
198  // High Luminosity Menu (1e31) DISABLED - only low lumi level
199  //
200  edm::Handle<edm::TriggerResults> HLTResultsE31;
201  evt.getByToken(HLTTriggerResultsE31Token_, HLTResultsE31);
202  if (not HLTResultsE31.isValid()) {
203  std::cout << "HLT Results with label: " << HLTTriggerResultsE31_
204  << " not found" << std::endl;
205  return;
206  }
208  edm::Handle<trigger::TriggerEvent> pHLTe31;
209  evt.getByToken(HLTCollectionE31Token_, pHLTe31);
210  if (not pHLTe31.isValid()) {
211  std::cout << "HLT Results with label: " << HLTCollectionE31_
212  << " not found" << std::endl;
213  return;
214  }
216  for (int iT=10; iT<25; ++iT) {
217  event_HLTPath[iT] = 0;
218  numberOfHLTFilterObjects[iT] =0;
219  //
220  const edm::TriggerNames & triggerNames = evt.triggerNames(*HLTResultsE31);
221  unsigned int trigger_size = HLTResultsE31->size();
222  unsigned int trigger_position = triggerNames.triggerIndex(HLTPath_[iT]);
223  if (trigger_position < trigger_size )
224  event_HLTPath[iT] = (int) HLTResultsE31->accept(trigger_position);
225  //
226  numberOfHLTFilterObjects[iT] = 0;
227  // check explicitly that the filter is there
228  const int nF(pHLTe31->sizeFilters());
229  const int filterInd = pHLTe31->filterIndex(HLTFilterType_[iT]);
230  if (nF != filterInd) {
231  const trigger::Vids& VIDS (pHLTe31->filterIds(filterInd));
232  const trigger::Keys& KEYS(pHLTe31->filterKeys(filterInd));
233  const int nI(VIDS.size());
234  const int nK(KEYS.size());
235  numberOfHLTFilterObjects[iT] = (nI>nK)? nI:nK;
236  }
237  // not needed
238  sum += numberOfHLTFilterObjects[iT];
239  }
240  if (sum == 0) {
241  //std::cout << "No trigger found in this event..." << std::endl;
242  return;
243  }
244  */
245  //std::cout << "HLT objects: #" << sum << std::endl;
246  // print out the triggers that exist in this event
247  // comment this out if you want to see the names of the existing triggers
249  evt.getByToken(HLTCollectionE29Token_, pHLTe29);
250  if (not pHLTe29.isValid()) {
251  std::cout << "Error!!! HLT is missing!" << std::endl;
252  return;
253  } /*
254  else {
255  // check explicitly that the filter is there
256  const int nF(pHLTe29->sizeFilters());
257  for (int filterInd=0; filterInd< nF; ++filterInd) {
258  const trigger::Vids& VIDS (pHLTe29->filterIds(filterInd));
259  const trigger::Keys& KEYS(pHLTe29->filterKeys(filterInd));
260  const int nI(VIDS.size());
261  const int nK(KEYS.size());
262  int nObjects = (nI>nK)? nI:nK;
263  const edm::InputTag filterTag = pHLTe29->filterTag(filterInd);
264  std::cout << "Found filter with name " << filterTag
265  << " and #objects: #" << nObjects << std::endl;
266  }
267  }
268  */
269  // *********************************************************************
270  // MET Collections:
271  //
273  evt.getByToken(MetCollectionToken_, caloMET);
274  //
276  evt.getByToken(t1MetCollectionToken_, t1MET);
277  //
279  evt.getByToken(mcMetCollectionToken_, mcMET);
280  //
282  evt.getByToken(tcMetCollectionToken_, tcMET);
283  //
285  evt.getByToken(pfMetCollectionToken_, pfMET);
286  //
287  // edm::Handle<reco::GenMETCollection> genMET;
288  // evt.getByToken(genMetCollectionToken_, genMET);
289  //
290  // initialize the MET variables ........................................
291  event_MET = -99.;
292  event_MET_phi = -99.;
293  event_MET_sig = -99.;
294  event_mcMET = -99.;
295  event_mcMET_phi = -99.;
296  event_mcMET_sig = -99.;
297  event_tcMET = -99.;
298  event_tcMET_phi = -99.;
299  event_tcMET_sig = -99.;
300  event_pfMET = -99.;
301  event_pfMET_phi = -99.;
302  event_pfMET_sig = -99.;
303  event_t1MET = -99.;
304  event_t1MET_phi = -99.;
305  event_t1MET_sig = -99.;
306  //
307  //event_genMET = -99.; event_genMET_phi= -99.; event_genMET_sig = -99.;
308  //
309  // get the values, if they are available
310  if (caloMET.isValid()) {
311  const reco::CaloMETRef MET(caloMET, 0);
312  event_MET = MET->et();
313  event_MET_phi = MET->phi();
314  event_MET_sig = MET->mEtSig();
315  } else {
316  std::cout << "caloMET not valid: input Tag: " << MetCollectionTag_ << std::endl;
317  }
318  if (tcMET.isValid()) {
319  const reco::METRef MET(tcMET, 0);
320  event_tcMET = MET->et();
321  event_tcMET_phi = MET->phi();
322  event_tcMET_sig = MET->mEtSig();
323  }
324  if (pfMET.isValid()) {
325  const reco::PFMETRef MET(pfMET, 0);
326  event_pfMET = MET->et();
327  event_pfMET_phi = MET->phi();
328  event_pfMET_sig = MET->mEtSig();
329  }
330  if (t1MET.isValid()) {
331  const pat::METRef MET(t1MET, 0);
332  event_t1MET = MET->et();
333  event_t1MET_phi = MET->phi();
334  event_t1MET_sig = MET->mEtSig();
335  }
336  if (mcMET.isValid()) {
337  const pat::METRef MET(mcMET, 0);
338  event_mcMET = MET->et();
339  event_mcMET_phi = MET->phi();
340  event_mcMET_sig = MET->mEtSig();
341  }
342 
343  // if ( genMET.isValid() ) {
344  // const reco::GenMETRef MET(genMET, 0);
345  // event_genMET = MET->et(); event_genMET_phi = MET->phi();
346  // event_genMET_sig = MET->mEtSig();
347  // }
348 
349  // std::cout << "t1MET: " << event_t1MET << " twikiT1MET: "
350  // << event_twikiT1MET << ", calo="<<event_MET << std::endl;
351  //
352  // some supercluster collections ...........................................
353  // correcyedHybridSuperClusters
355  evt.getByToken(corHybridscToken_, SC1);
356  const reco::SuperClusterCollection *sc1 = SC1.product();
357  // multi5x5SuperClustersWithPreshower
359  evt.getByToken(multi5x5scToken_, SC2);
360  const reco::SuperClusterCollection *sc2 = SC2.product();
361  //
362  const int n1 = sc1->size();
363  const int n2 = sc2->size();
364  //std::cout << "SC found: hybrid: " << n1 << ", multi5x5: "
365  // << n2 << std::endl;
366  // keep details of the 5 highest ET superclusters
367  for (int i = 0; i < 5; ++i) {
368  sc_hybrid_et[i] = -9999.;
369  sc_hybrid_eta[i] = -9999.;
370  sc_hybrid_phi[i] = -9999.;
371  //
372  sc_multi5x5_et[i] = -9999.;
373  sc_multi5x5_eta[i] = -9999.;
374  sc_multi5x5_phi[i] = -9999.;
375  //
376  }
377  // sort the energies of the first sc
378  std::vector<double> ETsc1;
379  std::vector<reco::SuperCluster>::const_iterator sc;
380  for (sc = sc1->begin(); sc != sc1->end(); ++sc) {
381  reco::SuperCluster mySc = *sc;
382  double scEt = mySc.energy() / (cosh(mySc.eta()));
383  ETsc1.push_back(scEt);
384  }
385  int *sorted1 = new int[n1];
386  double *et1 = new double[n1];
387  for (int i = 0; i < n1; ++i) {
388  et1[i] = ETsc1[i];
389  }
390  // array sorted now has the indices of the highest ET electrons
391  TMath::Sort(n1, et1, sorted1, true);
392  // .........................................................................
393  std::vector<double> ETsc2;
394  for (sc = sc2->begin(); sc != sc2->end(); ++sc) {
395  reco::SuperCluster mySc = *sc;
396  double scEt = mySc.energy() / (cosh(mySc.eta()));
397  ETsc2.push_back(scEt);
398  }
399  int *sorted2 = new int[n2];
400  double *et2 = new double[n2];
401  for (int i = 0; i < n2; ++i) {
402  et2[i] = ETsc2[i];
403  }
404  // array sorted now has the indices of the highest ET electrons
405  TMath::Sort(n2, et2, sorted2, true);
406  //
407  //
408  for (int probeSc = 0; probeSc < n1; ++probeSc) {
409  //std::cout<<"sorted["<< probeIt<< "]=" << sorted[probeIt] << std::endl;
410  // break if you have more than the appropriate number of electrons
411  if (probeSc >= 5)
412  break;
413  //
414  int sc_index = sorted1[probeSc];
415  std::vector<reco::SuperCluster>::const_iterator Rprobe = sc1->begin() + sc_index;
416  //
417  reco::SuperCluster sc0 = *Rprobe;
418  // now keep the relevant stuff:
419  sc_hybrid_et[probeSc] = sc0.energy() / (cosh(sc0.eta()));
420  sc_hybrid_eta[probeSc] = sc0.eta();
421  sc_hybrid_phi[probeSc] = sc0.phi();
422  }
423  // .........................................................................
424  for (int probeSc = 0; probeSc < n2; ++probeSc) {
425  //std::cout<<"sorted["<< probeIt<< "]=" << sorted[probeIt] << std::endl;
426  // break if you have more than the appropriate number of electrons
427  if (probeSc >= 5)
428  break;
429  //
430  int sc_index = sorted2[probeSc];
431  std::vector<reco::SuperCluster>::const_iterator Rprobe = sc2->begin() + sc_index;
432  //
433  reco::SuperCluster sc0 = *Rprobe;
434  // now keep the relevant stuff:
435  sc_multi5x5_et[probeSc] = sc0.energy() / (cosh(sc0.eta()));
436  sc_multi5x5_eta[probeSc] = sc0.eta();
437  sc_multi5x5_phi[probeSc] = sc0.phi();
438  }
439  delete[] sorted1;
440  delete[] sorted2;
441  delete[] et1;
442  delete[] et2;
444  // edm::InputTag ctfTracksTag("generalTracks", "", InputTagEnding_);
446  evt.getByToken(ctfTracksToken_, ctfTracks);
447  const reco::TrackCollection *ctf = ctfTracks.product();
448  reco::TrackCollection::const_iterator tr;
449  const int ntracks = ctf->size();
450  //
451  // get the beam spot for the parameter of the track
452  edm::Handle<reco::BeamSpot> pBeamSpot;
453  evt.getByToken(offlineBeamSpotToken_, pBeamSpot);
454  const reco::BeamSpot *bspot = pBeamSpot.product();
455  const math::XYZPoint &bspotPosition = bspot->position();
456  //
457  for (int i = 0; i < 20; ++i) {
458  ctf_track_pt[i] = -9999.;
459  ctf_track_eta[i] = -9999.;
460  ctf_track_phi[i] = -9999.;
461  ctf_track_vx[i] = -9999.;
462  ctf_track_vy[i] = -9999.;
463  ctf_track_vz[i] = -9999.;
464  ctf_track_tip[i] = -9999.;
465  ctf_track_tip_bs[i] = -9999.;
466  }
467  //
468  std::vector<double> ETtrack;
469  for (tr = ctf->begin(); tr != ctf->end(); ++tr) {
470  reco::Track mySc = *tr;
471  double scEt = mySc.pt();
472  ETtrack.push_back(scEt);
473  }
474  int *sortedTr = new int[ntracks];
475  double *etTr = new double[ntracks];
476  for (int i = 0; i < ntracks; ++i) {
477  etTr[i] = ETtrack[i];
478  }
479  // array sorted now has the indices of the highest ET electrons
480  TMath::Sort(ntracks, etTr, sortedTr, true);
481  //
482  for (int probeSc = 0; probeSc < ntracks; ++probeSc) {
483  //std::cout<<"sorted["<< probeIt<< "]=" << sorted[probeIt] << std::endl;
484  // break if you have more than the appropriate number of electrons
485  if (probeSc >= 20)
486  break;
487  //
488  int sc_index = sortedTr[probeSc];
489  std::vector<reco::Track>::const_iterator Rprobe = ctf->begin() + sc_index;
490  //
491  reco::Track sc0 = *Rprobe;
492  // now keep the relevant stuff:
493  ctf_track_pt[probeSc] = sc0.pt();
494  ctf_track_eta[probeSc] = sc0.eta();
495  ctf_track_phi[probeSc] = sc0.phi();
496  ctf_track_vx[probeSc] = sc0.vx();
497  ctf_track_vy[probeSc] = sc0.vy();
498  ctf_track_vz[probeSc] = sc0.vz();
499  ctf_track_tip[probeSc] = -sc0.dxy();
500  ctf_track_tip_bs[probeSc] = -sc0.dxy(bspotPosition);
501  }
502  delete[] sortedTr;
503  delete[] etTr;
504  //
505  // keep 4 of the selectedLayer1Muons for reference
507  evt.getByToken(pMuonsToken_, pMuons);
508  const pat::MuonCollection *pmuon = pMuons.product();
509  pat::MuonCollection::const_iterator muon;
510  const int nmuons = pMuons->size();
511  //
512  for (int i = 0; i < 4; ++i) {
513  muon_pt[i] = -9999.;
514  muon_eta[i] = -9999.;
515  muon_phi[i] = -9999.;
516  muon_vx[i] = -9999.;
517  muon_vy[i] = -9999.;
518  muon_vz[i] = -9999.;
519  muon_tip[i] = -9999.;
520  muon_tip_bs[i] = -9999.;
521  }
522  //
523  std::vector<double> ETmuons;
524  for (muon = pmuon->begin(); muon != pmuon->end(); ++muon) {
525  pat::Muon mySc = *muon;
526  double scEt = mySc.track()->pt();
527  ETmuons.push_back(scEt);
528  }
529  int *sortedMu = new int[nmuons];
530  double *etMu = new double[nmuons];
531  for (int i = 0; i < nmuons; ++i) {
532  etMu[i] = ETmuons[i];
533  }
534  // array sorted now has the indices of the highest ET electrons
535  TMath::Sort(nmuons, etMu, sortedMu, true);
536  //
537  for (int probeSc = 0; probeSc < nmuons; ++probeSc) {
538  //std::cout<<"sorted["<< probeIt<< "]=" << sorted[probeIt] << std::endl;
539  // break if you have more than the appropriate number of electrons
540  if (probeSc >= 4)
541  break;
542  //
543  int sc_index = sortedMu[probeSc];
544  std::vector<pat::Muon>::const_iterator Rprobe = pmuon->begin() + sc_index;
545  //
546  pat::Muon sc0 = *Rprobe;
547  // now keep the relevant stuff:
548  muon_pt[probeSc] = sc0.track()->pt();
549  muon_eta[probeSc] = sc0.track()->eta();
550  muon_phi[probeSc] = sc0.track()->phi();
551  muon_vx[probeSc] = sc0.track()->vx();
552  muon_vy[probeSc] = sc0.track()->vy();
553  muon_vz[probeSc] = sc0.track()->vz();
554  muon_tip[probeSc] = -sc0.track()->dxy();
555  muon_tip_bs[probeSc] = -sc0.track()->dxy(bspotPosition);
556  }
557  delete[] sortedMu;
558  delete[] etMu;
559  //
560  if (n1 + n2 + ntracks == 0) {
561  std::cout << "Return: no sc in this event" << std::endl;
562  return;
563  }
564  // /////////////////////////////////////////////////////////////////////////
565  // electron details
567  const int MAX_PROBES = 4;
568  for (int i = 0; i < MAX_PROBES; i++) {
569  probe_ele_eta_for_tree[i] = -99.0;
570  probe_ele_et_for_tree[i] = -99.0;
571  probe_ele_phi_for_tree[i] = -99.0;
572  probe_ele_Xvertex_for_tree[i] = -99.0;
573  probe_ele_Yvertex_for_tree[i] = -99.0;
574  probe_ele_Zvertex_for_tree[i] = -99.0;
575  probe_ele_tip[i] = -999.;
576 
577  probe_sc_eta_for_tree[i] = -99.0;
578  probe_sc_et_for_tree[i] = -99.0;
579  probe_sc_phi_for_tree[i] = -99.0;
580 
581  probe_charge_for_tree[i] = -99;
584  //
585  // probe isolation values ............
586  probe_isolation_value[i] = 999.0;
587  probe_iso_user[i] = 999.0;
589  probe_ecal_iso_user[i] = 999;
591  probe_hcal_iso_user[i] = 999;
592 
593  probe_ele_hoe[i] = 999.;
594  probe_ele_shh[i] = 999.;
595  probe_ele_sihih[i] = 999.;
596  probe_ele_dhi[i] = 999.;
597  probe_ele_dfi[i] = 999.;
598  probe_ele_eop[i] = 999.;
599  probe_ele_pin[i] = 999.;
600  probe_ele_pout[i] = 999.;
601  probe_ele_e5x5[i] = 999.;
602  probe_ele_e2x5[i] = 999.;
603  probe_ele_e1x5[i] = 999.;
604 
605  //
606  //
607  //for (int j=0; j<25; ++j) {
608  // probe_pass_trigger_cut[i][j]=0;
609  //}
610  //probe_hlt_matched_dr[i]=0;
611  //probe_mc_matched[i] = 0;
612  //probe_mc_matched_deta[i] = 999.;
613  //probe_mc_matched_dphi[i] = 999.;
614  //probe_mc_matched_denergy[i] = 999.;
615  //probe_mc_matched_mother[i] = 999;
616  //
617  //
618  }
619  const pat::ElectronCollection *electrons = pElectrons.product();
620 
621  elec_number_in_event = electrons->size();
622  //std::cout << "In this event " << elec_number_in_event <<
623  // " electrons were found" << std::endl;
624  // if (elec_number_in_event == 0) return;
625 
626  std::vector<pat::ElectronRef> UniqueElectrons;
627  // edm::LogInfo("") << "Starting loop over electrons.";
628  int index = 0;
629  //***********************************************************************
630  // NEW METHOD by D WARDROPE implemented 26.05.08 ************************
631  //************* DUPLICATE ****** REMOVAL *******************************
632  // 02.06.08: due to a bug in the hybrid algorithm that affects detid ****
633  // we change detid matching to superCluster ref matching ******
634  for (pat::ElectronCollection::const_iterator elec = electrons->begin(); elec != electrons->end(); ++elec) {
635  const pat::ElectronRef electronRef(pElectrons, index);
636  //Remove duplicate electrons which share a supercluster
637  pat::ElectronCollection::const_iterator BestDuplicate = elec;
638  int index2 = 0;
639  for (pat::ElectronCollection::const_iterator elec2 = electrons->begin(); elec2 != electrons->end(); ++elec2) {
640  if (elec != elec2) {
641  if (elec->superCluster() == elec2->superCluster()) {
642  if (fabs(BestDuplicate->eSuperClusterOverP() - 1.) >= fabs(elec2->eSuperClusterOverP() - 1.)) {
643  BestDuplicate = elec2;
644  }
645  }
646  }
647  ++index2;
648  }
649  if (BestDuplicate == elec)
650  UniqueElectrons.push_back(electronRef);
651  ++index;
652  }
653  //
654  // debugging: store electrons after duplicate removal
655  elec_1_duplicate_removal = UniqueElectrons.size();
656  //std::cout << "In this event there are " << elec_1_duplicate_removal
657  // << " electrons" << std::endl;
658  //
659  //
660  // duplicate removal is done now:
661  // the electron collection is in UniqueElectrons
662  //
663  // run over probes - now probe electrons and store
664  //
665  // the electron collection is now
666  // vector<reco::PixelMatchGsfElectronRef> UniqueElectrons
667  std::vector<double> ETs;
668  std::vector<pat::ElectronRef>::const_iterator elec;
669  for (elec = UniqueElectrons.begin(); elec != UniqueElectrons.end(); ++elec) {
671  probeEle = *elec;
672  double probeEt = probeEle->caloEnergy() / (cosh(probeEle->caloPosition().eta()));
673  ETs.push_back(probeEt);
674  }
675  int *sorted = new int[elec_1_duplicate_removal];
676  double *et = new double[elec_1_duplicate_removal];
677  //std::cout << "Elecs: " << elec_1_duplicate_removal << std::endl;
678  for (int i = 0; i < elec_1_duplicate_removal; ++i) {
679  et[i] = ETs[i];
680  //std::cout << "et["<< i << "]=" << et[i] << std::endl;
681  }
682  // array sorted now has the indices of the highest ET electrons
683  TMath::Sort(elec_1_duplicate_removal, et, sorted, true);
684  //
685  //
686  for (int probeIt = 0; probeIt < elec_1_duplicate_removal; ++probeIt) {
687  //std::cout<<"sorted["<< probeIt<< "]=" << sorted[probeIt] << std::endl;
688  // break if you have more than the appropriate number of electrons
689  if (probeIt >= MAX_PROBES)
690  break;
691  //
692  int elec_index = sorted[probeIt];
693  std::vector<pat::ElectronRef>::const_iterator Rprobe = UniqueElectrons.begin() + elec_index;
694  //
696  probeEle = *Rprobe;
697  double probeEt = probeEle->caloEnergy() / (cosh(probeEle->caloPosition().eta()));
698  probe_sc_eta_for_tree[probeIt] = probeEle->caloPosition().eta();
699  probe_sc_phi_for_tree[probeIt] = probeEle->caloPosition().phi();
700  probe_sc_et_for_tree[probeIt] = probeEt;
701  // fiducial cut ...............................
702  if (fabs(probeEle->caloPosition().eta()) < BarrelMaxEta ||
703  (fabs(probeEle->caloPosition().eta()) > EndcapMinEta && fabs(probeEle->caloPosition().eta()) < EndcapMaxEta)) {
704  probe_sc_pass_fiducial_cut[probeIt] = 1;
705  }
706  //
707  probe_charge_for_tree[probeIt] = probeEle->charge();
708  probe_ele_eta_for_tree[probeIt] = probeEle->eta();
709  probe_ele_et_for_tree[probeIt] = probeEle->et();
710  probe_ele_phi_for_tree[probeIt] = probeEle->phi();
711  probe_ele_Xvertex_for_tree[probeIt] = probeEle->vx();
712  probe_ele_Yvertex_for_tree[probeIt] = probeEle->vy();
713  probe_ele_Zvertex_for_tree[probeIt] = probeEle->vz();
714  probe_classification_index_for_tree[probeIt] = probeEle->classification();
715  double ProbeTIP = probeEle->gsfTrack()->d0();
716  probe_ele_tip[probeIt] = ProbeTIP;
717  // isolation ..................................
718  // these are the default values: trk 03, ecal, hcal 04
719  // I know that there is a more direct way, but in this way it
720  // is clearer what you get each time :P
721  probe_isolation_value[probeIt] = probeEle->dr03IsolationVariables().tkSumPt;
722  probe_ecal_isolation_value[probeIt] = probeEle->dr04IsolationVariables().ecalRecHitSumEt;
723  probe_hcal_isolation_value[probeIt] = probeEle->dr04IsolationVariables().hcalDepth1TowerSumEt +
724  probeEle->dr04IsolationVariables().hcalDepth2TowerSumEt;
725  // one extra isos:
726  probe_iso_user[probeIt] = probeEle->dr04IsolationVariables().tkSumPt;
727  probe_ecal_iso_user[probeIt] = probeEle->dr03IsolationVariables().ecalRecHitSumEt;
728  probe_hcal_iso_user[probeIt] = probeEle->dr03IsolationVariables().hcalDepth1TowerSumEt +
729  probeEle->dr03IsolationVariables().hcalDepth2TowerSumEt;
730  // ele id variables
731  double hOverE = probeEle->hadronicOverEm();
732  double deltaPhiIn = probeEle->deltaPhiSuperClusterTrackAtVtx();
733  double deltaEtaIn = probeEle->deltaEtaSuperClusterTrackAtVtx();
734  double eOverP = probeEle->eSuperClusterOverP();
735  double pin = probeEle->trackMomentumAtVtx().R();
736  double pout = probeEle->trackMomentumOut().R();
737  double sigmaee = probeEle->scSigmaEtaEta();
738  double sigma_IetaIeta = probeEle->scSigmaIEtaIEta();
739  // correct if in endcaps
740  if (fabs(probeEle->caloPosition().eta()) > 1.479) {
741  sigmaee = sigmaee - 0.02 * (fabs(probeEle->caloPosition().eta()) - 2.3);
742  }
743  //
744  //double e5x5, e2x5Right, e2x5Left, e2x5Top, e2x5Bottom, e1x5;
745  double e5x5, e2x5, e1x5;
746  e5x5 = probeEle->scE5x5();
747  e1x5 = probeEle->scE1x5();
748  e2x5 = probeEle->scE2x5Max();
749  //
750  // electron ID variables
751  probe_ele_hoe[probeIt] = hOverE;
752  probe_ele_shh[probeIt] = sigmaee;
753  probe_ele_sihih[probeIt] = sigma_IetaIeta;
754  probe_ele_dfi[probeIt] = deltaPhiIn;
755  probe_ele_dhi[probeIt] = deltaEtaIn;
756  probe_ele_eop[probeIt] = eOverP;
757  probe_ele_pin[probeIt] = pin;
758  probe_ele_pout[probeIt] = pout;
759  probe_ele_e5x5[probeIt] = e5x5;
760  probe_ele_e2x5[probeIt] = e2x5;
761  probe_ele_e1x5[probeIt] = e1x5;
762 
763  //
764  // HLT filter ------------------------------------------------------
765  //
766  //
767  // low luminosity filters
768  /*************************************************************
769  for (int filterNum=0; filterNum<10; ++filterNum) {
770  int trigger_int_probe = 0;
771 
772  //double hlt_matched_dr = -1.;
773  const int nF(pHLTe29->sizeFilters());
774  //
775  // default (tag) trigger filter
776  //
777  // find how many relevant
778  const int iF = pHLTe29->filterIndex(HLTFilterType_[filterNum]);
779  // loop over these objects to see whether they match
780  const trigger::TriggerObjectCollection& TOC(pHLTe29->getObjects());
781  if (nF != iF) {
782  // find how many objects there are
783  const trigger::Keys& KEYS(pHLTe29->filterKeys(iF));
784  const int nK(KEYS.size());
785  for (int iTrig = 0;iTrig <nK; ++iTrig ) {
786  const trigger::TriggerObject& TO(TOC[KEYS[iTrig]]);
787  //std::cout << "--> filter: "<< HLTFilterType_[filterNum] <<" TO id: " << TO.id() << std::endl;
788  // this is better to be left out: HLT matching is with an HLT object
789  // and we don't care what this object is
790  //if (abs(TO.id())==11 ) { // demand it to be an electron
791  double dr_ele_HLT =
792  reco::deltaR(probeEle->eta(), probeEle->phi(), TO.eta(), TO.phi());
793  if (fabs(dr_ele_HLT) < ProbeHLTObjMaxDR) {++trigger_int_probe;
794  //hlt_matched_dr = dr_ele_HLT;
795  }
796  //}
797  }
798  }
799  //
800  if(trigger_int_probe>0) probe_pass_trigger_cut[probeIt][filterNum] = 1;
801  //probe_hlt_matched_dr[probeIt] = hlt_matched_dr;
802  }
803  // high lumi filters
804  for (int filterNum=10; filterNum<25; ++filterNum) {
805  int trigger_int_probe = 0;
806 
807  //double hlt_matched_dr = -1.;
808  const int nF(pHLTe31->sizeFilters());
809  //
810  // default (tag) trigger filter
811  //
812  // find how many relevant
813  const int iF = pHLTe31->filterIndex(HLTFilterType_[filterNum]);
814  // loop over these objects to see whether they match
815  const trigger::TriggerObjectCollection& TOC(pHLTe31->getObjects());
816  if (nF != iF) {
817  // find how many objects there are
818  const trigger::Keys& KEYS(pHLTe31->filterKeys(iF));
819  const int nK(KEYS.size());
820  for (int iTrig = 0;iTrig <nK; ++iTrig ) {
821  const trigger::TriggerObject& TO(TOC[KEYS[iTrig]]);
822  //if (abs(TO.id())==11 ) { // demand it to be an electron
823  double dr_ele_HLT =
824  reco::deltaR(probeEle->eta(), probeEle->phi(), TO.eta(), TO.phi());
825  if (fabs(dr_ele_HLT) < ProbeHLTObjMaxDR) {++trigger_int_probe;
826  //hlt_matched_dr = dr_ele_HLT;
827  }
828  }
829  }
830 
831  //
832  if(trigger_int_probe>0) probe_pass_trigger_cut[probeIt][filterNum] = 1;
833  //probe_hlt_matched_dr[probeIt] = hlt_matched_dr;
834  }
835  ******************************************/
836  // ------------------------------------------------------------------
837  //
838  // MC Matching ......................................................
839  // check whether these electrons are matched to a MC electron
840  /*
841  int mc_index = 0;
842  int matched = 0; int mother_id = 999;
843  double deta_matched = 999.; double dphi_matched = 999.;
844  double denergy_matched = 999.;
845  for(reco::GenParticleCollection::const_iterator McParticle =
846  McCand->begin(); McParticle != McCand->end(); ++McParticle)
847  {
848  // check only for electrons
849  if(abs(McParticle->pdgId())==11 && McParticle->status()==1) {
850  mc_index++;
851  // check whether it matches a gsf electron
852  double deta = McParticle->eta() - probeEle->eta();
853  double dphi = McParticle->phi() - probeEle->phi();
854  if ( fabs(deta) < MCMatch_Deta_ && fabs(dphi) < MCMatch_Dphi_){
855  ++matched;
856  deta_matched = deta; dphi_matched = dphi;
857  denergy_matched = McParticle->energy() - probeEle->caloEnergy();
858  // find the mother of the MC electron
859  const reco::Candidate *mum;
860  bool mother_finder = true;
861  if (abs(McParticle->mother()->pdgId()) != 11)
862  mum = McParticle->mother();
863  else if (abs(McParticle->mother()->mother()->pdgId())!= 11)
864  mum = McParticle->mother()->mother();
865  else {
866  edm::LogInfo("info") << "Going too far to find the mum";
867  mother_finder = false;
868  }
869  if (mother_finder) {
870  mother_id = mum->pdgId();
871  }
872  }
873  }
874  }
875  probe_mc_matched[probeIt] = matched;
876  probe_mc_matched_deta[probeIt] = deta_matched;
877  probe_mc_matched_dphi[probeIt] = dphi_matched;
878  probe_mc_matched_denergy[probeIt] = denergy_matched;
879  probe_mc_matched_mother[probeIt] = mother_id;
880  */
881  }
882 
883  probe_tree->Fill();
884  ++tree_fills_;
885  delete[] sorted;
886  delete[] et;
887 }
edm::EDGetTokenT< pat::MuonCollection > pMuonsToken_
edm::EDGetTokenT< reco::CaloMETCollection > MetCollectionToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:614
reco::TrackRef track() const override
reference to Track reconstructed in the tracker only (reimplemented from reco::Muon) ...
edm::EDGetTokenT< reco::METCollection > tcMetCollectionToken_
double eta() const
pseudorapidity of cluster centroid
Definition: CaloCluster.h:180
edm::EDGetTokenT< pat::ElectronCollection > ElectronCollectionToken_
edm::EDGetTokenT< reco::SuperClusterCollection > corHybridscToken_
edm::EDGetTokenT< reco::TrackCollection > ctfTracksToken_
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:617
std::vector< Electron > ElectronCollection
Definition: Electron.h:36
edm::EDGetTokenT< reco::SuperClusterCollection > multi5x5scToken_
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
double pt() const
track transverse momentum
Definition: TrackBase.h:602
double energy() const
cluster energy
Definition: CaloCluster.h:148
bool isValid() const
Definition: HandleBase.h:70
double vz() const
z coordinate of the reference point on track
Definition: TrackBase.h:626
T const * product() const
Definition: Handle.h:69
edm::EDGetTokenT< reco::BeamSpot > offlineBeamSpotToken_
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
std::vector< Muon > MuonCollection
Definition: Muon.h:35
double vy() const
y coordinate of the reference point on track
Definition: TrackBase.h:623
edm::EDGetTokenT< reco::PFMETCollection > pfMetCollectionToken_
edm::EDGetTokenT< trigger::TriggerEvent > HLTCollectionE29Token_
const Point & position() const
position
Definition: BeamSpot.h:59
double phi() const
azimuthal angle of cluster centroid
Definition: CaloCluster.h:183
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:587
Analysis-level muon class.
Definition: Muon.h:51
edm::EDGetTokenT< pat::METCollection > t1MetCollectionToken_
edm::EDGetTokenT< pat::METCollection > mcMetCollectionToken_
double vx() const
x coordinate of the reference point on track
Definition: TrackBase.h:620
void GenPurposeSkimmerData::beginJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 890 of file GenPurposeSkimmerData.cc.

References ctf_track_eta, ctf_track_phi, ctf_track_pt, ctf_track_tip, ctf_track_tip_bs, ctf_track_vx, ctf_track_vy, ctf_track_vz, elec_1_duplicate_removal, event_mcMET, event_mcMET_phi, event_MET, event_MET_phi, event_pfMET, event_pfMET_phi, event_t1MET, event_t1MET_phi, event_tcMET, event_tcMET_phi, histofile, muon_eta, muon_phi, muon_pt, muon_tip, muon_tip_bs, muon_vx, muon_vy, muon_vz, outputFile_, probe_charge_for_tree, probe_ecal_iso_user, probe_ecal_isolation_value, probe_ele_dfi, probe_ele_dhi, probe_ele_eop, probe_ele_hoe, probe_ele_pin, probe_ele_pout, probe_ele_sihih, probe_ele_tip, probe_ele_Xvertex_for_tree, probe_ele_Yvertex_for_tree, probe_ele_Zvertex_for_tree, probe_hcal_iso_user, probe_hcal_isolation_value, probe_iso_user, probe_isolation_value, probe_sc_et_for_tree, probe_sc_eta_for_tree, probe_sc_phi_for_tree, probe_tree, sc_hybrid_et, sc_hybrid_eta, sc_hybrid_phi, sc_multi5x5_et, sc_multi5x5_eta, sc_multi5x5_phi, and tree_fills_.

890  {
891  //std::cout << "In beginJob()" << std::endl;
892  TString filename_histo = outputFile_;
893  histofile = new TFile(filename_histo, "RECREATE");
894  tree_fills_ = 0;
895 
896  probe_tree = new TTree("probe_tree", "Tree to store probe variables");
897 
898  //probe_tree->Branch("probe_ele_eta",probe_ele_eta_for_tree,"probe_ele_eta[4]/D");
899  //probe_tree->Branch("probe_ele_phi",probe_ele_phi_for_tree,"probe_ele_phi[4]/D");
900  //probe_tree->Branch("probe_ele_et",probe_ele_et_for_tree,"probe_ele_et[4]/D");
901  probe_tree->Branch("probe_ele_tip", probe_ele_tip, "probe_ele_tip[4]/D");
902  probe_tree->Branch("probe_ele_vertex_x", probe_ele_Xvertex_for_tree, "probe_ele_vertex_x[4]/D");
903  probe_tree->Branch("probe_ele_vertex_y", probe_ele_Yvertex_for_tree, "probe_ele_vertex_y[4]/D");
904  probe_tree->Branch("probe_ele_vertex_z", probe_ele_Zvertex_for_tree, "probe_ele_vertex_z[4]/D");
905  probe_tree->Branch("probe_sc_eta", probe_sc_eta_for_tree, "probe_sc_eta[4]/D");
906  probe_tree->Branch("probe_sc_phi", probe_sc_phi_for_tree, "probe_sc_phi[4]/D");
907  probe_tree->Branch("probe_sc_et", probe_sc_et_for_tree, "probe_sc_et[4]/D");
908 
909  // trigger related variables
910  //probe_tree->Branch("probe_trigger_cut",probe_pass_trigger_cut,"probe_trigger_cut[4][25]/I");
911  //probe_tree->Branch("probe_hlt_matched_dr", probe_hlt_matched_dr,"probe_hlt_matched_dr[4]/D");
912  // mc matching to electrons
913  // probe_tree->Branch("probe_mc_matched",probe_mc_matched,"probe_mc_matched[4]/I");
914  //probe_tree->Branch("probe_mc_matched_deta",probe_mc_matched_deta,
915  // "probe_mc_matched_deta[4]/D");
916  //probe_tree->Branch("probe_mc_matched_dphi",probe_mc_matched_dphi,
917  // "probe_mc_matched_dphi[4]/D");
918  //probe_tree->Branch("probe_mc_matched_denergy",probe_mc_matched_denergy,
919  // "probe_mc_matched_denergy[4]/D");
920  //probe_tree->Branch("probe_mc_matched_mother",probe_mc_matched_mother,
921  // "probe_mc_matched_mother[4]/I");
922  //
923  probe_tree->Branch("probe_charge", probe_charge_for_tree, "probe_charge[4]/I");
924  //probe_tree->Branch("probe_sc_fiducial_cut",probe_sc_pass_fiducial_cut,
925  // "probe_sc_fiducial_cut[4]/I");
926 
927  //probe_tree->Branch("probe_classification",
928  // probe_classification_index_for_tree,"probe_classification[4]/I");
929  //
930  // Isolation related variables ........................................
931  //
932  probe_tree->Branch("probe_isolation_value", probe_isolation_value, "probe_isolation_value[4]/D");
933  probe_tree->Branch("probe_ecal_isolation_value", probe_ecal_isolation_value, "probe_ecal_isolation_value[4]/D");
934  probe_tree->Branch("probe_hcal_isolation_value", probe_hcal_isolation_value, "probe_hcal_isolation_value[4]/D");
935  //
936  probe_tree->Branch("probe_iso_user", probe_iso_user, "probe_iso_user[4]/D");
937  probe_tree->Branch("probe_ecal_iso_user", probe_ecal_iso_user, "probe_ecal_iso_user[4]/D");
938  probe_tree->Branch("probe_hcal_iso_user", probe_hcal_iso_user, "probe_hcal_iso_user[4]/D");
939 
940  //......................................................................
941  // Electron ID Related variables .......................................
942  probe_tree->Branch("probe_ele_hoe", probe_ele_hoe, "probe_ele_hoe[4]/D");
943  //probe_tree->Branch("probe_ele_shh",probe_ele_shh, "probe_ele_shh[4]/D");
944  probe_tree->Branch("probe_ele_sihih", probe_ele_sihih, "probe_ele_sihih[4]/D");
945  probe_tree->Branch("probe_ele_dfi", probe_ele_dfi, "probe_ele_dfi[4]/D");
946  probe_tree->Branch("probe_ele_dhi", probe_ele_dhi, "probe_ele_dhi[4]/D");
947  probe_tree->Branch("probe_ele_eop", probe_ele_eop, "probe_ele_eop[4]/D");
948  probe_tree->Branch("probe_ele_pin", probe_ele_pin, "probe_ele_pin[4]/D");
949  probe_tree->Branch("probe_ele_pout", probe_ele_pout, "probe_ele_pout[4]/D");
950  // probe_tree->Branch("probe_ele_e5x5",probe_ele_e5x5, "probe_ele_e5x5[4]/D");
951  //probe_tree->Branch("probe_ele_e2x5",probe_ele_e2x5, "probe_ele_e2x5[4]/D");
952  //probe_tree->Branch("probe_ele_e1x5",probe_ele_e1x5, "probe_ele_e1x5[4]/D");
953 
954  //.......................................................................
955  //
956  // each entry for each trigger path
957  //probe_tree->Branch("event_HLTPath",event_HLTPath,"event_HLTPath[25]/I");
958  //probe_tree->Branch("numberOfHLTFilterObjects", numberOfHLTFilterObjects,
959  // "numberOfHLTFilterObjects[25]/I");
960  //
961  // debugging info:
962  //probe_tree->Branch("elec_number_in_event",&elec_number_in_event,"elec_number_in_event/I");
963  probe_tree->Branch("elec_1_duplicate_removal", &elec_1_duplicate_removal, "elec_1_duplicate_removal/I");
964  //
965 
966  // Missing ET in the event
967  probe_tree->Branch("event_MET", &event_MET, "event_MET/D");
968  probe_tree->Branch("event_MET_phi", &event_MET_phi, "event_MET_phi/D");
969  // probe_tree->Branch("event_MET_sig",&event_MET_sig,"event_MET_sig/D");
970  probe_tree->Branch("event_mcMET", &event_mcMET, "event_mcMET/D");
971  probe_tree->Branch("event_mcMET_phi", &event_mcMET_phi, "event_mcMET_phi/D");
972  //
973  probe_tree->Branch("event_tcMET", &event_tcMET, "event_tcMET/D");
974  probe_tree->Branch("event_tcMET_phi", &event_tcMET_phi, "event_tcMET_phi/D");
975  // probe_tree->Branch("event_tcMET_sig",&event_tcMET_sig,"event_tcMET_sig/D");
976 
977  probe_tree->Branch("event_pfMET", &event_pfMET, "event_pfMET/D");
978  probe_tree->Branch("event_pfMET_phi", &event_pfMET_phi, "event_pfMET_phi/D");
979  // probe_tree->Branch("event_pfMET_sig",&event_pfMET_sig,"event_pfMET_sig/D");
980 
981  // probe_tree->Branch("event_genMET",&event_genMET,"event_genMET/D");
982  // probe_tree->Branch("event_genMET_phi",&event_genMET_phi, "event_genMET_phi/D");
983  // probe_tree->Branch("event_genMET_sig",&event_genMET_sig, "event_genMET_sig/D");
984  //..... type 1 corrected MET
985  probe_tree->Branch("event_t1MET", &event_t1MET, "event_t1MET/D");
986  probe_tree->Branch("event_t1MET_phi", &event_t1MET_phi, "event_t1MET_phi/D");
987  //probe_tree->Branch("event_t1MET_sig",&event_t1MET_sig,"event_t1MET_sig/D");
988 
989  //
990  // some sc related variables
991  probe_tree->Branch("sc_hybrid_et", sc_hybrid_et, "sc_hybrid_et[5]/D");
992  probe_tree->Branch("sc_hybrid_eta", sc_hybrid_eta, "sc_hybrid_eta[5]/D");
993  probe_tree->Branch("sc_hybrid_phi", sc_hybrid_phi, "sc_hybrid_phi[5]/D");
994  //
995  probe_tree->Branch("sc_multi5x5_et", sc_multi5x5_et, "sc_multi5x5_et[5]/D");
996  probe_tree->Branch("sc_multi5x5_eta", sc_multi5x5_eta, "sc_multi5x5_eta[5]/D");
997  probe_tree->Branch("sc_multi5x5_phi", sc_multi5x5_phi, "sc_multi5x5_phi[5]/D");
998  // /////////////////////////////////////////////////////////////////////////
999  // general tracks in the event: keep 20 tracks
1000  probe_tree->Branch("ctf_track_pt", ctf_track_pt, "ctf_track_pt[20]/D");
1001  probe_tree->Branch("ctf_track_eta", ctf_track_eta, "ctf_track_eta[20]/D");
1002  probe_tree->Branch("ctf_track_phi", ctf_track_phi, "ctf_track_phi[20]/D");
1003  probe_tree->Branch("ctf_track_vx", ctf_track_vx, "ctf_track_vx[20]/D");
1004  probe_tree->Branch("ctf_track_vy", ctf_track_vy, "ctf_track_vy[20]/D");
1005  probe_tree->Branch("ctf_track_vz", ctf_track_vz, "ctf_track_vz[20]/D");
1006  probe_tree->Branch("ctf_track_tip", ctf_track_tip, "ctf_track_tip[20]/D");
1007  probe_tree->Branch("ctf_track_tip_bs", ctf_track_tip_bs, "ctf_track_tip_bs[20]/D");
1008  //
1009  probe_tree->Branch("muon_pt", muon_pt, "muon_pt[4]/D");
1010  probe_tree->Branch("muon_eta", muon_eta, "muon_eta[4]/D");
1011  probe_tree->Branch("muon_phi", muon_phi, "muon_phi[4]/D");
1012  probe_tree->Branch("muon_vx", muon_vx, "muon_vx[4]/D");
1013  probe_tree->Branch("muon_vy", muon_vy, "muon_vy[4]/D");
1014  probe_tree->Branch("muon_vz", muon_vz, "muon_vz[4]/D");
1015  probe_tree->Branch("muon_tip", muon_tip, "muon_tip[4]/D");
1016  probe_tree->Branch("muon_tip_bs", muon_tip_bs, "muon_tip_bs[4]/D");
1017 }
void GenPurposeSkimmerData::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 1020 of file GenPurposeSkimmerData.cc.

References gather_cfg::cout, DEFINE_FWK_MODULE, histofile, and tree_fills_.

1020  {
1021  //std::cout << "In endJob()" << std::endl;
1022  if (tree_fills_ == 0) {
1023  std::cout << "Empty tree: no output..." << std::endl;
1024  return;
1025  }
1026  //probe_tree->Print();
1027  histofile->Write();
1028  histofile->Close();
1029 }

Member Data Documentation

double GenPurposeSkimmerData::BarrelMaxEta
private

Definition at line 185 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

edm::EDGetTokenT<reco::SuperClusterCollection> GenPurposeSkimmerData::corHybridscToken_
private

Definition at line 107 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

double GenPurposeSkimmerData::ctf_track_eta[20]
private

Definition at line 218 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::ctf_track_phi[20]
private

Definition at line 218 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::ctf_track_pt[20]
private

Definition at line 218 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::ctf_track_tip[20]
private

Definition at line 220 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::ctf_track_tip_bs[20]
private

Definition at line 220 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::ctf_track_vx[20]
private

Definition at line 219 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::ctf_track_vy[20]
private

Definition at line 219 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::ctf_track_vz[20]
private

Definition at line 219 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

edm::EDGetTokenT<reco::TrackCollection> GenPurposeSkimmerData::ctfTracksToken_
private

Definition at line 106 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

int GenPurposeSkimmerData::elec_1_duplicate_removal
private

Definition at line 197 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

int GenPurposeSkimmerData::elec_number_in_event
private

Definition at line 196 of file GenPurposeSkimmerData.h.

Referenced by analyze().

edm::EDGetTokenT<pat::ElectronCollection> GenPurposeSkimmerData::ElectronCollectionToken_
private

Definition at line 85 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

double GenPurposeSkimmerData::EndcapMaxEta
private

Definition at line 187 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

double GenPurposeSkimmerData::EndcapMinEta
private

Definition at line 186 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

int GenPurposeSkimmerData::event_HLTPath[25]
private

Definition at line 183 of file GenPurposeSkimmerData.h.

double GenPurposeSkimmerData::event_mcMET
private

Definition at line 211 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::event_mcMET_phi
private

Definition at line 211 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::event_mcMET_sig
private

Definition at line 211 of file GenPurposeSkimmerData.h.

Referenced by analyze().

double GenPurposeSkimmerData::event_MET
private

Definition at line 199 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::event_MET_phi
private

Definition at line 201 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::event_MET_sig
private

Definition at line 199 of file GenPurposeSkimmerData.h.

Referenced by analyze().

double GenPurposeSkimmerData::event_pfMET
private

Definition at line 203 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::event_pfMET_phi
private

Definition at line 205 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::event_pfMET_sig
private

Definition at line 203 of file GenPurposeSkimmerData.h.

Referenced by analyze().

double GenPurposeSkimmerData::event_t1MET
private

Definition at line 210 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::event_t1MET_phi
private

Definition at line 210 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::event_t1MET_sig
private

Definition at line 210 of file GenPurposeSkimmerData.h.

Referenced by analyze().

double GenPurposeSkimmerData::event_tcMET
private

Definition at line 202 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::event_tcMET_phi
private

Definition at line 202 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::event_tcMET_sig
private

Definition at line 202 of file GenPurposeSkimmerData.h.

Referenced by analyze().

edm::EDGetTokenT<reco::GenMETCollection> GenPurposeSkimmerData::genMetCollectionToken_
private

Definition at line 94 of file GenPurposeSkimmerData.h.

double GenPurposeSkimmerData::GsfTrackMinInnerPt
private

Definition at line 194 of file GenPurposeSkimmerData.h.

TFile* GenPurposeSkimmerData::histofile
private

Definition at line 113 of file GenPurposeSkimmerData.h.

Referenced by beginJob(), and endJob().

edm::InputTag GenPurposeSkimmerData::HLTCollectionE29_
private

Definition at line 96 of file GenPurposeSkimmerData.h.

Referenced by GenPurposeSkimmerData().

edm::EDGetTokenT<trigger::TriggerEvent> GenPurposeSkimmerData::HLTCollectionE29Token_
private

Definition at line 97 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

edm::InputTag GenPurposeSkimmerData::HLTCollectionE31_
private

Definition at line 98 of file GenPurposeSkimmerData.h.

Referenced by GenPurposeSkimmerData().

edm::EDGetTokenT<trigger::TriggerEvent> GenPurposeSkimmerData::HLTCollectionE31Token_
private

Definition at line 99 of file GenPurposeSkimmerData.h.

Referenced by GenPurposeSkimmerData().

edm::InputTag GenPurposeSkimmerData::HLTFilterType_[25]
private

Definition at line 104 of file GenPurposeSkimmerData.h.

edm::InputTag GenPurposeSkimmerData::HLTTriggerResultsE29_
private

Definition at line 100 of file GenPurposeSkimmerData.h.

Referenced by GenPurposeSkimmerData().

edm::EDGetTokenT<edm::TriggerResults> GenPurposeSkimmerData::HLTTriggerResultsE29Token_
private

Definition at line 101 of file GenPurposeSkimmerData.h.

Referenced by GenPurposeSkimmerData().

edm::InputTag GenPurposeSkimmerData::HLTTriggerResultsE31_
private

Definition at line 102 of file GenPurposeSkimmerData.h.

Referenced by GenPurposeSkimmerData().

edm::EDGetTokenT<edm::TriggerResults> GenPurposeSkimmerData::HLTTriggerResultsE31Token_
private

Definition at line 103 of file GenPurposeSkimmerData.h.

Referenced by GenPurposeSkimmerData().

edm::InputTag GenPurposeSkimmerData::MCCollection_
private

Definition at line 86 of file GenPurposeSkimmerData.h.

edm::EDGetTokenT<reco::GenParticleCollection> GenPurposeSkimmerData::MCCollectionToken_
private

Definition at line 87 of file GenPurposeSkimmerData.h.

double GenPurposeSkimmerData::MCMatch_Deta_
private

Definition at line 172 of file GenPurposeSkimmerData.h.

double GenPurposeSkimmerData::MCMatch_Dphi_
private

Definition at line 173 of file GenPurposeSkimmerData.h.

edm::EDGetTokenT<pat::METCollection> GenPurposeSkimmerData::mcMetCollectionToken_
private

Definition at line 90 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

edm::InputTag GenPurposeSkimmerData::MetCollectionTag_
private

Definition at line 88 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

edm::EDGetTokenT<reco::CaloMETCollection> GenPurposeSkimmerData::MetCollectionToken_
private

Definition at line 89 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

edm::EDGetTokenT<reco::SuperClusterCollection> GenPurposeSkimmerData::multi5x5scToken_
private

Definition at line 108 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

double GenPurposeSkimmerData::muon_eta[4]
private

Definition at line 222 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::muon_phi[4]
private

Definition at line 222 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::muon_pt[4]
private

Definition at line 222 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::muon_tip[4]
private

Definition at line 224 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::muon_tip_bs[4]
private

Definition at line 224 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::muon_vx[4]
private

Definition at line 223 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::muon_vy[4]
private

Definition at line 223 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::muon_vz[4]
private

Definition at line 223 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

int GenPurposeSkimmerData::numberOfHLTFilterObjects[25]
private

Definition at line 181 of file GenPurposeSkimmerData.h.

edm::EDGetTokenT<reco::BeamSpot> GenPurposeSkimmerData::offlineBeamSpotToken_
private

Definition at line 109 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

std::string GenPurposeSkimmerData::outputFile_
private

Definition at line 82 of file GenPurposeSkimmerData.h.

Referenced by beginJob(), and GenPurposeSkimmerData().

edm::EDGetTokenT<reco::PFMETCollection> GenPurposeSkimmerData::pfMetCollectionToken_
private

Definition at line 92 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

edm::EDGetTokenT<pat::MuonCollection> GenPurposeSkimmerData::pMuonsToken_
private

Definition at line 110 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

int GenPurposeSkimmerData::probe_charge_for_tree[4]
private

Definition at line 131 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

int GenPurposeSkimmerData::probe_classification_index_for_tree[4]
private

Definition at line 149 of file GenPurposeSkimmerData.h.

Referenced by analyze().

double GenPurposeSkimmerData::probe_ecal_iso_user[4]
private

Definition at line 144 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_ecal_isolation_value[4]
private

Definition at line 143 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_ele_dfi[4]
private

Definition at line 160 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_ele_dhi[4]
private

Definition at line 159 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_ele_e1x5[4]
private

Definition at line 166 of file GenPurposeSkimmerData.h.

Referenced by analyze().

double GenPurposeSkimmerData::probe_ele_e2x5[4]
private

Definition at line 165 of file GenPurposeSkimmerData.h.

Referenced by analyze().

double GenPurposeSkimmerData::probe_ele_e5x5[4]
private

Definition at line 164 of file GenPurposeSkimmerData.h.

Referenced by analyze().

double GenPurposeSkimmerData::probe_ele_eop[4]
private

Definition at line 161 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_ele_et_for_tree[4]
private

Definition at line 126 of file GenPurposeSkimmerData.h.

Referenced by analyze().

double GenPurposeSkimmerData::probe_ele_eta_for_tree[4]
private

Definition at line 124 of file GenPurposeSkimmerData.h.

Referenced by analyze().

double GenPurposeSkimmerData::probe_ele_hoe[4]
private

Definition at line 156 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

int GenPurposeSkimmerData::probe_ele_pass_et_cut[4]
private

Definition at line 136 of file GenPurposeSkimmerData.h.

int GenPurposeSkimmerData::probe_ele_pass_fiducial_cut[4]
private

Definition at line 135 of file GenPurposeSkimmerData.h.

double GenPurposeSkimmerData::probe_ele_phi_for_tree[4]
private

Definition at line 125 of file GenPurposeSkimmerData.h.

Referenced by analyze().

double GenPurposeSkimmerData::probe_ele_pin[4]
private

Definition at line 162 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_ele_pout[4]
private

Definition at line 163 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_ele_shh[4]
private

Definition at line 157 of file GenPurposeSkimmerData.h.

Referenced by analyze().

double GenPurposeSkimmerData::probe_ele_sihih[4]
private

Definition at line 158 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_ele_tip[4]
private

Definition at line 130 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_ele_Xvertex_for_tree[4]
private

Definition at line 127 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_ele_Yvertex_for_tree[4]
private

Definition at line 128 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_ele_Zvertex_for_tree[4]
private

Definition at line 129 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_hcal_iso_user[4]
private

Definition at line 147 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_hcal_isolation_value[4]
private

Definition at line 146 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_hlt_matched_dr[4]
private

Definition at line 170 of file GenPurposeSkimmerData.h.

int GenPurposeSkimmerData::probe_index_for_tree[4]
private

Definition at line 132 of file GenPurposeSkimmerData.h.

double GenPurposeSkimmerData::probe_iso_user[4]
private

Definition at line 141 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_isolation_value[4]
private

Definition at line 140 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

int GenPurposeSkimmerData::probe_mc_matched[4]
private

Definition at line 174 of file GenPurposeSkimmerData.h.

double GenPurposeSkimmerData::probe_mc_matched_denergy[4]
private

Definition at line 177 of file GenPurposeSkimmerData.h.

double GenPurposeSkimmerData::probe_mc_matched_deta[4]
private

Definition at line 175 of file GenPurposeSkimmerData.h.

double GenPurposeSkimmerData::probe_mc_matched_dphi[4]
private

Definition at line 176 of file GenPurposeSkimmerData.h.

int GenPurposeSkimmerData::probe_mc_matched_mother[4]
private

Definition at line 178 of file GenPurposeSkimmerData.h.

int GenPurposeSkimmerData::probe_pass_id_loose[4]
private

Definition at line 154 of file GenPurposeSkimmerData.h.

int GenPurposeSkimmerData::probe_pass_id_robust_loose[4]
private

Definition at line 152 of file GenPurposeSkimmerData.h.

int GenPurposeSkimmerData::probe_pass_id_robust_tight[4]
private

Definition at line 153 of file GenPurposeSkimmerData.h.

int GenPurposeSkimmerData::probe_pass_id_tight[4]
private

Definition at line 155 of file GenPurposeSkimmerData.h.

int GenPurposeSkimmerData::probe_pass_iso_cut[4]
private

Definition at line 138 of file GenPurposeSkimmerData.h.

int GenPurposeSkimmerData::probe_pass_recoEle_cut[4]
private

Definition at line 137 of file GenPurposeSkimmerData.h.

int GenPurposeSkimmerData::probe_pass_tip_cut[4]
private

Definition at line 150 of file GenPurposeSkimmerData.h.

int GenPurposeSkimmerData::probe_pass_trigger_cut[4][25]
private

Definition at line 169 of file GenPurposeSkimmerData.h.

double GenPurposeSkimmerData::probe_sc_et_for_tree[4]
private

Definition at line 119 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::probe_sc_eta_for_tree[4]
private

Definition at line 117 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

int GenPurposeSkimmerData::probe_sc_pass_et_cut[4]
private

Definition at line 121 of file GenPurposeSkimmerData.h.

int GenPurposeSkimmerData::probe_sc_pass_fiducial_cut[4]
private

Definition at line 120 of file GenPurposeSkimmerData.h.

Referenced by analyze().

double GenPurposeSkimmerData::probe_sc_phi_for_tree[4]
private

Definition at line 118 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

TTree* GenPurposeSkimmerData::probe_tree
private

Definition at line 112 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::ProbeHLTObjMaxDR
private

Definition at line 192 of file GenPurposeSkimmerData.h.

Referenced by GenPurposeSkimmerData().

double GenPurposeSkimmerData::ProbeRecoEleSCMaxDE
private

Definition at line 190 of file GenPurposeSkimmerData.h.

double GenPurposeSkimmerData::ProbeSCMinEt
private

Definition at line 189 of file GenPurposeSkimmerData.h.

double GenPurposeSkimmerData::RecoEleSeedBCMaxDE
private

Definition at line 193 of file GenPurposeSkimmerData.h.

double GenPurposeSkimmerData::sc_hybrid_et[5]
private

Definition at line 215 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::sc_hybrid_eta[5]
private

Definition at line 215 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::sc_hybrid_phi[5]
private

Definition at line 215 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::sc_multi5x5_et[5]
private

Definition at line 216 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::sc_multi5x5_eta[5]
private

Definition at line 216 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

double GenPurposeSkimmerData::sc_multi5x5_phi[5]
private

Definition at line 216 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and beginJob().

edm::EDGetTokenT<pat::METCollection> GenPurposeSkimmerData::t1MetCollectionToken_
private

Definition at line 93 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

edm::EDGetTokenT<reco::METCollection> GenPurposeSkimmerData::tcMetCollectionToken_
private

Definition at line 91 of file GenPurposeSkimmerData.h.

Referenced by analyze(), and GenPurposeSkimmerData().

int GenPurposeSkimmerData::tree_fills_
private

Definition at line 83 of file GenPurposeSkimmerData.h.

Referenced by analyze(), beginJob(), and endJob().