7 #include "CLHEP/Units/defs.h" 8 #include "CLHEP/Units/PhysicalConstants.h" 20 genparticleCollection_(iPSet.getParameter<
edm::
InputTag>(
"genparticleCollection")),
38 i.setCurrentFolder(
"Generator/Tau");
40 nTaus =
dqm.book1dHisto(
"nTaus",
"n analyzed Taus", 1, 0., 1.,
"bin",
"Number of #tau's found");
42 dqm.book1dHisto(
"nPrimeTaus",
"n analyzed prime Taus", 1, 0., 1.,
"bin",
"Number of #tau's from Gauge Bosons");
45 TauPt =
dqm.book1dHisto(
"TauPt",
"Tau pT", 100, 0, 100,
"P_{T}^{#tau}",
"Number of #tau's from Gauge Bosons");
46 TauEta =
dqm.book1dHisto(
"TauEta",
"Tau eta", 100, -2.5, 2.5,
"#eta^{#tau}",
"Number of #tau's from Gauge Bosons");
47 TauPhi =
dqm.book1dHisto(
"TauPhi",
"Tau phi", 100, -3.14, 3.14,
"#phi^{#tau}",
"Number of #tau's from Gauge Bosons");
48 TauProngs =
dqm.book1dHisto(
"TauProngs",
"Tau n prongs", 7, 0, 7,
"N_{prongs}",
"Number of #tau's from Gauge Bosons");
50 "TauDecayChannels",
"Tau decay channels", 13, 0, 13,
"Tau POG Decay Mode",
"Number of #tau's from Gauge Bosons");
65 TauMothers =
dqm.book1dHisto(
"TauMothers",
"Tau mother particles", 10, 0, 10,
"Mother of #tau",
"Number of #tau's");
79 "DecayLength",
"#tau Decay Length", 100, -20, 20,
"L_{#tau} (cm)",
"Number of #tau's from Gauge Bosons");
81 "LifeTime",
"#tau LifeTime ", 500, 0, 10000E-15,
"#tau_{#tau} (s)",
"Number of #tau's from Gauge Bosons");
84 "TauSpinEffectsWX",
"X for pion", 50, 0, 1,
"X",
"Number of #tau#rightarrow#pi#nu from W^{#pm} Bosons");
86 "TauSpinEffectsHpmX",
"X for pion", 50, 0, 1,
"X",
"Number of #tau#rightarrow#pi#nu from H^{#pm} Bosons");
89 "TauSpinEffectsWeX",
"X for e", 50, 0, 1,
"X",
"Number of #tau#rightarrowe#nu#nu from W^{#pm} Bosons");
91 "TauSpinEffectsHpmeX",
"X for e", 50, 0, 1,
"X",
"Number of #tau#rightarrowe#nu#nu from H^{#pm} Bosons");
94 "TauSpinEffectsWmuX",
"X for mu", 50, 0, 1,
"X",
"Number of #tau#rightarrow#mu#nu#nu from W^{#pm} Bosons");
96 "TauSpinEffectsHpmmuX",
"X for mue", 50, 0, 1,
"X",
"Number of #tau#rightarrow#mu#nu#nu from H^{#pm} Bosons");
104 "Number of #tau#rightarrow#rho#nu from Gauge Bosons");
111 "Number of #tau#rightarrow#rho#nu from Gauge Bosons");
119 "Number of #tau#rightarrow#pi#pi#pi#nu from Gauge Bosons");
126 "Number of #tau#rightarrow#pi#pi#pi#nu from Gauge Bosons");
129 dqm.book1dHisto(
"TauSpinEffectsH_pipiAcoplanarity",
130 "H Acoplanarity for #pi^{-}#pi^{+}",
135 "Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
138 dqm.book1dHisto(
"TauSpinEffectsH_pipiAcollinearity",
139 "H Acollinearity for #pi^{-}#pi^{+}",
144 "Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
146 dqm.book1dHisto(
"TauSpinEffectsH_pipiAcollinearityzoom",
147 "H Acollinearity for #pi^{-}#pi^{+}",
152 "Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
155 dqm.book1dHisto(
"TauSpinEffectsZMVis",
160 "M_{#pi^{+}#pi^{-}} (GeV)",
161 "Number of Z#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
163 dqm.book1dHisto(
"TauSpinEffectsHMVis",
168 "M_{#pi^{+}#pi^{-}} (GeV)",
169 "Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
172 dqm.book1dHisto(
"TauSpinEffectsZZs",
178 "Number of Z#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu Events");
180 dqm.book1dHisto(
"TauSpinEffectsHZs",
186 "Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu Events");
189 "TauSpinEffectsZX",
"X for pion of #tau^{-}", 25, 0, 1.0,
"X",
"Number of #tau#rightarrow#pi#nu from Z Bosons");
191 "X for pion of #tau^{-} (50GeV-75GeV)",
196 "Number of #tau#rightarrow#pi#nu from Z(50GeV<M<75GeV) Bosons");
198 "X for pion of #tau^{-} (75GeV-88GeV)",
203 "Number of #tau#rightarrow#pi#nu from Z(75GeV<M<88GeV) Bosons");
205 "X for pion of #tau^{-} (88GeV-100GeV)",
210 "Number of #tau#rightarrow#pi#nu from Z(88GeV<M<100GeV) Bosons");
212 "X for pion of #tau^{-} (100GeV-120GeV)",
217 "Number of #tau#rightarrow#pi#nu from Z(100GeV<M<120GeV) Bosons");
219 "X for pion of #tau^{-} (>120GeV)",
224 "Number of #tau#rightarrow#pi#nu from Z(120GeV<MGeV) Bosons");
227 "TauSpinEffectsH_X",
"X for pion of #tau^{-}", 25, 0, 1.0,
"X",
"Number of #tau#rightarrow#pi#nu from H Bosons");
230 "X for pion of forward emitted #tau^{-}",
235 "Number of #tau#rightarrow#pi#nu from Z Bosons");
237 "X for pion of forward emitted #tau^{-}",
242 "Number of #tau#rightarrow#pi#nu from H Bosons");
245 "X for pion of backward emitted #tau^{-}",
250 "Number of #tau#rightarrow#pi#nu from Z Bosons");
252 "X for pion of backward emitted #tau^{-}",
257 "Number of #tau#rightarrow#pi#nu from H Bosons");
260 "TauSpinEffectsZeX",
"X for e", 50, 0, 1,
"X",
"Number of #tau#rightarrowe#nu#nu from Gauge Bosons");
262 "TauSpinEffectsHeX",
"X for e", 50, 0, 1,
"X",
"Number of #tau#rightarrowe#nu#nu from Gauge Bosons");
265 "TauSpinEffectsZmuX",
"X for mu", 50, 0, 1,
"X",
"Number of #tau#rightarrow#mu#nu#nu from Gauge Bosons");
267 "TauSpinEffectsHmuX",
"X for mu", 50, 0, 1,
"X",
"Number of #tau#rightarrow#mu#nu#nu from Gauge Bosons");
270 dqm.book1dHisto(
"TauSpinEffectsH_rhorhoAcoplanarityminus",
271 "#phi^{*-} (acoplanarity) for Higgs #rightarrow #rho-#rho (y_{1}*y_{2}<0)",
275 "#phi^{*-} (Acoplanarity)",
276 "Number of H#rightarrow#tau^{-}(#rightarrow#rho^{-}#nu)#tau^{+}(#rightarrow#rho^{+}#nu) Events");
278 dqm.book1dHisto(
"TauSpinEffectsH_rhorhoAcoplanarityplus",
279 "#phi^{*+} (acoplanarity) for Higgs #rightarrow #rho-#rho (y_{1}*y_{2}>0)",
283 "#phi^{*+} (Acoplanarity)",
284 "Number of H#rightarrow#tau^{-}(#rightarrow#rho^{-}#nu)#tau^{+}(#rightarrow#rho^{+}#nu) Events");
287 "FSR Photons radiating from/with tau (Gauge Boson)",
291 "N^{FSR Photons radiating from/with #tau}",
292 "Number of #tau's from Gauge Bosons");
294 "Pt of FSR Photons radiating from/with tau (Gauge Boson)",
298 "P_{t}^{FSR Photons radiating from/with #tau [per #tau]} (GeV)",
299 "Number of #tau's from Gauge Bosons");
301 "Pt of FSR Photons radiating from/with tau (Gauge Boson)",
305 "P_{t}^{FSR Photons radiating from/with #tau [per #tau]} (GeV)",
306 "Number of #tau's from Gauge Bosons");
309 "Brem. Photons radiating in tau decay",
313 "N FSR Photons radiating from/with tau",
314 "Number of #tau's from Gauge Bosons");
320 "P_{t}^{Brem. Photons radiating in tau decay} (GeV)",
321 "Number of #tau's from Gauge Bosons");
327 "Sum P_{t}^{Brem. Photons radiating in tau decay} (GeV)",
328 "Number of #tau's from Gauge Bosons");
331 for (
unsigned int j = 0;
j <
NMODEID + 1;
j++) {
332 MODEInvMass.push_back(std::vector<MonitorElement *>());
341 "Number of #tau's from Gauge Bosons"));
351 "Number of #tau's from Gauge Bosons"));
358 "Number of #tau's from Gauge Bosons"));
365 "Number of #tau's from Gauge Bosons"));
379 for (reco::GenParticleCollection::const_iterator iter =
genParticles->begin(); iter !=
genParticles->end(); ++iter) {
383 if (
abs(iter->pdgId()) == 15) {
396 unsigned int jak_id, TauBitMask;
397 if (TD.
AnalyzeTau(&(*iter), jak_id, TauBitMask,
false,
false)) {
402 int tcharge = iter->pdgId() /
abs(iter->pdgId());
405 TLorentzVector LVQ(0, 0, 0, 0);
406 TLorentzVector LVS12(0, 0, 0, 0);
407 TLorentzVector LVS13(0, 0, 0, 0);
408 TLorentzVector LVS23(0, 0, 0, 0);
409 bool haspart1 =
false;
412 for (
unsigned int i = 0;
i <
part.size();
i++) {
416 TLorentzVector tlv(iter->px(), iter->py(), iter->pz(), iter->energy());
417 PV = TVector3(iter->vx(), iter->vy(), iter->vz());
419 TVector3 DL =
SV -
PV;
421 double c(2.99792458E8), Ltau(DL.Mag() / 100) ,
beta(iter->p() / iter->mass());
431 if ((tcharge ==
part.at(
i)->pdgId() /
abs(
part.at(
i)->pdgId()) && TD.
nProng(TauBitMask) == 3) ||
469 for (
unsigned int i = 0;
i <
tau->numberOfMothers();
i++) {
471 if (mother->
pdgId() ==
tau->pdgId())
479 std::vector<const reco::GenParticle *> mothers;
484 mothers.push_back(mother);
492 for (
unsigned int i = 0;
i <
tau->numberOfDaughters();
i++) {
493 if (
tau->daughter(
i)->pdgId() ==
tau->pdgId())
500 TauList.insert(TauList.begin(),
tau);
501 for (
unsigned int i = 0;
i <
tau->numberOfMothers();
i++) {
503 if (mother->
pdgId() ==
tau->pdgId()) {
511 std::vector<const reco::GenParticle *> &ListofFSR,
512 std::vector<const reco::GenParticle *> &ListofBrem) {
514 if (
abs(
p->pdgId()) == 15) {
522 for (
unsigned int i = 0;
i <
p->numberOfDaughters();
i++) {
524 if (
abs((dau)->
pdgId()) ==
abs(photo_ID) && !doBrem) {
525 ListofFSR.push_back(dau);
527 if (
abs((dau)->
pdgId()) ==
abs(photo_ID) && doBrem) {
528 ListofBrem.push_back(dau);
537 std::vector<const reco::GenParticle *> &ListofFSR,
538 double &BosonScale) {
541 int mother_pid =
m->pdgId();
542 if (
m->pdgId() !=
p->pdgId()) {
543 for (
unsigned int i = 0;
i <
m->numberOfDaughters();
i++) {
546 ListofFSR.push_back(dau);
550 if (
abs(mother_pid) == 24)
552 if (
abs(mother_pid) == 23)
554 if (
abs(mother_pid) == 22)
556 if (
abs(mother_pid) == 25)
558 if (
abs(mother_pid) == 35)
560 if (
abs(mother_pid) == 36)
562 if (
abs(mother_pid) == 37)
567 if (
abs(
tau->pdgId()) != 15)
570 if (mother_pid == -2)
573 if (
abs(mother_pid) == 24)
575 if (
abs(mother_pid) == 23)
577 if (
abs(mother_pid) == 22)
579 if (
abs(mother_pid) == 25)
581 if (
abs(mother_pid) == 35)
583 if (
abs(mother_pid) == 36)
585 if (
abs(mother_pid) == 37)
587 int mother_shortpid = (
abs(mother_pid) % 10000);
588 if (mother_shortpid > 500 && mother_shortpid < 600)
590 if (mother_shortpid > 400 && mother_shortpid < 500)
600 if (
tau->status() == 1)
602 int allCount = 0, eCount = 0, muCount = 0, pi0Count = 0, piCount = 0, rhoCount = 0, a1Count = 0, KCount = 0,
605 countParticles(
tau, allCount, eCount, muCount, pi0Count, piCount, rhoCount, a1Count, KCount, KstarCount);
620 if (piCount == 1 && pi0Count == 0)
622 if (piCount == 1 && pi0Count == 1)
624 if (piCount == 1 && pi0Count > 1)
626 if (piCount == 3 && pi0Count == 0)
628 if (piCount == 3 && pi0Count > 0)
649 for (
unsigned int i = 0;
i <
p->numberOfDaughters();
i++) {
651 int pid = dau->
pdgId();
655 else if (
abs(pid) == 13)
657 else if (
abs(pid) == 111)
659 else if (
abs(pid) == 211)
661 else if (
abs(pid) == 213)
663 else if (
abs(pid) == 20213)
665 else if (
abs(pid) == 321)
667 else if (
abs(pid) == 323)
669 countParticles(dau, allCount, eCount, muCount, pi0Count, piCount, rhoCount, a1Count, KCount, KstarCount);
679 pionP4.Boost(-1 * momP4.BoostVector());
680 double energy = pionP4.E() / (momP4.M() / 2);
682 if (
abs(mother) == 24)
684 else if (
abs(mother) == 37)
687 if (
abs(mother) == 24)
689 else if (
abs(mother) == 37)
692 if (
abs(mother) == 24)
694 else if (
abs(mother) == 37)
698 TLorentzVector
rho(0, 0, 0, 0),
pi(0, 0, 0, 0);
699 for (
unsigned int i = 0;
i <
part.size();
i++) {
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++) {
728 if (nplus + nminus == 3 && nplus == 1)
729 gamma = 2 * pi_p.P() /
a1.P() - 1;
730 else if (nplus + nminus == 3 && nminus == 1)
731 gamma = 2 * pi_m.P() /
a1.P() - 1;
734 gamma = 2 * pi_p.P() /
a1.P() - 1;
736 if (
abs(mother) == 24)
738 else if (
abs(mother) == 37)
747 if (ntau == 1 && dau->
pdgId() == 15)
755 TLorentzVector tautau(0, 0, 0, 0);
756 TLorentzVector pipi(0, 0, 0, 0);
757 TLorentzVector taum(0, 0, 0, 0);
758 TLorentzVector taup(0, 0, 0, 0);
759 TLorentzVector rho_plus, rho_minus, pi_rhominus, pi0_rhominus, pi_rhoplus, pi0_rhoplus, pi_plus, pi_minus;
760 bool hasrho_minus(
false), hasrho_plus(
false), haspi_minus(
false), haspi_plus(
false);
761 int nSinglePionDecays(0), nSingleMuonDecays(0), nSingleElectronDecays(0);
763 TLorentzVector Zboson(boson->
px(), boson->
py(), boson->
pz(), boson->
energy());
766 int pid = dau->
pdgId();
769 unsigned int jak_id, TauBitMask;
770 if (TD.
AnalyzeTau(dau, jak_id, TauBitMask,
false,
false)) {
778 nSingleElectronDecays++;
779 TLorentzVector LVtau(dau->
px(), dau->
py(), dau->
pz(), dau->
energy());
785 LVtau.Boost(-1 * Zboson.BoostVector());
786 LVpi.Boost(-1 * Zboson.BoostVector());
804 if (50.0 < Zboson.M() && Zboson.M() < 75.0)
806 if (75.0 < Zboson.M() && Zboson.M() < 88.0)
808 if (88.0 < Zboson.M() && Zboson.M() < 100.0)
810 if (100.0 < Zboson.M() && Zboson.M() < 120.0)
812 if (120.0 < Zboson.M())
819 x1 = LVpi.P() / LVtau.E();
822 x2 = LVpi.P() / LVtau.E();
825 TLorentzVector LVtau(dau->
px(), dau->
py(), dau->
pz(), dau->
energy());
831 for (
unsigned int i = 0;
i <
part.size();
i++) {
832 int pid_d =
part.at(
i)->pdgId();
833 if (
abs(pid_d) == 211 ||
abs(pid_d) == 111) {
840 if (
abs(pid_d) == 111) {
849 if (
abs(pid_d) == 111) {
857 for (
unsigned int i = 0;
i <
part.size();
i++) {
858 int pid_d =
part.at(
i)->pdgId();
859 if (
abs(pid_d) == 211) {
879 if (hasrho_minus && hasrho_plus) {
881 rho_minus = pi_rhominus;
882 rho_minus += pi0_rhominus;
883 rho_plus = pi_rhoplus;
884 rho_plus += pi0_rhoplus;
885 TLorentzVector rhorho = rho_minus;
889 TLorentzVector pi_rhoplusb = pi_rhoplus;
890 pi_rhoplusb.Boost(-1 * rhorho.BoostVector());
891 TLorentzVector pi0_rhoplusb = pi0_rhoplus;
892 pi0_rhoplusb.Boost(-1 * rhorho.BoostVector());
893 TLorentzVector pi_rhominusb = pi_rhominus;
894 pi_rhominusb.Boost(-1 * rhorho.BoostVector());
895 TLorentzVector pi0_rhominusb = pi0_rhominus;
896 pi0_rhominusb.Boost(-1 * rhorho.BoostVector());
899 TVector3 n_plus = pi_rhoplusb.Vect().Cross(pi0_rhoplusb.Vect());
900 TVector3 n_minus = pi_rhominusb.Vect().Cross(pi0_rhominusb.Vect());
903 double Acoplanarity = acos(n_plus.Dot(n_minus) / (n_plus.Mag() * n_minus.Mag()));
904 if (pi_rhominusb.Vect().Dot(n_plus) > 0) {
910 pi_rhoplus.Boost(-1 * taup.BoostVector());
911 pi0_rhoplus.Boost(-1 * taup.BoostVector());
912 pi_rhominus.Boost(-1 * taum.BoostVector());
913 pi0_rhominus.Boost(-1 * taum.BoostVector());
916 double y1 = (pi_rhoplus.E() - pi0_rhoplus.E()) / (pi_rhoplus.E() + pi0_rhoplus.E());
917 double y2 = (pi_rhominus.E() - pi0_rhominus.E()) / (pi_rhominus.E() + pi0_rhominus.E());
925 if (haspi_minus && haspi_plus) {
926 TLorentzVector tauporig = taup;
927 TLorentzVector taumorig = taum;
930 pi_plus.Boost(-1 * Zboson.BoostVector());
931 pi_minus.Boost(-1 * Zboson.BoostVector());
933 taup.Boost(-1 * Zboson.BoostVector());
934 taum.Boost(-1 * Zboson.BoostVector());
938 acos(pi_plus.Vect().Dot(pi_minus.Vect()) / (pi_plus.P() * pi_minus.P())));
940 acos(pi_plus.Vect().Dot(pi_minus.Vect()) / (pi_plus.P() * pi_minus.P())));
943 double proj_m = taum.Vect().Dot(pi_minus.Vect()) / (taum.P() * taum.P());
944 double proj_p = taup.Vect().Dot(pi_plus.Vect()) / (taup.P() * taup.P());
945 TVector3 Tau_m = taum.Vect();
946 TVector3 Tau_p = taup.Vect();
949 TVector3 Pit_m = pi_minus.Vect() - Tau_m;
950 TVector3 Pit_p = pi_plus.Vect() - Tau_p;
952 double Acoplanarity = acos(Pit_m.Dot(Pit_p) / (Pit_p.Mag() * Pit_m.Mag()));
953 TVector3
n = Pit_p.Cross(Pit_m);
954 if (
n.Dot(Tau_m) / Tau_m.Mag() > 0) {
964 if (nSinglePionDecays == 2 && tautau.M() != 0) {
968 double aup =
Zstoa(zsup), alow =
Zstoa(zslow);
969 if (
x2 -
x1 > alow &&
x2 -
x1 < aup) {
970 double zs = (zsup + zslow) / 2;
984 const std::vector<const reco::GenParticle *>
m =
GetMothers(boson);
986 TLorentzVector
Z(0, 0, 0, 0);
987 for (
unsigned int i = 0;
i <
m.size();
i++) {
995 if (
q == 1 && qbar == 1) {
996 if (taum.Vect().Dot(Zboson.Vect()) / (Zboson.P() * taum.P()) > 0) {
1014 double a = 1 -
sqrt(fabs(1.0 - 2 * fabs(zs)));
1026 TLorentzVector p4(0, 0, 0, 0);
1027 for (
unsigned int i = 0;
i <
tau->numberOfDaughters();
i++) {
1029 int pid = dau->
pdgId();
1032 if (!(
abs(pid) == 211 ||
abs(pid) == 13 ||
abs(pid) == 11))
1034 if (dau->
p() > p4.P())
1035 p4 = TLorentzVector(dau->
px(), dau->
py(), dau->
pz(), dau->
energy());
1042 return TLorentzVector(
m->px(),
m->py(),
m->pz(),
m->energy());
1046 TLorentzVector p4(
tau->px(),
tau->py(),
tau->pz(),
tau->energy());
1047 for (
unsigned int i = 0;
i <
tau->numberOfDaughters();
i++) {
1049 int pid = dau->
pdgId();
1052 if (
abs(pid) == 12 ||
abs(pid) == 14 ||
abs(pid) == 16) {
1053 p4 -= TLorentzVector(dau->
px(), dau->
py(), dau->
pz(), dau->
energy());
1061 std::vector<const reco::GenParticle *> TauList;
1065 bool passedW =
false;
1066 std::vector<const reco::GenParticle *> ListofFSR;
1068 std::vector<const reco::GenParticle *> ListofBrem;
1070 std::vector<const reco::GenParticle *> FSR_photos;
1072 double BosonScale(1);
1073 if (!TauList.empty()) {
1079 double photonPtSum = 0;
1080 for (
unsigned int i = 0;
i < ListofBrem.size();
i++) {
1081 photonPtSum += ListofBrem.at(
i)->pt();
1087 if (BosonScale != 0) {
1090 for (
unsigned int i = 0;
i < ListofFSR.size();
i++) {
1091 photonPtSum += ListofFSR.at(
i)->pt();
1094 double FSR_photosSum(0);
1095 for (
unsigned int i = 0;
i < FSR_photos.size();
i++) {
1096 FSR_photosSum += FSR_photos.at(
i)->pt();
MonitorElement * TauFSRPhotonsN
void findFSRandBrem(const reco::GenParticle *p, bool doBrem, std::vector< const reco::GenParticle *> &ListofFSR, std::vector< const reco::GenParticle *> &ListofBrem)
int findMother(const reco::GenParticle *)
MonitorElement * TauSpinEffectsH_rhorhoAcoplanarityplus
MonitorElement * TauSpinEffectsW_X
double pz() const final
z coordinate of momentum vector
const Candidate * mother(size_type=0) const override
return mother at a given position, i = 0, ... numberOfMothers() - 1 (read only mode) ...
MonitorElement * TauSpinEffectsHpm_UpsilonA1
MonitorElement * TauSpinEffectsZ_Xb
MonitorElement * DecayLength
std::vector< std::vector< MonitorElement * > > MODEInvMass
math::XYZTLorentzVectorD LV
TauValidation(const edm::ParameterSet &)
~TauValidation() override
MonitorElement * TauSpinEffectsH_MVis
MonitorElement * TauMothers
MonitorElement * TauSpinEffectsHpm_eX
MonitorElement * TauSpinEffectsZ_X100to120
size_t numberOfDaughters() const override
number of daughters
MonitorElement * TauSpinEffectsW_muX
MonitorElement * TauBremPhotonsN
void findTauList(const reco::GenParticle *tau, std::vector< const reco::GenParticle *> &TauList)
MonitorElement * TauSpinEffectsZ_Xf
bool isLastTauinChain(const reco::GenParticle *tau)
std::string to_string(const V &value)
edm::ESGetToken< HepPDT::ParticleDataTable, edm::DefaultRecord > fPDGTableToken
MonitorElement * TauBremPhotonsPtSum
MonitorElement * TauSpinEffectsH_pipiAcoplanarity
size_t numberOfMothers() const override
number of mothers
MonitorElement * TauSpinEffectsHpm_UpsilonRho
double leadingPionMomentum(const reco::GenParticle *, double weight)
MonitorElement * TauSpinEffectsZ_eX
MonitorElement * TauProngs
TLorentzVector motherP4(const reco::GenParticle *)
int pdgId() const final
PDG identifier.
bool isTauFinalStateParticle(int pdgid)
void dqmBeginRun(const edm::Run &r, const edm::EventSetup &c) override
MonitorElement * TauSpinEffectsH_pipiAcollinearityzoom
void photons(const reco::GenParticle *, double weight)
double px() const final
x coordinate of momentum vector
MonitorElement * TauSpinEffectsW_UpsilonRho
const reco::GenParticle * GetMother(const reco::GenParticle *tau)
MonitorElement * TauSpinEffectsZ_X88to100
double p() const final
magnitude of momentum vector
MonitorElement * TauSpinEffectsH_rhorhoAcoplanarityminus
void analyze(edm::Event const &, edm::EventSetup const &) override
MonitorElement * TauSpinEffectsZ_X50to75
MonitorElement * TauSpinEffectsH_Xf
MonitorElement * TauFSRPhotonsPt
Abs< T >::type abs(const T &t)
MonitorElement * TauSpinEffectsZ_muX
MonitorElement * TauDecayChannels
double py() const final
y coordinate of momentum vector
virtual 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 * TauSpinEffectsH_Zs
MonitorElement * TauFSRPhotonsPtSum
HepPDT::ParticleData ParticleData
int tauMother(const reco::GenParticle *, double weight)
std::vector< const reco::GenParticle * > Get_TauDecayProducts()
void bookHistograms(DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &) override
const std::vector< const reco::GenParticle * > GetMothers(const reco::GenParticle *boson)
MonitorElement * TauSpinEffectsZ_MVis
void FindPhotosFSR(const reco::GenParticle *p, std::vector< const reco::GenParticle *> &ListofFSR, double &BosonScale)
MonitorElement * TauSpinEffectsZ_X75to88
double visibleTauEnergy(const reco::GenParticle *)
static std::string DecayMode(unsigned int &MODE_ID)
int tauDecayChannel(const reco::GenParticle *tau, int jak_id, unsigned int TauBitMask, double weight)
MonitorElement * TauSpinEffectsH_pipiAcollinearity
MonitorElement * TauSpinEffectsZ_X
edm::ESHandle< HepPDT::ParticleDataTable > fPDGTable
PDT table.
MonitorElement * TauSpinEffectsH_eX
MonitorElement * TauSpinEffectsW_eX
edm::EDGetTokenT< reco::GenParticleCollection > genparticleCollectionToken_
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)
edm::InputTag genparticleCollection_
MonitorElement * TauSpinEffectsZ_Zs
MonitorElement * TauSpinEffectsHpm_X
void spinEffectsWHpm(const reco::GenParticle *, int, int, std::vector< const reco::GenParticle *> &part, double weight)
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 * daughter(size_type) const override
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
unsigned int nProng(unsigned int &TauBitMask)
MonitorElement * TauSpinEffectsH_X
TLorentzVector leadingPionP4(const reco::GenParticle *)
double energy() const final
energy