3   gStyle->SetHistMinimumZero();
 
    5   TFile *file_in = TFile::Open(
"pid_complete.root",
"READ");
 
    6   TFile *file_out = TFile::Open(
"pid_plot.root",
"RECREATE");
 
    7   TTree *
simtree = (TTree*)file_in->Get(
"pndsim");
 
   10   TH1F *hMomentum = 
new TH1F(
"hMomentum",
"Momentum",100,0,10);
 
   11   simtree->Draw(
"PidChargedCand.GetMomentum().Mag()>>hMomentum",
"",
"goff");
 
   13   TH1F *hTheta = 
new TH1F(
"hTheta",
"Theta",100,0,180);
 
   14   simtree->Draw(
"PidChargedCand.GetMomentum().Theta()*TMath::RadToDeg()>>hTheta",
"",
"goff");
 
   16   TH1F *hPhi = 
new TH1F(
"hPhi",
"Phi",100,-180,180);
 
   17   simtree->Draw(
"PidChargedCand.GetMomentum().Phi()*TMath::RadToDeg()>>hPhi",
"",
"goff");
 
   19   TH1F *hMvdHits = 
new TH1F(
"hMvdHits",
"Number of MVD hits",15,-0.5,14.5);
 
   20   simtree->Draw(
"PidChargedCand.GetMvdHits()>>hMvdHits",
"",
"goff");
 
   22   TH1F *hMvdDEDX = 
new TH1F(
"hMvdDEDX",
"MVD DEDX [MeV/cm]",200,0.,40.);
 
   23   simtree->Draw(
"PidChargedCand.GetMvdDEDX()*1000>>hMvdDEDX",
"",
"goff");
 
   25   TH1F *hSttHits = 
new TH1F(
"hSttHits",
"Number of STT hits",45,-0.5,44.5);
 
   26   simtree->Draw(
"PidChargedCand.GetSttHits()>>hSttHits",
"PidChargedCand.GetTrackBranch()==51",
"goff");
 
   28   TH1F *hSttDEDX = 
new TH1F(
"hSttDEDX",
"STT DEDX [u.a.]",200,0.,50.);
 
   29   simtree->Draw(
"PidChargedCand.GetSttMeanDEDX()>>hSttDEDX",
"PidChargedCand.GetTrackBranch()==51",
"goff");
 
   31   TH1F *hFtsHits = 
new TH1F(
"hFtsHits",
"Number of FTS hits",80,-0.5,79.5);
 
   32   simtree->Draw(
"PidChargedCand.GetSttHits()>>hFtsHits",
"PidChargedCand.GetTrackBranch()==56",
"goff");
 
   34   TH1F *hFtsDEDX = 
new TH1F(
"hFtsDEDX",
"FTS DEDX [u.a.]",200,0.,50.);
 
   35   simtree->Draw(
"PidChargedCand.GetSttMeanDEDX()>>hFtsDEDX",
"PidChargedCand.GetTrackBranch()==56",
"goff");
 
   37   TH1F *hGemHits = 
new TH1F(
"hGemHits",
"Number of GEM hits",10,-0.5,9.5);
 
   38   simtree->Draw(
"PidChargedCand.GetGemHits()>>hGemHits",
"",
"goff");
 
   40   TH1F *hTofTof = 
new TH1F(
"hTofTof",
"SciTil time-of-flight [ns]",100,0.,10.);
 
   41   simtree->Draw(
"PidChargedCand.GetTofStopTime()>>hTofTof",
"PidChargedCand.GetTrackBranch()==51&&PidChargedCand.GetTofIndex()>-1",
"goff");
 
   43   TH1F *hTofLength = 
new TH1F(
"hTofLength",
"SciTil track length [m]",100,0.,150.);
 
   44   simtree->Draw(
"PidChargedCand.GetTofTrackLength()>>hTofLength",
"PidChargedCand.GetTrackBranch()==51&&PidChargedCand.GetTofIndex()>-1",
"goff");
 
   46   TH1F *hTofM2 = 
new TH1F(
"hTofM2",
"SciTil mass^{2} [GeV^{2}/c^{4}]",200,-2.,2.);
 
   47   simtree->Draw(
"PidChargedCand.GetTofM2()>>hTofM2",
"PidChargedCand.GetTrackBranch()==51&&PidChargedCand.GetTofIndex()>-1",
"goff");
 
   49   TH1F *hTofQ = 
new TH1F(
"hTofQ",
"SciTil Quality",200,0.,20.);
 
   50   simtree->Draw(
"PidChargedCand.GetTofQuality()>>hTofQ",
"PidChargedCand.GetTrackBranch()==51&&PidChargedCand.GetTofIndex()>-1",
"goff");
 
   52   TH1F *hFTofTof = 
