CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
TauValidation Class Reference

#include <TauValidation.h>

Inheritance diagram for TauValidation:
one::DQMEDAnalyzer< T > one::dqmimplementation::DQMBaseClass< T... >

Public Types

enum  {
  undetermined, electron, muon, pi,
  rho, a1, K, Kstar,
  pi1pi0, pinpi0, tripi, tripinpi0,
  stable
}
 
enum  {
  other, B, D, gamma,
  Z, W, HSM, H0,
  A0, Hpm
}
 

Public Member Functions

void analyze (edm::Event const &, edm::EventSetup const &) override
 
void bookHistograms (DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &) override
 
void dqmBeginRun (const edm::Run &r, const edm::EventSetup &c) override
 
 TauValidation (const edm::ParameterSet &)
 
 ~TauValidation () override
 
- Public Member Functions inherited from one::DQMEDAnalyzer< T >
 DQMEDAnalyzer ()=default
 
 DQMEDAnalyzer (DQMEDAnalyzer< T... > const &)=delete
 
 DQMEDAnalyzer (DQMEDAnalyzer< T... > &&)=delete
 
 ~DQMEDAnalyzer () override=default
 

Private Member Functions

void countParticles (const reco::GenParticle *p, int &allCount, int &eCount, int &muCount, int &pi0Count, int &piCount, int &rhoCount, int &a1Count, int &KCount, int &KstarCount)
 
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 *)
 
void FindPhotosFSR (const reco::GenParticle *p, std::vector< const reco::GenParticle * > &ListofFSR, double &BosonScale)
 
void findTauList (const reco::GenParticle *tau, std::vector< const reco::GenParticle * > &TauList)
 
const reco::GenParticleGetMother (const reco::GenParticle *tau)
 
const std::vector< const reco::GenParticle * > GetMothers (const reco::GenParticle *boson)
 
bool isLastTauinChain (const reco::GenParticle *tau)
 
double leadingPionMomentum (const reco::GenParticle *, double weight)
 
TLorentzVector leadingPionP4 (const reco::GenParticle *)
 
TLorentzVector motherP4 (const reco::GenParticle *)
 
void photons (const reco::GenParticle *, double weight)
 
void spinEffectsWHpm (const reco::GenParticle *, int, int, std::vector< const reco::GenParticle * > &part, double weight)
 
void spinEffectsZH (const reco::GenParticle *boson, double weight)
 
int tauDecayChannel (const reco::GenParticle *tau, int jak_id, unsigned int TauBitMask, double weight)
 
int tauMother (const reco::GenParticle *, double weight)
 
int tauProngs (const reco::GenParticle *, double weight)
 
double visibleTauEnergy (const reco::GenParticle *)
 
double Zstoa (double zs)
 

Private Attributes

MonitorElementDecayLength
 
edm::ESHandle< HepPDT::ParticleDataTablefPDGTable
 PDT table. More...
 
edm::InputTag genparticleCollection_
 
edm::EDGetTokenT< reco::GenParticleCollectiongenparticleCollectionToken_
 
MonitorElementLifeTime
 
MonitorElementMODEID
 
std::vector< std::vector< MonitorElement * > > MODEInvMass
 
unsigned int NMODEID
 
MonitorElementnPrimeTaus
 
MonitorElementnTaus
 
MonitorElementTauBremPhotonsN
 
MonitorElementTauBremPhotonsPt
 
MonitorElementTauBremPhotonsPtSum
 
MonitorElementTauDecayChannels
 
MonitorElementTauEta
 
MonitorElementTauFSRPhotonsN
 
MonitorElementTauFSRPhotonsPt
 
MonitorElementTauFSRPhotonsPtSum
 
MonitorElementTauMothers
 
MonitorElementTauPhi
 
MonitorElementTauProngs
 
MonitorElementTauPt
 
MonitorElementTauSpinEffectsH_eX
 
MonitorElementTauSpinEffectsH_muX
 
MonitorElementTauSpinEffectsH_MVis
 
MonitorElementTauSpinEffectsH_pipiAcollinearity
 
MonitorElementTauSpinEffectsH_pipiAcollinearityzoom
 
MonitorElementTauSpinEffectsH_pipiAcoplanarity
 
MonitorElementTauSpinEffectsH_rhorhoAcoplanarityminus
 
MonitorElementTauSpinEffectsH_rhorhoAcoplanarityplus
 
MonitorElementTauSpinEffectsH_X
 
MonitorElementTauSpinEffectsH_Xb
 
MonitorElementTauSpinEffectsH_Xf
 
MonitorElementTauSpinEffectsH_Zs
 
MonitorElementTauSpinEffectsHpm_eX
 
MonitorElementTauSpinEffectsHpm_muX
 
MonitorElementTauSpinEffectsHpm_UpsilonA1
 
MonitorElementTauSpinEffectsHpm_UpsilonRho
 
MonitorElementTauSpinEffectsHpm_X
 
MonitorElementTauSpinEffectsW_eX
 
MonitorElementTauSpinEffectsW_muX
 
MonitorElementTauSpinEffectsW_UpsilonA1
 
MonitorElementTauSpinEffectsW_UpsilonRho
 
MonitorElementTauSpinEffectsW_X
 
MonitorElementTauSpinEffectsZ_eX
 
MonitorElementTauSpinEffectsZ_muX
 
MonitorElementTauSpinEffectsZ_MVis
 
MonitorElementTauSpinEffectsZ_X
 
MonitorElementTauSpinEffectsZ_X100to120
 
MonitorElementTauSpinEffectsZ_X120UP
 
MonitorElementTauSpinEffectsZ_X50to75
 
MonitorElementTauSpinEffectsZ_X75to88
 
MonitorElementTauSpinEffectsZ_X88to100
 
MonitorElementTauSpinEffectsZ_Xb
 
MonitorElementTauSpinEffectsZ_Xf
 
MonitorElementTauSpinEffectsZ_Zs
 
int zsbins
 
double zsmax
 
double zsmin
 

Detailed Description

Definition at line 26 of file TauValidation.h.

Member Enumeration Documentation

anonymous enum
Enumerator
undetermined 
electron 
muon 
pi 
rho 
a1 
Kstar 
pi1pi0 
pinpi0 
tripi 
tripinpi0 
stable 

Definition at line 30 of file TauValidation.h.

anonymous enum
Enumerator
other 
gamma 
HSM 
H0 
A0 
Hpm 

Definition at line 44 of file TauValidation.h.

Constructor & Destructor Documentation

TauValidation::TauValidation ( const edm::ParameterSet iPSet)
explicit

Definition at line 18 of file TauValidation.cc.

References genparticleCollection_, and genparticleCollectionToken_.

18  :
19  // wmanager_(iPSet,consumesCollector())
20  genparticleCollection_(iPSet.getParameter<edm::InputTag>("genparticleCollection"))
21  ,NMODEID(TauDecay::NMODEID-1)// fortran to C++ index
22  ,zsbins(20)
23  ,zsmin(-0.5)
24  ,zsmax(0.5)
25 {
26  genparticleCollectionToken_=consumes<reco::GenParticleCollection>(genparticleCollection_);
27 }
T getParameter(std::string const &) const
unsigned int NMODEID
edm::EDGetTokenT< reco::GenParticleCollection > genparticleCollectionToken_
edm::InputTag genparticleCollection_
Definition: TauValidation.h:86
TauValidation::~TauValidation ( )
override

Definition at line 29 of file TauValidation.cc.

29 {}

Member Function Documentation

void TauValidation::analyze ( edm::Event const &  ,
edm::EventSetup const &   
)
override

Gathering the reco::GenParticleCollection information

Definition at line 156 of file TauValidation.cc.

References funct::abs(), TauDecay_GenParticle::AnalyzeTau(), pfBoostedDoubleSVAK8TagInfos_cfi::beta, EnergyCorrector::c, DecayLength, MonitorElement::Fill(), genparticleCollectionToken_, GenHFHadronMatcher_cfi::genParticles, TauDecay_GenParticle::Get_TauDecayProducts(), edm::Event::getByToken(), PdtPdgMini::Higgs0, mps_fire::i, isLastTauinChain(), TauDecay::isTauFinalStateParticle(), PdtPdgMini::K_plus, LifeTime, TauDecay::MODE_3PI, TauDecay::MODE_KPIK, TauDecay::MODE_KPIPI, TauDecay::MODE_PI2PI0, MODEID, MODEInvMass, NMODEID, nPrimeTaus, TauDecay::nProng(), nTaus, PdtPdgMini::nu_e, PdtPdgMini::nu_mu, PdtPdgMini::nu_tau, photons(), PdtPdgMini::pi_plus, nanoDQM_cfi::PV, spinEffectsWHpm(), spinEffectsZH(), nanoDQM_cfi::SV, tauDecayChannel(), TauEta, tauMother(), TauPhi, TauProngs, TauPt, mps_merge::weight, and PdtPdgMini::Z0.

