9 #include "TLorentzVector.h" 11 #include "CLHEP/Units/defs.h" 12 #include "CLHEP/Units/PhysicalConstants.h" 19 wmanager_(iPSet,consumesCollector()),
20 hepmcCollection_(iPSet.getParameter<
edm::
InputTag>(
"hepmcCollection")),
21 _flavor(iPSet.getParameter<
int>(
"decaysTo")),
22 _name(iPSet.getParameter<
std::
string>(
"name"))
37 nEvt = dqm.
book1dHisto(
"nEvt",
"n analyzed Events", 1, 0., 1.,
"bin",
"Number of Events");
40 Wmass = dqm.
book1dHisto(
"Wmass",
"inv. Mass W", 70 ,0,140,
"M_{T}^{W} (GeV)",
"Number of Events");
41 WmassPeak = dqm.
book1dHisto(
"WmassPeak",
"inv. Mass W", 80 ,80 ,100,
"M_{T}^{W} (GeV)",
"Number of Events");
42 Wpt = dqm.
book1dHisto(
"Wpt",
"W pt",100,0,200,
"P_{T}^{W} (GeV)",
"Number of Events");
43 WptLog = dqm.
book1dHisto(
"WptLog",
"log(W pt)",100,0.,5.,
"Log_{10}(P_{T}^{W}) (GeV)",
"Number of Events");
44 Wrap = dqm.
book1dHisto(
"Wrap",
"W y", 100, -5, 5,
"Y^{W}",
"Number of Events");
45 Wdaughters = dqm.
book1dHisto(
"Wdaughters",
"W daughters", 60, -30, 30,
"W daughters (PDG ID)",
"Number of Events");
47 lepmet_mT = dqm.
book1dHisto(
"lepmet_mT",
"lepton-met transverse mass", 70 ,0,140,
"M_{T}^{Lepton_{T}+E_{T}^{Miss}} (GeV)",
"Number of Events");
48 lepmet_mTPeak = dqm.
book1dHisto(
"lepmet_mTPeak",
"lepton-met transverse mass", 80 ,80 ,100,
"M_{T}^{Lepton_{T}+E_{T}^{Miss}} (GeV)",
"Number of Events");
49 lepmet_pt = dqm.
book1dHisto(
"lepmet_pt",
"lepton-met",100,0,200,
"P_{T}^{Lepton_{T}+E_{T}^{Miss}} (GeV)",
"Number of Events");
50 lepmet_ptLog = dqm.
book1dHisto(
"lepmet_ptLog",
"log(lepton-met pt)",100,0.,5.,
"log_{10}(P_{T}^{Lepton_{T}+E_{T}^{Miss}}) (Log_{10}(GeV))",
"Number of Events");
52 gamma_energy = dqm.
book1dHisto(
"gamma_energy",
"photon energy in W rest frame", 200, 0., 100.,
"E_{#gamma}^{W rest-frame}",
"Number of Events");
53 cos_theta_gamma_lepton = dqm.
book1dHisto(
"cos_theta_gamma_lepton",
"cos_theta_gamma_lepton in W rest frame", 200, -1, 1,
"cos(#theta_{#gamma-lepton}^{W rest-frame})",
"Number of Events");
55 leppt = dqm.
book1dHisto(
"leadpt",
"lepton pt", 200, 0., 200.,
"P_{t}^{Lead-Lepton} (GeV)",
"Number of Events");
56 met = dqm.
book1dHisto(
"met",
"met", 200, 0., 200.,
"E_{T}^{Miss} (GeV)",
"Number of Events");
57 lepeta = dqm.
book1dHisto(
"leadeta",
"leading lepton eta", 100, -5., 5.,
"#eta^{Lead-Lepton}",
"Number of Events");
76 const HepMC::GenEvent *myGenEvent = evt->
GetEvent();
82 std::vector<const HepMC::GenParticle*> allleptons;
83 std::vector<const HepMC::GenParticle*> allneutrinos;
90 for(HepMC::GenEvent::particle_const_iterator iter = myGenEvent->particles_begin(); iter != myGenEvent->particles_end(); ++iter) {
92 if ((*iter)->status()==3 &&
std::abs((*iter)->pdg_id()) == 15)
return;
94 if((*iter)->status()==requiredstatus) {
97 allleptons.push_back(*iter);
99 allneutrinos.push_back(*iter);
104 if (allleptons.empty() || allneutrinos.empty())
return;
111 std::vector<const HepMC::GenParticle*>
products;
112 if (allleptons.front()->pdg_id() * allneutrinos.front()->pdg_id() > 0)
return;
115 if (allleptons.front()->momentum().perp() < 20. || allneutrinos.front()->momentum().perp() < 20. )
return;
118 std::vector<const HepMC::GenParticle*> selectedLepton;
119 selectedLepton.push_back(allleptons.front());
120 std::vector<const HepMC::GenParticle*> fsrphotons;
127 TLorentzVector
lep1(allleptons[0]->momentum().
x(), allleptons[0]->momentum().
y(), allleptons[0]->momentum().
z(), allleptons[0]->momentum().
t());
128 TLorentzVector
lep2(allneutrinos[0]->momentum().
x(), allneutrinos[0]->momentum().
y(), allneutrinos[0]->momentum().
z(), allneutrinos[0]->momentum().
t());
129 TLorentzVector dilepton_mom = lep1 +
lep2;
130 TLorentzVector dilepton_andphoton_mom = dilepton_mom;
131 std::vector<TLorentzVector> gammasMomenta;
132 for (
unsigned int ipho = 0; ipho < fsrphotons.size(); ++ipho){
133 TLorentzVector phomom(fsrphotons[ipho]->momentum().
x(), fsrphotons[ipho]->momentum().
y(), fsrphotons[ipho]->momentum().
z(), fsrphotons[ipho]->momentum().
t());
134 dilepton_andphoton_mom += phomom;
136 gammasMomenta.push_back(phomom);
142 WptLog->
Fill(log10(dilepton_andphoton_mom.Pt()),weight);
146 TLorentzVector lep1T(lep1.Px(), lep1.Py(), 0., lep1.Et());
147 TLorentzVector lepmet_mom = lep1T + met_mom;
160 TVector3
boost = dilepton_andphoton_mom.BoostVector();
164 for (
unsigned int ipho = 0; ipho < gammasMomenta.size(); ++ipho){
165 gammasMomenta[ipho].Boost(boost);
167 std::sort(gammasMomenta.begin(), gammasMomenta.end(), HepMCValidationHelper::GreaterByE<TLorentzVector>);
170 if (!gammasMomenta.empty() && dilepton_andphoton_mom.M() > 50.) {
172 double dphi = lep1.DeltaR(gammasMomenta.front());
WValidation(const edm::ParameterSet &)
edm::InputTag hepmcCollection_
void findFSRPhotons(const std::vector< const HepMC::GenParticle * > &leptons, const std::vector< const HepMC::GenParticle * > &all, double deltaR, std::vector< const HepMC::GenParticle * > &photons)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::string _name
decay flavor name
bool sortByPt(const HepMC::GenParticle *a, const HepMC::GenParticle *b)
MonitorElement * book1dHisto(std::string name, std::string title, int n, double xmin, double xmax, std::string xaxis, std::string yaxis)
void getData(T &iHolder) const
MonitorElement * lepmet_mT
ESProducts< std::remove_reference_t< TArgs >... > products(TArgs &&...args)
MonitorElement * lepmet_pt
edm::EDGetTokenT< edm::HepMCProduct > hepmcCollectionToken_
void setCurrentFolder(std::string const &fullpath)
Cos< T >::type cos(const T &t)
Abs< T >::type abs(const T &t)
MonitorElement * gamma_energy
void bookHistograms(DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &) override
edm::ESHandle< HepPDT::ParticleDataTable > fPDGTable
PDT table.
void dqmBeginRun(const edm::Run &r, const edm::EventSetup &c) override
const HepMC::GenEvent * GetEvent() const
TLorentzVector genMet(const HepMC::GenEvent *all, double etamin=-9999., double etamax=9999.)
MonitorElement * lepmet_mTPeak
MonitorElement * WmassPeak
void analyze(const edm::Event &, const edm::EventSetup &) override
lep1
print 'MRbb(1b)',event.mr_bb
MonitorElement * lepmet_ptLog
MonitorElement * Wdaughters
double weight(const edm::Event &)
MonitorElement * cos_theta_gamma_lepton