new TH1F(
"hFTofTof",
"FTOF time-of-flight [ns]",200,0.,50.);
 
   53   simtree->Draw(
"PidChargedCand.GetTofStopTime()>>hFTofTof",
"PidChargedCand.GetTrackBranch()==56&&PidChargedCand.GetTofIndex()>-1",
"goff");
 
   55   TH1F *hFTofLength = 
new TH1F(
"hFTofLength",
"FTOF track length [m]",100,600.,900.);
 
   56   simtree->Draw(
"PidChargedCand.GetTofTrackLength()>>hFTofLength",
"PidChargedCand.GetTrackBranch()==56&&PidChargedCand.GetTofIndex()>-1",
"goff");
 
   58   TH1F *hFTofM2 = 
new TH1F(
"hFTofM2",
"FTOF mass^{2} [GeV^{2}/c^{4}]",200,-2.,2.);
 
   59   simtree->Draw(
"PidChargedCand.GetTofM2()>>hFTofM2",
"PidChargedCand.GetTrackBranch()==56&&PidChargedCand.GetTofIndex()>-1",
"goff");
 
   61   TH1F *hFTofQ = 
new TH1F(
"hFTofQ",
"FTOF Quality",200,0.,2000.);
 
   62   simtree->Draw(
"PidChargedCand.GetTofQuality()>>hFTofQ",
"PidChargedCand.GetTrackBranch()==56&&PidChargedCand.GetTofIndex()>-1",
"goff");
 
   64   TH1F *hDrcThetaC = 
new TH1F(
"hDrcThetaC",
"DIRC Cherenkov angle",100,0.,1.);
 
   65   simtree->Draw(
"PidChargedCand.GetDrcThetaC()>>hDrcThetaC",
"PidChargedCand.GetDrcIndex()>-1",
"goff");
 
   67   TH1F *hDrcThetaCErr = 
new TH1F(
"hDrcThetaCErr",
"DIRC Cherenkov angle error",100,0.,1.);
 
   68   simtree->Draw(
"PidChargedCand.GetDrcThetaCErr()>>hDrcThetaCErr",
"PidChargedCand.GetDrcIndex()>-1",
"goff");
 
   70   TH1F *hDrcQ = 
new TH1F(
"hDrcQ",
"DIRC Quality",100,0,.00001);
 
   71   simtree->Draw(
"PidChargedCand.GetDrcQuality()>>hDrcQ",
"PidChargedCand.GetDrcIndex()>-1",
"goff");
 
   73   TH1F *hDrcNPhotons = 
new TH1F(
"hDrcNPhotons",
"DIRC Number of Photons",20,-0.5,19.5);
 
   74   simtree->Draw(
"PidChargedCand.GetDrcNumberOfPhotons()>>hDrcNPhotons",
"PidChargedCand.GetDrcIndex()>-1",
"goff");
 
   76   TH1F *hDiscThetaC = 
new TH1F(
"hDiscThetaC",
"DISC Cherenkov angle",100,0.,1.);
 
   77   simtree->Draw(
"PidChargedCand.GetDiscThetaC()>>hDiscThetaC",
"PidChargedCand.GetDiscIndex()>-1",
"goff");
 
   79   TH1F *hDiscThetaCErr = 
new TH1F(
"hDiscThetaCErr",
"DISC Cherenkov angle error",100,0.,1.);
 
   80   simtree->Draw(
"PidChargedCand.GetDiscThetaCErr()>>hDiscThetaCErr",
"PidChargedCand.GetDiscIndex()>-1",
"goff");
 
   82   TH1F *hDiscQ = 
new TH1F(
"hDiscQ",
"DISC Quality",100,0,.01);
 
   83   simtree->Draw(
"PidChargedCand.GetDiscQuality()>>hDiscQ",
"PidChargedCand.GetDiscIndex()>-1",
"goff");
 
   85   TH1F *hDiscNPhotons = 
new TH1F(
"hDiscNPhotons",
"DISC Number of Photons",20,-0.5,19.5);
 
   86   simtree->Draw(
"PidChargedCand.GetDiscNumberOfPhotons()>>hDiscNPhotons",
"PidChargedCand.GetDiscIndex()>-1",
"goff");
 
   88   TH1F *hEmcRawEnergy = 
