16 #include "Math/GenVector/PxPyPzE4D.h"
28 #include <TDirectory.h>
33 #include <Math/GenVector/VectorUtil.h>
56 virtual void endJob();
95 PFTauProducer_ = iConfig.
getParameter<
string>(
"PFTauProducer");
96 PFJetProducer_ = iConfig.
getParameter<
string>(
"PFJetProducer");
97 MatchedPFTauProducer_ = iConfig.
getParameter<
string>(
"MatchedPFTauProducer");
108 outPutFile_ =
"PFTauTest.root";
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.);
127 h_PFTauEt_MCTauEt_ = dbeTau->book2D(
"PFTauEt_MCTauEt",
"PFTau_Et Vs MCTau_Et", 50,0.,50.,50,0.,50.);
129 h_NumberOfJets_ = dbeTau->book1D(
"NumberOfJets",
"NumberOfJets",20,0.,20.);
145 iEvent.
getByLabel(PFTauProducer_,thePFTauHandle);
148 iEvent.
getByLabel(PFJetProducer_,thePFJetHandle);
149 double numberOfJets = thePFJetHandle->size()*1.;
150 h_NumberOfJets_->Fill(numberOfJets);
153 iEvent.
getByLabel(MatchedPFTauProducer_,theMatchedPFTauHandle);
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());
164 bool matched =
false;
167 const Candidate *theMPFTau = &(*theMatchedPFTauHandle)[iMPFTau];
168 double deltaR = ROOT::Math::VectorUtil::DeltaR(thePFTau->p4().Vect(), (theMPFTau->
p4()).Vect());
171 h_PFTauEt_MCTauEt_->Fill(theMPFTau->
pt(),thePFTau->pt());
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;
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());
192 h_PFTau_SignalTracks_->Fill((*thePFTau).signalTracks().size()*1.);
193 h_PFTau_SignalGammas_->Fill((*thePFTau).signalPFGammaCands().size()*1.);
199 const Candidate *theMPFTau = &(*theMatchedPFTauHandle)[iMPFTau];
200 h_Tau_Pt_->Fill(theMPFTau->
pt());
T getParameter(std::string const &) const
virtual double pt() const =0
transverse momentum
MonitorElement * h_MatchedPFTau_Pt_
DeltaR< LorentzVector > deltaRComputer_
MonitorElement * h_PFTau_SignalTracks_
MonitorElement * h_PFTau_SignalGammas_
MonitorElement * h_PFTau_Eta_
DEFINE_FWK_MODULE(HiMixingModule)
MonitorElement * h_PFTau_SignalNeutralHadron_
virtual void analyze(const Event &iEvent, const EventSetup &iSetup)
MonitorElement * h_Tau_Pt_
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
MonitorElement * h_PFTau_SignalChargedHadron_
double deltaR(double eta1, double eta2, double phi1, double phi2)
MonitorElement * h_PFTau_Pt_
MonitorElement * h_MatchedPFTau_Eta_
MonitorElement * h_PFTau_Phi_
PFTauHLTTest(const ParameterSet &)
MonitorElement * h_PFTau_LeadingTrackPt_
MonitorElement * h_NumberOfJets_
MonitorElement * h_PFTauEt_MCTauEt_
math::XYZTLorentzVector LorentzVector
Lorentz vector.
void setCurrentFolder(const std::string &fullpath)
math::PtEtaPhiELorentzVectorF LorentzVector
virtual const LorentzVector & p4() const =0
four-momentum Lorentz vector