61 TString parAsciiFile =
"all.par";
64 TString input =
"psi2s_Jpsi2pi_Jpsi_mumu.dec";
79 int i=0,j=0, k=0, l=0;
80 gStyle->SetOptFit(1011);
105 TString OutFile=
"out_dummy.root";
108 TString inPidFile = prefix+
"_pid.root";
109 TString inParFile = prefix+
"_par.root";
112 TString pidParFile =
TString(gSystem->Getenv(
"VMCWORKDIR"))+
"/macro/params/all.par";
115 FairLogger::GetLogger()->SetLogToFile(kFALSE);
116 FairRunAna*
fRun =
new FairRunAna();
117 FairRuntimeDb*
rtdb = fRun->GetRuntimeDb();
118 fRun->SetSource(
new FairFileSource(inPidFile));
119 fRun->SetUseFairLinks(kTRUE);
122 FairParRootFileIo* parIO =
new FairParRootFileIo();
123 parIO->open(inParFile);
124 FairParAsciiFileIo* parIOPid =
new FairParAsciiFileIo();
125 parIOPid->open(pidParFile.Data(),
"in");
127 rtdb->setFirstInput(parIO);
128 rtdb->setSecondInput(parIOPid);
129 rtdb->setOutput(parIO);
131 fRun->SetOutputFile(OutFile);
158 TFile *
out = TFile::Open(prefix+
"_output_ana.root",
"RECREATE");
168 if (nevts==0) nevts= theAnalysis->
GetEntries();
171 RhoCandList muplus,
muminus,
piplus,
piminus,
eplus,
eminus,
kplus,
kminus,
pplus,
pminus, mctruth;
174 double m0_jpsi = TDatabasePDG::Instance()->GetParticle(
"J/psi")->Mass();
178 TLorentzVector ini(0, 0, 6.231552, 7.240065);
184 int cntdbltrk=0, cntdblmc=0, cntdblboth=0, cnttrk=0, cnt_dbl_jpsi=0, cnt_dbl_psip=0;
186 while (theAnalysis->
GetEvent() && i++<nevts)
188 if ((i%100)==0) cout<<
"evt " << i << endl;
191 theAnalysis->
FillList(mctruth,
"McTruth");
193 theAnalysis->
FillList(eplus,
"PionAllPlus",
"PidAlgoStt;PidAlgoMvd;PidAlgoEmcBayes;PidAlgoDrc;PidAlgoDisc");
194 theAnalysis->
FillList(eminus,
"PionAllMinus",
"PidAlgoStt;PidAlgoMvd;PidAlgoEmcBayes;PidAlgoDrc;PidAlgoDisc");
195 theAnalysis->
FillList(muplus,
"MuonAllPlus",
"PidAlgoMdtHardCuts");
196 theAnalysis->
FillList(muminus,
"MuonAllMinus",
"PidAlgoMdtHardCuts");
197 theAnalysis->
FillList(piplus,
"PionAllPlus",
"PidAlgoStt;PidAlgoMvd;PidAlgoEmcBayes;PidAlgoDrc;PidAlgoDisc");
198 theAnalysis->
FillList(piminus,
"PionAllMinus",
"PidAlgoStt;PidAlgoMvd;PidAlgoEmcBayes;PidAlgoDrc;PidAlgoDisc");
199 theAnalysis->
FillList(kplus,
"PionAllPlus",
"PidAlgoStt;PidAlgoMvd;PidAlgoEmcBayes;PidAlgoDrc;PidAlgoDisc");
200 theAnalysis->
FillList(kminus,
"PionAllMinus",
"PidAlgoStt;PidAlgoMvd;PidAlgoEmcBayes;PidAlgoDrc;PidAlgoDisc");
201 theAnalysis->
FillList(pplus,
"PionAllPlus",
"PidAlgoStt;PidAlgoMvd;PidAlgoEmcBayes;PidAlgoDrc;PidAlgoDisc");
202 theAnalysis->
FillList(pminus,
"PionAllMinus",
"PidAlgoStt;PidAlgoMvd;PidAlgoEmcBayes;PidAlgoDrc;PidAlgoDisc");
206 qa.qaCand(
"",mctruth[j],fMcTruth);
214 fEPlus->
Column(
"recocandfitstatus",eplus[j]->GetRecoCandidate()->GetFitStatus());
215 qa.qaCand(
"",eplus[j],fEPlus);
216 qa.qaMc(
"",eplus[j],fEPlus,
false);
217 qa.qaMcDiff(
"",eplus[j],fEPlus,
false);
218 qa.qaPid(
"",eplus[j],fEPlus);
219 qa.qaTrk(
"",eplus[j],fEPlus);
225 fEMinus->
Column(
"recocandfitstatus",eminus[j]->GetRecoCandidate()->GetFitStatus());
226 qa.qaCand(
"",eminus[j],fEMinus);
227 qa.qaMc(
"",eminus[j],fEMinus,
false);
228 qa.qaMcDiff(
"",eminus[j],fEMinus,
false);
229 qa.qaPid(
"",eminus[j],fEMinus);
230 qa.qaTrk(
"",eminus[j],fEMinus);
236 fMuPlus->
Column(
"recocandfitstatus",muplus[j]->GetRecoCandidate()->GetFitStatus());
237 qa.qaCand(
"",muplus[j],fMuPlus);
238 qa.qaMc(
"",muplus[j],fMuPlus,
false);
239 qa.qaMcDiff(
"",muplus[j],fMuPlus,
false);
240 qa.qaPid(
"",muplus[j],fMuPlus);
241 qa.qaTrk(
"",muplus[j],fMuPlus);
247 fMuMinus->
Column(
"recocandfitstatus",muminus[j]->GetRecoCandidate()->GetFitStatus());
248 qa.qaCand(
"",muminus[j],fMuMinus);
249 qa.qaMc(
"",muminus[j],fMuMinus,
false);
250 qa.qaMcDiff(
"",muminus[j],fMuMinus,
false);
251 qa.qaPid(
"",muminus[j],fMuMinus);
252 qa.qaTrk(
"",muminus[j],fMuMinus);
258 fPiPlus->
Column(
"recocandfitstatus",piplus[j]->GetRecoCandidate()->GetFitStatus());
259 qa.qaCand(
"",piplus[j],fPiPlus);
260 qa.qaMc(
"",piplus[j],fPiPlus,
false);
261 qa.qaMcDiff(
"",piplus[j],fPiPlus,
false);
262 qa.qaPid(
"",piplus[j],fPiPlus);
263 qa.qaTrk(
"",piplus[j],fPiPlus);
269 fPiMinus->
Column(
"recocandfitstatus",piminus[j]->GetRecoCandidate()->GetFitStatus());
270 qa.qaCand(
"",piminus[j],fPiMinus);
271 qa.qaMc(
"",piminus[j],fPiMinus,
false);
272 qa.qaMcDiff(
"",piminus[j],fPiMinus,
false);
273 qa.qaPid(
"",piminus[j],fPiMinus);
274 qa.qaTrk(
"",piminus[j],fPiMinus);
280 fKPlus->
Column(
"recocandfitstatus",kplus[j]->GetRecoCandidate()->GetFitStatus());
281 qa.qaCand(
"",kplus[j],fKPlus);
282 qa.qaMc(
"",kplus[j],fKPlus,
false);
283 qa.qaMcDiff(
"",kplus[j],fKPlus,
false);
284 qa.qaPid(
"",kplus[j],fKPlus);
285 qa.qaTrk(
"",kplus[j],fKPlus);
291 fKMinus->
Column(
"recocandfitstatus",kminus[j]->GetRecoCandidate()->GetFitStatus());
292 qa.qaCand(
"",kminus[j],fKMinus);
293 qa.qaMc(
"",kminus[j],fKMinus,
false);
294 qa.qaMcDiff(
"",kminus[j],fKMinus,
false);
295 qa.qaPid(
"",kminus[j],fKMinus);
296 qa.qaTrk(
"",kminus[j],fKMinus);
302 fPPlus->
Column(
"recocandfitstatus",pplus[j]->GetRecoCandidate()->GetFitStatus());
303 qa.qaCand(
"",pplus[j],fPPlus);
304 qa.qaMc(
"",pplus[j],fPPlus,
false);
305 qa.qaMcDiff(
"",pplus[j],fPPlus,
false);
306 qa.qaPid(
"",pplus[j],fPPlus);
307 qa.qaTrk(
"",pplus[j],fPPlus);
313 fPMinus->
Column(
"recocandfitstatus",pminus[j]->GetRecoCandidate()->GetFitStatus());
314 qa.qaCand(
"",pminus[j],fPMinus);
315 qa.qaMc(
"",pminus[j],fPMinus,
false);
316 qa.qaMcDiff(
"",pminus[j],fPMinus,
false);
317 qa.qaPid(
"",pminus[j],fPMinus);
318 qa.qaTrk(
"",pminus[j],fPMinus);
341 if (gROOT->GetVersionInt() >= 60602) {
Bool_t FillList(RhoCandList &l, TString listkey="All", TString pidTcaNames="", int trackHypothesis=-1)
TGeoManager * gGeoManager
FairParRootFileIo * output
void Column(const char *label, Bool_t value, Bool_t defval=0, const char *block=0)
TTree * GetInternalTree()
Bool_t McTruthMatch(RhoCandidate *cand, Int_t level=2, bool verbose=false)
Int_t GetEvent(Int_t n=-1)