new TH1F(
"hEmcRawEnergy",
"EMC Raw Energy",100,0,1.);
 
   89   simtree->Draw(
"PidChargedCand.GetEmcRawEnergy()>>hEmcRawEnergy",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
   91   TH1F *hEmcCalEnergy = 
new TH1F(
"hEmcCalEnergy",
"EMC Cal Energy",100,0,1.);
 
   92   simtree->Draw(
"PidChargedCand.GetEmcCalEnergy()>>hEmcCalEnergy",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
   94   TH1F *hEmcQ = 
new TH1F(
"hEmcQ",
"EMC Quality",100,0,20.);
 
   95   simtree->Draw(
"PidChargedCand.GetEmcQuality()>>hEmcQ",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
   97   TH1F *hEmcNCrystals = 
new TH1F(
"hEmcNCrystals",
"EMC Number Of Crystals",50,-0.5,49.5);
 
   98   simtree->Draw(
"PidChargedCand.GetEmcNumberOfCrystals()>>hEmcNCrystals",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
  100   TH1F *hEmcNBumps = 
new TH1F(
"hEmcNBumps",
"EMC Number Of Bumps",5,-0.5,4.5);
 
  101   simtree->Draw(
"PidChargedCand.GetEmcNumberOfBumps()>>hEmcNBumps",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
  103   TH1F *hEmcModule = 
new TH1F(
"hEmcModule",
"EMC Module",10,-0.5,9.5);
 
  104   simtree->Draw(
"PidChargedCand.GetEmcModule()>>hEmcModule",
"PidChargedCand.GetEmcIndex()>-1",
"goff");
 
  106   TH1F *hEmcZ20 = 
new TH1F(
"hEmcZ20",
"EMC Z20",100,0.,1.1);
 
  107   simtree->Draw(
"PidChargedCand.GetEmcClusterZ20()>>hEmcZ20",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
  109   TH1F *hEmcZ53 = 
new TH1F(
"hEmcZ53",
"EMC Z53",100,0.,0.02);
 
  110   simtree->Draw(
"PidChargedCand.GetEmcClusterZ53()>>hEmcZ53",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
  112   TH1F *hEmcLat = 
new TH1F(
"hEmcLat",
"EMC Lat",100,0.,1);
 
  113   simtree->Draw(
"PidChargedCand.GetEmcClusterLat()>>hEmcLat",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
  115    TH1F *hEmcE1 = 
new TH1F(
"hEmcE1",
"EMC E1",100,0.,1);
 
  116   simtree->Draw(
"PidChargedCand.GetEmcClusterE1()>>hEmcE1",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
  118   TH1F *hEmcE9 = 
new TH1F(
"hEmcE9",
"EMC E9",100,0.,1);
 
  119   simtree->Draw(
"PidChargedCand.GetEmcClusterE9()>>hEmcE9",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
  121   TH1F *hEmcE25 = 
new TH1F(
"hEmcE25",
"EMC E25",100,0.,1);
 
  122   simtree->Draw(
"PidChargedCand.GetEmcClusterE25()>>hEmcE25",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
  124    TH1F *hFscRawEnergy = 
new TH1F(
"hFscRawEnergy",
"FSC Raw Energy",100,0,1.);
 
  125   simtree->Draw(
"PidChargedCand.GetEmcRawEnergy()>>hFscRawEnergy",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  127   TH1F *hFscCalEnergy = 
new TH1F(
"hFscCalEnergy",
"FSC Cal Energy",100,0,1.);
 
  128   simtree->Draw(
"PidChargedCand.GetEmcCalEnergy()>>hFscCalEnergy",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  130   TH1F *hFscQ = 
new TH1F(
"hFscQ",
"FSC Quality",100,0,20.);
 
  131   simtree->Draw(
"PidChargedCand.GetEmcQuality()>>hFscQ",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  133   TH1F *hFscNCrystals = 
new TH1F(
"hFscNCrystals",
"FSC Number Of Crystals",55,-0.5,49.5);
 
  134   simtree->Draw(
"PidChargedCand.GetEmcNumberOfCrystals()>>hFscNCrystals",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  136   TH1F *hFscNBumps = 
new TH1F(
"hFscNBumps",
"FSC Number Of Bumps",5,-0.5,4.5);
 
  137   simtree->Draw(
"PidChargedCand.GetEmcNumberOfBumps()>>hFscNBumps",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  139   TH1F *hFscZ20 = 
new TH1F(
"hFscZ20",
"FSC Z20",100,0.,1.1);
 
  140   simtree->Draw(
"PidChargedCand.GetEmcClusterZ20()>>hFscZ20",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  142   TH1F *hFscZ53 = 
new TH1F(
"hFscZ53",
"FSC Z53",100,0.,0.02);
 
  143   simtree->Draw(
"PidChargedCand.GetEmcClusterZ53()>>hFscZ53",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  145   TH1F *hFscLat = 
new TH1F(
"hFscLat",
"FSC Lat",100,0.,1);
 
  146   simtree->Draw(
"PidChargedCand.GetEmcClusterLat()>>hFscLat",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  148    TH1F *hFscE1 = 
new TH1F(
"hFscE1",
"FSC E1",100,0.,1);
 
  149   simtree->Draw(
"PidChargedCand.GetEmcClusterE1()>>hFscE1",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  151   TH1F *hFscE9 = 
new TH1F(
"hFscE9",
"FSC E9",100,0.,1);
 
  152   simtree->Draw(
"PidChargedCand.GetEmcClusterE9()>>hFscE9",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  154   TH1F *hFscE25 = 
new TH1F(
"hFscE25",
"FSC E25",100,0.,1);
 
  155   simtree->Draw(
"PidChargedCand.GetEmcClusterE25()>>hFscE25",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  157   TH1F *hMuoNLayers = 
new TH1F(
"hMuoNLayers",
"MUO Number Of Layers",20,-0.5,19.5);
 
  158   simtree->Draw(
"PidChargedCand.GetMuoNumberOfLayers()>>hMuoNLayers",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
  160   TH1F *hMuoQ = 
new TH1F(
"hMuoQ",
"MUO Quality [cm]",100,0.,50);
 
  161   simtree->Draw(
"sqrt(PidChargedCand.GetMuoQuality())>>hMuoQ",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
  163   TH1F *hMuoIron = 
new TH1F(
"hMuoIron",
"MUO Crossed Iron Thickness [cm]",100,0.,100);
 
  164   simtree->Draw(
"PidChargedCand.GetMuoIron()>>hMuoIron",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
  166   TH1F *hMuoMomentumIn = 
new TH1F(
"hMuoMomentumIn",
"MUO Momentum at ingress point [GeV/c]",100,0.,10);
 
  167   simtree->Draw(
"PidChargedCand.GetMuoIron()>>hMuoMomentumIn",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
  169   TH1F *hMuoModule = 
new TH1F(
"hMuoModule",
"MUO Module",6,-1.5,4.5);
 
  170   simtree->Draw(
"PidChargedCand.GetMuoModule()>>hMuoModule",
"PidChargedCand.GetMuoIndex()>-1",
"goff");
 
  172   TH1F *hMuoHits = 
new TH1F(
"hMuoHits",
"MUO Number Of Hits",25,-0.5,24.5);
 
  173   simtree->Draw(
"PidChargedCand.GetMuoHits()>>hMuoHits",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==51",
"goff");
 
  175   TH1F *hFMuoNLayers = 
new TH1F(
"hFMuoNLayers",
"MUO Number Of FWD Layers",20,-0.5,19.5);
 
  176   simtree->Draw(
"PidChargedCand.GetMuoNumberOfLayers()>>hFMuoNLayers",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  178   TH1F *hFMuoQ = 
new TH1F(
"hFMuoQ",
"MUO Quality [cm]",100,0.,10);
 
  179   simtree->Draw(
"sqrt(PidChargedCand.GetMuoQuality())>>hFMuoQ",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  181   TH1F *hFMuoIron = 
new TH1F(
"hFMuoIron",
"MUO Crossed Iron Thickness [cm]",100,0.,110);
 
  182   simtree->Draw(
"PidChargedCand.GetMuoIron()>>hFMuoIron",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  184   TH1F *hFMuoMomentumIn = 
new TH1F(
"hFMuoMomentumIn",
"MUO Momentum at ingress point [GeV/c]",100,0.,15);
 
  185   simtree->Draw(
"PidChargedCand.GetMuoMomentumIn()>>hFMuoMomentumIn",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  187   TH1F *hFMuoHits = 
new TH1F(
"hFMuoHits",
"MUO Number Of Hits",35,-0.5,34.5);
 
  188   simtree->Draw(
"PidChargedCand.GetMuoHits()>>hFMuoHits",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==56",
"goff");
 
  206   hFTofLength->Write();
 
  212   hDrcThetaCErr->Write();
 
  214   hDrcNPhotons->Write();
 
  215   hDiscThetaC->Write();
 
  216   hDiscThetaCErr->Write();
 
  218   hDiscNPhotons->Write();
 
  219   hEmcRawEnergy->Write();
 
  220   hEmcCalEnergy->Write();
 
  222   hEmcNCrystals->Write();
 
  231   hFscRawEnergy->Write();
 
  232   hFscCalEnergy->Write();
 
  234   hFscNCrystals->Write();
 
  242   hMuoNLayers->Write();
 
  245   hMuoMomentumIn->Write();
 
  248   hFMuoNLayers->Write();
 
  251   hFMuoMomentumIn->Write();
 
  254   cout << 
" Test passed" << endl;
 
  255   cout << 
" All ok " << endl;