PhiV Calculation code

 
PhiV cut in Code

  1 // cut function
  2 TF1 *phiVm=new TF1("phiVm","0.84326*exp((-49.4819)*x)+(-0.996609)*x+(0.19801)",0.,1.0);
  3
  4 // phiV cut
  5 bool photonTag(TLorentzVector e, TLorentzVector p){
  6   StThreeVector<double> ppp(p.Px(),p.Py(),p.Pz());
  7   StThreeVector<double> eee(e.Px(),e.Py(),e.Pz());
  8
  9   StThreeVector<double> u=ppp+eee;
 10   StThreeVector<double> v=eee.cross(ppp);
 11   StThreeVector<double> w=u.cross(v);
 12   StThreeVector<double> nz(0.,0.,mN);
 13   StThreeVector<double> wc=u.cross(nz);
 14
 15   double phiV =w.angle(wc);.
 16   double openangle=ppp.angle(eee);
 17
 18   TLorentzVector pair(0,0,0,0);
 19   pair = e + p;
 20   int flag = photonCut(pair.M(),phiV);
 21   if(flag == 8||flag == 68) return kTRUE; // phiV<phiCut && mass<0.2
 22   //if(flag == 6||flag == 68) return kTRUE; // mass<0.1
 23   return kFALSE;
 24 }
 25
 26 int photonCut(double mass,double phiV)
 27 {.
 28   int Index=0;
 29
 30   if(mass<0.1 )Index=6;
 31
 32   double phiCut=0.;
 33   phiCut = phiVm->Eval(mass);
 34   if(phiV < phiCut && mass<0.2 )Index=8;
 35   if(phiV < phiCut && mass<0.1 )Index=68;
 36   //Index=0;
 37   return Index;
 38 }
 39
 40 // like sign
 41 for(int i=0;i<current_neplus;i++){
 42   for(int j=i+1;j<current_neplus;j++){
 43     if(photonTag(current_eplus[i],current_eplus[j])) continue;
 44   }
 45 }
 46
 47
 

PhiV cut in pair efficiency

400     // phi_v cut
401
402     TVector3 u = (EmomRc.Vect() + PmomRc.Vect()).Unit();
403     TVector3 v = EmomRc.Vect().Unit().Cross(PmomRc.Vect().Unit());
404     TVector3 w = u.Cross(v);
405     TVector3 z(0.,0.,1.);
406     TVector3 wc = u.Cross(z);
407     double phiv = w.Angle(wc);
408     hPhiV->Fill(phiv*180./TMath::Pi(), GmomRc.M());
409     //if(Gmom.M()<0.2 && phiv<fPhiV->Eval(Gmom.M())) continue;
410     if(GmomRc.M()<0.2 && phiv<fPhiV->Eval(GmomRc.M())) continue;