20 int i=0,j=0, k=0, l=0;
21 gStyle->SetOptFit(1011);
24 TString OutFile=
"out_dummy.root";
29 TFile *
out = TFile::Open(prefix+
"_ana_ntp.root",
"RECREATE");
36 njpsi->
Column(
"tjpsim", 0.0
f, -999.9
f);
37 njpsi->
Column(
"tjpsip", 0.0
f, -999.9
f);
38 njpsi->
Column(
"tjpsitht", 0.0
f, -999.9
f);
40 npsip->
Column(
"tpsim", 0.0
f, -999.9
f);
41 npsip->
Column(
"tpsip", 0.0
f, -999.9
f);
42 npsip->
Column(
"tpsitht", 0.0
f, -999.9
f);
50 if (nevts==0) nevts= theAnalysis->
GetEntries();
56 double m0_jpsi = TDatabasePDG::Instance()->GetParticle(
"J/psi")->Mass();
60 TString pidSelection =
"PidAlgoEmcBayes;PidAlgoDrc;PidAlgoDisc;PidAlgoStt;PidAlgoMdtHardCuts";
63 TLorentzVector ini(0, 0, 6.231552, 7.240065);
72 while (theAnalysis->
GetEvent() && i++<nevts)
74 if ((i%100)==0) cout<<
"evt " << i << endl;
77 theAnalysis->
FillList(muplus,
"MuonAllPlus", pidSelection);
78 theAnalysis->
FillList(muminus,
"MuonAllMinus", pidSelection);
79 theAnalysis->
FillList(piplus,
"PionAllPlus", pidSelection);
80 theAnalysis->
FillList(piminus,
"PionAllMinus", pidSelection);
109 double chi2_vtx = vtxfitter.GetChi2();
110 double prob_vtx = vtxfitter.GetProb();
111 TVector3 vtxpos(-999.,-999.,-999.);
112 if (fitvtx_jpsi) vtxpos = fitvtx_jpsi->
Daughter(0)->
Pos();
116 mfitter.AddMassConstraint(m0_jpsi);
120 double chi2_mass = mfitter.GetChi2();
121 double prob_mass = mfitter.GetProb();
126 njpsi->
Column(
"ev", (Float_t) i, -999.9
f);
127 njpsi->
Column(
"cand", (Float_t) j, -999.9
f);
130 njpsi->
Column(
"jpsim", (Float_t) jpsi[j]->M(), -999.9
f);
131 njpsi->
Column(
"jpsip", (Float_t) jpsi[j]->
P(), -999.9
f);
132 njpsi->
Column(
"jpsipt", (Float_t) jpsi[j]->P3().Pt(), -999.9
f);
133 njpsi->
Column(
"jpsitht", (Float_t) jpsi[j]->P3().Theta(), -999.9
f);
134 njpsi->
Column(
"jpsimissm", (Float_t) (ini-(jpsi[j]->P4())).M(), -999.9
f);
137 njpsi->
Column(
"mct", (Float_t) mct, -999.9
f);
140 njpsi->
Column(
"tjpsim", (Float_t) true_jpsi->
M(), -999.9f);
141 njpsi->
Column(
"tjpsip", (Float_t) true_jpsi->
M(), -999.9f);
142 njpsi->
Column(
"tjpsitht",(Float_t) true_jpsi->
P3().Theta(), -999.9f);
146 njpsi->
Column(
"jpsimvtx", (Float_t) fitvtx_jpsi->
M(), -999.9f);
147 njpsi->
Column(
"chi2vtx", (Float_t) chi2_vtx, -999.9
f);
148 njpsi->
Column(
"probvtx", (Float_t) prob_vtx, -999.9
f);
149 njpsi->
Column(
"vtxx", (Float_t) vtxpos.X(), -999.9f);
150 njpsi->
Column(
"vtxy", (Float_t) vtxpos.Y(), -999.9f);
151 njpsi->
Column(
"vtxz", (Float_t) vtxpos.Z(), -999.9f);
153 njpsi->
Column(
"jpsimmass", (Float_t) fitmass_jpsi->
M(), -999.9f);
154 njpsi->
Column(
"chi2mass", (Float_t) chi2_mass, -999.9
f);
155 njpsi->
Column(
"probmass", (Float_t) prob_mass, -999.9
f);
158 njpsi->
Column(
"mupp", (Float_t) mup->
P(), -999.9f);
159 njpsi->
Column(
"muppt", (Float_t) mup->
P3().Pt(), -999.9f);
160 njpsi->
Column(
"muptht", (Float_t) mup->
P3().Theta(), -999.9f);
162 njpsi->
Column(
"mump", (Float_t) mum->
P(), -999.9f);
163 njpsi->
Column(
"mumpt", (Float_t) mum->
P3().Pt(), -999.9f);
164 njpsi->
Column(
"mumtht", (Float_t) mum->
P3().Theta(), -999.9f);
176 psi2s.
Combine(jpsi, piplus, piminus);
195 fitter.Add4MomConstraint(ini);
197 RhoCandidate *fit4c_jpsi = psi2s[j]->Daughter(0)->GetFit();
199 double chi2_4c = fitter.GetChi2();
200 double prob_4c = fitter.GetProb();
203 npsip->
Column(
"ev", (Float_t) i, -999.9
f);
204 npsip->
Column(
"cand", (Float_t) j, -999.9
f);
207 qa.qaCand(
"psi", psi2s[j], npsip);
210 qa.qaCand(
"jpsi" , jp , npsip);
211 qa.qaCand(
"jpsi4cfit", fit4c_jpsi, npsip);
214 npsip->
Column(
"mct", (Float_t) mct, -999.9
f);
217 npsip->
Column(
"tpsim", (Float_t) true_psi->
M(), -999.9f);
218 npsip->
Column(
"tpsip", (Float_t) true_psi->
M(), -999.9f);
219 npsip->
Column(
"tpsitht",(Float_t) true_psi->
P3().Theta(), -999.9f);
223 qa.qaCand(
"pip", pip, npsip);
224 qa.qaCand(
"pim", pip, npsip);
227 qa.qaPid(
"pip", pip, npsip);
228 qa.qaPid(
"pim", pip, npsip);
FairRunAna * initrun(TString prefix, TString outfile, int min=-1, int max=-1)
Bool_t FillList(RhoCandList &l, TString listkey="All", TString pidTcaNames="", int trackHypothesis=-1)
PndPidCandidate * GetRecoCandidate() const
RhoCandidate * Daughter(Int_t n)
void Combine(RhoCandList &l1, RhoCandList &l2)
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
void SetType(const TParticlePDG *pdt, int start=0)
TTree * GetInternalTree()
Bool_t McTruthMatch(RhoCandidate *cand, Int_t level=2, bool verbose=false)
Int_t GetEvent(Int_t n=-1)
double GetPidInfo(int hypo)