CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Private Member Functions | Private Attributes
L1TTauOffline Class Reference

#include <L1TTauOffline.h>

Inheritance diagram for L1TTauOffline:
DQMEDAnalyzer edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Types

enum  PlotConfig { nVertex, ETvsET, PHIvsPHI }
 
- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 

Public Member Functions

 L1TTauOffline (const edm::ParameterSet &ps)
 
 ~L1TTauOffline () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &ev, edm::EventSetup const &es) final
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) override
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
 DQMEDAnalyzer (DQMEDAnalyzer const &)=delete
 
 DQMEDAnalyzer (DQMEDAnalyzer &&)=delete
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) override
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) override
 
 ~DQMEDAnalyzer () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () 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
 
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)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Attributes

static const std::map< std::string, unsigned int > PlotConfigNames
 

Protected Member Functions

void analyze (edm::Event const &e, edm::EventSetup const &eSetup) override
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &eSetup) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void dqmBeginRun (const edm::Run &run, const edm::EventSetup &iSetup) override
 
void endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &eSetup) override
 
void endRun (edm::Run const &run, edm::EventSetup const &eSetup) override
 
const reco::Vertex getPrimaryVertex (edm::Handle< reco::VertexCollection > const &vertex, edm::Handle< reco::BeamSpot > const &beamSpot)
 
void getProbeTaus (const edm::Event &e, edm::Handle< reco::PFTauCollection > const &taus, edm::Handle< reco::MuonCollection > const &muons, const reco::Vertex &vertex)
 
void getTauL1tPairs (edm::Handle< l1t::TauBxCollection > const &l1tCands)
 
void getTightMuons (edm::Handle< reco::MuonCollection > const &muons, edm::Handle< reco::PFMETCollection > const &mets, const reco::Vertex &vertex, edm::Handle< trigger::TriggerEvent > const &trigEvent)
 
bool matchHlt (edm::Handle< trigger::TriggerEvent > const &triggerEvent, const reco::Muon *muon)
 
- 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 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)
 

Private Member Functions

void bookTauHistos (DQMStore::IBooker &)
 
double calcDeltaPhi (double phi1, double phi2)
 
double Distance (const reco::Candidate &c1, const reco::Candidate &c2)
 
double DistancePhi (const reco::Candidate &c1, const reco::Candidate &c2)
 

Private Attributes

edm::EDGetTokenT< reco::PFTauDiscriminatorAntiEleInputTag_
 
edm::EDGetTokenT< reco::PFTauDiscriminatorAntiMuInputTag_
 
edm::EDGetTokenT< reco::BeamSpotBsInputTag_
 
edm::EDGetTokenT< reco::PFTauDiscriminatorcomb3TInputTag_
 
edm::EDGetTokenT< reco::PFTauDiscriminatorDecayModeFindingInputTag_
 
std::string efficiencyFolder_
 
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EB_EE_pass_
 
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EB_EE_total_
 
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EB_pass_
 
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EB_total_
 
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EE_pass_
 
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EE_total_
 
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EB_EE_pass_
 
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EB_EE_total_
 
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EB_pass_
 
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EB_total_
 
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EE_pass_
 
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EE_total_
 
MonitorElementh_L1TauEtavsTauEta_
 
MonitorElementh_L1TauETvsTauET_EB_
 
MonitorElementh_L1TauETvsTauET_EB_EE_
 
MonitorElementh_L1TauETvsTauET_EE_
 
MonitorElementh_L1TauPhivsTauPhi_EB_
 
MonitorElementh_L1TauPhivsTauPhi_EB_EE_
 
MonitorElementh_L1TauPhivsTauPhi_EE_
 
MonitorElementh_nVertex_
 
MonitorElementh_resolutionTauET_EB_
 
MonitorElementh_resolutionTauET_EB_EE_
 
MonitorElementh_resolutionTauET_EE_
 
MonitorElementh_resolutionTauEta_
 
MonitorElementh_resolutionTauPhi_EB_
 
MonitorElementh_resolutionTauPhi_EB_EE_
 
MonitorElementh_resolutionTauPhi_EE_
 
MonitorElementh_tagAndProbeMass_
 
dqmoffline::l1t::HistDefinitions histDefinitions_
 
std::string histFolder_
 
edm::ESHandle< MagneticFieldm_BField
 
HLTConfigProvider m_hltConfig
 
BXVector< l1t::Taum_L1tL1tTaus
 
std::vector< int > m_L1tPtCuts
 
std::vector< l1t::TauBxCollectionm_L1tTaus
 
float m_MaxHltTauDR
 
float m_MaxL1tTauDR
 
float m_MaxTauEta
 
std::vector< const reco::PFTau * > m_ProbeTaus
 
edm::ESHandle< Propagatorm_propagatorAlong
 
edm::ESHandle< Propagatorm_propagatorOpposite
 
std::vector< reco::PFTaum_RecoRecoTaus
 
std::vector< reco::PFTauCollectionm_RecoTaus
 
std::vector< TauL1TPairm_TauL1tPairs
 
std::vector< const reco::Muon * > m_TightMuons
 
std::vector< int > m_trigIndices
 
edm::EDGetTokenT< reco::PFMETCollectionMetInputTag_
 
edm::EDGetTokenT< reco::MuonCollectionMuonInputTag_
 
math::XYZPoint PVPoint_
 
edm::EDGetTokenT< l1t::TauBxCollectionstage2CaloLayer2TauToken_
 
std::vector< double > tauEfficiencyBins_
 
std::vector< int > tauEfficiencyThresholds_
 
edm::EDGetTokenT< reco::PFTauCollectiontheTauCollection_
 
edm::EDGetTokenT< trigger::TriggerEventtriggerEvent_
 
std::vector< std::string > triggerPath_
 
edm::EDGetTokenT< edm::TriggerResultstriggerResults_
 
std::string trigProcess_
 
edm::EDGetTokenT< reco::VertexCollectionVtxInputTag_
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 82 of file L1TTauOffline.h.

Member Enumeration Documentation

Enumerator
nVertex 
ETvsET 
PHIvsPHI 

Definition at line 89 of file L1TTauOffline.h.

Constructor & Destructor Documentation

L1TTauOffline::L1TTauOffline ( const edm::ParameterSet ps)

Definition at line 53 of file L1TTauOffline.cc.

