12     std::map<int, double> result;
 
   13     for (
int ibin = 0; ibin < histo->GetNbinsX(); ibin++)
 
   15         if (histo->GetBinContent(ibin) > 0)
 
   17             std::cout << histo->GetBinCenter(ibin) << 
" : " << histo->GetBinContent(ibin) << std::endl;
 
   18             result[histo->GetBinCenter(ibin)]=histo->GetBinContent(ibin);
 
   28     dataSelector += xValue;
 
   30     dataSelector += histoName;
 
   31     tree->Draw(dataSelector, cut, 
"goff");
 
   37     for (
auto pdg : pdgValues){
 
   38         pdgHisto->Fill(i,pdg.second);
 
   41         pdgHisto->GetXaxis()->SetBinLabel(i+1, pdgName.Data());
 
   53     TFile 
outfile(outputFile.Data(),
"RECREATE");
 
   55     std::cout << 
"InFileName: " << simFile.Data() << std::endl;
 
   56     std::cout << 
"OutputFileName: " << outputFile.Data() << std::endl;
 
   58     TFile fileqa(simFile.Data());
 
   59     TTree *
simtree = (TTree*) fileqa.Get(
"pndsim");
 
   60     std::cout << 
"SimTree: " << simtree << std::endl;
 
   61     std::cout << 
"SimTree.GetEntries() " << simtree->GetEntries() << std::endl;
 
   63     TString theta = 
"TMath::RadToDeg()*TMath::ATan2(TMath::Sqrt(MCTrack.fPx^2+MCTrack.fPy^2),MCTrack.fPz)";
 
   64     TString p = 
"TMath::Sqrt(MCTrack.fPx^2+MCTrack.fPy^2+MCTrack.fPz^2)";
 
   65     TString pt = 
"TMath::Sqrt(MCTrack.fPx^2+MCTrack.fPy^2)";
 
   66     TCut primCut = 
"MCTrack.GetMotherID()<0";
 
   67     TCut secCut = 
"MCTrack.GetMotherID()>0";
 
   69     TH1I* pdgHistoPrim = 
new TH1I(
"pdgHistoPrim", 
"pdgHistoPrim", 20001, -10000.5, 10000.5);
 
   70     TH1I* pdgHistoSec = 
new TH1I(
"pdgHistoSec", 
"pdgHistoSec", 20001, -10000.5, 10000.5);
 
   72     simtree->Draw(
"MCTrack.fPdgCode>>pdgHistoPrim", primCut, 
"goff");
 
   73     simtree->Draw(
"MCTrack.fPdgCode>>pdgHistoSec", secCut, 
"goff");
 
   75     std::map<int, double> pdgValues = 
GetFilledBins(pdgHistoPrim);
 
   76     TH1D* pdgHistoSelectPrim = 
new TH1D(
"pdgHistoSelectPrim",
"pdgHistoSelectPrim", pdgValues.size(),-0.5,pdgValues.size() -0.5);
 
   79     std::map<int, double> pdgValuesSec = 
GetFilledBins(pdgHistoSec);
 
   80     TH1D* pdgHistoSelectSec = 
new TH1D(
"pdgHistoSelectSec",
"pdgHistoSelectSec", pdgValuesSec.size(),-0.5,pdgValuesSec.size() -0.5);
 
   84     pdgHistoSelectPrim->Write();
 
   85     pdgHistoSelectSec->Write();
 
   88     std::map<int, TH2*> ThetaPHistosPdg;
 
   89     std::map<int, TH2*> PtPzHistosPdg;
 
   90     TString histosNameThetaP = 
"histoThetaPforPdg_";
 
   91     TString histosNamePtPz = 
"histoPtPzforPdg_";
 
   92     TString pdgCut = 
"MCTrack.fPdgCode==";
 
   93     TString myHistoName = histosNameThetaP;
 
   95     ThetaPHistosPdg[0] = 
new TH2I(myHistoName.Data(),myHistoName.Data(),180,0,180,150,0,15);
 
   96     Draw2DHisto(simtree, theta, p, myHistoName,primCut);
 
   98     myHistoName = histosNamePtPz;
 
  100     PtPzHistosPdg[0] = 
new TH2I(myHistoName.Data(), myHistoName.Data(), 300, -15, 15, 150, 0, 15);
 
  101     Draw2DHisto(simtree, 
"MCTrack.fPz", pt, myHistoName, primCut);
 
  104     ThetaPHistosPdg[0]->Write();
 
  105     PtPzHistosPdg[0]->Write();
 
  107     for (
auto pdg : pdgValues){
 
  108         myHistoName = histosNameThetaP;
 
  109         myHistoName += pdg.first;
 
  111         myPdgString += pdg.first;
 
  112         TCut myPdgCut = myPdgString.Data();
 
  114         ThetaPHistosPdg[pdg.first] = 
new TH2I(myHistoName.Data(),myHistoName.Data(),180,0,180,150,0,15);
 
  115         Draw2DHisto(simtree, theta, p, myHistoName, myPdgCut&&primCut);
 
  117         myHistoName = histosNamePtPz;
 
  118         myHistoName += pdg.first;
 
  120         PtPzHistosPdg[pdg.first] = 
new TH2I(myHistoName.Data(),myHistoName.Data(),300,-15,15,150,0,15);
 
  121         Draw2DHisto(simtree, 
"MCTrack.fPz", pt, myHistoName, myPdgCut&&primCut);
 
  124         ThetaPHistosPdg[pdg.first]->Write();
 
  125         PtPzHistosPdg[pdg.first]->Write();
 
  128     cout << 
" Test passed" << endl;
 
  129     cout << 
" All ok " << endl;
 
void Draw2DHisto(TTree *tree, TString xValue, TString yValue, TString histoName, TCut cut)
void FillPdgSelectHisto(std::map< int, double > &pdgValues, TH1 *pdgHisto)
TString pt(TString pts, TString exts="px py pz")
A simple class which adds the corresponding file extensions to a given base class. 
int AnalyseSimFile(TString prefix)
PndMvdCreateDefaultApvMap * creator
std::map< int, double > GetFilledBins(TH1 *histo)