4 #include<TApplication.h> 
   10 #include<TClonesArray.h> 
   21 #include<TStopwatch.h> 
   40 #include<FairRunAna.h> 
   41 #include<FairRootManager.h> 
   43 #include<FairRtdbRun.h> 
   44 #include<FairRuntimeDb.h> 
   45 #include<FairParRootFileIo.h> 
   46 #include<FairLogger.h> 
   47 #include<FairTrackParH.h> 
  130 int main(
int __argc,
char *__argv[]) {
 
  144   std::string startStr=
"", momStr=
"", nStr=
"", pathStr=
"", verbStr=
"" , mcTrkStr=
"", useNewDStr=
"",usedMHStr=
"";
 
  146   if( __argc>1 && ( strcmp( __argv[1], 
"-help" ) == 0
 
  147                     || strcmp( __argv[1], 
"--help" ) == 0 ) ){
 
  149     std::cout << 
"This is script for comparision reconstructed and simulated tracks with parameters\n" 
  150               <<
"-s start event \n" 
  151               <<
"-n Number of events \n" 
  152               <<
"-t Number of trks per event \n" 
  153               <<
"-mom Beam Momentum \n" 
  154               <<
"-path path to the file(s) \n" 
  155               <<
"-v verbose Level (if>0, print out some information) \n" 
  156               <<
"-npx if>0: use namespace for pixel \n" 
  157               <<
"-mh if>0: use merged hits\n" 
  162   while ((optind < (__argc-1) ) && (__argv[optind][0]==
'-')) {
 
  164     std::string sw = __argv[optind];
 
  167       startStr = __argv[optind];
 
  172       nStr = __argv[optind];
 
  177       mcTrkStr = __argv[optind];
 
  182       pathStr = __argv[optind];
 
  187       momStr = __argv[optind];
 
  192       verbStr = __argv[optind];
 
  197       useNewDStr = __argv[optind];
 
  202       usedMHStr = __argv[optind];
 
  206       std::cout<< 
"Unknown switch: " 
  207                << __argv[optind] <<std::endl;
 
  211   while ( (optind < __argc ) && __argv[optind][0]!=
'-' ) optind++;
 
  214   std::stringstream startSStr(startStr), momSStr(momStr), nSStr(nStr), pathSStr(pathStr), verbSStr(verbStr), mcTrkSStr(mcTrkStr),useNewDSStr(useNewDStr), usedMHSStr(usedMHStr);
 
  221   mcTrkSStr >> nMCtracks;
 
  224   cout<<
"====================================="<<endl;
 
  225   cout<<
"some INFO about this macro params: "<<endl;
 
  226   cout<<
"expected number of tracks per event: "<<nMCtracks<<endl;
 
  227   cout<<
"expected number of events: "<<nEvents<<endl;
 
  228   cout<<
"Pbeam: "<<Plab<<endl;
 
  229   cout<<
"Will be used Path: "<<storePath<<endl;
 
  230   cout<<
"====================================="<<endl;
 
  234   gROOT->Macro(
"$VMCWORKDIR/gconfig/rootlogon.C");
 
  235   gSystem->Load(
"libLmdTrk");
 
  245   TString simMC=storePath+
"/Lumi_MC_";
 
  248   TChain tMC(
"pndsim");
 
  254   TChain tdigiHits(
"pndsim");
 
  255   tdigiHits.Add(DigiFile);
 
  257   TString recHit=storePath+
"/Lumi_reco";
 
  262   TChain tHits(
"pndsim");
 
  265   TString recHitmerged=storePath+
"/Lumi_recoMerged_";
 
  267   recHitmerged += 
".root";
 
  268   TChain tHitsMerged(
"pndsim");
 
  270     tHitsMerged.Add(recHitmerged);
 
  273   TString trkCand = storePath+
"/Lumi_TCand_";
 
  276   TChain tTrkCand(
"pndsim");
 
  277   tTrkCand.Add(trkCand);
 
  280   TChain tTrkRec(
"pndsim");
 
  281   recTrack = storePath+
"/Lumi_Track_";
 
  284   tTrkRec.Add(recTrack);
 
  292   TString geaneFile = storePath+
"/Lumi_Geane_";
 
  294   geaneFile += 
".root";
 
  295   TChain tgeane(
"pndsim");
 
  296   tgeane.Add(geaneFile);
 
  301   TString out=storePath+
"/Lumi_out_MC_and_REC_trks_matches_with_IDs";
 
  304   TFile *
f = 
new TFile(out,
"RECREATE");
 
  308   TClonesArray* true_tracks=
new TClonesArray(
"PndMCTrack");
 
  309   tMC.SetBranchAddress(
"MCTrack",&true_tracks);  
 
  311   TClonesArray* true_points=
new TClonesArray(
"PndSdsMCPoint");
 
  312   tMC.SetBranchAddress(
"LMDPoint",&true_points);  
 
  317   TClonesArray* fStripClusterArray;
 
  319     fStripClusterArray = 
new TClonesArray(
"PndSdsClusterPixel");
 
  320     tHits.SetBranchAddress(
"LMDPixelClusterCand",&fStripClusterArray);
 
  323     fStripClusterArray = 
new TClonesArray(
"PndSdsClusterStrip");
 
  324     tHits.SetBranchAddress(
"LMDStripClusterCand",&fStripClusterArray);
 
  328   TClonesArray* fStripDigiArray;
 
  330     fStripDigiArray = 
new TClonesArray(
"PndSdsDigiPixel");
 
  331     tdigiHits.SetBranchAddress(
"LMDPixelDigis",&fStripDigiArray);
 
  334     fStripDigiArray = 
new TClonesArray(
"PndSdsDigiStrip");
 
  335     tdigiHits.SetBranchAddress(
"LMDStripDigis",&fStripDigiArray);
 
  340   TClonesArray* rechit_array;
 
  343       rechit_array = 
new TClonesArray(
"PndSdsMergedHit");
 
  344       tHitsMerged.SetBranchAddress(
"LMDHitsMerged",&rechit_array);  
 
  347       rechit_array = 
new TClonesArray(
"PndSdsHit");
 
  348       tHits.SetBranchAddress(
"LMDHitsPixel",&rechit_array);  
 
  352     rechit_array = 
new TClonesArray(
"PndSdsHit");
 
  353     tHits.SetBranchAddress(
"LMDHitsStrip",&rechit_array);  
 
  359   TClonesArray* trkcand_array=
new TClonesArray(
"PndTrackCand");
 
  360   tTrkCand.SetBranchAddress(
"LMDTrackCand",&trkcand_array); 
 
  364   TClonesArray* rec_trk=
new TClonesArray(
"PndLinTrack");
 
  365   tTrkRec.SetBranchAddress(
"LMDTrack",&rec_trk);  
 
  376   cout<<
"Here we go to GEANE file: "<<endl;
 
  381   TClonesArray* geaneArray =
new TClonesArray(
"FairTrackParH");
 
  382   tgeane.SetBranchAddress(
"GeaneTrackFinal",&geaneArray);  
 
  384   cout<<
"And we'll make some hists"<<endl;
 
  386   TH1 *hchi2 = 
new TH1F(
"hchi2",
"#chi^2 for reconstructed tracks;#chi^2;",1.5e2,0,15.);
 
  387   TH2 *hnRecnMC = 
new TH2F(
"hnRecnMC",
"Number reconstracted tracks vs. Number simulated tracks; N_{MC}; N_{rec}",
 
  388                            100,0,100,100,0,100);
 
  389   TH1 *hDiffIDs = 
new TH1F(
"hDiffIDs",
"Number of track-candidates with hits from diff. MC-track;N_{IDs}",10,0,10);
 
  390   TH2 *hMCtrkvshits = 
new TH2F(
"hMCtrkvshits",
"Number of simulated tracks vs. Number of rec. hits",
 
  391                                1000,0,1000,100,0,100);
 
  392   TH1 *hntrkcand = 
new TH1F(
"hntrkcand",
"Number of track-candidates per event;N_{trk-cand}",100,0,100);
 
  393   TH1 *hntrk = 
new TH1F(
"hntrk",
"Number of tracks per event;N_{trk}",100,0,100);
 
  394   TH1 *hntrkmissed_I = 
new TH1F(
"hntrkmissed_I",
"Number of missed tracks per event (#phi, #theta trks);N_{trk}",30,0,30);
 
  395   TH1 *hntrkgood_I = 
new TH1F(
"hntrkgood_I",
"Number of good tracks per event (#phi, #theta trks);N_{trk}",30,0,30);
 
  396   TH1 *hntrkghost_I = 
new TH1F(
"hntrkghost_I",
"Number of ghost tracks per event (#phi, #theta trks);N_{trk}",30,0,30);
 
  397   TH1 *hntrkmissed_II = 
new TH1F(
"hntrkmissed_II",
"Number of missed tracks per event (hits matching);N_{trk}",30,0,30);
 
  398   TH1 *hntrkgood_II = 
new TH1F(
"hntrkgood_II",
"Number of good tracks per event (hits matching);N_{trk}",30,0,30);
 
  399   TH1 *hntrkghost_II = 
new TH1F(
"hntrkghost_II",
"Number of ghost tracks per event (hits matching);N_{trk}",30,0,30);
 
  400   TH2 *hntrkmissedPhiTheta = 
new TH2F(
"hntrkmissedPhiTheta",
";#delta#theta/#sigma#theta;#delta#phi/#sigma#phi",1000,0,100,1000,0,100);
 
  401   TH2 *hntrkcandvsIDs = 
new TH2F(
"hntrkcandvsIDs",
"Number of track-candidates per event vs Number of track-candidates with hits from diff. MC-track;N_{IDs};N_{trk-cand}",10,0,10,100,0,100);
 
  402   TH2 *hntrkcandvsMC = 
new TH2F(
"hntrkcandvsMC",
"Number of per event vs. Number of simulated tracks; N_{MC};N_{trk-cand}",100,0,100,100,0,100);
 
  404   TH2 *hnhitsvsIDs = 
new TH2F(
"hnhitsvsIDs",
"Number of hits per track-candidate vs Number of track-candidates with hits from diff. MC-track;N_{IDs};Number of hits",10,0,10,10,2,12);
 
  406   TH1 * hallTheta = 
new TH1F(
"hallTheta",
"#theta for all MC-track;#theta, rad",50,2e-3,10e-3);
 
  407   TH1 * hgoodTheta = 
new TH1F(
"hgoodTheta",
"#theta for good track-candidates",50,2e-3,10e-3);
 
  408   TH1 * hallPhi = 
new TH1F(
"hallPhi",
"#phi for all MC-track;#phi, rad",50,-355./113,355./113);
 
  409   TH1 * hgoodPhi = 
new TH1F(
"hgoodPhi",
"#phi for good track-candidates",50,-355./113,355./113);
 
  410   TH2 * hgoodPhiTheta = 
new TH2F(
"hgoodPhiTheta",
"#phi and #thete for good track-candidates",50,2e-3,10e-3,100,-355./113,355./113);
 
  411  TH2 * hallPhiTheta = 
new TH2F(
"hallPhiTheta",
"#phi & #theta for all MC",50,2e-3,10e-3,100,-355./113,355./113);
 
  413   TH2 * hgoodPhichi2 = 
new TH2F(
"hgoodPhichi2",
"#phi for good track-candidates vs. #chi^{2} ",5e2,0,50,20,-355./113,355./113);
 
  414   TH2 * hgoodThetachi2 = 
new TH2F(
"hgoodThetachi2",
"#theta for good track-candidates vs. #chi^{2} ",5e2,0,50,20,3.5e-3,8.5e-3);
 
  417   TNtuple *nmomMC = 
new TNtuple(
"nmomMC",
"MCmomentum",
"p0:p_nearLUMI:p_afterLUMI");
 
  418   TNtuple *ntuprecTrk = 
new TNtuple(
"ntuprecTrk",
"Info about reconstructed trks: goodTrk [0=good,+1=ghost]",
"x:y:z:mom:theta:phi:goodTrk");
 
  419   TNtuple *ntupMCTrk = 
new TNtuple(
"ntupMCTrk",
"Info about simulated trks: goodTrk [0=good, -1=missed]",
"x:y:z:mom:theta:phi:goodTrk:nrechits");
 
  422   TH1 *hResMom = 
new TH1F(
"hResMom",
"P_{MC}-P_{rec};#deltaP,GeV/c",1e3,-1e-4,1e-4);
 
  423   TH1 *hErrMom = 
new TH1F(
"hErrMom",
"#sigma_{P};#sigmaP,GeV/c",1e3,0,1e-3);
 
  424   TH1 *hPullMom = 
new TH1F(
"hPullMom",
"(P_{MC}-P_{rec})/#sigma_{P};",1e3,-1e1,1e1);
 
  426   TH1 *hResTheta = 
new TH1F(
"hResTheta",
"#theta_{MC}-#theta_{rec};#delta#theta,rad",1e2,-1e-3,1e-3);
 
  427   TH1 *hErrTheta = 
new TH1F(
"hErrTheta",
"#sigma(#theta_{rec});#sigma,rad",1e3,0,0.01);
 
  428   TH1 *hPullTheta = 
new TH1F(
"hPullTheta",
"(#theta_{MC}-#theta_{rec})/#sigma_{#theta};",1e2,-10,10);
 
  429   TH1 *hResPhi = 
new TH1F(
"hResPhi",
"#phi_{MC}-#phi_{rec};#delta#phi,rad",2e3,-1.,1.);
 
  430   TH1 *hErrPhi = 
new TH1F(
"hErrPhi",
"#sigma(#phi_{rec});#sigma,rad",1e3,0,0.1);
 
  431   TH1 *hPullPhi = 
new TH1F(
"hPullPhi",
"(#phi_{MC}-#phi_{rec})/#sigma_{#phi};",1e2,-10,10);
 
  433   TH1 *hResLumiTrkMom = 
new TH1F(
"hResLumiTrkMom",
"P_{MC}-P_{rec}(near Lumi);#deltaP,GeV/c",1e3,-6e-7,6e-7);
 
  434   TH1 *hResLumiTrkTheta = 
new TH1F(
"hResLumiTrkTheta",
"#theta_{MC}-#theta_{rec}(near Lumi);#delta#theta,rad",1e3,-6e-3,6e-3);
 
  435   TH1 *hResLumiTrkPhi = 
new TH1F(
"hResLumiTrkPhi",
"#phi_{MC}-#phi_{rec}(near Lumi);#delta#phi,rad",2e3,-1e-1,1e-1);
 
  437   TH1 *hangMCRec = 
new TH1F(
"hangMCRec", 
"Angle between Pmc and Prec;#delta#alpha, rad", 1e3,0.,0.1);
 
  438   TH1 *hResPointX = 
new TH1F(
"hResPointX",
"X_{MC}-X_{rec};#deltaX,cm",1e2,-2.,2.);
 
  439   TH1 *hResPointY = 
new TH1F(
"hResPointY",
"Y_{MC}-Y_{rec};#deltaY,cm",1e2,-2.,2.);
 
  440   TH1 *hResPointZ = 
new TH1F(
"hResPointZ",
"Z_{MC}-Z_{rec};#deltaZ,cm",1e3,-0.15,0.15);
 
  442   TH1 *hResLumiTrkPointX = 
new TH1F(
"hResLumiTrkPointX",
"X_{MC}-X_{rec}(near Lumi);#deltaX,cm",1e2,-0.02,0.02);
 
  443   TH1 *hResLumiTrkPointY = 
new TH1F(
"hResLumiTrkPointY",
"Y_{MC}-Y_{rec}(near Lumi);#deltaY,cm",1e2,-0.02,0.02);
 
  444   TH1 *hResLumiTrkPointZ = 
new TH1F(
"hResLumiTrkPointZ",
"Z_{MC}-Z_{rec}(near Lumi);#deltaZ,cm",1e2,-0.02,0.02);
 
  446   TH1 *hResLumiTrkPointPx = 
new TH1F(
"hResLumiTrkPointPx",
"Px_{MC}-Px_{rec}(near Lumi);#deltaPx, GeV/c",1e2,-0.001,0.001);
 
  447   TH1 *hResLumiTrkPointPy = 
new TH1F(
"hResLumiTrkPointPy",
"Py_{MC}-Py_{rec}(near Lumi);#deltaPy, GeV/c",1e2,-0.001,0.001);
 
  448   TH1 *hResLumiTrkPointPz = 
new TH1F(
"hResLumiTrkPointPz",
"Pz_{MC}-Pz_{rec}(near Lumi);#deltaPz, GeV/c",1e2,-0.0001,0.0001);
 
  450   TH1 *hResLumiTrkPointXPull = 
new TH1F(
"hResLumiTrkPointXPull",
"(X_{MC}-X_{rec})/#sigma;(X_{MC}-X_{rec})/#sigma",1e2,-10.,10.);
 
  451   TH1 *hResLumiTrkPointYPull = 
new TH1F(
"hResLumiTrkPointYPull",
"(Y_{MC}-Y_{rec})/#sigma;(Y_{MC}-Y_{rec})/#sigma",1e2,-10.,10.);
 
  452   TH1 *hResLumiTrkPointZPull = 
new TH1F(
"hResLumiTrkPointZPull",
"(Z_{MC}-Z_{rec})/#sigma;(Z_{MC}-Z_{rec})/#sigma",1e2,-10.,10.);
 
  454   TH1 *hResLumiTrkPointPxPull = 
new TH1F(
"hResLumiTrkPointPxPull",
"(Px_{MC}-Px_{rec})/#sigma;(Px_{MC}-Px_{rec})/#sigma",1e2,-10,10.);
 
  455   TH1 *hResLumiTrkPointPyPull = 
new TH1F(
"hResLumiTrkPointPyPull",
"(Py_{MC}-Py_{rec})/#sigma;(Py_{MC}-Py_{rec})/#sigma",1e2,-10,10);
 
  456   TH1 *hResLumiTrkPointPzPull = 
new TH1F(
"hResLumiTrkPointPzPull",
"(Pz_{MC}-Pz_{rec})/#sigma;(Pz_{MC}-Pz_{rec})/#sigma",1e2,-10,10);
 
  460   TH1 *hResLumiTrkThetaPull = 
new TH1F(
"hResLumiTrkThetaPull",
"(#theta_{MC}-#theta_{rec})/#sigma (near Lumi);#delta#theta, rad",1e2,-10,10);
 
  461   TH1 *hResLumiTrkPhiPull = 
new TH1F(
"hResLumiTrkPhiPull",
"(#phi_{MC}-#phi_{rec})/#sigma (near Lumi);#delta#phi, rad",1e2,-10,10);
 
  464   TH1 *hErrPointX = 
new TH1F(
"hErrPointX",
"#sigma_{X};#sigmaX,cm",1e3,0,1.);
 
  465   TH1 *hErrPointY = 
new TH1F(
"hErrPointY",
"#sigma_{Y};#sigmaY,cm",1e3,0,1.);
 
  466   TH1 *hErrLinPointX = 
new TH1F(
"hErrLinPointX",
"#sigma_{X};#sigmaX,cm",1e3,0,0.01);
 
  467   TH1 *hErrLinPointY = 
new TH1F(
"hErrLinPointY",
"#sigma_{Y};#sigmaY,cm",1e3,0,0.001);
 
  468   TH1 *hErrPointZ = 
new TH1F(
"hErrPointZ",
"#sigma_{Z};#sigmaZ,cm",1e2,0,0.01);
 
  469   TH1 *hPullPointX = 
new TH1F(
"hPullPointX",
"(X_{MC}-X_{rec})/#sigma_{X};(X_{MC}-X_{rec})/#sigma_{X}",1e2,-10,10);
 
  470   TH1 *hPullPointY = 
new TH1F(
"hPullPointY",
"(Y_{MC}-Y_{rec})/#sigma_{Y};(Y_{MC}-Y_{rec})/#sigma_{Y}",1e2,-10,10);
 
  471   TH1 *hPullPointZ = 
new TH1F(
"hPullPointZ",
"(Z_{MC}-Z_{rec})/#sigma_{Z};(Z_{MC}-Z_{rec})/#sigma_{Z}",1e3,-100,100);
 
  473   TH2 *hPullPointXphi = 
new TH2F(
"hPullPointXphi",
"(X_{MC}-X_{rec})/#sigma_{X} vs. #phi;#phi_{MC}, rad;(X_{MC}-X_{rec})/#sigma_{X}",2e1,-355./113,355./113,1e2,-10,10);
 
  474 TH2 *hPullPointYphi = 
new TH2F(
"hPullPointYphi",
"(Y_{MC}-Y_{rec})/#sigma_{Y} vs. #phi;#phi_{MC}, rad;(Y_{MC}-Y_{rec})/#sigma_{Y}",2e1,-355./113,355./113,1e2,-10,10);
 
  475  TH2 *hPullPointXtheta = 
new TH2F(
"hPullPointXtheta",
"(X_{MC}-X_{rec})/#sigma_{X} vs. #theta;#theta_{MC}, rad;(X_{MC}-X_{rec})/#sigma_{X}",2e1,0.003, 0.009,1e2,-10,10);
 
  476 TH2 *hPullPointYtheta = 
new TH2F(
"hPullPointYtheta",
"(Y_{MC}-Y_{rec})/#sigma_{Y} vs. #theta;#theta_{MC}, rad;(Y_{MC}-Y_{rec})/#sigma_{Y}",2e1,0.003, 0.009,1e2,-10,10);
 
  477   TH1 *hResPointPx = 
new TH1F(
"hResPointPx",
"Px_{MC}-Px_{rec};#deltaPx, GeV/c",1e2,-0.01,0.01);
 
  478   TH1 *hErrPointPx = 
new TH1F(
"hErrPointPx",
"#sigma_{Px};#sigmaPx, GeV/c",1e3,0,0.01);
 
  479   TH1 *hPullPointPx = 
new TH1F(
"hPullPointPx",
"(Px_{MC}-Px_{rec})/#sigma_{Px};(Px_{MC}-Px_{rec})/#sigma_{Px}",1e2,-10,10);
 
  481   TH1 *hResPointPy = 
new TH1F(
"hResPointPy",
"Py_{MC}-Py_{rec};#deltaPy, GeV/c",1e2,-0.01,0.01);
 
  482   TH1 *hErrPointPy = 
new TH1F(
"hErrPointPy",
"#sigma_{Py};#sigmaPy, GeV/c",1e3,0,0.01);
 
  483   TH1 *hPullPointPy = 
new TH1F(
"hPullPointPy",
"(Py_{MC}-Py_{rec})/#sigma_{Py};(Py_{MC}-Py_{rec})/#sigma_{Py}",1e2,-10,10);
 
  485   TH1 *hResPointPz = 
new TH1F(
"hResPointPz",
"Pz_{MC}-Pz_{rec};#deltaPz, GeV/c",1e2,-1e-3,1e-3);
 
  486   TH1 *hErrPointPz = 
new TH1F(
"hErrPointPz",
"#sigma_{Pz};#sigmaPz, GeV/c",1e3,0,1e-1);
 
  487   TH1 *hPullPointPz = 
new TH1F(
"hPullPointPz",
"(Pz_{MC}-Pz_{rec})/#sigma_{Pz};(Pz_{MC}-Pz_{rec})/#sigma_{Pz}",1e2,-10,10);
 
  489   TH1 *hResDCA = 
new TH1F(
"hDCA",
"|DCA|;|DCA|,cm",1e3,0,10.);
 
  490   TH1 *hErrDCA = 
new TH1F(
"hErrDCA",
"#sigma_{DCA};#sigmaDCA,cm",1e3,0,1.);
 
  491   TH1 *hPullDCA = 
new TH1F(
"hPullDCA",
"|DCA|/#sigma_{DCA};",1e2,0,10);
 
  493   TH2 *hPointXY = 
new TH2F(
"hPointXY",
"PCA;X,cm;Y,cm",1e3,-10,10.,1e3,-10,10.);
 
  494   TH2 *hPointXYcut = 
new TH2F(
"hPointXYcut",
"PCA;#X,cm;#Y,cm",1e3,-1.,1.,1e3,-1.,1.);
 
  495   TH2 *hErrPointXY = 
new TH2F(
"hErrPointXY",
"#sigma_{PCA};#sigmaX,cm;#sigmaY,cm",1e3,0,30.,1e3,0,30.);
 
  497   TH2 *hHitIDHitX = 
new TH2F(
"hHitIDHitX",
";MC_{ID} ;hit_{X}, cm;",6,-1,5,1e3,24.,45.);
 
  498   TH2 *hHitIDHitY = 
new TH2F(
"hHitIDHitY",
";MC_{ID} ;hit_{Y}, cm;",6,-1,5,1e3,-10.,10.);
 
  500   TH2 *hRecGEANEX = 
new TH2F(
"hRecGEANEX",
";X_{rec}, cm;X_{GEANE}, cm",1e3,-15.,15.,1e3,-100,100.);
 
  501   TH2 *hRecGEANEY = 
new TH2F(
"hRecGEANEY",
";Y_{rec}, cm;Y_{GEANE}, cm",1e3,-15.,15.,1e3,-100,100.);
 
  502   TH2 *hRecGEANEZ = 
new TH2F(
"hRecGEANEZ",
";Z_{rec}, cm;Z_{GEANE}, cm",1e3,-15.,15.,1e3,-1.,1.);
 
  503   TH2 *hRecGEANER = 
new TH2F(
"hRecGEANER",
";R_{rec}, cm;R_{GEANE}, cm",1e3,0,10.,1e3,0,10.);
 
  504   TH2 *hRecGEANETheta = 
new TH2F(
"hRecGEANETheta",
";#theta_{rec}, rad;#theta_{GEANE}, rad",1e3,0,1,1e3,0,1);
 
  505   TH2 *hRecGEANEPhi = 
new TH2F(
"hRecGEANEPhi",
";#phi_{rec}, rad;#phi_{GEANE}, rad",1e3,-7,7,1e3,-7,7);
 
  506   TH2 *hRecThetaPhi = 
new TH2F(
"hRecThetaPhi",
";#theta_{rec}, rad;#phi_{rec}, rad",1e3,0,1.,1e3,-7,7);
 
  508   TH2 *hSeedGEANEX = 
new TH2F(
"hSeedGEANEX",
";X_{cand}, cm;X_{GEANE}, cm",1e3,-100.,100.,1e3,-100.,100.);
 
  509   TH2 *hSeedGEANEY = 
new TH2F(
"hSeedGEANEY",
";Y_{cand}, cm;Y_{GEANE}, cm",1e3,-100.,100.,1e3,-100.,100.);
 
  510   TH2 *hSeedGEANEZ = 
new TH2F(
"hSeedGEANEZ",
";Z_{cand}, cm;Z_{GEANE}, cm",1e3,-0.015,0.015,1e3,-0.05,0.05);
 
  511   TH2 *hSeedGEANER = 
new TH2F(
"hSeedGEANER",
";R_{cand}, cm;R_{GEANE}, cm",1e3,0,100.,1e3,0,100.);
 
  512   TH2 *hSeedGEANETheta = 
new TH2F(
"hSeedGEANETheta",
";#theta_{cand}, rad;#theta_{GEANE}, rad",1e3,0,0.1,1e3,0,0.1);
 
  513   TH2 *hSeedGEANEPhi = 
new TH2F(
"hSeedGEANEPhi",
";#phi_{cand}, rad;#phi_{GEANE}, rad",1e3,-7,7,1e3,-7,7);
 
  514   TH2 *hSeedThetaPhi = 
new TH2F(
"hSeedThetaPhi",
";#theta_{cand}, rad;#phi_{cand}, rad",1e3,0,1.,1e3,-1.,1.);
 
  516   TH2 *hSeedThetaDiffIDs = 
new TH2F(
"hSeedThetaDiffIDs",
";# IDs;#theta_{cand}, rad",7,0,7,1e3,0,0.1);
 
  517   TH2 *hSeedPhiDiffIDs = 
new TH2F(
"hSeedPhiDiffIDs",
";# IDs;#phi_{cand}, rad",7,0,7,1e3,-4.,4.);
 
  518   TH2 *hDiffIDsPointX = 
new TH2F(
"hDiffIDsPointX",
";# IDs;X,cm",7,0,7,1e3,-10,10.);
 
  519   TH2 *hDiffIDsPointY = 
new TH2F(
"hDiffIDsPointY",
";# IDs;Y,cm",7,0,7,1e3,-10,10.);
 
  520   TH2 *hDiffIDsPointZ = 
new TH2F(
"hDiffIDsPointZ",
";# IDs;Z,cm",7,0,7,1e3,-1.,1.);
 
  522   TH2 *hMCThetaGEANETheta = 
new TH2F(
"hMCThetaGEANETheta",
";#theta_{MC}, rad;#theta_{GEANE}, rad",1e3,0,0.012,1e3,0,0.012);
 
  523   TH2 *hMCPhiGEANEPhi = 
new TH2F(
"hMCPhiGEANEPhi",
";#phi_{MC}, rad;#phi_{GEANE}, rad",1e3,-3.15,3.15,1e3,-3.15,3.15);
 
  525   TH2 *hMCThetaResTheta = 
new TH2F(
"hMCThetaResTheta",
";#theta_{MC}, rad;#Delta#theta, rad",1e2,0,0.012,1e3,-1e-2,1e-2);
 
  526   TH2 *hMCPhiResPhi = 
new TH2F(
"hMCPhiResPhi",
";#phi_{MC}, rad;#Delta#phi, rad",1e2,-3.15,3.15,1e2,-5e-1,5e-1);
 
  527   TH2 *hMCThetaResSeedTheta = 
new TH2F(
"hMCThetaResSeedTheta",
";#theta_{MC}, rad;#Delta#theta, rad",1e2,0.,0.1,1e3,-1e-2,1e-2);
 
  528   TH2 *hMCPhiResSeedPhi = 
new TH2F(
"hMCPhiResSeedPhi",
";#phi_{MC}, rad;#Delta#phi, rad",1e2,-3.15,3.15,1e2,-1e-1,1e-1);
 
  529   TH2 *hResZResPhi = 
new TH2F(
"hResZResPhi",
";#Delta#phi, rad;#Delta Z, cm",1e3,-2e-1,2e-1,1e3,-0.02,0.02);
 
  530   TH2 *hntrkMCtrkID = 
new TH2F(
"hntrkMCtrkID",
"Number of participation this MCid in rec.tracks;ID;Number of rec.trks",10,0,10,10,0,10);
 
  531   TH2 *hchi2MCdiffID = 
new TH2F(
"hchi2MCdiffID",
"number diff MCid in rec.tracks vs. #chi^{2};#chi^{2};N",5e2,0,50,10,0,10);
 
  534   TH1 *hLumiTrkA = 
new TH1F(
"hLumiTrkA",
"param a [x=a*z+b];",1e3,-0.1,0.1);
 
  535   TH1 *hLumiTrkB = 
new TH1F(
"hLumiTrkB",
"param b [x=a*z+b];",1e3,-10.,10.);
 
  536   TH1 *hLumiTrkC = 
new TH1F(
"hLumiTrkC",
"param c [y=c*z+d];",1e3,-0.1,0.1);
 
  537   TH1 *hLumiTrkD = 
new TH1F(
"hLumiTrkD",
"param d [y=c*z+d];",1e3,-10.,10.);
 
  541   TH2 *hchi2Errx = 
new TH2F(
"hchi2Errx",
"#sigma_{X} vs. #chi^2 for reconstructed tracks;#chi^2;#sigma_{X}, cm",
 
  542                             1e3,0,100,2e1,0,0.2);
 
  543   TH2 *hchi2Erry = 
new TH2F(
"hchi2Erry",
"#sigma_{Y} vs. #chi^2 for reconstructed tracks;#chi^2;#sigma_{X}, cm",
 
  544                             1e3,0,100,2e1,0,0.2);
 
  545  TH2 *hchi2nTrkCand = 
new TH2F(
"hchi2nTrkCand",
" ;Number of trk-cand;#chi^2",
 
  547   TNtuple *nrecpointall = 
new TNtuple(
"nrecpointall",
"recpointAll",
"xrecbp:yrecbp:zrecbp:xrec:yrec:zrec:xseed:yseed:zseed:chi2");
 
  548   TNtuple *nrecdirall = 
new TNtuple(
"nrecdirall",
"recdirAll",
"dxmc:dymc:dzmc:dxrecbp:dyrecbp:dzrecbp:dirxrec:diryrec:dirzrec:dirxseed:diryseed:dirzseed");
 
  549   TNtuple *nsectors = 
new TNtuple(
"nsectors",
"sectors",
"thetares:sector");
 
  550   TH2I *hnhits = 
new TH2I(
"hnhits",
"# rec hits vs. # sim hits; sim; rec",100,0,100,100,0,100);
 
  554   lmddim -> Read_transformation_matrices(
"matrices_perfect.txt", 
false);
 
  558   for (Int_t j=0; j<
nEvents; j++){
 
  565     tTrkCand.GetEntry(j);
 
  567     tdigiHits.GetEntry(j);
 
  569       tHitsMerged.GetEntry(j);
 
  570     const int nGeaneTrks = geaneArray->GetEntriesFast();
 
  571     const int nParticles = true_tracks->GetEntriesFast();
 
  572     const int numTrk = nGeaneTrks;
 
  573     const int nRecHits = rechit_array->GetEntriesFast();
 
  574     const int nMCHits = true_points->GetEntriesFast();
 
  576     const int nTrkCandidates = trkcand_array->GetEntriesFast();
 
  577     const int nRecTrks = rec_trk->GetEntriesFast();
 
  579       cout<<
"Event #"<<j<<
" has "<<nParticles<<
" true particles, "<<
" out of it "<<nRecHits<<
" hits, "<<nTrkCandidates
 
  580           <<
" trk-cands, "<<numTrk<<
" tracks and "<<nGeaneTrks<<
" geane Trks!"<<endl;
 
  581     hnRecnMC->Fill(nParticles,nGeaneTrks);
 
  582     if(nParticles!=nMCtracks) 
continue;
 
  583     hnhits->Fill(nMCHits,nRecHits);
 
  584     if(nRecHits<3*nMCtracks) glBadEv++;
 
  587     double chi2Cont[5*numTrk];
 
  588     double ndiffIDCont[5*numTrk];
 
  590     hMCtrkvshits->Fill(nRecHits,nParticles);
 
  591     if(nTrkCandidates>numTrk) cout<<
"Event #"<<j<<
" has "<<nTrkCandidates<<
" trk-cands and "<<numTrk<<
" tracks!"<<endl;
 
  593     hntrkcand->Fill(nTrkCandidates);
 
  594     hntrkcandvsMC->Fill(nParticles,nTrkCandidates);
 
  597     Int_t nRecGEANEtrk = 0;
 
  598     int MCtrk[nParticles]; 
 
  599     int RECtrkMCid[nGeaneTrks];
 
  600     for(
int nk=0;
nk<nParticles;
nk++)
 
  602     bool goodTrk[nGeaneTrks];
 
  603     bool ghostTrk[nGeaneTrks];
 
  604     for (Int_t iN=0; iN<nGeaneTrks; iN++){
 
  606       ghostTrk[iN] = 
false;
 
  611     for (Int_t iN=0; iN<nGeaneTrks; iN++){
 
  616       FairTrackParH *fRes = (FairTrackParH*)geaneArray->At(iN);
 
  618       TVector3 PosRec = fRes->GetPosition();
 
  620       if(Plab<5) pca_lim = 2.;
 
  621       if(Plab<2) pca_lim = 5.;
 
  625       if(
fabs(PosRec.X())>pca_lim && 
fabs(PosRec.Y())>pca_lim) 
continue; 
 
  629       Double_t lyambda = fRes->GetLambda();
 
  631         cout<<
"GEANE didn't propagate this trk!"<<endl;
 
  632         cout<<
"Event #"<<j<<
" diffIDs = "<<diffIDs<<endl;
 
  635       if(lyambda==0) 
continue;
 
  646         hLumiTrkA->Fill(linpar[1]);
 
  647         hLumiTrkB->Fill(linpar[0]);
 
  648         hLumiTrkC->Fill(linpar[3]);
 
  649         hLumiTrkD->Fill(linpar[2]);
 
  655         hchi2nTrkCand->Fill(nTrkCandidates,chi2);
 
  658         const int Ntrkcandhits= trkcand->
GetNHits();
 
  662         if(verboseLevel>1) cout<<
"MCidTOP:"<<endl;
 
  663         double momMC0,momMC1,momMC2;
 
  665         for (Int_t iHit = 0; iHit < Ntrkcandhits; iHit++){ 
 
  682         int ihalf, iplane, imodule, iside, idie, isensor;
 
  684         lmddim->
Get_sensor_by_id(sensorID, ihalf, iplane, imodule, iside, idie, isensor);
 
  685         trkSensor = ihalf*5+imodule;
 
  688           MCpointMom = 
sqrt(MCPoint->GetPx()*MCPoint->GetPx()+MCPoint->GetPy()*MCPoint->GetPy()+MCPoint->GetPz()*MCPoint->GetPz());
 
  689           int MCidTOP = MCPoint->GetTrackID();
 
  690           if(iHit==0) MCPointHit = 
MCPoint;
 
  691           MCtrkID.push_back(MCidTOP);
 
  693           if(verboseLevel>1) cout<<MCidTOP<<
" ";
 
  701         if (astripdigi->
GetIndex(0) == -1) glNoisehit++;
 
  702         if (astripdigi->
GetIndex(0) == -1) 
continue; 
 
  704         MCpointMom = 
sqrt(MCPoint->GetPx()*MCPoint->GetPx()+MCPoint->GetPy()*MCPoint->GetPy()+MCPoint->GetPz()*MCPoint->GetPz());
 
  706         int MCidTOP = MCPoint->GetTrackID();
 
  707         if(verboseLevel>1) cout<<MCidTOP<<
" ";
 
  708         if(iHit==0) MCPointHit = 
MCPoint;
 
  716         if (astripdigiBot->
GetIndex(0) == -1) glNoisehit++;
 
  717         if (astripdigiBot->
GetIndex(0) == -1) 
continue; 
 
  725         int MCidBOT = MCPointBot->GetTrackID();
 
  727         MCtrkID.push_back(MCidTOP);
 
  728         MCtrkID.push_back(MCidBOT);
 
  730         if(iHit==0) momMC1 = MCpointMom;
 
  731         if(iHit==(Ntrkcandhits-1)) momMC2 = MCpointMom;
 
  735       nmomMC->Fill(momMC0,momMC1,momMC2);
 
  736       if(verboseLevel>1) cout<<
""<<endl;
 
  741       for(Int_t 
n=0; 
n<MCtrkID.size(); 
n++) { 
 
  743         for(Int_t 
m=
n+1; 
m<MCtrkID.size(); 
m++) 
 
  748         MCtrkID[k] = MCtrkID[
n]; MCtrkID[
n] = 
x; 
 
  753       Int_t prevID = MCtrkID[0];
 
  754       for(
int nk=0;
nk<nParticles;
nk++){
 
  756           MCtrk[
nk]=MCtrk[
nk]+1;
 
  759       for(Int_t 
n=1; 
n<MCtrkID.size(); 
n++){
 
  760         if(prevID<MCtrkID[
n]){
 
  763           for(
int nk=0;
nk<nParticles;
nk++){
 
  765               MCtrk[
nk]=MCtrk[
nk]+1;
 
  770       ndiffIDCont[iN]=diffIDs;
 
  771       hDiffIDs->Fill(diffIDs);
 
  772       hntrkcandvsIDs->Fill(diffIDs,nTrkCandidates);
 
  773       hnhitsvsIDs->Fill(diffIDs,Ntrkcandhits);
 
  778         RECtrkMCid[iN] = MCtrkID[0];
 
  782         vector<int> countMC_IDs(diffIDs);
 
  785         for(Int_t 
n=0; 
n<MCtrkID.size(); 
n++) {
 
  786           countMC_IDs[diffCount]++;
 
  787           if(prevID<MCtrkID[
n]){
 
  792         int maxID=countMC_IDs[0];
 
  794         for(
int kn=0;kn<diffIDs;kn++){
 
  796           if(countMC_IDs[kn]>0.65*MCtrkID.size()){ 
 
  798             ghostTrk[iN] = 
false;
 
  801             if(!goodTrk[iN]) ghostTrk[iN] = 
true;
 
  804           if(countMC_IDs[kn]>maxID){
 
  805             maxID=countMC_IDs[kn];
 
  811         for(Int_t 
n=0; 
n<MCtrkID.size(); 
n++) {
 
  812           if(diffCount==posIDmax) RECtrkMCid[iN] = prevID;
 
  813           if(prevID<MCtrkID[
n]){
 
  822       TVector3 posSeed = trkcand->getPosSeed();
 
  823       TVector3 dirSeed = trkcand->getDirSeed();
 
  824       hSeedThetaDiffIDs->Fill(diffIDs,dirSeed.Theta());
 
  825       hSeedPhiDiffIDs->Fill(diffIDs,dirSeed.Phi());
 
  829         TVector3 pos_prop_geane_trk = fRes->GetPosition();
 
  831         Double_t phi_prop_geane_trk = fRes->GetPhi();
 
  832         TVector3 pos_rec_trk,dir_rec_trk;
 
  836           hRecGEANEX->Fill(pos_rec_trk.X(),pos_prop_geane_trk.X());
 
  837           hRecGEANEY->Fill(pos_rec_trk.Y(),pos_prop_geane_trk.Y());
 
  838           hRecGEANEZ->Fill(pos_rec_trk.Z(),pos_prop_geane_trk.Z());
 
  839           hRecGEANER->Fill(pos_rec_trk.Perp(),pos_prop_geane_trk.Perp());
 
  840           hRecGEANETheta->Fill(dir_rec_trk.Theta(), theta_prop_geane_trk);
 
  841           hRecGEANEPhi->Fill(dir_rec_trk.Phi(), phi_prop_geane_trk);
 
  842           hRecThetaPhi->Fill(dir_rec_trk.Theta(),dir_rec_trk.Phi());
 
  844           hSeedGEANEX->Fill(posSeed.X(),pos_prop_geane_trk.X());
 
  845           hSeedGEANEY->Fill(posSeed.Y(),pos_prop_geane_trk.Y());
 
  846           hSeedGEANEZ->Fill(posSeed.Z(),pos_prop_geane_trk.Z());
 
  847           hSeedGEANER->Fill(posSeed.Perp(),pos_prop_geane_trk.Perp());
 
  848           hSeedGEANETheta->Fill(dirSeed.Theta(), theta_prop_geane_trk);
 
  849           hSeedGEANEPhi->Fill(dirSeed.Phi(), phi_prop_geane_trk);
 
  850           hSeedThetaPhi->Fill(dirSeed.Theta(),dir_rec_trk.Phi());
 
  856         hDiffIDsPointX->Fill(diffIDs,PosRec.X());
 
  857         hDiffIDsPointY->Fill(diffIDs,PosRec.Y());
 
  858         hDiffIDsPointZ->Fill(diffIDs,PosRec.Z());
 
  860         fRes->GetMARSCov(CovGEANELAB);
 
  868         hchi2Errx->Fill(chi2,errX);
 
  869         hchi2Erry->Fill(chi2,errY);
 
  874         int MCidforREC = RECtrkMCid[iN];
 
  888         TVector3 errMomBP(errPx,errPy,errPz);
 
  891         Double_t err_lyambda = fRes->GetDLambda();
 
  892         if(err_lyambda==0) err_lyambda = errMomBP.Theta();
 
  896         if(err_phi==0) err_phi=errMomBP.Phi();
 
  897         Double_t errMomRecBP = fRes->GetDQp();
 
  900         TVector3 MomRecBP = fRes->GetMomentum();
 
  904         Double_t resTheta = thetaBP-thetaMC;
 
  906         double resMom = MomRecBP.Mag()-MomMC.Mag();
 
  907         hgoodTheta->Fill(thetaMC);
 
  908         hgoodPhi->Fill(phiMC);
 
  909         hgoodPhiTheta->Fill(thetaMC,phiMC);
 
  910         hgoodThetachi2->Fill(chi2,thetaMC);
 
  911         hgoodPhichi2->Fill(chi2,phiMC);
 
  913         hMCThetaGEANETheta->Fill(thetaMC,thetaBP);
 
  914         hMCPhiGEANEPhi->Fill(phiMC,phiBP);
 
  915         hMCThetaResTheta->Fill(thetaMC,thetaMC-thetaBP);
 
  916         hMCPhiResPhi->Fill(phiMC,phiMC-phiBP);
 
  917         hResPointX->Fill(PosRec.X());
 
  918         hResPointY->Fill(PosRec.Y());
 
  919         hResDCA->Fill(PosRec.Mag());
 
  921         hErrDCA->Fill(errPCA);
 
  922         hPullDCA->Fill(PosRec.Mag()/errPCA);
 
  923         hPointXY->Fill(-PosRec.X(), -PosRec.Y());
 
  924         hPointXYcut->Fill(-PosRec.X(), -PosRec.Y());
 
  925         hResPointZ->Fill(-PosRec.Z());
 
  926         hErrPointX->Fill(errX);
 
  927         hErrPointY->Fill(errY);
 
  928         hErrLinPointX->Fill(errXlin);
 
  929         hErrLinPointY->Fill(errYlin);
 
  930         hErrPointXY->Fill(errX,errY);
 
  931         hErrPointZ->Fill(errZ);
 
  932         hPullPointX->Fill(-PosRec.X()/errX);
 
  933         hPullPointY->Fill(-PosRec.Y()/errY);
 
  934         hPullPointZ->Fill(-PosRec.Z()/errZ);
 
  935         hPullPointXphi->Fill(phiMC,(-PosRec.X()/errX));
 
  936         hPullPointYphi->Fill(phiMC,(-PosRec.Y()/errY));
 
  937         hPullPointXtheta->Fill(thetaMC,(-PosRec.X()/errX));
 
  938         hPullPointYtheta->Fill(thetaMC,(-PosRec.Y()/errY));
 
  940         hResPointPx->Fill(MomMC.X()-MomRecBP.X());
 
  941         hResPointPy->Fill(MomMC.Y()-MomRecBP.Y());
 
  942         hResPointPz->Fill(MomMC.Z()-MomRecBP.Z());
 
  943         hErrPointPx->Fill(errPx);
 
  944         hPullPointPx->Fill((MomMC.X()-MomRecBP.X())/errPx);
 
  945         hErrPointPy->Fill(errPy);
 
  946         hPullPointPy->Fill((MomMC.Y()-MomRecBP.Y())/errPy);
 
  947         hErrPointPz->Fill(errPz);
 
  948         hPullPointPz->Fill((MomMC.Z()-MomRecBP.Z())/errPz);
 
  951         hResMom->Fill(resMom);
 
  952         hErrMom->Fill(errMomRecBP);
 
  953         hPullMom->Fill(resMom/errMomRecBP);
 
  954         hResTheta->Fill(resTheta);
 
  955         nsectors->Fill(resTheta,trkSensor);
 
  956         hErrTheta->Fill(err_lyambda);
 
  957         hPullTheta->Fill(resTheta/err_lyambda);
 
  958         hResPhi->Fill(resPhi);
 
  959         hErrPhi->Fill(err_phi);
 
  960         hPullPhi->Fill(resPhi/err_phi);
 
  961         hResZResPhi->Fill(resPhi,PosRec.Z());
 
  963         Double_t angMCRec = MomMC.Angle(MomRecBP); 
 
  964         hangMCRec->Fill(angMCRec);
 
  969         for(Int_t jk=0; jk< nParticles;jk++){
 
  974             double diffTheta=
fabs(MomMC.Theta()-thetaBP)/err_lyambda;
 
  975             double diffPhi=
fabs(MomMC.Phi()-phiBP)/err_phi;
 
  977             if(
fabs(MomMC.Phi())<0.14 || 
fabs(MomMC.Phi())>3){ 
 
  978               double phiMC1 = -MomMC.Phi();
 
  979               double diffPhi2=
fabs(phiMC1-phiBP)/err_phi;
 
  980               if(diffPhi2<diffPhi) diffPhi = diffPhi2;
 
  983             hntrkmissedPhiTheta->Fill(diffTheta,diffPhi);
 
  984             if(diffTheta<4. && diffPhi<4.) goodRectrk++;
 
  988         nrecpointall->Fill(pos_prop_geane_trk.X(),pos_prop_geane_trk.Y(),pos_prop_geane_trk.Z(),
 
  989                            pos_rec_trk.X(),pos_rec_trk.Y(),pos_rec_trk.Z(),
 
  990                            posSeed.X(),posSeed.Y(),posSeed.Z(),chi2);
 
  991         nrecdirall->Fill(MomMC.X()/MomMC.Mag(),MomMC.Y()/MomMC.Mag(),MomMC.Z()/MomMC.Mag(),MomRecBP.X()/MomRecBP.Mag(),MomRecBP.Y()/MomRecBP.Mag(),MomRecBP.Z()/MomRecBP.Mag(),
 
  992                          dir_rec_trk.X(),dir_rec_trk.Y(),dir_rec_trk.Z(),
 
  993                          dirSeed.X(),dirSeed.Y(),dirSeed.Z());
 
 1017         double xTrue = MCPointHit->GetX();
 
 1018         double yTrue = MCPointHit->GetY();
 
 1019         double zTrue = MCPointHit->GetZ();
 
 1020         TVector3 vtxLumiMC = TVector3(xTrue,yTrue,zTrue);
 
 1023         double pxTrue =  MCPointHit->GetPx();
 
 1024         double pyTrue =  MCPointHit->GetPy();
 
 1025         double pzTrue =  MCPointHit->GetPz();
 
 1026         TVector3 dirLumiMC = TVector3(pxTrue,pyTrue,pzTrue);
 
 1028         dirLumiMC *=1./dirLumiMC.Mag();
 
 1030         double dz = -zTrue+vtxLumi.Z();
 
 1032         double dx = dirLumiMC.X()*
dz;
 
 1033         double dy = dirLumiMC.Y()*
dz;
 
 1034         vtxLumiMC += TVector3(dx,dy,dz);
 
 1036         hResLumiTrkMom->Fill(dirLumiMC.Mag()-dirLumi.Mag());
 
 1037         hResLumiTrkTheta->Fill(dirLumiMC.Theta()-dirLumi.Theta());
 
 1038         hResLumiTrkPhi->Fill(dirLumiMC.Phi()-dirLumi.Phi());
 
 1039         hResLumiTrkThetaPull->Fill((dirLumiMC.Theta()-dirLumi.Theta())/dirLumiErr.Theta());
 
 1041         hResLumiTrkPhiPull->Fill((dirLumiMC.Phi()-dirLumi.Phi())/dirLumiErr.Phi());
 
 1043         hResLumiTrkPointX->Fill(vtxLumiMC.X()-vtxLumi.X());
 
 1044         hResLumiTrkPointY->Fill(vtxLumiMC.Y()-vtxLumi.Y());
 
 1045         hResLumiTrkPointZ->Fill(vtxLumiMC.Z()-vtxLumi.Z());
 
 1047         hResLumiTrkPointPx->Fill(dirLumiMC.X()-dirLumi.X());
 
 1048         hResLumiTrkPointPy->Fill(dirLumiMC.Y()-dirLumi.Y());
 
 1049         hResLumiTrkPointPz->Fill(dirLumiMC.Z()-dirLumi.Z());
 
 1051         hResLumiTrkPointXPull->Fill((vtxLumiMC.X()-vtxLumi.X())/vtxLumiErr.X());
 
 1052         hResLumiTrkPointYPull->Fill((vtxLumiMC.Y()-vtxLumi.Y())/vtxLumiErr.Y());
 
 1053         hResLumiTrkPointZPull->Fill((vtxLumiMC.Z()-vtxLumi.Z())/vtxLumiErr.Z());
 
 1055         hResLumiTrkPointPxPull->Fill((dirLumiMC.X()-dirLumi.X())/dirLumiErr.X());
 
 1056         hResLumiTrkPointPyPull->Fill((dirLumiMC.Y()-dirLumi.Y())/dirLumiErr.Y());
 
 1057         hResLumiTrkPointPzPull->Fill((dirLumiMC.Z()-dirLumi.Z())/dirLumiErr.Z());
 
 1059         hMCThetaResSeedTheta->Fill(dirLumiMC.Theta(),(dirLumiMC.Theta()-dirLumi.Theta()));
 
 1060         hMCPhiResSeedPhi->Fill(dirLumiMC.Phi(),(dirLumiMC.Phi()-dirLumi.Phi()));
 
 1066     for(
int nk=0;
nk<numTrk;
nk++){
 
 1067       hntrkMCtrkID->Fill(
nk,MCtrk[
nk]);
 
 1068       hchi2MCdiffID->Fill(chi2Cont[nk],ndiffIDCont[nk]);
 
 1071     hntrkgood_I->Fill(goodRectrk);
 
 1072     if((nMCtracks-goodRectrk)>0) hntrkmissed_I->Fill(nMCtracks-goodRectrk);
 
 1073     if((nGeaneTrks-goodRectrk)>0) hntrkghost_I->Fill(nGeaneTrks-goodRectrk);
 
 1075     cout<<nMCtracks<<
" trks per event were simulated and "<<nGeaneTrks<<
" were reconstructed"<<endl;
 
 1076     cout<<
"-- (I) dPhi\dTheta -------------------------"<<endl;
 
 1077     cout<<
"Good trks: "<<goodRectrk<<
" missed: "<<nMCtracks-goodRectrk<<
" ghost: "<<nGeaneTrks-goodRectrk<<endl;
 
 1078     cout<<
"--------------------------------"<<endl;
 
 1081     int goodRecII=0, ghostRecII=0;
 
 1082     for (Int_t iN=0; iN<nGeaneTrks; iN++){
 
 1093       FairTrackParH *fRes = (FairTrackParH*)geaneArray->At(iN);
 
 1094       Double_t lyambda = fRes->GetLambda();
 
 1097       TVector3 MomRecBP = fRes->GetMomentum();
 
 1098       TVector3 PosBP = fRes->GetPosition();
 
 1099       ntuprecTrk->Fill(PosBP.X(),PosBP.Y(),PosBP.Z(),MomRecBP.Mag(),thetaBP,phiBP,trkType);
 
 1101     hntrkgood_II->Fill(goodRecII);
 
 1102     if(ghostRecII>0) hntrkghost_II->Fill(ghostRecII);
 
 1103     if((nMCtracks-goodRecII)>0){
 
 1104       hntrkmissed_II->Fill(nMCtracks-goodRecII);
 
 1107     for(
int imc=0;imc<nParticles;imc++){
 
 1109       for(
int irec=0;irec<nGeaneTrks;irec++){
 
 1110         int mc_comp = RECtrkMCid[irec];
 
 1111         if(mc_comp==imc) missTrk=
false;
 
 1118       if(missTrk) trkQ=-1;
 
 1120       ntupMCTrk->Fill(PosMC.X(),PosMC.Y(),PosMC.Z(),MomMC.Mag(),MomMC.Theta(),MomMC.Phi(),trkQ,nRecHits);
 
 1124       cout<<
"-- (II) Hits matching -------------------------"<<endl;
 
 1125       cout<<
"Good trks: "<<goodRecII<<
" missed: "<<nMCtracks-goodRecII<<
" ghost: "<<ghostRecII<<endl;
 
 1126       cout<<
"--------------------------------"<<endl;
 
 1133     hntrk->Fill(nRecGEANEtrk);
 
 1136     for(Int_t jk=0; jk< nParticles;jk++){
 
 1143         hallTheta->Fill(MomMC.Theta());
 
 1144         hallPhi->Fill(MomMC.Phi());
 
 1145         hallPhiTheta->Fill(MomMC.Theta(),MomMC.Phi());
 
 1165   TCanvas *
c1 = 
new TCanvas(
"IDsINFO");
 
 1168   hnRecnMC->Draw(
"colz");
 
 1171   hntrk->SetLineColor(2);
 
 1172   hntrk->Draw(
"same");
 
 1178   hnhitsvsIDs->Draw(
"colz");
 
 1183   TH1F *heffTheta = (TH1F*)hgoodTheta->Clone(
"heffTheta");
 
 1184   heffTheta->SetTitle(
"Efficiency vs. #theta");
 
 1185   heffTheta->Divide(hallTheta);
 
 1186   TH1F *heffPhi = (TH1F*)hgoodPhi->Clone(
"heffPhi");
 
 1187   heffPhi->SetTitle(
"Efficiency vs. #phi");
 
 1188   heffPhi->Divide(hallPhi);
 
 1190   TH2F *heffPhiTheta = (TH2F*)hgoodPhiTheta->Clone(
"heffPhiTheta");
 
 1191   heffPhiTheta->SetTitle(
"Efficiency #phi & #theta");
 
 1192   heffPhiTheta->Divide(hallPhiTheta);
 
 1194   TCanvas *
c2 = 
new TCanvas(
"EffINFO");
 
 1197   hallTheta->SetLineWidth(2);
 
 1198   hallTheta->SetFillStyle(3354);
 
 1199   hallTheta->SetFillColor(kBlack);
 
 1201   hgoodTheta->SetLineWidth(2);
 
 1202   hgoodTheta->SetLineColor(2);
 
 1203   hgoodTheta->SetFillStyle(3690);
 
 1204   hgoodTheta->SetFillColor(kRed);
 
 1205   hgoodTheta->Draw(
"same");
 
 1207   heffTheta->SetMinimum(0.9);
 
 1210   hallPhiTheta->Draw(
"colz");
 
 1212   hallPhi->SetLineWidth(2);
 
 1213   hallPhi->SetFillStyle(3354);
 
 1214   hallPhi->SetFillColor(kBlack);
 
 1216   hgoodPhi->SetLineWidth(2);
 
 1217   hgoodPhi->SetLineColor(2);
 
 1218   hgoodPhi->SetFillColor(kRed);
 
 1219   hgoodPhi->SetFillStyle(3690);
 
 1220   hgoodPhi->Draw(
"same");
 
 1222   heffPhi->SetMinimum(0.9);
 
 1225   heffPhiTheta->Draw(
"colz");
 
 1230   TF1 *funrp = 
new TF1(
"fitrp",
"gaus",-1e-5,1e-5);
 
 1231   funrp->SetParameters(100,0,3e-3);
 
 1232   funrp->SetParNames(
"Constant",
"Mean",
"Sigma");
 
 1234   TF1 *funrth = 
new TF1(
"fitrth",
"gaus",-0.01,0.01);
 
 1235   funrth->SetParameters(100,0,3e-3);
 
 1236   funrth->SetParNames(
"Constant",
"Mean",
"Sigma");
 
 1238   TF1 *funrphi = 
new TF1(
"fitrphi",
"gaus",-1,1);
 
 1239   funrphi->SetParameters(100,0,3e-3);
 
 1240   funrphi->SetParNames(
"Constant",
"Mean",
"Sigma");
 
 1242   TF1 *funp = 
new TF1(
"fitp",
"gaus",-20,20);
 
 1243   funp->SetParameters(100,0,3e-3);
 
 1244   funp->SetParNames(
"Constant",
"Mean",
"Sigma");
 
 1246   TCanvas *
c3 = 
new TCanvas(
"ResMomINFO");
 
 1249   hResMom->Fit(funrp,
"r");
 
 1252   hResTheta->Fit(funrth,
"r");
 
 1255   hResPhi->Fit(funrphi,
"r");
 
 1261   hPullTheta->Fit(funp,
"r");
 
 1264   hPullPhi->Fit(funp,
"r");
 
 1277   TF1 *funcoord = 
new TF1(
"fitcoord",
"gaus",-1,1.);
 
 1278   funcoord->SetParameters(1e4,0,1e-1);
 
 1279   funcoord->SetParNames(
"Constant",
"Mean",
"Sigma");
 
 1282   funp->SetParameters(100,0,1);
 
 1283   funp->SetParNames(
"Constant",
"Mean",
"Sigma");
 
 1285   TCanvas *
c4 = 
new TCanvas(
"ResPCAINFO");
 
 1288   hResPointX->Fit(funcoord,
"r");
 
 1291   hResPointY->Fit(funcoord,
"r");
 
 1294   hResPointZ->Fit(funcoord,
"r");
 
 1303   hPullPointX->Fit(funp,
"r");
 
 1304   hPullPointX->Draw();
 
 1306   hPullPointY->Fit(funp,
"r");
 
 1307   hPullPointY->Draw();
 
 1309   hPullPointZ->Fit(funp,
"r");
 
 1310   hPullPointZ->Draw();
 
 1314   TCanvas *c42 = 
new TCanvas(
"ResMomPointINFO");
 
 1317   hResPointPx->Fit(funcoord,
"r");
 
 1318   hResPointPx->Draw();
 
 1320   hResPointPy->Fit(funcoord,
"r");
 
 1321   hResPointPy->Draw();
 
 1323   hResPointPz->Fit(funcoord,
"r");
 
 1324   hResPointPz->Draw();
 
 1326   hErrPointPx->Draw();
 
 1328   hErrPointPy->Draw();
 
 1330   hErrPointPz->Draw();
 
 1332   hPullPointPx->Fit(funp,
"r");
 
 1333   hPullPointPx->Draw();
 
 1335   hPullPointPy->Fit(funp,
"r");
 
 1336   hPullPointPy->Draw();
 
 1338   hPullPointPz->Fit(funp,
"r");
 
 1339   hPullPointPz->Draw();
 
 1345   TCanvas *c41 = 
new TCanvas(
"ResLinINFO");
 
 1348   hErrLinPointX->Draw();
 
 1350   hErrLinPointY->Draw();
 
 1365   TCanvas *
c6 = 
new TCanvas(
"VertexINFO");
 
 1370   hPointXYcut->Draw();
 
 1372   hErrPointXY->Draw();
 
 1376   TCanvas *
c7 = 
new TCanvas(
"GEANEvsRecINFO");
 
 1385   hRecGEANETheta->Draw();
 
 1387   hRecGEANEPhi->Draw();
 
 1389   hRecThetaPhi->Draw();
 
 1393   TCanvas *
c8 = 
new TCanvas(
"GEANEvsCandINFO");
 
 1396   hSeedGEANEX->Draw();
 
 1398   hSeedGEANEY->Draw();
 
 1400   hSeedGEANEZ->Draw();
 
 1402   hSeedGEANETheta->Draw();
 
 1403   TLine *uplim = 
new TLine(0.05, 0, 0.05, 0.1);
 
 1404   TLine *downlim = 
new TLine(0.03, 0, 0.03, 0.1);
 
 1405   uplim->SetLineColor(kRed);
 
 1406   downlim->SetLineColor(kRed);
 
 1407   uplim->SetLineWidth(2);
 
 1408   downlim->SetLineWidth(2);
 
 1413   Int_t binmax = hSeedGEANETheta->GetNbinsX();
 
 1414   for(
int bin=0;bin<binmax;bin++){
 
 1415     Double_t binCenter = hSeedGEANETheta->GetBinCenter(bin);
 
 1422   for(
int bin=0;bin<binmax;bin++){
 
 1423     Double_t binCenter = hSeedGEANETheta->GetBinCenter(bin);
 
 1430   Double_t nall = hSeedGEANETheta->Integral(0, binmax);
 
 1431   Double_t neff = hSeedGEANETheta->Integral(binx1, binx2);
 
 1433   cout<<
"Total number of track-candidate = "<<nall<<endl;
 
 1437   hSeedGEANEPhi->Draw();
 
 1439   hSeedThetaPhi->Draw();
 
 1443   TCanvas *
c9 = 
new TCanvas(
"DCA");
 
 1463   hntrkcandvsIDs->Write();
 
 1473   hPullTheta->Write();
 
 1476   hPointXYcut->Write();
 
 1477   hSeedGEANEX->Write();
 
 1478   hSeedGEANEY->Write();
 
 1479   hSeedGEANEZ->Write();
 
 1480   hSeedGEANER->Write();
 
 1481   hSeedGEANETheta->Write();
 
 1482   hSeedGEANEPhi->Write();
 
 1483   hSeedThetaPhi->Write();
 
 1484   hRecGEANEX->Write();
 
 1485   hRecGEANEY->Write();
 
 1486   hRecGEANEZ->Write();
 
 1490   TCanvas *
c10 = 
new TCanvas(
"ThetaPhiDistr");
 
 1501   hMCThetaResTheta->Draw(
"colz");
 
 1503   hMCPhiResPhi->Draw(
"colz");
 
 1505   TH1F *fdiffThetaMean;
 
 1506   TH1F *fdiffThetaSigma;
 
 1507   TH1F *fdiffThetaChi2;
 
 1508   hMCThetaResTheta->FitSlicesY();
 
 1509   fdiffThetaMean = (TH1F*)gDirectory->Get(
"hMCThetaResTheta_1");
 
 1510   fdiffThetaSigma = (TH1F*)gDirectory->Get(
"hMCThetaResTheta_2");
 
 1511   fdiffThetaChi2= (TH1F*)gDirectory->Get(
"hMCThetaResTheta_chi2");
 
 1513   TH1F *fdiffPhiSigma;
 
 1515   hMCPhiResPhi->FitSlicesY();
 
 1516   fdiffPhiMean = (TH1F*)gDirectory->Get(
"hMCPhiResPhi_1");
 
 1517   fdiffPhiSigma = (TH1F*)gDirectory->Get(
"hMCPhiResPhi_2");
 
 1518   fdiffPhiChi2 = (TH1F*)gDirectory->Get(
"hMCPhiResPhi_chi2");
 
 1520   fdiffThetaMean->Draw();
 
 1522   fdiffPhiMean->Draw();
 
 1524   fdiffThetaSigma->Draw();
 
 1526   fdiffPhiSigma->Draw();
 
 1528   fdiffThetaChi2->Draw();
 
 1530   fdiffPhiChi2->Draw();
 
 1534    TCanvas *
c11 = 
new TCanvas(
"HitsUsing");
 
 1537    hntrkMCtrkID->Draw(
"colz");
 
 1547   TCanvas *c12 = 
new TCanvas(
"TrkLin_and_MC");
 
 1550   hResLumiTrkMom->Fit(funrp,
"r");
 
 1551   hResLumiTrkMom->Draw();
 
 1553   hResLumiTrkTheta->Fit(funrth,
"r");
 
 1554   hResLumiTrkTheta->Draw();
 
 1556   hResLumiTrkPhi->Fit(funrphi,
"r");
 
 1557   hResLumiTrkPhi->Draw();
 
 1559   hResLumiTrkPointX->Fit(funcoord,
"r");
 
 1560   hResLumiTrkPointX->Draw();
 
 1562   hResLumiTrkPointY->Fit(funcoord,
"r");
 
 1563   hResLumiTrkPointY->Draw();
 
 1565   hResLumiTrkPointZ->Fit(funcoord,
"r");
 
 1566   hResLumiTrkPointZ->Draw();
 
 1568   hResLumiTrkPointPx->Fit(funp,
"r");
 
 1569   hResLumiTrkPointPx->Draw();
 
 1571   hResLumiTrkPointPy->Fit(funp,
"r");
 
 1572   hResLumiTrkPointPy->Draw();
 
 1574   hResLumiTrkPointPz->Fit(funp,
"r");
 
 1575   hResLumiTrkPointPz->Draw();
 
 1579  TCanvas *c13 = 
new TCanvas(
"TrkLin_and_MC_pulls");
 
 1582  hResLumiTrkPointXPull->Fit(funp,
"r");
 
 1583  hResLumiTrkPointXPull->Draw();
 
 1585  hResLumiTrkPointYPull->Fit(funp,
"r");
 
 1586  hResLumiTrkPointYPull->Draw();
 
 1588  hResLumiTrkPointZPull->Fit(funp,
"r");
 
 1589  hResLumiTrkPointZPull->Draw();
 
 1591  hResLumiTrkPointPxPull->Fit(funp,
"r");
 
 1592  hResLumiTrkPointPxPull->Draw();
 
 1594  hResLumiTrkPointPyPull->Fit(funp,
"r");
 
 1595  hResLumiTrkPointPyPull->Draw();
 
 1597  hResLumiTrkPointPzPull->Fit(funp,
"r");
 
 1598  hResLumiTrkPointPzPull->Draw();
 
 1602  TCanvas *
c14 = 
new TCanvas(
"TrkIP_andLin_and_MC_pulls");
 
 1607  hPullPointX->SetLineWidth(2);
 
 1608  hPullPointX->SetLineColor(12);
 
 1609  hPullPointX->SetFillColor(12);
 
 1610  hPullPointX->SetFillStyle(3003);
 
 1611  hPullPointX->Draw();
 
 1612  hResLumiTrkPointXPull->SetLineColor(4);
 
 1613  hResLumiTrkPointXPull->SetLineWidth(2);
 
 1614  hResLumiTrkPointXPull->Draw(
"same");
 
 1616  hPullPointY->SetLineWidth(2);
 
 1617  hPullPointY->SetLineColor(12);
 
 1618  hPullPointY->SetFillColor(12);
 
 1619  hPullPointY->SetFillStyle(3003);
 
 1620  hPullPointY->Draw();
 
 1621  hResLumiTrkPointYPull->SetLineColor(4);
 
 1622  hResLumiTrkPointYPull->SetLineWidth(2);
 
 1623  hResLumiTrkPointYPull->Draw(
"same");
 
 1625  hPullPointZ->SetLineWidth(2);
 
 1626  hPullPointZ->SetLineColor(12);
 
 1627  hPullPointZ->SetFillColor(12);
 
 1628  hPullPointZ->SetFillStyle(3003);
 
 1629  hPullPointZ->Draw();
 
 1630  hResLumiTrkPointZPull->SetLineColor(4);
 
 1631  hResLumiTrkPointZPull->SetLineWidth(2);
 
 1632  hResLumiTrkPointZPull->Draw(
"same");
 
 1634  hPullPointPx->SetLineWidth(2);
 
 1635  hPullPointPx->SetLineColor(12);
 
 1636  hPullPointPx->SetFillColor(12);
 
 1637  hPullPointPx->SetFillStyle(3003);
 
 1638  hPullPointPx->Draw();
 
 1639  hResLumiTrkPointPxPull->SetLineColor(4);
 
 1640  hResLumiTrkPointPxPull->SetLineWidth(2);
 
 1641  hResLumiTrkPointPxPull->Draw(
"same");
 
 1643  hPullPointPy->SetLineWidth(2);
 
 1644  hPullPointPy->SetLineColor(12);
 
 1645  hPullPointPy->SetFillColor(12);
 
 1646  hPullPointPy->SetFillStyle(3003);
 
 1647  hPullPointPy->Draw();
 
 1648  hResLumiTrkPointPyPull->SetLineColor(4);
 
 1649  hResLumiTrkPointPyPull->SetLineWidth(2);
 
 1650  hResLumiTrkPointPyPull->Draw(
"same");
 
 1652  hPullPointPz->SetLineWidth(2);
 
 1653  hPullPointPz->SetLineColor(12);
 
 1654  hPullPointPz->SetFillColor(12);
 
 1655  hPullPointPz->SetFillStyle(3003);
 
 1656  hPullPointPz->Draw();
 
 1657  hResLumiTrkPointPzPull->SetLineColor(4);
 
 1658  hResLumiTrkPointPzPull->SetLineWidth(2);
 
 1659  hResLumiTrkPointPzPull->Draw(
"same");
 
 1664   hSeedThetaDiffIDs->Write();
 
 1665   hSeedPhiDiffIDs->Write();
 
 1666   hMCThetaGEANETheta->Write();
 
 1667   hMCPhiGEANEPhi->Write();
 
 1668   hMCThetaResTheta->Write();
 
 1669   hMCPhiResPhi->Write();
 
 1671   hDiffIDsPointX->Write();
 
 1672   hDiffIDsPointY->Write();
 
 1673   hDiffIDsPointZ->Write();
 
 1675   hResPointPx->Write();
 
 1676   hErrPointPx->Write();
 
 1677   hPullPointPx->Write();
 
 1678   hResPointPy->Write();
 
 1679   hErrPointPy->Write();
 
 1680   hPullPointPy->Write();
 
 1681   hResPointPz->Write();
 
 1682   hErrPointPz->Write();
 
 1683   hPullPointPz->Write();
 
 1685   hResPointX->Write();
 
 1686   hErrPointX->Write();
 
 1687   hPullPointX->Write();
 
 1688   hResPointY->Write();
 
 1689   hErrPointY->Write();
 
 1690   hPullPointY->Write();
 
 1691   hResPointZ->Write();
 
 1692   hErrPointZ->Write();
 
 1693   hPullPointZ->Write();
 
 1695   hMCtrkvshits->Write();
 
 1696   hntrkMCtrkID->Write();
 
 1697   hchi2nTrkCand->Write();
 
 1698   hgoodPhichi2->Write();
 
 1699   hgoodThetachi2->Write();
 
 1700   hchi2MCdiffID->Write();
 
 1701   hnhitsvsIDs->Write();
 
 1702   hResLumiTrkMom->Write();
 
 1703   hResLumiTrkTheta->Write();
 
 1704   hResLumiTrkPhi->Write();
 
 1705   hResLumiTrkThetaPull->Write();
 
 1706   hResLumiTrkPhiPull->Write();
 
 1707   hResLumiTrkPointX->Write();
 
 1708   hResLumiTrkPointY->Write();
 
 1709   hResLumiTrkPointZ->Write();
 
 1710   hResLumiTrkPointPx->Write();
 
 1711   hResLumiTrkPointPy->Write();
 
 1712   hResLumiTrkPointPz->Write();
 
 1713   hResLumiTrkPointXPull->Write();
 
 1714   hResLumiTrkPointYPull->Write();
 
 1715   hResLumiTrkPointZPull->Write();
 
 1716   hResLumiTrkPointPxPull->Write();
 
 1717   hResLumiTrkPointPyPull->Write();
 
 1718   hResLumiTrkPointPzPull->Write();
 
 1720   hResZResPhi->Write();
 
 1721   nrecpointall->Write();
 
 1722   nrecdirall->Write();
 
 1724   TCanvas *c134 = 
new TCanvas(
"TrkLinparams");
 
 1740  hMCThetaResSeedTheta->Write();
 
 1741  hMCPhiResSeedPhi->Write();
 
 1742  hntrkmissedPhiTheta->Write();
 
 1743  hntrkmissed_I->Write();
 
 1744  hntrkghost_I->Write();
 
 1745  hntrkmissed_II->Write();
 
 1746  hntrkghost_II->Write();
 
 1747  hntrkgood_I->Write();
 
 1748  hntrkgood_II->Write();
 
 1749  heffPhiTheta->Write();
 
 1751  ntuprecTrk->Write();
 
 1755  hPullPointXphi->Write();
 
 1756  hPullPointYphi->Write();
 
 1757  hPullPointXtheta->Write();
 
 1758  hPullPointYtheta->Write();
 
 1760  cout<<
"Number of events with low number of hits (less then 3 per trk): "<<glBadEv<<endl;
 
 1761  cout<<
"Number of trks where GEANE failed: "<<glBADGEANE<<endl;
 
 1762  cout<<
"Total number of noise hits = "<<glNoisehit<<endl;
 
int main(int argc, char **argv)
Double_t GetChiSquare() const 
TVector3 GetStartVec() const 
friend F32vec4 sqrt(const F32vec4 &a)
static T Sqrt(const T &x)
Int_t GetIndex(int i=0) const 
static PndLmdDim * Instance()
PndTrackCandHit GetSortedHit(UInt_t i)
Class for digitised strip hits. 
TVector3 GetMomentum() const 
void GetPar(Double_t *par) const 
void GetParErr(Double_t *errpar)
Int_t GetDigiIndex(Int_t i) const 
void Get_sensor_by_id(const int sensor_id, int &ihalf, int &iplane, int &imodule, int &iside, int &idie, int &isensor)
Int_t GetBotIndex() const 
friend F32vec4 fabs(const F32vec4 &a)
TVector3 GetDirectionVec() const 
Data class to store the digi output of a pixel module. 
Int_t GetClusterIndex() const 
TVector3 GetStartVertex() const 
Int_t GetSensorID() const 
TVector3 GetStartErrVec()
TVector3 GetDirectionErrVec()