vis_mc_ids() { gROOT->LoadMacro("$VMCWORKDIR/macro/mvd/Tools.C"); gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C"); gROOT->Macro("~/rootlogon.C"); TTree *sim1, *sim2; TFile *_file0 = TFile::Open("full_emc_test_gamma.root"); sim1=cbmsim; sim1->SetName("sim1"); TChain *abc=new TChain("cbmsim"); abc->Add("sim_emc_test_gamma.root"); abc->AddFriend("sim1"); TClonesArray* mctrack_array=new TClonesArray("PndMCTrack"); abc->SetBranchAddress("MCTrack",&mctrack_array); TClonesArray* hit_array=new TClonesArray("PndEmcHit"); abc->SetBranchAddress("EmcHit",&hit_array); // TClonesArray* digi_array=new TClonesArray("PndEmcDigi"); // abc->SetBranchAddress("EmcDigi",&digi_array); TClonesArray* cluster_array=new TClonesArray("PndEmcCluster"); abc->SetBranchAddress("EmcCluster",&cluster_array); TCanvas* c1 = new TCanvas("c1", "c1", 100, 100, 800, 800); TCanvas* c2 = new TCanvas("c2", "c2", 100, 100, 800, 800); TString bild="bild.ps["; c1->Print(bild); TLatex *lt; lt=new TLatex(); lt->SetTextFont(32); lt->SetTextAlign(22); Int_t ncounts = 10/*abc->GetEntries()*/; for(int k = 0; k < ncounts; k++){ abc->GetEntry(k); c1->Clear(); cout << "Hits: "<SetTextColor(1); lt->SetTextSize(0.015); Int_t nhit = hit_array->GetEntries(); for (Int_t i=0; iAt(i); Double_t x,y; x=hit->GetX(); y=hit->GetY(); TLine *l; Double_t fak; fak=4.1e-3+1.5e-3*hit->GetEnergy(); l=new TLine(x*4e-3+.5,y*4e-3+.5,x*fak+.5,y*fak+.5); l->SetLineWidth(5); l->SetLineColor(6); l->Draw(); TString mctxt; mctxt=""; if( hit->GetMcList().size()==0) cout << "Zero List??"<GetMcList().size(); j++){ Int_t id; id=hit->GetMcList()[j]; propagate_mclist(id, mctrack_array,x,y); if(j!=0) mctxt+=","; add_mccode(mctxt,((PndMCTrack *)mctrack_array->At(id))->GetPdgCode()); } lt->DrawLatex(x*(fak+.8e-3)+.5,y*(fak+.8e-3)+.5,mctxt.Data()); } cout << "Clusters: "<SetTextColor(2); lt->SetTextSize(0.03); Int_t nclu = cluster_array->GetEntries(); for (Int_t i=0; iAt(i); Double_t x,y; x=clu->x(); y=clu->y(); TLine *l; Double_t fak; fak=4.1e-3+1.5e-3*clu->energy(); l=new TLine(x*4e-3+.5,y*4e-3+.5,x*fak+.5,y*fak+.5); l->SetLineWidth(9); l->Draw(); TString mctxt; mctxt=""; if( clu->GetMcList().size()==0) cout << "Zero List??"<GetMcList().size(); j++){ Int_t id; id=clu->GetMcList()[j]; propagate_mclist(id, mctrack_array,x,y); if(j!=0) mctxt+=","; add_mccode(mctxt,((PndMCTrack *)mctrack_array->At(id))->GetPdgCode()); } lt->DrawLatex(x*(fak+.8e-3)+.5,y*(fak+.8e-3)+.5,mctxt.Data()); } c1->Update(); c1->Print(bild); //*** other 2d Plots Double_t fak2=5e-3; Double_t fak3=3e-3; c2->Clear(); c2->Divide(2,2); c2->cd(2); TEllipse *e; e=new TEllipse(+.5,.5,60*fak2); e->SetLineWidth(1); e->SetFillColor(0); e->SetFillStyle(0); e->SetLineColor(7); e->Draw(); c2->cd(3); e=new TEllipse(+.5,.5,60*fak2); e->SetLineWidth(1); e->SetFillColor(0); e->SetFillStyle(0); e->SetLineColor(7); e->Draw(); c2->cd(4); e=new TEllipse(+.5,.5,60*fak2); e->SetLineWidth(1); e->SetFillColor(0); e->SetFillStyle(0); e->SetLineColor(7); e->Draw(); for (Int_t i=0; iAt(i); Double_t x,y,z,phi; x=hit->GetX(); y=hit->GetY(); z=hit->GetZ(); phi=TMath::ATan2(y,x)*TMath::RadToDeg(); Double_t fak; fak=4.1e-3+2.5e-3*hit->GetEnergy(); switch(hit->GetModule()){ case 1: case 2: c2->cd(1); e=new TEllipse(phi*fak3+.5,z*fak3+.5,fak); e->SetLineWidth(1); e->SetFillColor(0); e->SetLineColor(hit->GetModule()+1); e->Draw(); break; case 3: c2->cd(2); e=new TEllipse(x*fak2+.5,y*fak2+.5,fak); e->SetLineWidth(1); e->SetFillColor(0); e->SetLineColor(2); e->Draw(); break; case 4: c2->cd(3); e=new TEllipse(x*fak2+.5,y*fak2+.5,fak); e->SetLineWidth(1); e->SetFillColor(0); e->SetLineColor(2); e->Draw(); break; case 5: /* c2->cd(4); e=new TEllipse(x*fak2+.5,y*fak2+.5,fak); e->SetLineWidth(1); e->SetFillColor(0); e->SetLineColor(2); e->Draw(); */ break; default: break; } c2->cd(4); e=new TEllipse(x*fak2+.5,y*fak2+.5,fak); e->SetLineWidth(1); e->SetFillColor(0); e->SetLineColor(hit->GetModule()+1); e->Draw(); } for (Int_t i=0; iAt(i); Double_t x,y,z,phi; x=clu->x(); y=clu->y(); z=clu->z(); phi=TMath::ATan2(y,x)*TMath::RadToDeg(); Double_t fak; fak=5.e-3+1e-2*clu->energy(); if(x*x+y*y>60*60){ c2->cd(1); e=new TEllipse(phi*fak3+.5,z*fak3+.5,fak); e->SetLineWidth(1); e->SetFillColor(0); e->SetFillStyle(0); e->SetLineColor(1); e->Draw(); }else{ if(z>0){ c2->cd(2); e=new TEllipse(x*fak2+.5,y*fak2+.5,fak); e->SetLineWidth(1); e->SetFillColor(0); e->SetFillStyle(0); e->SetLineColor(1); e->Draw(); }else{ c2->cd(3); e=new TEllipse(x*fak2+.5,y*fak2+.5,fak); e->SetLineWidth(1); e->SetFillColor(0); e->SetFillStyle(0); e->SetLineColor(1); e->Draw(); } } } c2->cd(0); c2->Update(); c2->Print(bild); } } void add_mccode(TString &mctxt,Int_t id) { switch(id) { case 22: mctxt+="#gamma" ; break; case 11: mctxt+="e^{-}" ; break; case -11: mctxt+="e^{+}" ; break; case 13: mctxt+="#mu^{-}" ; break; case -13: mctxt+="#mu^{+}" ; break; case 111: mctxt+="#pi^{0}" ; break; case 211: mctxt+="#pi^{+}" ; break; case -211: mctxt+="#pi^{-}" ; break; case 310: mctxt+="K^{0}_{S}" ; break; case 130: mctxt+="K^{0}_{L}" ; break; case 321: mctxt+="K^{+}" ; break; case -321: mctxt+="K^{-}" ; break; case 12: mctxt+="#nu_{e}"; break; case 14: mctxt+="#nu_{#mu}"; break; case -12: mctxt+="#bar{#nu}_{e}"; break; case -14: mctxt+="#bar{#nu}_{#mu}"; break; case 2112: mctxt+="n" ; break; case 2212: mctxt+="p" ; break; case 3122: mctxt+="#Lambda"; break; case 3124: mctxt+="#Lambda(1520)"; break; case 13122: mctxt+="#Lambda(1405)"; break; case 3222: mctxt+="#Sigma^{+}"; break; case 3224: mctxt+="#Sigma^{*+}"; break; case 3212: mctxt+="#Sigma^{0}"; break; case 3214: mctxt+="#Sigma^{*0}"; break; case 3112: mctxt+="#Sigma^{-}"; break; case 3114: mctxt+="#Sigma^{*-}"; break; case 3312: mctxt+="#Xi^{-}"; break; case 3322: mctxt+="#Xi^{0}"; break; case 3314: mctxt+="#Xi^{*-}"; break; case 3324: mctxt+="#Xi^{*0}"; break; case 3334: mctxt+="#Omega^{-}"; break; case -2112: mctxt+="#bar{n}" ; break; case -2212: mctxt+="#bar{p}" ; break; case -3122: mctxt+="#bar{#Lambda}"; break; case -3124: mctxt+="#bar{#Lambda}(1520)"; break; case -13122: mctxt+="#bar{#Lambda}(1405)"; break; case -3222: mctxt+="#bar{#Sigma}^{-}"; break; case -3224: mctxt+="#bar{#Sigma}^{*-}"; break; case -3212: mctxt+="#bar{#Sigma}^{0}"; break; case -3214: mctxt+="#bar{#Sigma}^{*0}"; break; case -3112: mctxt+="#bar{#Sigma}^{+}"; break; case -3114: mctxt+="#bar{#Sigma}^{*+}"; break; case -3312: mctxt+="#bar{#Xi}^{+}"; break; case -3322: mctxt+="#bar{#Xi}^{0}"; break; case -3314: mctxt+="#bar{#Xi}^{*+}"; break; case -3324: mctxt+="#bar{#Xi}^{*0}"; break; case -3334: mctxt+="#bar{#Omega}^{+}"; break; case 443: mctxt+="J/#Psi"; break; case 100443: mctxt+="#Psi(2S)"; break; case 441: mctxt+="#eta_c(1S)"; break; case 10441: mctxt+="#xi_{c0}(1P)"; break; case 20443: mctxt+="#xi_{c1}(1P)"; break; case 445: mctxt+="#xi_{c2}(1P)"; break; case 100441: mctxt+="#eta_c(2S)"; break; case 10443: mctxt+="h_c(1P)"; break; default: mctxt+="?" ; break; } } void propagate_mclist(Int_t id,TClonesArray * mctrack_array,Double_t x,Double_t y) { PndMCTrack *mct; PndMCTrack *mo; TLine *l; TVector3 v; Double_t x1,y1,x2,y2; if(id<0) return; mct=(PndMCTrack *)mctrack_array->At(id); v=mct->GetStartVertex(); x1=v.x(); y1=v.y(); l=new TLine(x1*4e-3+.5,y1*4e-3+.5,x*4e-3+.5,y*4e-3+.5); l->SetLineWidth(1); l->SetLineColor(3); l->Draw(); Bool_t loop=false; while(mct){ int mid; mid=mct->GetMotherID(); if(mid<0) break; mo=((PndMCTrack *))mctrack_array->At(mid); v=mct->GetStartVertex(); x1=v.x(); y1=v.y(); v=mo->GetStartVertex(); x2=v.x(); y2=v.y(); l=new TLine(x1*4e-3+.5,y1*4e-3+.5,x2*4e-3+.5,y2*4e-3+.5); if(loop){ l->SetLineWidth(1); l->SetLineColor(7); }else{ l->SetLineWidth(3); l->SetLineColor(2); } l->Draw(); mct=mo; loop=true; } }