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"))
130 TauFSRPhotonsPt=
dbe->
book1D(
"TauFSRPhotonsPt",
"Pt of FSR Photons radiating from/with tau (Gauge Boson)", 100 ,0,100);
144 JAKInvMass.push_back(std::vector<MonitorElement *>());
179 HepMC::GenEvent *myGenEvent =
new HepMC::GenEvent(*(evt->GetEvent()));
194 for(HepMC::GenEvent::particle_const_iterator iter = myGenEvent->particles_begin(); iter != myGenEvent->particles_end(); iter++) {
198 if(
abs((*iter)->pdg_id())==15){
209 rtau(*iter,mother,decaychannel,weight);
216 unsigned int jak_id, TauBitMask;
217 if(TD.
AnalyzeTau((*iter),jak_id,TauBitMask,
false,
false)){
220 int tcharge=(*iter)->pdg_id()/
abs((*iter)->pdg_id());
223 TLorentzVector LVQ(0,0,0,0);
224 TLorentzVector LVS12(0,0,0,0);
225 TLorentzVector LVS13(0,0,0,0);
226 TLorentzVector LVS23(0,0,0,0);
230 for(
unsigned int i=0;
i<part.size();
i++){
232 PV=TVector3((*iter)->production_vertex()->point3d().x(),(*iter)->production_vertex()->point3d().y(),(*iter)->production_vertex()->point3d().z());
233 SV=TVector3(part.at(
i)->production_vertex()->point3d().x(),part.at(
i)->production_vertex()->point3d().y(),part.at(
i)->production_vertex()->point3d().z());
236 double c(2.99792458E8),Ltau(DL.Mag()/1000),
beta((*iter)->momentum().rho()/(*iter)->momentum().m());
244 TLorentzVector
LV(part.at(
i)->momentum().px(),part.at(
i)->momentum().py(),part.at(
i)->momentum().pz(),part.at(
i)->momentum().e());
289 if ( tau->production_vertex() ) {
290 HepMC::GenVertex::particle_iterator mother;
291 for (mother = tau->production_vertex()->particles_begin(
HepMC::parents); mother!= tau->production_vertex()->particles_end(
HepMC::parents); mother++ ) {
292 if((*mother)->pdg_id() == tau->pdg_id())
return GetMother(*mother);
301 std::vector<HepMC::GenParticle*> mothers;
302 if ( boson->production_vertex() ) {
303 HepMC::GenVertex::particle_iterator mother;
304 for (mother = boson->production_vertex()->particles_begin(
HepMC::parents); mother!= boson->production_vertex()->particles_end(
HepMC::parents); mother++ ) {
305 if((*mother)->pdg_id() == boson->pdg_id())
return GetMothers(*mother);
306 mothers.push_back(*mother);
315 if ( tau->production_vertex() ) {
316 HepMC::GenVertex::particle_iterator mother;
317 for (mother = tau->production_vertex()->particles_begin(
HepMC::parents); mother!= tau->production_vertex()->particles_end(
HepMC::parents); mother++ ) {
318 mother_pid = (*mother)->pdg_id();
319 if(mother_pid == tau->pdg_id())
return findMother(*mother);
327 if ( tau->end_vertex() ) {
328 HepMC::GenVertex::particle_iterator dau;
329 for (dau = tau->end_vertex()->particles_begin(HepMC::children); dau!= tau->end_vertex()->particles_end(HepMC::children); dau++ ) {
330 int dau_pid = (*dau)->pdg_id();
331 if(dau_pid == tau->pdg_id())
return false;
339 TauList.insert(TauList.begin(),
tau);
340 if ( tau->production_vertex() ) {
341 HepMC::GenVertex::particle_iterator mother;
342 for (mother = tau->production_vertex()->particles_begin(
HepMC::parents); mother!= tau->production_vertex()->particles_end(
HepMC::parents);mother++) {
343 if((*mother)->pdg_id() == tau->pdg_id()){
351 std::vector<const HepMC::GenParticle*> &ListofBrem){
353 if(
abs(p->pdg_id())==15){
358 if ( p->end_vertex() ) {
359 HepMC::GenVertex::particle_iterator dau;
360 for (dau = p->end_vertex()->particles_begin(HepMC::children); dau!= p->end_vertex()->particles_end(HepMC::children); dau++ ) {
363 if(
abs((*dau)->pdg_id()) ==
abs(photo_ID) && !doBrem){ListofFSR.push_back(*dau);}
364 if(
abs((*dau)->pdg_id()) ==
abs(photo_ID) && doBrem){ListofBrem.push_back(*dau);}
365 if((*dau)->end_vertex() && (*dau)->end_vertex()->particles_out_size()>0 &&
abs((*dau)->pdg_id()) != 111 &&
abs((*dau)->pdg_id()) != 221){
377 double mother_pid=m->pdg_id();
378 if(m->end_vertex() && mother_pid!=p->pdg_id()){
379 HepMC::GenVertex::particle_iterator dau;
380 for (dau = m->end_vertex()->particles_begin(HepMC::children); dau!= m->end_vertex()->particles_end(HepMC::children); dau++ ) {
381 int dau_pid = (*dau)->pdg_id();
382 if(fabs(dau_pid) == 22) {
383 ListofFSR.push_back(*dau);
387 if(
abs(mother_pid) == 24) BosonScale=1.0;
388 if(
abs(mother_pid) == 23) BosonScale=2.0;
389 if(
abs(mother_pid) == 22) BosonScale=2.0;
390 if(
abs(mother_pid) == 25) BosonScale=2.0;
391 if(
abs(mother_pid) == 35) BosonScale=2.0;
392 if(
abs(mother_pid) == 36) BosonScale=2.0;
393 if(
abs(mother_pid) == 37) BosonScale=1.0;
399 if(
abs(tau->pdg_id()) != 15 )
return -3;
402 if(mother_pid == -2)
return -2;
405 if(
abs(mother_pid) == 24) label =
W;
406 if(
abs(mother_pid) == 23) label =
Z;
407 if(
abs(mother_pid) == 22) label =
gamma;
408 if(
abs(mother_pid) == 25) label =
HSM;
409 if(
abs(mother_pid) == 35) label =
H0;
410 if(
abs(mother_pid) == 36) label =
A0;
411 if(
abs(mother_pid) == 37) label =
Hpm;
413 int mother_shortpid=(
abs(mother_pid)%10000);
414 if(mother_shortpid>500 && mother_shortpid<600 )label =
B;
415 if(mother_shortpid>400 && mother_shortpid<500)label =
D;
417 if(label==
B || label ==
D || label ==
other)
return -1;
424 if ( tau->end_vertex() ) {
425 HepMC::GenVertex::particle_iterator des;
426 for(des = tau->end_vertex()->particles_begin(HepMC::descendants);
427 des!= tau->end_vertex()->particles_end(HepMC::descendants);++des ) {
428 int pid = (*des)->pdg_id();
430 if((*des)->status() != 1)
continue;
433 int charge = (int) pd->charge();
434 if(charge == 0)
continue;
445 if(tau->status() == 1) channel =
stable;
456 if ( tau->end_vertex() ) {
457 HepMC::GenVertex::particle_iterator des;
458 for(des = tau->end_vertex()->particles_begin(HepMC::descendants);
459 des!= tau->end_vertex()->particles_end(HepMC::descendants);++des ) {
460 int pid = (*des)->pdg_id();
464 if(
abs(pid) == 11) eCount++;
465 if(
abs(pid) == 13) muCount++;
466 if(
abs(pid) == 111) pi0Count++;
467 if(
abs(pid) == 211) piCount++;
468 if(
abs(pid) == 213) rhoCount++;
469 if(
abs(pid) == 20213) a1Count++;
470 if(
abs(pid) == 321) KCount++;
471 if(
abs(pid) == 323) KstarCount++;
476 if(KCount >= 1) channel =
K;
477 if(KstarCount >= 1) channel =
Kstar;
478 if(a1Count >= 1) channel =
a1;
479 if(rhoCount >= 1) channel =
rho;
483 if(piCount == 1 && pi0Count == 0) channel =
pi;
484 if(piCount == 1 && pi0Count == 1) channel =
pi1pi0;
485 if(piCount == 1 && pi0Count > 1) channel =
pinpi0;
486 if(piCount == 3 && pi0Count == 0) channel =
tripi;
487 if(piCount == 3 && pi0Count > 0) channel =
tripinpi0;
489 if(muCount == 1) channel =
muon;
497 if(decay !=
pi1pi0)
return;
499 if(tau->momentum().perp() <
tauEtCut)
return;
505 if(visibleTauE != 0) rTau = ltrack/visibleTauE;
513 TLorentzVector momP4 =
motherP4(tau);
515 pionP4.Boost(-1*momP4.BoostVector());
516 double energy = pionP4.E()/(momP4.M()/2);
532 TLorentzVector
rho(0,0,0,0),
pi(0,0,0,0);
533 for(
unsigned int i=0;
i<part.size();
i++){
534 TLorentzVector
LV(part.at(
i)->momentum().px(),part.at(
i)->momentum().py(),part.at(
i)->momentum().pz(),part.at(
i)->momentum().e());
542 TLorentzVector
a1(0,0,0,0),pi_p(0,0,0,0),pi_m(0,0,0,0);
543 int nplus(0),nminus(0);
544 for(
unsigned int i=0;
i<part.size();
i++){
545 TLorentzVector
LV(part.at(
i)->momentum().px(),part.at(
i)->momentum().py(),part.at(
i)->momentum().pz(),part.at(
i)->momentum().e());
550 if(nplus+nminus==3 && nplus==1) gamma=2*pi_p.Pt()/
a1.Pt()-1;
551 if(nplus+nminus==3 && nminus==1) gamma=2*pi_m.Pt()/
a1.Pt()-1;
553 pi_p+=pi_m; gamma=2*pi_p.Pt()/
a1.Pt()-1;
561 TLorentzVector tautau(0,0,0,0);
562 TLorentzVector pipi(0,0,0,0);
563 TLorentzVector taum(0,0,0,0);
564 TLorentzVector taup(0,0,0,0);
565 TLorentzVector rho_plus,rho_minus,pi_rhominus,pi0_rhominus,pi_rhoplus,pi0_rhoplus,pi_plus,pi_minus;
566 bool hasrho_minus(
false),hasrho_plus(
false),haspi_minus(
false),haspi_plus(
false);
567 int nSinglePionDecays(0),nSingleMuonDecays(0),nSingleElectronDecays(0);
569 TLorentzVector Zboson(boson->momentum().px(),boson->momentum().py(),boson->momentum().pz(),boson->momentum().e());
570 if ( boson->end_vertex() ) {
571 HepMC::GenVertex::particle_iterator des;
572 for(des = boson->end_vertex()->particles_begin(HepMC::children); des!= boson->end_vertex()->particles_end(HepMC::children);++des ) {
573 int pid = (*des)->pdg_id();
578 TLorentzVector LVtau((*des)->momentum().px(),(*des)->momentum().py(),(*des)->momentum().pz(),(*des)->momentum().e());
583 int charge = (int) pd->charge();
584 LVtau.Boost(-1*Zboson.BoostVector());
585 LVpi.Boost(-1*Zboson.BoostVector());
590 if(charge<0){x1=LVpi.P()/LVtau.E(); taum=LVtau;}
591 else{ x2=LVpi.P()/LVtau.E();}
594 if ( (*des)->end_vertex() ) {
595 HepMC::GenVertex::particle_iterator tauprod;
596 TLorentzVector LVtau((*des)->momentum().px(),(*des)->momentum().py(),(*des)->momentum().pz(),(*des)->momentum().e());
597 if(pid == 15)taum=LVtau;
598 if(pid ==-15)taup=LVtau;
599 for(tauprod = (*des)->end_vertex()->particles_begin(HepMC::descendants); tauprod!= (*des)->end_vertex()->particles_end(HepMC::descendants);++tauprod ) {
600 int pid_d = (*tauprod)->pdg_id();
601 if(
abs(pid_d)==211 ||
abs(pid_d)==111){
602 TLorentzVector
LV((*tauprod)->momentum().px(),(*tauprod)->momentum().py(),(*tauprod)->momentum().pz(),(*tauprod)->momentum().e());
605 if(pid_d==-211 ){ pi_rhominus=
LV;}
606 if(
abs(pid_d)==111 ){ pi0_rhominus=
LV;}
610 if(pid_d==211 ){pi_rhoplus=
LV;}
611 if(
abs(pid_d)==111 ){pi0_rhoplus=
LV;}
618 if ( (*des)->end_vertex() ) {
619 HepMC::GenVertex::particle_iterator tauprod;
620 TLorentzVector LVtau((*des)->momentum().px(),(*des)->momentum().py(),(*des)->momentum().pz(),(*des)->momentum().e());
621 if(pid == 15)taum=LVtau;
622 if(pid ==-15)taup=LVtau;
623 for(tauprod = (*des)->end_vertex()->particles_begin(HepMC::descendants); tauprod!= (*des)->end_vertex()->particles_end(HepMC::descendants);++tauprod ) {
624 int pid_d = (*tauprod)->pdg_id();
625 if(
abs(pid_d)==211 ||
abs(pid_d)==111){
626 TLorentzVector
LV((*tauprod)->momentum().px(),(*tauprod)->momentum().py(),(*tauprod)->momentum().pz(),(*tauprod)->momentum().e());
629 if(pid_d==-211 ){ pi_minus=
LV;}
633 if(pid_d==211 ){pi_plus=
LV;}
641 if(hasrho_minus && hasrho_plus){
643 rho_minus=pi_rhominus;
644 rho_minus+=pi0_rhominus;
646 rho_plus+=pi0_rhoplus;
647 TLorentzVector rhorho=rho_minus;rhorho+=rho_plus;
650 TLorentzVector pi_rhoplusb=pi_rhoplus; pi_rhoplusb.Boost(-1*rhorho.BoostVector());
651 TLorentzVector pi0_rhoplusb=pi0_rhoplus; pi0_rhoplusb.Boost(-1*rhorho.BoostVector());
652 TLorentzVector pi_rhominusb=pi_rhominus; pi_rhominusb.Boost(-1*rhorho.BoostVector());
653 TLorentzVector pi0_rhominusb=pi0_rhominus; pi0_rhominusb.Boost(-1*rhorho.BoostVector());
656 TVector3 n_plus=pi_rhoplusb.Vect().Cross(pi0_rhoplusb.Vect());
657 TVector3 n_minus=pi_rhominusb.Vect().Cross(pi0_rhominusb.Vect());
660 double Acoplanarity=acos(n_plus.Dot(n_minus)/(n_plus.Mag()*n_minus.Mag()));
661 if(pi_rhominus.Vect().Dot(n_plus)>0){Acoplanarity*=-1;Acoplanarity+=2*
TMath::Pi();}
664 pi_rhoplus.Boost(-1*taup.BoostVector());
665 pi0_rhoplus.Boost(-1*taup.BoostVector());
666 pi_rhominus.Boost(-1*taum.BoostVector());
667 pi0_rhominus.Boost(-1*taum.BoostVector());
670 double y1=(pi_rhoplus.E()-pi0_rhoplus.E())/(pi_rhoplus.E()+pi0_rhoplus.E());
671 double y2=(pi_rhominus.E()-pi0_rhominus.E())/(pi_rhominus.E()+pi0_rhominus.E());
677 if(haspi_minus && haspi_plus){
678 TLorentzVector tauporig=taup;
679 TLorentzVector taumorig=taum;
682 pi_plus.Boost(-1*Zboson.BoostVector());
683 pi_minus.Boost(-1*Zboson.BoostVector());
685 taup.Boost(-1*Zboson.BoostVector());
686 taum.Boost(-1*Zboson.BoostVector());
693 double proj_m=taum.Vect().Dot(pi_minus.Vect())/(taum.P()*taup.P());
694 double proj_p=taup.Vect().Dot(pi_plus.Vect())/(taup.P()*taup.P());
695 TVector3 Tau_m=taum.Vect();
696 TVector3 Tau_p=taup.Vect();
699 TVector3 Pit_m=pi_minus.Vect()-Tau_m;
700 TVector3 Pit_p=pi_plus.Vect()-Tau_p;
702 double Acoplanarity=acos(Pit_m.Dot(Pit_p)/(Pit_p.Mag()*Pit_m.Mag()));
703 TVector3
n=Pit_p.Cross(Pit_m);
704 if(n.Dot(Tau_m)/Tau_m.Mag()>0){Acoplanarity*=-1; Acoplanarity+=2*
TMath::Pi();}
713 if(nSingleMuonDecays==2){
717 if(nSingleElectronDecays==2){
721 if(nSinglePionDecays == 2 && tautau.M()!= 0) {
726 if(x2-x1>alow && x2-x1<aup){
727 double zs=(zsup+zslow)/2;
737 const std::vector<HepMC::GenParticle*>
m=
GetMothers(boson);
739 TLorentzVector
Z(0,0,0,0);
740 for(
unsigned int i=0;
i<m.size();
i++){
745 if(taum.Vect().Dot(Zboson.Vect())/(Zboson.P()*taum.P())>0){
759 double a=1-
sqrt(fabs(1.0-2*fabs(zs)));
773 TLorentzVector
p4(0,0,0,0);
775 if ( tau->end_vertex() ) {
776 HepMC::GenVertex::particle_iterator des;
777 for(des = tau->end_vertex()->particles_begin(HepMC::descendants);
778 des!= tau->end_vertex()->particles_end(HepMC::descendants);++des ) {
779 int pid = (*des)->pdg_id();
783 if(!(
abs(pid)==211 ||
abs(pid)==13 ||
abs(pid)==11))
continue;
785 if((*des)->momentum().rho() > p4.P()) {
786 p4 = TLorentzVector((*des)->momentum().px(),
787 (*des)->momentum().py(),
788 (*des)->momentum().pz(),
789 (*des)->momentum().e());
799 return TLorentzVector(m->momentum().px(),m->momentum().py(),m->momentum().pz(),m->momentum().e());
803 TLorentzVector
p4(tau->momentum().px(),
804 tau->momentum().py(),
805 tau->momentum().pz(),
806 tau->momentum().e());
808 if ( tau->end_vertex() ) {
809 HepMC::GenVertex::particle_iterator des;
810 for(des = tau->end_vertex()->particles_begin(HepMC::descendants);
811 des!= tau->end_vertex()->particles_end(HepMC::descendants);++des ) {
812 int pid = (*des)->pdg_id();
816 if(
abs(pid) == 12 ||
abs(pid) == 14 ||
abs(pid) == 16) {
817 p4 -= TLorentzVector((*des)->momentum().px(),
818 (*des)->momentum().py(),
819 (*des)->momentum().pz(),
820 (*des)->momentum().e());
830 std::vector<const HepMC::GenParticle*> TauList;
835 std::vector<const HepMC::GenParticle*> ListofFSR; ListofFSR.clear();
836 std::vector<const HepMC::GenParticle*> ListofBrem; ListofBrem.clear();
837 std::vector<const HepMC::GenParticle*> FSR_photos; FSR_photos.clear();
838 double BosonScale(1);
839 if(TauList.size()>0){
845 double photonPtSum=0;
846 for(
unsigned int i=0;
i<ListofBrem.size();
i++){
847 photonPtSum+=ListofBrem.at(
i)->momentum().perp();
856 for(
unsigned int i=0;
i<ListofFSR.size();
i++){
857 photonPtSum+=ListofFSR.at(
i)->momentum().perp();
860 double FSR_photosSum(0);
861 for(
unsigned int i=0;
i<FSR_photos.size();
i++){
862 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 * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
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
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
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)
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