8 #include "CLHEP/Units/defs.h"
9 #include "CLHEP/Units/PhysicalConstants.h"
21 ,hepmcCollection_(iPSet.getParameter<edm::
InputTag>(
"hepmcCollection"))
22 ,tauEtCut(iPSet.getParameter<double>(
"tauEtCutForRtau"))
134 TauFSRPhotonsPt=
dbe->
book1D(
"TauFSRPhotonsPt",
"Pt of FSR Photons radiating from/with tau (Gauge Boson)", 100 ,0,100);
148 JAKInvMass.push_back(std::vector<MonitorElement *>());
183 HepMC::GenEvent *myGenEvent =
new HepMC::GenEvent(*(evt->GetEvent()));
198 for(HepMC::GenEvent::particle_const_iterator iter = myGenEvent->particles_begin(); iter != myGenEvent->particles_end(); iter++) {
202 if(
abs((*iter)->pdg_id())==15){
213 rtau(*iter,mother,decaychannel,weight);
220 unsigned int jak_id, TauBitMask;
221 if(TD.
AnalyzeTau((*iter),jak_id,TauBitMask,
false,
false)){
224 int tcharge=(*iter)->pdg_id()/
abs((*iter)->pdg_id());
227 TLorentzVector LVQ(0,0,0,0);
228 TLorentzVector LVS12(0,0,0,0);
229 TLorentzVector LVS13(0,0,0,0);
230 TLorentzVector LVS23(0,0,0,0);
234 for(
unsigned int i=0;
i<part.size();
i++){
236 PV=TVector3((*iter)->production_vertex()->point3d().x(),(*iter)->production_vertex()->point3d().y(),(*iter)->production_vertex()->point3d().z());
237 SV=TVector3(part.at(
i)->production_vertex()->point3d().x(),part.at(
i)->production_vertex()->point3d().y(),part.at(
i)->production_vertex()->point3d().z());
240 double c(2.99792458E8),Ltau(DL.Mag()/1000),
beta((*iter)->momentum().rho()/(*iter)->momentum().m());
248 TLorentzVector
LV(part.at(
i)->momentum().px(),part.at(
i)->momentum().py(),part.at(
i)->momentum().pz(),part.at(
i)->momentum().e());
293 if ( tau->production_vertex() ) {
294 HepMC::GenVertex::particle_iterator mother;
295 for (mother = tau->production_vertex()->particles_begin(
HepMC::parents); mother!= tau->production_vertex()->particles_end(
HepMC::parents); mother++ ) {
296 if((*mother)->pdg_id() == tau->pdg_id())
return GetMother(*mother);
305 std::vector<HepMC::GenParticle*> mothers;
306 if ( boson->production_vertex() ) {
307 HepMC::GenVertex::particle_iterator mother;
308 for (mother = boson->production_vertex()->particles_begin(
HepMC::parents); mother!= boson->production_vertex()->particles_end(
HepMC::parents); mother++ ) {
309 if((*mother)->pdg_id() == boson->pdg_id())
return GetMothers(*mother);
310 mothers.push_back(*mother);
319 if ( tau->production_vertex() ) {
320 HepMC::GenVertex::particle_iterator mother;
321 for (mother = tau->production_vertex()->particles_begin(
HepMC::parents); mother!= tau->production_vertex()->particles_end(
HepMC::parents); mother++ ) {
322 mother_pid = (*mother)->pdg_id();
323 if(mother_pid == tau->pdg_id())
return findMother(*mother);
331 if ( tau->end_vertex() ) {
332 HepMC::GenVertex::particle_iterator dau;
333 for (dau = tau->end_vertex()->particles_begin(HepMC::children); dau!= tau->end_vertex()->particles_end(HepMC::children); dau++ ) {
334 int dau_pid = (*dau)->pdg_id();
335 if(dau_pid == tau->pdg_id())
return false;
343 TauList.insert(TauList.begin(),
tau);
344 if ( tau->production_vertex() ) {
345 HepMC::GenVertex::particle_iterator mother;
346 for (mother = tau->production_vertex()->particles_begin(
HepMC::parents); mother!= tau->production_vertex()->particles_end(
HepMC::parents);mother++) {
347 if((*mother)->pdg_id() == tau->pdg_id()){
355 std::vector<const HepMC::GenParticle*> &ListofBrem){
357 if(
abs(p->pdg_id())==15){
362 if ( p->end_vertex() ) {
363 HepMC::GenVertex::particle_iterator dau;
364 for (dau = p->end_vertex()->particles_begin(HepMC::children); dau!= p->end_vertex()->particles_end(HepMC::children); dau++ ) {
367 if(
abs((*dau)->pdg_id()) ==
abs(photo_ID) && !doBrem){ListofFSR.push_back(*dau);}
368 if(
abs((*dau)->pdg_id()) ==
abs(photo_ID) && doBrem){ListofBrem.push_back(*dau);}
369 if((*dau)->end_vertex() && (*dau)->end_vertex()->particles_out_size()>0 &&
abs((*dau)->pdg_id()) != 111 &&
abs((*dau)->pdg_id()) != 221){
381 double mother_pid=m->pdg_id();
382 if(m->end_vertex() && mother_pid!=p->pdg_id()){
383 HepMC::GenVertex::particle_iterator dau;
384 for (dau = m->end_vertex()->particles_begin(HepMC::children); dau!= m->end_vertex()->particles_end(HepMC::children); dau++ ) {
385 int dau_pid = (*dau)->pdg_id();
386 if(fabs(dau_pid) == 22) {
387 ListofFSR.push_back(*dau);
391 if(
abs(mother_pid) == 24) BosonScale=1.0;
392 if(
abs(mother_pid) == 23) BosonScale=2.0;
393 if(
abs(mother_pid) == 22) BosonScale=2.0;
394 if(
abs(mother_pid) == 25) BosonScale=2.0;
395 if(
abs(mother_pid) == 35) BosonScale=2.0;
396 if(
abs(mother_pid) == 36) BosonScale=2.0;
397 if(
abs(mother_pid) == 37) BosonScale=1.0;
403 if(
abs(tau->pdg_id()) != 15 )
return -3;
406 if(mother_pid == -2)
return -2;
409 if(
abs(mother_pid) == 24) label =
W;
410 if(
abs(mother_pid) == 23) label =
Z;
411 if(
abs(mother_pid) == 22) label =
gamma;
412 if(
abs(mother_pid) == 25) label =
HSM;
413 if(
abs(mother_pid) == 35) label =
H0;
414 if(
abs(mother_pid) == 36) label =
A0;
415 if(
abs(mother_pid) == 37) label =
Hpm;
417 int mother_shortpid=(
abs(mother_pid)%10000);
418 if(mother_shortpid>500 && mother_shortpid<600 )label =
B;
419 if(mother_shortpid>400 && mother_shortpid<500)label =
D;
421 if(label==
B || label ==
D || label ==
other)
return -1;
428 if ( tau->end_vertex() ) {
429 HepMC::GenVertex::particle_iterator des;
430 for(des = tau->end_vertex()->particles_begin(HepMC::descendants);
431 des!= tau->end_vertex()->particles_end(HepMC::descendants);++des ) {
432 int pid = (*des)->pdg_id();
434 if((*des)->status() != 1)
continue;
437 int charge = (int) pd->charge();
438 if(charge == 0)
continue;
449 if(tau->status() == 1) channel =
stable;
460 if ( tau->end_vertex() ) {
461 HepMC::GenVertex::particle_iterator des;
462 for(des = tau->end_vertex()->particles_begin(HepMC::descendants);
463 des!= tau->end_vertex()->particles_end(HepMC::descendants);++des ) {
464 int pid = (*des)->pdg_id();
468 if(
abs(pid) == 11) eCount++;
469 if(
abs(pid) == 13) muCount++;
470 if(
abs(pid) == 111) pi0Count++;
471 if(
abs(pid) == 211) piCount++;
472 if(
abs(pid) == 213) rhoCount++;
473 if(
abs(pid) == 20213) a1Count++;
474 if(
abs(pid) == 321) KCount++;
475 if(
abs(pid) == 323) KstarCount++;
480 if(KCount >= 1) channel =
K;
481 if(KstarCount >= 1) channel =
Kstar;
482 if(a1Count >= 1) channel =
a1;
483 if(rhoCount >= 1) channel =
rho;
487 if(piCount == 1 && pi0Count == 0) channel =
pi;
488 if(piCount == 1 && pi0Count == 1) channel =
pi1pi0;
489 if(piCount == 1 && pi0Count > 1) channel =
pinpi0;
490 if(piCount == 3 && pi0Count == 0) channel =
tripi;
491 if(piCount == 3 && pi0Count > 0) channel =
tripinpi0;
493 if(muCount == 1) channel =
muon;
501 if(decay !=
pi1pi0)
return;
503 if(tau->momentum().perp() <
tauEtCut)
return;
509 if(visibleTauE != 0) rTau = ltrack/visibleTauE;
517 TLorentzVector momP4 =
motherP4(tau);
519 pionP4.Boost(-1*momP4.BoostVector());
520 double energy = pionP4.E()/(momP4.M()/2);
536 TLorentzVector
rho(0,0,0,0),
pi(0,0,0,0);
537 for(
unsigned int i=0;
i<part.size();
i++){
538 TLorentzVector
LV(part.at(
i)->momentum().px(),part.at(
i)->momentum().py(),part.at(
i)->momentum().pz(),part.at(
i)->momentum().e());
546 TLorentzVector
a1(0,0,0,0),pi_p(0,0,0,0),pi_m(0,0,0,0);
547 int nplus(0),nminus(0);
548 for(
unsigned int i=0;
i<part.size();
i++){
549 TLorentzVector
LV(part.at(
i)->momentum().px(),part.at(
i)->momentum().py(),part.at(
i)->momentum().pz(),part.at(
i)->momentum().e());
554 if(nplus+nminus==3 && nplus==1) gamma=2*pi_p.Pt()/
a1.Pt()-1;
555 if(nplus+nminus==3 && nminus==1) gamma=2*pi_m.Pt()/
a1.Pt()-1;
557 pi_p+=pi_m; gamma=2*pi_p.Pt()/
a1.Pt()-1;
565 TLorentzVector tautau(0,0,0,0);
566 TLorentzVector pipi(0,0,0,0);
567 TLorentzVector taum(0,0,0,0);
568 TLorentzVector taup(0,0,0,0);
569 TLorentzVector rho_plus,rho_minus,pi_rhominus,pi0_rhominus,pi_rhoplus,pi0_rhoplus,pi_plus,pi_minus;
570 bool hasrho_minus(
false),hasrho_plus(
false),haspi_minus(
false),haspi_plus(
false);
571 int nSinglePionDecays(0),nSingleMuonDecays(0),nSingleElectronDecays(0);
573 TLorentzVector Zboson(boson->momentum().px(),boson->momentum().py(),boson->momentum().pz(),boson->momentum().e());
574 if ( boson->end_vertex() ) {
575 HepMC::GenVertex::particle_iterator des;
576 for(des = boson->end_vertex()->particles_begin(HepMC::children); des!= boson->end_vertex()->particles_end(HepMC::children);++des ) {
577 int pid = (*des)->pdg_id();
582 TLorentzVector LVtau((*des)->momentum().px(),(*des)->momentum().py(),(*des)->momentum().pz(),(*des)->momentum().e());
587 int charge = (int) pd->charge();
588 LVtau.Boost(-1*Zboson.BoostVector());
589 LVpi.Boost(-1*Zboson.BoostVector());
596 int n=histo->FindBin(tautau.M());
597 double mean=histo->GetBinContent(n);
598 double err=histo->GetBinError(n);
599 double x=(6.0*(LVpi.P()/LVtau.E()-0.5));
605 mean+=d/n_taupinu[
n];
608 if(n_taupinu[n]>1){err=
sqrt((M2/(n_taupinu[n]-1))/n_taupinu[n]);}
612 histo->SetBinContent(n,mean);
613 histo->SetBinError(n,err);
616 if(charge<0){x1=LVpi.P()/LVtau.E(); taum=LVtau;}
617 else{ x2=LVpi.P()/LVtau.E();}
620 if ( (*des)->end_vertex() ) {
621 HepMC::GenVertex::particle_iterator tauprod;
622 TLorentzVector LVtau((*des)->momentum().px(),(*des)->momentum().py(),(*des)->momentum().pz(),(*des)->momentum().e());
623 if(pid == 15)taum=LVtau;
624 if(pid ==-15)taup=LVtau;
625 for(tauprod = (*des)->end_vertex()->particles_begin(HepMC::descendants); tauprod!= (*des)->end_vertex()->particles_end(HepMC::descendants);++tauprod ) {
626 int pid_d = (*tauprod)->pdg_id();
627 if(
abs(pid_d)==211 ||
abs(pid_d)==111){
628 TLorentzVector
LV((*tauprod)->momentum().px(),(*tauprod)->momentum().py(),(*tauprod)->momentum().pz(),(*tauprod)->momentum().e());
631 if(pid_d==-211 ){ pi_rhominus=
LV;}
632 if(
abs(pid_d)==111 ){ pi0_rhominus=
LV;}
636 if(pid_d==211 ){pi_rhoplus=
LV;}
637 if(
abs(pid_d)==111 ){pi0_rhoplus=
LV;}
644 if ( (*des)->end_vertex() ) {
645 HepMC::GenVertex::particle_iterator tauprod;
646 TLorentzVector LVtau((*des)->momentum().px(),(*des)->momentum().py(),(*des)->momentum().pz(),(*des)->momentum().e());
647 if(pid == 15)taum=LVtau;
648 if(pid ==-15)taup=LVtau;
649 for(tauprod = (*des)->end_vertex()->particles_begin(HepMC::descendants); tauprod!= (*des)->end_vertex()->particles_end(HepMC::descendants);++tauprod ) {
650 int pid_d = (*tauprod)->pdg_id();
651 if(
abs(pid_d)==211 ||
abs(pid_d)==111){
652 TLorentzVector
LV((*tauprod)->momentum().px(),(*tauprod)->momentum().py(),(*tauprod)->momentum().pz(),(*tauprod)->momentum().e());
655 if(pid_d==-211 ){ pi_minus=
LV;}
659 if(pid_d==211 ){pi_plus=
LV;}
667 if(hasrho_minus && hasrho_plus){
669 rho_minus=pi_rhominus;
670 rho_minus+=pi0_rhominus;
672 rho_plus+=pi0_rhoplus;
673 TLorentzVector rhorho=rho_minus;rhorho+=rho_plus;
676 TLorentzVector pi_rhoplusb=pi_rhoplus; pi_rhoplusb.Boost(-1*rhorho.BoostVector());
677 TLorentzVector pi0_rhoplusb=pi0_rhoplus; pi0_rhoplusb.Boost(-1*rhorho.BoostVector());
678 TLorentzVector pi_rhominusb=pi_rhominus; pi_rhominusb.Boost(-1*rhorho.BoostVector());
679 TLorentzVector pi0_rhominusb=pi0_rhominus; pi0_rhominusb.Boost(-1*rhorho.BoostVector());
682 TVector3 n_plus=pi_rhoplusb.Vect().Cross(pi0_rhoplusb.Vect());
683 TVector3 n_minus=pi_rhominusb.Vect().Cross(pi0_rhominusb.Vect());
686 double Acoplanarity=acos(n_plus.Dot(n_minus)/(n_plus.Mag()*n_minus.Mag()));
687 if(pi_rhominus.Vect().Dot(n_plus)>0){Acoplanarity*=-1;Acoplanarity+=2*
TMath::Pi();}
690 pi_rhoplus.Boost(-1*taup.BoostVector());
691 pi0_rhoplus.Boost(-1*taup.BoostVector());
692 pi_rhominus.Boost(-1*taum.BoostVector());
693 pi0_rhominus.Boost(-1*taum.BoostVector());
696 double y1=(pi_rhoplus.E()-pi0_rhoplus.E())/(pi_rhoplus.E()+pi0_rhoplus.E());
697 double y2=(pi_rhominus.E()-pi0_rhominus.E())/(pi_rhominus.E()+pi0_rhominus.E());
703 if(haspi_minus && haspi_plus){
704 TLorentzVector tauporig=taup;
705 TLorentzVector taumorig=taum;
708 pi_plus.Boost(-1*Zboson.BoostVector());
709 pi_minus.Boost(-1*Zboson.BoostVector());
711 taup.Boost(-1*Zboson.BoostVector());
712 taum.Boost(-1*Zboson.BoostVector());
719 double proj_m=taum.Vect().Dot(pi_minus.Vect())/(taum.P()*taup.P());
720 double proj_p=taup.Vect().Dot(pi_plus.Vect())/(taup.P()*taup.P());
721 TVector3 Tau_m=taum.Vect();
722 TVector3 Tau_p=taup.Vect();
725 TVector3 Pit_m=pi_minus.Vect()-Tau_m;
726 TVector3 Pit_p=pi_plus.Vect()-Tau_p;
728 double Acoplanarity=acos(Pit_m.Dot(Pit_p)/(Pit_p.Mag()*Pit_m.Mag()));
729 TVector3
n=Pit_p.Cross(Pit_m);
730 if(n.Dot(Tau_m)/Tau_m.Mag()>0){Acoplanarity*=-1; Acoplanarity+=2*
TMath::Pi();}
739 if(nSingleMuonDecays==2){
743 if(nSingleElectronDecays==2){
747 if(nSinglePionDecays == 2 && tautau.M()!= 0) {
752 if(x2-x1>alow && x2-x1<aup){
753 double zs=(zsup+zslow)/2;
763 const std::vector<HepMC::GenParticle*>
m=
GetMothers(boson);
765 TLorentzVector
Z(0,0,0,0);
766 for(
unsigned int i=0;
i<m.size();
i++){
771 if(taum.Vect().Dot(Zboson.Vect())/(Zboson.P()*taum.P())>0){
785 double a=1-
sqrt(fabs(1.0-2*fabs(zs)));
799 TLorentzVector
p4(0,0,0,0);
801 if ( tau->end_vertex() ) {
802 HepMC::GenVertex::particle_iterator des;
803 for(des = tau->end_vertex()->particles_begin(HepMC::descendants);
804 des!= tau->end_vertex()->particles_end(HepMC::descendants);++des ) {
805 int pid = (*des)->pdg_id();
809 if(!(
abs(pid)==211 ||
abs(pid)==13 ||
abs(pid)==11))
continue;
811 if((*des)->momentum().rho() > p4.P()) {
812 p4 = TLorentzVector((*des)->momentum().px(),
813 (*des)->momentum().py(),
814 (*des)->momentum().pz(),
815 (*des)->momentum().e());
825 return TLorentzVector(m->momentum().px(),m->momentum().py(),m->momentum().pz(),m->momentum().e());
829 TLorentzVector
p4(tau->momentum().px(),
830 tau->momentum().py(),
831 tau->momentum().pz(),
832 tau->momentum().e());
834 if ( tau->end_vertex() ) {
835 HepMC::GenVertex::particle_iterator des;
836 for(des = tau->end_vertex()->particles_begin(HepMC::descendants);
837 des!= tau->end_vertex()->particles_end(HepMC::descendants);++des ) {
838 int pid = (*des)->pdg_id();
842 if(
abs(pid) == 12 ||
abs(pid) == 14 ||
abs(pid) == 16) {
843 p4 -= TLorentzVector((*des)->momentum().px(),
844 (*des)->momentum().py(),
845 (*des)->momentum().pz(),
846 (*des)->momentum().e());
856 std::vector<const HepMC::GenParticle*> TauList;
861 std::vector<const HepMC::GenParticle*> ListofFSR; ListofFSR.clear();
862 std::vector<const HepMC::GenParticle*> ListofBrem; ListofBrem.clear();
863 std::vector<const HepMC::GenParticle*> FSR_photos; FSR_photos.clear();
864 double BosonScale(1);
865 if(TauList.size()>0){
871 double photonPtSum=0;
872 for(
unsigned int i=0;
i<ListofBrem.size();
i++){
873 photonPtSum+=ListofBrem.at(
i)->momentum().perp();
882 for(
unsigned int i=0;
i<ListofFSR.size();
i++){
883 photonPtSum+=ListofFSR.at(
i)->momentum().perp();
886 double FSR_photosSum(0);
887 for(
unsigned int i=0;
i<FSR_photos.size();
i++){
888 FSR_photosSum+=FSR_photos.at(
i)->momentum().perp();
void findTauList(const HepMC::GenParticle *tau, std::vector< const HepMC::GenParticle * > &TauList)
MonitorElement * TauFSRPhotonsN
std::vector< int > n_taupinu
MonitorElement * TauSpinEffectsH_rhorhoAcoplanarityplus
MonitorElement * TauSpinEffectsW_X
MonitorElement * TauSpinEffectsHpm_UpsilonA1
std::vector< std::vector< MonitorElement * > > JAKInvMass
MonitorElement * TauSpinEffectsZ_Xb
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
MonitorElement * DecayLength
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)
MonitorElement * TauBremPhotonsPtSum
MonitorElement * TauSpinEffectsH_pipiAcoplanarity
MonitorElement * TauSpinEffectstautau_polvxM
MonitorElement * TauSpinEffectsHpm_UpsilonRho
virtual void analyze(const edm::Event &, const edm::EventSetup &)
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)
bool isTauFinalStateParticle(int pdgid)
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
double leadingPionMomentum(const HepMC::GenParticle *, double weight)
MonitorElement * TauSpinEffectsH_Xf
MonitorElement * TauFSRPhotonsPt
MonitorElement * TauSpinEffectsZ_muX
MonitorElement * TauDecayChannels
edm::InputTag hepmcCollection_
MonitorElement * TauSpinEffectsH_Zs
MonitorElement * TauFSRPhotonsPtSum
HepPDT::ParticleData ParticleData
double visibleTauEnergy(const HepMC::GenParticle *)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
TLorentzVector leadingPionP4(const HepMC::GenParticle *)
bool isLastTauinChain(const HepMC::GenParticle *tau)
MonitorElement * TauSpinEffectsZ_MVis
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
virtual void endRun(const edm::Run &, const edm::EventSetup &)
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
DQMStore * dbe
ME's "container".
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
virtual void beginRun(const edm::Run &, const edm::EventSetup &)
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
std::vector< HepMC::GenParticle * > Get_TauDecayProducts()
bool AnalyzeTau(HepMC::GenParticle *Tau, unsigned int &JAK_ID, unsigned int &TauBitMask, bool dores=true, bool dopi0=true)
MonitorElement * nPrimeTaus
MonitorElement * TauBremPhotonsPt
MonitorElement * TauRtauHpm
void setCurrentFolder(const std::string &fullpath)
unsigned int nProng(unsigned int &TauBitMask)
MonitorElement * TauSpinEffectsH_X