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;
Groups:
- yiguo's blog
- Login or register to post comments