void MCandRECTrkmatches(const int nEvents=2, const int startEvent=0, TString storePath="tmpOutput", const int verboseLevel=3, double dv=0.5, bool no4d=false) { // ---- Load libraries ------------------------------------------------- gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C"); gSystem->Load("libLmdTrk"); // gROOT->LoadMacro("line3Dfit.C"); // ------------------------------------------------------------------------ // ----- Timer -------------------------------------------------------- TStopwatch timer; timer.Start(); // ------------------------------------------------------------------------ // ---- Input files -------------------------------------------------------- TString simMC=storePath+"/Lumi_MC_"; simMC += startEvent; simMC += ".root"; TChain tMC("cbmsim"); tMC.Add(simMC); TString DigiFile = storePath+"/Lumi_digi_"; DigiFile += startEvent; DigiFile += ".root"; TChain tdigiHits("cbmsim"); tdigiHits.Add(DigiFile); TString recHit=storePath+"/Lumi_reco_"; recHit += startEvent; recHit += ".root"; TChain tHits("cbmsim"); tHits.Add(recHit); TString trkCand = storePath+"/Lumi_TCand_"; trkCand += startEvent; trkCand += ".root"; TChain tTrkCand("cbmsim"); tTrkCand.Add(trkCand); TString recTrack = storePath+"/Lumi_Track_"; recTrack += startEvent; recTrack += ".root"; TChain tTrkRec("cbmsim"); tTrkRec.Add(recTrack); TString geaneFile = storePath+"/Lumi_Geane_"; geaneFile += startEvent; geaneFile += ".root"; TChain tgeane("cbmsim"); tgeane.Add(geaneFile); // --------------------------------------------------------------------------------- // ---- Output file ---------------------------------------------------------------- TString out=storePath+"/Lumi_out_MC_and_REC_trks_matches_with_IDs"; out += startEvent; out += ".root"; TFile *f = new TFile(out,"RECREATE"); // --------------------------------------------------------------------------------- //--- MC info ----------------------------------------------------------------- TClonesArray* true_tracks=new TClonesArray("PndMCTrack"); tMC.SetBranchAddress("MCTrack",&true_tracks); //True Track to compare TClonesArray* true_points=new TClonesArray("PndSdsMCPoint"); tMC.SetBranchAddress("LMDPoint",&true_points); //True Points to compare //---------------------------------------------------------------------------------- //--- Digitization info ------------------------------------------------------------ TClonesArray* fStripClusterArray = new TClonesArray("PndSdsClusterStrip"); tHits.SetBranchAddress("LMDStripClusterCand",&fStripClusterArray); TClonesArray* fStripDigiArray = new TClonesArray("PndSdsDigiStrip"); tdigiHits.SetBranchAddress("LMDStripDigis",&fStripDigiArray); //---------------------------------------------------------------------------------- //--- Real Hits -------------------------------------------------------------------- TClonesArray* rechit_array=new TClonesArray("PndSdsHit"); tHits.SetBranchAddress("LMDHitsStrip",&rechit_array); //Points for Tracks //---------------------------------------------------------------------------------- //--- Track Candidate --------------------------------------------------------------- TClonesArray* trkcand_array=new TClonesArray("PndTrackCand"); tTrkCand.SetBranchAddress("LMDTrackCand",&trkcand_array); //Points for Track Canidates //----------------------------------------------------------------------------------- //--- Real tracks ------------------------------------------------------------------- TClonesArray* rec_trk=new TClonesArray("PndLinTrack"); tTrkRec.SetBranchAddress("LMDTrack",&rec_trk); //Tracks //---------------------------------------------------------------------------------- //--- Geane info ------------------------------------------------------------------ // TClonesArray* geaneArray =new TClonesArray("FairTrackParP"); TClonesArray* geaneArray =new TClonesArray("FairTrackParH"); tgeane.SetBranchAddress("GeaneTrackFinal",&geaneArray); //Tracks with parabolic parametrisation //--- Output histogram ----------------------------------------------------- TH1 *hchi2 = new TH1F("hchi2","#chi^2 for reconstructed tracks;#chi^2;",5e2,0,50); TH2 *hnRecnMC = new TH2F("hnRecnMC","Number reconstracted tracks vs. Number simulated tracks; N_{MC}; N_{rec}", 100,0,100,100,0,100); TH1 *hDiffIDs = new TH1F("hDiffIDs","Number of track-candidates with hits from diff. MC-track;N_{IDs}",10,0,10); TH2 *hMCtrkvshits = new TH2F("hMCtrkvshits","Number of simulated tracks vs. Number of rec. hits", 1000,0,1000,100,0,100); TH1 *hntrkcand = new TH1F("hntrkcand","Number of track-candidates per event;N_{trk-cand}",100,0,100); TH1 *hntrk = new TH1F("hntrk","Number of tracks per event;N_{trk}",100,0,100); 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); TH2 *hntrkcandvsMC = new TH2F("hntrkcandvsMC","Number of track-candidates per event vs. Number of simulated tracks; N_{MC};N_{trk-cand}",100,0,100,100,0,100); 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,4,2,6); TH1 * hallPhi = new TH1F("hallPhi","#phi for all MC-track;#phi, rad",20,-355./113,355./113); TH1 * hgoodPhi = new TH1F("hgoodPhi","#phi for good track-candidates",20,-355./113,355./113); TH1 * hallTheta = new TH1F("hallTheta","#theta for all MC-track;#theta, rad",20,3.5e-3,8.5e-3); TH1 * hgoodTheta = new TH1F("hgoodTheta","#theta for good track-candidates",20,3.5e-3,8.5e-3); TH2 * hgoodPhichi2 = new TH2F("hgoodPhichi2","#phi for good track-candidates vs. #chi^{2} ",5e2,0,50,20,-355./113,355./113); TH2 * hgoodThetachi2 = new TH2F("hgoodThetachi2","#theta for good track-candidates vs. #chi^{2} ",5e2,0,50,20,3.5e-3,8.5e-3); TH1 *hResMom = new TH1F("hResMom","P_{MC}-P_{rec};#deltaP,GeV/c",1e2,-6e-5,6e-5); TH1 *hErrMom = new TH1F("hErrMom","#sigma_{P};#sigmaP,GeV/c",1e3,0,1e-1); TH1 *hPullMom = new TH1F("hPullMom","(P_{MC}-P_{rec})/#sigma_{P};",1e3,-1e1,1e1); TH1 *hResTheta = new TH1F("hResTheta","#theta_{MC}-#theta_{rec};#delta#theta,rad",1e2,-6e-4,6e-4); TH1 *hErrTheta = new TH1F("hErrTheta","#sigma(#theta_{rec});#sigma,rad",1e3,0,0.1); TH1 *hPullTheta = new TH1F("hPullTheta","(#theta_{MC}-#theta_{rec})/#sigma_{#theta};",1e2,-10,10); TH1 *hResPhi = new TH1F("hResPhi","#phi_{MC}-#phi_{rec};#delta#phi,rad",2e2,-0.1,0.1); TH1 *hErrPhi = new TH1F("hErrPhi","#sigma(#phi_{rec});#sigma,rad",1e3,0,1.); TH1 *hPullPhi = new TH1F("hPullPhi","(#phi_{MC}-#phi_{rec})/#sigma_{#phi};",1e2,-10,10); TH1 *hangMCRec = new TH1F("hangMCRec", "Angle between Pmc and Prec;#delta#alpha, rad", 1e3,0.,0.1); TH1 *hResPointX = new TH1F("hResPointX","X_{MC}-X_{rec};#deltaX,cm",1e2,-2.,2.); TH1 *hResPointY = new TH1F("hResPointY","Y_{MC}-Y_{rec};#deltaY,cm",1e2,-2.,2.); TH1 *hResPointZ = new TH1F("hResPointZ","Z_{MC}-Z_{rec};#deltaZ,cm",1e2,-0.1,0.1); TH1 *hErrPointX = new TH1F("hErrPointX","#sigma_{X};#sigmaX,cm",1e3,0,1.); TH1 *hErrPointY = new TH1F("hErrPointY","#sigma_{Y};#sigmaY,cm",1e3,0,1.); TH1 *hErrLinPointX = new TH1F("hErrLinPointX","#sigma_{X};#sigmaX,cm",1e3,0,0.01); TH1 *hErrLinPointY = new TH1F("hErrLinPointY","#sigma_{Y};#sigmaY,cm",1e3,0,0.001); TH1 *hErrPointZ = new TH1F("hErrPointZ","#sigma_{Z};#sigmaZ,cm",1e2,0,0.01); TH1 *hPullPointX = new TH1F("hPullPointX","(X_{MC}-X_{rec})/#sigma_{X};",1e2,-10,10); TH1 *hPullPointY = new TH1F("hPullPointY","(Y_{MC}-Y_{rec})/#sigma_{Y};",1e2,-10,10); TH1 *hPullPointZ = new TH1F("hPullPointZ","(Z_{MC}-Z_{rec})/#sigma_{Z};",1e2,-10,10); TH1 *hResPointPx = new TH1F("hResPointPx","Px_{MC}-Px_{rec};#deltaPx, GeV/c",1e2,-0.01,0.01); TH1 *hErrPointPx = new TH1F("hErrPointPx","#sigma_{Px};#sigmaPx, GeV/c",1e3,0,0.01); TH1 *hPullPointPx = new TH1F("hPullPointPx","(Px_{MC}-Px_{rec})/#sigma_{Px};",1e2,-10,10); TH1 *hResPointPy = new TH1F("hResPointPy","Py_{MC}-Py_{rec};#deltaPy, GeV/c",1e2,-0.01,0.01); TH1 *hErrPointPy = new TH1F("hErrPointPy","#sigma_{Py};#sigmaPy, GeV/c",1e3,0,0.01); TH1 *hPullPointPy = new TH1F("hPullPointPy","(Py_{MC}-Py_{rec})/#sigma_{Py};",1e2,-10,10); TH1 *hResPointPz = new TH1F("hResPointPz","Pz_{MC}-Pz_{rec};#deltaPz, GeV/c",1e2,-1e-3,1e-3); TH1 *hErrPointPz = new TH1F("hErrPointPz","#sigma_{Pz};#sigmaPz, GeV/c",1e3,0,1e-3); TH1 *hPullPointPz = new TH1F("hPullPointPz","(Pz_{MC}-Pz_{rec})/#sigma_{Pz};",1e2,-10,10); TH1 *hResDCA = new TH1F("hDCA","|DCA|;|DCA|,cm",1e3,0,10.); TH1 *hErrDCA = new TH1F("hErrDCA","#sigma_{DCA};#sigmaDCA,cm",1e3,0,1.); TH1 *hPullDCA = new TH1F("hPullDCA","|DCA|/#sigma_{DCA};",1e2,0,10); TH2 *hPointXY = new TH2F("hPointXY","PCA;X,cm;Y,cm",1e3,-10,10.,1e3,-10,10.); TH2 *hPointXYcut = new TH2F("hPointXYcut","PCA;#X,cm;#Y,cm",1e3,-1.,1.,1e3,-1.,1.); TH2 *hErrPointXY = new TH2F("hErrPointXY","#sigma_{PCA};#sigmaX,cm;#sigmaY,cm",1e3,0,30.,1e3,0,30.); TH2 *hHitIDHitX = new TH2F("hHitIDHitX",";MC_{ID} ;hit_{X}, cm;",6,-1,5,1e3,24.,45.); TH2 *hHitIDHitY = new TH2F("hHitIDHitY",";MC_{ID} ;hit_{Y}, cm;",6,-1,5,1e3,-10.,10.); TH2 *hRecGEANEX = new TH2F("hRecGEANEX",";X_{rec}, cm;X_{GEANE}, cm",1e3,0,50.,1e3,-500,500.); TH2 *hRecGEANEY = new TH2F("hRecGEANEY",";Y_{rec}, cm;Y_{GEANE}, cm",1e3,-15,15.,1e3,-500,500.); TH2 *hRecGEANER = new TH2F("hRecGEANER",";R_{rec}, cm;R_{GEANE}, cm",1e3,0,50.,1e3,0,500.); TH2 *hRecGEANETheta = new TH2F("hRecGEANETheta",";#theta_{rec}, rad;#theta_{GEANE}, rad",1e3,0,1,1e3,0,1); TH2 *hRecGEANEPhi = new TH2F("hRecGEANEPhi",";#phi_{rec}, rad;#phi_{GEANE}, rad",1e3,-7,7,1e3,-7,7); TH2 *hRecThetaPhi = new TH2F("hRecThetaPhi",";#theta_{rec}, rad;#phi_{rec}, rad",1e3,0,1.,1e3,-7,7); TH2 *hSeedGEANEX = new TH2F("hSeedGEANEX",";X_{cand}, cm;X_{GEANE}, cm",1e3,0,50.,1e3,-5.,5.); TH2 *hSeedGEANEY = new TH2F("hSeedGEANEY",";Y_{cand}, cm;Y_{GEANE}, cm",1e3,-15,15.,1e3,-5.,5.); TH2 *hSeedGEANER = new TH2F("hSeedGEANER",";R_{cand}, cm;R_{GEANE}, cm",1e3,0,50.,1e3,0,5.); TH2 *hSeedGEANETheta = new TH2F("hSeedGEANETheta",";#theta_{cand}, rad;#theta_{GEANE}, rad",1e3,0,0.1,1e3,0,0.1); TH2 *hSeedGEANEPhi = new TH2F("hSeedGEANEPhi",";#phi_{cand}, rad;#phi_{GEANE}, rad",1e3,-7,7,1e3,-7,7); TH2 *hSeedThetaPhi = new TH2F("hSeedThetaPhi",";#theta_{cand}, rad;#phi_{cand}, rad",1e3,0,1.,1e3,-1.,1.); TH2 *hSeedThetaDiffIDs = new TH2F("hSeedThetaDiffIDs",";# IDs;#theta_{cand}, rad",7,0,7,1e3,0,0.15); TH2 *hSeedPhiDiffIDs = new TH2F("hSeedPhiDiffIDs",";# IDs;#phi_{cand}, rad",7,0,7,1e3,-1.5,1.5); TH2 *hDiffIDsPointX = new TH2F("hDiffIDsPointX",";# IDs;X,cm",7,0,7,1e3,-10,10.); TH2 *hDiffIDsPointY = new TH2F("hDiffIDsPointY",";# IDs;Y,cm",7,0,7,1e3,-10,10.); TH2 *hDiffIDsPointZ = new TH2F("hDiffIDsPointZ",";# IDs;Z,cm",7,0,7,1e3,-1.,1.); TH2 *hMCThetaGEANETheta = new TH2F("hMCThetaGEANETheta",";#theta_{MC}, rad;#theta_{GEANE}, rad",1e3,0,0.012,1e3,0,0.012); TH2 *hMCPhiGEANEPhi = new TH2F("hMCPhiGEANEPhi",";#phi_{MC}, rad;#phi_{GEANE}, rad",1e3,-3.15,3.15,1e3,-3.15,3.15); TH2 *hMCThetaResTheta = new TH2F("hMCThetaResTheta",";#theta_{MC}, rad;#Delta#theta, rad",1e2,0,0.012,1e2,-1e-3,1e-3); TH2 *hMCPhiResPhi = new TH2F("hMCPhiResPhi",";#phi_{MC}, rad;#Delta#phi, rad",1e2,-3.15,3.15,1e2,-1e-1,1e-1); TH2 *hntrkMCtrkID = new TH2F("hntrkMCtrkID","Number of participation this MCid in rec.tracks;ID;Number of rec.trks",10,0,10,10,0,10); TH2 *hchi2MCdiffID = new TH2F("hchi2MCdiffID","number diff MCid in rec.tracks vs. #chi^{2};#chi^{2};N",5e2,0,50,10,0,10); //----------------------------------------------------------------------------- TH2 *hchi2Errx = new TH2F("hchi2Errx","#sigma_{X} vs. #chi^2 for reconstructed tracks;#chi^2;#sigma_{X}, cm", 1e3,0,100,2e1,0,0.2); TH2 *hchi2Erry = new TH2F("hchi2Erry","#sigma_{Y} vs. #chi^2 for reconstructed tracks;#chi^2;#sigma_{X}, cm", 1e3,0,100,2e1,0,0.2); TH2 *hchi2nTrkCand = new TH2F("hchi2nTrkCand"," ;Number of trk-cand;#chi^2", 30,0,30,5e2,0,50.); for (Int_t j=0; jGetEntriesFast(); const int nParticles = true_tracks->GetEntriesFast(); const int numTrk = 2; double chi2Cont[5*numTrk]; double ndiffIDCont[5*numTrk]; if(nParticles!=numTrk) continue; const int nRecHits = rechit_array->GetEntriesFast(); const int nTrkCandidates = trkcand_array->GetEntriesFast(); const int nRecTrks = rec_trk->GetEntriesFast(); hMCtrkvshits->Fill(nRecHits,nParticles); // if(nParticles>0 && nTrkCandidates<1) cout<<"Event #"<numTrk) cout<<"Event #"<Fill(nParticles,nGeaneTrks); hntrkcand->Fill(nTrkCandidates); hntrkcandvsMC->Fill(nParticles,nTrkCandidates); /// Set MC ID for each track ---------------------------------------------------- Int_t nRecGEANEtrk = 0; int MCtrk[numTrk]; for(int nk=0;nk MCtrkID; Int_t diffIDs=1; FairTrackParH *fRes = (FairTrackParH*)geaneArray->At(iN); Double_t lyambda = fRes->GetLambda(); if(lyambda==0){ cout<<"GEANE didn't propagate this trk!"<::iterator it=MCtrkID.begin(); it::iterator it=MCtrkID.begin(); itAt(jk); Int_t mcID = mctrk->GetPdgCode(); if(mcID==-2212){ // if(nParticles!=4) cout<<"For event #"<Divide(2,2); // c1->cd(1); // hnRecnMC->Draw(); // c1->cd(2); // hntrkcand->Draw(); // hntrk->SetLineColor(2); // hntrk->Draw("same"); // c1->cd(3); // hDiffIDs->Draw(); // c1->cd(4); // // hntrkcandvsIDs->Draw(); // hchi2->Draw(); // c1->Write(); // c1->Close(); TCanvas *c1 = new TCanvas("IDsINFO"); c1->Divide(2,2); c1->cd(1); hnRecnMC->Draw("colz"); c1->cd(2); hntrkcand->Draw(); hntrk->SetLineColor(2); hntrk->Draw("same"); c1->cd(3); hDiffIDs->Draw(); c1->cd(4); // hntrkcandvsIDs->Draw("colz"); // hntrkcandvsMC->Draw("colz"); hnhitsvsIDs->Draw("colz"); //hchi2->Draw(); c1->Write(); c1->Close(); TH1F *heffTheta = (TH1F*)hgoodTheta->Clone("heffTheta"); heffTheta->SetTitle("Efficiency vs. #theta"); heffTheta->Divide(hallTheta); TH1F *heffPhi = (TH1F*)hgoodPhi->Clone("heffPhi"); heffPhi->SetTitle("Efficiency vs. #phi"); heffPhi->Divide(hallPhi); TCanvas *c2 = new TCanvas("EffINFO"); c2->Divide(2,2); c2->cd(1); hallTheta->SetLineWidth(2); hallTheta->SetFillStyle(3354); hallTheta->SetFillColor(kBlack); hallTheta->Draw(); hgoodTheta->SetLineWidth(2); hgoodTheta->SetLineColor(2); hgoodTheta->SetFillStyle(3690); hgoodTheta->SetFillColor(kRed); hgoodTheta->Draw("same"); c2->cd(2); heffTheta->SetMinimum(0.9); heffTheta->Draw(); c2->cd(3); hallPhi->SetLineWidth(2); hallPhi->SetFillStyle(3354); hallPhi->SetFillColor(kBlack); hallPhi->Draw(); hgoodPhi->SetLineWidth(2); hgoodPhi->SetLineColor(2); hgoodPhi->SetFillColor(kRed); hgoodPhi->SetFillStyle(3690); hgoodPhi->Draw("same"); c2->cd(4); heffPhi->SetMinimum(0.9); heffPhi->Draw(); c2->Write(); c2->Close(); TF1 *funrp = new TF1("fitrp","gaus",-1e-5,1e-5); funrp->SetParameters(100,0,3e-3); funrp->SetParNames("Constant","Mean","Sigma"); TF1 *funrth = new TF1("fitrth","gaus",-0.01,0.01); funrth->SetParameters(100,0,3e-3); funrth->SetParNames("Constant","Mean","Sigma"); TF1 *funrphi = new TF1("fitrth","gaus",-1,1); funrphi->SetParameters(100,0,3e-3); funrphi->SetParNames("Constant","Mean","Sigma"); TF1 *funp = new TF1("fitp","gaus",-20,20); funp->SetParameters(100,0,3e-3); funp->SetParNames("Constant","Mean","Sigma"); TCanvas *c3 = new TCanvas("ResMomINFO"); c3->Divide(3,3); c3->cd(1); hResMom->Fit(funrp,"r"); hResMom->Draw(); c3->cd(2); hResTheta->Fit(funrth,"r"); hResTheta->Draw(); c3->cd(3); hResPhi->Fit(funrphi,"r"); hResPhi->Draw(); c3->cd(4); // hPullMom->Fit(funp,"r"); hPullMom->Draw(); c3->cd(5); hPullTheta->Fit(funp,"r"); hPullTheta->Draw(); c3->cd(6); hPullPhi->Fit(funp,"r"); hPullPhi->Draw(); c3->cd(7); hErrMom->Draw(); c3->cd(8); hErrTheta->Draw(); c3->cd(9); hErrPhi->Draw(); c3->Write(); c3->Close(); TF1 *funcoord = new TF1("fitcoord","gaus",-0.5,0.5); funrth->SetParameters(1e4,0,1e-1); funrth->SetParNames("Constant","Mean","Sigma"); TF1 *funp = new TF1("fitp","gaus",-10,10); funp->SetParameters(100,0,1); funp->SetParNames("Constant","Mean","Sigma"); TCanvas *c4 = new TCanvas("ResPCAINFO"); c4->Divide(3,3); c4->cd(1); hResPointX->Fit(funcoord,"r"); hResPointX->Draw(); c4->cd(2); hResPointY->Fit(funcoord,"r"); hResPointY->Draw(); c4->cd(3); hResPointZ->Fit(funcoord,"r"); hResPointZ->Draw(); c4->cd(4); hErrPointX->Draw(); c4->cd(5); hErrPointY->Draw(); c4->cd(6); hErrPointZ->Draw(); c4->cd(7); hPullPointX->Fit(funp,"r"); hPullPointX->Draw(); c4->cd(8); hPullPointY->Fit(funp,"r"); hPullPointY->Draw(); c4->cd(9); hPullPointZ->Fit(funp,"r"); hPullPointZ->Draw(); c4->Write(); c4->Close(); TCanvas *c42 = new TCanvas("ResMomPointINFO"); c42->Divide(3,3); c42->cd(1); hResPointPx->Fit(funcoord,"r"); hResPointPx->Draw(); c42->cd(2); hResPointPy->Fit(funcoord,"r"); hResPointPy->Draw(); c42->cd(3); hResPointPz->Fit(funcoord,"r"); hResPointPz->Draw(); c42->cd(4); hErrPointPx->Draw(); c42->cd(5); hErrPointPy->Draw(); c42->cd(6); hErrPointPz->Draw(); c42->cd(7); hPullPointPx->Fit(funp,"r"); hPullPointPx->Draw(); c42->cd(8); hPullPointPy->Fit(funp,"r"); hPullPointPy->Draw(); c42->cd(9); hPullPointPz->Fit(funp,"r"); hPullPointPz->Draw(); c42->Write(); c42->Close(); TCanvas *c41 = new TCanvas("ResLinINFO"); c41->Divide(2,2); c41->cd(1); hErrLinPointX->Draw(); c41->cd(2); hErrLinPointY->Draw(); c41->Write(); c41->Close(); // TCanvas *c5 = new TCanvas("HitIdINFO"); // c5->Divide(1,2); // c5->cd(1); // hHitIDHitX->SetMarkerStyle(24); // hHitIDHitX->Draw(); // c5->cd(2); // hHitIDHitY->SetMarkerStyle(24); // hHitIDHitY->Draw(); // c5->Write(); // c5->Close(); TCanvas *c6 = new TCanvas("VertexINFO"); c6->Divide(2,2); c6->cd(1); hPointXY->Draw(); c6->cd(2); hPointXYcut->Draw(); c6->cd(3); hErrPointXY->Draw(); c6->Write(); c6->Close(); TCanvas *c7 = new TCanvas("GEANEvsRecINFO"); c7->Divide(3,2); c7->cd(1); hRecGEANEX->Draw(); c7->cd(2); hRecGEANEY->Draw(); c7->cd(3); hRecGEANER->Draw(); c7->cd(4); hRecGEANETheta->Draw(); c7->cd(5); hRecGEANEPhi->Draw(); c7->cd(6); hRecThetaPhi->Draw(); c7->Write(); c7->Close(); TCanvas *c8 = new TCanvas("GEANEvsCandINFO"); c8->Divide(3,2); c8->cd(1); hSeedGEANEX->Draw(); c8->cd(2); hSeedGEANEY->Draw(); c8->cd(3); hSeedGEANER->Draw(); c8->cd(4); hSeedGEANETheta->Draw(); TLine *uplim = new TLine(0.05, 0, 0.05, 0.1); TLine *downlim = new TLine(0.03, 0, 0.03, 0.1); uplim->SetLineColor(kRed); downlim->SetLineColor(kRed); uplim->SetLineWidth(2); downlim->SetLineWidth(2); uplim->Draw(); downlim->Draw(); // ---- Count number events in range [3-8] mrad ------------------------ Int_t binx1, binx2; Int_t binmax = hSeedGEANETheta->GetNbinsX(); for(int bin=0;binGetBinCenter(bin); if(binCenter>0.05){ // if(binCenter>5){ binx2 = bin; break; } } for(int bin=0;binGetBinCenter(bin); if(binCenter>0.03){ binx1 = bin; break; } } // cout<<"binmax = "<Divide(3,2); c9->cd(1); hResDCA->Draw(); c9->cd(2); hErrDCA->Draw(); c9->cd(3); hPullDCA->Draw(); c9->Write(); c9->Close(); hangMCRec->Write(); hchi2->Write(); heffTheta->Write(); heffPhi->Write(); hnRecnMC->Write(); hDiffIDs->Write(); hntrkcand->Write(); hntrk->Write(); hntrkcandvsIDs->Write(); hResMom->Write(); hErrMom->Write(); hPullMom->Write(); hResPhi->Write(); hResTheta->Write(); hangMCRec->Write(); hResPointX->Write(); hResPointY->Write(); hResPointZ->Write(); hPointXY->Write(); hPointXYcut->Write(); hSeedGEANEX->Write(); hSeedGEANEY->Write(); hSeedGEANER->Write(); hSeedGEANETheta->Write(); hSeedGEANEPhi->Write(); hSeedThetaPhi->Write(); hchi2Errx->Write(); hchi2Erry->Write(); TCanvas *c10 = new TCanvas("ThetaPhiDistr"); c10->Divide(2,3); c10->cd(1); hSeedThetaDiffIDs->Draw(); c10->cd(2); hSeedPhiDiffIDs->Draw(); c10->cd(3); hMCThetaGEANETheta->Draw(); c10->cd(4); hMCPhiGEANEPhi->Draw(); c10->cd(5); hMCThetaResTheta->Draw(); c10->cd(6); hMCPhiResPhi->Draw(); c10->Write(); c10->Close(); TCanvas *c11 = new TCanvas("HitsUsing"); c11->Divide(2,2); c11->cd(1); hntrkMCtrkID->Draw("colz"); c11->cd(2); hntrkMCtrkID->ProjectionY(); hntrkMCtrkID_py->Draw(); c11->cd(3); hntrkMCtrkID->ProjectionX(); hntrkMCtrkID_px->Draw(); c11->Write(); c11->Close(); hSeedThetaDiffIDs->Write(); hSeedPhiDiffIDs->Write(); hMCThetaGEANETheta->Write(); hMCPhiGEANEPhi->Write(); hMCThetaResTheta->Write(); hMCPhiResPhi->Write(); hDiffIDsPointX->Write(); hDiffIDsPointY->Write(); hDiffIDsPointZ->Write(); hResPointPx->Write(); hErrPointPx->Write(); hPullPointPx->Write(); hResPointPy->Write(); hErrPointPy->Write(); hPullPointPy->Write(); hResPointPz->Write(); hErrPointPz->Write(); hPullPointPz->Write(); hMCtrkvshits->Write(); hntrkMCtrkID->Write(); hchi2nTrkCand->Write(); hgoodPhichi2->Write(); hgoodThetachi2->Write(); hchi2MCdiffID->Write(); f->Close(); }