53  :
54  theTauCollection_(consumes < reco::PFTauCollection > (ps.getUntrackedParameter < edm::InputTag > ("tauInputTag"))),
55  AntiMuInputTag_(consumes<reco::PFTauDiscriminator>(ps.getUntrackedParameter<edm::InputTag>("antiMuInputTag"))),
56  AntiEleInputTag_(consumes<reco::PFTauDiscriminator>(ps.getUntrackedParameter<edm::InputTag>("antiEleInputTag"))),
57  DecayModeFindingInputTag_(consumes<reco::PFTauDiscriminator>(ps.getUntrackedParameter<edm::InputTag>("decayModeFindingInputTag"))),
58  comb3TInputTag_(consumes<reco::PFTauDiscriminator>(ps.getUntrackedParameter<edm::InputTag>("comb3TInputTag"))),
59  MuonInputTag_(consumes<reco::MuonCollection>(ps.getUntrackedParameter<edm::InputTag>("muonInputTag"))),
60  MetInputTag_(consumes<reco::PFMETCollection>(ps.getUntrackedParameter<edm::InputTag>("metInputTag"))),
61  VtxInputTag_(consumes<reco::VertexCollection>(ps.getUntrackedParameter<edm::InputTag>("vtxInputTag"))),
62  BsInputTag_(consumes<reco::BeamSpot>(ps.getUntrackedParameter<edm::InputTag>("bsInputTag"))),
63  triggerEvent_(consumes < trigger::TriggerEvent > (ps.getUntrackedParameter < edm::InputTag > ("trigInputTag"))),
64  trigProcess_(ps.getUntrackedParameter<string>("trigProcess")),
65  triggerResults_(consumes < edm::TriggerResults > (ps.getUntrackedParameter < edm::InputTag > ("trigProcess_token"))),
66  triggerPath_(ps.getUntrackedParameter < vector<std::string> > ("triggerNames")),
67  histFolder_(ps.getParameter < std::string > ("histFolder")),
68  efficiencyFolder_(histFolder_ + "/efficiency_raw"),
69  stage2CaloLayer2TauToken_(consumes < l1t::TauBxCollection > (ps.getUntrackedParameter < edm::InputTag > ("l1tInputTag"))),
70  tauEfficiencyThresholds_(ps.getParameter < std::vector<int> > ("tauEfficiencyThresholds")),
71  tauEfficiencyBins_(ps.getParameter < std::vector<double> > ("tauEfficiencyBins")),
73 {
74  edm::LogInfo("L1TTauOffline") << "Constructor " << "L1TTauOffline::L1TTauOffline " << std::endl;
75 }
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::VertexCollection > VtxInputTag_
T getUntrackedParameter(std::string const &, T const &) const
std::vector< std::string > triggerPath_
edm::EDGetTokenT< reco::PFTauDiscriminator > comb3TInputTag_
static const std::map< std::string, unsigned int > PlotConfigNames
Definition: L1TTauOffline.h:95
std::vector< double > tauEfficiencyBins_
std::string efficiencyFolder_
std::string histFolder_
std::vector< int > tauEfficiencyThresholds_
edm::EDGetTokenT< l1t::TauBxCollection > stage2CaloLayer2TauToken_
edm::EDGetTokenT< reco::PFTauDiscriminator > AntiMuInputTag_
edm::EDGetTokenT< reco::BeamSpot > BsInputTag_
edm::EDGetTokenT< reco::PFMETCollection > MetInputTag_
edm::EDGetTokenT< edm::TriggerResults > triggerResults_
HistDefinitions readHistDefinitions(const edm::ParameterSet &ps, const std::map< std::string, unsigned int > &mapping)
edm::EDGetTokenT< reco::MuonCollection > MuonInputTag_
std::string trigProcess_
edm::EDGetTokenT< reco::PFTauDiscriminator > DecayModeFindingInputTag_
ParameterSet const & getParameterSet(std::string const &) const
edm::EDGetTokenT< trigger::TriggerEvent > triggerEvent_
edm::EDGetTokenT< reco::PFTauDiscriminator > AntiEleInputTag_
dqmoffline::l1t::HistDefinitions histDefinitions_
edm::EDGetTokenT< reco::PFTauCollection > theTauCollection_
L1TTauOffline::~L1TTauOffline ( )
override

Definition at line 80 of file L1TTauOffline.cc.

81 {
82  edm::LogInfo("L1TTauOffline") << "Destructor L1TTauOffline::~L1TTauOffline " << std::endl;
83 }

Member Function Documentation

void L1TTauOffline::analyze ( edm::Event const &  e,
edm::EventSetup const &  eSetup 
)
overrideprotectedvirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 140 of file L1TTauOffline.cc.

References ecalDrivenElectronSeedsParameters_cff::beamSpot, BXVector< T >::begin(), BsInputTag_, counter, BXVector< T >::end(), PVValHelper::eta, MonitorElement::Fill(), edm::EventSetup::get(), edm::Event::getByToken(), getPrimaryVertex(), getProbeTaus(), getTauL1tPairs(), getTightMuons(), h_efficiencyIsoTauET_EB_EE_pass_, h_efficiencyIsoTauET_EB_EE_total_, h_efficiencyIsoTauET_EB_pass_, h_efficiencyIsoTauET_EB_total_, h_efficiencyIsoTauET_EE_pass_, h_efficiencyIsoTauET_EE_total_, h_efficiencyNonIsoTauET_EB_EE_pass_, h_efficiencyNonIsoTauET_EB_EE_total_, h_efficiencyNonIsoTauET_EB_pass_, h_efficiencyNonIsoTauET_EB_total_, h_efficiencyNonIsoTauET_EE_pass_, h_efficiencyNonIsoTauET_EE_total_, h_L1TauEtavsTauEta_, h_L1TauETvsTauET_EB_, h_L1TauETvsTauET_EB_EE_, h_L1TauETvsTauET_EE_, h_L1TauPhivsTauPhi_EB_, h_L1TauPhivsTauPhi_EB_EE_, h_L1TauPhivsTauPhi_EE_, h_resolutionTauET_EB_, h_resolutionTauET_EB_EE_, h_resolutionTauET_EE_, h_resolutionTauEta_, h_resolutionTauPhi_EB_, h_resolutionTauPhi_EB_EE_, h_resolutionTauPhi_EE_, edm::HandleBase::isValid(), m_BField, m_MaxHltTauDR, m_MaxL1tTauDR, m_MaxTauEta, m_TauL1tPairs, MetInputTag_, TtSemiLepSignalSelMVAComputer_cfi::mets, MuonInputTag_, nano_cff::muons, phi, impactParameterTagInfos_cfi::primaryVertex, EnergyCorrector::pt, BXVector< T >::size(), stage2CaloLayer2TauToken_, AlCaHLTBitMon_QueryRunRegistry::string, metsig::tau, tauEfficiencyThresholds_, nano_cff::taus, theTauCollection_, electronIdCutBased_cfi::threshold, triggerEvent_, triggerResults_, and VtxInputTag_.