156  {
159  iEvent.getByToken(genparticleCollectionToken_, genParticles );
160 
161  double weight = 1.0;//= wmanager_.weight(iEvent);
163  // find taus
164  for (reco::GenParticleCollection::const_iterator iter = genParticles->begin(); iter != genParticles->end(); ++iter) {
165  if(abs(iter->pdgId())==PdtPdgMini::Z0 || abs(iter->pdgId())==PdtPdgMini::Higgs0){
166  spinEffectsZH(&(*iter),weight);
167  }
168  if(abs(iter->pdgId())==15){
169  if(isLastTauinChain(&(*iter))){
170  nTaus->Fill(0.5,weight);
171  int mother = tauMother(&(*iter),weight);
172  if(mother>-1){ // exclude B, D and other non-signal decay modes
173  nPrimeTaus->Fill(0.5,weight);
174  TauPt->Fill(iter->pt(),weight);
175  TauEta->Fill(iter->eta(),weight);
176  TauPhi->Fill(iter->phi(),weight);
177  photons(&(*iter),weight);
179  // Adding MODEID and Mass information
181  unsigned int jak_id, TauBitMask;
182  if(TD.AnalyzeTau(&(*iter),jak_id,TauBitMask,false,false)){
183  MODEID->Fill(jak_id,weight);
184  TauProngs->Fill(TD.nProng(TauBitMask),weight);
185  tauDecayChannel(&(*iter),jak_id,TauBitMask,weight);
186  if(jak_id<=NMODEID){
187  int tcharge=iter->pdgId()/abs(iter->pdgId());
188  std::vector<const reco::GenParticle*> part=TD.Get_TauDecayProducts();
189  spinEffectsWHpm(&(*iter),mother,jak_id,part,weight);
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);
194  bool haspart1=false;
195  TVector3 PV,SV;
196  bool hasDL(false);
197  for(unsigned int i=0;i<part.size();i++){
198  if(abs(part.at(i)->pdgId())!=PdtPdgMini::nu_tau && TD.isTauFinalStateParticle(part.at(i)->pdgId()) && !hasDL){
199  hasDL=true;
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());
203  TVector3 DL=SV-PV;
204  DecayLength->Fill(DL.Dot(tlv.Vect())/tlv.P(),weight);
205  double c(2.99792458E8),Ltau(DL.Mag()/100)/*cm->m*/,beta(iter->p()/iter->mass());
206  LifeTime->Fill( Ltau/(c*beta),weight);
207  }
208 
209  if(TD.isTauFinalStateParticle(part.at(i)->pdgId()) && abs(part.at(i)->pdgId())!=PdtPdgMini::nu_e &&
210  abs(part.at(i)->pdgId())!=PdtPdgMini::nu_mu && abs(part.at(i)->pdgId())!=PdtPdgMini::nu_tau ){
211  TLorentzVector LV(part.at(i)->px(),part.at(i)->py(),part.at(i)->pz(),part.at(i)->energy());
212  LVQ+=LV;
213  if(jak_id==TauDecay::MODE_3PI || jak_id==TauDecay::MODE_PI2PI0 ||
214  jak_id==TauDecay::MODE_KPIK ||
215  jak_id==TauDecay::MODE_KPIPI
216  ){
217  if((tcharge==part.at(i)->pdgId()/abs(part.at(i)->pdgId()) && TD.nProng(TauBitMask)==3) || ((jak_id==TauDecay::MODE_3PI || jak_id==TauDecay::MODE_PI2PI0) && TD.nProng(TauBitMask)==1 && abs(part.at(i)->pdgId())==PdtPdgMini::pi_plus) ){
218  LVS13+=LV;
219  LVS23+=LV;
220  }
221  else{
222  LVS12+=LV;
223  if(!haspart1 && ((jak_id==TauDecay::MODE_3PI || jak_id==TauDecay::MODE_PI2PI0) || ((jak_id!=TauDecay::MODE_3PI || jak_id==TauDecay::MODE_PI2PI0) && abs(part.at(i)->pdgId())==PdtPdgMini::K_plus) )){
224  LVS13+=LV;
225  haspart1=true;
226  }
227  else{
228  LVS23+=LV;
229  }
230  }
231  }
232  }
233  }
234  part.clear();
235  MODEInvMass.at(jak_id).at(0)->Fill(LVQ.M(),weight);
236  if(jak_id==TauDecay::MODE_3PI || jak_id==TauDecay::MODE_PI2PI0 ||
237  jak_id==TauDecay::MODE_KPIK ||
238  jak_id==TauDecay::MODE_KPIPI
239  ){
240  MODEInvMass.at(jak_id).at(1)->Fill(LVS13.M(),weight);
241  MODEInvMass.at(jak_id).at(2)->Fill(LVS23.M(),weight);
242  MODEInvMass.at(jak_id).at(3)->Fill(LVS12.M(),weight);
243  }
244  }
245  }
246  else{
247  MODEID->Fill(jak_id,weight);
248  }
249  }
250  }
251  }
252  }
253 }//analyze
MonitorElement * TauPhi
Definition: TauValidation.h:92
MonitorElement * MODEID
MonitorElement * nTaus
Definition: TauValidation.h:91
MonitorElement * DecayLength
Definition: TauValidation.h:92
std::vector< std::vector< MonitorElement * > > MODEInvMass
math::XYZTLorentzVectorD LV
MonitorElement * TauPt
Definition: TauValidation.h:92
void spinEffectsWHpm(const reco::GenParticle *, int, int, std::vector< const reco::GenParticle * > &part, double weight)
bool isLastTauinChain(const reco::GenParticle *tau)
Definition: weight.py:1
void Fill(long long x)
MonitorElement * TauProngs
Definition: TauValidation.h:92
bool isTauFinalStateParticle(int pdgid)
Definition: TauDecay.cc:36
void photons(const reco::GenParticle *, double weight)
int iEvent
Definition: GenABIO.cc:230
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
unsigned int NMODEID
int tauMother(const reco::GenParticle *, double weight)
std::vector< const reco::GenParticle * > Get_TauDecayProducts()
int tauDecayChannel(const reco::GenParticle *tau, int jak_id, unsigned int TauBitMask, double weight)
part
Definition: HCALResponse.h:20
edm::EDGetTokenT< reco::GenParticleCollection > genparticleCollectionToken_
MonitorElement * LifeTime
Definition: TauValidation.h:92
MonitorElement * TauEta
Definition: TauValidation.h:92
bool AnalyzeTau(const reco::GenParticle *Tau, unsigned int &MODE_ID, unsigned int &TauBitMask, bool dores, bool dopi0)
MonitorElement * nPrimeTaus
Definition: TauValidation.h:91
void spinEffectsZH(const reco::GenParticle *boson, double weight)
unsigned int nProng(unsigned int &TauBitMask)
Definition: TauDecay.cc:218
void TauValidation::bookHistograms ( DQMStore::IBooker i,
edm::Run const &  ,
edm::EventSetup const &   
)
override

Setting the DQM top directories

Definition at line 35 of file TauValidation.cc.

References A0, a1, B, DQMHelper::book1dHisto(), D, DecayLength, TauDecay::DecayMode(), electron, gamma, H0, Hpm, HSM, K, Kstar, LifeTime, TauDecay::MODE_3PI, TauDecay::MODE_KPIK, TauDecay::MODE_KPIPI, TauDecay::MODE_PI2PI0, MODEID, MODEInvMass, NMODEID, nPrimeTaus, nTaus, other, Pi, pi, pi1pi0, pinpi0, rho, MonitorElement::setBinLabel(), DQMStore::IBooker::setCurrentFolder(), stable, AlCaHLTBitMon_QueryRunRegistry::string, TauBremPhotonsN, TauBremPhotonsPt, TauBremPhotonsPtSum, TauDecayChannels, TauEta, TauFSRPhotonsN, TauFSRPhotonsPt, TauFSRPhotonsPtSum, TauMothers, TauPhi, TauProngs, TauPt, TauSpinEffectsH_eX, TauSpinEffectsH_muX, TauSpinEffectsH_MVis, TauSpinEffectsH_pipiAcollinearity, TauSpinEffectsH_pipiAcollinearityzoom, TauSpinEffectsH_pipiAcoplanarity, TauSpinEffectsH_rhorhoAcoplanarityminus, TauSpinEffectsH_rhorhoAcoplanarityplus, TauSpinEffectsH_X, TauSpinEffectsH_Xb, TauSpinEffectsH_Xf, TauSpinEffectsH_Zs, TauSpinEffectsHpm_eX, TauSpinEffectsHpm_muX, TauSpinEffectsHpm_UpsilonA1, TauSpinEffectsHpm_UpsilonRho, TauSpinEffectsHpm_X, TauSpinEffectsW_eX, TauSpinEffectsW_muX, TauSpinEffectsW_UpsilonA1, TauSpinEffectsW_UpsilonRho, TauSpinEffectsW_X, TauSpinEffectsZ_eX, TauSpinEffectsZ_muX, TauSpinEffectsZ_MVis, TauSpinEffectsZ_X, TauSpinEffectsZ_X100to120, TauSpinEffectsZ_X120UP, TauSpinEffectsZ_X50to75, TauSpinEffectsZ_X75to88, TauSpinEffectsZ_X88to100, TauSpinEffectsZ_Xb, TauSpinEffectsZ_Xf, TauSpinEffectsZ_Zs, tmp, tripi, tripinpi0, undetermined, W, Z, zsbins, zsmax, and zsmin.

