17 gROOT->Macro(
"$VMCWORKDIR/gconfig/rootlogon.C");
24 TFile*
f =
new TFile(
"/private/huagen/simdata/Lmd_Reco_DPM_elastic_6.2_1.9mrad_5M_2.root");
26 TTree *
t=(TTree *) f->Get(
"pndsim") ;
27 TClonesArray*
hit_array=
new TClonesArray(
"PndSdsHit");
28 t->SetBranchAddress(
"LMDHitsStrip",&hit_array);
31 TFile*
F =
new TFile(
"/private/huagen/simdata/Lmd_DPM_elastic_6.2_1.9mrad_5M_2.root");
32 TTree *
T=(TTree *) F->Get(
"pndsim") ;
33 TClonesArray*
mc_array=
new TClonesArray(
"PndSdsMCPoint");
34 T->SetBranchAddress(
"LMDPoint",&mc_array);
41 TH3F *
h2 =
new TH3F(
"c2",
"Reconstructed Points", 200, -10, 10, 100, -10, 10, 100, 1070,1150);
42 h2->SetFillColor(kRed);
43 TH3F *
h3 =
new TH3F(
"c3",
"MC Points", 200, -10, 10, 100, -10, 10, 100, 1070,1150);
44 h3->SetFillColor(kRed);
46 TH2D*
hisxy =
new TH2D(
"hisxy",
"",200,-10.,10.,200,-10.,10.);
47 hisxy->SetTitle(
"LMD Reconstructed points, xy view;x / cm;y / cm");
48 TH2D*
hisrz =
new TH2D(
"hisrz",
"",800,1070.,1150.,100,-10.,10.);
49 hisrz->SetTitle(
"LMD Reconstructed points, rz view;z / cm;r/ cm");
52 TH2D*
mchisxy =
new TH2D(
"mchisxy",
"",200,-10.,10.,200,-10.,10.);
53 mchisxy->SetTitle(
"LMD MC points, xy view;x / cm;y / cm");
54 TH2D*
mchisrz =
new TH2D(
"mchisrz",
"",800,1070.,1150.,100,-10.,10.);
55 mchisrz->SetTitle(
"LMD MC points, rz view;z / cm;r/ cm");
57 TH2D*
hisDiffXY =
new TH2D(
"hisdiffxy",
"",100,-0.05,0.05,100,-0.05,0.05);
58 hisDiffXY->SetTitle(
"MC - RECO Hit coordinates xy view;#Deltax / cm;#Deltay / cm");
59 TH2D*
hisDiffRZ =
new TH2D(
"hisdiffrz",
"",100,-0.1.,0.1.,100,-0.05,0.05);
60 hisDiffRZ->SetTitle(
"MC - RECO Hit coordinates rz view;#Deltaz / cm;#Deltar / cm");
62 TH1F*
hisDiffX =
new TH1F(
"hisdiffx",
"",400,-0.02.,0.02.);
63 hisDiffX->SetTitle(
"MC - RECO Hit coordinate x;x / cm;");
64 TH1F*
hisDiffY =
new TH1F(
"hisdiffy",
"",400,-0.02.,0.02);
65 hisDiffY->SetTitle(
"MC - RECO Hit coordinate y;y / cm;");
66 TH1F*
hisDiffZ =
new TH1F(
"hisdiffz",
"",400,-0.02,0.02);
67 hisDiffZ->SetTitle(
"MC - RECO Hit coordinate z;z / cm;");
69 TH1D*
RecoCharge =
new TH1D(
"RecoCharge",
"",200,0.,1000);
70 TH1D*
DigiCharge =
new TH1D(
"DigiCharge",
"",200,0.,1000);
71 TH1D*
MCCharge =
new TH1D(
"MCCharge",
"",200,0.,1000);
79 for (Int_t j=0; j<t->GetEntriesFast(); j++)
86 cout<<
"**************Event No************ "<<j<<endl;
88 for (Int_t
i=0;
i<hit_array->GetEntriesFast();
i++)
92 if(hit_array->GetEntriesFast()!= mc_array->GetEntriesFast())
continue;
97 if(hit_array->GetEntriesFast()!= mc_array->GetEntriesFast())
continue;
116 MCposition.SetXYZ(mcX,
mcY,
mcZ);
121 RecoCharge->Fill(hit->
GetEloss()*1000000);
122 MCCharge->Fill(point->GetEnergyLoss()*1000000);
133 h2->Fill(RecoPosition.x(),RecoPosition.y(),RecoPosition.z());
134 h3->Fill(MCposition.x(),MCposition.y(),MCposition.z());
136 hisxy->Fill(RecoPosition.x(),RecoPosition.y());
137 mchisxy->Fill(mcX,
mcY);
138 int vz=1;
if(RecoPosition.y()<0) vz=-1;
139 hisrz->Fill(RecoPosition.z(),vz*RecoPosition.Perp());
140 mchisrz->Fill(MCposition.z(),vz*MCposition.Perp());
142 hisDiffXY->Fill(vecdiff.x(),vecdiff.y());
143 hisDiffRZ->Fill(vecdiff.z(),vecdiff.Perp());
144 hisDiffX->Fill(vecdiff.x());
145 hisDiffY->Fill(vecdiff.y());
146 hisDiffZ->Fill(vecdiff.z());
153 TCanvas*
can1 =
new TCanvas(
"LmdTestPlot",
"MCHit view in LMD",0,0,800,800);
158 TF1 *
g1 =
new TF1(
"g1",
"gaus",-0.004,0.003);
159 TF1 *
g2 =
new TF1(
"g2",
"gaus",-0.006,0.006);
160 TF1 *
total =
new TF1(
"total",
"gaus(0)+gaus(3)",-0.03,0.03);
162 total->SetLineColor(kRed);
163 total->SetLineWidth(1);
180 hisDiffX->DrawCopy(
"");
184 hisDiffY->DrawCopy(
"");
186 hisDiffZ->DrawCopy(
"");
188 can2 =
new TCanvas(
"can2",
"xy-difference",0,0,600,900);
191 hisDiffX->DrawCopy();
193 hisDiffY->Fit(g1,
"R");
194 hisDiffY->Fit(g2,
"R+");
195 g1->GetParameters(&par[0]);
196 g2->GetParameters(&par[3]);
197 total->SetParameters(par);
199 hisDiffY->Fit(
"gaus");
200 hisDiffY->DrawCopy();
203 TCanvas*
can4 =
new TCanvas(
"MC_Digi_Reco_Charge",
"Charge",0,0,600,900);
207 RecoCharge->DrawCopy();
209 MCCharge->DrawCopy();
211 TCanvas*
can5 =
new TCanvas(
"MC_Reco_hits",
"Hits",0,0,600,900);
223 cout << endl << endl;
224 cout <<
"Macro finished succesfully." << endl;
225 cout <<
"Real time " << rtime <<
" s, CPU time " << ctime <<
" s" << endl;
TVector3 GetPosition() const
TVector3 GetPositionOut() const
Double_t GetEloss() const
Int_t GetSensorID() const
TVector3 GetPosition() const
int hit(Int_t nEvents=0, TString inFile="sim.root", TString parFile="par.root", TString inDigi="digi.root", TString outFile="hit.root", Int_t timeBased=0)
Int_t GetSensorID() const