141 {
142 
143  m_MaxTauEta = 2.1;
144  m_MaxL1tTauDR = 0.5;
145  m_MaxHltTauDR = 0.5;
146 
148  e.getByToken(theTauCollection_, taus);
149 
150  if(!taus.isValid())
151  {
152  edm::LogWarning("L1TTauOffline") << "invalid collection: reco::PFTauCollection " << std::endl;
153  return;
154  }
155 
157  e.getByToken(MuonInputTag_, muons);
158 
159  if(!muons.isValid())
160  {
161  edm::LogWarning("L1TTauOffline") << "invalid collection: reco::MuonCollection " << std::endl;
162  return;
163  }
164 
166  e.getByToken(BsInputTag_, beamSpot);
167 
168  if(!beamSpot.isValid())
169  {
170  edm::LogWarning("L1TTauOffline") << "invalid collection: reco::BeamSpot " << std::endl;
171  return;
172  }
173 
175  e.getByToken(VtxInputTag_, vertex);
176 
177  if(!vertex.isValid())
178  {
179  edm::LogWarning("L1TTauOffline") << "invalid collection: reco::VertexCollection " << std::endl;
180  return;
181  }
182 
184  e.getByToken(stage2CaloLayer2TauToken_,l1tCands);
185 
186  if(!l1tCands.isValid())
187  {
188  edm::LogWarning("L1TTauOffline") << "invalid collection: l1t::TauBxCollection " << std::endl;
189  return;
190  }
191 
193  e.getByToken(triggerResults_,trigResults);
194 
195  if(!trigResults.isValid())
196  {
197  edm::LogWarning("L1TTauOffline") << "invalid collection: edm::TriggerResults " << std::endl;
198  return;
199  }
200 
202  e.getByToken(triggerEvent_,trigEvent);
203 
204  if(!trigEvent.isValid())
205  {
206  edm::LogWarning("L1TTauOffline") << "invalid collection: trigger::TriggerEvent " << std::endl;
207  return;
208  }
209 
211  e.getByToken(MetInputTag_, mets);
212 
213  if(!mets.isValid()) {
214  edm::LogWarning("L1TTauOffline") << "invalid collection: reco::PFMETCollection " << std::endl;
215  return;
216  }
217 
218  eSetup.get<IdealMagneticFieldRecord>().get(m_BField);
219  const reco::Vertex primaryVertex = getPrimaryVertex(vertex,beamSpot);
220 
221  getTightMuons(muons,mets,primaryVertex,trigEvent);
222  getProbeTaus(e,taus,muons,primaryVertex);
223  getTauL1tPairs(l1tCands);
224 
225  vector<l1t::Tau> l1tContainer;
226  l1tContainer.reserve(l1tCands->size()+1);
227 
228  for (auto tau = l1tCands->begin(0); tau != l1tCands->end(0); ++tau) {
229  l1tContainer.push_back(*tau);
230  }
231 
232  for(auto tauL1tPairsIt=m_TauL1tPairs.begin(); tauL1tPairsIt!=m_TauL1tPairs.end(); ++tauL1tPairsIt) {
233 
234  float eta = tauL1tPairsIt->eta();
235  float phi = tauL1tPairsIt->phi();
236  float pt = tauL1tPairsIt->pt();
237 
238  // unmatched gmt cands have l1tPt = -1.
239  float l1tPt = tauL1tPairsIt->l1tPt();
240 
241  int counter = 0;
242 
243  for (auto threshold : tauEfficiencyThresholds_) {
244  std::string str_threshold = std::to_string(threshold);
245 
246  int l1tPtCut = threshold;
247  bool l1tAboveCut = (l1tPt >= l1tPtCut);
248 
249  stringstream ptCutToTag; ptCutToTag << l1tPtCut;
250  string ptTag = ptCutToTag.str();
251 
252  if (fabs(eta) < m_MaxTauEta) {
253  if(counter==0) {
254  if(fabs(eta)<1.5) {
255  h_L1TauETvsTauET_EB_->Fill(pt,l1tPt);
256  h_L1TauPhivsTauPhi_EB_->Fill(phi,tauL1tPairsIt->l1tPhi());
257  h_resolutionTauET_EB_->Fill((l1tPt-pt)/pt);
258  h_resolutionTauPhi_EB_->Fill(tauL1tPairsIt->l1tPhi()-phi);
259  } else {
260  h_L1TauETvsTauET_EE_->Fill(pt,l1tPt);
261  h_L1TauPhivsTauPhi_EE_->Fill(phi,tauL1tPairsIt->l1tPhi());
262  h_resolutionTauET_EE_->Fill((l1tPt-pt)/pt);
263  h_resolutionTauPhi_EE_->Fill(tauL1tPairsIt->l1tPhi()-phi);
264  }
265  h_L1TauETvsTauET_EB_EE_->Fill(pt,l1tPt);
266  h_L1TauPhivsTauPhi_EB_EE_->Fill(phi,tauL1tPairsIt->l1tPhi());
267  h_L1TauEtavsTauEta_->Fill(eta,tauL1tPairsIt->l1tEta());
268  h_resolutionTauET_EB_EE_->Fill((l1tPt-pt)/pt);
269  h_resolutionTauPhi_EB_EE_->Fill(tauL1tPairsIt->l1tPhi()-phi);
270  h_resolutionTauEta_->Fill(tauL1tPairsIt->l1tEta()-eta);
271 
272  ++counter;
273  }
274 
275  if(fabs(eta)<1.5) {
278  } else {
281  }
284 
285  if(l1tAboveCut) {
286  if(fabs(eta)<1.5) h_efficiencyNonIsoTauET_EB_pass_[threshold]->Fill(pt);
289 
290  if(tauL1tPairsIt->l1tIso()>0.5) {
291  if(fabs(eta)<1.5) h_efficiencyIsoTauET_EB_pass_[threshold]->Fill(pt);
294  }
295  }
296  }
297  }
298  }//loop over tau-L1 pairs
299 }
const_iterator end(int bx) const
edm::EDGetTokenT< reco::VertexCollection > VtxInputTag_
unsigned size(int bx) const
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EB_pass_
std::vector< TauL1TPair > m_TauL1tPairs
MonitorElement * h_L1TauPhivsTauPhi_EB_
edm::ESHandle< MagneticField > m_BField
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EB_EE_pass_
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EE_pass_
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EB_total_
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EB_pass_
void getProbeTaus(const edm::Event &e, edm::Handle< reco::PFTauCollection > const &taus, edm::Handle< reco::MuonCollection > const &muons, const reco::Vertex &vertex)
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EB_EE_total_
MonitorElement * h_resolutionTauPhi_EB_
void Fill(long long x)
MonitorElement * h_L1TauPhivsTauPhi_EE_
std::vector< int > tauEfficiencyThresholds_
MonitorElement * h_resolutionTauPhi_EB_EE_
const reco::Vertex getPrimaryVertex(edm::Handle< reco::VertexCollection > const &vertex, edm::Handle< reco::BeamSpot > const &beamSpot)
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EB_total_
MonitorElement * h_resolutionTauPhi_EE_
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EB_EE_pass_
MonitorElement * h_L1TauEtavsTauEta_
edm::EDGetTokenT< l1t::TauBxCollection > stage2CaloLayer2TauToken_
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EB_EE_total_
bool isValid() const
Definition: HandleBase.h:74
MonitorElement * h_resolutionTauEta_
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EE_total_
edm::EDGetTokenT< reco::BeamSpot > BsInputTag_
edm::EDGetTokenT< reco::PFMETCollection > MetInputTag_
MonitorElement * h_resolutionTauET_EB_EE_
edm::EDGetTokenT< edm::TriggerResults > triggerResults_
MonitorElement * h_resolutionTauET_EE_
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EE_total_
edm::EDGetTokenT< reco::MuonCollection > MuonInputTag_
void getTauL1tPairs(edm::Handle< l1t::TauBxCollection > const &l1tCands)
edm::EDGetTokenT< trigger::TriggerEvent > triggerEvent_
static std::atomic< unsigned int > counter
edm::EDGetTokenT< reco::PFTauCollection > theTauCollection_
MonitorElement * h_L1TauETvsTauET_EB_EE_
MonitorElement * h_L1TauETvsTauET_EE_
MonitorElement * h_L1TauPhivsTauPhi_EB_EE_
void getTightMuons(edm::Handle< reco::MuonCollection > const &muons, edm::Handle< reco::PFMETCollection > const &mets, const reco::Vertex &vertex, edm::Handle< trigger::TriggerEvent > const &trigEvent)
const_iterator begin(int bx) const
MonitorElement * h_resolutionTauET_EB_
MonitorElement * h_L1TauETvsTauET_EB_
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EE_pass_
void L1TTauOffline::beginLuminosityBlock ( edm::LuminosityBlock const &  lumi,
edm::EventSetup const &  eSetup 
)
overrideprotected

Definition at line 132 of file L1TTauOffline.cc.

133 {
134  edm::LogInfo("L1TTauOffline") << "L1TTauOffline::beginLuminosityBlock" << std::endl;
135 }
void L1TTauOffline::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  ,
edm::EventSetup const &   
)
overrideprotectedvirtual

Implements DQMEDAnalyzer.

Definition at line 100 of file L1TTauOffline.cc.

References bookTauHistos(), runEdmFileComparison::found, createfilelist::int, m_hltConfig, m_trigIndices, HLTConfigProvider::size(), AlCaHLTBitMon_QueryRunRegistry::string, HLTConfigProvider::triggerName(), and triggerPath_.

