11 int i=0,j=0, k=0, l=0;
12 gStyle->SetOptFit(1011);
15 TString OutFile=
"out_dummy.root";
18 TString inPidFile = prefix+
"_pid.root";
19 TString inParFile = prefix+
"_par.root";
22 TString pidParFile =
TString(gSystem->Getenv(
"VMCWORKDIR"))+
"/macro/params/all.par";
25 FairLogger::GetLogger()->SetLogToFile(kFALSE);
26 FairRunAna*
fRun =
new FairRunAna();
27 FairRuntimeDb*
rtdb = fRun->GetRuntimeDb();
28 fRun->SetSource(
new FairFileSource(inPidFile));
31 FairParRootFileIo* parIO =
new FairParRootFileIo();
32 parIO->open(inParFile);
33 FairParAsciiFileIo* parIOPid =
new FairParAsciiFileIo();
34 parIOPid->open(pidParFile.Data(),
"in");
36 rtdb->setFirstInput(parIO);
37 rtdb->setSecondInput(parIOPid);
38 rtdb->setOutput(parIO);
40 fRun->SetOutputFile(OutFile);
44 TFile *
out = TFile::Open(prefix+
"_ana_ntp.root",
"RECREATE");
51 njpsi->
Column(
"tjpsim", 0.0
f, -999.9
f);
52 njpsi->
Column(
"tjpsip", 0.0
f, -999.9
f);
53 njpsi->
Column(
"tjpsitht", 0.0
f, -999.9
f);
55 npsip->
Column(
"tpsim", 0.0
f, -999.9
f);
56 npsip->
Column(
"tpsip", 0.0
f, -999.9
f);
57 npsip->
Column(
"tpsitht", 0.0
f, -999.9
f);
66 if (nevts==0) nevts= theAnalysis->
GetEntries();
72 double m0_jpsi = TDatabasePDG::Instance()->GetParticle(
"J/psi")->Mass();
76 TString pidSelection =
"PidAlgoEmcBayes;PidAlgoDrc;PidAlgoDisc;PidAlgoStt;PidAlgoMdtHardCuts";
79 TLorentzVector ini(0, 0, 6.231552, 7.240065);
84 while (theAnalysis->
GetEvent() && i++<nevts)
86 if ((i%100)==0) cout<<
"evt " << i << endl;
89 theAnalysis->
FillList(muplus,
"MuonAllPlus", pidSelection);
90 theAnalysis->
FillList(muminus,
"MuonAllMinus", pidSelection);
91 theAnalysis->
FillList(piplus,
"PionAllPlus", pidSelection);
92 theAnalysis->
FillList(piminus,
"PionAllMinus", pidSelection);
121 double chi2_vtx = vtxfitter.
GetChi2();
122 double prob_vtx = vtxfitter.
GetProb();
123 TVector3 vtxpos(-999.,-999.,-999.);
124 if (fitvtx_jpsi) vtxpos = fitvtx_jpsi->
Daughter(0)->
Pos();
132 double chi2_mass = mfitter.
GetChi2();
133 double prob_mass = mfitter.
GetProb();
138 njpsi->
Column(
"ev", (Float_t) i, -999.9
f);
139 njpsi->
Column(
"cand", (Float_t) j, -999.9
f);
142 njpsi->
Column(
"jpsim", (Float_t) jpsi[j]->M(), -999.9
f);
143 njpsi->
Column(
"jpsip", (Float_t) jpsi[j]->
P(), -999.9
f);
144 njpsi->
Column(
"jpsipt", (Float_t) jpsi[j]->P3().Pt(), -999.9
f);
145 njpsi->
Column(
"jpsitht", (Float_t) jpsi[j]->P3().Theta(), -999.9
f);
146 njpsi->
Column(
"jpsimissm", (Float_t) (ini-(jpsi[j]->P4())).M(), -999.9
f);
149 njpsi->
Column(
"mct", (Float_t) mct, -999.9
f);
152 njpsi->
Column(
"tjpsim", (Float_t) true_jpsi->
M(), -999.9f);
153 njpsi->
Column(
"tjpsip", (Float_t) true_jpsi->
M(), -999.9f);
154 njpsi->
Column(
"tjpsitht",(Float_t) true_jpsi->
P3().Theta(), -999.9f);
158 njpsi->
Column(
"jpsimvtx", (Float_t) fitvtx_jpsi->
M(), -999.9f);
159 njpsi->
Column(
"chi2vtx", (Float_t) chi2_vtx, -999.9
f);
160 njpsi->
Column(
"probvtx", (Float_t) prob_vtx, -999.9
f);
161 njpsi->
Column(
"vtxx", (Float_t) vtxpos.X(), -999.9f);
162 njpsi->
Column(
"vtxy", (Float_t) vtxpos.Y(), -999.9f);
163 njpsi->
Column(
"vtxz", (Float_t) vtxpos.Z(), -999.9f);
165 njpsi->
Column(
"jpsimmass", (Float_t) fitmass_jpsi->
M(), -999.9f);
166 njpsi->
Column(
"chi2mass", (Float_t) chi2_mass, -999.9
f);
167 njpsi->
Column(
"probmass", (Float_t) prob_mass, -999.9
f);
170 njpsi->
Column(
"mupp", (Float_t) mup->
P(), -999.9f);
171 njpsi->
Column(
"muppt", (Float_t) mup->
P3().Pt(), -999.9f);
172 njpsi->
Column(
"muptht", (Float_t) mup->
P3().Theta(), -999.9f);
174 njpsi->
Column(
"mump", (Float_t) mum->
P(), -999.9f);
175 njpsi->
Column(
"mumpt", (Float_t) mum->
P3().Pt(), -999.9f);
176 njpsi->
Column(
"mumtht", (Float_t) mum->
P3().Theta(), -999.9f);
188 psi2s.
Combine(jpsi, piplus, piminus);
209 RhoCandidate *fit4c_jpsi = psi2s[j]->Daughter(0)->GetFit();
211 double chi2_4c = fitter.
GetChi2();
212 double prob_4c = fitter.
GetProb();
215 npsip->
Column(
"ev", (Float_t) i, -999.9
f);
216 npsip->
Column(
"cand", (Float_t) j, -999.9
f);
219 npsip->
Column(
"psim", (Float_t) psi2s[j]->M(), -999.9
f);
220 npsip->
Column(
"psip", (Float_t) psi2s[j]->
P(), -999.9
f);
221 npsip->
Column(
"psipt", (Float_t) psi2s[j]->P3().Pt(), -999.9
f);
222 npsip->
Column(
"psitht", (Float_t) psi2s[j]->P3().Theta(), -999.9
f);
225 npsip->
Column(
"jpsim", (Float_t) jp->
M(), -999.9f);
226 npsip->
Column(
"jpsip", (Float_t) jp->
P(), -999.9f);
227 npsip->
Column(
"jpsipt", (Float_t) jp->
P3().Pt(), -999.9f);
228 npsip->
Column(
"jpsitht",(Float_t) jp->
P3().Theta(), -999.9f);
230 npsip->
Column(
"jpsim4c",(Float_t) fit4c_jpsi->
M(), -999.9f);
233 npsip->
Column(
"mct", (Float_t) mct, -999.9
f);
236 npsip->
Column(
"tpsim", (Float_t) true_psi->
M(), -999.9f);
237 npsip->
Column(
"tpsip", (Float_t) true_psi->
M(), -999.9f);
238 npsip->
Column(
"tpsitht",(Float_t) true_psi->
P3().Theta(), -999.9f);
242 npsip->
Column(
"pipp", (Float_t) pip->
P(), -999.9f);
243 npsip->
Column(
"pippt", (Float_t) pip->
P3().Pt(), -999.9f);
244 npsip->
Column(
"piptht", (Float_t) pip->
P3().Theta(), -999.9f);
246 npsip->
Column(
"pimp", (Float_t) pim->
P(), -999.9f);
247 npsip->
Column(
"pimpt", (Float_t) pim->
P3().Pt(), -999.9f);
248 npsip->
Column(
"pimtht", (Float_t) pim->
P3().Theta(), -999.9f);
void AddMassConstraint(double mass)
Bool_t FillList(RhoCandList &l, TString listkey="All", TString pidTcaNames="", int trackHypothesis=-1)
PndPidCandidate * GetRecoCandidate() const
RhoCandidate * Daughter(Int_t n)
void Add4MomConstraint(TLorentzVector lv)
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)
void tut_ana_ntp(int nevts=0, TString prefix="signal")
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)