FairRoot/PandaRoot
Functions
vis_mc_ids.C File Reference

Go to the source code of this file.

Functions

 vis_mc_ids ()
 
void add_mccode (TString &mctxt, Int_t id)
 
void propagate_mclist (Int_t id, TClonesArray *mctrack_array, Double_t x, Double_t y)
 

Function Documentation

void add_mccode ( TString mctxt,
Int_t  id 
)

Definition at line 115 of file vis_mc_ids.C.

Referenced by propagate_mclist(), and vis_mc_ids().

116 {
117  switch(id)
118  {
119  case 22: mctxt+="#gamma" ; break;
120  case 11: mctxt+="e^{-}" ; break;
121  case -11: mctxt+="e^{+}" ; break;
122  case 13: mctxt+="#mu^{-}" ; break;
123  case -13: mctxt+="#mu^{+}" ; break;
124  case 111: mctxt+="#pi^{0}" ; break;
125  case 211: mctxt+="#pi^{+}" ; break;
126  case -211: mctxt+="#pi^{-}" ; break;
127  case 2112: mctxt+="n" ; break;
128  case 2212: mctxt+="p" ; break;
129  case 310: mctxt+="K^{0}_{S}" ; break;
130  case 130: mctxt+="K^{0}_{L}" ; break;
131  case 321: mctxt+="K^{+}" ; break;
132  case -321: mctxt+="K^{-}" ; break;
133  default: mctxt+="?" ; break;
134  }
135 }
void propagate_mclist ( Int_t  id,
TClonesArray *  mctrack_array,
Double_t  x,
Double_t  y 
)

Definition at line 138 of file vis_mc_ids.C.

References Bool_t, Double_t, PndMCTrack::GetMotherID(), PndMCTrack::GetStartVertex(), mct, and v.

Referenced by propagate_mclist(), QAmacro_evtgen_3(), QAmacro_evtgen_4(), and vis_mc_ids().

139 {
140  PndMCTrack *mct;
141  PndMCTrack *mo;
142  TLine *l;
143  TVector3 v;
144  Double_t x1,y1,x2,y2;
145 
146  if(id<0) return;
147  mct=(PndMCTrack *)mctrack_array->At(id);
148  v=mct->GetStartVertex();
149  x1=v.x();
150  y1=v.y();
151 
152  l=new TLine(x1*4e-3+.5,y1*4e-3+.5,x*4e-3+.5,y*4e-3+.5);
153  l->SetLineWidth(1);
154  l->SetLineColor(3);
155  l->Draw();
156 
157  Bool_t loop=false;
158  while(mct){
159  int mid;
160  mid=mct->GetMotherID();
161  if(mid<0) break;
162  mo=((PndMCTrack *))mctrack_array->At(mid);
163 
164  v=mct->GetStartVertex();
165  x1=v.x();
166  y1=v.y();
167  v=mo->GetStartVertex();
168  x2=v.x();
169  y2=v.y();
170 
171  l=new TLine(x1*4e-3+.5,y1*4e-3+.5,x2*4e-3+.5,y2*4e-3+.5);
172  if(loop){
173  l->SetLineWidth(1);
174  l->SetLineColor(7);
175  }else{
176  l->SetLineWidth(3);
177  l->SetLineColor(2);
178  }
179  l->Draw();
180 
181  mct=mo;
182  loop=true;
183  }
184 }
__m128 v
Definition: P4_F32vec4.h:4
Double_t
Double_t x
Double_t y
TVector3 GetStartVertex() const
Definition: PndMCTrack.h:76
TClonesArray * mctrack_array
Int_t GetMotherID() const
Definition: PndMCTrack.h:74
PndMCTrack * mct
Definition: hist-t7.C:147
vis_mc_ids ( )

Definition at line 3 of file vis_mc_ids.C.

References add_mccode(), c1, cluster_array, Double_t, PndEmcCluster::energy(), PndEmcHit::GetEnergy(), PndEmcCluster::GetEnergyCorrected(), PndEmcHit::GetMcList(), PndEmcCluster::GetMcList(), hit, hit_array, i, mctrack_array, ncounts, nhit, propagate_mclist(), TString, PndEmcCluster::x(), x, PndEmcCluster::y(), and y.

