CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TauTagValidation.h
Go to the documentation of this file.
1 #ifndef TauTagValidation_h
2 #define TauTagValidation_h
3 
4 // -*- C++ -*-
5 //
6 // Package: TauTagValidation
7 // Class: TauTagValidation
8 //
9 /* *\class TauTagValidation TauTagValidation.cc
10 
11  Description: EDAnalyzer to validate the Collections from the ConeIsolation Producer
12  It is supposed to be used for Offline Tau Reconstrction, so PrimaryVertex should be used.
13  Implementation:
14 
15 */
16 // Original Author: Ricardo Vasquez Sierra On August 29, 2007
17 // user include files
18 
19 
34 
36 
37 // Math
38 #include "Math/GenVector/VectorUtil.h"
39 #include "Math/GenVector/PxPyPzE4D.h"
40 #include "TLorentzVector.h"
41 #include "TH1D.h"
42 #include "TH1.h"
43 #include "TH1F.h"
44 #include <vector>
45 #include <string>
46 
47 // Include DQM core
51 
53 typedef std::vector<LV> LVCollection;
54 
55 struct hinfo{
56  int nbins;
57  double min;
58  double max;
59  hinfo(int n, double m, double M){
60  nbins = n;
61  min = m;
62  max = M;
63  }
65  nbins = config.getParameter<int>("nbins");
66  min = config.getParameter<double>("min");
67  max = config.getParameter<double>("max");
68  }
69 };
70 
71 // class declaration
73 
74 public:
75  explicit TauTagValidation(const edm::ParameterSet&);
77 
78  void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
79  void dqmBeginRun(const edm::Run&, const edm::EventSetup&);
80  virtual void analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup);
81 
82 private:
86  double getSumPt(const std::vector<edm::Ptr<reco::PFCandidate> > & candidates);
88  bool stripDiscriminatorLabel(const std::string& discriminatorLabel, std::string & newLabel);
89 
93 
96 
97  // Matching criteria
100  double TauPtCut_;
101 
102  //optional: filter candidates by passed cuts
104 
105  // output histograms
107 
108  // Reference Collection
113  std::vector <edm::EDGetTokenT<reco::PFTauDiscriminator> > currentDiscriminatorToken_;
115 
116  // In case you need to distinguish the output file
118 
119  // Reconstructed product of interest
122 
123  // std::vector<std::string> TauProducerDiscriminators_;
124  // std::vector<double> TauDiscriminatorCuts_;
125 
126  std::vector< edm::ParameterSet > discriminators_;
127 
128  // CMSSW version
129 
132 
133  std::map<std::string, MonitorElement *> ptTauVisibleMap;
134  std::map<std::string, MonitorElement *> etaTauVisibleMap;
135  std::map<std::string, MonitorElement *> phiTauVisibleMap;
136  std::map<std::string, MonitorElement *> pileupTauVisibleMap;
137  std::map<std::string, MonitorElement *> plotMap_;
138 
139  // All the extra MonitorElements that we would like to add for each Tau Tagging step
140  // First for the PFTaus
141  // Number of PFTau Candidates with a leading charged hadron in it (within a cone of 0.1 avound the jet axis and a minimum pt of 6 GeV)
142 
149 
150  // Isolated PFTau with a Leading charged hadron with no Charged Hadrons inside the isolation annulus
151 
157 
158  // Isolated PFTau with a Leading charge hadron with no Charged Hadron inside the isolation annulus with no Ecal/Gamma candidates in the isolation annulus
159 
164 
165 
166  // Second for the CaloTaus
167  // Number of CaloJets with a Leading Track (within a cone of 0.1 around the jet axis and a minimum pt of 5. GeV)
168 
173 
174  // Track Isolated CaloTau with a Leading Track
175 
179 
180  // EM Isolated CaloTau with a Leading with no tracks in the Isolation Annulus
181 
184 
185  // book-keeping variables
187 
188  protected:
189 
191 
192  private:
194 
195 };
196 
197 #endif
std::map< std::string, MonitorElement * > ptTauVisibleMap
T getParameter(std::string const &) const
MonitorElement * nPFJet_LeadingChargedHadron_ChargedHadronsIsolAnnulus_
MonitorElement * nCaloJet_LeadingTrack_isolationTracks_
std::vector< LV > LVCollection
std::map< std::string, MonitorElement * > plotMap_
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > XYZTLorentzVectorD
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:14
double max
MonitorElement * nPFJet_LeadingChargedHadron_NeutralHadronsIsolAnnulus_
MonitorElement * nCaloJet_LeadingTrack_isolationECALhitsEtSum_
MonitorElement * nEMIsolated_signalTracksInvariantMass_
edm::EDGetTokenT< reco::PFTauCollection > tauProducerInputTagToken_
edm::InputTag TauProducerInputTag_
MonitorElement * nTrackIsolated_signalTracksInvariantMass_
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
std::string refCollection_
MonitorElement * nTrackIsolated_isolationECALhitsEtSum_
std::vector< edm::EDGetTokenT< reco::PFTauDiscriminator > > currentDiscriminatorToken_
std::string outPutFile_
MonitorElement * nPFJet_LeadingChargedHadron_GammasSignal_
std::vector< edm::ParameterSet > discriminators_
MonitorElement * nPFJet_LeadingChargedHadron_ChargedHadronsSignal_
math::XYZTLorentzVectorD LV
hinfo(int n, double m, double M)
int iEvent
Definition: GenABIO.cc:230
std::string tversion
GenericTriggerEventFlag * genericTriggerEventFlag_
generic access to dynamic trigger table
MonitorElement * nIsolated_NoChargedNoGammas_ChargedHadronsSignal_
std::string dataType_
What&#39;s the reference for the Validation Leptons or Jets.
std::string TauProducer_
double getSumPt(const std::vector< edm::Ptr< reco::PFCandidate > > &candidates)
sum the transversal momentum of all candidates
MonitorElement * nIsolated_NoChargedHadrons_GammasSignal_
MonitorElement * nIsolated_NoChargedHadrons_GammasIsolAnnulus_
std::string genCuts_
virtual void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup)
std::map< std::string, MonitorElement * > etaTauVisibleMap
MonitorElement * nIsolated_NoChargedNoGammas_NeutralHadronsSignal_
double min
MonitorElement * nIsolated_NoChargedNoGammas_NeutralHadronsIsolAnnulus_
MonitorElement * nIsolated_NoChargedHadrons_NeutralHadronsSignal_
edm::EDGetTokenT< edm::View< reco::Candidate > > refCollectionInputTagToken_
MonitorElement * nTrackIsolated_signalTracks_
std::string extensionName_
MonitorElement * nIsolated_NoChargedHadrons_NeutralHadronsIsolAnnulus_
std::string moduleLabel_
label of the current module
MonitorElement * nEMIsolated_signalTracks_
edm::InputTag refCollectionInputTag_
bool stripDiscriminatorLabel(const std::string &discriminatorLabel, std::string &newLabel)
get rid of redundant parts to shorten the label
edm::InputTag PrimaryVertexCollection_
void dqmBeginRun(const edm::Run &, const edm::EventSetup &)
MonitorElement * nIsolated_NoChargedHadrons_ChargedHadronsSignal_
MonitorElement * nCaloJet_LeadingTrack_signalTracksInvariantMass_
std::map< std::string, MonitorElement * > phiTauVisibleMap
MonitorElement * nPFJet_LeadingChargedHadron_NeutralHadronsSignal_
TauTagValidation(const edm::ParameterSet &)
edm::ParameterSet histoSettings_
MonitorElement * nPFJet_LeadingChargedHadron_GammasIsolAnnulus_
std::string recoCuts_
std::map< std::string, MonitorElement * > pileupTauVisibleMap
MonitorElement * nIsolated_NoChargedNoGammas_GammasSignal_
PFBenchmarkAlgo * algo_
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
hinfo(const edm::ParameterSet &config)
edm::EDGetTokenT< reco::VertexCollection > primaryVertexCollectionToken_
Definition: Run.h:43
MonitorElement * nCaloJet_LeadingTrack_signalTracks_