101 {
102  edm::LogInfo("L1TTauOffline") << "L1TTauOffline::bookHistograms" << std::endl;
103 
104  //book at beginRun
105  bookTauHistos(ibooker);
106 
107  for ( auto trigNamesIt = triggerPath_.begin() ; trigNamesIt!=triggerPath_.end() ; trigNamesIt++){
108 
109  std::string tNameTmp = (*trigNamesIt);
110  std::string tNamePattern = "";
111  std::size_t found0 = tNameTmp.find("*");
112  if(found0!=std::string::npos) tNamePattern = tNameTmp.substr(0,tNameTmp.size()-1);
113  else tNamePattern = tNameTmp;
114 
115  int tIndex = -1;
116 
117  for (unsigned ipath = 0; ipath < m_hltConfig.size(); ++ipath) {
118 
119  std::string tmpName = m_hltConfig.triggerName(ipath);
120 
121  std::size_t found=tmpName.find(tNamePattern);
122  if (found!=std::string::npos){
123  tIndex = int(ipath);
124  m_trigIndices.push_back(tIndex);
125  }
126  }
127  }
128 }
unsigned int size() const
number of trigger paths in trigger table
std::vector< std::string > triggerPath_
const std::string & triggerName(unsigned int triggerIndex) const
std::vector< int > m_trigIndices
void bookTauHistos(DQMStore::IBooker &)
HLTConfigProvider m_hltConfig
void L1TTauOffline::bookTauHistos ( DQMStore::IBooker ibooker)
private

Definition at line 320 of file L1TTauOffline.cc.

References dqmoffline::l1t::HistDefinition::binsX, dqmoffline::l1t::HistDefinition::binsY, DQMStore::IBooker::book1D(), DQMStore::IBooker::book2D(), DQMStore::IBooker::cd(), efficiencyFolder_, h_efficiencyIsoTauET_EB_EE_pass_, h_efficiencyIsoTauET_EB_EE_total_, h_efficiencyIsoTauET_EB_pass_, h_efficiencyIsoTauET_EB_total_, h_efficiencyIsoTauET_EE_pass_, h_efficiencyIsoTauET_EE_total_, h_efficiencyNonIsoTauET_EB_EE_pass_, h_efficiencyNonIsoTauET_EB_EE_total_, h_efficiencyNonIsoTauET_EB_pass_, h_efficiencyNonIsoTauET_EB_total_, h_efficiencyNonIsoTauET_EE_pass_, h_efficiencyNonIsoTauET_EE_total_, h_L1TauEtavsTauEta_, h_L1TauETvsTauET_EB_, h_L1TauETvsTauET_EB_EE_, h_L1TauETvsTauET_EE_, h_L1TauPhivsTauPhi_EB_, h_L1TauPhivsTauPhi_EB_EE_, h_L1TauPhivsTauPhi_EE_, h_nVertex_, h_resolutionTauET_EB_, h_resolutionTauET_EB_EE_, h_resolutionTauET_EE_, h_resolutionTauEta_, h_resolutionTauPhi_EB_, h_resolutionTauPhi_EB_EE_, h_resolutionTauPhi_EE_, h_tagAndProbeMass_, histDefinitions_, histFolder_, dqmoffline::l1t::HistDefinition::name, dqmoffline::l1t::HistDefinition::nbinsX, dqmoffline::l1t::HistDefinition::nbinsY, DQMStore::IBooker::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, tauEfficiencyBins_, tauEfficiencyThresholds_, electronIdCutBased_cfi::threshold, dqmoffline::l1t::HistDefinition::title, dqmoffline::l1t::HistDefinition::xmax, dqmoffline::l1t::HistDefinition::xmin, dqmoffline::l1t::HistDefinition::ymax, and dqmoffline::l1t::HistDefinition::ymin.

Referenced by bookHistograms().