35  {
37  DQMHelper dqm(&i); i.setCurrentFolder("Generator/Tau");
38  // Number of analyzed events
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");
41 
42  //Kinematics
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");
51  TauDecayChannels->setBinLabel(1+pi,"#pi^{#pm}");
52  TauDecayChannels->setBinLabel(1+rho,"#rho^{#pm}");
53  TauDecayChannels->setBinLabel(1+a1,"a_{1}^{#pm}");
54  TauDecayChannels->setBinLabel(1+pi1pi0,"#pi^{#pm}#pi^{0}");
55  TauDecayChannels->setBinLabel(1+pinpi0,"#pi^{#pm}n#pi^{0}");
56  TauDecayChannels->setBinLabel(1+tripi,"3#pi^{#pm}");
57  TauDecayChannels->setBinLabel(1+tripinpi0,"3#pi^{#pm}n#pi^{0}");
60  TauDecayChannels->setBinLabel(1+stable,"Stable");
61 
62  TauMothers = dqm.book1dHisto("TauMothers","Tau mother particles", 10 ,0,10,"Mother of #tau","Number of #tau's");
63 
65  TauMothers->setBinLabel(1+B,"B Decays");
66  TauMothers->setBinLabel(1+D,"D Decays");
67  TauMothers->setBinLabel(1+gamma,"#gamma");
68  TauMothers->setBinLabel(1+Z,"Z");
69  TauMothers->setBinLabel(1+W,"W");
70  TauMothers->setBinLabel(1+HSM,"H_{SM}/h^{0}");
71  TauMothers->setBinLabel(1+H0,"H^{0}");
72  TauMothers->setBinLabel(1+A0,"A^{0}");
73  TauMothers->setBinLabel(1+Hpm,"H^{#pm}");
74 
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");
77 
78  TauSpinEffectsW_X = dqm.book1dHisto("TauSpinEffectsWX","X for pion", 50 ,0,1,"X","Number of #tau#rightarrow#pi#nu from W^{#pm} Bosons");
79  TauSpinEffectsHpm_X = dqm.book1dHisto("TauSpinEffectsHpmX","X for pion", 50 ,0,1,"X","Number of #tau#rightarrow#pi#nu from H^{#pm} Bosons");
80 
81  TauSpinEffectsW_eX = dqm.book1dHisto("TauSpinEffectsWeX","X for e", 50 ,0,1,"X","Number of #tau#rightarrowe#nu#nu from W^{#pm} Bosons");
82  TauSpinEffectsHpm_eX = dqm.book1dHisto("TauSpinEffectsHpmeX","X for e", 50 ,0,1,"X","Number of #tau#rightarrowe#nu#nu from H^{#pm} Bosons");
83 
84  TauSpinEffectsW_muX = dqm.book1dHisto("TauSpinEffectsWmuX","X for mu", 50 ,0,1,"X","Number of #tau#rightarrow#mu#nu#nu from W^{#pm} Bosons");
85  TauSpinEffectsHpm_muX = dqm.book1dHisto("TauSpinEffectsHpmmuX","X for mue", 50 ,0,1,"X","Number of #tau#rightarrow#mu#nu#nu from H^{#pm} Bosons");
86 
87  TauSpinEffectsW_UpsilonRho = dqm.book1dHisto("TauSpinEffectsWUpsilonRho","#Upsilon for #rho", 50 ,-1,1,"#Upsilon","Number of #tau#rightarrow#rho#nu from Gauge Bosons");
88  TauSpinEffectsHpm_UpsilonRho = dqm.book1dHisto("TauSpinEffectsHpmUpsilonRho","#Upsilon for #rho", 50 ,-1,1,"#Upsilon","Number of #tau#rightarrow#rho#nu from Gauge Bosons");
89 
90  TauSpinEffectsW_UpsilonA1 = dqm.book1dHisto("TauSpinEffectsWUpsilonA1","#Upsilon for a1", 50 ,-1,1,"#Upsilon","Number of #tau#rightarrow#pi#pi#pi#nu from Gauge Bosons");
91  TauSpinEffectsHpm_UpsilonA1 = dqm.book1dHisto("TauSpinEffectsHpmUpsilonA1","#Upsilon for a1", 50 ,-1,1,"#Upsilon","Number of #tau#rightarrow#pi#pi#pi#nu from Gauge Bosons");
92 
93  TauSpinEffectsH_pipiAcoplanarity = dqm.book1dHisto("TauSpinEffectsH_pipiAcoplanarity","H Acoplanarity for #pi^{-}#pi^{+}", 50 ,0,2*TMath::Pi(),"Acoplanarity","Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
94 
95  TauSpinEffectsH_pipiAcollinearity = dqm.book1dHisto("TauSpinEffectsH_pipiAcollinearity","H Acollinearity for #pi^{-}#pi^{+}", 50 ,0,TMath::Pi(),"Acollinearity","Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
96  TauSpinEffectsH_pipiAcollinearityzoom = dqm.book1dHisto("TauSpinEffectsH_pipiAcollinearityzoom","H Acollinearity for #pi^{-}#pi^{+}", 50 ,3,TMath::Pi(),"Acollinearity","Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu) Events");
97 
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");
100 
101  TauSpinEffectsZ_Zs = dqm.book1dHisto("TauSpinEffectsZZs","Z_{s}", zsbins ,zsmin,zsmax,"Z_{s}","Number of Z#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu Events");
102  TauSpinEffectsH_Zs = dqm.book1dHisto("TauSpinEffectsHZs","Z_{s}", zsbins ,zsmin,zsmax,"Z_{s}","Number of H#rightarrow#tau^{-}(#rightarrow#pi^{-}#nu)#tau^{+}(#rightarrow#pi^{+}#nu Events");
103 
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");
110 
111 
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");
113 
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");
116 
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");
119 
120  TauSpinEffectsZ_eX = dqm.book1dHisto("TauSpinEffectsZeX","X for e", 50 ,0,1,"X","Number of #tau#rightarrowe#nu#nu from Gauge Bosons");
121  TauSpinEffectsH_eX = dqm.book1dHisto("TauSpinEffectsHeX","X for e", 50 ,0,1,"X","Number of #tau#rightarrowe#nu#nu from Gauge Bosons");
122 
123  TauSpinEffectsZ_muX = dqm.book1dHisto("TauSpinEffectsZmuX","X for mu", 50 ,0,1,"X","Number of #tau#rightarrow#mu#nu#nu from Gauge Bosons");
124  TauSpinEffectsH_muX = dqm.book1dHisto("TauSpinEffectsHmuX","X for mu", 50 ,0,1,"X","Number of #tau#rightarrow#mu#nu#nu from Gauge Bosons");
125 
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");
128 
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");
132 
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");
136 
137  MODEID =dqm.book1dHisto("JAKID","JAK ID",NMODEID+1,-0.5,NMODEID+0.5);
138  for(unsigned int j=0; j<NMODEID+1;j++){
139  MODEInvMass.push_back(std::vector<MonitorElement *>());
140  std::string tmp="JAKID";
141  tmp+=std::to_string(j);
142  MODEInvMass.at(j).push_back(dqm.book1dHisto("M"+tmp,"M_{"+TauDecay::DecayMode(j)+"} (GeV)", 80 ,0,2.0,"M_{"+TauDecay::DecayMode(j)+"} (GeV)","Number of #tau's from Gauge Bosons"));
145  j==TauDecay::MODE_KPIK ||
147  MODEInvMass.at(j).push_back(dqm.book1dHisto("M13"+tmp,"M_{13,"+TauDecay::DecayMode(j)+"} (GeV)", 80 ,0,2.0,"M_{13,"+TauDecay::DecayMode(j)+"} (GeV)","Number of #tau's from Gauge Bosons"));
148  MODEInvMass.at(j).push_back(dqm.book1dHisto("M23"+tmp,"M_{23,"+TauDecay::DecayMode(j)+"} (GeV)", 80 ,0,2.0,"M_{23,"+TauDecay::DecayMode(j)+"} (GeV)","Number of #tau's from Gauge Bosons"));
149  MODEInvMass.at(j).push_back(dqm.book1dHisto("M12"+tmp,"M_{12,"+TauDecay::DecayMode(j)+"} (GeV)", 80 ,0,2.0,"M_{12,"+TauDecay::DecayMode(j)+"} (GeV)","Number of #tau's from Gauge Bosons"));
150  }
151  }
152  return;
153 }
MonitorElement * TauFSRPhotonsN
Definition: TauValidation.h:92
const double Pi
MonitorElement * TauSpinEffectsH_rhorhoAcoplanarityplus
Definition: TauValidation.h:92
MonitorElement * TauPhi
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsW_X
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsHpm_UpsilonA1
Definition: TauValidation.h:92
MonitorElement * MODEID
MonitorElement * TauSpinEffectsZ_Xb
Definition: TauValidation.h:92
MonitorElement * nTaus
Definition: TauValidation.h:91
MonitorElement * DecayLength
Definition: TauValidation.h:92
std::vector< std::vector< MonitorElement * > > MODEInvMass
MonitorElement * TauPt
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_MVis
Definition: TauValidation.h:92
MonitorElement * TauMothers
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsHpm_eX
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_X100to120
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsW_muX
Definition: TauValidation.h:92
MonitorElement * TauBremPhotonsN
Definition: TauValidation.h:92
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
Definition: TauValidation.h:92
MonitorElement * TauBremPhotonsPtSum
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_pipiAcoplanarity
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsHpm_UpsilonRho
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_eX
Definition: TauValidation.h:92
MonitorElement * TauProngs
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_pipiAcollinearityzoom
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsW_UpsilonRho
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_X88to100
Definition: TauValidation.h:92
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
MonitorElement * TauSpinEffectsH_rhorhoAcoplanarityminus
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_X50to75
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_Xf
Definition: TauValidation.h:92
MonitorElement * TauFSRPhotonsPt
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_muX
Definition: TauValidation.h:92
MonitorElement * TauDecayChannels
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_Zs
Definition: TauValidation.h:92
unsigned int NMODEID
MonitorElement * TauFSRPhotonsPtSum
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_MVis
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_X75to88
Definition: TauValidation.h:92
static std::string DecayMode(unsigned int &MODE_ID)
Definition: TauDecay.cc:258
MonitorElement * TauSpinEffectsH_pipiAcollinearity
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_X
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_eX
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsW_eX
Definition: TauValidation.h:92
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
MonitorElement * LifeTime
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_muX
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsW_UpsilonA1
Definition: TauValidation.h:92
MonitorElement * TauEta
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_Zs
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsHpm_X
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsHpm_muX
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_X120UP
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_Xb
Definition: TauValidation.h:92
MonitorElement * nPrimeTaus
Definition: TauValidation.h:91
MonitorElement * TauBremPhotonsPt
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_X
Definition: TauValidation.h:92
void TauValidation::countParticles ( const reco::GenParticle p,
int &  allCount,
int &  eCount,
int &  muCount,
int &  pi0Count,
int &  piCount,
int &  rhoCount,
int &  a1Count,
int &  KCount,
int &  KstarCount 
)
private

Definition at line 388 of file TauValidation.cc.

References funct::abs(), reco::CompositeRefCandidateT< D >::daughter(), mps_fire::i, reco::CompositeRefCandidateT< D >::numberOfDaughters(), reco::LeafCandidate::pdgId(), and sysUtil::pid.

Referenced by tauDecayChannel().

389  {
390  for(unsigned int i=0; i<p->numberOfDaughters(); i++){
391  const reco::GenParticle *dau=static_cast<const reco::GenParticle*>(p->daughter(i));
392  int pid = dau->pdgId();
393  allCount++;
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);
403  }
404 }
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) ...
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
size_t numberOfDaughters() const override
number of daughters
void countParticles(const reco::GenParticle *p, int &allCount, int &eCount, int &muCount, int &pi0Count, int &piCount, int &rhoCount, int &a1Count, int &KCount, int &KstarCount)
void TauValidation::dqmBeginRun ( const edm::Run r,
const edm::EventSetup c 
)
override

