11 TFile*
f =
new TFile(
"Gem_Test_Smeared.root");
12 TTree *
t=(TTree *) f->Get(
"pndsim") ;
13 TClonesArray*
hit_array=
new TClonesArray(
"PndGemHit");
14 t->SetBranchAddress(
"GEMHit",&hit_array);
16 TFile*
F =
new TFile(
"Gem_Test.root");
17 TTree *
T=(TTree *) F->Get(
"pndsim") ;
18 TClonesArray*
mc_array=
new TClonesArray(
"PndGemMCPoint");
19 T->SetBranchAddress(
"GEMPoint",&mc_array);
21 TH2D*
hisxy =
new TH2D(
"hisxy",
"GEM smeared Hits, xy view",100,-150.,150.,100,-150.,150.);
22 TH2D*
hisrz =
new TH2D(
"hisrz",
"GEM smeared Hits, rz view",100,0.,300.,100,-150.,150.);
25 TH2D*
hisDiffXY =
new TH2D(
"hisdiffxy",
"",100,-rng,rng,100,-rng,rng);
26 hisDiffXY->SetTitle(
"MC - RECO Hit coordinates xy view;#Deltax / cm;#Deltay / cm");
27 TH2D*
hisDiffRZ =
new TH2D(
"hisdiffrz",
"",100,-rng,rng,100,0.,rng);
28 hisDiffRZ->SetTitle(
"MC - RECO Hit coordinates rz view;#Deltaz / cm;#Deltar / cm");
30 TH1D*
hisDiffX =
new TH1D(
"hisdiffx",
"",100,-rng,rng);
31 hisDiffX->SetTitle(
"MC - RECO Hit coordinate x;x / cm;");
32 TH1D*
hisDiffY =
new TH1D(
"hisdiffy",
"",100,-rng,rng);
33 hisDiffY->SetTitle(
"MC - RECO Hit coordinate y;y / cm;");
34 TH1D*
hisDiffZ =
new TH1D(
"hisdiffz",
"",100,-rng,rng);
35 hisDiffZ->SetTitle(
"MC - RECO Hit coordinate z;z / cm;");
39 for (Int_t j=0; j<
nEvents && j<t->GetEntriesFast(); j++)
43 if(
verbose) cout<<
"Event No "<<j<<endl;
44 for (Int_t
i=0;
i<hit_array->GetEntriesFast();
i++)
46 if(
verbose) cout<<
"Point No "<<
i<<endl;
51 vecs.SetXYZ(hit->GetX(), hit->GetY(), hit->GetZ());
52 vecmc.SetXYZ(point->GetX(),point->GetY(),point->GetZ());
54 Int_t
layer = Int_t(10.*vecs.Mag());
55 if(
verbose) cout<<vecs.x()<<
"\t"<<vecs.y()<<
"\t"<<vecs.z()<<endl;
56 hisxy->Fill(vecs.x(),vecs.y());
57 int vz=1;
if(vecs.y()<0) vz=-1;
58 hisrz->Fill(vecs.z(),vz*vecs.Perp());
67 TCanvas*
can1 =
new TCanvas(
"GemTestPlot",
"MCHit view in GEM",0,0,1200,600);
86 TF1 *
g1 =
new TF1(
"g1",
"gaus",-0.07,0.07);
87 TF1 *
g2 =
new TF1(
"g2",
"gaus",-0.3,0.3);
88 TF1 *
total =
new TF1(
"total",
"gaus(0)+gaus(3)",-0.3,0.3);
90 total->SetLineColor(kRed);
91 total->SetLineWidth(1);
96 hisDiffX->Fit(g1,
"R");
97 hisDiffX->Fit(g2,
"R+");
98 g1->GetParameters(&par[0]);
99 g2->GetParameters(&par[3]);
100 total->SetParameters(par);
101 hisDiffX->Fit(total,
"R");
102 hisDiffX->DrawCopy(
"");
105 hisDiffY->Fit(g1,
"R");
106 hisDiffY->Fit(g2,
"R+");
107 g1->GetParameters(&par[0]);
108 g2->GetParameters(&par[3]);
109 total->SetParameters(par);
110 hisDiffY->Fit(total,
"R");
111 hisDiffY->DrawCopy(
"");
114 hisDiffZ->Fit(g1,
"R");
115 hisDiffZ->Fit(g2,
"R+");
116 g1->GetParameters(&par[0]);
117 g2->GetParameters(&par[3]);
118 total->SetParameters(par);
119 hisDiffZ->Fit(total,
"R");
120 hisDiffZ->DrawCopy(
"");
138 cout << endl << endl;
139 cout <<
"Macro finished succesfully." << endl;
140 cout <<
"Real time " << rtime <<
" s, CPU time " << ctime <<
" s" << endl;
int anaGemSmearing(int nEvents=10, bool verbose=false)