22 #ifdef DO_TPCCATRACKER_EFF_PERFORMANCE 
   31 #ifndef HLTCA_STANDALONE 
   42 #include "Riostream.h" 
   50 PndFTSCATrackPerformanceBase::PndFTSCATrackPerformanceBase()
 
   54   const int NHisto_tmp = NTracksPulls + NHitsPulls + NHits2DPulls
 
   55     + NAllHisto + NAllProfiles + NAll2DHisto
 
   56     + NGhostsHisto + NGhostsProfiles + NGhosts2DHisto
 
   57     + NRecoTracksHisto + NRecoTracksProfiles + NRecoTracks2DHisto;
 
   60   fHistosInfo = 
new THistoInfo[NHisto];
 
   61   fHistos = 
new TH1*[NHisto];
 
   63   const double MaxMomentum = 5.;
 
   64   const double MaxPt = 5.;
 
   65   const double MaxPhi = 180.;
 
   66   const int MaxNHits    = 50.;
 
   67   const double MaxChi2 = 10.;
 
   68   const double PullWidth = 7.;
 
   69   const THistoInfo tmp[NHisto_tmp]=
 
   72     THistoInfo( 
"resX1",       
"track y residual [cm]",   30, -0.012, 0.012, 0,0,0, 
"Residual (y^{reco} - y^{mc}) [cm]",
"Entries" ),
 
   73     THistoInfo( 
"resX2",       
"track z residual [cm]",   30, -0.03,   0.03, 0,0,0, 
"Residual (z^{reco} - z^{mc}) [cm]",
"Entries" ),
 
   74     THistoInfo( 
"resSinPhi",  
"track sin#phi residual ", 30, -0.005, 0.005, 0,0,0, 
"Residual (sin#phi^{reco} - sin#phi^{mc}) [rad]",
"Entries" ),
 
   75     THistoInfo( 
"resDzDs",    
"track dz/ds residual ",   30, -0.005, 0.005, 0,0,0, 
"Residual (dz/ds^{reco} - dz/ds^{mc})",
"Entries" ),
 
   76     THistoInfo( 
"resPt",      
"track p_{t} resolution",  30, -0.3,   0.3, 0,0,0, 
"Resolution (p_{t}^{reco} - p_{t}^{mc})/p_{t}^{mc}",
"Entries"  ),
 
   78     THistoInfo( 
"resX1",       
"track y residual [cm]",   30, -0.01, 0.01, 0,0,0, 
"Residual (y^{reco} - y^{mc}) [cm]",
"Entries" ),
 
   79     THistoInfo( 
"resX2",       
"track z residual [cm]",   30, -0.03, 0.03, 0,0,0, 
"Residual (z^{reco} - z^{mc}) [cm]",
"Entries" ),
 
   80     THistoInfo( 
"resSinPhi",  
"track sin#phi residual ", 30, -0.03, 0.03, 0,0,0, 
"Residual (sin#phi^{reco} - sin#phi^{mc}) [rad]",
"Entries" ),
 
   81     THistoInfo( 
"resDzDs",    
"track dz/ds residual ",   30, -0.03, 0.03, 0,0,0, 
"Residual (dz/ds^{reco} - dz/ds^{mc})",
"Entries" ),
 
   82     THistoInfo( 
"resPt",      
"track p_{t} resolution",  30, -1.0,   1.0, 0,0,0, 
"Resolution (p_{t}^{reco} - p_{t}^{mc})/p_{t}^{mc}",
"Entries"  ),
 
   83 #elif defined(PANDA_STT) 
   84     THistoInfo( 
"resX1",       
"track y residual [cm]",   30, -.05,   .05, 0,0,0, 
"Residual (y^{reco} - y^{mc}) [cm]",
"Entries" ),
 
   85     THistoInfo( 
"resX2",       
"track z residual [cm]",   30, -2.5,   2.5, 0,0,0, 
"Residual (z^{reco} - z^{mc}) [cm]",
"Entries" ),
 
   86     THistoInfo( 
"resSinPhi",  
"track sin#phi residual ", 30, -0.01, 0.01, 0,0,0, 
"Residual (sin#phi^{reco} - sin#phi^{mc}) [rad]",
"Entries" ),
 
   87     THistoInfo( 
"resDzDs",    
"track dz/ds residual ",   30, -0.25, 0.25, 0,0,0, 
"Residual (dz/ds^{reco} - dz/ds^{mc})",
"Entries" ),
 
   88     THistoInfo( 
"resPt",      
"track p_{t} resolution",  30, -0.3, 0.3, 0,0,0, 
"Resolution (p_{t}^{reco} - p_{t}^{mc})/p_{t}^{mc}",
"Entries"  ),
 
   89 #elif defined(PANDA_FTS) 
   90     THistoInfo( 
"resX1",      
"track x residual [cm]",   100,  -0.1,   0.1, 0,0,0, 
"Residual (x^{reco} - x^{mc}) [cm]",
"Entries" ),
 
   91     THistoInfo( 
"resX2",      
"track y residual [cm]",   100,  -0.7,   0.7, 0,0,0, 
"Residual (y^{reco} - y^{mc}) [cm]",
"Entries" ),
 
   92     THistoInfo( 
"resTx1",     
"track Tx residual ",      100, -0.01,  0.01, 0,0,0, 
"Residual (T_{x}^{reco} - T_{x}^{mc}) [rad]",
"Entries" ),
 
   93     THistoInfo( 
"resTx2",     
"track Ty residual ",      100, -0.05,  0.05, 0,0,0, 
"Residual (T_{y}^{reco} - T_{y}^{mc})",
"Entries" ),
 
   94     THistoInfo( 
"resP",       
"track p resolution",      100,  -0.2,   0.2, 0,0,0, 
"Resolution (p^{reco} - p^{mc})/p^{mc}",
"Entries"  ),
 
   98     THistoInfo( 
"pullX1",      
"track x pull",            30, -PullWidth,   PullWidth,   0,0,0, 
"Pull x" ),
 
   99     THistoInfo( 
"pullX2",      
"track y pull",            30, -PullWidth,   PullWidth,   0,0,0, 
"Pull y" ),
 
  100     THistoInfo( 
"pullTx1",     
"track Tx pull",           30, -PullWidth,   PullWidth,   0,0,0, 
"Pull Tx" ),
 
  101     THistoInfo( 
"pullTx2",     
"track Ty pull",           30, -PullWidth,   PullWidth,   0,0,0, 
"Pull Ty" ),
 
  102     THistoInfo( 
"pullQP",     
"track q/p pull",           30, -PullWidth,   PullWidth,   0,0,0, 
"Pull q/p" ),
 
  104     THistoInfo( 
"pullX1",      
"track y pull",            30, -PullWidth,   PullWidth,   0,0,0, 
"Pull y" ),
 
  105     THistoInfo( 
"pullX2",      
"track z pull",            30, -PullWidth,   PullWidth,   0,0,0, 
"Pull z" ),
 
  106     THistoInfo( 
"pullSinPhi", 
"track sin#phi pull",       30, -PullWidth,   PullWidth,   0,0,0, 
"Pull sin#phi" ),
 
  107     THistoInfo( 
"pullDzDs",   
"track dz/ds pull",         30, -PullWidth,   PullWidth,   0,0,0, 
"Pull dz/ds" ),
 
  108     THistoInfo( 
"pullQPt",    
"track q/p_{t} pull",       30, -PullWidth,   PullWidth,   0,0,0, 
"Pull q/p_{t}" ),
 
  111 #if defined(DRIFT_TUBES) 
  112     THistoInfo( 
"resXHit",       
"hits X resolution [cm]",  100, -3, 3, 0,0,0, 
"Residual (x^{reco} - x^{mc}) [cm]",
"Entries" ),
 
  113     THistoInfo( 
"resYHit",       
"hits Y resolution [cm]",  100, -0.6, 0.6, 0,0,0, 
"Residual (y^{reco} - y^{mc}) [cm]",
"Entries" ),
 
  114     THistoInfo( 
"resZHit",       
"hits Z resolution [cm]",  100,   -100.,   100., 0,0,0, 
"Residual (z^{reco} - z^{mc}) [cm]",
"Entries" ),
 
  115     THistoInfo( 
"resRHit",       
"hits R resolution [cm]",  100, -0.1, 0.1, 0,0,0, 
"Residual (r^{reco} - r^{mc}) [cm]",
"Entries" ),
 
  116     THistoInfo( 
"pullRHit",      
"hits R pull",              30,   -PullWidth,   PullWidth, 0,0,0, 
"Pull r" ),
 
  118     THistoInfo( 
"resXHit",       
"hits X resolution [cm]",  1000, -1.25, 1.25, 0,0,0, 
"Residual (x^{reco} - x^{mc}) [cm]",
"Entries" ),
 
  119     THistoInfo( 
"resYHit",       
"hits Y resolution [cm]",  100, -0.02, 0.02, 0,0,0, 
"Residual (y^{reco} - y^{mc}) [cm]",
"Entries" ),
 
  120     THistoInfo( 
"resZHit",       
"hits Z resolution [cm]",  100,   -0.1,   0.1, 0,0,0, 
"Residual (z^{reco} - z^{mc}) [cm]",
"Entries" ),
 
  122     THistoInfo( 
"pullYHit",      
"hits Y pull",             30,   -PullWidth,   PullWidth, 0,0,0, 
"Pull y" ),
 
  123     THistoInfo( 
"pullZHit",      
"hits Z pull",             30,   -PullWidth,   PullWidth, 0,0,0, 
"Pull z" ),
 
  125     THistoInfo( 
"xMCPoint",       
"MCPoint X position [cm]",  120, 0, 60, 0,0,0, 
"x^{mc} [cm]",
"Entries" ),
 
  126     THistoInfo( 
"rMCPoint",       
"MCPoint R position [cm]",  120, 0, 60, 0,0,0, 
"r^{mc} [cm]",
"Entries" ),
 
  128     THistoInfo( 
"resPtVsP",    
"track p_{t} resolution vs p",  20, 0, 10, 30, -0.5, 0.5, 
"p [GeV/c]", 
"Resolution (p_{t}^{reco} - p_{t}^{mc})/p_{t}^{mc}" ),
 
  129     THistoInfo( 
"resPVsP",    
"track p resolution vs p",  20, 0, 10, 30, -0.5, 0.5, 
"p [GeV/c]", 
"Resolution (p^{reco} - p^{mc})/p^{mc}" ),
 
  130     THistoInfo( 
"resXHitVsZ",    
"hits X resolution [cm] vs Z",  50, -220, 220, 100, -1.25, 1.25, 
"z [cm]", 
"Residual (x^{reco} - x^{mc}) [cm]" ),
 
  131     THistoInfo( 
"resYHitVsZ",    
"hits Y resolution [cm] vs Z",  50, -220, 220, 100, -0.25, 0.25, 
"z [cm]", 
"Residual (y^{reco} - y^{mc}) [cm]" ),
 
  132     THistoInfo( 
"resZHitVsZ",    
"hits Z resolution [cm] vs Z",  50, -220, 220, 100, -1.00, 1.00, 
"z [cm]",
"Residual (z^{reco} - z^{mc}) [cm]" ),
 
  133     THistoInfo( 
"resXHitVsX",    
"hits X resolution [cm] vs X",  50, 50, 200, 100, -1.25, 1.25, 
"x [cm]", 
"Residual (x^{reco} - x^{mc}) [cm]" ),
 
  134     THistoInfo( 
"resYHitVsX",    
"hits Y resolution [cm] vs X",  50, 50, 200, 100, -0.25, 0.25, 
"x [cm]", 
"Residual (y^{reco} - y^{mc}) [cm]" ),
 
  135     THistoInfo( 
"resZHitVsX",    
"hits Z resolution [cm] vs X",  50, 50, 200, 100,   -1.,   1., 
"x [cm]",
"Residual (z^{reco} - z^{mc}) [cm]" ),
 
  136     THistoInfo( 
"resXHitVsIS",    
"hits X resolution [cm] vs IS",  52, 0, 25, 100, -1.25, 1.25, 
"i Slice", 
"Residual (x^{reco} - x^{mc}) [cm]" ),
 
  137     THistoInfo( 
"resYHitVsIS",    
"hits Y resolution [cm] vs IS",  52, 0, 25, 100, -0.25, 0.25, 
"i Slice", 
"Residual (y^{reco} - y^{mc}) [cm]" ),
 
  138     THistoInfo( 
"resZHitVsIS",    
"hits Z resolution [cm] vs IS",  52, 0, 25, 100,   -1.,   1., 
"i Slice",
"Residual (z^{reco} - z^{mc}) [cm]" ),
 
  141     THistoInfo( 
"purity",   
"Purity of tracks", 101, 0.005, 1.005,
 
  142                 0,0,0, 
"Purity", 
"Entries" ),
 
  143     THistoInfo( 
"mcTrackNRecoHits",   
"NRecoHits on MCTrack", MaxNHits+1, 0, MaxNHits,
 
  144                 0,0,0, 
"Purity", 
"Entries" ),
 
  145     THistoInfo( 
"mcTracksVsP",     
"MCTracks p^{mc} distribution, MCTrack has >= 1 hit",        50, 0., MaxMomentum,
 
  146                 0,0,0, 
"p^{mc} [GeV/c]", 
"Entries" ),
 
  147     THistoInfo( 
"recoAbleMCTracksVsP",     
"Reconstructable MCTracks p^{mc} distribution",        50, 0., MaxMomentum,
 
  148                 0,0,0, 
"p^{mc} [GeV/c]", 
"Entries" ), 
 
  149     THistoInfo( 
"nHitsOverNMCPointsVsRow",   
"nHits / NMCPoints Vs Row", MaxNHits+1, 0, MaxNHits,
 
  150                 0,0,0, 
"Row", 
"NHits / NMCPoints" ),
 
  151     THistoInfo( 
"nHitsOverNMCPointsVsMCMom",   
"nHits / NMCPoints Vs MCMomentum", 50, 0, MaxMomentum,
 
  152         0,0,0, 
"MCMomentum", 
"NHits / NMCPoints" ),
 
  153     THistoInfo( 
"nHitsOverNMCPointsVsMCDzDs",   
"nHits / NMCPoints Vs MCTrack DzDs", 50, -10, 10,
 
  154         0,0,0, 
"MCMomentum", 
"NHits / NMCPoints" ),
 
  155     THistoInfo( 
"nHitsOverNMCPointsVsNMCTracks",   
"nHits / NMCPoints Vs NMCTracks", 20, 0, 5000,
 
  156                 0,0,0, 
"NMCTracks", 
"NHits / NMCPoints" ),
 
  157     THistoInfo( 
"nMCPointsVsMCMom",   
"NMCPoints Vs MCMomentum", 50, 0, MaxMomentum,
 
  158                 MaxNHits*3+1,0,MaxNHits*3, 
"MCMomentum", 
"NMCPoints" ),
 
  161     THistoInfo( 
"ghostsLength",   
"N_{hits} distribution, ghost tracks", MaxNHits+1, 0., MaxNHits,
 
  162                 0,0,0, 
"Number of hits", 
"Entries" ),    
 
  163     THistoInfo( 
"ghostsRMom",     
"p^{reco} distribution, ghost tracks",  50, 0., MaxMomentum,
 
  164                 0,0,0, 
"p^{reco} [GeV/c]", 
"Entries" ), 
 
  165     THistoInfo( 
"ghostsMCMom",    
"p^{MC} distribution, ghost tracks",          50, 0., MaxMomentum,
 
  166                 0,0,0, 
"p^{MC} [GeV/c]", 
"Entries" ), 
 
  167     THistoInfo( 
"ghostsRPt",     
"p_{t}^{reco} distribution, ghost tracks",        50, 0., MaxPt,
 
  168                 0,0,0, 
"p_{t}^{reco} [GeV/c]", 
"Entries" ), 
 
  169     THistoInfo( 
"ghostsMCPt",    
"p_{t}^{MC} distribution, ghost tracks",          50, 0., MaxPt,
 
  170                 0,0,0, 
"p_{t}^{MC} [GeV/c]", 
"Entries" ), 
 
  171     THistoInfo( 
"ghostsChi2",     
"#chi^{2} distribution, ghost tracks",           50, 0., MaxChi2*10,
 
  172                 0,0,0, 
"#chi^{2}", 
"Entries" ),
 
  173     THistoInfo( 
"ghostsProb",     
"prob distribution, ghost tracks",           100, 0., 1,
 
  174                 0,0,0, 
"prob", 
"Entries" ),
 
  175     THistoInfo( 
"ghostsLengthAndRMom",  
"N Ghosts vs N Hits and Momentum",       MaxNHits+1, 0.,   MaxNHits, 50, 0.,           MaxMomentum,
 
  176                 "Number of hits", 
"p^{reco} [GeV/c]" ),
 
  177     THistoInfo( 
"ghostsLengthAndMCMom", 
"N Ghosts vs N Hits and Momentum",       MaxNHits+1, 0.,   MaxNHits, 50, 0.,           MaxMomentum,
 
  178                 "Number of hits", 
"p^{MC} [GeV/c]" ),
 
  179     THistoInfo( 
"ghostsLengthAndChi2",  
"N Ghosts vs N Hits and Chi2",           MaxNHits+1, 0.,   MaxNHits, 50, 0.,           MaxChi2*10,
 
  180                 "Number of hits", 
"p^{reco} [GeV/c]" ),
 
  182     THistoInfo( 
"recosLength",           
"N_{hits} distribution, reco tracks",   MaxNHits+1, 0.,   MaxNHits,
 
  183                 0,0,0, 
"Number of hits", 
"Entries" ),    
 
  184     THistoInfo( 
"recosRMom",             
"p^{reco} distribution, reco tracks", 50, 0.,           MaxMomentum,
 
  185                 0,0,0, 
"p^{reco} [GeV/c]", 
"Entries" ), 
 
  186     THistoInfo( 
"recosMCMom",            
"p^{MC} distribution, reco tracks", 50, 0.,           MaxMomentum,
 
  187                 0,0,0, 
"p^{MC} [GeV/c]", 
"Entries" ), 
 
  188     THistoInfo( 
"recosRPt",             
"p_{t}^{reco} distribution, reco tracks", 50, 0.,           MaxPt,
 
  189                 0,0,0, 
"p_{t}^{reco} [GeV/c]", 
"Entries" ), 
 
  190     THistoInfo( 
"recosMCPt",            
"p_{t}^{MC} distribution, reco tracks", 50, 0.,           MaxPt,
 
  191                 0,0,0, 
"p_{t}^{MC} [GeV/c]", 
"Entries" ), 
 
  192     THistoInfo( 
"recosChi2",             
"#chi^{2} distribution, reco tracks",   50, 0.,       MaxChi2,
 
  193                 0,0,0, 
"#chi^{2}", 
"Entries" ),
 
  194     THistoInfo( 
"recosProb",     
"prob distribution, reco tracks",           100, 0., 1,
 
  195                 0,0,0, 
"prob", 
"Entries" ),
 
  196     THistoInfo( 
"recosRefProb",     
"prob distribution, reference reco tracks",           100, 0., 1,
 
  197                 0,0,0, 
"prob", 
"Entries" ),
 
  198     THistoInfo( 
"nHitsRecoTOverNHitsMCT",     
"nHitsRecoTOverNHitsMCT",           50, 0., 2,
 
  199                 0,0,0, 
"NHits^{reco} / NHits^{mc}", 
"Entries" ),
 
  200     THistoInfo( 
"recosEffVsMCNHits",     
"Reconstruction Efficiency vs N Hits",   MaxNHits+1, 0.,   MaxNHits,
 
  201                 0,0,0, 
"Number of hits", 
"Efficiency [%]" ),   
 
  202     THistoInfo( 
"recosEffVsMCMom",       
"Reconstruction Efficiency vs Momentum, All tracks",          50, 0., MaxMomentum,
 
  203                 0,0,100, 
"p^{MC} [GeV/c]", 
"Efficiency [%]"),
 
  204     THistoInfo( 
"recosEffVsMCMomPrim",   
"Reconstruction Efficiency vs Momentum, Primary Tracks", 50, 0., MaxMomentum,
 
  205                 0,0,100, 
"p^{MC} [GeV/c]", 
"Efficiency [%]"),
 
  206     THistoInfo( 
"recosEffVsMCMomRefPrim",
"Reconstruction Efficiency vs Momentum, Reference Primary Tracks", 50, 0., MaxMomentum,
 
  207                 0,0,100, 
"p^{MC} [GeV/c]", 
"Efficiency [%]"),
 
  208     THistoInfo( 
"recosEffVsMCMomSec",    
"Reconstruction Efficiency vs Momentum, Secondary Tracks", 50, 0., MaxMomentum,
 
  209                 0,0,100, 
"p^{MC} [GeV/c]", 
"Efficiency [%]"),
 
  210     THistoInfo( 
"recosEffVsMCPtAll",     
"Reconstruction Efficiency vs Pt, All Tracks",    50, 0., MaxPt,
 
  211                 0,0,100, 
"p_{t}^{MC} [GeV/c]", 
"Efficiency [%]"),
 
  212     THistoInfo( 
"recosEffVsMCPtPrim",    
"Reconstruction Efficiency vs Pt, Primary",       50, 0., MaxPt,
 
  213                 0,0,100, 
"p_{t}^{MC} [GeV/c]", 
"Efficiency [%]"),
 
  214     THistoInfo( 
"recosEffVsMCPtRefPrim", 
"Reconstruction Efficiency vs Pt, Ref Primary",   50, 0., MaxPt,
 
  215                 0,0,100, 
"p_{t}^{MC} [GeV/c]", 
"Efficiency [%]"),
 
  216     THistoInfo( 
"recosEffVsMCPtSec",     
"Reconstruction Efficiency vs Pt, Secondary",     50, 0., MaxPt,
 
  217                 0,0,100, 
"p_{t}^{MC} [GeV/c]", 
"Efficiency [%]"),
 
  218     THistoInfo( 
"recosEffVsMCPhiAll",     
"Reconstruction Efficiency vs Phi, All Tracks",  120, -MaxPhi, MaxPhi,
 
  219                 0,0,100, 
"#phi", 
"Efficiency [%]"),
 
  220     THistoInfo( 
"recosEffVsMCPhiPrim",    
"Reconstruction Efficiency vs Phi, Primary Tracks",  120, -MaxPhi, MaxPhi,
 
  221                 0,0,100, 
"#phi", 
"Efficiency [%]"),
 
  222     THistoInfo( 
"recosEffVsMCPhiRefPrim", 
"Reconstruction Efficiency vs Phi, Ref Primary Tracks", 120, -MaxPhi, MaxPhi,
 
  223                 0,0,100, 
"#phi", 
"Efficiency [%]"),
 
  224     THistoInfo( 
"recosEffVsMCPhiSec",     
"Reconstruction Efficiency vs Phi, Secondary Tracks",   120, -MaxPhi, MaxPhi,
 
  225                 0,0,100, 
"#phi", 
"Efficiency [%]"),
 
  226     THistoInfo( 
"recosEffVsNMCTracks",       
"Reconstruction Efficiency vs NMCTracks, All tracks",          20, 0., 5000,
 
  227                 0,0,100, 
"NMCTracks", 
"Efficiency [%]"),
 
  228     THistoInfo( 
"recosLengthAndRMom",     
"N Reco Tracks vs N Hits and Momentum",       MaxNHits+1, 0.,   MaxNHits, 50, 0.,           MaxMomentum,
 
  229                 "Number of hits", 
"p^{reco} [GeV/c]" ),
 
  230     THistoInfo( 
"recosLengthAndMCMom",    
"N Reco Tracks vs N Hits and Momentum",       MaxNHits+1, 0.,   MaxNHits, 50, 0.,           MaxMomentum,
 
  231                 "Number of hits", 
"p^{MC} [GeV/c]" ),
 
  232     THistoInfo( 
"recosLengthAndChi2",     
"N Reco Tracks vs N Hits and Chi2",           MaxNHits+1, 0.,   MaxNHits, 50, 0.,           MaxChi2,
 
  233                 "Number of hits", 
"p^{reco} [GeV/c]" )
 
  235   for (
int iHisto = 0; iHisto < NHisto; iHisto++){
 
  236     fHistosInfo[iHisto] = tmp[iHisto];
 
  239   for( 
int i=0; 
i < NHisto; 
i++ ){
 
  245 void PndFTSCATrackPerformanceBase::CreateHistos(
string histoDir, TFile* 
outFile)
 
  247   TDirectory *curdir = gDirectory;
 
  248   if ( (histoDir != 
"") && outFile) {  
 
  250     fHistoDir = outFile->mkdir( 
TString(histoDir) );
 
  252     gDirectory->mkdir( 
"TrackFit" );
 
  253     gDirectory->cd( 
"TrackFit" );
 
  256     for( 
int i = 0; 
i < NTracksPulls + NHitsPulls; 
i++, ih++ ){ 
 
  257       fHistos[ih] = 
new TH1D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
 
  258       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  259       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  262     for( 
int i = 0; 
i < NHits2DPulls; 
i++, ih++ ){
 
  263       fHistos[ih] = 
new TH2D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
 
  264       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  265       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  268     gDirectory->cd( 
".." );
 
  269     gDirectory->mkdir( 
"AllTracks" );
 
  270     gDirectory->cd( 
"AllTracks" );
 
  272     for( 
int i = 0; 
i < NAllHisto; 
i++, ih++ ){
 
  273       fHistos[ih] = 
new TH1D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
 
  274       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  275       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  277     for( 
int i = 0; 
i < NAllProfiles; 
i++, ih++ ){
 
  278       fHistos[ih] = 
new TProfile(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].
low, fHistosInfo[ih].up);
 
  279       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  280       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  281       fHistos[ih]->SetMarkerColor(2);
 
  282       fHistos[ih]->SetLineColor(2);
 
  284     for( 
int i = 0; 
i < NAll2DHisto; 
i++, ih++ ){
 
  285       fHistos[ih] = 
new TH2D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
 
  286       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  287       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  291     gDirectory->cd( 
".." );
 
  292     gDirectory->mkdir( 
"Ghosts" );
 
  293     gDirectory->cd( 
"Ghosts" );
 
  295     for( 
int i = 0; 
i < NGhostsHisto; 
i++, ih++ ){
 
  296       fHistos[ih] = 
new TH1D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
 
  297       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  298       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  300     for( 
int i = 0; 
i < NGhostsProfiles; 
i++, ih++ ){
 
  301       fHistos[ih] = 
new TProfile(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].
low, fHistosInfo[ih].up);
 
  302       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  303       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  304       fHistos[ih]->SetMarkerColor(2);
 
  305       fHistos[ih]->SetLineColor(2);
 
  307     for( 
int i = 0; 
i < NGhosts2DHisto; 
i++, ih++ ){
 
  308       fHistos[ih] = 
new TH2D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
 
  309       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  310       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  314     gDirectory->cd( 
".." );
 
  315     gDirectory->mkdir( 
"RecoTracks" );
 
  316     gDirectory->cd( 
"RecoTracks" );
 
  318     for( 
int i = 0; 
i < NRecoTracksHisto; 
i++, ih++ ){
 
  319       fHistos[ih] = 
new TH1D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
 
  320       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  321       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  324     for( 
int i = 0; 
i < NRecoTracksProfiles; 
i++, ih++ ){
 
  325       fHistos[ih] = 
new TProfile(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].
low, fHistosInfo[ih].up );
 
  326       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  327       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  328       fHistos[ih]->SetMarkerColor(2);
 
  329       fHistos[ih]->SetLineColor(2);
 
  331     for( 
int i = 0; 
i < NRecoTracks2DHisto; 
i++, ih++ ){
 
  332       fHistos[ih] = 
new TH2D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
 
  333       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  334       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  338     gDirectory->cd( 
".." );
 
  342     static int iaddName = 0; 
 
  345     for( 
int i = 0; 
i < NTracksPulls + NHitsPulls; 
i++, ih++, addName = 
TString(iaddName++) ){
 
  346       fHistos[ih] = 
new TH1D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
 
  347       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  348       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  350     for( 
int i = 0; 
i < NHits2DPulls; 
i++, ih++, addName = 
TString(iaddName++)  ){
 
  351       fHistos[ih] = 
new TH2D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
 
  352       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  353       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  356     for( 
int i = 0; 
i < NAllHisto; 
i++, ih++, addName = 
TString(iaddName++) ){
 
  357       fHistos[ih] = 
new TH1D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
 
  358       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  359       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  361     for( 
int i = 0; 
i < NAllProfiles; 
i++, ih++, addName = 
TString(iaddName++) ){
 
  362       fHistos[ih] = 
new TProfile(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
 
  363       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  364       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  366     for( 
int i = 0; 
i < NAll2DHisto; 
i++, ih++, addName = 
TString(iaddName++)  ){
 
  367       fHistos[ih] = 
new TH2D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
 
  368       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  369       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  372     for( 
int i = 0; 
i < NGhostsHisto; 
i++, ih++, addName = 
TString(iaddName++) ){
 
  373       fHistos[ih] = 
new TH1D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
 
  374       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  375       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  377     for( 
int i = 0; 
i < NGhostsProfiles; 
i++, ih++, addName = 
TString(iaddName++) ){
 
  378       fHistos[ih] = 
new TProfile(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
 
  379       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  380       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  382     for( 
int i = 0; 
i < NGhosts2DHisto; 
i++, ih++, addName = 
TString(iaddName++)  ){
 
  383       fHistos[ih] = 
new TH2D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
 
  384       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  385       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  388     for( 
int i = 0; 
i < NRecoTracksHisto; 
i++, ih++, addName = 
TString(iaddName++) ){
 
  389       fHistos[ih] = 
new TH1D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
 
  390       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  391       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  393     for( 
int i = 0; 
i < NRecoTracksProfiles; 
i++, ih++, addName = 
TString(iaddName++) ){
 
  394       fHistos[ih] = 
new TProfile(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
 
  395       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  396       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  398     for( 
int i = 0; 
i < NRecoTracks2DHisto; 
i++, ih++, addName = 
TString(iaddName++)  ){
 
  399       fHistos[ih] = 
new TH2D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
 
  400       fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
 
  401       fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
 
  404     for( 
int i = 0; 
i < NHisto; 
i++ ){
 
  405       fHistos[
i]->SetDirectory(0);
 
  412 void PndFTSCATrackPerformanceBase::FillHistos()
 
  414   for ( 
int iMCTr = 0; iMCTr < nMCTracks; iMCTr++ ) {
 
  418     const int Multiplicity = (*fMCTracks).Size();
 
  420     if( mcTr.
NHits() > 0 )
 
  421       GetHisto(
"mcTracksVsP")->Fill( mcTr.
P() );
 
  428       GetHisto(
"recoAbleMCTracksVsP")->Fill( mcTr.
P() );
 
  433       GetHisto(
"recosEffVsMCPhiAll")->Fill( PhiMC,    mcD.
IsReconstructed()*100 );
 
  434       GetHisto(
"recosEffVsNMCTracks")->Fill( Multiplicity,    mcD.
IsReconstructed()*100 );
 
  438         GetHisto(
"recosEffVsMCMomPrim") ->Fill( mcTr.
P(),  mcD.
IsReconstructed()*100 );
 
  440         GetHisto(
"recosEffVsMCPhiPrim") ->Fill( PhiMC, mcD.
IsReconstructed()*100 );
 
  441         if(mcTr.
Set() == 2) {
 
  443           GetHisto(
"recosEffVsMCMomRefPrim") ->Fill( mcTr.
P(),  mcD.
IsReconstructed()*100 );
 
  444           GetHisto(
"recosEffVsMCPtRefPrim")  ->Fill( mcTr.
Pt(), mcD.
IsReconstructed()*100 );
 
  445           GetHisto(
"recosEffVsMCPhiRefPrim") ->Fill( PhiMC, mcD.
IsReconstructed()*100 );
 
  450         GetHisto(
"recosEffVsMCMomSec") ->Fill( mcTr.
P(),  mcD.
IsReconstructed()*100 );
 
  452         GetHisto(
"recosEffVsMCPhiSec") ->Fill( PhiMC, mcD.
IsReconstructed()*100 );
 
  457 #endif //DO_TPCCATRACKER_EFF_PERFORMANCE 
static T ATan2(const T &y, const T &x)