7 #include "CLHEP/Units/defs.h" 8 #include "CLHEP/Units/PhysicalConstants.h" 20 genparticleCollection_(iPSet.getParameter<
edm::
InputTag>(
"genparticleCollection")),
37 nTaus = dqm.
book1dHisto(
"nTaus",
"n analyzed Taus", 1, 0., 1.,
"bin",
"Number of #tau's found");
39 dqm.
book1dHisto(
"nPrimeTaus",
"n analyzed prime Taus", 1, 0., 1.,
"bin",
"Number of #tau's from Gauge Bosons");
42 TauPt = dqm.
book1dHisto(
"TauPt",
"Tau pT", 100, 0, 100,
"P_{T}^{#tau}",
"Number of #tau's from Gauge Bosons");
43 TauEta = dqm.
book1dHisto(
"TauEta",
"Tau eta", 100, -2.5, 2.5,
"#eta^{#tau}",
"Number of #tau's from Gauge Bosons");
44 TauPhi = dqm.
book1dHisto(
"TauPhi",
"Tau phi", 100, -3.14, 3.14,
"#phi^{#tau}",
"Number of #tau's from Gauge Bosons");
45 TauProngs = dqm.
book1dHisto(
"TauProngs",
"Tau n prongs", 7, 0, 7,
"N_{prongs}",
"Number of #tau's from Gauge Bosons");
47 "TauDecayChannels",
"Tau decay channels", 13, 0, 13,
"Tau POG Decay Mode",
"Number of #tau's from Gauge Bosons");
62 TauMothers = dqm.
book1dHisto(
"TauMothers",
"Tau mother particles", 10, 0, 10,
"Mother of #tau",
"Number of #tau's");
76 "DecayLength",
"#tau Decay Length", 100, -20, 20,
"L_{#tau} (cm)",
"Number of #tau's from Gauge Bosons");
78 "LifeTime",
"#tau LifeTime ", 500, 0, 10000E-15,
"#tau_{#tau} (s)",
"Number of #tau's from Gauge Bosons");
81 "TauSpinEffectsWX",
"X for pion", 50, 0, 1,
"X",
"Number of #tau#rightarrow#pi#nu from W^{#pm} Bosons");
83 "TauSpinEffectsHpmX",
"X for pion", 50, 0, 1,
"X",
"Number of #tau#rightarrow#pi#nu from H^{#pm} Bosons");
86 "TauSpinEffectsWeX",
"X for e", 50, 0, 1,
"X",
"Number of #tau#rightarrowe#nu#nu from W^{#pm} Bosons");
88 "TauSpinEffectsHpmeX",
"X for e", 50, 0, 1,
"X",
"Number of #tau#rightarrowe#nu#nu from H^{#pm} Bosons");
91 "TauSpinEffectsWmuX",
"X for mu", 50, 0, 1,
"X",
"Number of #tau#rightarrow#mu#nu#nu from W^{#pm} Bosons");
93 "TauSpinEffectsHpmmuX",
"X for mue", 50, 0, 1,
"X",
"Number of #tau#rightarrow#mu#nu#nu from H^{#pm} Bosons");
101 "Number of #tau#rightarrow#rho#nu from Gauge Bosons");
108 "Number of #tau#rightarrow#rho#nu from Gauge Bosons");
116 "Number of #tau#rightarrow#pi#pi#pi#nu from Gauge Bosons");
123 "Number of #tau#rightarrow#pi#pi#pi#nu from Gauge Bosons");
126 dqm.
book1dHisto(
"TauSpinEffectsH_pipiAcoplanarity",
127 "H Acoplanarity for #pi^{-}#pi^{+}",
132 "Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
135 dqm.
book1dHisto(
"TauSpinEffectsH_pipiAcollinearity",
136 "H Acollinearity for #pi^{-}#pi^{+}",
141 "Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
143 dqm.
book1dHisto(
"TauSpinEffectsH_pipiAcollinearityzoom",
144 "H Acollinearity for #pi^{-}#pi^{+}",
149 "Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
157 "M_{#pi^{+}#pi^{-}} (GeV)",
158 "Number of Z#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
165 "M_{#pi^{+}#pi^{-}} (GeV)",
166 "Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
175 "Number of Z#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu Events");
183 "Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu Events");
186 "TauSpinEffectsZX",
"X for pion of #tau^{-}", 25, 0, 1.0,
"X",
"Number of #tau#rightarrow#pi#nu from Z Bosons");
188 "X for pion of #tau^{-} (50GeV-75GeV)",
193 "Number of #tau#rightarrow#pi#nu from Z(50GeV<M<75GeV) Bosons");
195 "X for pion of #tau^{-} (75GeV-88GeV)",
200 "Number of #tau#rightarrow#pi#nu from Z(75GeV<M<88GeV) Bosons");
202 "X for pion of #tau^{-} (88GeV-100GeV)",
207 "Number of #tau#rightarrow#pi#nu from Z(88GeV<M<100GeV) Bosons");
209 "X for pion of #tau^{-} (100GeV-120GeV)",
214 "Number of #tau#rightarrow#pi#nu from Z(100GeV<M<120GeV) Bosons");
216 "X for pion of #tau^{-} (>120GeV)",
221 "Number of #tau#rightarrow#pi#nu from Z(120GeV<MGeV) Bosons");
224 "TauSpinEffectsH_X",
"X for pion of #tau^{-}", 25, 0, 1.0,
"X",
"Number of #tau#rightarrow#pi#nu from H Bosons");
227 "X for pion of forward emitted #tau^{-}",
232 "Number of #tau#rightarrow#pi#nu from Z Bosons");
234 "X for pion of forward emitted #tau^{-}",
239 "Number of #tau#rightarrow#pi#nu from H Bosons");
242 "X for pion of backward emitted #tau^{-}",
247 "Number of #tau#rightarrow#pi#nu from Z Bosons");
249 "X for pion of backward emitted #tau^{-}",
254 "Number of #tau#rightarrow#pi#nu from H Bosons");
257 "TauSpinEffectsZeX",
"X for e", 50, 0, 1,
"X",
"Number of #tau#rightarrowe#nu#nu from Gauge Bosons");
259 "TauSpinEffectsHeX",
"X for e", 50, 0, 1,
"X",
"Number of #tau#rightarrowe#nu#nu from Gauge Bosons");
262 "TauSpinEffectsZmuX",
"X for mu", 50, 0, 1,
"X",
"Number of #tau#rightarrow#mu#nu#nu from Gauge Bosons");
264 "TauSpinEffectsHmuX",
"X for mu", 50, 0, 1,
"X",
"Number of #tau#rightarrow#mu#nu#nu from Gauge Bosons");
267 dqm.
book1dHisto(
"TauSpinEffectsH_rhorhoAcoplanarityminus",
268 "#phi^{*-} (acoplanarity) for Higgs #rightarrow #rho-#rho (y_{1}*y_{2}<0)",
272 "#phi^{*-} (Acoplanarity)",
273 "Number of H#rightarrow#tau^{-}(#rightarrow#rho^{-}#nu)#tau^{+}(#rightarrow#rho^{+}#nu) Events");
275 dqm.
book1dHisto(
"TauSpinEffectsH_rhorhoAcoplanarityplus",
276 "#phi^{*+} (acoplanarity) for Higgs #rightarrow #rho-#rho (y_{1}*y_{2}>0)",
280 "#phi^{*+} (Acoplanarity)",
281 "Number of H#rightarrow#tau^{-}(#rightarrow#rho^{-}#nu)#tau^{+}(#rightarrow#rho^{+}#nu) Events");
284 "FSR Photons radiating from/with tau (Gauge Boson)",
288 "N^{FSR Photons radiating from/with #tau}",
289 "Number of #tau's from Gauge Bosons");
291 "Pt of FSR Photons radiating from/with tau (Gauge Boson)",
295 "P_{t}^{FSR Photons radiating from/with #tau [per #tau]} (GeV)",
296 "Number of #tau's from Gauge Bosons");
298 "Pt of FSR Photons radiating from/with tau (Gauge Boson)",
302 "P_{t}^{FSR Photons radiating from/with #tau [per #tau]} (GeV)",
303 "Number of #tau's from Gauge Bosons");
306 "Brem. Photons radiating in tau decay",
310 "N FSR Photons radiating from/with tau",
311 "Number of #tau's from Gauge Bosons");
317 "P_{t}^{Brem. Photons radiating in tau decay} (GeV)",
318 "Number of #tau's from Gauge Bosons");
324 "Sum P_{t}^{Brem. Photons radiating in tau decay} (GeV)",
325 "Number of #tau's from Gauge Bosons");
328 for (
unsigned int j = 0; j <
NMODEID + 1; j++) {
329 MODEInvMass.push_back(std::vector<MonitorElement *>());
331 tmp += std::to_string(j);
338 "Number of #tau's from Gauge Bosons"));
348 "Number of #tau's from Gauge Bosons"));
355 "Number of #tau's from Gauge Bosons"));
362 "Number of #tau's from Gauge Bosons"));
376 for (reco::GenParticleCollection::const_iterator iter = genParticles->begin(); iter != genParticles->end(); ++iter) {
380 if (
abs(iter->pdgId()) == 15) {
383 int mother =
tauMother(&(*iter), weight);
393 unsigned int jak_id, TauBitMask;
394 if (TD.
AnalyzeTau(&(*iter), jak_id, TauBitMask,
false,
false)) {
399 int tcharge = iter->pdgId() /
abs(iter->pdgId());
402 TLorentzVector LVQ(0, 0, 0, 0);
403 TLorentzVector LVS12(0, 0, 0, 0);
404 TLorentzVector LVS13(0, 0, 0, 0);
405 TLorentzVector LVS23(0, 0, 0, 0);
406 bool haspart1 =
false;
409 for (
unsigned int i = 0;
i < part.size();
i++) {
413 TLorentzVector tlv(iter->px(), iter->py(), iter->pz(), iter->energy());
414 PV = TVector3(iter->vx(), iter->vy(), iter->vz());
415 SV = TVector3(part.at(
i)->vx(), part.at(
i)->vy(), part.at(
i)->vz());
416 TVector3 DL = SV -
PV;
418 double c(2.99792458E8), Ltau(DL.Mag() / 100) ,
beta(iter->p() / iter->mass());
424 TLorentzVector
LV(part.at(
i)->px(), part.at(
i)->py(), part.at(
i)->pz(), part.at(
i)->energy());
428 if ((tcharge == part.at(
i)->pdgId() /
abs(part.at(
i)->pdgId()) && TD.
nProng(TauBitMask) == 3) ||
476 std::vector<const reco::GenParticle *> mothers;
481 mothers.push_back(mother);
497 TauList.insert(TauList.begin(),
tau);
508 std::vector<const reco::GenParticle *> &ListofFSR,
509 std::vector<const reco::GenParticle *> &ListofBrem) {
521 if (
abs((dau)->
pdgId()) ==
abs(photo_ID) && !doBrem) {
522 ListofFSR.push_back(dau);
524 if (
abs((dau)->
pdgId()) ==
abs(photo_ID) && doBrem) {
525 ListofBrem.push_back(dau);
534 std::vector<const reco::GenParticle *> &ListofFSR,
535 double &BosonScale) {
538 int mother_pid = m->
pdgId();
543 ListofFSR.push_back(dau);
547 if (
abs(mother_pid) == 24)
549 if (
abs(mother_pid) == 23)
551 if (
abs(mother_pid) == 22)
553 if (
abs(mother_pid) == 25)
555 if (
abs(mother_pid) == 35)
557 if (
abs(mother_pid) == 36)
559 if (
abs(mother_pid) == 37)
567 if (mother_pid == -2)
570 if (
abs(mother_pid) == 24)
572 if (
abs(mother_pid) == 23)
574 if (
abs(mother_pid) == 22)
576 if (
abs(mother_pid) == 25)
578 if (
abs(mother_pid) == 35)
580 if (
abs(mother_pid) == 36)
582 if (
abs(mother_pid) == 37)
584 int mother_shortpid = (
abs(mother_pid) % 10000);
585 if (mother_shortpid > 500 && mother_shortpid < 600)
587 if (mother_shortpid > 400 && mother_shortpid < 500)
590 if (label ==
B || label ==
D || label ==
other)
599 int allCount = 0, eCount = 0, muCount = 0, pi0Count = 0, piCount = 0, rhoCount = 0, a1Count = 0, KCount = 0,
602 countParticles(tau, allCount, eCount, muCount, pi0Count, piCount, rhoCount, a1Count, KCount, KstarCount);
617 if (piCount == 1 && pi0Count == 0)
619 if (piCount == 1 && pi0Count == 1)
621 if (piCount == 1 && pi0Count > 1)
623 if (piCount == 3 && pi0Count == 0)
625 if (piCount == 3 && pi0Count > 0)
652 else if (
abs(pid) == 13)
654 else if (
abs(pid) == 111)
656 else if (
abs(pid) == 211)
658 else if (
abs(pid) == 213)
660 else if (
abs(pid) == 20213)
662 else if (
abs(pid) == 321)
664 else if (
abs(pid) == 323)
666 countParticles(dau, allCount, eCount, muCount, pi0Count, piCount, rhoCount, a1Count, KCount, KstarCount);
674 TLorentzVector momP4 =
motherP4(tau);
676 pionP4.Boost(-1 * momP4.BoostVector());
677 double energy = pionP4.E() / (momP4.M() / 2);
679 if (
abs(mother) == 24)
681 else if (
abs(mother) == 37)
685 if (
abs(mother) == 24)
687 else if (
abs(mother) == 37)
691 if (
abs(mother) == 24)
693 else if (
abs(mother) == 37)
697 TLorentzVector
rho(0, 0, 0, 0),
pi(0, 0, 0, 0);
698 for (
unsigned int i = 0;
i < part.size();
i++) {
699 TLorentzVector
LV(part.at(
i)->px(), part.at(
i)->py(), part.at(
i)->pz(), part.at(
i)->energy());
708 if (
abs(mother) == 24)
710 else if (
abs(mother) == 37)
713 TLorentzVector
a1(0, 0, 0, 0), pi_p(0, 0, 0, 0), pi_m(0, 0, 0, 0);
714 int nplus(0), nminus(0);
715 for (
unsigned int i = 0;
i < part.size();
i++) {
716 TLorentzVector
LV(part.at(
i)->px(), part.at(
i)->py(), part.at(
i)->pz(), part.at(
i)->energy());
729 if (nplus + nminus == 3 && nplus == 1)
730 gamma = 2 * pi_p.P() /
a1.P() - 1;
731 else if (nplus + nminus == 3 && nminus == 1)
732 gamma = 2 * pi_m.P() /
a1.P() - 1;
735 gamma = 2 * pi_p.P() /
a1.P() - 1;
737 if (
abs(mother) == 24)
739 else if (
abs(mother) == 37)
748 if (ntau == 1 && dau->
pdgId() == 15)
756 TLorentzVector tautau(0, 0, 0, 0);
757 TLorentzVector pipi(0, 0, 0, 0);
758 TLorentzVector taum(0, 0, 0, 0);
759 TLorentzVector taup(0, 0, 0, 0);
760 TLorentzVector rho_plus, rho_minus, pi_rhominus, pi0_rhominus, pi_rhoplus, pi0_rhoplus, pi_plus, pi_minus;
761 bool hasrho_minus(
false), hasrho_plus(
false), haspi_minus(
false), haspi_plus(
false);
762 int nSinglePionDecays(0), nSingleMuonDecays(0), nSingleElectronDecays(0);
764 TLorentzVector Zboson(boson->
px(), boson->
py(), boson->
pz(), boson->
energy());
770 unsigned int jak_id, TauBitMask;
771 if (TD.
AnalyzeTau(dau, jak_id, TauBitMask,
false,
false)) {
779 nSingleElectronDecays++;
780 TLorentzVector LVtau(dau->
px(), dau->
py(), dau->
pz(), dau->
energy());
786 LVtau.Boost(-1 * Zboson.BoostVector());
787 LVpi.Boost(-1 * Zboson.BoostVector());
805 if (50.0 < Zboson.M() && Zboson.M() < 75.0)
807 if (75.0 < Zboson.M() && Zboson.M() < 88.0)
809 if (88.0 < Zboson.M() && Zboson.M() < 100.0)
811 if (100.0 < Zboson.M() && Zboson.M() < 120.0)
813 if (120.0 < Zboson.M())
820 x1 = LVpi.P() / LVtau.E();
823 x2 = LVpi.P() / LVtau.E();
826 TLorentzVector LVtau(dau->
px(), dau->
py(), dau->
pz(), dau->
energy());
832 for (
unsigned int i = 0;
i < part.size();
i++) {
833 int pid_d = part.at(
i)->pdgId();
834 if (
abs(pid_d) == 211 ||
abs(pid_d) == 111) {
835 TLorentzVector
LV(part.at(
i)->px(), part.at(
i)->py(), part.at(
i)->pz(), part.at(
i)->energy());
841 if (
abs(pid_d) == 111) {
850 if (
abs(pid_d) == 111) {
858 for (
unsigned int i = 0;
i < part.size();
i++) {
859 int pid_d = part.at(
i)->pdgId();
860 if (
abs(pid_d) == 211) {
861 TLorentzVector
LV(part.at(
i)->px(), part.at(
i)->py(), part.at(
i)->pz(), part.at(
i)->energy());
880 if (hasrho_minus && hasrho_plus) {
882 rho_minus = pi_rhominus;
883 rho_minus += pi0_rhominus;
884 rho_plus = pi_rhoplus;
885 rho_plus += pi0_rhoplus;
886 TLorentzVector rhorho = rho_minus;
890 TLorentzVector pi_rhoplusb = pi_rhoplus;
891 pi_rhoplusb.Boost(-1 * rhorho.BoostVector());
892 TLorentzVector pi0_rhoplusb = pi0_rhoplus;
893 pi0_rhoplusb.Boost(-1 * rhorho.BoostVector());
894 TLorentzVector pi_rhominusb = pi_rhominus;
895 pi_rhominusb.Boost(-1 * rhorho.BoostVector());
896 TLorentzVector pi0_rhominusb = pi0_rhominus;
897 pi0_rhominusb.Boost(-1 * rhorho.BoostVector());
900 TVector3 n_plus = pi_rhoplusb.Vect().Cross(pi0_rhoplusb.Vect());
901 TVector3 n_minus = pi_rhominusb.Vect().Cross(pi0_rhominusb.Vect());
904 double Acoplanarity = acos(n_plus.Dot(n_minus) / (n_plus.Mag() * n_minus.Mag()));
905 if (pi_rhominusb.Vect().Dot(n_plus) > 0) {
911 pi_rhoplus.Boost(-1 * taup.BoostVector());
912 pi0_rhoplus.Boost(-1 * taup.BoostVector());
913 pi_rhominus.Boost(-1 * taum.BoostVector());
914 pi0_rhominus.Boost(-1 * taum.BoostVector());
917 double y1 = (pi_rhoplus.E() - pi0_rhoplus.E()) / (pi_rhoplus.E() + pi0_rhoplus.E());
918 double y2 = (pi_rhominus.E() - pi0_rhominus.E()) / (pi_rhominus.E() + pi0_rhominus.E());
926 if (haspi_minus && haspi_plus) {
927 TLorentzVector tauporig = taup;
928 TLorentzVector taumorig = taum;
931 pi_plus.Boost(-1 * Zboson.BoostVector());
932 pi_minus.Boost(-1 * Zboson.BoostVector());
934 taup.Boost(-1 * Zboson.BoostVector());
935 taum.Boost(-1 * Zboson.BoostVector());
939 acos(pi_plus.Vect().Dot(pi_minus.Vect()) / (pi_plus.P() * pi_minus.P())));
941 acos(pi_plus.Vect().Dot(pi_minus.Vect()) / (pi_plus.P() * pi_minus.P())));
944 double proj_m = taum.Vect().Dot(pi_minus.Vect()) / (taum.P() * taum.P());
945 double proj_p = taup.Vect().Dot(pi_plus.Vect()) / (taup.P() * taup.P());
946 TVector3 Tau_m = taum.Vect();
947 TVector3 Tau_p = taup.Vect();
950 TVector3 Pit_m = pi_minus.Vect() - Tau_m;
951 TVector3 Pit_p = pi_plus.Vect() - Tau_p;
953 double Acoplanarity = acos(Pit_m.Dot(Pit_p) / (Pit_p.Mag() * Pit_m.Mag()));
954 TVector3
n = Pit_p.Cross(Pit_m);
955 if (n.Dot(Tau_m) / Tau_m.Mag() > 0) {
965 if (nSinglePionDecays == 2 && tautau.M() != 0) {
969 double aup =
Zstoa(zsup), alow =
Zstoa(zslow);
970 if (x2 -
x1 > alow && x2 -
x1 < aup) {
971 double zs = (zsup + zslow) / 2;
985 const std::vector<const reco::GenParticle *>
m =
GetMothers(boson);
987 TLorentzVector
Z(0, 0, 0, 0);
988 for (
unsigned int i = 0;
i < m.size();
i++) {
996 if (
q == 1 && qbar == 1) {
997 if (taum.Vect().Dot(Zboson.Vect()) / (Zboson.P() * taum.P()) > 0) {
1015 double a = 1 -
sqrt(fabs(1.0 - 2 * fabs(zs)));
1027 TLorentzVector
p4(0, 0, 0, 0);
1033 if (!(
abs(pid) == 211 ||
abs(pid) == 13 ||
abs(pid) == 11))
1035 if (dau->
p() > p4.P())
1036 p4 = TLorentzVector(dau->
px(), dau->
py(), dau->
pz(), dau->
energy());
1043 return TLorentzVector(m->
px(), m->
py(), m->
pz(), m->
energy());
1047 TLorentzVector
p4(tau->
px(), tau->
py(), tau->
pz(), tau->
energy());
1053 if (
abs(pid) == 12 ||
abs(pid) == 14 ||
abs(pid) == 16) {
1054 p4 -= TLorentzVector(dau->
px(), dau->
py(), dau->
pz(), dau->
energy());
1062 std::vector<const reco::GenParticle *> TauList;
1066 bool passedW =
false;
1067 std::vector<const reco::GenParticle *> ListofFSR;
1069 std::vector<const reco::GenParticle *> ListofBrem;
1071 std::vector<const reco::GenParticle *> FSR_photos;
1073 double BosonScale(1);
1074 if (!TauList.empty()) {
1080 double photonPtSum = 0;
1081 for (
unsigned int i = 0;
i < ListofBrem.size();
i++) {
1082 photonPtSum += ListofBrem.at(
i)->pt();
1088 if (BosonScale != 0) {
1091 for (
unsigned int i = 0;
i < ListofFSR.size();
i++) {
1092 photonPtSum += ListofFSR.at(
i)->pt();
1095 double FSR_photosSum(0);
1096 for (
unsigned int i = 0;
i < FSR_photos.size();
i++) {
1097 FSR_photosSum += FSR_photos.at(
i)->pt();
MonitorElement * TauFSRPhotonsN
int pdgId() const final
PDG identifier.
const Candidate * daughter(size_type) const override
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
int findMother(const reco::GenParticle *)
MonitorElement * TauSpinEffectsH_rhorhoAcoplanarityplus
MonitorElement * TauSpinEffectsW_X
MonitorElement * TauSpinEffectsHpm_UpsilonA1
MonitorElement * TauSpinEffectsZ_Xb
MonitorElement * DecayLength
std::vector< std::vector< MonitorElement * > > MODEInvMass
bool getByToken(EDGetToken token, Handle< PROD > &result) const
math::XYZTLorentzVectorD LV
TauValidation(const edm::ParameterSet &)
~TauValidation() override
MonitorElement * TauSpinEffectsH_MVis
MonitorElement * TauMothers
double px() const final
x coordinate of momentum vector
size_t numberOfMothers() const override
number of mothers
MonitorElement * TauSpinEffectsHpm_eX
MonitorElement * TauSpinEffectsZ_X100to120
void FindPhotosFSR(const reco::GenParticle *p, std::vector< const reco::GenParticle * > &ListofFSR, double &BosonScale)
MonitorElement * TauSpinEffectsW_muX
MonitorElement * TauBremPhotonsN
void spinEffectsWHpm(const reco::GenParticle *, int, int, std::vector< const reco::GenParticle * > &part, double weight)
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
MonitorElement * TauSpinEffectsZ_Xf
bool isLastTauinChain(const reco::GenParticle *tau)
MonitorElement * TauBremPhotonsPtSum
MonitorElement * TauSpinEffectsH_pipiAcoplanarity
MonitorElement * TauSpinEffectsHpm_UpsilonRho
MonitorElement * book1dHisto(std::string name, std::string title, int n, double xmin, double xmax, std::string xaxis, std::string yaxis)
double leadingPionMomentum(const reco::GenParticle *, double weight)
MonitorElement * TauSpinEffectsZ_eX
MonitorElement * TauProngs
TLorentzVector motherP4(const reco::GenParticle *)
bool isTauFinalStateParticle(int pdgid)
void dqmBeginRun(const edm::Run &r, const edm::EventSetup &c) override
MonitorElement * TauSpinEffectsH_pipiAcollinearityzoom
bool getData(T &iHolder) const
void photons(const reco::GenParticle *, double weight)
MonitorElement * TauSpinEffectsW_UpsilonRho
const reco::GenParticle * GetMother(const reco::GenParticle *tau)
MonitorElement * TauSpinEffectsZ_X88to100
void setCurrentFolder(std::string const &fullpath)
MonitorElement * TauSpinEffectsH_rhorhoAcoplanarityminus
double pz() const final
z coordinate of momentum vector
void analyze(edm::Event const &, edm::EventSetup const &) override
virtual int pdgId() const =0
PDG identifier.
MonitorElement * TauSpinEffectsZ_X50to75
MonitorElement * TauSpinEffectsH_Xf
double energy() const final
energy
MonitorElement * TauFSRPhotonsPt
Abs< T >::type abs(const T &t)
MonitorElement * TauSpinEffectsZ_muX
MonitorElement * TauDecayChannels
MonitorElement * TauSpinEffectsH_Zs
MonitorElement * TauFSRPhotonsPtSum
HepPDT::ParticleData ParticleData
int tauMother(const reco::GenParticle *, double weight)
void bookHistograms(DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &) override
std::vector< const reco::GenParticle * > Get_TauDecayProducts()
const std::vector< const reco::GenParticle * > GetMothers(const reco::GenParticle *boson)
MonitorElement * TauSpinEffectsZ_MVis
MonitorElement * TauSpinEffectsZ_X75to88
double visibleTauEnergy(const reco::GenParticle *)
static std::string DecayMode(unsigned int &MODE_ID)
double p() const final
magnitude of momentum vector
int tauDecayChannel(const reco::GenParticle *tau, int jak_id, unsigned int TauBitMask, double weight)
MonitorElement * TauSpinEffectsH_pipiAcollinearity
size_t numberOfDaughters() const override
number of daughters
MonitorElement * TauSpinEffectsZ_X
double py() const final
y coordinate of momentum vector
edm::ESHandle< HepPDT::ParticleDataTable > fPDGTable
PDT table.
MonitorElement * TauSpinEffectsH_eX
MonitorElement * TauSpinEffectsW_eX
std::vector< std::vector< double > > tmp
edm::EDGetTokenT< reco::GenParticleCollection > genparticleCollectionToken_
void findTauList(const reco::GenParticle *tau, std::vector< const reco::GenParticle * > &TauList)
void findFSRandBrem(const reco::GenParticle *p, bool doBrem, std::vector< const reco::GenParticle * > &ListofFSR, std::vector< const reco::GenParticle * > &ListofBrem)
MonitorElement * LifeTime
MonitorElement * TauSpinEffectsH_muX
MonitorElement * TauSpinEffectsW_UpsilonA1
void countParticles(const reco::GenParticle *p, int &allCount, int &eCount, int &muCount, int &pi0Count, int &piCount, int &rhoCount, int &a1Count, int &KCount, int &KstarCount)
int status() const final
status word
edm::InputTag genparticleCollection_
MonitorElement * TauSpinEffectsZ_Zs
MonitorElement * TauSpinEffectsHpm_X
MonitorElement * TauSpinEffectsHpm_muX
bool AnalyzeTau(const reco::GenParticle *Tau, unsigned int &MODE_ID, unsigned int &TauBitMask, bool dores, bool dopi0)
MonitorElement * TauSpinEffectsZ_X120UP
MonitorElement * TauSpinEffectsH_Xb
MonitorElement * nPrimeTaus
MonitorElement * TauBremPhotonsPt
void spinEffectsZH(const reco::GenParticle *boson, double weight)
const Candidate * mother(size_type=0) const override
return mother at a given position, i = 0, ... numberOfMothers() - 1 (read only mode) ...
unsigned int nProng(unsigned int &TauBitMask)
MonitorElement * TauSpinEffectsH_X
TLorentzVector leadingPionP4(const reco::GenParticle *)