CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PFTauTest.cc
Go to the documentation of this file.
6 
9 //#include "DataFormats/MuonReco/interface/MuonFwd.h"
11 
14 
15 //#include "Math/GenVector/VectorUtil.h"
16 #include "Math/GenVector/PxPyPzE4D.h"
17 
18 #include <memory>
19 #include <string>
20 #include <iostream>
21 
22 #include <TROOT.h>
23 #include <TSystem.h>
24 #include <TFile.h>
25 #include <TCanvas.h>
26 #include <TH1.h>
27 #include <TH2.h>
28 #include <TDirectory.h>
29 
30 #include "FWCore/ServiceRegistry/interface/Service.h" // Framework services
31 //#include "PhysicsTools/UtilAlgos/interface/TFileService.h" // Framework service for histograms
32 //#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
33 #include <Math/GenVector/VectorUtil.h>
34 
35 // get rid of this damn TLorentzVector!
36 //#include "DataFormats/Candidate/interface/Particle.h"
38 //#include "TLorentzVector.h"
39 
40 // Include DQM core
43 
44 using namespace edm;
45 using namespace reco;
46 using namespace std;
47 
49 
50 class PFTauHLTTest : public EDAnalyzer {
51 public:
52  explicit PFTauHLTTest(const ParameterSet&);
54  virtual void analyze(const Event& iEvent,const EventSetup& iSetup);
55  virtual void beginJob();
56  virtual void endJob();
57 private:
58 
60 
61  string PFTauProducer_, MatchedPFTauProducer_,PFJetProducer_;
62 
63 
64  int nEvent;
71 
72  // files
73  std::string outPutFile_;
74  TFile *_file;
75  TDirectory *_dir;
76 
77  // Efficiency plots
92 };
93 
95  PFTauProducer_ = iConfig.getParameter<string>("PFTauProducer");
96  PFJetProducer_ = iConfig.getParameter<string>("PFJetProducer");
97  MatchedPFTauProducer_ = iConfig.getParameter<string>("MatchedPFTauProducer");
98 
99  nEvent=0;
100 
101  nTauMatchPFTau=0;
102  nElecMatchPFTau=0;
103  nTauElecPreID=0;
104  nElecElecPreID=0;
105  nTauNonElecPreID=0;
106  nElecNonElecPreID=0;
107 
108  outPutFile_ = "PFTauTest.root";
109 }
111  dbeTau = &*edm::Service<DQMStore>();
112  dbeTau->setCurrentFolder("RecoPFTau");
113 
114  // Book histograms
115  h_PFTau_Eta_ = dbeTau->book1D("PFTau_Eta","PFTau_Eta",50,0.,5.0);
116  h_MatchedPFTau_Eta_ = dbeTau->book1D("MatchedPFTau_Eta","MatchedPFTau_Eta",50,0.,5.0);
117  h_PFTau_Phi_ = dbeTau->book1D("PFTau_Phi","PFTau_Phi",50,-3.15,3.15);
118  h_PFTau_Pt_ = dbeTau->book1D("PFTau_Pt","PFTau_Pt",50,0.,50.);
119  h_Tau_Pt_ = dbeTau->book1D("Tau_Pt","Tau_Pt",50,0.,50.);
120  h_MatchedPFTau_Pt_ = dbeTau->book1D("MatchedPFTau_Pt","MatchedPFTau_Pt",50,0.,50.);
121  h_PFTau_SignalChargedHadron_ = dbeTau->book1D("PFTau_NumberChargedHadrons","PFTau_NumberChargedHadrons",10,0.,10.);
122  h_PFTau_SignalNeutralHadron_ = dbeTau->book1D("PFTau_NumberNeutralHadrons","PFTau_NumberNeutralHadrons",10,0.,10.);
123  h_PFTau_LeadingTrackPt_ = dbeTau->book1D("PFTau_LeadingTrackPt","PFTau_LeadingTrackPt",10,0.,10.);
124  h_PFTau_SignalTracks_ = dbeTau->book1D("PFTau_NumberTracks","PFTau_NumberTracks",10,0.,10.);
125  h_PFTau_SignalGammas_= dbeTau->book1D("PFTau_NumberPhotons","PFTau_NumberPhotons",10,0.,10.);
126 
127  h_PFTauEt_MCTauEt_ = dbeTau->book2D("PFTauEt_MCTauEt","PFTau_Et Vs MCTau_Et", 50,0.,50.,50,0.,50.);
128 
129  h_NumberOfJets_ = dbeTau->book1D("NumberOfJets","NumberOfJets",20,0.,20.);
130 
131 }
132 
133 
134 void PFTauHLTTest::analyze(const Event& iEvent, const EventSetup& iSetup){
135  //cout<<"********"<<endl;
136  //cout<<"Event number "<<nEvent++<<endl;
137 
138 
139 
141 
142 
143 
144  Handle<PFTauCollection> thePFTauHandle;
145  iEvent.getByLabel(PFTauProducer_,thePFTauHandle);
146 
147  Handle<PFTauCollection> thePFJetHandle;
148  iEvent.getByLabel(PFJetProducer_,thePFJetHandle);
149  double numberOfJets = thePFJetHandle->size()*1.;
150  h_NumberOfJets_->Fill(numberOfJets);
151 
152  Handle<View<Candidate> > theMatchedPFTauHandle;
153  iEvent.getByLabel(MatchedPFTauProducer_,theMatchedPFTauHandle);
154 
155  //int n = 0;
156  // Tau Loop
157  for (unsigned int iPFTau=0;iPFTau<thePFTauHandle->size();iPFTau++) {
158  const PFTauRef thePFTau(thePFTauHandle, iPFTau);
159  if(thePFTau->pt() > 0.){
160  h_PFTau_Eta_->Fill(fabs((*thePFTau).eta()));
161  h_PFTau_Pt_->Fill((*thePFTau).pt());
162  h_PFTau_Phi_->Fill((*thePFTau).phi());
163  }
164  bool matched = false;
165  //loop over the matched jets
166  for (View<Candidate>::size_type iMPFTau=0;iMPFTau<theMatchedPFTauHandle->size();iMPFTau++) {
167  const Candidate *theMPFTau = &(*theMatchedPFTauHandle)[iMPFTau];
168  double deltaR = ROOT::Math::VectorUtil::DeltaR(thePFTau->p4().Vect(), (theMPFTau->p4()).Vect());
169  if(deltaR < 0.5) {
170  matched = true;
171  h_PFTauEt_MCTauEt_->Fill(theMPFTau->pt(),thePFTau->pt());
172  break;
173  }
174 
175  }
176 
177  if(matched) {
178  h_MatchedPFTau_Pt_->Fill((*thePFTau).pt());
179  h_MatchedPFTau_Eta_->Fill(fabs((*thePFTau).eta()));
180  cout <<"Particle type "<<(*thePFTau).leadPFChargedHadrCand()->particleId()<<endl;
181  if((*thePFTau).hasMuonReference()){
182  MuonRef muonref = (*thePFTau).leadPFChargedHadrCand()->muonRef();
183  cout <<"Muon segments " <<muonref->numberOfMatches()<<endl;
184  }
185  }
186  if(!matched){
187  h_PFTau_SignalChargedHadron_->Fill((*thePFTau).signalPFChargedHadrCands().size()*1.);
188  h_PFTau_SignalNeutralHadron_->Fill((*thePFTau).signalPFNeutrHadrCands().size()*1.);
189  if((*thePFTau).leadPFChargedHadrCand().isNonnull())
190  h_PFTau_LeadingTrackPt_->Fill((*thePFTau).leadPFChargedHadrCand()->pt());
191 
192  h_PFTau_SignalTracks_->Fill((*thePFTau).signalTracks().size()*1.);
193  h_PFTau_SignalGammas_->Fill((*thePFTau).signalPFGammaCands().size()*1.);
194  }
195 
196  }
197 
198  for (View<Candidate>::size_type iMPFTau=0;iMPFTau<theMatchedPFTauHandle->size();iMPFTau++) {
199  const Candidate *theMPFTau = &(*theMatchedPFTauHandle)[iMPFTau];
200  h_Tau_Pt_->Fill(theMPFTau->pt());
201  }
202 
203 }
204 
206  if (!outPutFile_.empty() && &*edm::Service<DQMStore>()) dbeTau->save (outPutFile_);
207 }
208 
209 
T getParameter(std::string const &) const
int nElecMatchPFTau
Definition: PFTauTest.cc:66
string PFTauProducer_
Definition: PFTauTest.cc:61
virtual double pt() const =0
transverse momentum
MonitorElement * h_MatchedPFTau_Pt_
Definition: PFTauTest.cc:84
DeltaR< LorentzVector > deltaRComputer_
Definition: PFTauTest.cc:59
MonitorElement * h_PFTau_SignalTracks_
Definition: PFTauTest.cc:88
std::string outPutFile_
Definition: PFTauTest.cc:73
int nTauElecPreID
Definition: PFTauTest.cc:67
int nTauNonElecPreID
Definition: PFTauTest.cc:69
MonitorElement * h_PFTau_SignalGammas_
Definition: PFTauTest.cc:89
MonitorElement * h_PFTau_Eta_
Definition: PFTauTest.cc:78
DEFINE_FWK_MODULE(HiMixingModule)
MonitorElement * h_PFTau_SignalNeutralHadron_
Definition: PFTauTest.cc:86
int nEvent
Definition: myFastSimVal.cc:49
void beginJob()
Definition: Breakpoints.cc:15
TFile * _file
Definition: PFTauTest.cc:74
virtual void analyze(const Event &iEvent, const EventSetup &iSetup)
Definition: PFTauTest.cc:134
DQMStore * dbeTau
Definition: PFTauTest.cc:91
int iEvent
Definition: GenABIO.cc:243
int nTauMatchPFTau
Definition: PFTauTest.cc:65
virtual void beginJob()
Definition: PFTauTest.cc:110
MonitorElement * h_Tau_Pt_
Definition: PFTauTest.cc:83
unsigned int size_type
Definition: View.h:90
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:355
MonitorElement * h_PFTau_SignalChargedHadron_
Definition: PFTauTest.cc:85
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
TDirectory * _dir
Definition: PFTauTest.cc:75
MonitorElement * h_PFTau_Pt_
Definition: PFTauTest.cc:82
MonitorElement * h_MatchedPFTau_Eta_
Definition: PFTauTest.cc:80
MonitorElement * h_PFTau_Phi_
Definition: PFTauTest.cc:81
int nElecNonElecPreID
Definition: PFTauTest.cc:70
PFTauHLTTest(const ParameterSet &)
Definition: PFTauTest.cc:94
MonitorElement * h_PFTau_LeadingTrackPt_
Definition: PFTauTest.cc:87
tuple cout
Definition: gather_cfg.py:41
MonitorElement * h_NumberOfJets_
Definition: PFTauTest.cc:79
virtual void endJob()
Definition: PFTauTest.cc:205
MonitorElement * h_PFTauEt_MCTauEt_
Definition: PFTauTest.cc:90
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:26
int nElecElecPreID
Definition: PFTauTest.cc:68
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
math::PtEtaPhiELorentzVectorF LorentzVector
virtual const LorentzVector & p4() const =0
four-momentum Lorentz vector