7 #include "CLHEP/Units/defs.h" 8 #include "CLHEP/Units/PhysicalConstants.h" 20 genparticleCollection_(iPSet.getParameter<
edm::
InputTag>(
"genparticleCollection"))
39 nTaus = dqm.
book1dHisto(
"nTaus",
"n analyzed Taus", 1, 0., 1.,
"bin",
"Number of #tau's found");
40 nPrimeTaus = dqm.
book1dHisto(
"nPrimeTaus",
"n analyzed prime Taus", 1, 0., 1.,
"bin",
"Number of #tau's from Gauge Bosons");
43 TauPt = dqm.
book1dHisto(
"TauPt",
"Tau pT", 100 ,0,100,
"P_{T}^{#tau}",
"Number of #tau's from Gauge Bosons");
44 TauEta = dqm.
book1dHisto(
"TauEta",
"Tau eta", 100 ,-2.5,2.5,
"#eta^{#tau}",
"Number of #tau's from Gauge Bosons");
45 TauPhi = dqm.
book1dHisto(
"TauPhi",
"Tau phi", 100 ,-3.14,3.14,
"#phi^{#tau}",
"Number of #tau's from Gauge Bosons");
46 TauProngs = dqm.
book1dHisto(
"TauProngs",
"Tau n prongs", 7 ,0,7,
"N_{prongs}",
"Number of #tau's from Gauge Bosons");
47 TauDecayChannels = dqm.
book1dHisto(
"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");
75 DecayLength = dqm.
book1dHisto(
"DecayLength",
"#tau Decay Length", 100 ,-20,20,
"L_{#tau} (cm)",
"Number of #tau's from Gauge Bosons");
76 LifeTime = dqm.
book1dHisto(
"LifeTime",
"#tau LifeTime ", 500 ,0,10000E-15,
"#tau_{#tau} (s)",
"Number of #tau's from Gauge Bosons");
98 TauSpinEffectsZ_MVis = dqm.
book1dHisto(
"TauSpinEffectsZMVis",
"Mass of pi+ pi-", 25 ,0,1.1,
"M_{#pi^{+}#pi^{-}} (GeV)",
"Number of Z#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
99 TauSpinEffectsH_MVis = dqm.
book1dHisto(
"TauSpinEffectsHMVis",
"Mass of pi+ pi-", 25 ,0,1.1,
"M_{#pi^{+}#pi^{-}} (GeV)",
"Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
104 TauSpinEffectsZ_X= dqm.
book1dHisto(
"TauSpinEffectsZX",
"X for pion of #tau^{-}", 25 ,0,1.0,
"X",
"Number of #tau#rightarrow#pi#nu from Z Bosons");
105 TauSpinEffectsZ_X50to75= dqm.
book1dHisto(
"TauSpinEffectsZX50to75",
"X for pion of #tau^{-} (50GeV-75GeV)", 10 ,0,1.0,
"X",
"Number of #tau#rightarrow#pi#nu from Z(50GeV<M<75GeV) Bosons");
106 TauSpinEffectsZ_X75to88= dqm.
book1dHisto(
"TauSpinEffectsZX75to88",
"X for pion of #tau^{-} (75GeV-88GeV)", 10 ,0,1.0,
"X",
"Number of #tau#rightarrow#pi#nu from Z(75GeV<M<88GeV) Bosons");
107 TauSpinEffectsZ_X88to100= dqm.
book1dHisto(
"TauSpinEffectsZX88to100",
"X for pion of #tau^{-} (88GeV-100GeV)", 10 ,0,1.0,
"X",
"Number of #tau#rightarrow#pi#nu from Z(88GeV<M<100GeV) Bosons");
108 TauSpinEffectsZ_X100to120= dqm.
book1dHisto(
"TauSpinEffectsZX100to120",
"X for pion of #tau^{-} (100GeV-120GeV)", 10 ,0,1.0,
"X",
"Number of #tau#rightarrow#pi#nu from Z(100GeV<M<120GeV) Bosons");
109 TauSpinEffectsZ_X120UP= dqm.
book1dHisto(
"TauSpinEffectsZX120UP",
"X for pion of #tau^{-} (>120GeV)", 10 ,0,1.0,
"X",
"Number of #tau#rightarrow#pi#nu from Z(120GeV<MGeV) Bosons");
112 TauSpinEffectsH_X= dqm.
book1dHisto(
"TauSpinEffectsH_X",
"X for pion of #tau^{-}", 25 ,0,1.0,
"X",
"Number of #tau#rightarrow#pi#nu from H Bosons");
114 TauSpinEffectsZ_Xf = dqm.
book1dHisto(
"TauSpinEffectsZXf",
"X for pion of forward emitted #tau^{-}", 25 ,0,1.0,
"X_{f}",
"Number of #tau#rightarrow#pi#nu from Z Bosons");
115 TauSpinEffectsH_Xf = dqm.
book1dHisto(
"TauSpinEffectsHXf",
"X for pion of forward emitted #tau^{-}", 25 ,0,1.0,
"X_{f}",
"Number of #tau#rightarrow#pi#nu from H Bosons");
117 TauSpinEffectsZ_Xb = dqm.
book1dHisto(
"TauSpinEffectsZXb",
"X for pion of backward emitted #tau^{-}", 25 ,0,1.0,
"X_{b}",
"Number of #tau#rightarrow#pi#nu from Z Bosons");
118 TauSpinEffectsH_Xb = dqm.
book1dHisto(
"TauSpinEffectsHXb",
"X for pion of backward emitted #tau^{-}", 25 ,0,1.0,
"X_{b}",
"Number of #tau#rightarrow#pi#nu from H Bosons");
126 TauSpinEffectsH_rhorhoAcoplanarityminus = dqm.
book1dHisto(
"TauSpinEffectsH_rhorhoAcoplanarityminus",
"#phi^{*-} (acoplanarity) for Higgs #rightarrow #rho-#rho (y_{1}*y_{2}<0)", 32 ,0,2*
TMath::Pi(),
"#phi^{*-} (Acoplanarity)",
"Number of H#rightarrow#tau^{-}(#rightarrow#rho^{-}#nu)#tau^{+}(#rightarrow#rho^{+}#nu) Events");
127 TauSpinEffectsH_rhorhoAcoplanarityplus = dqm.
book1dHisto(
"TauSpinEffectsH_rhorhoAcoplanarityplus",
"#phi^{*+} (acoplanarity) for Higgs #rightarrow #rho-#rho (y_{1}*y_{2}>0)", 32 ,0,2*
TMath::Pi(),
"#phi^{*+} (Acoplanarity)",
"Number of H#rightarrow#tau^{-}(#rightarrow#rho^{-}#nu)#tau^{+}(#rightarrow#rho^{+}#nu) Events");
129 TauFSRPhotonsN=dqm.
book1dHisto(
"TauFSRPhotonsN",
"FSR Photons radiating from/with tau (Gauge Boson)", 5 ,-0.5,4.5,
"N^{FSR Photons radiating from/with #tau}",
"Number of #tau's from Gauge Bosons");
130 TauFSRPhotonsPt=dqm.
book1dHisto(
"TauFSRPhotonsPt",
"Pt of FSR Photons radiating from/with tau (Gauge Boson)", 100 ,0,100,
"P_{t}^{FSR Photons radiating from/with #tau [per #tau]} (GeV)",
"Number of #tau's from Gauge Bosons");
131 TauFSRPhotonsPtSum=dqm.
book1dHisto(
"TauFSRPhotonsPtSum",
"Pt of FSR Photons radiating from/with tau (Gauge Boson)", 100 ,0,100,
"P_{t}^{FSR Photons radiating from/with #tau [per #tau]} (GeV)",
"Number of #tau's from Gauge Bosons");
133 TauBremPhotonsN=dqm.
book1dHisto(
"TauBremPhotonsN",
"Brem. Photons radiating in tau decay", 5 ,-0.5,4.5,
"N FSR Photons radiating from/with tau",
"Number of #tau's from Gauge Bosons");
134 TauBremPhotonsPt=dqm.
book1dHisto(
"TauBremPhotonsPt",
"Sum Brem Pt ", 100 ,0,100,
"P_{t}^{Brem. Photons radiating in tau decay} (GeV)",
"Number of #tau's from Gauge Bosons");
135 TauBremPhotonsPtSum =dqm.
book1dHisto(
"TauBremPhotonsPtSum",
"Sum of Brem Pt ", 100 ,0,100,
"Sum P_{t}^{Brem. Photons radiating in tau decay} (GeV)",
"Number of #tau's from Gauge Bosons");
138 for(
unsigned int j=0; j<
NMODEID+1;j++){
139 MODEInvMass.push_back(std::vector<MonitorElement *>());
141 tmp+=std::to_string(j);
164 for (reco::GenParticleCollection::const_iterator iter = genParticles->begin(); iter != genParticles->end(); ++iter) {
168 if(
abs(iter->pdgId())==15){
181 unsigned int jak_id, TauBitMask;
182 if(TD.
AnalyzeTau(&(*iter),jak_id,TauBitMask,
false,
false)){
187 int tcharge=iter->pdgId()/
abs(iter->pdgId());
190 TLorentzVector LVQ(0,0,0,0);
191 TLorentzVector LVS12(0,0,0,0);
192 TLorentzVector LVS13(0,0,0,0);
193 TLorentzVector LVS23(0,0,0,0);
197 for(
unsigned int i=0;
i<part.size();
i++){
200 TLorentzVector tlv(iter->px(),iter->py(),iter->pz(),iter->energy());
201 PV=TVector3(iter->vx(),iter->vy(),iter->vz());
202 SV=TVector3(part.at(
i)->vx(),part.at(
i)->vy(),part.at(
i)->vz());
205 double c(2.99792458E8),Ltau(DL.Mag()/100),
beta(iter->p()/iter->mass());
211 TLorentzVector
LV(part.at(
i)->px(),part.at(
i)->py(),part.at(
i)->pz(),part.at(
i)->energy());
265 std::vector<const reco::GenParticle*> mothers;
269 mothers.push_back(mother);
286 TauList.insert(TauList.begin(),
tau);
296 std::vector<const reco::GenParticle*> &ListofBrem){
305 if(
abs((dau)->
pdgId()) ==
abs(photo_ID) && !doBrem){ListofFSR.push_back(dau);}
306 if(
abs((dau)->
pdgId()) ==
abs(photo_ID) && doBrem){ListofBrem.push_back(dau);}
316 int mother_pid=m->
pdgId();
321 ListofFSR.push_back(dau);
325 if(
abs(mother_pid) == 24) BosonScale=1.0;
326 if(
abs(mother_pid) == 23) BosonScale=2.0;
327 if(
abs(mother_pid) == 22) BosonScale=2.0;
328 if(
abs(mother_pid) == 25) BosonScale=2.0;
329 if(
abs(mother_pid) == 35) BosonScale=2.0;
330 if(
abs(mother_pid) == 36) BosonScale=2.0;
331 if(
abs(mother_pid) == 37) BosonScale=1.0;
335 if(
abs(tau->
pdgId()) != 15 )
return -3;
337 if(mother_pid == -2)
return -2;
339 if(
abs(mother_pid) == 24) label =
W;
340 if(
abs(mother_pid) == 23) label =
Z;
341 if(
abs(mother_pid) == 22) label =
gamma;
342 if(
abs(mother_pid) == 25) label =
HSM;
343 if(
abs(mother_pid) == 35) label =
H0;
344 if(
abs(mother_pid) == 36) label =
A0;
345 if(
abs(mother_pid) == 37) label =
Hpm;
346 int mother_shortpid=(
abs(mother_pid)%10000);
347 if(mother_shortpid>500 && mother_shortpid<600 )label =
B;
348 if(mother_shortpid>400 && mother_shortpid<500)label =
D;
350 if(label==
B || label ==
D || label ==
other)
return -1;
367 countParticles(tau,allCount,eCount,muCount,pi0Count,piCount,rhoCount,a1Count,KCount,KstarCount);
370 if(KCount >= 1) channel =
K;
371 if(KstarCount >= 1) channel =
Kstar;
372 if(a1Count >= 1) channel =
a1;
373 if(rhoCount >= 1) channel =
rho;
377 if(piCount == 1 && pi0Count == 0) channel =
pi;
378 if(piCount == 1 && pi0Count == 1) channel =
pi1pi0;
379 if(piCount == 1 && pi0Count > 1) channel =
pinpi0;
380 if(piCount == 3 && pi0Count == 0) channel =
tripi;
381 if(piCount == 3 && pi0Count > 0) channel =
tripinpi0;
383 if(muCount == 1) channel =
muon;
389 int &pi0Count,
int &piCount,
int &rhoCount,
int &a1Count,
int &KCount,
int &KstarCount){
394 if(
abs(pid) == 11) eCount++;
395 if(
abs(pid) == 13) muCount++;
396 if(
abs(pid) == 111) pi0Count++;
397 if(
abs(pid) == 211) piCount++;
398 if(
abs(pid) == 213) rhoCount++;
399 if(
abs(pid) == 20213) a1Count++;
400 if(
abs(pid) == 321) KCount++;
401 if(
abs(pid) == 323) KstarCount++;
402 countParticles(dau,allCount,eCount,muCount,pi0Count,piCount,rhoCount,a1Count,KCount,KstarCount);
410 TLorentzVector momP4 =
motherP4(tau);
412 pionP4.Boost(-1*momP4.BoostVector());
413 double energy = pionP4.E()/(momP4.M()/2);
428 TLorentzVector
rho(0,0,0,0),
pi(0,0,0,0);
429 for(
unsigned int i=0;
i<part.size();
i++){
430 TLorentzVector
LV(part.at(
i)->px(),part.at(
i)->py(),part.at(
i)->pz(),part.at(
i)->energy());
438 TLorentzVector
a1(0,0,0,0),pi_p(0,0,0,0),pi_m(0,0,0,0);
439 int nplus(0),nminus(0);
440 for(
unsigned int i=0;
i<part.size();
i++){
441 TLorentzVector
LV(part.at(
i)->px(),part.at(
i)->py(),part.at(
i)->pz(),part.at(
i)->energy());
446 if(nplus+nminus==3 && nplus==1) gamma=2*pi_p.P()/
a1.P()-1;
447 if(nplus+nminus==3 && nminus==1) gamma=2*pi_m.P()/
a1.P()-1;
449 pi_p+=pi_m; gamma=2*pi_p.P()/
a1.P()-1;
460 if(ntau==1 && dau->
pdgId() == 15)
return;
465 TLorentzVector tautau(0,0,0,0);
466 TLorentzVector pipi(0,0,0,0);
467 TLorentzVector taum(0,0,0,0);
468 TLorentzVector taup(0,0,0,0);
469 TLorentzVector rho_plus,rho_minus,pi_rhominus,pi0_rhominus,pi_rhoplus,pi0_rhoplus,pi_plus,pi_minus;
470 bool hasrho_minus(
false),hasrho_plus(
false),haspi_minus(
false),haspi_plus(
false);
471 int nSinglePionDecays(0),nSingleMuonDecays(0),nSingleElectronDecays(0);
473 TLorentzVector Zboson(boson->
px(),boson->
py(),boson->
pz(),boson->
energy());
479 unsigned int jak_id, TauBitMask;
480 if(TD.
AnalyzeTau(dau,jak_id,TauBitMask,
false,
false)){
486 TLorentzVector LVtau(dau->
px(),dau->
py(),dau->
pz(),dau->
energy());
492 LVtau.Boost(-1*Zboson.BoostVector());
493 LVpi.Boost(-1*Zboson.BoostVector());
519 if(charge<0){
x1=LVpi.P()/LVtau.E(); taum=LVtau;}
520 else{ x2=LVpi.P()/LVtau.E();}
522 TLorentzVector LVtau(dau->
px(),dau->
py(),dau->
pz(),dau->
energy());
523 if(pid == 15)taum=LVtau;
524 if(pid ==-15)taup=LVtau;
526 for(
unsigned int i=0;
i<part.size();
i++){
527 int pid_d = part.at(
i)->pdgId();
528 if(
abs(pid_d)==211 ||
abs(pid_d)==111){
529 TLorentzVector
LV(part.at(
i)->px(),part.at(
i)->py(),part.at(
i)->pz(),part.at(
i)->energy());
532 if(pid_d==-211 ){ pi_rhominus=
LV;}
533 if(
abs(pid_d)==111 ){ pi0_rhominus=
LV;}
537 if(pid_d==211 ){pi_rhoplus=
LV;}
538 if(
abs(pid_d)==111 ){pi0_rhoplus=
LV;}
544 for(
unsigned int i=0;
i<part.size();
i++){
545 int pid_d = part.at(
i)->pdgId();
546 if(
abs(pid_d)==211 ){
547 TLorentzVector
LV(part.at(
i)->px(),part.at(
i)->py(),part.at(
i)->pz(),part.at(
i)->energy());
550 if(pid_d==-211 ){ pi_minus=
LV;}
554 if(pid_d==211 ){pi_plus=
LV;}
562 if(hasrho_minus && hasrho_plus){
564 rho_minus=pi_rhominus;
565 rho_minus+=pi0_rhominus;
567 rho_plus+=pi0_rhoplus;
568 TLorentzVector rhorho=rho_minus;rhorho+=rho_plus;
571 TLorentzVector pi_rhoplusb=pi_rhoplus; pi_rhoplusb.Boost(-1*rhorho.BoostVector());
572 TLorentzVector pi0_rhoplusb=pi0_rhoplus; pi0_rhoplusb.Boost(-1*rhorho.BoostVector());
573 TLorentzVector pi_rhominusb=pi_rhominus; pi_rhominusb.Boost(-1*rhorho.BoostVector());
574 TLorentzVector pi0_rhominusb=pi0_rhominus; pi0_rhominusb.Boost(-1*rhorho.BoostVector());
577 TVector3 n_plus=pi_rhoplusb.Vect().Cross(pi0_rhoplusb.Vect());
578 TVector3 n_minus=pi_rhominusb.Vect().Cross(pi0_rhominusb.Vect());
581 double Acoplanarity=acos(n_plus.Dot(n_minus)/(n_plus.Mag()*n_minus.Mag()));
582 if(pi_rhominusb.Vect().Dot(n_plus)>0){Acoplanarity*=-1;Acoplanarity+=2*
TMath::Pi();}
585 pi_rhoplus.Boost(-1*taup.BoostVector());
586 pi0_rhoplus.Boost(-1*taup.BoostVector());
587 pi_rhominus.Boost(-1*taum.BoostVector());
588 pi0_rhominus.Boost(-1*taum.BoostVector());
591 double y1=(pi_rhoplus.E()-pi0_rhoplus.E())/(pi_rhoplus.E()+pi0_rhoplus.E());
592 double y2=(pi_rhominus.E()-pi0_rhominus.E())/(pi_rhominus.E()+pi0_rhominus.E());
598 if(haspi_minus && haspi_plus){
599 TLorentzVector tauporig=taup;
600 TLorentzVector taumorig=taum;
603 pi_plus.Boost(-1*Zboson.BoostVector());
604 pi_minus.Boost(-1*Zboson.BoostVector());
606 taup.Boost(-1*Zboson.BoostVector());
607 taum.Boost(-1*Zboson.BoostVector());
614 double proj_m=taum.Vect().Dot(pi_minus.Vect())/(taum.P()*taum.P());
615 double proj_p=taup.Vect().Dot(pi_plus.Vect())/(taup.P()*taup.P());
616 TVector3 Tau_m=taum.Vect();
617 TVector3 Tau_p=taup.Vect();
620 TVector3 Pit_m=pi_minus.Vect()-Tau_m;
621 TVector3 Pit_p=pi_plus.Vect()-Tau_p;
623 double Acoplanarity=acos(Pit_m.Dot(Pit_p)/(Pit_p.Mag()*Pit_m.Mag()));
624 TVector3
n=Pit_p.Cross(Pit_m);
625 if(n.Dot(Tau_m)/Tau_m.Mag()>0){Acoplanarity*=-1; Acoplanarity+=2*
TMath::Pi();}
631 if(nSinglePionDecays == 2 && tautau.M()!= 0) {
636 if(x2-
x1>alow && x2-
x1<aup){
637 double zs=(zsup+zslow)/2;
647 const std::vector<const reco::GenParticle*>
m=
GetMothers(boson);
649 TLorentzVector
Z(0,0,0,0);
650 for(
unsigned int i=0;
i<m.size();
i++){
655 if(taum.Vect().Dot(Zboson.Vect())/(Zboson.P()*taum.P())>0){
670 double a=1-
sqrt(fabs(1.0-2*fabs(zs)));
683 TLorentzVector
p4(0,0,0,0);
688 if(!(
abs(pid)==211 ||
abs(pid)==13 ||
abs(pid)==11))
continue;
689 if(dau->
p() > p4.P()) p4 = TLorentzVector(dau->
px(),dau->
py(),dau->
pz(),dau->
energy());
696 return TLorentzVector(m->
px(),m->
py(),m->
pz(),m->
energy());
705 if(
abs(pid) == 12 ||
abs(pid) == 14 ||
abs(pid) == 16) {
714 std::vector<const reco::GenParticle*> TauList;
719 std::vector<const reco::GenParticle*> ListofFSR; ListofFSR.clear();
720 std::vector<const reco::GenParticle*> ListofBrem; ListofBrem.clear();
721 std::vector<const reco::GenParticle*> FSR_photos; FSR_photos.clear();
722 double BosonScale(1);
723 if(!TauList.empty()){
729 double photonPtSum=0;
730 for(
unsigned int i=0;
i<ListofBrem.size();
i++){
731 photonPtSum+=ListofBrem.at(
i)->pt();
740 for(
unsigned int i=0;
i<ListofFSR.size();
i++){
741 photonPtSum+=ListofFSR.at(
i)->pt();
744 double FSR_photosSum(0);
745 for(
unsigned int i=0;
i<FSR_photos.size();
i++){
746 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)
void getData(T &iHolder) const
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
void photons(const reco::GenParticle *, double weight)
MonitorElement * TauSpinEffectsW_UpsilonRho
const reco::GenParticle * GetMother(const reco::GenParticle *tau)
MonitorElement * TauSpinEffectsZ_X88to100
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)
void setCurrentFolder(const std::string &fullpath)
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 *)