8 #include "CLHEP/Units/defs.h"
9 #include "CLHEP/Units/PhysicalConstants.h"
20 wmanager_(iPSet,consumesCollector())
21 ,hepmcCollection_(iPSet.getParameter<edm::
InputTag>(
"hepmcCollection"))
22 ,tauEtCut(iPSet.getParameter<double>(
"tauEtCutForRtau"))
42 nTaus = i.
book1D(
"nTaus",
"n analyzed Taus", 1, 0., 1.);
127 TauFSRPhotonsN=i.
book1D(
"TauFSRPhotonsN",
"FSR Photons radiating from/with tau (Gauge Boson)", 5 ,-0.5,4.5);
129 TauFSRPhotonsPt=i.
book1D(
"TauFSRPhotonsPt",
"Pt of FSR Photons radiating from/with tau (Gauge Boson)", 100 ,0,100);
131 TauFSRPhotonsPtSum=i.
book1D(
"TauFSRPhotonsPtSum",
"Pt of FSR Photons radiating from/with tau (Gauge Boson)", 100 ,0,100);
143 JAKInvMass.push_back(std::vector<MonitorElement *>());
150 JAKInvMass.at(
j).push_back(i.
book1D(
"M13"+tmp,
"M_{13,"+tmp+
"} (GeV)", 80 ,0,2.0));
151 JAKInvMass.at(
j).push_back(i.
book1D(
"M23"+tmp,
"M_{23,"+tmp+
"} (GeV)", 80 ,0,2.0));
152 JAKInvMass.at(
j).push_back(i.
book1D(
"M12"+tmp,
"M_{12,"+tmp+
"} (GeV)", 80 ,0,2.0));
166 HepMC::GenEvent *myGenEvent =
new HepMC::GenEvent(*(evt->GetEvent()));
173 for(HepMC::GenEvent::particle_const_iterator
iter = myGenEvent->particles_begin();
iter != myGenEvent->particles_end();
iter++) {
177 if(
abs((*iter)->pdg_id())==15){
188 rtau(*
iter,mother,decaychannel,weight);
194 TLorentzVector
Tau((*iter)->momentum().px(),(*iter)->momentum().py(),(*iter)->momentum().pz(),(*iter)->momentum().e());
196 unsigned int jak_id, TauBitMask;
197 if(TD.AnalyzeTau((*
iter),jak_id,TauBitMask,
false,
false)){
200 int tcharge=(*iter)->pdg_id()/
abs((*iter)->pdg_id());
201 std::vector<HepMC::GenParticle*>
part=TD.Get_TauDecayProducts();
203 TLorentzVector LVQ(0,0,0,0);
204 TLorentzVector LVS12(0,0,0,0);
205 TLorentzVector LVS13(0,0,0,0);
206 TLorentzVector LVS23(0,0,0,0);
210 for(
unsigned int i=0;
i<part.size();
i++){
211 if(
abs(part.at(
i)->pdg_id())!=
PdtPdgMini::nu_tau && TD.isTauFinalStateParticle(part.at(
i)->pdg_id()) && !hasDL){
212 PV=TVector3((*iter)->production_vertex()->point3d().x(),(*iter)->production_vertex()->point3d().y(),(*iter)->production_vertex()->point3d().z());
213 SV=TVector3(part.at(
i)->production_vertex()->point3d().x(),part.at(
i)->production_vertex()->point3d().y(),part.at(
i)->production_vertex()->point3d().z());
216 double c(2.99792458E8),Ltau(DL.Mag()/1000),
beta((*iter)->momentum().rho()/(*iter)->momentum().m());
220 if(TD.isTauFinalStateParticle(part.at(
i)->pdg_id()) &&
224 TLorentzVector
LV(part.at(
i)->momentum().px(),part.at(
i)->momentum().py(),part.at(
i)->momentum().pz(),part.at(
i)->momentum().e());
269 if ( tau->production_vertex() ) {
270 HepMC::GenVertex::particle_iterator mother;
271 for (mother = tau->production_vertex()->particles_begin(
HepMC::parents); mother!= tau->production_vertex()->particles_end(
HepMC::parents); mother++ ) {
272 if((*mother)->pdg_id() == tau->pdg_id())
return GetMother(*mother);
281 std::vector<HepMC::GenParticle*> mothers;
282 if ( boson->production_vertex() ) {
283 HepMC::GenVertex::particle_iterator mother;
284 for (mother = boson->production_vertex()->particles_begin(
HepMC::parents); mother!= boson->production_vertex()->particles_end(
HepMC::parents); mother++ ) {
285 if((*mother)->pdg_id() == boson->pdg_id())
return GetMothers(*mother);
286 mothers.push_back(*mother);
295 if ( tau->production_vertex() ) {
296 HepMC::GenVertex::particle_iterator mother;
297 for (mother = tau->production_vertex()->particles_begin(
HepMC::parents); mother!= tau->production_vertex()->particles_end(
HepMC::parents); mother++ ) {
298 mother_pid = (*mother)->pdg_id();
299 if(mother_pid == tau->pdg_id())
return findMother(*mother);
307 if ( tau->end_vertex() ) {
308 HepMC::GenVertex::particle_iterator dau;
309 for (dau = tau->end_vertex()->particles_begin(HepMC::children); dau!= tau->end_vertex()->particles_end(HepMC::children); dau++ ) {
310 int dau_pid = (*dau)->pdg_id();
311 if(dau_pid == tau->pdg_id())
return false;
319 TauList.insert(TauList.begin(),
tau);
320 if ( tau->production_vertex() ) {
321 HepMC::GenVertex::particle_iterator mother;
322 for (mother = tau->production_vertex()->particles_begin(
HepMC::parents); mother!= tau->production_vertex()->particles_end(
HepMC::parents);mother++) {
323 if((*mother)->pdg_id() == tau->pdg_id()){
331 std::vector<const HepMC::GenParticle*> &ListofBrem){
333 if(
abs(p->pdg_id())==15){
338 if ( p->end_vertex() ) {
339 HepMC::GenVertex::particle_iterator dau;
340 for (dau = p->end_vertex()->particles_begin(HepMC::children); dau!= p->end_vertex()->particles_end(HepMC::children); dau++ ) {
343 if(
abs((*dau)->pdg_id()) ==
abs(photo_ID) && !doBrem){ListofFSR.push_back(*dau);}
344 if(
abs((*dau)->pdg_id()) ==
abs(photo_ID) && doBrem){ListofBrem.push_back(*dau);}
345 if((*dau)->end_vertex() && (*dau)->end_vertex()->particles_out_size()>0 &&
abs((*dau)->pdg_id()) != 111 &&
abs((*dau)->pdg_id()) != 221){
357 double mother_pid=m->pdg_id();
358 if(m->end_vertex() && mother_pid!=p->pdg_id()){
359 HepMC::GenVertex::particle_iterator dau;
360 for (dau = m->end_vertex()->particles_begin(HepMC::children); dau!= m->end_vertex()->particles_end(HepMC::children); dau++ ) {
361 int dau_pid = (*dau)->pdg_id();
362 if(fabs(dau_pid) == 22) {
363 ListofFSR.push_back(*dau);
367 if(
abs(mother_pid) == 24) BosonScale=1.0;
368 if(
abs(mother_pid) == 23) BosonScale=2.0;
369 if(
abs(mother_pid) == 22) BosonScale=2.0;
370 if(
abs(mother_pid) == 25) BosonScale=2.0;
371 if(
abs(mother_pid) == 35) BosonScale=2.0;
372 if(
abs(mother_pid) == 36) BosonScale=2.0;
373 if(
abs(mother_pid) == 37) BosonScale=1.0;
379 if(
abs(tau->pdg_id()) != 15 )
return -3;
382 if(mother_pid == -2)
return -2;
385 if(
abs(mother_pid) == 24) label =
W;
386 if(
abs(mother_pid) == 23) label =
Z;
387 if(
abs(mother_pid) == 22) label =
gamma;
388 if(
abs(mother_pid) == 25) label =
HSM;
389 if(
abs(mother_pid) == 35) label =
H0;
390 if(
abs(mother_pid) == 36) label =
A0;
391 if(
abs(mother_pid) == 37) label =
Hpm;
393 int mother_shortpid=(
abs(mother_pid)%10000);
394 if(mother_shortpid>500 && mother_shortpid<600 )label =
B;
395 if(mother_shortpid>400 && mother_shortpid<500)label =
D;
397 if(label==
B || label ==
D || label ==
other)
return -1;
404 if ( tau->end_vertex() ) {
405 HepMC::GenVertex::particle_iterator des;
406 for(des = tau->end_vertex()->particles_begin(HepMC::descendants);
407 des!= tau->end_vertex()->particles_end(HepMC::descendants);++des ) {
408 int pid = (*des)->pdg_id();
410 if((*des)->status() != 1)
continue;
413 int charge = (int) pd->charge();
414 if(charge == 0)
continue;
425 if(tau->status() == 1) channel =
stable;
436 if ( tau->end_vertex() ) {
437 HepMC::GenVertex::particle_iterator des;
438 for(des = tau->end_vertex()->particles_begin(HepMC::descendants);
439 des!= tau->end_vertex()->particles_end(HepMC::descendants);++des ) {
440 int pid = (*des)->pdg_id();
444 if(
abs(pid) == 11) eCount++;
445 if(
abs(pid) == 13) muCount++;
446 if(
abs(pid) == 111) pi0Count++;
447 if(
abs(pid) == 211) piCount++;
448 if(
abs(pid) == 213) rhoCount++;
449 if(
abs(pid) == 20213) a1Count++;
450 if(
abs(pid) == 321) KCount++;
451 if(
abs(pid) == 323) KstarCount++;
456 if(KCount >= 1) channel =
K;
457 if(KstarCount >= 1) channel =
Kstar;
458 if(a1Count >= 1) channel =
a1;
459 if(rhoCount >= 1) channel =
rho;
463 if(piCount == 1 && pi0Count == 0) channel =
pi;
464 if(piCount == 1 && pi0Count == 1) channel =
pi1pi0;
465 if(piCount == 1 && pi0Count > 1) channel =
pinpi0;
466 if(piCount == 3 && pi0Count == 0) channel =
tripi;
467 if(piCount == 3 && pi0Count > 0) channel =
tripinpi0;
469 if(muCount == 1) channel =
muon;
477 if(decay !=
pi1pi0)
return;
479 if(tau->momentum().perp() <
tauEtCut)
return;
485 if(visibleTauE != 0) rTau = ltrack/visibleTauE;
493 TLorentzVector momP4 =
motherP4(tau);
495 pionP4.Boost(-1*momP4.BoostVector());
496 double energy = pionP4.E()/(momP4.M()/2);
512 TLorentzVector
rho(0,0,0,0),
pi(0,0,0,0);
513 for(
unsigned int i=0;
i<part.size();
i++){
514 TLorentzVector
LV(part.at(
i)->momentum().px(),part.at(
i)->momentum().py(),part.at(
i)->momentum().pz(),part.at(
i)->momentum().e());
522 TLorentzVector
a1(0,0,0,0),pi_p(0,0,0,0),pi_m(0,0,0,0);
523 int nplus(0),nminus(0);
524 for(
unsigned int i=0;
i<part.size();
i++){
525 TLorentzVector
LV(part.at(
i)->momentum().px(),part.at(
i)->momentum().py(),part.at(
i)->momentum().pz(),part.at(
i)->momentum().e());
530 if(nplus+nminus==3 && nplus==1) gamma=2*pi_p.Pt()/
a1.Pt()-1;
531 if(nplus+nminus==3 && nminus==1) gamma=2*pi_m.Pt()/
a1.Pt()-1;
533 pi_p+=pi_m; gamma=2*pi_p.Pt()/
a1.Pt()-1;
541 TLorentzVector tautau(0,0,0,0);
542 TLorentzVector pipi(0,0,0,0);
543 TLorentzVector taum(0,0,0,0);
544 TLorentzVector taup(0,0,0,0);
545 TLorentzVector rho_plus,rho_minus,pi_rhominus,pi0_rhominus,pi_rhoplus,pi0_rhoplus,pi_plus,pi_minus;
546 bool hasrho_minus(
false),hasrho_plus(
false),haspi_minus(
false),haspi_plus(
false);
547 int nSinglePionDecays(0),nSingleMuonDecays(0),nSingleElectronDecays(0);
549 TLorentzVector Zboson(boson->momentum().px(),boson->momentum().py(),boson->momentum().pz(),boson->momentum().e());
550 if ( boson->end_vertex() ) {
551 HepMC::GenVertex::particle_iterator des;
552 for(des = boson->end_vertex()->particles_begin(HepMC::children); des!= boson->end_vertex()->particles_end(HepMC::children);++des ) {
553 int pid = (*des)->pdg_id();
558 TLorentzVector LVtau((*des)->momentum().px(),(*des)->momentum().py(),(*des)->momentum().pz(),(*des)->momentum().e());
563 int charge = (int) pd->charge();
564 LVtau.Boost(-1*Zboson.BoostVector());
565 LVpi.Boost(-1*Zboson.BoostVector());
570 if(charge<0){x1=LVpi.P()/LVtau.E(); taum=LVtau;}
571 else{ x2=LVpi.P()/LVtau.E();}
574 if ( (*des)->end_vertex() ) {
575 HepMC::GenVertex::particle_iterator tauprod;
576 TLorentzVector LVtau((*des)->momentum().px(),(*des)->momentum().py(),(*des)->momentum().pz(),(*des)->momentum().e());
577 if(pid == 15)taum=LVtau;
578 if(pid ==-15)taup=LVtau;
579 for(tauprod = (*des)->end_vertex()->particles_begin(HepMC::descendants); tauprod!= (*des)->end_vertex()->particles_end(HepMC::descendants);++tauprod ) {
580 int pid_d = (*tauprod)->pdg_id();
581 if(
abs(pid_d)==211 ||
abs(pid_d)==111){
582 TLorentzVector
LV((*tauprod)->momentum().px(),(*tauprod)->momentum().py(),(*tauprod)->momentum().pz(),(*tauprod)->momentum().e());
585 if(pid_d==-211 ){ pi_rhominus=
LV;}
586 if(
abs(pid_d)==111 ){ pi0_rhominus=
LV;}
590 if(pid_d==211 ){pi_rhoplus=
LV;}
591 if(
abs(pid_d)==111 ){pi0_rhoplus=
LV;}
598 if ( (*des)->end_vertex() ) {
599 HepMC::GenVertex::particle_iterator tauprod;
600 TLorentzVector LVtau((*des)->momentum().px(),(*des)->momentum().py(),(*des)->momentum().pz(),(*des)->momentum().e());
601 if(pid == 15)taum=LVtau;
602 if(pid ==-15)taup=LVtau;
603 for(tauprod = (*des)->end_vertex()->particles_begin(HepMC::descendants); tauprod!= (*des)->end_vertex()->particles_end(HepMC::descendants);++tauprod ) {
604 int pid_d = (*tauprod)->pdg_id();
605 if(
abs(pid_d)==211 ||
abs(pid_d)==111){
606 TLorentzVector
LV((*tauprod)->momentum().px(),(*tauprod)->momentum().py(),(*tauprod)->momentum().pz(),(*tauprod)->momentum().e());
609 if(pid_d==-211 ){ pi_minus=
LV;}
613 if(pid_d==211 ){pi_plus=
LV;}
621 if(hasrho_minus && hasrho_plus){
623 rho_minus=pi_rhominus;
624 rho_minus+=pi0_rhominus;
626 rho_plus+=pi0_rhoplus;
627 TLorentzVector rhorho=rho_minus;rhorho+=rho_plus;
630 TLorentzVector pi_rhoplusb=pi_rhoplus; pi_rhoplusb.Boost(-1*rhorho.BoostVector());
631 TLorentzVector pi0_rhoplusb=pi0_rhoplus; pi0_rhoplusb.Boost(-1*rhorho.BoostVector());
632 TLorentzVector pi_rhominusb=pi_rhominus; pi_rhominusb.Boost(-1*rhorho.BoostVector());
633 TLorentzVector pi0_rhominusb=pi0_rhominus; pi0_rhominusb.Boost(-1*rhorho.BoostVector());
636 TVector3 n_plus=pi_rhoplusb.Vect().Cross(pi0_rhoplusb.Vect());
637 TVector3 n_minus=pi_rhominusb.Vect().Cross(pi0_rhominusb.Vect());
640 double Acoplanarity=acos(n_plus.Dot(n_minus)/(n_plus.Mag()*n_minus.Mag()));
641 if(pi_rhominus.Vect().Dot(n_plus)>0){Acoplanarity*=-1;Acoplanarity+=2*
TMath::Pi();}
644 pi_rhoplus.Boost(-1*taup.BoostVector());
645 pi0_rhoplus.Boost(-1*taup.BoostVector());
646 pi_rhominus.Boost(-1*taum.BoostVector());
647 pi0_rhominus.Boost(-1*taum.BoostVector());
650 double y1=(pi_rhoplus.E()-pi0_rhoplus.E())/(pi_rhoplus.E()+pi0_rhoplus.E());
651 double y2=(pi_rhominus.E()-pi0_rhominus.E())/(pi_rhominus.E()+pi0_rhominus.E());
657 if(haspi_minus && haspi_plus){
658 TLorentzVector tauporig=taup;
659 TLorentzVector taumorig=taum;
662 pi_plus.Boost(-1*Zboson.BoostVector());
663 pi_minus.Boost(-1*Zboson.BoostVector());
665 taup.Boost(-1*Zboson.BoostVector());
666 taum.Boost(-1*Zboson.BoostVector());
673 double proj_m=taum.Vect().Dot(pi_minus.Vect())/(taum.P()*taup.P());
674 double proj_p=taup.Vect().Dot(pi_plus.Vect())/(taup.P()*taup.P());
675 TVector3 Tau_m=taum.Vect();
676 TVector3 Tau_p=taup.Vect();
679 TVector3 Pit_m=pi_minus.Vect()-Tau_m;
680 TVector3 Pit_p=pi_plus.Vect()-Tau_p;
682 double Acoplanarity=acos(Pit_m.Dot(Pit_p)/(Pit_p.Mag()*Pit_m.Mag()));
683 TVector3
n=Pit_p.Cross(Pit_m);
684 if(n.Dot(Tau_m)/Tau_m.Mag()>0){Acoplanarity*=-1; Acoplanarity+=2*
TMath::Pi();}
693 if(nSingleMuonDecays==2){
697 if(nSingleElectronDecays==2){
701 if(nSinglePionDecays == 2 && tautau.M()!= 0) {
706 if(x2-x1>alow && x2-x1<aup){
707 double zs=(zsup+zslow)/2;
717 const std::vector<HepMC::GenParticle*>
m=
GetMothers(boson);
719 TLorentzVector
Z(0,0,0,0);
720 for(
unsigned int i=0;
i<m.size();
i++){
725 if(taum.Vect().Dot(Zboson.Vect())/(Zboson.P()*taum.P())>0){
739 double a=1-
sqrt(fabs(1.0-2*fabs(zs)));
753 TLorentzVector
p4(0,0,0,0);
755 if ( tau->end_vertex() ) {
756 HepMC::GenVertex::particle_iterator des;
757 for(des = tau->end_vertex()->particles_begin(HepMC::descendants);
758 des!= tau->end_vertex()->particles_end(HepMC::descendants);++des ) {
759 int pid = (*des)->pdg_id();
763 if(!(
abs(pid)==211 ||
abs(pid)==13 ||
abs(pid)==11))
continue;
765 if((*des)->momentum().rho() > p4.P()) {
766 p4 = TLorentzVector((*des)->momentum().px(),
767 (*des)->momentum().py(),
768 (*des)->momentum().pz(),
769 (*des)->momentum().e());
779 return TLorentzVector(m->momentum().px(),m->momentum().py(),m->momentum().pz(),m->momentum().e());
783 TLorentzVector
p4(tau->momentum().px(),
784 tau->momentum().py(),
785 tau->momentum().pz(),
786 tau->momentum().e());
788 if ( tau->end_vertex() ) {
789 HepMC::GenVertex::particle_iterator des;
790 for(des = tau->end_vertex()->particles_begin(HepMC::descendants);
791 des!= tau->end_vertex()->particles_end(HepMC::descendants);++des ) {
792 int pid = (*des)->pdg_id();
796 if(
abs(pid) == 12 ||
abs(pid) == 14 ||
abs(pid) == 16) {
797 p4 -= TLorentzVector((*des)->momentum().px(),
798 (*des)->momentum().py(),
799 (*des)->momentum().pz(),
800 (*des)->momentum().e());
810 std::vector<const HepMC::GenParticle*> TauList;
815 std::vector<const HepMC::GenParticle*> ListofFSR; ListofFSR.clear();
816 std::vector<const HepMC::GenParticle*> ListofBrem; ListofBrem.clear();
817 std::vector<const HepMC::GenParticle*> FSR_photos; FSR_photos.clear();
818 double BosonScale(1);
819 if(TauList.size()>0){
825 double photonPtSum=0;
826 for(
unsigned int i=0;
i<ListofBrem.size();
i++){
827 photonPtSum+=ListofBrem.at(
i)->momentum().perp();
836 for(
unsigned int i=0;
i<ListofFSR.size();
i++){
837 photonPtSum+=ListofFSR.at(
i)->momentum().perp();
840 double FSR_photosSum(0);
841 for(
unsigned int i=0;
i<FSR_photos.size();
i++){
842 FSR_photosSum+=FSR_photos.at(
i)->momentum().perp();
void findTauList(const HepMC::GenParticle *tau, std::vector< const HepMC::GenParticle * > &TauList)
MonitorElement * TauFSRPhotonsN
MonitorElement * TauSpinEffectsH_rhorhoAcoplanarityplus
MonitorElement * TauSpinEffectsW_X
MonitorElement * TauSpinEffectsHpm_UpsilonA1
std::vector< std::vector< MonitorElement * > > JAKInvMass
MonitorElement * TauSpinEffectsZ_Xb
MonitorElement * DecayLength
bool getByToken(EDGetToken token, Handle< PROD > &result) const
MonitorElement * TauRtauW
TauValidation(const edm::ParameterSet &)
MonitorElement * TauSpinEffectsH_MVis
void spinEffectsZH(const HepMC::GenParticle *boson, double weight)
MonitorElement * TauMothers
MonitorElement * TauSpinEffectsHpm_eX
MonitorElement * TauSpinEffectsW_muX
MonitorElement * TauBremPhotonsN
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
int tauProngs(const HepMC::GenParticle *, double weight)
edm::EDGetTokenT< edm::HepMCProduct > hepmcCollectionToken_
MonitorElement * TauBremPhotonsPtSum
MonitorElement * TauSpinEffectsH_pipiAcoplanarity
MonitorElement * TauSpinEffectsHpm_UpsilonRho
void getData(T &iHolder) const
MonitorElement * TauSpinEffectsZ_eX
int findMother(const HepMC::GenParticle *)
MonitorElement * TauProngs
int tauMother(const HepMC::GenParticle *, double weight)
int tauDecayChannel(const HepMC::GenParticle *, double weight=0.0)
virtual void dqmBeginRun(const edm::Run &r, const edm::EventSetup &c) override
MonitorElement * TauSpinEffectsH_pipiAcollinearityzoom
const std::vector< HepMC::GenParticle * > GetMothers(const HepMC::GenParticle *boson)
math::XYZTLorentzVectorD LV
MonitorElement * TauSpinEffectsW_UpsilonRho
void photons(const HepMC::GenParticle *, double weight)
MonitorElement * TauSpinEffectsH_rhorhoAcoplanarityminus
virtual void analyze(edm::Event const &, edm::EventSetup const &) override
double leadingPionMomentum(const HepMC::GenParticle *, double weight)
MonitorElement * TauSpinEffectsH_Xf
MonitorElement * book1D(Args &&...args)
MonitorElement * TauFSRPhotonsPt
Abs< T >::type abs(const T &t)
MonitorElement * TauSpinEffectsZ_muX
MonitorElement * TauDecayChannels
edm::InputTag hepmcCollection_
MonitorElement * TauSpinEffectsH_Zs
MonitorElement * TauFSRPhotonsPtSum
HepPDT::ParticleData ParticleData
double visibleTauEnergy(const HepMC::GenParticle *)
TLorentzVector leadingPionP4(const HepMC::GenParticle *)
bool isLastTauinChain(const HepMC::GenParticle *tau)
virtual void bookHistograms(DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &) override
MonitorElement * TauSpinEffectsZ_MVis
void setCurrentFolder(const std::string &fullpath)
MonitorElement * TauSpinEffectsH_pipiAcollinearity
TLorentzVector motherP4(const HepMC::GenParticle *)
void rtau(const HepMC::GenParticle *, int, int, double weight)
void FindPhotosFSR(const HepMC::GenParticle *p, std::vector< const HepMC::GenParticle * > &ListofFSR, double &BosonScale)
MonitorElement * TauSpinEffectsZ_X
edm::ESHandle< HepPDT::ParticleDataTable > fPDGTable
PDT table.
MonitorElement * TauSpinEffectsH_eX
MonitorElement * TauSpinEffectsW_eX
std::vector< std::vector< double > > tmp
const HepMC::GenParticle * GetMother(const HepMC::GenParticle *tau)
void spinEffectsWHpm(const HepMC::GenParticle *, int, int, std::vector< HepMC::GenParticle * > &part, double weight)
MonitorElement * LifeTime
MonitorElement * TauSpinEffectsH_muX
MonitorElement * TauSpinEffectsW_UpsilonA1
void findFSRandBrem(const HepMC::GenParticle *p, bool doBrem, std::vector< const HepMC::GenParticle * > &ListofFSR, std::vector< const HepMC::GenParticle * > &ListofBrem)
MonitorElement * TauSpinEffectsZ_Zs
MonitorElement * TauSpinEffectsHpm_X
MonitorElement * TauSpinEffectsHpm_muX
double weight(const edm::Event &)
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * TauSpinEffectsH_Xb
MonitorElement * nPrimeTaus
MonitorElement * TauBremPhotonsPt
MonitorElement * TauRtauHpm
MonitorElement * TauSpinEffectsH_X