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)