Definition at line 31 of file TauValidation.cc.

References fPDGTable, and edm::EventSetup::getData().

31  {
32  c.getData( fPDGTable );
33 }
void getData(T &iHolder) const
Definition: EventSetup.h:97
edm::ESHandle< HepPDT::ParticleDataTable > fPDGTable
PDT table.
Definition: TauValidation.h:89
void TauValidation::findFSRandBrem ( const reco::GenParticle p,
bool  doBrem,
std::vector< const reco::GenParticle * > &  ListofFSR,
std::vector< const reco::GenParticle * > &  ListofBrem 
)
private

Definition at line 295 of file TauValidation.cc.

References funct::abs(), reco::CompositeRefCandidateT< D >::daughter(), mps_fire::i, isLastTauinChain(), reco::CompositeRefCandidateT< D >::numberOfDaughters(), common_cff::pdgId, and reco::LeafCandidate::pdgId().

Referenced by photons().

296  {
297  // note this code split the FSR and Brem based one if the tau decays into a tau+photon or not with the Fortran Tauola Interface, this is not 100% correct because photos puts the tau with the regular tau decay products.
298  if(abs(p->pdgId())==15){
299  if(isLastTauinChain(p)){ doBrem=true;}
300  else{ doBrem=false;}
301  }
302  int photo_ID=22;
303  for(unsigned int i = 0; i <p->numberOfDaughters(); i++){
304  const reco::GenParticle *dau=static_cast<const reco::GenParticle*>(p->daughter(i));
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);}
307  if(abs((dau)->pdgId()) != 111 && abs((dau)->pdgId()) != 221){ // remove pi0 and eta decays
308  findFSRandBrem(dau,doBrem,ListofFSR,ListofBrem);
309  }
310  }
311 }
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) ...
bool isLastTauinChain(const reco::GenParticle *tau)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
size_t numberOfDaughters() const override
number of daughters
void findFSRandBrem(const reco::GenParticle *p, bool doBrem, std::vector< const reco::GenParticle * > &ListofFSR, std::vector< const reco::GenParticle * > &ListofBrem)
int TauValidation::findMother ( const reco::GenParticle tau)
private

Definition at line 274 of file TauValidation.cc.

References GetMother(), and reco::LeafCandidate::pdgId().

Referenced by spinEffectsZH(), and tauMother().

274  {
275  return TauValidation::GetMother(tau)->pdgId();
276 }
int pdgId() const final
PDG identifier.
const reco::GenParticle * GetMother(const reco::GenParticle *tau)
void TauValidation::FindPhotosFSR ( const reco::GenParticle p,
std::vector< const reco::GenParticle * > &  ListofFSR,
double &  BosonScale 
)
private

Definition at line 313 of file TauValidation.cc.

References funct::abs(), reco::CompositeRefCandidateT< D >::daughter(), GetMother(), mps_fire::i, funct::m, reco::CompositeRefCandidateT< D >::numberOfDaughters(), and reco::LeafCandidate::pdgId().

Referenced by photons().

313  {
314  BosonScale=0.0;
315  const reco::GenParticle* m=GetMother(p);
316  int mother_pid=m->pdgId();
317  if(m->pdgId()!=p->pdgId()){
318  for(unsigned int i=0; i <m->numberOfDaughters(); i++){
319  const reco::GenParticle *dau=static_cast<const reco::GenParticle*>(m->daughter(i));
320  if(abs(dau->pdgId()) == 22) {
321  ListofFSR.push_back(dau);
322  }
323  }
324  }
325  if(abs(mother_pid) == 24) BosonScale=1.0; // W
326  if(abs(mother_pid) == 23) BosonScale=2.0; // Z;
327  if(abs(mother_pid) == 22) BosonScale=2.0; // gamma;
328  if(abs(mother_pid) == 25) BosonScale=2.0; // HSM;
329  if(abs(mother_pid) == 35) BosonScale=2.0; // H0;
330  if(abs(mother_pid) == 36) BosonScale=2.0; // A0;
331  if(abs(mother_pid) == 37) BosonScale=1.0; //Hpm;
332 }
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) ...
const reco::GenParticle * GetMother(const reco::GenParticle *tau)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
size_t numberOfDaughters() const override
number of daughters
void TauValidation::findTauList ( const reco::GenParticle tau,
std::vector< const reco::GenParticle * > &  TauList 
)
private

Definition at line 285 of file TauValidation.cc.

References mps_fire::i, reco::CompositeRefCandidateT< D >::mother(), reco::CompositeRefCandidateT< D >::numberOfMothers(), reco::LeafCandidate::pdgId(), and metsig::tau.

Referenced by photons().

285  {
286  TauList.insert(TauList.begin(),tau);
287  for(unsigned int i=0;i<tau->numberOfMothers();i++) {
288  const reco::GenParticle *mother=static_cast<const reco::GenParticle*>(tau->mother(i));
289  if(mother->pdgId() == tau->pdgId()){
290  findTauList(mother,TauList);
291  }
292  }
293 }
int pdgId() const final
PDG identifier.
size_t numberOfMothers() const override
number of mothers
void findTauList(const reco::GenParticle *tau, std::vector< const reco::GenParticle * > &TauList)
const Candidate * mother(size_type=0) const override
return mother at a given position, i = 0, ... numberOfMothers() - 1 (read only mode) ...
const reco::GenParticle * TauValidation::GetMother ( const reco::GenParticle tau)
private

Definition at line 255 of file TauValidation.cc.

References mps_fire::i, reco::CompositeRefCandidateT< D >::mother(), reco::CompositeRefCandidateT< D >::numberOfMothers(), reco::LeafCandidate::pdgId(), and metsig::tau.

Referenced by findMother(), FindPhotosFSR(), and motherP4().

