FairRoot/PandaRoot
anal_point_fwendcap.C
Go to the documentation of this file.
1 {
2  // Macro loads a file after reconstruction and plots difference between initial direction of particle and angular position of cluster
3  //gROOT->Macro("style.C");
4  gROOT->LoadMacro("$VMCWORKDIR/macro/mvd/Tools.C");
5  gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
6 
7  //TFile* fsim = new TFile("data/sim_emc_g4_new_geom_m3.root"); // (GEANT 3) 29.06.09
8  TFile* fsim = new TFile("data/fixed/sim_emc_g3_m3_1000eve_fixed.root"); // (GEANT 4) 1.07.09
9 
10  TTree *tsim=(TTree *) fsim->Get("pndsim") ;
11  TClonesArray* mctrack_array=new TClonesArray("PndMCTrack");
12  tsim->SetBranchAddress("MCTrack",&mctrack_array);
13 
14  // -----Point -----
15  TClonesArray* point_array=new TClonesArray("PndEmcPoint");
16  tsim->SetBranchAddress("EmcPoint",&point_array);
18 
19 
25  hit_id, hit_x, hit_y;
26  Double_t z_cp1_p, z_cp2_p, z_cp3_p, z_cp4_p; // Z position for 4 copies of fwendcap
27  Int_t id_p;
28 
29  TVector3 photon_momentum;
30  TLorentzVector phot;
31 
32  int ndigi, npoint;
33  double max_energy1=0;
34 
35  //----- x, y, z, id
36  TH2F *hrow_crystal_p = new TH2F("row_crystal","row vs crystal (POINT)",72,-36,36,72,-36,36);
37  TH2F *hx_y_p = new TH2F("x_y_p","x vs y (POINT)",200,-100,100,200,-100,100);
38  TH1F *hid_p = new TH1F("id_p","id (POINT)",140000000,300000000,340000000);
39  TH1F *hx_p = new TH1F("x_p","X (POINT)",100,-100,100);
40  TH1F *hy_p = new TH1F("y_p","Y (POINT)",100,-100,100);
41  TH1F *hz_p = new TH1F("z_p","Z (POINT)",100,200,300);
42  TH1F *hmodule_p = new TH1F("module_p","Module (POINT)",5,1,6);
43 
44  TH2F *hcp_z_p = new TH2F("cp_z_p","Copy vs.Z pos (POINT)",4,1,5,80,200,240);
45  TH1F *hz_cp1_p = new TH1F("z_cp1_p","z (POINT)",300,1,300);
46  TH1F *hz_cp2_p = new TH1F("z_cp2_p","z (POINT)",300,1,300);
47  TH1F *hz_cp3_p = new TH1F("z_cp3_p","z (POINT)",300,1,300);
48  TH1F *hz_cp4_p = new TH1F("z_cp4_p","z (POINT)",300,1,300);
49 
50  TH2F *hxpad_x_p = new TH2F("xpad_x_p","x vs xpad (POINT)",200,-100,100,200,-100,100);
51  TH2F *hypad_y_p = new TH2F("ypad_y_p","y vs ypad (POINT)",200,-100,100,200,-100,100);
52 
53  TH2F *hxpad_x_cp1_p = new TH2F("xpad_x_cp1_p","x vs xpad _cp1_ (POINT)",200,-100,100,200,-100,100);
54  TH2F *hxpad_x_cp2_p = new TH2F("xpad_x_cp2_p","x vs xpad _cp2_ (POINT)",200,-100,100,200,-100,100);
55  TH2F *hxpad_x_cp3_p = new TH2F("xpad_x_cp3_p","x vs xpad _cp3_ (POINT)",200,-100,100,200,-100,100);
56  TH2F *hxpad_x_cp4_p = new TH2F("xpad_x_cp4_p","x vs xpad _cp4_ (POINT)",200,-100,100,200,-100,100);
57 
58  TH2F *hypad_y_cp1_p = new TH2F("ypad_y_cp1_p","y vs ypad _cp1_ (POINT)",200,-100,100,200,-100,100);
59  TH2F *hypad_y_cp2_p = new TH2F("ypad_y_cp2_p","y vs ypad _cp2_ (POINT)",200,-100,100,200,-100,100);
60  TH2F *hypad_y_cp3_p = new TH2F("ypad_y_cp3_p","y vs ypad _cp3_ (POINT)",200,-100,100,200,-100,100);
61  TH2F *hypad_y_cp4_p = new TH2F("ypad_y_cp4_p","y vs ypad _cp4_ (POINT)",200,-100,100,200,-100,100);
62 
63  //--------- Energy: HITS & DIGITS ----------------------------------------------------------
64  TH1F *hene_mc= new TH1F("hene_mc","MC energy (GeV)",100,0.0,1.05);
65 
66  TH1F *hene_p= new TH1F("hene_p","DATA energy (GeV)",1000,0.0,0.1);
67 
68  TH1F *hpoi_ene= new TH1F("hpoi_ene","SUM of Points energy (GeV)",100,0.0,1.05);
69  TH1F *hhit_ene= new TH1F("hhit_ene","SUM of Hits energy (GeV)",100,0.0,1.05);
70 
71  //--------- Theta & Phi (reconstructed & truth): CLUSTER -----------------------------------
72  TH1F *h10= new TH1F("h10","POINT Theta (MC)",180,0.,180.);
73  TH1F *h20= new TH1F("h20","POINT Phi (MC)",360,-180.,180.);
74  TH1F *h10d= new TH1F("h10d","POINT Theta (data)",180,0.,180.);
75  TH1F *h20d= new TH1F("h20d","POINT Phi (data)",360,-180.,180.);
76 
77  TH1F *h1= new TH1F("h1","POINT Theta difference",100,-5.,5.);
78  TH1F *h2= new TH1F("h2","POINT Phi difference",100,-5.,5.);
79 
80  TH1F *h1a= new TH1F("h1a","POINT Theta difference -changed id ",100,-5.,5.);
81  TH1F *h2a= new TH1F("h2a","POINT Phi difference - changed id",100,-5.,5.);
82 
83  TH1F *h3= new TH1F("h3","HIT Theta difference",100,-5.,5.);
84  TH1F *h4= new TH1F("h4","HIT Phi difference",100,-5.,5.);
85 
86  TH1F *h3a= new TH1F("h3a","HIT Theta difference -changed id",100,-5.,5.);
87  TH1F *h4a= new TH1F("h4a","HIT Phi difference -changed id",100,-5.,5.);
88 
89 
90  cout << "POINTs for new FwEndCap == " << tsim->GetEntriesFast()<< endl;
91 
92  Int_t ncounts = tsim->GetEntriesFast();
93  cout << "No of events == " << ncounts<< endl;
94  for(int j = 0; j < ncounts; j++){
95  //for (Int_t j=1;j< 20; j++) {
96  Float_t sum_point_ene=0;
97  tsim->GetEntry(j);
98 
99  PndMCTrack *mctrack=(PndMCTrack *) mctrack_array->At(0); // 1st element in mctrack_array
100  photon_momentum=mctrack->GetMomentum();
101  theta_mc=photon_momentum.Theta()*(180./TMath::Pi());
102  phi_mc=photon_momentum.Phi()*(180./TMath::Pi());//+360.;
103  //phot=mctrack->Get4Momentum();
104 
105  Int_t npoints = point_array->GetEntries();
106  cout << "POINT array == " << npoints<< endl;
107  for (Int_t i=0; i<npoints; i++)
108  {
109  PndEmcPoint *point=(PndEmcPoint*)point_array->At(i);
110 
111  module_p = point->GetModule();
112 
113  if (module_p==3){
114  //hene_mc->Fill(phot.E());
115 
116  point_ene=point->GetEnergyLoss();
117  hene_p->Fill(point_ene);
118 
119  sum_point_ene+=point_ene;
120 
121  TVector3 point_pos(point->GetX(),point->GetY(),point->GetZ());
122  point_theta=point_pos.Theta()*(180./TMath::Pi());
123  point_phi=point_pos.Phi()*(180./TMath::Pi());//+360.;
124 
125 
126  h10->Fill(theta_mc);
127  h20->Fill(phi_mc);
128 
129  h10d->Fill(point_theta);
130  h20d->Fill(point_phi);
131 
132  h1->Fill(point_theta-theta_mc);
133  h2->Fill(point_phi-phi_mc);
134 
135  crystal_p = point->GetCrystal();
136  row_p = point->GetRow();
137  copy_p = point->GetCopy();
138 
139  x_p = point->GetX();
140  y_p = point->GetY();
141  z_p = point->GetZ();
142 
143  hz_p->Fill(z_p);
144  if (copy_p==1) hz_cp1_p->Fill(z_p);
145  if (copy_p==2) hz_cp2_p->Fill(z_p);
146  if (copy_p==3) hz_cp3_p->Fill(z_p);
147  if (copy_p==4) hz_cp4_p->Fill(z_p);
148 
149  hxpad_x_p->Fill(point->GetXPad(),x_p);
150  hypad_y_p->Fill(point->GetYPad(),y_p);
151 
152  if (copy_p==1){
153  hxpad_x_cp1_p->Fill(point->GetXPad(),x_p);
154  hypad_y_cp1_p->Fill(point->GetYPad(),y_p);
155  }
156  if (copy_p==2){
157  hxpad_x_cp2_p->Fill(point->GetXPad(),x_p);
158  hypad_y_cp2_p->Fill(point->GetYPad(),y_p);
159  }
160  if (copy_p==3){
161  hxpad_x_cp3_p->Fill(point->GetXPad(),x_p);
162  hypad_y_cp3_p->Fill(point->GetYPad(),y_p);
163  }
164  if (copy_p==4){
165  hxpad_x_cp4_p->Fill(point->GetXPad(),x_p);
166  hypad_y_cp4_p->Fill(point->GetYPad(),y_p);
167  }
168 
169  id_p = point->GetDetectorID();
170 
171  crystal_pid = (id_p%10000);
172  row_pid = ((id_p/1000000)%100);
173 
174  hmodule_p->Fill(module_p);
175  hcp_z_p->Fill(copy_p,z_p);
176  hrow_crystal_p->Fill(crystal_pid,row_pid);
177  hx_p->Fill(x_p);
178  hy_p->Fill(y_p);
179  hx_y_p->Fill(x_p,y_p);
180  hid_p->Fill(id_p);
181  }
182  }
183  hpoi_ene->Fill(sum_point_ene);
184  }
185 
186  TCanvas* c1 = new TCanvas("c1", "", 100, 100, 800, 800);
187  c1->Divide(3,3);
188 
189  gStyle->SetPalette(1);
190 
191  c1->cd(1);
192  hrow_crystal_p->Draw("colz");
193  hrow_crystal_p->GetXaxis()->SetTitle("crystal number");
194  hrow_crystal_p->GetYaxis()->SetTitle("row number");
195 
196  c1->cd(2);
197  hx_y_p->Draw("colz");
198  hx_y_p->GetXaxis()->SetTitle("X position");
199  hx_y_p->GetYaxis()->SetTitle("Y position");
200 
201  c1->cd(3); // Z position in 4 quarters of fwendcap (POINTS)
202  TLegend *copies = new TLegend(0.60,0.50,0.85,0.85);
203  copies->SetTextSize(0.05);
204  copies->SetFillColor(0);
205  copies->SetBorderSize(0);
206  copies->AddEntry(hz_p, "All copies","l");
207  copies->AddEntry(hz_cp1_p, "copy_1","l");
208  copies->AddEntry(hz_cp2_p, "copy_2","l");
209  copies->AddEntry(hz_cp3_p, "copy_3","l");
210  copies->AddEntry(hz_cp4_p, "copy_4","l");
211 
212  hz_p->Draw(); // all quarters (copies) together
213 
214  hz_cp1_p->SetLineColor(2);
215  hz_cp1_p->Draw("same");
216 
217  hz_cp2_p->SetLineColor(3);
218  hz_cp2_p->Draw("same");
219 
220  hz_cp3_p->SetLineColor(4);
221  hz_cp3_p->Draw("same");
222 
223  hz_cp4_p->SetLineColor(6);
224  hz_cp4_p->Draw("same");
225 
226  hz_p->GetXaxis()->SetTitle("Z position");
227  hz_p->GetYaxis()->SetTitle("Counts");
228 
229  copies->Draw();
230 
231  c1->Modified();
232 
233 
234  c1->cd(4);
235  h10->SetLineColor(4); // theta MC (POINTS)
236  h10->Draw();
237  h10d->SetLineColor(1); // theta DATA (POINTS)
238  h10d->Draw("same");
239  h10->GetXaxis()->SetTitle("#theta (deg)");
240 
241  c1->cd(5);
242  h20->SetLineColor(4); // phi MC (POINTS)
243  h20->Draw();
244  h20d->SetLineColor(1); //phi DATA (POINTS)
245  h20d->Draw("same");
246  h20->GetXaxis()->SetTitle("#phi (deg)");
247 
248  c1->cd(6);
249  hxpad_x_p->Draw("colz");
250  hxpad_x_p->GetXaxis()->SetTitle("EmcPoint::GetXPad()");
251  hxpad_x_p->GetYaxis()->SetTitle("EmcPoint::GetX()");
252 
253 
254  c1->cd(7);
255  h1->Draw(); // point_theta-theta_monte_carlo
256  h1->GetXaxis()->SetTitle("#theta_{POINT}-#theta_{MC}");
257  h1->GetYaxis()->SetTitle("Counts");
258 
259  c1->cd(8);
260  h2->Draw(); // point_phi-phi_monte_carlo
261  h2->GetXaxis()->SetTitle("#phi_{POINT}-#phi_{MC}");
262  h2->GetYaxis()->SetTitle("Counts");
263 
264  c1->cd(9);
265  hypad_y_p->Draw("colz");
266  hypad_y_p->GetXaxis()->SetTitle("EmcPoint::GetYPad()");
267  hypad_y_p->GetYaxis()->SetTitle("EmcPoint::GetY()");
268 
269  TCanvas* c2 = new TCanvas("c2", "", 100, 100, 800, 800);
270  c2->Divide(3,3);
271 
272  gStyle->SetPalette(1);
273 
274  c2->cd(1);
275  hpoi_ene->SetLineColor(1);
276  hpoi_ene->Draw();
277  hpoi_ene->GetXaxis()->SetTitle("Energy (GeV)");
278 
279  c2->cd(2);
280  hcp_z_p->Draw("colz");
281 
282  c2->cd(4);
283  hx_p->SetLineColor(1);
284  hx_p->Draw();
285  hx_p->GetXaxis()->SetTitle("X position (cm)");
286 
287  c2->cd(5);
288  hy_p->SetLineColor(1);
289  hy_p->Draw();
290  hy_p->GetXaxis()->SetTitle("Y position (cm)");
291 
292  c2->Update();
293 
294  TCanvas* c3a = new TCanvas("c3a", "", 100, 100, 800, 800);
295  c3a->Divide(2,2);
296 
297  gStyle->SetPalette(1);
298 
299  c3a->cd(1);
300  hxpad_x_cp1_p->Draw("colz");
301  hxpad_x_cp1_p->GetXaxis()->SetTitle("EmcPoint::GetXPad() copy =1");
302  hxpad_x_cp1_p->GetYaxis()->SetTitle("EmcPoint::GetX()");
303 
304  c3a->cd(2);
305  hxpad_x_cp2_p->Draw("colz");
306  hxpad_x_cp2_p->GetXaxis()->SetTitle("EmcPoint::GetXPad() copy =2");
307  hxpad_x_cp2_p->GetYaxis()->SetTitle("EmcPoint::GetX()");
308 
309  c3a->cd(3);
310  hxpad_x_cp3_p->Draw("colz");
311  hxpad_x_cp3_p->GetXaxis()->SetTitle("EmcPoint::GetXPad() copy =3");
312  hxpad_x_cp3_p->GetYaxis()->SetTitle("EmcPoint::GetX()");
313 
314  c3a->cd(4);
315  hxpad_x_cp4_p->Draw("colz");
316  hxpad_x_cp4_p->GetXaxis()->SetTitle("EmcPoint::GetXPad() copy =4");
317  hxpad_x_cp4_p->GetYaxis()->SetTitle("EmcPoint::GetX()");
318 
319  TCanvas* c3b = new TCanvas("c3b", "", 100, 100, 800, 800);
320  c3b->Divide(2,2);
321 
322  gStyle->SetPalette(1);
323 
324  c3b->cd(1);
325  hypad_y_cp1_p->Draw("colz");
326  hypad_y_cp1_p->GetXaxis()->SetTitle("EmcPoint::GetYPad() copy =1");
327  hypad_y_cp1_p->GetYaxis()->SetTitle("EmcPoint::GetY()");
328 
329  c3b->cd(2);
330  hypad_y_cp2_p->Draw("colz");
331  hypad_y_cp2_p->GetXaxis()->SetTitle("EmcPoint::GetYPad() copy =2");
332  hypad_y_cp2_p->GetYaxis()->SetTitle("EmcPoint::GetY()");
333 
334  c3b->cd(3);
335  hypad_y_cp3_p->Draw("colz");
336  hypad_y_cp3_p->GetXaxis()->SetTitle("EmcPoint::GetYPad() copy =3");
337  hypad_y_cp3_p->GetYaxis()->SetTitle("EmcPoint::GetY()");
338 
339  c3b->cd(4);
340  hypad_y_cp4_p->Draw("colz");
341  hypad_y_cp4_p->GetXaxis()->SetTitle("EmcPoint::GetYPad() copy =4");
342  hypad_y_cp4_p->GetYaxis()->SetTitle("EmcPoint::GetY()");
343 }
PndMCTrack * mctrack
represents a mc hit in an emc crystal
Definition: PndEmcPoint.h:19
TH1F * h4a
TClonesArray * point_array
TH1F * hhit_ene
Double_t z_cp4_p
Double_t z_p
TH1F * h1a
TCanvas * c3a
TLorentzVector phot
TH2F * hypad_y_cp4_p
TH1F * hz_cp3_p
PndEmcMapper * emcMap
Short_t GetModule() const
Definition: PndEmcPoint.h:60
Double_t point_phi
Int_t i
Definition: run_full.C:25
Short_t GetYPad() const
TCanvas * c3b
TH1F * h2a
TH2F * hypad_y_p
TH2F * hxpad_x_cp3_p
TH1F * h4
TH1F * h2
TH1F * h1
Double_t z_cp3_p
TH2F * hxpad_x_cp4_p
Double_t phi_mc
TVector3 GetMomentum() const
Definition: PndMCTrack.h:78
TH1F * hy_p
TH1F * h3a
Int_t id_p
Double_t x_p
TTree * tsim
TLegend * copies
Emc geometry mapper.
Definition: PndEmcMapper.h:22
TH1F * hpoi_ene
double max_energy1
TH1F * hz_cp4_p
TH2F * hypad_y_cp3_p
TH1F * hz_cp2_p
TCanvas * c1
TH1F * hene_p
Double_t hit_theta
TVector3 photon_momentum
Double_t crystal_pid
Short_t GetRow() const
Definition: PndEmcPoint.h:61
int npoint
Double_t
Double_t ene_mc
Double_t hit_id
TClonesArray * mctrack_array
TClonesArray * point
Definition: anaLmdDigi.C:29
Double_t z_cp2_p
Short_t GetCrystal() const
Definition: PndEmcPoint.h:62
Double_t z_cp1_p
TH1F * h20
Short_t GetXPad() const
Definition: PndEmcPoint.cxx:72
int ndigi
TH1F * h3
Double_t point_ene
TH2F * hxpad_x_cp2_p
Double_t row_p
TH1F * hz_p
TH1F * hx_p
TH2F * hxpad_x_cp1_p
Double_t theta_mc
Double_t hit_ene
Double_t hit_y
TH2F * hrow_crystal_p
Double_t copy_p
Double_t crystal_p
TH1F * h10d
Double_t y_p
TH1F * h10
Double_t point_theta
Double_t row_pid
TH2F * hxpad_x_p
Double_t hit_phi
TCanvas * c2
TFile * fsim
TH2F * hx_y_p
Short_t GetCopy() const
Definition: PndEmcPoint.h:63
TH2F * hypad_y_cp2_p
Double_t Pi
Double_t hit_x
TH1F * hz_cp1_p
TH1F * h20d
static PndEmcMapper * Instance()
TH2F * hypad_y_cp1_p
TH2F * hcp_z_p
TH1F * hene_mc
Double_t module_p
TH1F * hmodule_p
TH1F * hid_p