321 {
322  ibooker.cd();
323  ibooker.setCurrentFolder(histFolder_);
324  dqmoffline::l1t::HistDefinition nVertexDef = histDefinitions_[PlotConfig::nVertex];
325  h_nVertex_ = ibooker.book1D(
326  nVertexDef.name, nVertexDef.title, nVertexDef.nbinsX, nVertexDef.xmin, nVertexDef.xmax
327  );
328  h_tagAndProbeMass_ = ibooker.book1D("tagAndProbeMass", "Invariant mass of tag & probe pair", 100, 40, 140);
329 
330  dqmoffline::l1t::HistDefinition templateETvsET = histDefinitions_[PlotConfig::ETvsET];
331  h_L1TauETvsTauET_EB_ = ibooker.book2D("L1TauETvsTauET_EB",
332  "L1 Tau E_{T} vs PFTau E_{T} (EB); PFTau E_{T} (GeV); L1 Tau E_{T} (GeV)",
333  templateETvsET.nbinsX, &templateETvsET.binsX[0], templateETvsET.nbinsY, &templateETvsET.binsY[0]);
334  h_L1TauETvsTauET_EE_ = ibooker.book2D("L1TauETvsTauET_EE",
335  "L1 Tau E_{T} vs PFTau E_{T} (EE); PFTau E_{T} (GeV); L1 Tau E_{T} (GeV)",
336  templateETvsET.nbinsX, &templateETvsET.binsX[0], templateETvsET.nbinsY, &templateETvsET.binsY[0]);
337  h_L1TauETvsTauET_EB_EE_ = ibooker.book2D("L1TauETvsTauET_EB_EE",
338  "L1 Tau E_{T} vs PFTau E_{T} (EB+EE); PFTau E_{T} (GeV); L1 Tau E_{T} (GeV)",
339  templateETvsET.nbinsX, &templateETvsET.binsX[0], templateETvsET.nbinsY, &templateETvsET.binsY[0]);
340 
341  dqmoffline::l1t::HistDefinition templatePHIvsPHI = histDefinitions_[PlotConfig::PHIvsPHI];
342  h_L1TauPhivsTauPhi_EB_ = ibooker.book2D("L1TauPhivsTauPhi_EB",
343  "#phi_{tau}^{L1} vs #phi_{tau}^{offline} (EB); #phi_{tau}^{offline}; #phi_{tau}^{L1}",
344  templatePHIvsPHI.nbinsX, templatePHIvsPHI.xmin, templatePHIvsPHI.xmax,
345  templatePHIvsPHI.nbinsY, templatePHIvsPHI.ymin, templatePHIvsPHI.ymax);
346  h_L1TauPhivsTauPhi_EE_ = ibooker.book2D("L1TauPhivsTauPhi_EE",
347  "#phi_{tau}^{L1} vs #phi_{tau}^{offline} (EE); #phi_{tau}^{offline}; #phi_{tau}^{L1}",
348  templatePHIvsPHI.nbinsX, templatePHIvsPHI.xmin, templatePHIvsPHI.xmax,
349  templatePHIvsPHI.nbinsY, templatePHIvsPHI.ymin, templatePHIvsPHI.ymax);
350  h_L1TauPhivsTauPhi_EB_EE_ = ibooker.book2D("L1TauPhivsTauPhi_EB_EE",
351  "#phi_{tau}^{L1} vs #phi_{tau}^{offline} (EB+EE); #phi_{tau}^{offline}; #phi_{tau}^{L1}",
352  templatePHIvsPHI.nbinsX, templatePHIvsPHI.xmin, templatePHIvsPHI.xmax,
353  templatePHIvsPHI.nbinsY, templatePHIvsPHI.ymin, templatePHIvsPHI.ymax);
354 
355  h_L1TauEtavsTauEta_ = ibooker.book2D("L1TauEtavsTauEta",
356  "L1 Tau #eta vs PFTau #eta; PFTau #eta; L1 Tau #eta", 100, -3, 3, 100, -3, 3);
357 
358  // tau resolutions
359  h_resolutionTauET_EB_ = ibooker.book1D("resolutionTauET_EB",
360  "tau ET resolution (EB); (L1 Tau E_{T} - PFTau E_{T})/PFTau E_{T}; events", 50, -1, 1.5);
361  h_resolutionTauET_EE_ = ibooker.book1D("resolutionTauET_EE",
362  "tau ET resolution (EE); (L1 Tau E_{T} - PFTau E_{T})/PFTau E_{T}; events", 50, -1, 1.5);
363  h_resolutionTauET_EB_EE_ = ibooker.book1D("resolutionTauET_EB_EE",
364  "tau ET resolution (EB+EE); (L1 Tau E_{T} - PFTau E_{T})/PFTau E_{T}; events", 50, -1, 1.5);
365 
367  ibooker.book1D("resolutionTauPhi_EB",
368  "#phi_{tau} resolution (EB); #phi_{tau}^{L1} - #phi_{tau}^{offline}; events",
369  120, -0.3, 0.3);
371  ibooker.book1D("resolutionTauPhi_EE",
372  "tau #phi resolution (EE); #phi_{tau}^{L1} - #phi_{tau}^{offline}; events",
373  120, -0.3, 0.3);
375  ibooker.book1D("resolutionTauPhi_EB_EE",
376  "tau #phi resolution (EB+EE); #phi_{tau}^{L1} - #phi_{tau}^{offline}; events",
377  120, -0.3, 0.3);
378 
379  h_resolutionTauEta_ = ibooker.book1D("resolutionTauEta",
380  "tau #eta resolution (EB); L1 Tau #eta - PFTau #eta; events", 120, -0.3, 0.3);
381 
382  // tau turn-ons
384  std::vector<float> tauBins(tauEfficiencyBins_.begin(), tauEfficiencyBins_.end());
385  int nBins = tauBins.size() - 1;
386  float* tauBinArray = &(tauBins[0]);
387 
388  for (auto threshold : tauEfficiencyThresholds_) {
389  std::string str_threshold = std::to_string(int(threshold));
391  "efficiencyIsoTauET_EB_threshold_" + str_threshold + "_Num",
392  "iso tau efficiency (EB); PFTau E_{T} (GeV); events", nBins, tauBinArray);
394  "efficiencyIsoTauET_EE_threshold_" + str_threshold + "_Num",
395  "iso tau efficiency (EE); PFTau E_{T} (GeV); events", nBins, tauBinArray);
397  "efficiencyIsoTauET_EB_EE_threshold_" + str_threshold + "_Num",
398  "iso tau efficiency (EB+EE); PFTau E_{T} (GeV); events", nBins, tauBinArray);
399 
401  "efficiencyIsoTauET_EB_threshold_" + str_threshold + "_Den",
402  "iso tau efficiency (EB); PFTau E_{T} (GeV); events", nBins, tauBinArray);
404  "efficiencyIsoTauET_EE_threshold_" + str_threshold + "_Den",
405  "iso tau efficiency (EE); PFTau E_{T} (GeV); events", nBins, tauBinArray);
407  "efficiencyIsoTauET_EB_EE_threshold_" + str_threshold + "_Den",
408  "iso tau efficiency (EB+EE); PFTau E_{T} (GeV); events", nBins, tauBinArray);
409 
410 
411  //non iso
413  "efficiencyNonIsoTauET_EB_threshold_" + str_threshold + "_Num",
414  "inclusive tau efficiency (EB); PFTau E_{T} (GeV); events", nBins, tauBinArray);
416  "efficiencyNonIsoTauET_EE_threshold_" + str_threshold + "_Num",
417  "inclusive tau efficiency (EE); PFTau E_{T} (GeV); events", nBins, tauBinArray);
419  "efficiencyNonIsoTauET_EB_EE_threshold_" + str_threshold + "_Num",
420  "inclusive tau efficiency (EB+EE); PFTau E_{T} (GeV); events", nBins, tauBinArray);
421 
423  "efficiencyNonIsoTauET_EB_threshold_" + str_threshold + "_Den",
424  "inclusive tau efficiency (EB); PFTau E_{T} (GeV); events", nBins, tauBinArray);
426  "efficiencyNonIsoTauET_EE_threshold_" + str_threshold + "_Den",
427  "inclusive tau efficiency (EE); PFTau E_{T} (GeV); events", nBins, tauBinArray);
429  "efficiencyNonIsoTauET_EB_EE_threshold_" + str_threshold + "_Den",
430  "inclusive tau efficiency (EB+EE); PFTau E_{T} (GeV); events", nBins, tauBinArray);
431 
432  }
433 
434  ibooker.cd();
435 
436  return;
437 
438 }
std::vector< float > binsX
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EB_pass_
MonitorElement * h_L1TauPhivsTauPhi_EB_
std::vector< double > tauEfficiencyBins_
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EB_EE_pass_
MonitorElement * h_nVertex_
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EE_pass_
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EB_total_
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EB_pass_
std::string efficiencyFolder_
std::string histFolder_
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EB_EE_total_
MonitorElement * h_resolutionTauPhi_EB_
MonitorElement * h_L1TauPhivsTauPhi_EE_
std::vector< int > tauEfficiencyThresholds_
MonitorElement * h_resolutionTauPhi_EB_EE_
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EB_total_
MonitorElement * h_resolutionTauPhi_EE_
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EB_EE_pass_
MonitorElement * h_L1TauEtavsTauEta_
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EB_EE_total_
MonitorElement * h_resolutionTauEta_
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EE_total_
MonitorElement * h_resolutionTauET_EB_EE_
MonitorElement * h_resolutionTauET_EE_
std::map< double, MonitorElement * > h_efficiencyIsoTauET_EE_total_
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:279
std::vector< float > binsY
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:136
MonitorElement * h_tagAndProbeMass_
dqmoffline::l1t::HistDefinitions histDefinitions_
MonitorElement * h_L1TauETvsTauET_EB_EE_
MonitorElement * h_L1TauETvsTauET_EE_
MonitorElement * h_L1TauPhivsTauPhi_EB_EE_
MonitorElement * h_resolutionTauET_EB_
MonitorElement * h_L1TauETvsTauET_EB_
std::map< double, MonitorElement * > h_efficiencyNonIsoTauET_EE_pass_
double L1TTauOffline::calcDeltaPhi ( double  phi1,
double  phi2 
)
private
double L1TTauOffline::Distance ( const reco::Candidate c1,
const reco::Candidate c2 
)
private
double L1TTauOffline::DistancePhi ( const reco::Candidate c1,
const reco::Candidate c2 
)
private
void L1TTauOffline::dqmBeginRun ( const edm::Run run,
const edm::EventSetup iSetup 
)
overrideprotected

Definition at line 88 of file L1TTauOffline.cc.

References HLTConfigProvider::init(), m_hltConfig, and trigProcess_.

90 {
91  bool changed = true;
92  m_hltConfig.init(run,iSetup,trigProcess_,changed);
93 
94  edm::LogInfo("L1TTauOffline") << "L1TTauOffline::beginRun" << std::endl;
95 }
HLTConfigProvider m_hltConfig
std::string trigProcess_
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d&#39;tor
void L1TTauOffline::endLuminosityBlock ( edm::LuminosityBlock const &  lumi,
edm::EventSetup const &  eSetup 
)
overrideprotected

Definition at line 304 of file L1TTauOffline.cc.

305 {
306  edm::LogInfo("L1TTauOffline") << "L1TTauOffline::endLuminosityBlock" << std::endl;
307 }
void L1TTauOffline::endRun ( edm::Run const &  run,
edm::EventSetup const &  eSetup 
)
overrideprotected