255  {
256  for (unsigned int i=0;i<tau->numberOfMothers();i++) {
257  const reco::GenParticle *mother=static_cast<const reco::GenParticle*>(tau->mother(i));
258  if(mother->pdgId() == tau->pdgId()) return GetMother(mother);
259  return mother;
260  }
261  return tau;
262 }
int pdgId() const final
PDG identifier.
size_t numberOfMothers() const override
number of mothers
const reco::GenParticle * GetMother(const reco::GenParticle *tau)
const Candidate * mother(size_type=0) const override
return mother at a given position, i = 0, ... numberOfMothers() - 1 (read only mode) ...
const std::vector< const reco::GenParticle * > TauValidation::GetMothers ( const reco::GenParticle boson)
private

Definition at line 264 of file TauValidation.cc.

References mps_fire::i, reco::CompositeRefCandidateT< D >::mother(), reco::CompositeRefCandidateT< D >::numberOfMothers(), and reco::LeafCandidate::pdgId().

Referenced by spinEffectsZH().

264  {
265  std::vector<const reco::GenParticle*> mothers;
266  for (unsigned int i=0;i<boson->numberOfMothers();i++) {
267  const reco::GenParticle *mother=static_cast<const reco::GenParticle*>(boson->mother(i));
268  if(mother->pdgId() == boson->pdgId()) return GetMothers(mother);
269  mothers.push_back(mother);
270  }
271  return mothers;
272 }
int pdgId() const final
PDG identifier.
size_t numberOfMothers() const override
number of mothers
const std::vector< const reco::GenParticle * > GetMothers(const reco::GenParticle *boson)
const Candidate * mother(size_type=0) const override
return mother at a given position, i = 0, ... numberOfMothers() - 1 (read only mode) ...
bool TauValidation::isLastTauinChain ( const reco::GenParticle tau)
private

Definition at line 278 of file TauValidation.cc.

References reco::CompositeRefCandidateT< D >::daughter(), mps_fire::i, reco::CompositeRefCandidateT< D >::numberOfDaughters(), reco::Candidate::pdgId(), and reco::LeafCandidate::pdgId().

Referenced by analyze(), and findFSRandBrem().

278  {
279  for(unsigned int i = 0; i <tau->numberOfDaughters(); i++){
280  if(tau->daughter(i)->pdgId() == tau->pdgId()) return false;
281  }
282  return true;
283 }
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) ...
virtual int pdgId() const =0
PDG identifier.
size_t numberOfDaughters() const override
number of daughters
double TauValidation::leadingPionMomentum ( const reco::GenParticle tau,
double  weight 
)
private

Definition at line 678 of file TauValidation.cc.

References leadingPionP4().

678  {
679  return leadingPionP4(tau).P();
680 }
TLorentzVector leadingPionP4(const reco::GenParticle *)
TLorentzVector TauValidation::leadingPionP4 ( const reco::GenParticle tau)
private

Definition at line 682 of file TauValidation.cc.

References funct::abs(), reco::CompositeRefCandidateT< D >::daughter(), reco::LeafCandidate::energy(), mps_fire::i, reco::CompositeRefCandidateT< D >::numberOfDaughters(), reco::LeafCandidate::p(), p4, reco::LeafCandidate::pdgId(), sysUtil::pid, reco::LeafCandidate::px(), reco::LeafCandidate::py(), and reco::LeafCandidate::pz().

Referenced by leadingPionMomentum(), spinEffectsWHpm(), and spinEffectsZH().

682  {
683  TLorentzVector p4(0,0,0,0);
684  for(unsigned int i = 0; i <tau->numberOfDaughters(); i++){
685  const reco::GenParticle *dau=static_cast<const reco::GenParticle*>(tau->daughter(i));
686  int pid = dau->pdgId();
687  if(abs(pid) == 15) return leadingPionP4(dau);
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());
690  }
691  return p4;
692 }
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) ...
double px() const final
x coordinate of momentum vector
double pz() const final
z coordinate of momentum vector
double p4[4]
Definition: TauolaWrapper.h:92
double energy() const final
energy
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double p() const final
magnitude of momentum vector
size_t numberOfDaughters() const override
number of daughters
double py() const final
y coordinate of momentum vector
TLorentzVector leadingPionP4(const reco::GenParticle *)
TLorentzVector TauValidation::motherP4 ( const reco::GenParticle tau)
private

Definition at line 694 of file TauValidation.cc.

References reco::LeafCandidate::energy(), GetMother(), funct::m, reco::LeafCandidate::px(), reco::LeafCandidate::py(), and reco::LeafCandidate::pz().

Referenced by spinEffectsWHpm().

694  {
695  const reco::GenParticle* m=GetMother(tau);
696  return TLorentzVector(m->px(),m->py(),m->pz(),m->energy());
697 }
double px() const final
x coordinate of momentum vector
const reco::GenParticle * GetMother(const reco::GenParticle *tau)
double pz() const final
z coordinate of momentum vector
double energy() const final
energy
double py() const final
y coordinate of momentum vector
void TauValidation::photons ( const reco::GenParticle tau,
double  weight 
)
private

Definition at line 712 of file TauValidation.cc.

References MonitorElement::Fill(), findFSRandBrem(), FindPhotosFSR(), findTauList(), mps_fire::i, TauBremPhotonsN, TauBremPhotonsPt, TauBremPhotonsPtSum, TauFSRPhotonsN, TauFSRPhotonsPt, TauFSRPhotonsPtSum, and mps_merge::weight.

Referenced by analyze().

712  {
713  // Find First tau in chain
714  std::vector<const reco::GenParticle*> TauList;
715  findTauList(tau,TauList);
716 
717  // Get List of Gauge Boson to tau(s) FSR and Brem
718  bool passedW=false;
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()){
724  TauValidation::findFSRandBrem(TauList.at(0),passedW,ListofFSR,ListofBrem);
725  TauValidation::FindPhotosFSR(TauList.at(0),FSR_photos,BosonScale);
726 
727  // Add the Tau Brem. information
728  TauBremPhotonsN->Fill(ListofBrem.size(),weight);
729  double photonPtSum=0;
730  for(unsigned int i=0;i<ListofBrem.size();i++){
731  photonPtSum+=ListofBrem.at(i)->pt();
732  TauBremPhotonsPt->Fill(ListofBrem.at(i)->pt(),weight);
733  }
734  TauBremPhotonsPtSum->Fill(photonPtSum,weight);
735 
736  // Now add the Gauge Boson FSR information
737  if(BosonScale!=0){
738  TauFSRPhotonsN->Fill(ListofFSR.size(),weight);
739  photonPtSum=0;
740  for(unsigned int i=0;i<ListofFSR.size();i++){
741  photonPtSum+=ListofFSR.at(i)->pt();
742  TauFSRPhotonsPt->Fill(ListofFSR.at(i)->pt(),weight);
743  }
744  double FSR_photosSum(0);
745  for(unsigned int i=0;i<FSR_photos.size();i++){
746  FSR_photosSum+=FSR_photos.at(i)->pt();
747  TauFSRPhotonsPt->Fill(FSR_photos.at(i)->pt()/BosonScale,weight*BosonScale);
748  }
749  TauFSRPhotonsPtSum->Fill(photonPtSum+FSR_photosSum/BosonScale,weight);
750  }
751  }
752 }
MonitorElement * TauFSRPhotonsN
Definition: TauValidation.h:92
void FindPhotosFSR(const reco::GenParticle *p, std::vector< const reco::GenParticle * > &ListofFSR, double &BosonScale)
MonitorElement * TauBremPhotonsN
Definition: TauValidation.h:92
Definition: weight.py:1
MonitorElement * TauBremPhotonsPtSum
Definition: TauValidation.h:92
void Fill(long long x)
MonitorElement * TauFSRPhotonsPt
Definition: TauValidation.h:92
MonitorElement * TauFSRPhotonsPtSum
Definition: TauValidation.h:92
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 * TauBremPhotonsPt
Definition: TauValidation.h:92
void TauValidation::spinEffectsWHpm ( const reco::GenParticle tau,
int  mother,
int  decay,
std::vector< const reco::GenParticle * > &  part,
double  weight 
)
private

Definition at line 408 of file TauValidation.cc.

References a1, funct::abs(), MonitorElement::Fill(), gamma, mps_fire::i, leadingPionP4(), TauDecay::MODE_3PI, TauDecay::MODE_ELECTRON, TauDecay::MODE_MUON, TauDecay::MODE_PI2PI0, TauDecay::MODE_PION, TauDecay::MODE_PIPI0, motherP4(), pi, PdtPdgMini::pi0, PdtPdgMini::pi_minus, PdtPdgMini::pi_plus, rho, TauSpinEffectsHpm_eX, TauSpinEffectsHpm_muX, TauSpinEffectsHpm_UpsilonA1, TauSpinEffectsHpm_UpsilonRho, TauSpinEffectsHpm_X, TauSpinEffectsW_eX, TauSpinEffectsW_muX, TauSpinEffectsW_UpsilonA1, TauSpinEffectsW_UpsilonRho, TauSpinEffectsW_X, and mps_merge::weight.