4 {
5  gROOT->LoadMacro("$VMCWORKDIR/macro/mvd/Tools.C");
6  gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
7  gROOT->Macro("~/rootlogon.C");
8 
9 // TTree *sim1, *sim2;
10 // TFile *_file0 = TFile::Open("full_emc_test_gamma.root");
11 // sim1=pndsim;
12 // sim1->SetName("sim1");
13  TChain *abc=new TChain("pndsim");
14  abc->Add("emc_complete.root");
15 // abc->Add("sim_emc_test_gamma.root");
16 // abc->AddFriend("sim1");
17 
18  TClonesArray* mctrack_array=new TClonesArray("PndMCTrack");
19  abc->SetBranchAddress("MCTrack",&mctrack_array);
20 
21  TClonesArray* hit_array=new TClonesArray("PndEmcHit");
22  abc->SetBranchAddress("EmcHit",&hit_array);
23 
24 // TClonesArray* digi_array=new TClonesArray("PndEmcDigi");
25 // abc->SetBranchAddress("EmcDigi",&digi_array);
26 
27  TClonesArray* cluster_array=new TClonesArray("PndEmcCluster");
28  abc->SetBranchAddress("EmcCluster",&cluster_array);
29 
30  TCanvas* c1 = new TCanvas("c1", "c1", 100, 100, 800, 800);
31  TLatex *lt;
32  lt=new TLatex();
33  lt->SetTextFont(32);
34  lt->SetTextAlign(22);
35 
36  Int_t ncounts = abc->GetEntries();
37  for(int k = 0; k < ncounts; k++){
38  abc->GetEntry(k);
39  c1->Clear();
40 
41  cout << "Hits: "<<endl;
42  lt->SetTextColor(1);
43  lt->SetTextSize(0.015);
44  Int_t nhit = hit_array->GetEntries();
45  for (Int_t i=0; i<nhit; i++)
46  {
47  PndEmcHit *hit;
48  hit=(PndEmcHit*)hit_array->At(i);
49 // cout <<"Hit "<<i<<" energy: "<<hit->GetEnergy()<<endl;
50  Double_t x,y;
51  x=hit->GetX();
52  y=hit->GetY();
53  TLine *l;
54  Double_t fak;
55  fak=4.1e-3+1.5e-3*hit->GetEnergy();
56  l=new TLine(x*4e-3+.5,y*4e-3+.5,x*fak+.5,y*fak+.5);
57  l->SetLineWidth(5);
58  l->SetLineColor(6);
59  l->Draw();
60 
61  TString mctxt;
62  mctxt="";
63  if( hit->GetMcList().size()==0) cout << "Zero List??"<<endl;
64  for(Int_t j=0; j<hit->GetMcList().size(); j++){
65  Int_t id;
66  id=hit->GetMcList()[j];
67  propagate_mclist(id, mctrack_array,x,y);
68  if(j!=0) mctxt+=",";
69  add_mccode(mctxt,((PndMCTrack *)mctrack_array->At(id))->GetPdgCode());
70 // cout <<"MCIndex: "<<id<<": "<<((PndMCTrack *)mctrack_array->At(id))->Get4Momentum().E()<<endl;
71  }
72 
73  lt->DrawLatex(x*(fak+.8e-3)+.5,y*(fak+.8e-3)+.5,mctxt.Data());
74  }
75 
76  cout << "Clusters: "<<endl;
77  lt->SetTextColor(2);
78  lt->SetTextSize(0.03);
79  Int_t nclu = cluster_array->GetEntries();
80  for (Int_t i=0; i<nclu; i++)
81  {
82  PndEmcCluster *clu;
83  clu=(PndEmcCluster*)cluster_array->At(i);
84  cout <<"Cluster "<<i<<" energy: "<<clu->energy()<< " , "<< clu->GetEnergyCorrected()<<endl;
85  Double_t x,y;
86  x=clu->x();
87  y=clu->y();
88  TLine *l;
89  Double_t fak;
90  fak=4.1e-3+1.5e-3*clu->energy();
91  l=new TLine(x*4e-3+.5,y*4e-3+.5,x*fak+.5,y*fak+.5);
92  l->SetLineWidth(9);
93  l->Draw();
94 
95  TString mctxt;
96  mctxt="";
97  if( clu->GetMcList().size()==0) cout << "Zero List??"<<endl;
98  for(Int_t j=0; j<clu->GetMcList().size(); j++){
99  Int_t id;
100  id=clu->GetMcList()[j];
101  propagate_mclist(id, mctrack_array,x,y);
102  if(j!=0) mctxt+=",";
103  add_mccode(mctxt,((PndMCTrack *)mctrack_array->At(id))->GetPdgCode());
104  cout <<"MCIndex: "<<id<<": "<<((PndMCTrack *)mctrack_array->At(id))->Get4Momentum().E()<<endl;
105  }
106  lt->DrawLatex(x*(fak+.8e-3)+.5,y*(fak+.8e-3)+.5,mctxt.Data());
107  }
108 
109 
110  TString bild="bild.ps[";
111  c1->Print(bild);
112  }
113 }
Int_t i
Definition: run_full.C:25
void add_mccode(TString &mctxt, Int_t id)
Definition: vis_mc_ids.C:115
const std::vector< Int_t > & GetMcList() const
TClonesArray * hit_array
const std::vector< Int_t > & GetMcList()
Definition: PndEmcHit.h:69
TClonesArray * cluster_array
Double_t
virtual Double_t GetEnergy() const
Definition: PndEmcHit.h:54
Double_t x() const
a cluster (group of neighboring crystals) of hit emc crystals
Definition: PndEmcCluster.h:29
c1
Definition: plot_dirc.C:35
represents the deposited energy of one emc crystal from simulation
Definition: PndEmcHit.h:26
Double_t x
Double_t GetEnergyCorrected() const
virtual Double_t energy() const
PndSdsMCPoint * hit
Definition: anasim.C:70
Double_t y
TClonesArray * mctrack_array
Double_t y() const
void propagate_mclist(Int_t id, TClonesArray *mctrack_array, Double_t x, Double_t y)
Definition: vis_mc_ids.C:138