Definition at line 312 of file L1TTauOffline.cc.

313 {
314  edm::LogInfo("L1TTauOffline") << "L1TTauOffline::endRun" << std::endl;
315 }
const reco::Vertex L1TTauOffline::getPrimaryVertex ( edm::Handle< reco::VertexCollection > const &  vertex,
edm::Handle< reco::BeamSpot > const &  beamSpot 
)
protected

Definition at line 440 of file L1TTauOffline.cc.

References reco::BeamSpot::BeamWidthX(), reco::BeamSpot::BeamWidthY(), edm::HandleBase::isValid(), reco::BeamSpot::position(), reco::Vertex::position(), impactParameterTagInfos_cfi::primaryVertex, and reco::BeamSpot::sigmaZ().

Referenced by analyze().

440  {
441 
442  reco::Vertex::Point posVtx;
443  reco::Vertex::Error errVtx;
444 
445  bool hasPrimaryVertex = false;
446 
447  if (vertex.isValid())
448  {
449  for (auto vertexIt=vertex->begin();vertexIt!=vertex->end();++vertexIt)
450  {
451  if (vertexIt->isValid() &&
452  !vertexIt->isFake())
453  {
454  posVtx = vertexIt->position();
455  errVtx = vertexIt->error();
456  hasPrimaryVertex = true;
457  break;
458  }
459  }
460  }
461 
462  if ( !hasPrimaryVertex ) {
463  posVtx = beamSpot->position();
464  errVtx(0,0) = beamSpot->BeamWidthX();
465  errVtx(1,1) = beamSpot->BeamWidthY();
466  errVtx(2,2) = beamSpot->sigmaZ();
467  }
468 
469  const reco::Vertex primaryVertex(posVtx,errVtx);
470 
471  return primaryVertex;
472 }
math::Error< dimension >::type Error
covariance error matrix (3x3)
Definition: Vertex.h:43
math::XYZPoint Point
point in the space
Definition: Vertex.h:39
double BeamWidthX() const
beam width X
Definition: BeamSpot.h:86
bool isValid() const
Definition: HandleBase.h:74
double sigmaZ() const
sigma z
Definition: BeamSpot.h:80
double BeamWidthY() const
beam width Y
Definition: BeamSpot.h:88
const Point & position() const
position
Definition: BeamSpot.h:62
void L1TTauOffline::getProbeTaus ( const edm::Event e,
edm::Handle< reco::PFTauCollection > const &  taus,
edm::Handle< reco::MuonCollection > const &  muons,
const reco::Vertex vertex 
)
protected

Definition at line 565 of file L1TTauOffline.cc.

References AntiEleInputTag_, AntiMuInputTag_, comb3TInputTag_, DecayModeFindingInputTag_, DEFINE_FWK_MODULE, PVValHelper::eta, edm::Event::getByToken(), edm::HandleBase::isValid(), m_ProbeTaus, m_TightMuons, phi, and EnergyCorrector::pt.

Referenced by analyze().

565  {
566 
567  m_ProbeTaus.clear();
568 
570  iEvent.getByToken(AntiMuInputTag_, antimu);
571  if(!antimu.isValid())
572  {
573  edm::LogWarning("L1TTauOffline") << "invalid collection: reco::PFTauDiscriminator " << std::endl;
574  return;
575  }
576 
578  iEvent.getByToken(DecayModeFindingInputTag_, dmf);
579  if(!dmf.isValid())
580  {
581  edm::LogWarning("L1TTauOffline") << "invalid collection: reco::PFTauDiscriminator " << std::endl;
582  return;
583  }
584 
586  iEvent.getByToken(AntiEleInputTag_, antiele);
587  if(!antiele.isValid())
588  {
589  edm::LogWarning("L1TTauOffline") << "invalid collection: reco::PFTauDiscriminator " << std::endl;
590  return;
591  }
592 
594  iEvent.getByToken(comb3TInputTag_, comb3T);
595  if(!comb3T.isValid())
596  {
597  edm::LogWarning("L1TTauOffline") << "invalid collection: reco::PFTauDiscriminator " << std::endl;
598  return;
599  }
600 
601  if (!m_TightMuons.empty()){
602  TLorentzVector mymu;
603  mymu.SetPtEtaPhiE(m_TightMuons[0]->pt(),m_TightMuons[0]->eta(),m_TightMuons[0]->phi(),m_TightMuons[0]->energy());
604  int iTau=0;
605  for(auto tauIt = taus->begin(); tauIt!=taus->end(); ++tauIt,++iTau) {
606  reco::PFTauRef tauCandidate(taus, iTau);
607  TLorentzVector mytau;
608  mytau.SetPtEtaPhiE(tauIt->pt(),tauIt->eta(),tauIt->phi(),tauIt->energy());
609 
610  if (fabs(tauIt->charge())==1 && fabs(tauIt->eta())< 2.1 && tauIt->pt()>20 && (*antimu)[tauCandidate] > 0.5 && (*antiele)[tauCandidate] > 0.5 && (*dmf)[tauCandidate] > 0.5 && (*comb3T)[tauCandidate] > 0.5) {
611  if (mymu.DeltaR(mytau)>0.5 && (mymu+mytau).M()>40 && (mymu+mytau).M()<80 && m_TightMuons[0]->charge()*tauIt->charge()<0){
612  m_ProbeTaus.push_back(&(*tauIt));
613  }
614  }
615  }
616  }
617 }
edm::EDGetTokenT< reco::PFTauDiscriminator > comb3TInputTag_
std::vector< const reco::PFTau * > m_ProbeTaus
int iEvent
Definition: GenABIO.cc:230
bool isValid() const
Definition: HandleBase.h:74
edm::EDGetTokenT< reco::PFTauDiscriminator > AntiMuInputTag_
std::vector< const reco::Muon * > m_TightMuons
edm::EDGetTokenT< reco::PFTauDiscriminator > DecayModeFindingInputTag_
edm::EDGetTokenT< reco::PFTauDiscriminator > AntiEleInputTag_
void L1TTauOffline::getTauL1tPairs ( edm::Handle< l1t::TauBxCollection > const &  l1tCands)
protected

Definition at line 506 of file L1TTauOffline.cc.

References BXVector< T >::begin(), TauL1TPair::dR(), BXVector< T >::end(), TauL1TPair::l1tPt(), m_MaxL1tTauDR, m_ProbeTaus, m_TauL1tPairs, BXVector< T >::size(), and metsig::tau.

Referenced by analyze().

506  {
507 
508  m_TauL1tPairs.clear();
509 
510  vector<l1t::Tau> l1tContainer;
511  l1tContainer.reserve(l1tCands->size()+1);
512 
513  for (auto tau = l1tCands->begin(0); tau != l1tCands->end(0); ++tau) {
514  l1tContainer.push_back(*tau);
515  }
516 
517  for (auto probeTauIt = m_ProbeTaus.begin(); probeTauIt!=m_ProbeTaus.end(); ++probeTauIt) {
518 
519  TauL1TPair pairBestCand((*probeTauIt),nullptr);
520 
521  for(auto l1tIt = l1tContainer.begin() ; l1tIt!=l1tContainer.end(); ++l1tIt) {
522 
523  TauL1TPair pairTmpCand((*probeTauIt),&(*l1tIt));
524 
525  if (pairTmpCand.dR() < m_MaxL1tTauDR && pairTmpCand.l1tPt() > pairBestCand.l1tPt())
526  pairBestCand = pairTmpCand;
527 
528  }
529 
530  m_TauL1tPairs.push_back(pairBestCand);
531 
532  }
533 
534 }
const_iterator end(int bx) const
unsigned size(int bx) const
std::vector< TauL1TPair > m_TauL1tPairs
std::vector< const reco::PFTau * > m_ProbeTaus
const_iterator begin(int bx) const
void L1TTauOffline::getTightMuons ( edm::Handle< reco::MuonCollection > const &  muons,
edm::Handle< reco::PFMETCollection > const &  mets,
const reco::Vertex vertex,
edm::Handle< trigger::TriggerEvent > const &  trigEvent 
)
protected