Referenced by analyze().

408  {
409  if(decay == TauDecay::MODE_PION || decay == TauDecay::MODE_MUON || decay == TauDecay::MODE_ELECTRON){ // polarization only for 1-prong hadronic taus with no neutral pions
410  TLorentzVector momP4 = motherP4(tau);
411  TLorentzVector pionP4 = leadingPionP4(tau);
412  pionP4.Boost(-1*momP4.BoostVector());
413  double energy = pionP4.E()/(momP4.M()/2);
414  if(decay == TauDecay::MODE_PION){
415  if(abs(mother) == 24) TauSpinEffectsW_X->Fill(energy,weight);
416  if(abs(mother) == 37) TauSpinEffectsHpm_X->Fill(energy,weight);
417  }
418  if(decay == TauDecay::MODE_MUON){
419  if(abs(mother) == 24) TauSpinEffectsW_muX->Fill(energy,weight);
420  if(abs(mother) == 37) TauSpinEffectsHpm_muX->Fill(energy,weight);
421  }
423  if(abs(mother) == 24) TauSpinEffectsW_eX->Fill(energy,weight);
424  if(abs(mother) == 37) TauSpinEffectsHpm_eX->Fill(energy,weight);
425  }
426  }
427  else if(decay==TauDecay::MODE_PIPI0){
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());
431  if(abs(part.at(i)->pdgId())==PdtPdgMini::pi_plus){pi+=LV; rho+=LV;}
432  if(abs(part.at(i)->pdgId())==PdtPdgMini::pi0){rho+=LV;}
433  }
434  if(abs(mother) == 24) TauSpinEffectsW_UpsilonRho->Fill(2*pi.P()/rho.P()-1,weight);
435  if(abs(mother) == 37) TauSpinEffectsHpm_UpsilonRho->Fill(2*pi.P()/rho.P()-1,weight);
436  }
437  else if(decay==TauDecay::MODE_3PI || decay==TauDecay::MODE_PI2PI0){ // only for pi2pi0 for now
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());
442  if(part.at(i)->pdgId()==PdtPdgMini::pi_plus){ pi_p+=LV; a1+=LV; nplus++;}
443  if(part.at(i)->pdgId()==PdtPdgMini::pi_minus){pi_m+=LV; a1+=LV; nminus++;}
444  }
445  double gamma=0;
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;
448  else{
449  pi_p+=pi_m; gamma=2*pi_p.P()/a1.P()-1;
450  }
451  if(abs(mother) == 24) TauSpinEffectsW_UpsilonA1->Fill(gamma,weight);
452  if(abs(mother) == 37) TauSpinEffectsHpm_UpsilonA1->Fill(gamma,weight);
453  }
454 }
MonitorElement * TauSpinEffectsW_X
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsHpm_UpsilonA1
Definition: TauValidation.h:92
math::XYZTLorentzVectorD LV
MonitorElement * TauSpinEffectsHpm_eX
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsW_muX
Definition: TauValidation.h:92
Definition: weight.py:1
MonitorElement * TauSpinEffectsHpm_UpsilonRho
Definition: TauValidation.h:92
void Fill(long long x)
TLorentzVector motherP4(const reco::GenParticle *)
MonitorElement * TauSpinEffectsW_UpsilonRho
Definition: TauValidation.h:92
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
part
Definition: HCALResponse.h:20
MonitorElement * TauSpinEffectsW_eX
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsW_UpsilonA1
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsHpm_X
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsHpm_muX
Definition: TauValidation.h:92
TLorentzVector leadingPionP4(const reco::GenParticle *)
void TauValidation::spinEffectsZH ( const reco::GenParticle boson,
double  weight 
)
private

Definition at line 456 of file TauValidation.cc.

References funct::abs(), TauDecay_GenParticle::AnalyzeTau(), PdtPdgMini::anti_d, PdtPdgMini::anti_u, ALCARECOTkAlJpsiMuMu_cff::charge, PdtPdgMini::d, reco::CompositeRefCandidateT< D >::daughter(), reco::LeafCandidate::energy(), MonitorElement::Fill(), findMother(), fPDGTable, TauDecay_GenParticle::Get_TauDecayProducts(), GetMothers(), PdtPdgMini::Higgs0, mps_fire::i, createfilelist::int, leadingPionP4(), funct::m, TauDecay::MODE_ELECTRON, TauDecay::MODE_MUON, TauDecay::MODE_PION, TauDecay::MODE_PIPI0, gen::n, reco::CompositeRefCandidateT< D >::numberOfDaughters(), reco::LeafCandidate::pdgId(), Pi, sysUtil::pid, reco::LeafCandidate::px(), reco::LeafCandidate::py(), reco::LeafCandidate::pz(), lumiQueryAPI::q, TauSpinEffectsH_eX, TauSpinEffectsH_muX, TauSpinEffectsH_MVis, TauSpinEffectsH_pipiAcollinearity, TauSpinEffectsH_pipiAcollinearityzoom, TauSpinEffectsH_pipiAcoplanarity, TauSpinEffectsH_rhorhoAcoplanarityminus, TauSpinEffectsH_rhorhoAcoplanarityplus, TauSpinEffectsH_X, TauSpinEffectsH_Xb, TauSpinEffectsH_Xf, TauSpinEffectsH_Zs, TauSpinEffectsZ_eX, TauSpinEffectsZ_muX, TauSpinEffectsZ_MVis, TauSpinEffectsZ_X, TauSpinEffectsZ_X100to120, TauSpinEffectsZ_X120UP, TauSpinEffectsZ_X50to75, TauSpinEffectsZ_X75to88, TauSpinEffectsZ_X88to100, TauSpinEffectsZ_Xb, TauSpinEffectsZ_Xf, TauSpinEffectsZ_Zs, PdtPdgMini::u, mps_merge::weight, globals_cff::x1, globals_cff::x2, Z, PdtPdgMini::Z0, zsbins, zsmax, zsmin, and Zstoa().

Referenced by analyze().

