28 int i=0,j=0, k=0, l=0;
29 gStyle->SetOptFit(1011);
32 TString OutFile=
"out_dummy.root";
35 TString inPidFile = prefix+
"_pid.root";
36 TString inParFile = prefix+
"_par.root";
39 TString pidParFile =
TString(gSystem->Getenv(
"VMCWORKDIR"))+
"/macro/params/all.par";
42 FairLogger::GetLogger()->SetLogToFile(kFALSE);
43 FairRunAna*
fRun =
new FairRunAna();
44 FairRuntimeDb*
rtdb = fRun->GetRuntimeDb();
45 fRun->SetInputFile(inPidFile);
48 FairParRootFileIo* parIO =
new FairParRootFileIo();
49 parIO->open(inParFile);
50 FairParAsciiFileIo* parIOPid =
new FairParAsciiFileIo();
51 parIOPid->open(pidParFile.Data(),
"in");
53 rtdb->setFirstInput(parIO);
54 rtdb->setSecondInput(parIOPid);
55 rtdb->setOutput(parIO);
57 fRun->SetOutputFile(OutFile);
61 TFile *
out = TFile::Open(prefix+
"_ana_pid.root",
"RECREATE");
64 TH1F *hjpsim_all =
new TH1F(
"hjpsim_all",
"J/#psi mass (all)",200,0,4.5);
65 TH1F *hpsim_all =
new TH1F(
"hpsim_all",
"#psi(2S) mass (all)",200,0,5);
67 TH1F *hjpsim_lpid =
new TH1F(
"hjpsim_lpid",
"J/#psi mass (loose pid)",200,0,4.5);
68 TH1F *hpsim_lpid =
new TH1F(
"hpsim_lpid",
"#psi(2S) mass (loose pid)",200,0,5);
70 TH1F *hjpsim_tpid =
new TH1F(
"hjpsim_tpid",
"J/#psi mass (tight pid)",200,0,4.5);
71 TH1F *hpsim_tpid =
new TH1F(
"hpsim_tpid",
"#psi(2S) mass (tight pid)",200,0,5);
73 TH1F *hjpsim_trpid =
new TH1F(
"hjpsim_trpid",
"J/#psi mass (true pid)",200,0,4.5);
74 TH1F *hpsim_trpid =
new TH1F(
"hpsim_trpid",
"#psi(2S) mass (true pid)",200,0,5);
84 if (nevts==0) nevts= theAnalysis->
GetEntries();
95 while (theAnalysis->
GetEvent() && i++<nevts)
97 if ((i%100)==0) cout<<
"evt " << i << endl;
104 theAnalysis->
FillList(muplus,
"MuonAllPlus");
105 theAnalysis->
FillList(muminus,
"MuonAllMinus");
106 theAnalysis->
FillList(piplus,
"PionAllPlus");
107 theAnalysis->
FillList(piminus,
"PionAllMinus");
112 for (j=0;j<jpsi.
GetLength();++j) hjpsim_all->Fill( jpsi[j]->M() );
118 psi2s.
Combine(jpsi, piplus, piminus);
119 for (j=0;j<psi2s.
GetLength();++j) hpsim_all->Fill( psi2s[j]->M() );
134 for (j=0;j<jpsi.
GetLength();++j) hjpsim_trpid->Fill( jpsi[j]->M() );
137 psi2s.
Combine(jpsi, piplus, piminus);
138 for (j=0;j<psi2s.
GetLength();++j) hpsim_trpid->Fill( psi2s[j]->M() );
146 theAnalysis->
FillList(muplus,
"MuonLoosePlus",
"PidAlgoMvd;PidAlgoStt;PidAlgoDrc");
147 theAnalysis->
FillList(muminus,
"MuonLooseMinus",
"PidAlgoMvd;PidAlgoStt;PidAlgoDrc");
148 theAnalysis->
FillList(piplus,
"PionLoosePlus",
"PidAlgoMvd;PidAlgoStt;PidAlgoDrc");
149 theAnalysis->
FillList(piminus,
"PionLooseMinus",
"PidAlgoMvd;PidAlgoStt;PidAlgoDrc");
152 for (j=0;j<jpsi.
GetLength();++j) hjpsim_lpid->Fill( jpsi[j]->M() );
155 psi2s.
Combine(jpsi, piplus, piminus);
156 for (j=0;j<psi2s.
GetLength();++j) hpsim_lpid->Fill( psi2s[j]->M() );
164 theAnalysis->
FillList(muplus,
"MuonTightPlus",
"PidAlgoMdtHardCuts");
165 theAnalysis->
FillList(muminus,
"MuonTightMinus",
"PidAlgoMdtHardCuts");
166 theAnalysis->
FillList(piplus,
"PionLoosePlus",
"PidAlgoMvd;PidAlgoStt;PidAlgoDrc");
167 theAnalysis->
FillList(piminus,
"PionLooseMinus",
"PidAlgoMvd;PidAlgoStt;PidAlgoDrc");
170 for (j=0;j<jpsi.
GetLength();++j) hjpsim_tpid->Fill( jpsi[j]->M() );
173 psi2s.
Combine(jpsi, piplus, piminus);
174 for (j=0;j<psi2s.
GetLength();++j) hpsim_tpid->Fill( psi2s[j]->M() );
183 hjpsim_lpid->Write();
185 hjpsim_tpid->Write();
187 hjpsim_trpid->Write();
188 hpsim_trpid->Write();
int SelectTruePid(PndAnalysis *ana, RhoCandList &l)
Bool_t FillList(RhoCandList &l, TString listkey="All", TString pidTcaNames="", int trackHypothesis=-1)
void tut_ana_pid(int nevts=0, TString prefix="signal")
void Combine(RhoCandList &l1, RhoCandList &l2)
PndAnalysis(TString tname1="", TString tname2="", TString algnamec="PidAlgoIdealCharged", TString algnamen="PidAlgoIdealNeutral")
void Select(RhoParticleSelectorBase *pidmgr)
Int_t Remove(RhoCandidate *)
Bool_t McTruthMatch(RhoCandidate *cand, Int_t level=2, bool verbose=false)
Int_t GetEvent(Int_t n=-1)