Definition at line 536 of file L1TTauOffline.cc.

References muon::isLooseMuon(), m_TightMuons, matchHlt(), SiStripPI::max, TtSemiLepEvtBuilder_cfi::mt, funct::pow(), reco::LeafCandidate::pt(), reco::LeafCandidate::px(), reco::LeafCandidate::py(), and mathSSE::sqrt().

Referenced by analyze().

536  {
537 
538  m_TightMuons.clear();
539 
540  const reco::PFMET *pfmet=nullptr;
541  pfmet=&(mets->front());
542 
543  int nb_mu=0;
544 
545  for(auto muonIt2 = muons->begin(); muonIt2!=muons->end(); ++muonIt2) {
546  if (fabs(muonIt2->eta())< 2.4 && muonIt2->pt()>10 && muon::isLooseMuon((*muonIt2)) && (muonIt2->pfIsolationR04().sumChargedHadronPt+max(muonIt2->pfIsolationR04().sumNeutralHadronEt+muonIt2->pfIsolationR04().sumPhotonEt-0.5*muonIt2->pfIsolationR04().sumPUPt,0.0))/muonIt2->pt()<0.3) {
547  ++nb_mu;
548  }
549  }
550  bool foundTightMu=false;
551  for(auto muonIt = muons->begin(); muonIt!=muons->end(); ++muonIt) {
552  if (!matchHlt(trigEvent,&(*muonIt))) continue;
553  float muiso=(muonIt->pfIsolationR04().sumChargedHadronPt+max(muonIt->pfIsolationR04().sumNeutralHadronEt+muonIt->pfIsolationR04().sumPhotonEt-0.5*muonIt->pfIsolationR04().sumPUPt,0.0))/muonIt->pt();
554 
555  if (muiso<0.1 && nb_mu<2 && !foundTightMu && fabs(muonIt->eta())< 2.1 && muonIt->pt()>24 && muon::isLooseMuon((*muonIt))) {
556  float mt=sqrt(pow(muonIt->pt() + pfmet->pt(), 2) - pow(muonIt->px() + pfmet->px(),2) - pow(muonIt->py() + pfmet->py(), 2));
557  if (mt<30){
558  m_TightMuons.push_back(&(*muonIt));
559  foundTightMu=true;
560  }
561  }
562  }
563 }
double px() const final
x coordinate of momentum vector
double pt() const final
transverse momentum
bool isLooseMuon(const reco::Muon &)
T sqrt(T t)
Definition: SSEVec.h:18
std::vector< const reco::Muon * > m_TightMuons
double py() const final
y coordinate of momentum vector
bool matchHlt(edm::Handle< trigger::TriggerEvent > const &triggerEvent, const reco::Muon *muon)
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
bool L1TTauOffline::matchHlt ( edm::Handle< trigger::TriggerEvent > const &  triggerEvent,
const reco::Muon muon 
)
protected

Definition at line 474 of file L1TTauOffline.cc.

References deltaR(), trigger::TriggerEvent::filterIds(), trigger::TriggerEvent::filterIndex(), trigger::TriggerEvent::filterKeys(), trigger::TriggerEvent::getObjects(), m_hltConfig, m_MaxHltTauDR, m_trigIndices, HLTConfigProvider::moduleLabels(), HLTConfigProvider::size(), TriggerAnalyzer::trigObjs, and trigProcess_.

Referenced by getTightMuons().

474  {
475 
476 
477  double matchDeltaR = 9999;
478 
480 
481  for(auto trigIndexIt = m_trigIndices.begin(); trigIndexIt!=m_trigIndices.end(); ++trigIndexIt) {
482 
483  const vector<string> moduleLabels(m_hltConfig.moduleLabels(*trigIndexIt));
484  const unsigned moduleIndex = m_hltConfig.size((*trigIndexIt))-2;
485 
486  const unsigned hltFilterIndex = triggerEvent->filterIndex(InputTag(moduleLabels[moduleIndex],"",trigProcess_));
487 
488  if (hltFilterIndex < triggerEvent->sizeFilters()) {
489  const Keys triggerKeys(triggerEvent->filterKeys(hltFilterIndex));
490  const Vids triggerVids(triggerEvent->filterIds(hltFilterIndex));
491 
492  const unsigned nTriggers = triggerVids.size();
493  for (size_t iTrig = 0; iTrig < nTriggers; ++iTrig) {
494  const TriggerObject trigObject = trigObjs[triggerKeys[iTrig]];
495 
496  double dRtmp = deltaR((*muon),trigObject);
497  if (dRtmp < matchDeltaR) matchDeltaR = dRtmp;
498  }
499  }
500  }
501 
502  return (matchDeltaR < m_MaxHltTauDR);
503 
504 }
unsigned int size() const
number of trigger paths in trigger table
std::vector< int > m_trigIndices
const Keys & filterKeys(trigger::size_type index) const
Definition: TriggerEvent.h:111
trigger::size_type filterIndex(const edm::InputTag &filterTag) const
find index of filter in data-member vector from filter tag
Definition: TriggerEvent.h:123
HLTConfigProvider m_hltConfig
const Vids & filterIds(trigger::size_type index) const
Definition: TriggerEvent.h:110
const TriggerObjectCollection & getObjects() const
Definition: TriggerEvent.h:98
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
Definition: TriggerObject.h:81
std::string trigProcess_
std::vector< size_type > Keys
std::vector< int > Vids

Member Data Documentation

edm::EDGetTokenT<reco::PFTauDiscriminator> L1TTauOffline::AntiEleInputTag_
private

Definition at line 134 of file L1TTauOffline.h.

Referenced by getProbeTaus().

edm::EDGetTokenT<reco::PFTauDiscriminator> L1TTauOffline::AntiMuInputTag_
private

Definition at line 133 of file L1TTauOffline.h.

Referenced by getProbeTaus().

edm::EDGetTokenT<reco::BeamSpot> L1TTauOffline::BsInputTag_
private

Definition at line 140 of file L1TTauOffline.h.

Referenced by analyze().

edm::EDGetTokenT<reco::PFTauDiscriminator> L1TTauOffline::comb3TInputTag_
private

Definition at line 136 of file L1TTauOffline.h.

Referenced by getProbeTaus().

edm::EDGetTokenT<reco::PFTauDiscriminator> L1TTauOffline::DecayModeFindingInputTag_
private

Definition at line 135 of file L1TTauOffline.h.

Referenced by getProbeTaus().

std::string L1TTauOffline::efficiencyFolder_
private

Definition at line 146 of file L1TTauOffline.h.

Referenced by bookTauHistos().

std::map<double, MonitorElement*> L1TTauOffline::h_efficiencyIsoTauET_EB_EE_pass_
private

Definition at line 200 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

std::map<double, MonitorElement*> L1TTauOffline::h_efficiencyIsoTauET_EB_EE_total_
private

Definition at line 210 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

std::map<double, MonitorElement*> L1TTauOffline::h_efficiencyIsoTauET_EB_pass_
private

Definition at line 198 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

std::map<double, MonitorElement*> L1TTauOffline::h_efficiencyIsoTauET_EB_total_
private

Definition at line 208 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

std::map<double, MonitorElement*> L1TTauOffline::h_efficiencyIsoTauET_EE_pass_
private

Definition at line 199 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