456  {
457  int ntau(0);
458  for(unsigned int i = 0; i <boson->numberOfDaughters(); i++){
459  const reco::GenParticle *dau=static_cast<const reco::GenParticle*>(boson->daughter(i));
460  if(ntau==1 && dau->pdgId() == 15)return;
461  if(boson->pdgId()!= 15 && abs(dau->pdgId()) == 15)ntau++;
462  }
463  if(ntau!=2) return;
464  if(abs(boson->pdgId())==PdtPdgMini::Z0 || abs(boson->pdgId())==PdtPdgMini::Higgs0){
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);
472  double x1(0),x2(0);
473  TLorentzVector Zboson(boson->px(),boson->py(),boson->pz(),boson->energy());
474  for(unsigned int i = 0; i <boson->numberOfDaughters(); i++){
475  const reco::GenParticle *dau=static_cast<const reco::GenParticle*>(boson->daughter(i));
476  int pid = dau->pdgId();
477  if(abs(findMother(dau)) != 15 && abs(pid) == 15){
479  unsigned int jak_id, TauBitMask;
480  if(TD.AnalyzeTau(dau,jak_id,TauBitMask,false,false)){
481  std::vector<const reco::GenParticle*> part=TD.Get_TauDecayProducts();
482  if(jak_id==TauDecay::MODE_PION || jak_id==TauDecay::MODE_MUON || jak_id==TauDecay::MODE_ELECTRON){
483  if(jak_id==TauDecay::MODE_PION) nSinglePionDecays++;
484  if(jak_id==TauDecay::MODE_MUON) nSingleMuonDecays++;
485  if(jak_id==TauDecay::MODE_ELECTRON) nSingleElectronDecays++;
486  TLorentzVector LVtau(dau->px(),dau->py(),dau->pz(),dau->energy());
487  tautau += LVtau;
488  TLorentzVector LVpi=leadingPionP4(dau);
489  pipi+=LVpi;
490  const HepPDT::ParticleData* pd = fPDGTable->particle(dau->pdgId ());
491  int charge = (int) pd->charge();
492  LVtau.Boost(-1*Zboson.BoostVector());
493  LVpi.Boost(-1*Zboson.BoostVector());
494 
495 
496 
497  if(jak_id==TauDecay::MODE_MUON){
498  if(abs(boson->pdgId())==PdtPdgMini::Z0) TauSpinEffectsZ_muX->Fill(LVpi.P()/LVtau.E(),weight);
499  if(abs(boson->pdgId())==PdtPdgMini::Higgs0) TauSpinEffectsH_muX->Fill(LVpi.P()/LVtau.E(),weight);
500 
501  }
502  if(jak_id==TauDecay::MODE_ELECTRON){
503  if(abs(boson->pdgId())==PdtPdgMini::Z0) TauSpinEffectsZ_eX->Fill(LVpi.P()/LVtau.E(),weight);
504  if(abs(boson->pdgId())==PdtPdgMini::Higgs0) TauSpinEffectsH_eX->Fill(LVpi.P()/LVtau.E(),weight);
505  }
506 
507 
508  if(jak_id==TauDecay::MODE_PION){
509  if(abs(boson->pdgId())==PdtPdgMini::Z0){
510  TauSpinEffectsZ_X->Fill(LVpi.P()/LVtau.E(),weight);
511  if(50.0<Zboson.M() && Zboson.M()<75.0) TauSpinEffectsZ_X50to75->Fill(LVpi.P()/LVtau.E(),weight);
512  if(75.0<Zboson.M() && Zboson.M()<88.0) TauSpinEffectsZ_X75to88->Fill(LVpi.P()/LVtau.E(),weight);
513  if(88.0<Zboson.M() && Zboson.M()<100.0) TauSpinEffectsZ_X88to100->Fill(LVpi.P()/LVtau.E(),weight);
514  if(100.0<Zboson.M() && Zboson.M()<120.0) TauSpinEffectsZ_X100to120->Fill(LVpi.P()/LVtau.E(),weight);
515  if(120.0<Zboson.M()) TauSpinEffectsZ_X120UP->Fill(LVpi.P()/LVtau.E(),weight);
516  }
517  if(abs(boson->pdgId())==PdtPdgMini::Higgs0) TauSpinEffectsH_X->Fill(LVpi.P()/LVtau.E(),weight);
518  }
519  if(charge<0){x1=LVpi.P()/LVtau.E(); taum=LVtau;}
520  else{ x2=LVpi.P()/LVtau.E();}
521  }
522  TLorentzVector LVtau(dau->px(),dau->py(),dau->pz(),dau->energy());
523  if(pid == 15)taum=LVtau;
524  if(pid ==-15)taup=LVtau;
525  if(jak_id==TauDecay::MODE_PIPI0){
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());
530  if(pid==15){
531  hasrho_minus=true;
532  if(pid_d==-211 ){ pi_rhominus=LV;}
533  if(abs(pid_d)==111 ){ pi0_rhominus=LV;}
534  }
535  if(pid==-15){
536  hasrho_plus=true;
537  if(pid_d==211 ){pi_rhoplus=LV;}
538  if(abs(pid_d)==111 ){pi0_rhoplus=LV;}
539  }
540  }
541  }
542  }
543  if(jak_id==TauDecay::MODE_PION){
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());
548  if(pid==15){
549  haspi_minus=true;
550  if(pid_d==-211 ){ pi_minus=LV;}
551  }
552  if(pid==-15){
553  haspi_plus=true;
554  if(pid_d==211 ){pi_plus=LV;}
555  }
556  }
557  }
558  }
559  }
560  }
561  }
562  if(hasrho_minus && hasrho_plus){
563  //compute rhorho
564  rho_minus=pi_rhominus;
565  rho_minus+=pi0_rhominus;
566  rho_plus=pi_rhoplus;
567  rho_plus+=pi0_rhoplus;
568  TLorentzVector rhorho=rho_minus;rhorho+=rho_plus;
569 
570  // boost to rhorho cm
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());
575 
576  // compute n+/-
577  TVector3 n_plus=pi_rhoplusb.Vect().Cross(pi0_rhoplusb.Vect());
578  TVector3 n_minus=pi_rhominusb.Vect().Cross(pi0_rhominusb.Vect());
579 
580  // compute the acoplanarity
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();}
583 
584  // now boost to tau frame
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());
589 
590  // compute y1 and y2
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());
593 
594  // fill histograms
595  if(abs(boson->pdgId())==PdtPdgMini::Higgs0 && y1*y2<0) TauSpinEffectsH_rhorhoAcoplanarityminus->Fill(Acoplanarity,weight);
596  if(abs(boson->pdgId())==PdtPdgMini::Higgs0 && y1*y2>0) TauSpinEffectsH_rhorhoAcoplanarityplus->Fill(Acoplanarity,weight);
597  }
598  if(haspi_minus && haspi_plus){
599  TLorentzVector tauporig=taup;
600  TLorentzVector taumorig=taum;
601 
602  // now boost to Higgs frame
603  pi_plus.Boost(-1*Zboson.BoostVector());
604  pi_minus.Boost(-1*Zboson.BoostVector());
605 
606  taup.Boost(-1*Zboson.BoostVector());
607  taum.Boost(-1*Zboson.BoostVector());
608 
609  if(abs(boson->pdgId())==PdtPdgMini::Higgs0){
610  TauSpinEffectsH_pipiAcollinearity->Fill(acos(pi_plus.Vect().Dot(pi_minus.Vect())/(pi_plus.P()*pi_minus.P())));
611  TauSpinEffectsH_pipiAcollinearityzoom->Fill(acos(pi_plus.Vect().Dot(pi_minus.Vect())/(pi_plus.P()*pi_minus.P())));
612  }
613 
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();
618  Tau_m*=proj_m;
619  Tau_p*=proj_p;
620  TVector3 Pit_m=pi_minus.Vect()-Tau_m;
621  TVector3 Pit_p=pi_plus.Vect()-Tau_p;
622 
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();}
626  // fill histograms
628  taup=tauporig;
629  taum=taumorig;
630  }
631  if(nSinglePionDecays == 2 && tautau.M()!= 0) {
632  for(int i=0;i<zsbins;i++){
633  double zslow=((double)i)*(zsmax-zsmin)/((double)zsbins)+zsmin;
634  double zsup=((double)i+1)*(zsmax-zsmin)/((double)zsbins)+zsmin;
635  double aup=Zstoa(zsup), alow=Zstoa(zslow);
636  if(x2-x1>alow && x2-x1<aup){
637  double zs=(zsup+zslow)/2;
640  break;
641  }
642  }
643  if(abs(boson->pdgId())==PdtPdgMini::Z0) TauSpinEffectsZ_MVis->Fill(pipi.M()/tautau.M(),weight);
644  if(abs(boson->pdgId())==PdtPdgMini::Higgs0) TauSpinEffectsH_MVis->Fill(pipi.M()/tautau.M(),weight);
645 
646  if(x1!=0){
647  const std::vector<const reco::GenParticle*> m=GetMothers(boson);
648  int q(0),qbar(0);
649  TLorentzVector Z(0,0,0,0);
650  for(unsigned int i=0;i<m.size();i++){
651  if(m.at(i)->pdgId()==PdtPdgMini::d || m.at(i)->pdgId()==PdtPdgMini::u ){q++;}
652  if(m.at(i)->pdgId()==PdtPdgMini::anti_d || m.at(i)->pdgId()==PdtPdgMini::anti_u ){qbar++;}
653  }
654  if(q==1 && qbar==1){// assume q has largest E (valence vs see quarks)
655  if(taum.Vect().Dot(Zboson.Vect())/(Zboson.P()*taum.P())>0){
658  }
659  else{
662  }
663  }
664  }
665  }
666  }
667 }
const double Pi
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
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_Xb
Definition: TauValidation.h:92
math::XYZTLorentzVectorD LV
MonitorElement * TauSpinEffectsH_MVis
Definition: TauValidation.h:92
double px() const final
x coordinate of momentum vector
MonitorElement * TauSpinEffectsZ_X100to120
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_Xf
Definition: TauValidation.h:92
Definition: weight.py:1
MonitorElement * TauSpinEffectsH_pipiAcoplanarity
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_eX
Definition: TauValidation.h:92
void Fill(long long x)
MonitorElement * TauSpinEffectsH_pipiAcollinearityzoom
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_X88to100
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_rhorhoAcoplanarityminus
Definition: TauValidation.h:92
double pz() const final
z coordinate of momentum vector
MonitorElement * TauSpinEffectsZ_X50to75
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_Xf
Definition: TauValidation.h:92
double energy() const final
energy
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
MonitorElement * TauSpinEffectsZ_muX
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_Zs
Definition: TauValidation.h:92
HepPDT::ParticleData ParticleData
std::vector< const reco::GenParticle * > Get_TauDecayProducts()
const std::vector< const reco::GenParticle * > GetMothers(const reco::GenParticle *boson)
MonitorElement * TauSpinEffectsZ_MVis
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_X75to88
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_pipiAcollinearity
Definition: TauValidation.h:92
part
Definition: HCALResponse.h:20
size_t numberOfDaughters() const override
number of daughters
MonitorElement * TauSpinEffectsZ_X
Definition: TauValidation.h:92
double py() const final
y coordinate of momentum vector
edm::ESHandle< HepPDT::ParticleDataTable > fPDGTable
PDT table.
Definition: TauValidation.h:89
MonitorElement * TauSpinEffectsH_eX
Definition: TauValidation.h:92
double Zstoa(double zs)
MonitorElement * TauSpinEffectsH_muX
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsZ_Zs
Definition: TauValidation.h:92
bool AnalyzeTau(const reco::GenParticle *Tau, unsigned int &MODE_ID, unsigned int &TauBitMask, bool dores, bool dopi0)
MonitorElement * TauSpinEffectsZ_X120UP
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_Xb
Definition: TauValidation.h:92
MonitorElement * TauSpinEffectsH_X
Definition: TauValidation.h:92
TLorentzVector leadingPionP4(const reco::GenParticle *)
int TauValidation::tauDecayChannel ( const reco::GenParticle tau,
int  jak_id,
unsigned int  TauBitMask,
double  weight 
)
private

Definition at line 354 of file TauValidation.cc.

References a1, countParticles(), electron, MonitorElement::Fill(), K, Kstar, muon, pi, pi1pi0, pinpi0, rho, stable, reco::LeafCandidate::status(), TauDecayChannels, tripi, tripinpi0, and undetermined.

Referenced by analyze().

354  {
355  int channel = undetermined;
356  if(tau->status() == 1) channel = stable;
357  int allCount = 0,
358  eCount = 0,
359  muCount = 0,
360  pi0Count = 0,
361  piCount = 0,
362  rhoCount = 0,
363  a1Count = 0,
364  KCount = 0,
365  KstarCount = 0;
366 
367  countParticles(tau,allCount,eCount,muCount,pi0Count,piCount,rhoCount,a1Count,KCount,KstarCount);
368 
369  // resonances
370  if(KCount >= 1) channel = K;
371  if(KstarCount >= 1) channel = Kstar;
372  if(a1Count >= 1) channel = a1;
373  if(rhoCount >= 1) channel = rho;
374  if(channel!=undetermined && weight!=0.0) TauDecayChannels->Fill(channel,weight);
375 
376  // final state products
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;
382  if(eCount == 1) channel = electron;
383  if(muCount == 1) channel = muon;
384  if(weight!=0.0) TauDecayChannels->Fill(channel,weight);
385  return channel;
386 }
Definition: weight.py:1
void Fill(long long x)
MonitorElement * TauDecayChannels
Definition: TauValidation.h:92
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
int TauValidation::tauMother ( const reco::GenParticle tau,
double  weight 
)
private

Definition at line 334 of file TauValidation.cc.

References A0, funct::abs(), B, D, MonitorElement::Fill(), findMother(), gamma, H0, Hpm, HSM, diffTwoXMLs::label, other, reco::LeafCandidate::pdgId(), TauMothers, W, and Z.

Referenced by analyze().

334  {
335  if(abs(tau->pdgId()) != 15 ) return -3;
336  int mother_pid = findMother(tau);
337  if(mother_pid == -2) return -2;
338  int label = other;
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;
349  TauMothers->Fill(label,weight);
350  if(label==B || label == D || label == other) return -1;
351  return mother_pid;
352 }
int pdgId() const final
PDG identifier.
int findMother(const reco::GenParticle *)
MonitorElement * TauMothers
Definition: TauValidation.h:92
Definition: weight.py:1
void Fill(long long x)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int TauValidation::tauProngs ( const reco::GenParticle ,
double  weight 
)
private
double TauValidation::visibleTauEnergy ( const reco::GenParticle tau)
private

Definition at line 699 of file TauValidation.cc.

References funct::abs(), reco::CompositeRefCandidateT< D >::daughter(), reco::LeafCandidate::energy(), mps_fire::i, reco::CompositeRefCandidateT< D >::numberOfDaughters(), p4, reco::LeafCandidate::pdgId(), sysUtil::pid, reco::LeafCandidate::px(), reco::LeafCandidate::py(), and reco::LeafCandidate::pz().

699  {
700  TLorentzVector p4(tau->px(),tau->py(),tau->pz(),tau->energy());
701  for(unsigned int i = 0; i <tau->numberOfDaughters(); i++){
702  const reco::GenParticle *dau=static_cast<const reco::GenParticle*>(tau->daughter(i));
703  int pid = dau->pdgId();
704  if(abs(pid) == 15) return visibleTauEnergy(dau);
705  if(abs(pid) == 12 || abs(pid) == 14 || abs(pid) == 16) {
706  p4-=TLorentzVector(dau->px(),dau->py(),dau->pz(),dau->energy());
707  }
708  }
709  return p4.E();
710 }
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) ...
double px() const final
x coordinate of momentum vector
double pz() const final
z coordinate of momentum vector
double p4[4]
Definition: TauolaWrapper.h:92
double energy() const final
energy
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double visibleTauEnergy(const reco::GenParticle *)
size_t numberOfDaughters() const override
number of daughters
double py() const final
y coordinate of momentum vector
double TauValidation::Zstoa ( double  zs)
private

Definition at line 669 of file TauValidation.cc.

References a, and mathSSE::sqrt().

Referenced by spinEffectsZH().

669  {
670  double a=1-sqrt(fabs(1.0-2*fabs(zs)));
671  if(zs<0){
672  a*=-1.0;
673  }
674  return a;
675 }
T sqrt(T t)
Definition: SSEVec.h:18
double a
Definition: hdecay.h:121

Member Data Documentation

MonitorElement * TauValidation::DecayLength
private

Definition at line 92 of file TauValidation.h.

Referenced by analyze(), and bookHistograms().

edm::ESHandle<HepPDT::ParticleDataTable> TauValidation::fPDGTable
private

PDT table.

Definition at line 89 of file TauValidation.h.

Referenced by dqmBeginRun(), and spinEffectsZH().

edm::InputTag TauValidation::genparticleCollection_
private

Definition at line 86 of file TauValidation.h.

Referenced by TauValidation().

edm::EDGetTokenT<reco::GenParticleCollection> TauValidation::genparticleCollectionToken_
private

Definition at line 111 of file TauValidation.h.

Referenced by analyze(), and TauValidation().

MonitorElement * TauValidation::LifeTime
private

Definition at line 92 of file TauValidation.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TauValidation::MODEID
private

Definition at line 105 of file TauValidation.h.

Referenced by analyze(), and bookHistograms().

std::vector<std::vector<MonitorElement *> > TauValidation::MODEInvMass
private

Definition at line 106 of file TauValidation.h.

Referenced by analyze(), and bookHistograms().

unsigned int TauValidation::NMODEID
private

Definition at line 104 of file TauValidation.h.

Referenced by analyze(), and bookHistograms().

MonitorElement * TauValidation::nPrimeTaus
private

Definition at line 91 of file TauValidation.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TauValidation::nTaus
private

Definition at line 91 of file TauValidation.h.

Referenced by analyze(), and bookHistograms().

MonitorElement * TauValidation::TauBremPhotonsN
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and photons().

MonitorElement * TauValidation::TauBremPhotonsPt
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and photons().

MonitorElement * TauValidation::TauBremPhotonsPtSum
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and photons().

MonitorElement * TauValidation::TauDecayChannels
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and tauDecayChannel().

MonitorElement * TauValidation::TauEta
private

Definition at line 92 of file TauValidation.h.

Referenced by analyze(), and bookHistograms().

MonitorElement * TauValidation::TauFSRPhotonsN
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and photons().

MonitorElement * TauValidation::TauFSRPhotonsPt
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and photons().

MonitorElement * TauValidation::TauFSRPhotonsPtSum
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and photons().

MonitorElement * TauValidation::TauMothers
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and tauMother().

MonitorElement * TauValidation::TauPhi
private

Definition at line 92 of file TauValidation.h.

Referenced by analyze(), and bookHistograms().

MonitorElement * TauValidation::TauProngs
private

Definition at line 92 of file TauValidation.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TauValidation::TauPt
private

Definition at line 92 of file TauValidation.h.

Referenced by analyze(), and bookHistograms().

MonitorElement * TauValidation::TauSpinEffectsH_eX
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsH_muX
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsH_MVis
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsH_pipiAcollinearity
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsH_pipiAcollinearityzoom
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsH_pipiAcoplanarity
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsH_rhorhoAcoplanarityminus
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsH_rhorhoAcoplanarityplus
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsH_X
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsH_Xb
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsH_Xf
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsH_Zs
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsHpm_eX
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsWHpm().

MonitorElement * TauValidation::TauSpinEffectsHpm_muX
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsWHpm().

MonitorElement * TauValidation::TauSpinEffectsHpm_UpsilonA1
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsWHpm().

MonitorElement * TauValidation::TauSpinEffectsHpm_UpsilonRho
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsWHpm().

MonitorElement * TauValidation::TauSpinEffectsHpm_X
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsWHpm().

MonitorElement * TauValidation::TauSpinEffectsW_eX
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsWHpm().

MonitorElement * TauValidation::TauSpinEffectsW_muX
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsWHpm().

MonitorElement * TauValidation::TauSpinEffectsW_UpsilonA1
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsWHpm().

MonitorElement * TauValidation::TauSpinEffectsW_UpsilonRho
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsWHpm().

MonitorElement * TauValidation::TauSpinEffectsW_X
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsWHpm().

MonitorElement * TauValidation::TauSpinEffectsZ_eX
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsZ_muX
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsZ_MVis
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsZ_X
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsZ_X100to120
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsZ_X120UP
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsZ_X50to75
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsZ_X75to88
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsZ_X88to100
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsZ_Xb
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsZ_Xf
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

MonitorElement * TauValidation::TauSpinEffectsZ_Zs
private

Definition at line 92 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

int TauValidation::zsbins
private

Definition at line 108 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

double TauValidation::zsmax
private

Definition at line 109 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().

double TauValidation::zsmin
private

Definition at line 109 of file TauValidation.h.

Referenced by bookHistograms(), and spinEffectsZH().