std::map<double, MonitorElement*> L1TTauOffline::h_efficiencyIsoTauET_EE_total_
private

Definition at line 209 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

std::map<double, MonitorElement*> L1TTauOffline::h_efficiencyNonIsoTauET_EB_EE_pass_
private

Definition at line 204 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

std::map<double, MonitorElement*> L1TTauOffline::h_efficiencyNonIsoTauET_EB_EE_total_
private

Definition at line 214 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

std::map<double, MonitorElement*> L1TTauOffline::h_efficiencyNonIsoTauET_EB_pass_
private

Definition at line 202 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

std::map<double, MonitorElement*> L1TTauOffline::h_efficiencyNonIsoTauET_EB_total_
private

Definition at line 212 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

std::map<double, MonitorElement*> L1TTauOffline::h_efficiencyNonIsoTauET_EE_pass_
private

Definition at line 203 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

std::map<double, MonitorElement*> L1TTauOffline::h_efficiencyNonIsoTauET_EE_total_
private

Definition at line 213 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_L1TauEtavsTauEta_
private

Definition at line 184 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_L1TauETvsTauET_EB_
private

Definition at line 176 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_L1TauETvsTauET_EB_EE_
private

Definition at line 178 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_L1TauETvsTauET_EE_
private

Definition at line 177 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_L1TauPhivsTauPhi_EB_
private

Definition at line 180 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_L1TauPhivsTauPhi_EB_EE_
private

Definition at line 182 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_L1TauPhivsTauPhi_EE_
private

Definition at line 181 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_nVertex_
private

Definition at line 172 of file L1TTauOffline.h.

Referenced by bookTauHistos().

MonitorElement* L1TTauOffline::h_resolutionTauET_EB_
private

Definition at line 187 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_resolutionTauET_EB_EE_
private

Definition at line 189 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_resolutionTauET_EE_
private

Definition at line 188 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_resolutionTauEta_
private

Definition at line 195 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_resolutionTauPhi_EB_
private

Definition at line 191 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_resolutionTauPhi_EB_EE_
private

Definition at line 193 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_resolutionTauPhi_EE_
private

Definition at line 192 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

MonitorElement* L1TTauOffline::h_tagAndProbeMass_
private

Definition at line 173 of file L1TTauOffline.h.

Referenced by bookTauHistos().

dqmoffline::l1t::HistDefinitions L1TTauOffline::histDefinitions_
private

Definition at line 150 of file L1TTauOffline.h.

Referenced by bookTauHistos().

std::string L1TTauOffline::histFolder_
private

Definition at line 145 of file L1TTauOffline.h.

Referenced by bookTauHistos().

edm::ESHandle<MagneticField> L1TTauOffline::m_BField
private

Definition at line 127 of file L1TTauOffline.h.

Referenced by analyze().

HLTConfigProvider L1TTauOffline::m_hltConfig
private

Definition at line 125 of file L1TTauOffline.h.

Referenced by bookHistograms(), dqmBeginRun(), and matchHlt().

BXVector<l1t::Tau> L1TTauOffline::m_L1tL1tTaus
private

Definition at line 160 of file L1TTauOffline.h.

std::vector<int> L1TTauOffline::m_L1tPtCuts
private

Definition at line 163 of file L1TTauOffline.h.

std::vector<l1t::TauBxCollection> L1TTauOffline::m_L1tTaus
private

Definition at line 158 of file L1TTauOffline.h.

float L1TTauOffline::m_MaxHltTauDR
private

Definition at line 167 of file L1TTauOffline.h.

Referenced by analyze(), and matchHlt().

float L1TTauOffline::m_MaxL1tTauDR
private

Definition at line 166 of file L1TTauOffline.h.

Referenced by analyze(), and getTauL1tPairs().

float L1TTauOffline::m_MaxTauEta
private

Definition at line 165 of file L1TTauOffline.h.

Referenced by analyze().

std::vector<const reco::PFTau*> L1TTauOffline::m_ProbeTaus
private

Definition at line 153 of file L1TTauOffline.h.

Referenced by getProbeTaus(), and getTauL1tPairs().

edm::ESHandle<Propagator> L1TTauOffline::m_propagatorAlong
private

Definition at line 128 of file L1TTauOffline.h.

edm::ESHandle<Propagator> L1TTauOffline::m_propagatorOpposite
private

Definition at line 129 of file L1TTauOffline.h.

std::vector<reco::PFTau> L1TTauOffline::m_RecoRecoTaus
private

Definition at line 159 of file L1TTauOffline.h.

std::vector<reco::PFTauCollection> L1TTauOffline::m_RecoTaus
private

Definition at line 157 of file L1TTauOffline.h.

std::vector<TauL1TPair> L1TTauOffline::m_TauL1tPairs
private

Definition at line 154 of file L1TTauOffline.h.

Referenced by analyze(), and getTauL1tPairs().

std::vector<const reco::Muon*> L1TTauOffline::m_TightMuons
private

Definition at line 152 of file L1TTauOffline.h.

Referenced by getProbeTaus(), and getTightMuons().

std::vector<int> L1TTauOffline::m_trigIndices
private

Definition at line 169 of file L1TTauOffline.h.

Referenced by bookHistograms(), and matchHlt().

edm::EDGetTokenT<reco::PFMETCollection> L1TTauOffline::MetInputTag_
private

Definition at line 138 of file L1TTauOffline.h.

Referenced by analyze().

edm::EDGetTokenT<reco::MuonCollection> L1TTauOffline::MuonInputTag_
private

Definition at line 137 of file L1TTauOffline.h.

Referenced by analyze().

const std::map< std::string, unsigned int > L1TTauOffline::PlotConfigNames
static
Initial value:
= {
{"nVertex", PlotConfig::nVertex},
{"ETvsET", PlotConfig::ETvsET},
{"PHIvsPHI", PlotConfig::PHIvsPHI}
}

Definition at line 95 of file L1TTauOffline.h.

Referenced by TauL1TPair::dR().

math::XYZPoint L1TTauOffline::PVPoint_
private

Definition at line 123 of file L1TTauOffline.h.

edm::EDGetTokenT<l1t::TauBxCollection> L1TTauOffline::stage2CaloLayer2TauToken_
private

Definition at line 147 of file L1TTauOffline.h.

Referenced by analyze().

std::vector<double> L1TTauOffline::tauEfficiencyBins_
private

Definition at line 149 of file L1TTauOffline.h.

Referenced by bookTauHistos().

std::vector<int> L1TTauOffline::tauEfficiencyThresholds_
private

Definition at line 148 of file L1TTauOffline.h.

Referenced by analyze(), and bookTauHistos().

edm::EDGetTokenT<reco::PFTauCollection> L1TTauOffline::theTauCollection_
private

Definition at line 132 of file L1TTauOffline.h.

Referenced by analyze().

edm::EDGetTokenT<trigger::TriggerEvent> L1TTauOffline::triggerEvent_
private

Definition at line 141 of file L1TTauOffline.h.

Referenced by analyze().

std::vector<std::string> L1TTauOffline::triggerPath_
private

Definition at line 144 of file L1TTauOffline.h.

Referenced by bookHistograms().

edm::EDGetTokenT<edm::TriggerResults> L1TTauOffline::triggerResults_
private

Definition at line 143 of file L1TTauOffline.h.

Referenced by analyze().

std::string L1TTauOffline::trigProcess_
private

Definition at line 142 of file L1TTauOffline.h.

Referenced by dqmBeginRun(), and matchHlt().

edm::EDGetTokenT<reco::VertexCollection> L1TTauOffline::VtxInputTag_
private

Definition at line 139 of file L1TTauOffline.h.

Referenced by analyze().